@makaio/framework 1.0.0-dev-1789609124644 → 1.0.0-dev-1790066089222

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 (361) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{adapter-C4v_gNTI.mjs → adapter-DSRgsh2d.mjs} +1 -1
  3. package/dist/adapter-subsystem/index.d.mts +15 -7
  4. package/dist/adapter-subsystem/index.mjs +1 -1
  5. package/dist/adapters/claude/index.mjs +3 -3
  6. package/dist/adapters/config/index.d.mts +1 -1
  7. package/dist/adapters/index.d.mts +2 -2
  8. package/dist/adapters/node.d.mts +1 -1
  9. package/dist/{attempt-record-codec-DaQ3WHUs.mjs → attempt-record-codec-DXpdMgyI.mjs} +1 -1
  10. package/dist/bus/index.d.mts +120 -8
  11. package/dist/bus/index.mjs +1 -1
  12. package/dist/bus-ceMF9rsq.mjs +9 -0
  13. package/dist/client-DWSwtFyI.mjs +1 -0
  14. package/dist/clients/index.d.mts +179 -12
  15. package/dist/clients/index.mjs +1 -1
  16. package/dist/clients/managed-install.d.mts +1 -1
  17. package/dist/code-execution/worker-entry.d.mts +1 -1
  18. package/dist/code-execution/worker-entry.mjs +1 -1
  19. package/dist/{code-execution-pUF4IO462.mjs → code-execution-DWSux6k1.mjs} +1 -1
  20. package/dist/contracts/adapter/index.d.mts +2 -2
  21. package/dist/contracts/adapter/index.mjs +1 -1
  22. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  23. package/dist/contracts/artifact/index.d.mts +2 -2
  24. package/dist/contracts/auth/index.d.mts +2 -2
  25. package/dist/contracts/automation-trigger/index.d.mts +3 -3
  26. package/dist/contracts/canonical-model/index.d.mts +1 -1
  27. package/dist/contracts/capabilities/index.d.mts +1 -1
  28. package/dist/contracts/client/index.d.mts +3 -3
  29. package/dist/contracts/client/index.mjs +1 -1
  30. package/dist/contracts/code-execution/index.d.mts +1 -1
  31. package/dist/contracts/common/index.d.mts +1 -1
  32. package/dist/contracts/config/index.d.mts +2 -47
  33. package/dist/contracts/context-projection/index.d.mts +232 -0
  34. package/dist/contracts/context-projection/index.mjs +1 -0
  35. package/dist/contracts/extension/index.d.mts +6 -6
  36. package/dist/contracts/extension/index.mjs +1 -1
  37. package/dist/contracts/facet/index.d.mts +1 -1
  38. package/dist/contracts/harness/index.d.mts +1 -1
  39. package/dist/contracts/host/index.d.mts +1 -1
  40. package/dist/contracts/index.d.mts +43 -43
  41. package/dist/contracts/index.mjs +1 -1
  42. package/dist/contracts/materialization/index.d.mts +2 -2
  43. package/dist/contracts/model-registry/index.d.mts +1 -1
  44. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  45. package/dist/contracts/platform/index.d.mts +1 -1
  46. package/dist/contracts/provider/index.d.mts +2 -2
  47. package/dist/contracts/reaction/index.d.mts +1 -1
  48. package/dist/contracts/session/index.d.mts +3 -3
  49. package/dist/contracts/session/index.mjs +1 -1
  50. package/dist/contracts/shared/index.d.mts +2 -2
  51. package/dist/contracts/skill/index.d.mts +1 -1
  52. package/dist/contracts/telemetry/index.d.mts +1 -1
  53. package/dist/contracts/timeout/index.d.mts +1 -1
  54. package/dist/contracts/variant/index.d.mts +1 -1
  55. package/dist/contracts/worker/index.d.mts +2 -2
  56. package/dist/contracts/workflow/index.d.mts +2 -2
  57. package/dist/{contribution-DDbHzCPF.d.mts → contribution-1GL7Rjaq.d.mts} +2 -2
  58. package/dist/credential-ref-w4ZYpYW0.d.mts +49 -0
  59. package/dist/{definition-CuaBQyde.d.mts → definition-DeIGoROj.d.mts} +1 -1
  60. package/dist/{descriptor-to-package-Dw8dnl5E.mjs → descriptor-to-package-BPIArq6N.mjs} +1 -1
  61. package/dist/{detached-extension-handle-DN3aqLyq.mjs → detached-extension-handle-W5_yfCyE.mjs} +1 -1
  62. package/dist/drizzle/0040_session_generation.sql +1 -0
  63. package/dist/drizzle/0041_session_principal_owner.sql +1 -0
  64. package/dist/drizzle/meta/_journal.json +14 -0
  65. package/dist/{execution-attempt-owner-recovery-CE_rvHKE.mjs → execution-attempt-owner-recovery-BZOEVYFH.mjs} +1 -1
  66. package/dist/extension-C6ANjR33.mjs +1 -0
  67. package/dist/{extension-context-BH31eOMv.d.mts → extension-context-pQ7Uio_s.d.mts} +44 -1
  68. package/dist/{extension-discovery-CA2IhDRo.d.mts → extension-discovery-Rup-gANp.d.mts} +114 -15
  69. package/dist/extension-kOwzAMud.mjs +1 -0
  70. package/dist/extension-namespace-CeRpt6C8.mjs +1 -0
  71. package/dist/{framework-packages-Bg4edkkM.mjs → framework-packages-U4Xhouxe.mjs} +1 -1
  72. package/dist/{hook-responses-Dq16X3Cb.d.mts → hook-responses-B882RcQc.d.mts} +48 -5
  73. package/dist/{index-Dm3d490n.d.mts → index-B2bxgKiK.d.mts} +1 -1
  74. package/dist/{index-7CVumCjj.d.mts → index-BTpkpHIS.d.mts} +65 -9
  75. package/dist/{index-Bh57xARQ.d.mts → index-BUv9gfRT.d.mts} +3 -3
  76. package/dist/{index-C6e9cwAl2.d.mts → index-BjQtqMxP2.d.mts} +4 -4
  77. package/dist/{index-B-u0Tu8X.d.mts → index-Bqi44ODz.d.mts} +37 -37
  78. package/dist/{index-CIzvBH8O.d.mts → index-C8two8wz.d.mts} +1 -1
  79. package/dist/{index-oxZt93RL.d.mts → index-CESqYf8a.d.mts} +2 -2
  80. package/dist/{index-C87P0WpY2.d.mts → index-CmCLAMNs.d.mts} +1 -1
  81. package/dist/index-CyEE1RI5.d.mts +869 -0
  82. package/dist/{index-De_oh9M-2.d.mts → index-D6Uq1btG.d.mts} +87 -10
  83. package/dist/{index-CRZ1jrxp.d.mts → index-DDSt0uS2.d.mts} +160 -12
  84. package/dist/{index-B6WkHnCQ.d.mts → index-DRxgmrad.d.mts} +1 -1
  85. package/dist/{index-U--ajOHy.d.mts → index-DUYjTfHD.d.mts} +1 -1
  86. package/dist/{index-HJkz7i4E.d.mts → index-DdJKsdya.d.mts} +188 -10
  87. package/dist/{index-B4pPwpKk.d.mts → index-DfREUyAk.d.mts} +1 -1
  88. package/dist/{index-ClKwF6LE.d.mts → index-Di-R1gmo.d.mts} +2 -2
  89. package/dist/{index-DWANFpTG.d.mts → index-Jdju2W3y.d.mts} +1 -1
  90. package/dist/{index-DQKVQPUS.d.mts → index-L6mssyeZ.d.mts} +1 -1
  91. package/dist/{index-B8v1-2-V2.d.mts → index-anIxF_eT.d.mts} +1 -1
  92. package/dist/{index-iVisrVdC2.d.mts → index-bYBnDBl32.d.mts} +539 -4
  93. package/dist/{index-Bg3WVL8n.d.mts → index-gNdH1F6r.d.mts} +531 -26
  94. package/dist/{index-zmDRR8gv2.d.mts → index-m5ZQFglW2.d.mts} +1 -1
  95. package/dist/{index-mTaFX2HH2.d.mts → index-uk8icWON2.d.mts} +419 -19
  96. package/dist/kernel/cli/index.d.mts +2 -2
  97. package/dist/kernel/cli/register.d.mts +1 -1
  98. package/dist/kernel/extension/index.d.mts +3 -2
  99. package/dist/kernel/extension/index.mjs +1 -1
  100. package/dist/kernel/index.d.mts +6 -6
  101. package/dist/kernel/index.mjs +1 -1
  102. package/dist/kernel/namespace/index.d.mts +1 -1
  103. package/dist/kernel/observability/index.d.mts +2 -2
  104. package/dist/kernel/observability/index.mjs +1 -1
  105. package/dist/kernel/providers/index.d.mts +1 -1
  106. package/dist/kernel/window/index.d.mts +1 -1
  107. package/dist/{lib-BF5XBSfw.mjs → lib-BdyGVjpO.mjs} +1 -1
  108. package/dist/{lib-Dljw2Cqh.mjs → lib-DxP3tPm9.mjs} +1 -1
  109. package/dist/load-extensions-BGfSWW_R.mjs +1 -0
  110. package/dist/{load-extensions-DGstT4_p.d.mts → load-extensions-Be_lOjm_.d.mts} +27 -14
  111. package/dist/mcp-http-server/index.mjs +1 -1
  112. package/dist/{namespace-BMdYJN_t.mjs → namespace-CqJhR19O.mjs} +1 -1
  113. package/dist/{namespace-Cmu-5_P9.d.mts → namespace-DudchWPb.d.mts} +457 -0
  114. package/dist/{namespace-BEbQb19g.d.mts → namespace-Eir1wQ_r.d.mts} +2 -2
  115. package/dist/node/bus-server/index.d.mts +1 -1
  116. package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
  117. package/dist/node/transports/index.d.mts +102 -4
  118. package/dist/node/transports/index.mjs +2 -2
  119. package/dist/{orchestrator-shared-CtPB6PAr.mjs → orchestrator-shared-CF-jPH91.mjs} +1 -1
  120. package/dist/ownership-memory-handler-C-y9zQf8.mjs +1 -0
  121. package/dist/package-AlsbnlSt.mjs +159 -0
  122. package/dist/{package-CDj3F-L3.d.mts → package-CwyC-Krg.d.mts} +1 -1
  123. package/dist/{package-DYScYC0D.mjs → package-kkPGlxMm.mjs} +1 -1
  124. package/dist/package.json +1 -1
  125. package/dist/{registry-DNMjJ-Oj.mjs → registry-DtaRGU8i.mjs} +1 -0
  126. package/dist/rules/index.d.mts +1 -1
  127. package/dist/rules/index.mjs +1 -1
  128. package/dist/rules/schemas.d.mts +1 -1
  129. package/dist/runtime-bun/index.d.mts +2 -2
  130. package/dist/runtime-bun/index.mjs +1 -1
  131. package/dist/runtime-node/boot-config.d.mts +45 -0
  132. package/dist/runtime-node/boot-config.mjs +1 -0
  133. package/dist/runtime-node/code-execution/index.d.mts +2 -2
  134. package/dist/runtime-node/code-execution/index.mjs +1 -1
  135. package/dist/runtime-node/extension-discovery.d.mts +2 -2
  136. package/dist/runtime-node/extension-discovery.mjs +1 -1
  137. package/dist/runtime-node/extension-validation.d.mts +1 -1
  138. package/dist/runtime-node/extension-validation.mjs +1 -1
  139. package/dist/runtime-node/index.d.mts +345 -27
  140. package/dist/runtime-node/index.mjs +21 -24
  141. package/dist/runtime-node/makaio-config.d.mts +1 -1
  142. package/dist/runtime-node/makaio-config.mjs +1 -1
  143. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  144. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  145. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  146. package/dist/{schema-BA1cHBbc.d.mts → schema-FY0EakKe.d.mts} +56 -0
  147. package/dist/schemas-CkxAK13D.mjs +1 -0
  148. package/dist/{schemas-CaYEFzK_.d.mts → schemas-FgVQek-j.d.mts} +2 -2
  149. package/dist/services/adapter-runtime/index.d.mts +3 -3
  150. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  151. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  152. package/dist/services/adapter-subsystem/index.d.mts +3 -3
  153. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  154. package/dist/services/agent-runtime/index.d.mts +2 -2
  155. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  156. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  157. package/dist/services/automation-trigger/index.d.mts +19 -0
  158. package/dist/services/capability/index.d.mts +2 -2
  159. package/dist/services/code-execution/index.d.mts +1 -1
  160. package/dist/services/codebase/index.d.mts +2 -2
  161. package/dist/services/codebase/namespace.d.mts +1 -1
  162. package/dist/services/codebase/schemas.d.mts +1 -1
  163. package/dist/services/compression/index.d.mts +2 -2
  164. package/dist/services/compression/namespace.d.mts +1 -1
  165. package/dist/services/compression/schemas.d.mts +1 -1
  166. package/dist/services/context-projection/index.d.mts +94 -0
  167. package/dist/services/context-projection/index.mjs +1 -0
  168. package/dist/services/context-rules/index.d.mts +1 -1
  169. package/dist/services/execution-target/index.d.mts +3 -3
  170. package/dist/services/execution-target/namespace.d.mts +1 -1
  171. package/dist/services/execution-target/schemas.d.mts +1 -1
  172. package/dist/services/filesystem/index.d.mts +1 -1
  173. package/dist/services/index.d.mts +45 -40
  174. package/dist/services/index.mjs +1 -1
  175. package/dist/services/log-import/browser.d.mts +2 -2
  176. package/dist/services/log-import/index.d.mts +2 -2
  177. package/dist/services/log-import/log-import.d.mts +1 -1
  178. package/dist/services/materialization/index.d.mts +1 -1
  179. package/dist/services/model-registry/index.d.mts +1 -1
  180. package/dist/services/preferences/index.d.mts +2 -2
  181. package/dist/services/preferences/schemas.d.mts +1 -1
  182. package/dist/services/preferences/storage-namespace.d.mts +2 -2
  183. package/dist/services/provider-context/index.d.mts +1 -1
  184. package/dist/services/session/handlers/index.d.mts +1 -1
  185. package/dist/services/session/index.d.mts +9 -9
  186. package/dist/services/session/index.mjs +1 -1
  187. package/dist/services/session/messages/namespace.d.mts +1 -1
  188. package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
  189. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  190. package/dist/services/session/session-events/namespace.d.mts +1 -1
  191. package/dist/services/session/storage/namespace.d.mts +1 -1
  192. package/dist/services/session/storage/schema.d.mts +1 -1
  193. package/dist/services/session/storage/schema.mjs +1 -1
  194. package/dist/services/session/testing/index.mjs +4 -2
  195. package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
  196. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  197. package/dist/services/session/turns/namespace.d.mts +1 -1
  198. package/dist/services/session-editor/index.d.mts +1 -1
  199. package/dist/services/settings/index.d.mts +3 -3
  200. package/dist/services/settings/namespace.d.mts +232 -3
  201. package/dist/services/settings/namespace.mjs +1 -1
  202. package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
  203. package/dist/services/settings/storage/index.d.mts +3 -3
  204. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  205. package/dist/services/subagent/index.d.mts +1 -1
  206. package/dist/services/subagent-template/index.d.mts +2 -2
  207. package/dist/services/subagent-template/namespace.d.mts +1 -1
  208. package/dist/services/subagent-template/schemas.d.mts +1 -1
  209. package/dist/services/tool-approval/index.d.mts +1 -1
  210. package/dist/services/tool-approval/index.mjs +1 -1
  211. package/dist/services/tools/index.d.mts +1 -1
  212. package/dist/services/tools/index.mjs +1 -1
  213. package/dist/services/tray-menu/index.d.mts +3 -3
  214. package/dist/services/tray-menu/namespace.d.mts +1 -1
  215. package/dist/services/tray-menu/schemas.d.mts +1 -1
  216. package/dist/services/turn/index.d.mts +1 -1
  217. package/dist/services/turn/namespace.d.mts +1 -1
  218. package/dist/services/workflow-transitions/index.d.mts +1 -1
  219. package/dist/services/workflow-transitions/index.mjs +1 -1
  220. package/dist/session-BNiMZnfF.mjs +1 -0
  221. package/dist/session-CMbztxNO.mjs +95 -0
  222. package/dist/src-BZdw54VU.mjs +1 -0
  223. package/dist/{src-CbAw9kjJ.mjs → src-C0sw_Vs_.mjs} +1 -1
  224. package/dist/{src-Xn6SS74f.mjs → src-CqQSqLQI.mjs} +1 -1
  225. package/dist/storage/drizzle/client.d.mts +1 -1
  226. package/dist/storage/drizzle/client.mjs +1 -1
  227. package/dist/storage/drizzle/index.d.mts +1 -1
  228. package/dist/storage/drizzle/index.mjs +1 -1
  229. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  230. package/dist/storage/handlers/index.d.mts +1 -1
  231. package/dist/{tool-approval-service-pbkGcAV8.mjs → tool-approval-service-CRo3fZRF.mjs} +1 -1
  232. package/dist/{tools-C5Gy0IQG.mjs → tools-CKaxi3Mb.mjs} +1 -1
  233. package/dist/{transition-D-Lgbp1j.d.mts → transition-DMv8cgEd.d.mts} +2 -2
  234. package/dist/{types-CjYcHDPo2.d.mts → types-7L3BrU9m2.d.mts} +1 -1
  235. package/dist/{types-DhbllltK.d.mts → types-DNYO_Rxj.d.mts} +12 -3
  236. package/dist/ui-hooks/index.d.mts +17 -24
  237. package/dist/ui-hooks/index.mjs +1 -1
  238. package/dist/ui-kernel/index.d.mts +11 -2
  239. package/dist/ui-kernel/index.mjs +1 -1
  240. package/dist/ui-kernel/pages/schemas.d.mts +1 -1
  241. package/dist/ui-views/index.mjs +1 -1
  242. package/dist/utils/index.d.mts +31 -1
  243. package/dist/utils/index.mjs +2 -2
  244. package/dist/{view-builder-CHUTXJDl.d.mts → view-builder-DJGz9I-u.d.mts} +2 -2
  245. package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
  246. package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
  247. package/dist/workflow-engine/index.d.mts +2 -2
  248. package/dist/workflow-engine/index.mjs +1 -1
  249. package/dist/workflow-engine/package.d.mts +1 -1
  250. package/dist/workflow-engine/package.mjs +1 -1
  251. package/dist/workflow-engine/provider-operation.d.mts +1 -1
  252. package/dist/workflow-engine/testing/conformance.d.mts +1 -1
  253. package/dist/workflow-engine/testing/conformance.mjs +1 -1
  254. package/dist/workflow-engine/testing/index.d.mts +1 -1
  255. package/dist/workflow-engine/testing/index.mjs +1 -1
  256. package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
  257. package/dist/workflow-engine/testing/sqlite.mjs +1 -1
  258. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  259. package/dist/{workflow-transitions-C0sg3kar.mjs → workflow-transitions-t0ORS1F5.mjs} +1 -1
  260. package/dist/workflow-worker-DXCXb3g-.mjs +3 -0
  261. package/package.json +9 -1
  262. package/dist/bus-BQ64i3DN.mjs +0 -9
  263. package/dist/client-Bg3_IdaF.mjs +0 -1
  264. package/dist/extension-CfrTp3rC.mjs +0 -1
  265. package/dist/extension-CnNcY1hR.mjs +0 -1
  266. package/dist/extension-namespace-Ct9L6SKr.mjs +0 -1
  267. package/dist/index-D_j_T3nS.d.mts +0 -435
  268. package/dist/load-extensions-BVgxTj_y.mjs +0 -1
  269. package/dist/ownership-memory-handler-xex7sLiX.mjs +0 -1
  270. package/dist/schemas-ClkcU_N5.mjs +0 -1
  271. package/dist/session-6UG5udTX.mjs +0 -95
  272. package/dist/session-BB0s7c2B.mjs +0 -1
  273. package/dist/workflow-worker-ChrMIcKm.mjs +0 -2
  274. /package/dist/{adapter-binding-BxjUfkOn.d.mts → adapter-binding-CaYBrIkL.d.mts} +0 -0
  275. /package/dist/{attempt-control-evidence-7lwRG73Y.mjs → attempt-control-evidence-CHBnJoqN.mjs} +0 -0
  276. /package/dist/{attempt-fixtures-DHdYmr3o.mjs → attempt-fixtures-D3IsP0KH.mjs} +0 -0
  277. /package/dist/{authority-state-bootstrap-CvuWPywM.mjs → authority-state-bootstrap-4F5Wc_6l.mjs} +0 -0
  278. /package/dist/{base-orchestrator-CrXiMJzf.d.mts → base-orchestrator-1ofFsqUz.d.mts} +0 -0
  279. /package/dist/{bootstrap-start-client-C1ZHbv6e.mjs → bootstrap-start-client-9nOdeDYl.mjs} +0 -0
  280. /package/dist/{capability-service-CQ1aw_p-.d.mts → capability-service-CUN0MIS7.d.mts} +0 -0
  281. /package/dist/{client-ByjHcS78.d.mts → client-BY3sBW2L.d.mts} +0 -0
  282. /package/dist/{client-binary-version-verifier-C4fEAUdo.d.mts → client-binary-version-verifier-BeO4Eptw.d.mts} +0 -0
  283. /package/dist/{clients-namespace-D4BxF2Nw.d.mts → clients-namespace-D92YsbKI.d.mts} +0 -0
  284. /package/dist/{config-namespace-B1zyOYwH.d.mts → config-namespace-OEckUfVE.d.mts} +0 -0
  285. /package/dist/{create-static-mount-Dgxgi4W3.mjs → create-static-mount-4B-mNtx1.mjs} +0 -0
  286. /package/dist/{cross-spawn-BMCAyqrN.mjs → cross-spawn-DGqEuNyT.mjs} +0 -0
  287. /package/dist/{definition-ClWxAKQ2.d.mts → definition-DLJg-P4G.d.mts} +0 -0
  288. /package/dist/{esm-Ccx-3z8E.mjs → esm-DwiWcwH0.mjs} +0 -0
  289. /package/dist/{execution-attempt-repository-aabFKcXN.mjs → execution-attempt-repository-CY289HlC.mjs} +0 -0
  290. /package/dist/{execution-attempt-repository-BUah8hma.d.mts → execution-attempt-repository-DOb5V4N2.d.mts} +0 -0
  291. /package/dist/{extension-package-provenance-C7oO5JAE.mjs → extension-package-provenance-ClpN3GHp.mjs} +0 -0
  292. /package/dist/{filesystem-service-CDYoiwWY.d.mts → filesystem-service-BmavE-uO.d.mts} +0 -0
  293. /package/dist/{index-BbkcbY6d.d.mts → index--gbsE1W0.d.mts} +0 -0
  294. /package/dist/{index-DdVpWkaI.d.mts → index-B36rL4gp.d.mts} +0 -0
  295. /package/dist/{index-DM72_93s.d.mts → index-BD1SbHpP.d.mts} +0 -0
  296. /package/dist/{index-KdlZRuTp.d.mts → index-BDcK7jqJ2.d.mts} +0 -0
  297. /package/dist/{index-DAaQ--ki.d.mts → index-BQYGOXY5.d.mts} +0 -0
  298. /package/dist/{index-gAyARaKS.d.mts → index-BneZFJ7x.d.mts} +0 -0
  299. /package/dist/{index-D8ELwT5y.d.mts → index-BujgCaKt.d.mts} +0 -0
  300. /package/dist/{index-DfU8s_xP.d.mts → index-C2StVLk4.d.mts} +0 -0
  301. /package/dist/{index-BGnQ0EyD.d.mts → index-CCTzitBA.d.mts} +0 -0
  302. /package/dist/{index-CVRT01082.d.mts → index-Cj_V1aRL.d.mts} +0 -0
  303. /package/dist/{index-nkix3hP7.d.mts → index-CpN2C9jq.d.mts} +0 -0
  304. /package/dist/{index-D6p17KPs.d.mts → index-CsRPJ9FV.d.mts} +0 -0
  305. /package/dist/{index-BPNfYEA22.d.mts → index-CvdvuhTL2.d.mts} +0 -0
  306. /package/dist/{index-DmX9W3xH2.d.mts → index-D3peNmHN2.d.mts} +0 -0
  307. /package/dist/{index-DiZ4LmyE.d.mts → index-D7smT-YD.d.mts} +0 -0
  308. /package/dist/{index-B78CRVi9.d.mts → index-DEx4ZFkz.d.mts} +0 -0
  309. /package/dist/{index-CjDQn6lw.d.mts → index-DGoJayJg.d.mts} +0 -0
  310. /package/dist/{index-F7cVpFJ9.d.mts → index-DTvYp2GT.d.mts} +0 -0
  311. /package/dist/{index-Htfr-K5U2.d.mts → index-DqliLe_D2.d.mts} +0 -0
  312. /package/dist/{index-BCU5oByg.d.mts → index-DubyRZD9.d.mts} +0 -0
  313. /package/dist/{index-DjSUOMlr.d.mts → index-DwOpaQAE.d.mts} +0 -0
  314. /package/dist/{index-BZoOYV-y.d.mts → index-DxkSkszz.d.mts} +0 -0
  315. /package/dist/{index-tbjIqwa3.d.mts → index-TBJ1kIGA.d.mts} +0 -0
  316. /package/dist/{index-DXQTkwLB.d.mts → index-YOXWpZAS.d.mts} +0 -0
  317. /package/dist/{index-CXpgL3gz2.d.mts → index-aIJ7A4DC2.d.mts} +0 -0
  318. /package/dist/{index-D6liU_KS.d.mts → index-fxh7TB0q.d.mts} +0 -0
  319. /package/dist/{index-xsaaa85T.d.mts → index-qczb9Yx3.d.mts} +0 -0
  320. /package/dist/{index-C_kOkO3E.d.mts → index-zqo2mX_Z.d.mts} +0 -0
  321. /package/dist/{json-value-Ymw2f8i_.d.mts → json-value-Bjl8jzom.d.mts} +0 -0
  322. /package/dist/{jsonl-transport-Bg033Ng0.mjs → jsonl-transport-Ct1RWs0h.mjs} +0 -0
  323. /package/dist/{lib-BizqbepU.mjs → lib-DomKag_k.mjs} +0 -0
  324. /package/dist/{namespace-rJ3ycPMg.d.mts → namespace-Bhx72V7S.d.mts} +0 -0
  325. /package/dist/{namespace-BCVKdu-U.d.mts → namespace-CxEQv9iZ.d.mts} +0 -0
  326. /package/dist/{namespace-COHHDh2I.d.mts → namespace-D09uQ231.d.mts} +0 -0
  327. /package/dist/{namespace-UFcDEBJB.d.mts → namespace-D5DkpaaN.d.mts} +0 -0
  328. /package/dist/{namespace-CvK86QFk.d.mts → namespace-DHLwz4o3.d.mts} +0 -0
  329. /package/dist/{namespace-B5IFLQc-.d.mts → namespace-DHbrNQYD.d.mts} +0 -0
  330. /package/dist/{namespace-s0e215xO.d.mts → namespace-DyD06b5-.d.mts} +0 -0
  331. /package/dist/{namespace-C1pPZKtI.d.mts → namespace-Dz5_Hrz7.d.mts} +0 -0
  332. /package/dist/{namespace-Phxf0Lep.d.mts → namespace-Lkv2nyzb.d.mts} +0 -0
  333. /package/dist/{namespace-DM5vykb7.d.mts → namespace-hlhPqSsw.d.mts} +0 -0
  334. /package/dist/{namespace-DlOQmhgX.d.mts → namespace-x-gk5SmK.d.mts} +0 -0
  335. /package/dist/{namespace-f6Kz5cwX.d.mts → namespace-zusFEJPh.d.mts} +0 -0
  336. /package/dist/{orchestrator-shared--srEeSaY.d.mts → orchestrator-shared-ChU5qRSe.d.mts} +0 -0
  337. /package/dist/{packages-B98-WETs.d.mts → packages-D2s51nGU.d.mts} +0 -0
  338. /package/dist/{providers-namespace-DRcl03bo.d.mts → providers-namespace-BLVt8OyP.d.mts} +0 -0
  339. /package/dist/{runtime-inputs-DBtVIy9h.d.mts → runtime-inputs-BU_kBrP7.d.mts} +0 -0
  340. /package/dist/{schemas-CEJe8O6P.d.mts → schemas-3KTmPuZg.d.mts} +0 -0
  341. /package/dist/{schemas-D_-iXLQ9.d.mts → schemas-B-5_Dp4_.d.mts} +0 -0
  342. /package/dist/{schemas-CeItAAQM.d.mts → schemas-BLxdGZkr.d.mts} +0 -0
  343. /package/dist/{schemas-Cj6Gbqch.d.mts → schemas-BegArpU_.d.mts} +0 -0
  344. /package/dist/{schemas-Ca5RILd-2.d.mts → schemas-BzB6z9oX2.d.mts} +0 -0
  345. /package/dist/{schemas-CtzZDp29.d.mts → schemas-CBBzvIh0.d.mts} +0 -0
  346. /package/dist/{schemas-Cq1d5tid.d.mts → schemas-CD3Mq-jC.d.mts} +0 -0
  347. /package/dist/{schemas-LiiyNNpr.d.mts → schemas-Cl7fPlRv.d.mts} +0 -0
  348. /package/dist/{schemas-DJ2vMsgm.d.mts → schemas-CqawCYTY.d.mts} +0 -0
  349. /package/dist/{schemas-2_D4iVbb.d.mts → schemas-DEg6R9ph.d.mts} +0 -0
  350. /package/dist/{schemas-JjyFxrC0.d.mts → schemas-rMUsvzeJ.d.mts} +0 -0
  351. /package/dist/{server-lifecycle-DUKp1Fbf.d.mts → server-lifecycle-CTJvpdeL.d.mts} +0 -0
  352. /package/dist/{session-lineage-C3myyt5x.d.mts → session-lineage-BuGN3RZs.d.mts} +0 -0
  353. /package/dist/{storage-namespace-IvLOIP7j.d.mts → storage-namespace-B5r_ScUz.d.mts} +0 -0
  354. /package/dist/{storage-namespace-definition-Cv0XiTXb.d.mts → storage-namespace-definition-DiYr8UNl.d.mts} +0 -0
  355. /package/dist/{types-hkExapGH.d.mts → types-BSx8YYlc.d.mts} +0 -0
  356. /package/dist/{types-BYEybzjX.d.mts → types-CpEoQapk.d.mts} +0 -0
  357. /package/dist/{types-QRSc2AUU.d.mts → types-Cuhnt15L.d.mts} +0 -0
  358. /package/dist/{types-QsyX4H21.d.mts → types-DEGuc-fn.d.mts} +0 -0
  359. /package/dist/{types-BRM1AZaP.d.mts → types-DciLiPMd.d.mts} +0 -0
  360. /package/dist/{types-CsmvIK25.mjs → types-wwuw7RkB.mjs} +0 -0
  361. /package/dist/{window-registry-DeG37kt8.d.mts → window-registry-C3W2wtlX.d.mts} +0 -0
@@ -1,6 +1,6 @@
1
- import { l as JsonValue$1 } from "./json-value-Ymw2f8i_.mjs";
2
- import { s as MessageBlock$1 } from "./index-De_oh9M-2.mjs";
3
- import { t as ContractStorageNamespaceDefinition } from "./storage-namespace-definition-Cv0XiTXb.mjs";
1
+ import { l as JsonValue$1 } from "./json-value-Bjl8jzom.mjs";
2
+ import { s as MessageBlock$1 } from "./index-D6Uq1btG.mjs";
3
+ import { t as ContractStorageNamespaceDefinition } from "./storage-namespace-definition-DiYr8UNl.mjs";
4
4
  import * as _$zod from "zod";
5
5
  import { z } from "zod";
6
6
  import * as _$_makaio_core0 from "@makaio/framework/core";
@@ -232,6 +232,7 @@ declare const MakaioSessionSchema: z.ZodObject<{
232
232
  coordinator: "coordinator";
233
233
  aside: "aside";
234
234
  }>>;
235
+ generation: z.ZodOptional<z.ZodNumber>;
235
236
  adapterName: z.ZodOptional<z.ZodString>;
236
237
  adapterSessionId: z.ZodOptional<z.ZodString>;
237
238
  currentAdapterSessionId: z.ZodOptional<z.ZodString>;
@@ -380,6 +381,7 @@ declare const SessionWithPreviewSchema: z.ZodObject<{
380
381
  coordinator: "coordinator";
381
382
  aside: "aside";
382
383
  }>>;
384
+ generation: z.ZodOptional<z.ZodNumber>;
383
385
  adapterName: z.ZodOptional<z.ZodString>;
384
386
  adapterSessionId: z.ZodOptional<z.ZodString>;
385
387
  currentAdapterSessionId: z.ZodOptional<z.ZodString>;
@@ -602,6 +604,7 @@ declare const SessionSnapshotSchema: z.ZodObject<{
602
604
  coordinator: "coordinator";
603
605
  aside: "aside";
604
606
  }>>;
607
+ generation: z.ZodOptional<z.ZodNumber>;
605
608
  adapterName: z.ZodOptional<z.ZodString>;
606
609
  adapterSessionId: z.ZodOptional<z.ZodString>;
607
610
  currentAdapterSessionId: z.ZodOptional<z.ZodString>;
@@ -10445,6 +10448,7 @@ declare const SessionSchemas: {
10445
10448
  coordinator: "coordinator";
10446
10449
  aside: "aside";
10447
10450
  }>>;
10451
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
10448
10452
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
10449
10453
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
10450
10454
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -11117,6 +11121,7 @@ declare const SessionSchemas: {
11117
11121
  coordinator: "coordinator";
11118
11122
  aside: "aside";
11119
11123
  }>>;
11124
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
11120
11125
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
11121
11126
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
11122
11127
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -12306,6 +12311,7 @@ declare const SessionSchemas: {
12306
12311
  coordinator: "coordinator";
12307
12312
  aside: "aside";
12308
12313
  }>>;
12314
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
12309
12315
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
12310
12316
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
12311
12317
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -12464,6 +12470,7 @@ declare const SessionSchemas: {
12464
12470
  coordinator: "coordinator";
12465
12471
  aside: "aside";
12466
12472
  }>>;
12473
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
12467
12474
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
12468
12475
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
12469
12476
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -12613,6 +12620,7 @@ declare const SessionSchemas: {
12613
12620
  coordinator: "coordinator";
12614
12621
  aside: "aside";
12615
12622
  }>>;
12623
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
12616
12624
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
12617
12625
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
12618
12626
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -12876,6 +12884,7 @@ declare const SessionSchemas: {
12876
12884
  coordinator: "coordinator";
12877
12885
  aside: "aside";
12878
12886
  }>>;
12887
+ generation: _$zod.ZodOptional<_$zod.ZodNumber>;
12879
12888
  adapterName: _$zod.ZodOptional<_$zod.ZodString>;
12880
12889
  adapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
12881
12890
  currentAdapterSessionId: _$zod.ZodOptional<_$zod.ZodString>;
@@ -2,7 +2,7 @@ import * as _$react from "react";
2
2
  import { ComponentType, JSX, ReactNode } from "react";
3
3
  import { PreferenceKey } from "@makaio/framework/services/preferences";
4
4
  import { AdapterInfo, ComponentLike, NavigationGroupConfig, OnboardingContext, OnboardingStepDefinition as OnboardingStepDefinition$1, OnboardingStepProps as OnboardingStepProps$1, PageComponentProps, PageDefinition, PageDefinitionQueryOptions, RuntimeReadyWaiter, WidgetDefinition, WidgetLayout, WidgetScope } from "@makaio/framework/ui-kernel";
5
- import { ExtensionInfo } from "@makaio/framework/kernel";
5
+ import { ExtensionInfo, TransitionOutcome } from "@makaio/framework/kernel";
6
6
  import { AIModel, AgentSelection, AutomationTriggerDescriptor, ModelFilterMode, ModelVisibility, UiContextSnapshot, UiRuntimeNavigationLevel, UiScope } from "@makaio/framework/contracts";
7
7
  import { IMakaioBus } from "@makaio/framework/bus";
8
8
  import { BindingRecord, CompatibleAuthOption, ProviderConfigFileRecord } from "@makaio/framework/services/adapter-subsystem";
@@ -1833,32 +1833,25 @@ declare const useOnboardingFlow: UseOnboardingFlowHook;
1833
1833
  //#endregion
1834
1834
  //#region ui/hooks/src/onboarding/plugin-persistence.d.ts
1835
1835
  interface PersistPluginEnabledResult {
1836
- id: string;
1837
- }
1838
- /**
1839
- * Persisted extension config entry cached in a ref to preserve config blobs
1840
- * across enabled-state toggles without driving re-renders.
1841
- */
1842
- interface PersistedExtensionConfigEntry {
1843
- /** Stable storage row identifier */
1844
- id: string;
1845
- /** Existing extension config payload that must be preserved across enabled toggles */
1846
- config: Record<string, unknown> | undefined;
1836
+ /** Whether the kernel accepted the enablement change. */
1837
+ success: boolean;
1838
+ /** The transition outcome the kernel actually reached. */
1839
+ outcome: TransitionOutcome;
1847
1840
  }
1848
1841
  /**
1849
- * Persist only the enabled state for a plugin config row.
1842
+ * Persist only the enabled state for a plugin via the kernel RPC.
1850
1843
  *
1851
- * This uses the storage layer's atomic `setEnabled` RPC instead of
1852
- * reconstructing a partial `set` payload client-side. Cached config blobs stay
1853
- * available in-memory for future full writes, but enabled toggles no longer
1854
- * need to round-trip or risk clearing them.
1855
- * @param pluginName - Registry name of the plugin
1856
- * @param enabled - Desired enabled state
1857
- * @param cache - Ref map of persisted config entries
1858
- * @param bus - Bus instance used to dispatch the set request
1859
- * @returns Persisted row identifier for the extension config record
1844
+ * Fires `kernel:extension.setEnabled`, which durably writes the preference to
1845
+ * the enablement file via the coordinator's `persistEnabled`
1846
+ * callback. This never applies the change to the running process — see the
1847
+ * module doc for why. Enabled state is the single source of truth in the
1848
+ * kernel; no local cache is mutated.
1849
+ * @param pluginName - Registry name of the plugin.
1850
+ * @param enabled - Desired enabled state.
1851
+ * @param bus - Bus instance used to dispatch the set request.
1852
+ * @returns Result from the kernel enablement RPC.
1860
1853
  */
1861
- declare function persistPluginEnabled(pluginName: string, enabled: boolean, cache: Map<string, PersistedExtensionConfigEntry>, bus: IMakaioBus): Promise<PersistPluginEnabledResult>;
1854
+ declare function persistPluginEnabled(pluginName: string, enabled: boolean, bus: IMakaioBus): Promise<PersistPluginEnabledResult>;
1862
1855
  //#endregion
1863
1856
  //#region ui/hooks/src/state/app-context-store.d.ts
1864
1857
  interface AppContextState {
@@ -2028,4 +2021,4 @@ declare function parsePersistedAgentSelection(value: unknown): AgentSelection |
2028
2021
  */
2029
2022
  declare function isPersistableProjectSelection(selection: AgentSelection): selection is PersistableProjectSelection;
2030
2023
  //#endregion
2031
- export { type AppContextState, type AuthFieldDraft, type BoundAdapter, BusContext, BusProvider, type BusProviderProps, type CompiledProviderConfigAuthDraft, type CoreOnboardingStepComponents, type EnvironmentAuthFieldDraft, type ExecutablePage, type ExtensionBrowserLoadOptions, type ExtensionBrowserLoadResult, type FocusContextId, type FocusContextLayout, type FocusContextObject, type FocusContextWidgetSize, type FocusState, type GroupedPages, type HealthCheckResult, type OnboardingAdapter, type OnboardingClient, type OnboardingFlowActions, type OnboardingFlowState, type OnboardingProviderConfigCreator, type OnboardingProviderConfigDraft, type OnboardingStepDefinition, type OnboardingStepProps, type PageOverlayState, type PersistableAdapterSelection, type PersistableProjectSelection, type PersistedExtensionConfigEntry, type PersistedStoreConfig, type PlacedFocusWidget, type ProviderConfigAuthDraft, type ProviderConfigDetailView, type ProviderConfigSummaryView, type ProviderInfo, type RuntimeNavigationLevel, type ScanContext, type SharedLoaderState, type SidebarState, type StorageType, type StoredAuthFieldDraft, type UseAutomationTriggerTypesResult, type UseBusQueryOptions, type UseBusQueryResult, type UseCompatibleAuthOptionsResult, type UseOnboardingFlowOptions, type UseOnboardingFlowResult, type UseWidgetConfigOptions, type UseWidgetConfigResult, type UseWidgetRegistryOptions, type UseWidgetsOptions, type UseWidgetsResult, type WindowContextState, addWidgetToFocusLayout, authDraftRequiresStorage, authMethodRefKey, buildProviderConfigAuthDraft, buildScanContext, clearOnboardingCompleted, clearOnboardingSkipped, compileProviderConfigAuthDraft, createEmptyFocusContextLayout, createInitialAuthFieldDrafts, createPersistedStore, getOnboardingCompleted, getOnboardingSkipped, getProviderConfigDetailView, groupPagesByNavigationGroup, isPersistableProjectSelection, listCompatibleAuthOptions, listProviderConfigSummaryViews, loadExtensionBrowserContributions, noopStorage, parsePersistedAgentSelection, persistPluginEnabled, registerCoreOnboardingSteps, registerNavigationHandler, removeWidgetFromFocusLayout, scanOnboarding, scanOnboardingAdapters, scanOnboardingClients, setOnboardingCompleted, setOnboardingSkipped, updateFocusContextWidgetPosition, updateFocusContextWidgetSize, useAppContext, useAutomationTriggerTypes, useBus, useBusEvent, useBusQuery, useCompatibleAuthOptions, useFocusStore, useNavigationLevel, useOnboardingFlow, useOptionalBus, usePageComponent, usePageDefinitions, usePageOverlayStore, usePages, useProviderStore, useSidebarStore, useTrayLayout, useWidgetConfig, useWidgetLayout, useWidgetLayoutActions, useWidgetRegistry, useWidgets, useWindowContext, useWindowIdPages };
2024
+ export { type AppContextState, type AuthFieldDraft, type BoundAdapter, BusContext, BusProvider, type BusProviderProps, type CompiledProviderConfigAuthDraft, type CoreOnboardingStepComponents, type EnvironmentAuthFieldDraft, type ExecutablePage, type ExtensionBrowserLoadOptions, type ExtensionBrowserLoadResult, type FocusContextId, type FocusContextLayout, type FocusContextObject, type FocusContextWidgetSize, type FocusState, type GroupedPages, type HealthCheckResult, type OnboardingAdapter, type OnboardingClient, type OnboardingFlowActions, type OnboardingFlowState, type OnboardingProviderConfigCreator, type OnboardingProviderConfigDraft, type OnboardingStepDefinition, type OnboardingStepProps, type PageOverlayState, type PersistableAdapterSelection, type PersistableProjectSelection, type PersistedStoreConfig, type PlacedFocusWidget, type ProviderConfigAuthDraft, type ProviderConfigDetailView, type ProviderConfigSummaryView, type ProviderInfo, type RuntimeNavigationLevel, type ScanContext, type SharedLoaderState, type SidebarState, type StorageType, type StoredAuthFieldDraft, type UseAutomationTriggerTypesResult, type UseBusQueryOptions, type UseBusQueryResult, type UseCompatibleAuthOptionsResult, type UseOnboardingFlowOptions, type UseOnboardingFlowResult, type UseWidgetConfigOptions, type UseWidgetConfigResult, type UseWidgetRegistryOptions, type UseWidgetsOptions, type UseWidgetsResult, type WindowContextState, addWidgetToFocusLayout, authDraftRequiresStorage, authMethodRefKey, buildProviderConfigAuthDraft, buildScanContext, clearOnboardingCompleted, clearOnboardingSkipped, compileProviderConfigAuthDraft, createEmptyFocusContextLayout, createInitialAuthFieldDrafts, createPersistedStore, getOnboardingCompleted, getOnboardingSkipped, getProviderConfigDetailView, groupPagesByNavigationGroup, isPersistableProjectSelection, listCompatibleAuthOptions, listProviderConfigSummaryViews, loadExtensionBrowserContributions, noopStorage, parsePersistedAgentSelection, persistPluginEnabled, registerCoreOnboardingSteps, registerNavigationHandler, removeWidgetFromFocusLayout, scanOnboarding, scanOnboardingAdapters, scanOnboardingClients, setOnboardingCompleted, setOnboardingSkipped, updateFocusContextWidgetPosition, updateFocusContextWidgetSize, useAppContext, useAutomationTriggerTypes, useBus, useBusEvent, useBusQuery, useCompatibleAuthOptions, useFocusStore, useNavigationLevel, useOnboardingFlow, useOptionalBus, usePageComponent, usePageDefinitions, usePageOverlayStore, usePages, useProviderStore, useSidebarStore, useTrayLayout, useWidgetConfig, useWidgetLayout, useWidgetLayoutActions, useWidgetRegistry, useWidgets, useWindowContext, useWindowIdPages };
@@ -1 +1 @@
1
- import e,{createContext as t,lazy as n,useCallback as r,useContext as i,useEffect as a,useMemo as o,useRef as s,useState as c,useSyncExternalStore as l}from"react";import{jsx as u}from"react/jsx-runtime";import{PreferencesSubjects as d}from"@makaio/framework/services/preferences";import{UiSubjects as f,deriveBrowserTarget as p,deriveDefaultEnabled as m,deriveTrayLayout as h,findCategory as g,isOverlayMode as _,isWidgetLayout as v,onboardingStepRegistry as y,pageDefinitionRegistry as b,queryPageDefinitions as x,runCleanupsInReverse as S,subscribeToWidgetEvents as C,widgetRegistry as w}from"@makaio/framework/ui-kernel";import{ExtensionSubjects as ee}from"@makaio/framework/kernel";import{AdapterSubjects as te,AgentSelectionSchema as ne,AutomationTriggerSubjects as T}from"@makaio/framework/contracts";import{MakaioBus as E}from"@makaio/framework/bus";import{AdapterRuntimeSubjects as re}from"@makaio/framework/services/adapter-runtime";import{AdapterSubsystemSubjects as D}from"@makaio/framework/services/adapter-subsystem";import{LogImportSubjects as ie}from"@makaio/framework/services/log-import/log-import";import{SettingsSubjects as O}from"@makaio/framework/services/settings/namespace";import{ExtensionConfigStorageSubjects as ae}from"@makaio/framework/services/settings/storage/extension-configs/namespace";import{resolveRuntimeProviderContext as oe}from"@makaio/framework/services/provider-context";import{ClientStorageSubjects as k,ProviderStorageSubjects as A}from"@makaio/framework/services/settings/storage";import{ClientSubjects as j}from"@makaio/framework/contracts/client";import{AuthCredentialRefSchema as se,ProviderConfigAuthSchema as M}from"@makaio/framework/contracts/auth";import{buildStoredCredentialRef as ce}from"@makaio/framework/contracts/config";const N=t(null);function le({bus:e,children:t}){return u(N.Provider,{value:e,children:t})}function P(){let e=i(N);if(!e)throw Error(`useBus must be used within a BusProvider`);return e}function ue(){return i(N)}function F({subject:e,request:t,skip:n=!1,refetchOn:i=[]}){let l=P(),[u,d]=c(),[f,p]=c(!n),[m,h]=c(),g=o(()=>{if(t===void 0)return{deserializable:!0};try{let e=JSON.stringify(t);return e===void 0?{deserializable:!1}:{serialized:e,deserializable:!0}}catch{return{deserializable:!1}}},[t]),_=g.deserializable?g.serialized:`non-serializable-request`,v=o(()=>{if(g.deserializable&&g.serialized!==void 0)return JSON.parse(g.serialized)},[_,g.deserializable,g.serialized]),y=s(i);y.current=i;let b=o(()=>i.map(de).join(`,`),[i]),x=s(b);x.current!==b&&(x.current=b);let S=x.current,C=s(0),w=r(async()=>{let t=++C.current;p(!0),h(void 0);try{if(!g.deserializable)throw Error(`useBusQuery request must be JSON-serializable.`);let n=await l.request(e,v);t===C.current&&d(n)}catch(e){t===C.current&&h(e instanceof Error?e:Error(String(e)))}finally{t===C.current&&p(!1)}},[l,e,_,v,g.deserializable]);return a(()=>{n||w()},[w,n]),a(()=>{if(n||y.current.length===0)return;let e=y.current.map(e=>l.on(e,(()=>void w())));return()=>{for(let t of e)t()}},[l,S,w,n]),{data:u,loading:f,error:m,refetch:w}}function de(e){return JSON.stringify({subject:String(e.subject),meta:e.$meta})}function fe(e,t){let n=P(),r=s(t);r.current=t,a(()=>n.on(e,(e=>r.current(e))),[n,e])}function pe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype}const me=Object.freeze([]);function he(e={}){let{builtIns:t=me,scope:n,includeAny:i=!0}=e,s=P(),[u,d]=c(!1);a(()=>{w.registerAll(t)},[t]),a(()=>{let e=C(s);return d(!0),()=>{e(),d(!1)}},[s]);let f=r(e=>w.subscribe(e),[]),p=r(()=>w.getAll(),[]),m=l(f,p,p),h=o(()=>n?w.getByScope(n,i):m,[m,i,n]);return{builtInWidgets:t,loading:!u,widgets:u?h:void 0}}function I(e={}){let{scope:t,includeAny:n=!0}=e,i=r(e=>w.subscribe(e),[]),a=r(()=>w.getAll(),[]),s=l(i,a,a);return o(()=>t?w.getByScope(t,n):s,[s,n,t])}function L(e){return e.contextId?`${e.scope}:${e.contextId}`:e.scope}function R(e){let{paneId:t,widgetId:n,context:i,surface:l,defaultConfig:u}=e,f=P(),[p,m]=c(u),h=s(0),g=o(()=>L(i),[i.contextId,i.scope]),_=o(()=>({category:`widget-config:${t}:${n}`,key:{scope:g,surface:l}}),[g,t,l,n]),v=o(()=>structuredClone(u),[u]);a(()=>{let e=++h.current,t=()=>h.current===e;return m(v),(async()=>{try{let{value:e}=await f.request(d.get,{category:_.category,key:_.key});if(!t())return;pe(e)&&m(t=>({...t,...e}))}catch{}})(),()=>{++h.current}},[f,v,_]);let y=r(async e=>{try{await f.request(d.set,{category:_.category,key:_.key,value:e})}catch{}},[f,_]);return{config:p,updateConfig:r(e=>{m(t=>{let n={...t,...e};return y(n),n})},[y])}}function z(e){let t=P(),[n,i]=c(null),[o,s]=c(!0),[l,u]=c(null),f=r(async()=>{s(!0),u(null);try{let{value:n}=await t.request(d.get,{category:`widget-layout`,key:e});i(v(n)?n:null)}catch(e){u(e instanceof Error?e:Error(`Failed to load layout`)),i(null)}finally{s(!1)}},[t,e]);return a(()=>{f()},[f]),{layout:n,isLoading:o,error:l,refresh:f}}const B=`widget-layout`;function V(){let e=P();return{saveLayout:r(async(t,n)=>{await e.request(d.set,{category:B,key:t,value:n})},[e]),resetLayout:r(async t=>{await e.request(d.delete,{category:B,key:t})},[e])}}const ge=Object.freeze([]);function _e(e=ge){let t=r(e=>w.subscribe(e),[]),n=r(()=>w.getAll(),[]),i=l(t,n,n);return o(()=>h(i,e),[i,e])}async function ve(e){return import(e)}function ye(e){return e.kind===`resolved`&&e.factory!==void 0}function be(e){return e.filter(e=>e.state===`active`&&e.browser?.entrypoint)}function H(){return{cleanups:[],errorMessage:null,shell:null,state:`empty`}}function xe(e){return e===`cancelled`}function U(e,t,n,r){return{cleanups:e,errorMessage:r,shell:n,state:t}}async function Se(e,t){let{bus:n,isCurrentRun:r,waitForRuntimeReady:i}=e,a=i(n);t.push(a.cleanup);let o=await a.ready;if(xe(o))return S(t,`[ExtensionBrowserLoader]`),{kind:`aborted`};if(o===`timeout`)return{kind:`result`,result:U(t,`error`,null,`The Makaio runtime did not respond. The service may have failed to start — try restarting the application or check the logs for errors.`)};if(!r())return S(t,`[ExtensionBrowserLoader]`),{kind:`aborted`};let{extensions:s}=await n.request(ee.list,{}),c=be(s);return c.length===0?{kind:`result`,result:U(t,`empty`,null,null)}:{browserExtensions:c,kind:`ok`}}function W(e){let t=e.browser.entrypoint,n;try{n=new URL(t,globalThis.location.origin)}catch{return console.warn(`[ExtensionBrowserLoader] Extension "${e.name}" has malformed entrypoint "${t}"`),null}return n.origin!==globalThis.location.origin||!n.pathname.startsWith(`/extensions/`)?(console.warn(`[ExtensionBrowserLoader] Extension "${e.name}" has unsafe entrypoint "${t}" (must stay under /extensions/)`),null):n.pathname}async function Ce(e,t,n,r){let{bus:i,getRegisteredFactory:a,importModule:o=ve,isCurrentRun:s,registerExtensionUI:c,resolveFactory:l,unregisterFactory:u}=e,d=W(t);if(d===null)return{failed:!0,kind:`ok`,shell:r};let f=[()=>u(t.name)];try{let e=await o(d);if(!s())return S(f,`[ExtensionBrowserLoader] ${t.name}`),S(n,`[ExtensionBrowserLoader]`),{kind:`aborted`};let u=l(e.default,a(t.name));if(!ye(u))return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" has invalid browser factory (${u.reason??`unknown resolution error`})`),{failed:!0,kind:`ok`,shell:r};let p=u.factory({bus:i});if(!p||typeof p!=`object`)return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" factory returned invalid contribution (expected object, got ${p===null?`null`:typeof p})`),{failed:!0,kind:`ok`,shell:r};p.destroy&&f.push(p.destroy),f.push(c(i,t.name,p));let m=r;return p.shell&&(m!==null&&console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" replaces the previously registered shell (shell contributions are last-wins)`),m=p.shell.component),n.push(...f),{failed:!1,kind:`ok`,shell:m}}catch(e){return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.error(`[ExtensionBrowserLoader] Failed to load extension "${t.name}":`,e),{failed:!0,kind:`ok`,shell:r}}}async function we(e){let t=[];try{let n=await Se(e,t);if(n.kind===`aborted`)return H();if(n.kind===`result`)return n.result;let r=0,i=null;for(let a of n.browserExtensions){let n=await Ce(e,a,t,i);if(n.kind===`aborted`)return H();i=n.shell,n.failed&&(r+=1)}return e.isCurrentRun()?i===null?r>0?U(t,`error`,null,`One or more extensions failed to load before providing workspace chrome.`):U(t,`empty`,null,null):U(t,`ready`,i,null):(S(t,`[ExtensionBrowserLoader]`),H())}catch(e){return console.error(`[ExtensionBrowserLoader] Failed to query extensions:`,e),U(t,`error`,null,e instanceof Error?e.message:String(e))}}const G=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Te=(e=>e?G(e):G),Ee=e=>e;function De(t,n=Ee){let r=e.useSyncExternalStore(t.subscribe,e.useCallback(()=>n(t.getState()),[t,n]),e.useCallback(()=>n(t.getInitialState()),[t,n]));return e.useDebugValue(r),r}const Oe=e=>{let t=Te(e),n=e=>De(t,e);return Object.assign(n,t),n},ke=(e=>e?Oe(e):Oe);function Ae(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}const K=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return K(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return K(t)(e)}}}},je=(e,t)=>(n,r,i)=>{let a={storage:Ae(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(e,t)=>(f(e,t),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return K(u.getItem.bind(u))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(r(),void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},q={length:0,clear:()=>{},getItem:()=>null,key:()=>null,removeItem:()=>{},setItem:()=>{}};function Me(e){let t=`__makaio_storage_probe__`,n=n=>{let r=null,i=!1;try{return r=n.getItem(t),i=r!==null,n.setItem(t,`1`),!0}catch{return!1}finally{try{i&&r!==null?n.setItem(t,r):n.removeItem(t)}catch(t){console.warn(`[createPersistedStore] Storage probe cleanup failed`,{type:e,error:t})}}};try{return e===`localStorage`?typeof localStorage>`u`?q:n(localStorage)?localStorage:q:typeof sessionStorage>`u`?q:n(sessionStorage)?sessionStorage:q}catch{return q}}function J(e,t){let{name:n,storage:r=`sessionStorage`,version:i,partialize:a,merge:o,extraPersistOptions:s}=t,c={name:n,storage:Ae(()=>Me(r)),...i===void 0?{}:{version:i},...a?{partialize:a}:{},...o?{merge:o}:{},...s};return ke()(je(e,c))}const Ne={level:`root`,values:{}};function Pe(e){return{level:e.level,values:{...e.values}}}const Y=J(e=>({windowId:null,uiContext:Pe(Ne),activePaneId:null,setWindowId:t=>e(e=>e.windowId!==null&&e.windowId!==t?{}:{windowId:t}),setUiContext:t=>e({uiContext:Pe(t),activePaneId:null}),setActivePaneId:t=>e({activePaneId:t}),clearUiContext:()=>e({uiContext:Pe(Ne),activePaneId:null})}),{name:`makaio-window-context`,storage:`sessionStorage`,partialize:e=>({uiContext:e.uiContext})}),Fe=J(e=>({activePageId:null,internalRoute:null,openPage:(t,n)=>e({activePageId:t,internalRoute:n??null}),close:()=>e({activePageId:null,internalRoute:null}),navigate:t=>e(e=>({internalRoute:t,activePageId:e.activePageId}))}),{name:`makaio-page-overlay`,storage:`sessionStorage`});function Ie(e,t,n){return{collapsedByLevel:{...e.collapsedByLevel,[t]:n}}}const Le=J((e,t)=>({collapsedByLevel:{},isCollapsed:e=>t().collapsedByLevel[e]??!1,toggle:t=>e(e=>Ie(e,t,!(e.collapsedByLevel[t]??!1))),setCollapsed:(t,n)=>e(e=>Ie(e,t,n))}),{name:`makaio-sidebar`,storage:`localStorage`}),Re={onboarding:{id:`onboarding`,name:`Welcome`,isPreset:!0},chat:{id:`chat`,name:`Chat`,isPreset:!0,quickPromptSuggestions:[`Help me understand this code`,`What are the key files in this project?`,`Explain the architecture`]},git:{id:`git`,name:`Git`,isPreset:!0,quickPromptSuggestions:[`Show recent commits`,`What changed in this branch?`,`Create a new branch`]},review:{id:`review`,name:`Code Review`,isPreset:!0,quickPromptSuggestions:[`Review this pull request`,`Show file differences`,`Add review comments`]},planning:{id:`planning`,name:`Planning`,isPreset:!0,quickPromptSuggestions:[`Break down this task`,`Create implementation plan`,`Estimate complexity`]},settings:{id:`settings`,name:`Settings`,isPreset:!0},dashboard:{id:`dashboard`,name:`Dashboard`,isPreset:!0,quickPromptSuggestions:[`Show recent projects`,`Open a workspace`,`Create a new project`]}},ze={activeFocus:Re.chat},Be=J((e,t)=>({activeFocus:ze.activeFocus,setActiveFocus:t=>{let n=Re[t];if(!n){console.error(`[focusStore] Unknown focus preset id: ${t}`);return}e({activeFocus:n})},setActiveFocusContext:t=>{e({activeFocus:t})},setFocusContextLayout:n=>{let{activeFocus:r}=t();e({activeFocus:{...r,layout:n}})},getFocusContextLayout:()=>t().activeFocus.layout}),{name:`makaio-focus`,storage:`sessionStorage`});function Ve(){return{version:1,widgets:[]}}function He(e,t){return e.widgets.some(e=>e.widgetId===t.widgetId)?e:{...e,widgets:[...e.widgets,t]}}function Ue(e,t){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.filter(e=>e.widgetId!==t)}:e}function We(e,t,n){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.map(e=>e.widgetId===t?{...e,size:n}:e)}:e}function Ge(e,t,n){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.map(e=>e.widgetId===t?{...e,...n}:e)}:e}function Ke(){return Y(e=>e.uiContext.level)}const qe=new Set([`http:`,`https:`]);function Je(e){return e.on(f.navigate,e=>{let{url:t}=e.payload,n;try{n=new URL(t,window.location.href)}catch{throw Error(`[registerNavigationHandler] Invalid URL: ${t}`)}if(!qe.has(n.protocol))throw Error(`[registerNavigationHandler] Unsafe URL protocol "${n.protocol}" in: ${t}`);let r=n.toString(),i=p(n.pathname+n.search+n.hash);window.open(r,i,`noopener,noreferrer`),e.setResult({action:`navigated`})},{priority:10})}function Ye(e,t){let n=e.filter(e=>e.group!==void 0),r=new Map;for(let e of n){let t=e.group;r.has(t)||r.set(t,[]),r.get(t).push(e)}let i=[],a=new Set,o=[...t].sort((e,t)=>e.order-t.order);for(let e of o){let t=r.get(e.id)??[];i.push({config:e,pages:t}),a.add(e.id)}for(let[e,t]of r)if(!a.has(e)){let n={id:e,label:e,order:999};i.push({config:n,pages:t})}return i}function Xe(e){let t=r(e=>b.subscribe(e),[]),n=r(()=>b.getAll(),[]);return x(l(t,n,n),e)}function Ze(e){let t=Xe(e),n=Fe(e=>e.openPage),i=Fe(e=>e.activePageId),a=Be(e=>e.setActiveFocus),o=Be(e=>e.activeFocus.id),s=r(e=>_(e.mode)?()=>n(e.id):()=>{e.focusContext&&a(e.focusContext)},[n,a]);return t.map(e=>{let t;return t=e.isActive?e.isActive():_(e.mode)?i===e.id:e.focusContext?o===e.focusContext:!1,{...e,execute:s(e),isActive:t}})}function Qe(e,t){return e===void 0?!0:Array.isArray(e)?e.includes(t):e===t}function $e(e){let t=Y(e=>e.windowId),n=Ze(e);return t?n.filter(e=>Qe(e.windowId,t)):n}function et(e,t=0){let i=r(t=>e===null?()=>void 0:b.subscribe(t),[e]),a=r(()=>{if(e!==null)return b.get(e)},[e]),s=l(i,a,a);return o(()=>{if(s)return{Component:n(s.component),definition:s}},[s,t])}const tt=[T.changed],nt={};function rt(){let{data:e,loading:t,error:n,refetch:r}=F({subject:T.list,request:nt,refetchOn:tt});return o(()=>({data:e?.triggers,loading:t,error:n,refetch:r}),[e,t,n,r])}function it(e){let t=[],n=e=>{t.push(y.register(e))};return n({id:`welcome`,title:`Welcome`,kaiState:`wave`,order:10,skippable:!1,component:e.WelcomeStep}),n({id:`clients`,title:`Clients`,kaiState:`neutral`,order:20,skippable:!0,component:e.ClientsStep}),n({id:`providers`,title:`Providers`,kaiState:`neutral`,order:25,skippable:!0,component:e.ProvidersStep}),n({id:`adapters`,title:`Tools`,kaiState:`neutral`,order:30,skippable:!0,component:e.AdaptersStep}),n({id:`preferences`,title:`Preferences`,kaiState:`smile`,order:35,skippable:!0,component:e.PreferencesStep}),n({id:`plugins`,title:`Plugins`,kaiState:`neutral`,order:40,skippable:!0,condition:e=>e.extensions.length>0,component:e.PluginsStep}),n({id:`done`,title:`All Set`,kaiState:`success`,order:50,skippable:!1,component:e.DoneStep}),()=>{for(let e of t)e()}}function at(e){try{return localStorage.getItem(e)===`true`}catch{return!1}}function ot(e){try{localStorage.setItem(e,`true`)}catch{}}function st(e){try{localStorage.removeItem(e)}catch{}}const ct=`makaio-onboarding-skipped`;function lt(){return at(ct)}function ut(){ot(ct)}function dt(){st(ct)}const ft=`makaio-onboarding-completed`;function pt(){return at(ft)}function mt(){ot(ft)}function ht(){st(ft)}function X(e,t,n,r){let i=n.get(e)??{id:`onboarding-${e}`,config:void 0};return n.set(e,i),r.request(ae.setEnabled,{extensionName:e,scope:`default`,enabled:t}).then(t=>(n.set(e,{...i,id:t.id}),t))}function gt(e){let t=ne.safeParse(e);if(!t.success)return null;let n=t.data;if(n.kind===`model`){let e=Z(n.adapterName),t=Z(n.model),r=Z(n.providerConfigId)??Z(n.providerId);return!e||!t?null:{kind:`adapter`,adapterName:e,model:t,...r?{providerConfigId:r}:{}}}if(n.kind===`virtualModel`){let e=Z(n.virtualModelId);return e?{kind:`virtual-model`,virtualModelId:e}:null}switch(n.kind){case`adapter`:{let e=Z(n.adapterName);if(!e)return null;let t=Z(n.model),r=Z(n.providerConfigId);return{kind:`adapter`,adapterName:e,...t?{model:t}:{},...r?{providerConfigId:r}:{}}}case`persona`:{let e=Z(n.personaId);return e?{kind:`persona`,personaId:e}:null}case`profile`:{let e=Z(n.profileId);return e?{kind:`profile`,profileId:e}:null}case`virtual-model`:{let e=Z(n.virtualModelId);return e?{kind:`virtual-model`,virtualModelId:e}:null}default:return null}}function _t(e){return e.kind===`adapter`?typeof e.adapterName==`string`&&e.adapterName.trim().length>0&&typeof e.providerConfigId==`string`&&e.providerConfigId.trim().length>0&&typeof e.model==`string`&&e.model.trim().length>0:!0}function Z(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null}function vt(e,t){if(typeof e==`object`&&e&&`defaultSelection`in e){let n=e.defaultSelection;if(n==null)return t;let r=gt(n);return r===null?t:{...t,defaultSelection:r}}return t}const yt=J(e=>({defaultSelection:null,setDefaultSelection:t=>e({defaultSelection:t})}),{name:`makaio-app-context`,storage:`localStorage`,merge:vt});async function bt(){let[{configs:e},{configs:t},{providers:n}]=await Promise.all([E.request(D.listProviderConfigs,{enabled:!0}),E.request(D.listAdapterConfigs,{}),E.request(A.list,{})]),r=new Map(n.map(e=>[e.id,e])),i=new Map;for(let e of t){if(!e.enabled)continue;let t=e.displayName??e.name;for(let n of e.bindings){let e={adapterName:n.adapterName,displayLabel:t},r=i.get(n.providerConfigId);r?r.push(e):i.set(n.providerConfigId,[e])}}return e.map(e=>({providerConfigId:e.id,definitionId:e.definitionId,name:e.name,availableModels:r.get(e.definitionId)?.availableModels??[],isDefault:e.isDefault,enabled:e.enabled,modelFilterMode:e.modelFilterMode,modelVisibility:e.modelVisibility,boundAdapters:i.get(e.id)??[]}))}const xt=ke((e,t)=>({providers:[],isLoading:!1,error:null,_fetchPromise:null,_hasFetched:!1,_fetchGeneration:0,fetchProviders:async()=>{let n=t();if(n._hasFetched&&!n.isLoading)return Promise.resolve();if(n._fetchPromise)return n._fetchPromise;let r=t()._fetchGeneration;e({isLoading:!0,error:null});let i=bt().then(e=>{t()._fetchGeneration===r&&(console.debug(`[providerStore] providers:`,e.map(e=>({providerConfigId:e.providerConfigId,definitionId:e.definitionId,name:e.name}))),t().setProviders(e))}).catch(e=>{if(t()._fetchGeneration!==r)return;let n=e instanceof Error?e:Error(String(e));t().setError(n)}).finally(()=>{e(e=>e._fetchPromise===i?{_fetchPromise:null}:{})});return e({_fetchPromise:i}),i},invalidate:()=>{e(e=>({_hasFetched:!1,_fetchPromise:null,_fetchGeneration:e._fetchGeneration+1,isLoading:!1}))},setProviders:t=>{e({providers:t,isLoading:!1,error:null,_hasFetched:!0})},setError:t=>{e({error:t,isLoading:!1})}}));async function Q(){let[{clients:e},{adapters:t}]=await Promise.all([E.request(k.list,{}),E.request(O.adapter.list,{})]),n=e.filter(e=>e.enabled&&e.binary!==void 0).map(e=>({id:e.id,name:e.name,binary:e.binary.name,supportedVersions:e.binary.supportedVersions}));if(n.length===0)return null;let{results:r}=await E.request(j.scan,{targets:n.map(e=>({clientId:e.id,binaryName:e.binary,supportedVersions:e.supportedVersions}))}),i=new Map(r.map(e=>[e.clientId,e])),a=n.map(e=>{let t=i.get(e.id);return{id:e.id,name:e.name,binary:e.binary,found:t?.found??!1,version:t?.version,warningMessage:t?.warningMessage}}),o=new Map;for(let e of t){if(!e.clientId)continue;let t=o.get(e.clientId);t?t.push(e.adapterName):o.set(e.clientId,[e.adapterName])}return{scannedClients:a,adaptersByClientId:o}}function St(e){let{scannedClients:t,adaptersByClientId:n}=e,r=[];for(let e of t){let t=n.get(e.id);if(t?.length)for(let n of t)r.push({adapterName:n,displayName:e.name,binary:e.binary,found:e.found,version:e.version,warningMessage:e.warningMessage})}return r}function Ct(e){let t=e.toLowerCase();return t.includes(`cli`)?0:t.includes(`sdk`)?1:2}function wt(e){let{scannedClients:t,adaptersByClientId:n}=e,r=[];for(let e of t){let t=(n.get(e.id)??[]).sort((e,t)=>{let n=Ct(e),r=Ct(t);return n===r?e.localeCompare(t):n-r});r.push({clientId:e.id,name:e.name,binary:e.binary,found:e.found,version:e.version,warningMessage:e.warningMessage,adapterNames:t})}return r}async function Tt(){let e=await Q();return e?St(e):[]}async function Et(){let e=await Q();return e?wt(e):[]}async function Dt(){let e=await Q();return e?{adapters:St(e),clients:wt(e)}:{adapters:[],clients:[]}}function Ot(e,t){return{...e,supportedProtocols:t==null?[]:Object.keys(t.endpoints??{})}}async function kt(e,t={}){let[{configs:n},{providers:r}]=await Promise.all([e.request(D.listProviderConfigs,t),e.request(A.list,{})]),i=new Map(r.map(e=>[e.id,e]));return n.map(e=>Ot(e,i.get(e.definitionId)))}async function At(e,t){let{config:n}=await e.request(D.getProviderConfig,{id:t});if(n===null)return null;let{provider:r}=await e.request(A.get,{id:n.definitionId});return Ot(n,r)}async function jt(e,t){let{options:n}=await e.request(D.listCompatibleAuthOptions,{definitionId:t});return n}function Mt(e){return e.mode===`explicit`?Object.fromEntries(e.fields.map(({id:e})=>[e,{source:`stored`,value:``}])):{}}function Nt(e,t={},n){if(e.mode===`explicit`){if(n)throw Error(`Explicit authentication cannot select a native account.`);let r=new Map(e.fields.map(e=>[e.id,e])),i=Object.keys(t).find(e=>!r.has(e));if(i)throw Error(`Authentication field "${i}" is not declared by method "${e.method.methodId}".`);let a={};for(let n of e.fields){let e=t[n.id];if(!e||e.source===`stored`&&e.value.length===0){if(n.required)throw Error(`Complete the required field: ${n.label}.`);continue}if(e.source===`environment`&&!n.sourceHints.some(t=>t.kind===`environment`&&t.variable===e.variable))throw Error(`Environment source "${e.variable}" is not declared for authentication field "${n.id}".`);a[n.id]=e}return{mode:e.mode,method:{...e.method},fields:a}}if(Object.keys(t).length>0)throw Error(`${e.mode} authentication cannot contain credential fields.`);if(e.mode===`inferred`)return{mode:e.mode,method:{...e.method},...n?{account:{...n}}:{}};if(n)throw Error(`No-auth authentication cannot select a native account.`);return{mode:e.mode,method:{...e.method}}}function Pt(e){return e.owner===`provider`?`provider:${e.providerDefinitionId}:${e.methodId}`:`client:${e.clientId}:${e.methodId}`}function Ft(e,t){if(e.mode!==`explicit`)return{auth:M.parse(e.mode===`inferred`?{mode:e.mode,method:{...e.method},...e.account?{account:{...e.account}}:{}}:{mode:e.mode,method:{...e.method}}),storedCredentials:{}};let n={},r={};for(let[i,a]of Object.entries(e.fields)){if(a.source===`environment`){n[i]=se.parse(`env:${a.variable}`);continue}if(!t)throw Error(`Stored authentication fields require the final provider-config ID.`);if(a.value.length===0)throw Error(`Stored authentication field "${i}" cannot be empty.`);n[i]=ce(t,i),r[i]=a.value}return{auth:M.parse({mode:e.mode,method:{...e.method},credentialRefs:n}),storedCredentials:r}}function It(e){return e.mode===`explicit`&&Object.values(e.fields).some(({source:e})=>e===`stored`)}let $=null;function Lt(e){if($===null)$={creator:e,count:1};else if($.creator===e)$.count+=1;else throw Error(`useOnboardingFlow: only one host-owned create bridge may be registered at a time.`);return()=>Rt(e)}function Rt(e){if($?.creator===e){if($.count===1){$=null;return}--$.count}}function zt(e){return e}function Bt(e){try{mt()}catch(e){console.error(`[useOnboardingFlow] Failed to persist completion flag:`,e)}finally{e()}}async function Vt(e,t){let n=$?.creator??null;if(n){let r=await n(E,e);return await t(),r}if(It(e.auth))throw Error(`useOnboardingFlow: plaintext provider-config creation requires a host-owned create bridge.`);let{auth:r}=Ft(e.auth),{auth:i,...a}=e,{config:o}=await E.request(D.createProviderConfig,{...a,auth:r});return await t(),o.id}async function Ht(e){let t=await E.requestOptional(D.getDefaultBinding,{adapterName:e});if(!t.handled||!t.data.binding)return;let{binding:n}=t.data;return oe(E,{adapterName:n.adapterName,providerConfigId:n.providerConfigId})}function Ut({context:e,onComplete:t,onSkip:n}){let{setDefaultSelection:i}=yt(),l=P(),[u]=c(()=>{let t=zt(y.getAll());return Object.freeze(t.filter(t=>t.condition===void 0||t.condition(e)))}),[d,f]=c(0),[p,h]=c(e.adapters),[_,v]=c(()=>new Set(e.adapters.filter(e=>e.enabled).map(e=>e.adapterName))),[b,x]=c(()=>new Map),[S,C]=c(()=>new Map),[w,ne]=c(null),[T,oe]=c(()=>e.extensions),[k,A]=c(()=>new Map),[j,se]=c([]),[M,ce]=c(!1),[N,le]=c(null),[ue,F]=c(()=>new Set),[de,fe]=c([]),[pe,me]=c([]),[he,I]=c([]),L=s(new Map),R=s(0),z=s(0),B=s(new Map);a(()=>{let e=++R.current,t=()=>R.current===e;(async()=>{try{let[e,n]=await Promise.all([E.request(ee.list,{}),E.request(ae.list,{})]);if(!t())return;let r=new Map;for(let e of n.extensionConfigs)e.scope===`default`&&!r.has(e.extensionName)&&r.set(e.extensionName,{id:e.id,enabled:e.enabled,config:e.config});let i=new Map,a=new Map;for(let t of e.extensions){let e=r.get(t.name);e!==void 0&&(i.set(t.name,e.enabled),a.set(t.name,{id:e.id,config:e.config}))}oe(e.extensions),A(i),L.current=a}catch(e){if(!t())return;console.error(`[useOnboardingFlow] Failed to load extension list:`,e)}})()},[]),a(()=>()=>{for(let e of B.current.values())e.abort();B.current.clear()},[]);let V=r(async()=>{let{adapters:e}=await E.request(O.adapter.list,{});h(e),v(new Set(e.filter(e=>e.enabled).map(e=>e.adapterName)))},[]),ge=r(async e=>{(await E.request(O.adapter.setEnabled,{adapterName:e,enabled:!0})).success&&(await V(),xt.getState().invalidate())},[V]),_e=r(async e=>{(await E.request(O.adapter.setEnabled,{adapterName:e,enabled:!1})).success&&(v(t=>{let n=new Set(t);return n.delete(e),n}),await V(),xt.getState().invalidate())},[V]),ve=r(async e=>{x(t=>new Map([...t,[e,{status:`pending`}]])),B.current.get(e)?.abort();let t=new AbortController;B.current.set(e,t);let n=()=>{B.current.get(e)===t&&B.current.delete(e)},r;try{r=(await E.request(re.resolveId,{adapterName:e},{signal:t.signal})).adapterId}catch(r){if(n(),t.signal.aborted)return{status:`pending`};let i={status:`error`,message:`Could not resolve adapter "${e}": ${r instanceof Error?r.message:String(r)}`};return x(t=>new Map([...t,[e,i]])),i}try{if(t.signal.aborted)return{status:`pending`};let n=await Ht(e);if(t.signal.aborted)return{status:`pending`};let i=Date.now(),a={adapterId:r,prompt:`Reply with the single word: OK`,...n&&{providerContext:n}};if(await E.request(te.infer,a,{timeout:3e4,signal:t.signal}),t.signal.aborted)return{status:`pending`};let o={status:`success`,durationMs:Date.now()-i};return x(t=>new Map([...t,[e,o]])),o}catch(n){if(t.signal.aborted)return{status:`pending`};let r={status:`error`,message:n instanceof Error?n.message:String(n)};return x(t=>new Map([...t,[e,r]])),r}finally{n()}},[]),ye=r((e,t)=>{C(n=>new Map([...n,[e,t]]))},[]),be=r(e=>{ne(e)},[]),H=r(async()=>{let e=++z.current;ce(!0),le(null);try{let{adapters:t,clients:n}=await Dt();if(z.current!==e)return;se(t),fe(n);let r=new Set(n.filter(e=>e.found).map(e=>e.clientId));F(e=>e.size===0?r:new Set([...e].filter(e=>r.has(e))))}catch(t){if(z.current!==e)return;let n=t instanceof Error?t:Error(String(t));throw le(n),n}finally{z.current===e&&ce(!1)}},[]),xe=r((e,t)=>{A(n=>new Map([...n,[e,t]])),X(e,t,L.current,l).catch(t=>{console.error(`[useOnboardingFlow] Failed to persist plugin toggle for ${e}:`,t)})},[l]),U=r(e=>F(t=>new Set([...t,e])),[]),Se=r(e=>{F(t=>{let n=new Set(t);return n.delete(e),n})},[]),W=r(async()=>{me(await kt(E))},[]),Ce=r(async e=>Vt(e,W),[W]),we=r(async e=>{await E.request(D.deleteProviderConfig,{id:e}),await W(),I(t=>t.filter(t=>t.providerConfigId!==e))},[W]),G=r(async e=>{let{bindings:t}=await E.request(D.listBindings,{adapterName:e});I(n=>[...n.filter(t=>t.adapterName!==e),...t])},[]),Te=r(async(e,t)=>{await E.request(D.bind,{adapterName:e,providerConfigId:t}),await G(e)},[G]),Ee=r(async(e,t)=>{await E.request(D.unbind,{adapterName:e,providerConfigId:t}),await G(e)},[G]),De=r(async(e,t)=>{await E.request(D.setDefaultBinding,{adapterName:e,providerConfigId:t}),await G(e)},[G]),Oe=o(()=>({enableAdapter:ge,disableAdapter:_e,runHealthCheck:ve,setLogImportMode:ye,setDefaultAgent:be,refreshAdapterList:V,togglePlugin:xe,scan:H,selectClient:U,deselectClient:Se,createProviderConfig:Ce,deleteProviderConfig:we,bindProvider:Te,unbindProvider:Ee,setDefaultProvider:De,refreshProviderConfigs:W,refreshBindings:G}),[ge,_e,ve,ye,be,V,xe,H,U,Se,Ce,we,Te,Ee,De,W,G]),ke=r(()=>{f(e=>Math.min(e+1,u.length-1))},[u.length]),Ae=r(()=>{f(e=>Math.max(e-1,0))},[]),K=r(async e=>{w&&i(w);let t=Array.from(S.entries());if(await Promise.all(t.map(([e,t])=>E.request(ie.setMode,{adapterName:e,mode:t},{timeout:8e3}))),await Promise.all(Array.from(k.entries()).map(([e,t])=>X(e,t,L.current,l))),e){for(let e of T)if(!k.has(e.name)){let t=m(g(e.name));X(e.name,t,L.current,l).catch(t=>{console.error(`[useOnboardingFlow] Failed to persist default extension state for ${e.name}:`,t)})}}},[l,S,w,i,T,k]),je=r(async()=>{try{await K(!1)}catch(e){console.error(`[useOnboardingFlow] Failed to persist selections on skip:`,e)}finally{n()}},[K,n]),q=r(async()=>{try{await K(!0)}catch(e){console.error(`[useOnboardingFlow] Failed to persist selections on complete:`,e)}finally{Bt(t)}},[K,t]),Me=o(()=>({adapters:p,enabledAdapterNames:_,healthCheckResults:b,logImportSelections:S,defaultAgentSelection:w,extensions:T,pluginEnabledStates:k,scanAdapters:j,isScanning:M,scanError:N,scanClients:de,selectedClientIds:ue,providerConfigs:pe,adapterProviderBindings:he}),[p,_,b,S,w,T,k,j,M,N,de,ue,pe,he]),J=u[d]??u[0];if(J===void 0)throw Error(`useOnboardingFlow: no active steps found. Call registerCoreOnboardingSteps() before mounting the onboarding flow.`);return{activeSteps:u,currentStepIndex:d,currentStep:J,flowState:Me,actions:Oe,goNext:ke,goBack:Ae,skip:je,complete:q}}const Wt=Object.assign(Ut,{registerCreateProviderConfig:Lt,unregisterCreateProviderConfig:Rt});function Gt(e){let t=P(),[n,r]=c([]),[i,o]=c(!1),[s,l]=c(null);return a(()=>{let n=!0;return e?(o(!0),l(null),jt(t,e).then(e=>{n&&r(e)}).catch(e=>{n&&(r([]),l(e instanceof Error?e:Error(String(e))))}).finally(()=>{n&&o(!1)}),()=>{n=!1}):(r([]),o(!1),l(null),()=>{n=!1})},[t,e]),{options:n,isLoading:i,error:s}}export{N as BusContext,le as BusProvider,He as addWidgetToFocusLayout,It as authDraftRequiresStorage,Pt as authMethodRefKey,Nt as buildProviderConfigAuthDraft,Q as buildScanContext,ht as clearOnboardingCompleted,dt as clearOnboardingSkipped,Ft as compileProviderConfigAuthDraft,Ve as createEmptyFocusContextLayout,Mt as createInitialAuthFieldDrafts,J as createPersistedStore,pt as getOnboardingCompleted,lt as getOnboardingSkipped,At as getProviderConfigDetailView,Ye as groupPagesByNavigationGroup,_t as isPersistableProjectSelection,jt as listCompatibleAuthOptions,kt as listProviderConfigSummaryViews,we as loadExtensionBrowserContributions,q as noopStorage,gt as parsePersistedAgentSelection,X as persistPluginEnabled,it as registerCoreOnboardingSteps,Je as registerNavigationHandler,Ue as removeWidgetFromFocusLayout,Dt as scanOnboarding,Tt as scanOnboardingAdapters,Et as scanOnboardingClients,mt as setOnboardingCompleted,ut as setOnboardingSkipped,Ge as updateFocusContextWidgetPosition,We as updateFocusContextWidgetSize,yt as useAppContext,rt as useAutomationTriggerTypes,P as useBus,fe as useBusEvent,F as useBusQuery,Gt as useCompatibleAuthOptions,Be as useFocusStore,Ke as useNavigationLevel,Wt as useOnboardingFlow,ue as useOptionalBus,et as usePageComponent,Xe as usePageDefinitions,Fe as usePageOverlayStore,Ze as usePages,xt as useProviderStore,Le as useSidebarStore,_e as useTrayLayout,R as useWidgetConfig,z as useWidgetLayout,V as useWidgetLayoutActions,I as useWidgetRegistry,he as useWidgets,Y as useWindowContext,$e as useWindowIdPages};
1
+ import e,{createContext as t,lazy as n,useCallback as r,useContext as i,useEffect as a,useMemo as o,useRef as s,useState as c,useSyncExternalStore as l}from"react";import{jsx as u}from"react/jsx-runtime";import{PreferencesSubjects as d}from"@makaio/framework/services/preferences";import{UiSubjects as f,deriveBrowserTarget as p,deriveDefaultEnabled as m,deriveTrayLayout as h,findCategory as g,isOverlayMode as _,isWidgetLayout as v,onboardingStepRegistry as y,pageDefinitionRegistry as b,queryPageDefinitions as x,runCleanupsInReverse as S,subscribeToWidgetEvents as C,widgetRegistry as w}from"@makaio/framework/ui-kernel";import{ExtensionSubjects as ee}from"@makaio/framework/kernel";import{AdapterSubjects as te,AgentSelectionSchema as T,AutomationTriggerSubjects as ne}from"@makaio/framework/contracts";import{MakaioBus as E}from"@makaio/framework/bus";import{AdapterRuntimeSubjects as re}from"@makaio/framework/services/adapter-runtime";import{AdapterSubsystemSubjects as D}from"@makaio/framework/services/adapter-subsystem";import{LogImportSubjects as ie}from"@makaio/framework/services/log-import/log-import";import{SettingsSubjects as O}from"@makaio/framework/services/settings/namespace";import{resolveRuntimeProviderContext as k}from"@makaio/framework/services/provider-context";import{ClientStorageSubjects as ae,ProviderStorageSubjects as A}from"@makaio/framework/services/settings/storage";import{ClientSubjects as j}from"@makaio/framework/contracts/client";import{AuthCredentialRefSchema as oe,ProviderConfigAuthSchema as se}from"@makaio/framework/contracts/auth";import{buildStoredCredentialRef as ce}from"@makaio/framework/contracts/config";const M=t(null);function le({bus:e,children:t}){return u(M.Provider,{value:e,children:t})}function N(){let e=i(M);if(!e)throw Error(`useBus must be used within a BusProvider`);return e}function ue(){return i(M)}function P({subject:e,request:t,skip:n=!1,refetchOn:i=[]}){let l=N(),[u,d]=c(),[f,p]=c(!n),[m,h]=c(),g=o(()=>{if(t===void 0)return{deserializable:!0};try{let e=JSON.stringify(t);return e===void 0?{deserializable:!1}:{serialized:e,deserializable:!0}}catch{return{deserializable:!1}}},[t]),_=g.deserializable?g.serialized:`non-serializable-request`,v=o(()=>{if(g.deserializable&&g.serialized!==void 0)return JSON.parse(g.serialized)},[_,g.deserializable,g.serialized]),y=s(i);y.current=i;let b=o(()=>i.map(F).join(`,`),[i]),x=s(b);x.current!==b&&(x.current=b);let S=x.current,C=s(0),w=r(async()=>{let t=++C.current;p(!0),h(void 0);try{if(!g.deserializable)throw Error(`useBusQuery request must be JSON-serializable.`);let n=await l.request(e,v);t===C.current&&d(n)}catch(e){t===C.current&&h(e instanceof Error?e:Error(String(e)))}finally{t===C.current&&p(!1)}},[l,e,_,v,g.deserializable]);return a(()=>{n||w()},[w,n]),a(()=>{if(n||y.current.length===0)return;let e=y.current.map(e=>l.on(e,(()=>void w())));return()=>{for(let t of e)t()}},[l,S,w,n]),{data:u,loading:f,error:m,refetch:w}}function F(e){return JSON.stringify({subject:String(e.subject),meta:e.$meta})}function de(e,t){let n=N(),r=s(t);r.current=t,a(()=>n.on(e,(e=>r.current(e))),[n,e])}function fe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype}const pe=Object.freeze([]);function me(e={}){let{builtIns:t=pe,scope:n,includeAny:i=!0}=e,s=N(),[u,d]=c(!1);a(()=>{w.registerAll(t)},[t]),a(()=>{let e=C(s);return d(!0),()=>{e(),d(!1)}},[s]);let f=r(e=>w.subscribe(e),[]),p=r(()=>w.getAll(),[]),m=l(f,p,p),h=o(()=>n?w.getByScope(n,i):m,[m,i,n]);return{builtInWidgets:t,loading:!u,widgets:u?h:void 0}}function he(e={}){let{scope:t,includeAny:n=!0}=e,i=r(e=>w.subscribe(e),[]),a=r(()=>w.getAll(),[]),s=l(i,a,a);return o(()=>t?w.getByScope(t,n):s,[s,n,t])}function ge(e){return e.contextId?`${e.scope}:${e.contextId}`:e.scope}function _e(e){let{paneId:t,widgetId:n,context:i,surface:l,defaultConfig:u}=e,f=N(),[p,m]=c(u),h=s(0),g=o(()=>ge(i),[i.contextId,i.scope]),_=o(()=>({category:`widget-config:${t}:${n}`,key:{scope:g,surface:l}}),[g,t,l,n]),v=o(()=>structuredClone(u),[u]);a(()=>{let e=++h.current,t=()=>h.current===e;return m(v),(async()=>{try{let{value:e}=await f.request(d.get,{category:_.category,key:_.key});if(!t())return;fe(e)&&m(t=>({...t,...e}))}catch{}})(),()=>{++h.current}},[f,v,_]);let y=r(async e=>{try{await f.request(d.set,{category:_.category,key:_.key,value:e})}catch{}},[f,_]);return{config:p,updateConfig:r(e=>{m(t=>{let n={...t,...e};return y(n),n})},[y])}}function I(e){let t=N(),[n,i]=c(null),[o,s]=c(!0),[l,u]=c(null),f=r(async()=>{s(!0),u(null);try{let{value:n}=await t.request(d.get,{category:`widget-layout`,key:e});i(v(n)?n:null)}catch(e){u(e instanceof Error?e:Error(`Failed to load layout`)),i(null)}finally{s(!1)}},[t,e]);return a(()=>{f()},[f]),{layout:n,isLoading:o,error:l,refresh:f}}const L=`widget-layout`;function R(){let e=N();return{saveLayout:r(async(t,n)=>{await e.request(d.set,{category:L,key:t,value:n})},[e]),resetLayout:r(async t=>{await e.request(d.delete,{category:L,key:t})},[e])}}const z=Object.freeze([]);function ve(e=z){let t=r(e=>w.subscribe(e),[]),n=r(()=>w.getAll(),[]),i=l(t,n,n);return o(()=>h(i,e),[i,e])}async function ye(e){return import(e)}function be(e){return e.kind===`resolved`&&e.factory!==void 0}function xe(e){return e.filter(e=>e.state===`active`&&e.browser?.entrypoint)}function B(){return{cleanups:[],errorMessage:null,shell:null,state:`empty`}}function Se(e){return e===`cancelled`}function V(e,t,n,r){return{cleanups:e,errorMessage:r,shell:n,state:t}}async function Ce(e,t){let{bus:n,isCurrentRun:r,waitForRuntimeReady:i}=e,a=i(n);t.push(a.cleanup);let o=await a.ready;if(Se(o))return S(t,`[ExtensionBrowserLoader]`),{kind:`aborted`};if(o===`timeout`)return{kind:`result`,result:V(t,`error`,null,`The Makaio runtime did not respond. The service may have failed to start — try restarting the application or check the logs for errors.`)};if(!r())return S(t,`[ExtensionBrowserLoader]`),{kind:`aborted`};let{extensions:s}=await n.request(ee.list,{}),c=xe(s);return c.length===0?{kind:`result`,result:V(t,`empty`,null,null)}:{browserExtensions:c,kind:`ok`}}function we(e){let t=e.browser.entrypoint,n;try{n=new URL(t,globalThis.location.origin)}catch{return console.warn(`[ExtensionBrowserLoader] Extension "${e.name}" has malformed entrypoint "${t}"`),null}return n.origin!==globalThis.location.origin||!n.pathname.startsWith(`/extensions/`)?(console.warn(`[ExtensionBrowserLoader] Extension "${e.name}" has unsafe entrypoint "${t}" (must stay under /extensions/)`),null):n.pathname}async function H(e,t,n,r){let{bus:i,getRegisteredFactory:a,importModule:o=ye,isCurrentRun:s,registerExtensionUI:c,resolveFactory:l,unregisterFactory:u}=e,d=we(t);if(d===null)return{failed:!0,kind:`ok`,shell:r};let f=[()=>u(t.name)];try{let e=await o(d);if(!s())return S(f,`[ExtensionBrowserLoader] ${t.name}`),S(n,`[ExtensionBrowserLoader]`),{kind:`aborted`};let u=l(e.default,a(t.name));if(!be(u))return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" has invalid browser factory (${u.reason??`unknown resolution error`})`),{failed:!0,kind:`ok`,shell:r};let p=u.factory({bus:i});if(!p||typeof p!=`object`)return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" factory returned invalid contribution (expected object, got ${p===null?`null`:typeof p})`),{failed:!0,kind:`ok`,shell:r};p.destroy&&f.push(p.destroy),f.push(c(i,t.name,p));let m=r;return p.shell&&(m!==null&&console.warn(`[ExtensionBrowserLoader] Extension "${t.name}" replaces the previously registered shell (shell contributions are last-wins)`),m=p.shell.component),n.push(...f),{failed:!1,kind:`ok`,shell:m}}catch(e){return S(f,`[ExtensionBrowserLoader] ${t.name}`),console.error(`[ExtensionBrowserLoader] Failed to load extension "${t.name}":`,e),{failed:!0,kind:`ok`,shell:r}}}async function Te(e){let t=[];try{let n=await Ce(e,t);if(n.kind===`aborted`)return B();if(n.kind===`result`)return n.result;let r=0,i=null;for(let a of n.browserExtensions){let n=await H(e,a,t,i);if(n.kind===`aborted`)return B();i=n.shell,n.failed&&(r+=1)}return e.isCurrentRun()?i===null?r>0?V(t,`error`,null,`One or more extensions failed to load before providing workspace chrome.`):V(t,`empty`,null,null):V(t,`ready`,i,null):(S(t,`[ExtensionBrowserLoader]`),B())}catch(e){return console.error(`[ExtensionBrowserLoader] Failed to query extensions:`,e),V(t,`error`,null,e instanceof Error?e.message:String(e))}}const U=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},W=(e=>e?U(e):U),Ee=e=>e;function De(t,n=Ee){let r=e.useSyncExternalStore(t.subscribe,e.useCallback(()=>n(t.getState()),[t,n]),e.useCallback(()=>n(t.getInitialState()),[t,n]));return e.useDebugValue(r),r}const G=e=>{let t=W(e),n=e=>De(t,e);return Object.assign(n,t),n},Oe=(e=>e?G(e):G);function ke(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}const K=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return K(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return K(t)(e)}}}},q=(e,t)=>(n,r,i)=>{let a={storage:ke(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(e,t)=>(f(e,t),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return K(u.getItem.bind(u))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(r(),void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},J={length:0,clear:()=>{},getItem:()=>null,key:()=>null,removeItem:()=>{},setItem:()=>{}};function Ae(e){let t=`__makaio_storage_probe__`,n=n=>{let r=null,i=!1;try{return r=n.getItem(t),i=r!==null,n.setItem(t,`1`),!0}catch{return!1}finally{try{i&&r!==null?n.setItem(t,r):n.removeItem(t)}catch(t){console.warn(`[createPersistedStore] Storage probe cleanup failed`,{type:e,error:t})}}};try{return e===`localStorage`?typeof localStorage>`u`?J:n(localStorage)?localStorage:J:typeof sessionStorage>`u`?J:n(sessionStorage)?sessionStorage:J}catch{return J}}function Y(e,t){let{name:n,storage:r=`sessionStorage`,version:i,partialize:a,merge:o,extraPersistOptions:s}=t,c={name:n,storage:ke(()=>Ae(r)),...i===void 0?{}:{version:i},...a?{partialize:a}:{},...o?{merge:o}:{},...s};return Oe()(q(e,c))}const X={level:`root`,values:{}};function je(e){return{level:e.level,values:{...e.values}}}const Me=Y(e=>({windowId:null,uiContext:je(X),activePaneId:null,setWindowId:t=>e(e=>e.windowId!==null&&e.windowId!==t?{}:{windowId:t}),setUiContext:t=>e({uiContext:je(t),activePaneId:null}),setActivePaneId:t=>e({activePaneId:t}),clearUiContext:()=>e({uiContext:je(X),activePaneId:null})}),{name:`makaio-window-context`,storage:`sessionStorage`,partialize:e=>({uiContext:e.uiContext})}),Ne=Y(e=>({activePageId:null,internalRoute:null,openPage:(t,n)=>e({activePageId:t,internalRoute:n??null}),close:()=>e({activePageId:null,internalRoute:null}),navigate:t=>e(e=>({internalRoute:t,activePageId:e.activePageId}))}),{name:`makaio-page-overlay`,storage:`sessionStorage`});function Pe(e,t,n){return{collapsedByLevel:{...e.collapsedByLevel,[t]:n}}}const Fe=Y((e,t)=>({collapsedByLevel:{},isCollapsed:e=>t().collapsedByLevel[e]??!1,toggle:t=>e(e=>Pe(e,t,!(e.collapsedByLevel[t]??!1))),setCollapsed:(t,n)=>e(e=>Pe(e,t,n))}),{name:`makaio-sidebar`,storage:`localStorage`}),Ie={onboarding:{id:`onboarding`,name:`Welcome`,isPreset:!0},chat:{id:`chat`,name:`Chat`,isPreset:!0,quickPromptSuggestions:[`Help me understand this code`,`What are the key files in this project?`,`Explain the architecture`]},git:{id:`git`,name:`Git`,isPreset:!0,quickPromptSuggestions:[`Show recent commits`,`What changed in this branch?`,`Create a new branch`]},review:{id:`review`,name:`Code Review`,isPreset:!0,quickPromptSuggestions:[`Review this pull request`,`Show file differences`,`Add review comments`]},planning:{id:`planning`,name:`Planning`,isPreset:!0,quickPromptSuggestions:[`Break down this task`,`Create implementation plan`,`Estimate complexity`]},settings:{id:`settings`,name:`Settings`,isPreset:!0},dashboard:{id:`dashboard`,name:`Dashboard`,isPreset:!0,quickPromptSuggestions:[`Show recent projects`,`Open a workspace`,`Create a new project`]}},Le={activeFocus:Ie.chat},Re=Y((e,t)=>({activeFocus:Le.activeFocus,setActiveFocus:t=>{let n=Ie[t];if(!n){console.error(`[focusStore] Unknown focus preset id: ${t}`);return}e({activeFocus:n})},setActiveFocusContext:t=>{e({activeFocus:t})},setFocusContextLayout:n=>{let{activeFocus:r}=t();e({activeFocus:{...r,layout:n}})},getFocusContextLayout:()=>t().activeFocus.layout}),{name:`makaio-focus`,storage:`sessionStorage`});function ze(){return{version:1,widgets:[]}}function Be(e,t){return e.widgets.some(e=>e.widgetId===t.widgetId)?e:{...e,widgets:[...e.widgets,t]}}function Ve(e,t){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.filter(e=>e.widgetId!==t)}:e}function He(e,t,n){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.map(e=>e.widgetId===t?{...e,size:n}:e)}:e}function Ue(e,t,n){return e.widgets.some(e=>e.widgetId===t)?{...e,widgets:e.widgets.map(e=>e.widgetId===t?{...e,...n}:e)}:e}function We(){return Me(e=>e.uiContext.level)}const Ge=new Set([`http:`,`https:`]);function Ke(e){return e.on(f.navigate,e=>{let{url:t}=e.payload,n;try{n=new URL(t,window.location.href)}catch{throw Error(`[registerNavigationHandler] Invalid URL: ${t}`)}if(!Ge.has(n.protocol))throw Error(`[registerNavigationHandler] Unsafe URL protocol "${n.protocol}" in: ${t}`);let r=n.toString(),i=p(n.pathname+n.search+n.hash);window.open(r,i,`noopener,noreferrer`),e.setResult({action:`navigated`})},{priority:10})}function qe(e,t){let n=e.filter(e=>e.group!==void 0),r=new Map;for(let e of n){let t=e.group;r.has(t)||r.set(t,[]),r.get(t).push(e)}let i=[],a=new Set,o=[...t].sort((e,t)=>e.order-t.order);for(let e of o){let t=r.get(e.id)??[];i.push({config:e,pages:t}),a.add(e.id)}for(let[e,t]of r)if(!a.has(e)){let n={id:e,label:e,order:999};i.push({config:n,pages:t})}return i}function Je(e){let t=r(e=>b.subscribe(e),[]),n=r(()=>b.getAll(),[]);return x(l(t,n,n),e)}function Ye(e){let t=Je(e),n=Ne(e=>e.openPage),i=Ne(e=>e.activePageId),a=Re(e=>e.setActiveFocus),o=Re(e=>e.activeFocus.id),s=r(e=>_(e.mode)?()=>n(e.id):()=>{e.focusContext&&a(e.focusContext)},[n,a]);return t.map(e=>{let t;return t=e.isActive?e.isActive():_(e.mode)?i===e.id:e.focusContext?o===e.focusContext:!1,{...e,execute:s(e),isActive:t}})}function Xe(e,t){return e===void 0?!0:Array.isArray(e)?e.includes(t):e===t}function Ze(e){let t=Me(e=>e.windowId),n=Ye(e);return t?n.filter(e=>Xe(e.windowId,t)):n}function Qe(e,t=0){let i=r(t=>e===null?()=>void 0:b.subscribe(t),[e]),a=r(()=>{if(e!==null)return b.get(e)},[e]),s=l(i,a,a);return o(()=>{if(s)return{Component:n(s.component),definition:s}},[s,t])}const $e=[ne.changed],et={};function tt(){let{data:e,loading:t,error:n,refetch:r}=P({subject:ne.list,request:et,refetchOn:$e});return o(()=>({data:e?.triggers,loading:t,error:n,refetch:r}),[e,t,n,r])}function nt(e){let t=e.filter(e=>e.extensionManaged),n=new Map;for(let e of t)e.persistedEnabled===!1&&!e.critical&&n.set(e.name,!1);return{managed:t,initialDisables:n}}function rt(e){let t=[],n=e=>{t.push(y.register(e))};return n({id:`welcome`,title:`Welcome`,kaiState:`wave`,order:10,skippable:!1,component:e.WelcomeStep}),n({id:`clients`,title:`Clients`,kaiState:`neutral`,order:20,skippable:!0,component:e.ClientsStep}),n({id:`providers`,title:`Providers`,kaiState:`neutral`,order:25,skippable:!0,component:e.ProvidersStep}),n({id:`adapters`,title:`Tools`,kaiState:`neutral`,order:30,skippable:!0,component:e.AdaptersStep}),n({id:`preferences`,title:`Preferences`,kaiState:`smile`,order:35,skippable:!0,component:e.PreferencesStep}),n({id:`plugins`,title:`Plugins`,kaiState:`neutral`,order:40,skippable:!0,condition:e=>nt(e.extensions).managed.length>0,component:e.PluginsStep}),n({id:`done`,title:`All Set`,kaiState:`success`,order:50,skippable:!1,component:e.DoneStep}),()=>{for(let e of t)e()}}function it(e){try{return localStorage.getItem(e)===`true`}catch{return!1}}function at(e){try{localStorage.setItem(e,`true`)}catch{}}function ot(e){try{localStorage.removeItem(e)}catch{}}const st=`makaio-onboarding-skipped`;function ct(){return it(st)}function lt(){at(st)}function ut(){ot(st)}const dt=`makaio-onboarding-completed`;function ft(){return it(dt)}function pt(){at(dt)}function mt(){ot(dt)}function ht(e,t,n){return n.request(ee.setEnabled,{name:e,enabled:t})}function gt(e){let t=T.safeParse(e);if(!t.success)return null;let n=t.data;if(n.kind===`model`){let e=Z(n.adapterName),t=Z(n.model),r=Z(n.providerConfigId)??Z(n.providerId);return!e||!t?null:{kind:`adapter`,adapterName:e,model:t,...r?{providerConfigId:r}:{}}}if(n.kind===`virtualModel`){let e=Z(n.virtualModelId);return e?{kind:`virtual-model`,virtualModelId:e}:null}switch(n.kind){case`adapter`:{let e=Z(n.adapterName);if(!e)return null;let t=Z(n.model),r=Z(n.providerConfigId);return{kind:`adapter`,adapterName:e,...t?{model:t}:{},...r?{providerConfigId:r}:{}}}case`persona`:{let e=Z(n.personaId);return e?{kind:`persona`,personaId:e}:null}case`profile`:{let e=Z(n.profileId);return e?{kind:`profile`,profileId:e}:null}case`virtual-model`:{let e=Z(n.virtualModelId);return e?{kind:`virtual-model`,virtualModelId:e}:null}default:return null}}function _t(e){return e.kind===`adapter`?typeof e.adapterName==`string`&&e.adapterName.trim().length>0&&typeof e.providerConfigId==`string`&&e.providerConfigId.trim().length>0&&typeof e.model==`string`&&e.model.trim().length>0:!0}function Z(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null}function vt(e,t){if(typeof e==`object`&&e&&`defaultSelection`in e){let n=e.defaultSelection;if(n==null)return t;let r=gt(n);return r===null?t:{...t,defaultSelection:r}}return t}const yt=Y(e=>({defaultSelection:null,setDefaultSelection:t=>e({defaultSelection:t})}),{name:`makaio-app-context`,storage:`localStorage`,merge:vt});async function bt(){let[{configs:e},{configs:t},{providers:n}]=await Promise.all([E.request(D.listProviderConfigs,{enabled:!0}),E.request(D.listAdapterConfigs,{}),E.request(A.list,{})]),r=new Map(n.map(e=>[e.id,e])),i=new Map;for(let e of t){if(!e.enabled)continue;let t=e.displayName??e.name;for(let n of e.bindings){let e={adapterName:n.adapterName,displayLabel:t},r=i.get(n.providerConfigId);r?r.push(e):i.set(n.providerConfigId,[e])}}return e.map(e=>({providerConfigId:e.id,definitionId:e.definitionId,name:e.name,availableModels:r.get(e.definitionId)?.availableModels??[],isDefault:e.isDefault,enabled:e.enabled,modelFilterMode:e.modelFilterMode,modelVisibility:e.modelVisibility,boundAdapters:i.get(e.id)??[]}))}const xt=Oe((e,t)=>({providers:[],isLoading:!1,error:null,_fetchPromise:null,_hasFetched:!1,_fetchGeneration:0,fetchProviders:async()=>{let n=t();if(n._hasFetched&&!n.isLoading)return Promise.resolve();if(n._fetchPromise)return n._fetchPromise;let r=t()._fetchGeneration;e({isLoading:!0,error:null});let i=bt().then(e=>{t()._fetchGeneration===r&&(console.debug(`[providerStore] providers:`,e.map(e=>({providerConfigId:e.providerConfigId,definitionId:e.definitionId,name:e.name}))),t().setProviders(e))}).catch(e=>{if(t()._fetchGeneration!==r)return;let n=e instanceof Error?e:Error(String(e));t().setError(n)}).finally(()=>{e(e=>e._fetchPromise===i?{_fetchPromise:null}:{})});return e({_fetchPromise:i}),i},invalidate:()=>{e(e=>({_hasFetched:!1,_fetchPromise:null,_fetchGeneration:e._fetchGeneration+1,isLoading:!1}))},setProviders:t=>{e({providers:t,isLoading:!1,error:null,_hasFetched:!0})},setError:t=>{e({error:t,isLoading:!1})}}));async function Q(){let[{clients:e},{adapters:t}]=await Promise.all([E.request(ae.list,{}),E.request(O.adapter.list,{})]),n=e.filter(e=>e.enabled&&e.binary!==void 0).map(e=>({id:e.id,name:e.name,binary:e.binary.name,supportedVersions:e.binary.supportedVersions}));if(n.length===0)return null;let{results:r}=await E.request(j.scan,{targets:n.map(e=>({clientId:e.id,binaryName:e.binary,supportedVersions:e.supportedVersions}))}),i=new Map(r.map(e=>[e.clientId,e])),a=n.map(e=>{let t=i.get(e.id);return{id:e.id,name:e.name,binary:e.binary,found:t?.found??!1,version:t?.version,warningMessage:t?.warningMessage}}),o=new Map;for(let e of t){if(!e.clientId)continue;let t=o.get(e.clientId);t?t.push(e.adapterName):o.set(e.clientId,[e.adapterName])}return{scannedClients:a,adaptersByClientId:o}}function St(e){let{scannedClients:t,adaptersByClientId:n}=e,r=[];for(let e of t){let t=n.get(e.id);if(t?.length)for(let n of t)r.push({adapterName:n,displayName:e.name,binary:e.binary,found:e.found,version:e.version,warningMessage:e.warningMessage})}return r}function Ct(e){let t=e.toLowerCase();return t.includes(`cli`)?0:t.includes(`sdk`)?1:2}function wt(e){let{scannedClients:t,adaptersByClientId:n}=e,r=[];for(let e of t){let t=(n.get(e.id)??[]).sort((e,t)=>{let n=Ct(e),r=Ct(t);return n===r?e.localeCompare(t):n-r});r.push({clientId:e.id,name:e.name,binary:e.binary,found:e.found,version:e.version,warningMessage:e.warningMessage,adapterNames:t})}return r}async function Tt(){let e=await Q();return e?St(e):[]}async function Et(){let e=await Q();return e?wt(e):[]}async function Dt(){let e=await Q();return e?{adapters:St(e),clients:wt(e)}:{adapters:[],clients:[]}}function Ot(e,t){return{...e,supportedProtocols:t==null?[]:Object.keys(t.endpoints??{})}}async function kt(e,t={}){let[{configs:n},{providers:r}]=await Promise.all([e.request(D.listProviderConfigs,t),e.request(A.list,{})]),i=new Map(r.map(e=>[e.id,e]));return n.map(e=>Ot(e,i.get(e.definitionId)))}async function At(e,t){let{config:n}=await e.request(D.getProviderConfig,{id:t});if(n===null)return null;let{provider:r}=await e.request(A.get,{id:n.definitionId});return Ot(n,r)}async function jt(e,t){let{options:n}=await e.request(D.listCompatibleAuthOptions,{definitionId:t});return n}function Mt(e){return e.mode===`explicit`?Object.fromEntries(e.fields.map(({id:e})=>[e,{source:`stored`,value:``}])):{}}function Nt(e,t={},n){if(e.mode===`explicit`){if(n)throw Error(`Explicit authentication cannot select a native account.`);let r=new Map(e.fields.map(e=>[e.id,e])),i=Object.keys(t).find(e=>!r.has(e));if(i)throw Error(`Authentication field "${i}" is not declared by method "${e.method.methodId}".`);let a={};for(let n of e.fields){let e=t[n.id];if(!e||e.source===`stored`&&e.value.length===0){if(n.required)throw Error(`Complete the required field: ${n.label}.`);continue}if(e.source===`environment`&&!n.sourceHints.some(t=>t.kind===`environment`&&t.variable===e.variable))throw Error(`Environment source "${e.variable}" is not declared for authentication field "${n.id}".`);a[n.id]=e}return{mode:e.mode,method:{...e.method},fields:a}}if(Object.keys(t).length>0)throw Error(`${e.mode} authentication cannot contain credential fields.`);if(e.mode===`inferred`)return{mode:e.mode,method:{...e.method},...n?{account:{...n}}:{}};if(n)throw Error(`No-auth authentication cannot select a native account.`);return{mode:e.mode,method:{...e.method}}}function Pt(e){return e.owner===`provider`?`provider:${e.providerDefinitionId}:${e.methodId}`:`client:${e.clientId}:${e.methodId}`}function Ft(e,t){if(e.mode!==`explicit`)return{auth:se.parse(e.mode===`inferred`?{mode:e.mode,method:{...e.method},...e.account?{account:{...e.account}}:{}}:{mode:e.mode,method:{...e.method}}),storedCredentials:{}};let n={},r={};for(let[i,a]of Object.entries(e.fields)){if(a.source===`environment`){n[i]=oe.parse(`env:${a.variable}`);continue}if(!t)throw Error(`Stored authentication fields require the final provider-config ID.`);if(a.value.length===0)throw Error(`Stored authentication field "${i}" cannot be empty.`);n[i]=ce(t,i),r[i]=a.value}return{auth:se.parse({mode:e.mode,method:{...e.method},credentialRefs:n}),storedCredentials:r}}function It(e){return e.mode===`explicit`&&Object.values(e.fields).some(({source:e})=>e===`stored`)}let $=null;function Lt(e){if($===null)$={creator:e,count:1};else if($.creator===e)$.count+=1;else throw Error(`useOnboardingFlow: only one host-owned create bridge may be registered at a time.`);return()=>Rt(e)}function Rt(e){if($?.creator===e){if($.count===1){$=null;return}--$.count}}function zt(e){return e}function Bt(e){try{pt()}catch(e){console.error(`[useOnboardingFlow] Failed to persist completion flag:`,e)}finally{e()}}async function Vt(e,t,n,r){try{(await ht(e,t,n)).outcome===`rejected`&&console.error(`[useOnboardingFlow] ${r} for ${e} was rejected; the extension keeps its previous preference.`)}catch(t){console.error(`[useOnboardingFlow] Failed to persist ${r.toLowerCase()} for ${e}:`,t)}}async function Ht(e,t){let n=$?.creator??null;if(n){let r=await n(E,e);return await t(),r}if(It(e.auth))throw Error(`useOnboardingFlow: plaintext provider-config creation requires a host-owned create bridge.`);let{auth:r}=Ft(e.auth),{auth:i,...a}=e,{config:o}=await E.request(D.createProviderConfig,{...a,auth:r});return await t(),o.id}async function Ut(e){let t=await E.requestOptional(D.getDefaultBinding,{adapterName:e});if(!t.handled||!t.data.binding)return;let{binding:n}=t.data;return k(E,{adapterName:n.adapterName,providerConfigId:n.providerConfigId})}function Wt({context:e,onComplete:t,onSkip:n}){let{setDefaultSelection:i}=yt(),l=N(),u=o(()=>nt(e.extensions),[e.extensions]),[d]=c(()=>{let t=zt(y.getAll());return Object.freeze(t.filter(t=>t.condition===void 0||t.condition(e)))}),[f,p]=c(0),[h,_]=c(e.adapters),[v,b]=c(()=>new Set(e.adapters.filter(e=>e.enabled).map(e=>e.adapterName))),[x,S]=c(()=>new Map),[C,w]=c(()=>new Map),[T,ne]=c(null),[k,ae]=c(()=>u.managed),[A,j]=c(()=>u.initialDisables),[oe,se]=c([]),[ce,M]=c(!1),[le,ue]=c(null),[P,F]=c(()=>new Set),[de,fe]=c([]),[pe,me]=c([]),[he,ge]=c([]),_e=s(0),I=s(0),L=s(new Map),R=s(new Map);a(()=>{let e=++_e.current,t=()=>_e.current===e;(async()=>{try{let e=await E.request(ee.list,{});if(!t())return;let{managed:n,initialDisables:r}=nt(e.extensions);ae(n),j(r)}catch(e){if(!t())return;console.error(`[useOnboardingFlow] Failed to load extension list:`,e)}})()},[]),a(()=>()=>{for(let e of L.current.values())e.abort();L.current.clear()},[]);let z=r(async()=>{let{adapters:e}=await E.request(O.adapter.list,{});_(e),b(new Set(e.filter(e=>e.enabled).map(e=>e.adapterName)))},[]),ve=r(async e=>{(await E.request(O.adapter.setEnabled,{adapterName:e,enabled:!0})).success&&(await z(),xt.getState().invalidate())},[z]),ye=r(async e=>{(await E.request(O.adapter.setEnabled,{adapterName:e,enabled:!1})).success&&(b(t=>{let n=new Set(t);return n.delete(e),n}),await z(),xt.getState().invalidate())},[z]),be=r(async e=>{S(t=>new Map([...t,[e,{status:`pending`}]])),L.current.get(e)?.abort();let t=new AbortController;L.current.set(e,t);let n=()=>{L.current.get(e)===t&&L.current.delete(e)},r;try{r=(await E.request(re.resolveId,{adapterName:e},{signal:t.signal})).adapterId}catch(r){if(n(),t.signal.aborted)return{status:`pending`};let i={status:`error`,message:`Could not resolve adapter "${e}": ${r instanceof Error?r.message:String(r)}`};return S(t=>new Map([...t,[e,i]])),i}try{if(t.signal.aborted)return{status:`pending`};let n=await Ut(e);if(t.signal.aborted)return{status:`pending`};let i=Date.now(),a={adapterId:r,prompt:`Reply with the single word: OK`,...n&&{providerContext:n}};if(await E.request(te.infer,a,{timeout:3e4,signal:t.signal}),t.signal.aborted)return{status:`pending`};let o={status:`success`,durationMs:Date.now()-i};return S(t=>new Map([...t,[e,o]])),o}catch(n){if(t.signal.aborted)return{status:`pending`};let r={status:`error`,message:n instanceof Error?n.message:String(n)};return S(t=>new Map([...t,[e,r]])),r}finally{n()}},[]),xe=r((e,t)=>{w(n=>new Map([...n,[e,t]]))},[]),B=r(e=>{ne(e)},[]),Se=r(async()=>{let e=++I.current;M(!0),ue(null);try{let{adapters:t,clients:n}=await Dt();if(I.current!==e)return;se(t),fe(n);let r=new Set(n.filter(e=>e.found).map(e=>e.clientId));F(e=>e.size===0?r:new Set([...e].filter(e=>r.has(e))))}catch(t){if(I.current!==e)return;let n=t instanceof Error?t:Error(String(t));throw ue(n),n}finally{I.current===e&&M(!1)}},[]),V=r((e,t)=>{let n=(R.current.get(e)??0)+1;R.current.set(e,n);let r=()=>R.current.get(e)===n,i;j(n=>(i=n.get(e),new Map([...n,[e,t]])));let a=()=>{j(t=>{let n=new Map(t);return i===void 0?n.delete(e):n.set(e,i),n})};ht(e,t,l).then(e=>{e.outcome===`rejected`&&r()&&a()}).catch(t=>{console.error(`[useOnboardingFlow] Failed to persist plugin toggle for ${e}:`,t),r()&&a()})},[l]),Ce=r(e=>F(t=>new Set([...t,e])),[]),we=r(e=>{F(t=>{let n=new Set(t);return n.delete(e),n})},[]),H=r(async()=>{me(await kt(E))},[]),Te=r(async e=>Ht(e,H),[H]),U=r(async e=>{await E.request(D.deleteProviderConfig,{id:e}),await H(),ge(t=>t.filter(t=>t.providerConfigId!==e))},[H]),W=r(async e=>{let{bindings:t}=await E.request(D.listBindings,{adapterName:e});ge(n=>[...n.filter(t=>t.adapterName!==e),...t])},[]),Ee=r(async(e,t)=>{await E.request(D.bind,{adapterName:e,providerConfigId:t}),await W(e)},[W]),De=r(async(e,t)=>{await E.request(D.unbind,{adapterName:e,providerConfigId:t}),await W(e)},[W]),G=r(async(e,t)=>{await E.request(D.setDefaultBinding,{adapterName:e,providerConfigId:t}),await W(e)},[W]),Oe=o(()=>({enableAdapter:ve,disableAdapter:ye,runHealthCheck:be,setLogImportMode:xe,setDefaultAgent:B,refreshAdapterList:z,togglePlugin:V,scan:Se,selectClient:Ce,deselectClient:we,createProviderConfig:Te,deleteProviderConfig:U,bindProvider:Ee,unbindProvider:De,setDefaultProvider:G,refreshProviderConfigs:H,refreshBindings:W}),[ve,ye,be,xe,B,z,V,Se,Ce,we,Te,U,Ee,De,G,H,W]),ke=r(()=>{p(e=>Math.min(e+1,d.length-1))},[d.length]),K=r(()=>{p(e=>Math.max(e-1,0))},[]),q=r(async e=>{T&&i(T);let t=Array.from(C.entries());if(await Promise.all(t.map(async([e,t])=>{try{await E.request(ie.setMode,{adapterName:e,mode:t},{timeout:8e3})}catch(t){console.error(`[useOnboardingFlow] Failed to persist log import mode for ${e}:`,t)}})),await Promise.all(Array.from(A.entries()).map(([e,t])=>Vt(e,t,l,`Extension state`))),e){let e=k.filter(e=>!A.has(e.name)&&!e.critical).map(e=>({name:e.name,defaultEnabled:m(g(e.name))}));await Promise.all(e.map(({name:e,defaultEnabled:t})=>Vt(e,t,l,`Default extension state`)))}},[l,C,T,i,k,A]),J=r(async()=>{try{await q(!1)}catch(e){console.error(`[useOnboardingFlow] Failed to persist selections on skip:`,e)}finally{n()}},[q,n]),Ae=r(async()=>{try{await q(!0)}catch(e){console.error(`[useOnboardingFlow] Failed to persist selections on complete:`,e)}finally{Bt(t)}},[q,t]),Y=o(()=>({adapters:h,enabledAdapterNames:v,healthCheckResults:x,logImportSelections:C,defaultAgentSelection:T,extensions:k,pluginEnabledStates:A,scanAdapters:oe,isScanning:ce,scanError:le,scanClients:de,selectedClientIds:P,providerConfigs:pe,adapterProviderBindings:he}),[h,v,x,C,T,k,A,oe,ce,le,de,P,pe,he]),X=d[f]??d[0];if(X===void 0)throw Error(`useOnboardingFlow: no active steps found. Call registerCoreOnboardingSteps() before mounting the onboarding flow.`);return{activeSteps:d,currentStepIndex:f,currentStep:X,flowState:Y,actions:Oe,goNext:ke,goBack:K,skip:J,complete:Ae}}const Gt=Object.assign(Wt,{registerCreateProviderConfig:Lt,unregisterCreateProviderConfig:Rt});function Kt(e){let t=N(),[n,r]=c([]),[i,o]=c(!1),[s,l]=c(null);return a(()=>{let n=!0;return e?(o(!0),l(null),jt(t,e).then(e=>{n&&r(e)}).catch(e=>{n&&(r([]),l(e instanceof Error?e:Error(String(e))))}).finally(()=>{n&&o(!1)}),()=>{n=!1}):(r([]),o(!1),l(null),()=>{n=!1})},[t,e]),{options:n,isLoading:i,error:s}}export{M as BusContext,le as BusProvider,Be as addWidgetToFocusLayout,It as authDraftRequiresStorage,Pt as authMethodRefKey,Nt as buildProviderConfigAuthDraft,Q as buildScanContext,mt as clearOnboardingCompleted,ut as clearOnboardingSkipped,Ft as compileProviderConfigAuthDraft,ze as createEmptyFocusContextLayout,Mt as createInitialAuthFieldDrafts,Y as createPersistedStore,ft as getOnboardingCompleted,ct as getOnboardingSkipped,At as getProviderConfigDetailView,qe as groupPagesByNavigationGroup,_t as isPersistableProjectSelection,jt as listCompatibleAuthOptions,kt as listProviderConfigSummaryViews,Te as loadExtensionBrowserContributions,J as noopStorage,gt as parsePersistedAgentSelection,ht as persistPluginEnabled,rt as registerCoreOnboardingSteps,Ke as registerNavigationHandler,Ve as removeWidgetFromFocusLayout,Dt as scanOnboarding,Tt as scanOnboardingAdapters,Et as scanOnboardingClients,pt as setOnboardingCompleted,lt as setOnboardingSkipped,Ue as updateFocusContextWidgetPosition,He as updateFocusContextWidgetSize,yt as useAppContext,tt as useAutomationTriggerTypes,N as useBus,de as useBusEvent,P as useBusQuery,Kt as useCompatibleAuthOptions,Re as useFocusStore,We as useNavigationLevel,Gt as useOnboardingFlow,ue as useOptionalBus,Qe as usePageComponent,Je as usePageDefinitions,Ne as usePageOverlayStore,Ye as usePages,xt as useProviderStore,Fe as useSidebarStore,ve as useTrayLayout,_e as useWidgetConfig,I as useWidgetLayout,R as useWidgetLayoutActions,he as useWidgetRegistry,me as useWidgets,Me as useWindowContext,Ze as useWindowIdPages};
@@ -1,4 +1,4 @@
1
- import { r as PageSurfaceConfig, s as SurfaceId } from "../schemas-LiiyNNpr.mjs";
1
+ import { r as PageSurfaceConfig, s as SurfaceId } from "../schemas-Cl7fPlRv.mjs";
2
2
  import * as _$zod from "zod";
3
3
  import { z } from "zod";
4
4
  import * as _$_makaio_core0 from "@makaio/framework/core";
@@ -2745,10 +2745,19 @@ interface PluginCategory {
2745
2745
  declare const PLUGIN_CATEGORIES: ReadonlyArray<PluginCategory>;
2746
2746
  /**
2747
2747
  * Derive the initial enabled state for a plugin based on its category.
2748
+ *
2749
+ * A `critical` extension is always treated as enabled by default, regardless
2750
+ * of which category it falls into (including the synthetic "Other" category
2751
+ * a critical extension outside every declared category would otherwise land
2752
+ * in with `defaultEnabled: false`): the kernel force-starts it on every boot
2753
+ * and refuses to persist a disable for it, so a default-derivation that
2754
+ * disagreed would only misrepresent a state the kernel can never actually
2755
+ * apply.
2748
2756
  * @param category - The category this plugin belongs to
2757
+ * @param critical - Whether the plugin is a `critical` extension
2749
2758
  * @returns True when the plugin should be toggled on by default
2750
2759
  */
2751
- declare function deriveDefaultEnabled(category: PluginCategory): boolean;
2760
+ declare function deriveDefaultEnabled(category: PluginCategory, critical?: boolean): boolean;
2752
2761
  /**
2753
2762
  * Find which category a plugin belongs to, or return a synthetic "Other" category
2754
2763
  * when the plugin name is not listed in any known category.
@@ -1 +1 @@
1
- import{PageSubjects as e}from"./pages/namespace.mjs";import{z as t}from"zod";import{isRecord as n}from"@makaio/framework/utils";import{createBusNamespace as r}from"@makaio/framework/core";import{localSubject as i}from"@makaio/framework/bus";import{KernelSubjects as a}from"@makaio/framework/kernel";const o=new class{scopes=new Map([[`global`,{label:`Global`,description:`Available in global UI contexts`}],[`any`,{label:`Any`,description:`Available in every UI context`}]]);listeners=new Set;register(e,t){if(this.scopes.has(e)){console.warn(`Widget scope '${e}' already registered`);return}this.scopes.set(e,t),this.notify()}has(e){return this.scopes.has(e)}getAll(){return new Map(this.scopes)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.listeners.forEach(e=>e())}};function s(e,t,n=!0){let r=Array.isArray(e)?e:[e];return r.includes(t)||n&&r.includes(`any`)}const c=Object.freeze({level:`root`,values:Object.freeze({})});function l(e){return e}const u=new Set([`small`,`medium`,`large`,`full-width`]);function d(e){return typeof e==`number`&&Number.isFinite(e)}function f(e){return!n(e)||typeof e.instanceId!=`string`||typeof e.widgetId!=`string`||!d(e.col)||!d(e.row)||typeof e.size!=`string`||!u.has(e.size)||e.w!==void 0&&!d(e.w)||e.h!==void 0&&!d(e.h)||e.locked!==void 0&&typeof e.locked!=`boolean`?!1:e.config===void 0||n(e.config)}function p(e){return!n(e)||e.version!==1||!Array.isArray(e.placements)?!1:e.placements.every(e=>f(e))}var m=class{items=new Map;listeners=new Set;subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){let e,t=!1;if(this.listeners.forEach(n=>{try{n()}catch(n){t||=(e=n,!0)}}),t)throw e}has(e){return this.items.has(e)}size(){return this.items.size}},h=class extends m{cachedAll=null;register(e){return this.items.has(e.id)?!1:(this.items.set(e.id,l(e)),this.cachedAll=null,this.notify(),!0)}registerAll(e){e.forEach(e=>this.register(e))}get(e){return this.items.get(e)}getAll(){return this.cachedAll===null&&(this.cachedAll=Object.freeze(Array.from(this.items.values()))),this.cachedAll}getByScope(e,t=!0){return this.getAll().filter(n=>s(n.scope,e,t))}unregister(e){let t=this.items.delete(e);return t&&(this.cachedAll=null,this.notify()),t}clear(){this.items.size!==0&&(this.items.clear(),this.cachedAll=null,this.notify())}};const g=new h,_=t.string(),v=t.enum([`small`,`medium`,`large`,`full-width`]),ee=t.object({pageId:t.string().optional(),windowId:t.string().optional(),onActivate:t.unknown().refine(e=>typeof e==`function`,{message:`onActivate must be a function`}).optional()}),y=t.object({id:t.string(),name:t.string(),scope:t.union([_,t.array(_)]),description:t.string().optional(),supportedSizes:t.array(v),defaultSize:v,component:t.unknown().refine(e=>e!==void 0,{message:`component is required`}),defaultConfig:t.unknown().optional(),allowMultiple:t.boolean().optional(),activate:ee.optional()}),b=t.object({widgetId:t.string()}),x=t.object({widgetId:t.string(),instanceId:t.string()}),S=t.object({scope:_.optional()}),C=t.object({widgets:t.array(y)}),w={register:i(y),unregister:i(b),list:i({request:S,response:C}),activated:i(x)},te={register:y,unregister:b,list:{request:S,response:C},activated:x},T=r(`widget`,w),E=T.subjects,ne=480,re=500,ie=8,ae=2,oe=60,D=[8,8],se=464,O={small:1,medium:2,large:3,"full-width":4},ce=Object.freeze([]);function le(e,t=ce){let n=e.filter(e=>s(e.scope,`tray`,!1)),r=new Set(t),i=new Map(n.map(e=>[e.id,e])),a=1,o=[],c=new Set;for(let e of t){if(c.has(e))continue;c.add(e);let t=i.get(e);if(!t)continue;let n=t.trayDefaultSize??t.defaultSize,r=O[n];o.push({col:1,h:r,instanceId:`tray:locked:${e}`,locked:!0,row:a,size:n,w:2,widgetId:e}),a+=r}for(let e of n){if(r.has(e.id))continue;let t=e.trayDefaultSize??e.defaultSize,n=O[t];o.push({col:1,h:n,instanceId:`tray:item:${e.id}`,row:a,size:t,w:2,widgetId:e.id}),a+=n}return{placements:o,version:1}}function k(e,t){return g.register(t)?(e.emit(E.register,{id:t.id,name:t.name,scope:t.scope,description:t.description,supportedSizes:t.supportedSizes,defaultSize:t.defaultSize,component:t.component,defaultConfig:t.defaultConfig,allowMultiple:t.allowMultiple,activate:t.activate}).catch(e=>{console.error(`[widget-register] Failed to emit register for "${t.id}":`,e)}),!0):!1}function ue(e,t){return t.flatMap(t=>k(e,t)?[t.id]:[])}function A(e,t){return g.unregister(t)?(e.emit(E.unregister,{widgetId:t}).catch(e=>{console.error(`[widget-register] Failed to emit unregister for "${t}":`,e)}),!0):!1}const j=new WeakMap;function de(e){let t=j.get(e);if(t)return t.refCount+=1,()=>{--t.refCount,t.refCount===0&&(t.cleanup(),j.delete(e))};let n=[];n.push(e.on(E.register,e=>{let t=e.payload;g.has(t.id)||g.register(t)})),n.push(e.on(E.unregister,e=>{g.unregister(e.payload.widgetId)})),n.push(e.on(E.list,e=>{let{scope:t}=e.payload,n=t?g.getByScope(t):Array.from(g.getAll());e.setResult({widgets:n})}));let r=()=>n.forEach(e=>e()),i={cleanup:r,refCount:1};return j.set(e,i),()=>{--i.refCount,i.refCount===0&&(r(),j.delete(e))}}const M=new Map;function N(e){if(typeof e!=`string`)throw Error(`Extension name must be a non-empty string.`);let t=e.trim();if(t.length===0)throw Error(`Extension name must be a non-empty string.`);return t}function fe(e,t){let n=N(e);if(typeof t!=`function`)throw Error(`Browser factory must be a function.`);let r=M.get(n);if(r!==void 0&&r!==t)throw Error(`Browser factory already registered for extension "${n}".`);M.set(n,t)}function P(e){let t=N(e);M.delete(t)}function F(){M.clear()}function I(e){let t=N(e);return M.get(t)}function L(e,t){let n=R(e)?e:t;return n===void 0?{kind:`invalid`,reason:`expected function, got default export ${typeof e} and registry fallback ${t===void 0?`undefined`:typeof t}`}:{kind:`resolved`,factory:n}}function R(e){return typeof e==`function`}function z(e,t){for(let n of[...e].reverse())try{n()}catch(e){console.error(`${t} Cleanup failed:`,e)}}function B(e,t){return e===`any`||t===`any`?!0:e===t}function V(e,t){return e.surface?e.surface.surfaces?e.surface.surfaces.includes(t):!1:!0}function H(e,t={}){let{mode:n,level:r,group:i,surface:a,includeHidden:o=!1}=t;return e.filter(e=>{if(n&&e.mode!==n||r&&!B(e.level,r)||i&&e.group!==i||a&&!V(e,a))return!1;if(!o&&e.when)try{if(!e.when())return!1}catch(t){return console.warn(`[PageDefinitionRegistry] Page "when" callback threw, hiding page.`,{pageId:e.id,error:t}),!1}return!0})}function pe(e){if(e)return Object.freeze({...e,...e.surfaces?{surfaces:Object.freeze([...e.surfaces])}:{},...e.requiredCapabilities?{requiredCapabilities:Object.freeze([...e.requiredCapabilities])}:{}})}function me(e){if(!e.id||typeof e.id!=`string`)throw Error(`PageDefinition must have a non-empty string id`);if(!e.name||typeof e.name!=`string`)throw Error(`PageDefinition "${e.id}" must have a non-empty name`);if(e.mode!==`switch`&&e.mode!==`peek`&&e.mode!==`cover`&&e.mode!==`sheet`)throw Error(`PageDefinition "${e.id}" must have mode 'switch', 'peek', 'cover', or 'sheet'`);if(typeof e.level!=`string`||e.level.trim().length===0)throw Error(`PageDefinition "${e.id}" must have a non-empty level`);if(typeof e.component!=`function`)throw Error(`PageDefinition "${e.id}" must have a component loader function`);if(e.surface){let t=e.surface.surfaces,n=e.surface.requiredCapabilities;if(t!==void 0==(n!==void 0))throw Error(`PageDefinition "${e.id}" surface must specify exactly one of "surfaces" or "requiredCapabilities"`);if(t&&t.length===0)throw Error(`PageDefinition "${e.id}" surface.surfaces must be a non-empty array`);if(n&&n.length===0)throw Error(`PageDefinition "${e.id}" surface.requiredCapabilities must be a non-empty array`)}}var U=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`PageDefinition "${e.id}" is already registered`);me(e);let t=Object.freeze({order:50,group:`navigate`,...e,surface:pe(e.surface)});return this.items.set(t.id,t),this.invalidateCache(),this.notify(),()=>{this.items.get(t.id)===t&&this.unregister(t.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>(e.order??50)-(t.order??50))),this.cachedAll}query(e={}){return H(this.getAll(),e)}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const W=new U;function he(e){o.has(e.scope)||console.warn(`[PageRegistry] Page "${e.id}" uses unregistered scope "${e.scope}". Consider registering it via widgetScopeRegistry.`);let t=new Set(e.slots.map(e=>e.id));for(let n of Object.keys(e.defaultContent))if(!t.has(n))throw Error(`Page "${e.id}" has defaultContent for slot "${n}" but slot is not declared in slots array`);if(t.size!==e.slots.length)throw Error(`Page "${e.id}" has duplicate slot IDs`);for(let t of e.slots){if(t.minColumnWidth<=0)throw Error(`Slot "${t.id}" in page "${e.id}" has invalid minColumnWidth (must be > 0)`);if(t.maxColumns<=0)throw Error(`Slot "${t.id}" in page "${e.id}" has invalid maxColumns (must be > 0)`);if(t.acceptsSizes.length===0)throw Error(`Slot "${t.id}" in page "${e.id}" has empty acceptsSizes array`)}for(let[t,n]of Object.entries(e.defaultContent))if(n)for(let r of n){if(!r.instanceId)throw Error(`Page "${e.id}" slot "${t}" has placement missing instanceId`);if(r.content.type===`widget`&&!r.content.widgetId)throw Error(`Page "${e.id}" slot "${t}" has widget placement with empty widgetId`);if(r.content.type===`view`&&!r.content.viewId)throw Error(`Page "${e.id}" slot "${t}" has view placement with empty viewId`)}}var G=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`Page "${e.id}" is already registered`);if(e.route!==void 0){for(let t of this.items.values())if(t.route===e.route)throw Error(`Route "${e.route}" is already registered by page "${t.id}"`)}return he(e),this.items.set(e.id,e),this.invalidateCache(),this.notify(),()=>{this.items.get(e.id)===e&&this.unregister(e.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll===null&&(this.cachedAll=Object.freeze(Array.from(this.items.values()))),this.cachedAll}getRoutablePages(){return this.getAll().filter(e=>e.route!==void 0)}getByScope(e,t=!0){return this.getAll().filter(n=>n.scope===e||t&&n.scope===`any`)}getByLevel(e,t=!0){return this.getAll().filter(n=>n.level===e||t&&(n.level===`any`||n.level===void 0))}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.size!==0&&(this.items.clear(),this.invalidateCache(),this.notify())}invalidateCache(){this.cachedAll=null}};const K=new G;function ge(e,t,n){let r=[];try{if(n.pages)for(let e of n.pages)r.push(K.register(e));if(n.pageDefinitions)for(let e of n.pageDefinitions)r.push(W.register(e));return n.widgets&&n.widgets.forEach(n=>{k(e,n)?r.push(()=>A(e,n.id)):console.warn(`[registerExtensionUI] Widget "${n.id}" from extension "${t}" was already registered.`)}),()=>z(r,`[registerExtensionUI] ${t}`)}catch(e){throw z(r,`[registerExtensionUI] ${t}`),e}}const q=`#0d1117`,_e=`#e9eaed`,ve=`system-ui, sans-serif`;function ye(e,t=3e4){let n=!1,r,i,o=()=>{},s,c=new Promise((e,t)=>{r=e,i=e=>t(e)}),l=()=>{s!==void 0&&(clearTimeout(s),s=void 0)},u=()=>{n||(n=!0,l(),o(),r(`ready`))},d=()=>{n||(n=!0,l(),o(),r(`cancelled`))},f=()=>{n||(n=!0,l(),o(),r(`timeout`))},p=e=>{n||(n=!0,l(),o(),i(e instanceof Error?e:Error(String(e))))};return t>0&&(s=setTimeout(f,t)),o=e.on(a.ready,()=>{u()}),(async()=>{try{let t=await e.requestOptional(a.isReady,{});if(n)return;t.handled&&t.data.ready&&u()}catch(e){p(Error(`[waitForRuntimeReady] Readiness probe failed`,{cause:e}))}})(),{cleanup:d,ready:c}}function be(e){return e===`peek`||e===`cover`||e===`sheet`}var J=class extends m{cachedByParent=null;register(e){let t=this.makeKey(e.parentPageId,e.id);return this.items.has(t)?()=>void 0:(this.items.set(t,e),this.invalidateCache(),this.notify(),()=>{this.items.get(t)===e&&this.unregister(e.parentPageId,e.id)})}get(e,t){let n=this.makeKey(e,t);return this.items.get(n)}getByParent(e){this.cachedByParent||=new Map;let t=this.cachedByParent.get(e);return t||(t=Array.from(this.items.values()).filter(t=>t.parentPageId===e).sort((e,t)=>(e.order??100)-(t.order??100)),this.cachedByParent.set(e,t)),t}getByParentAndCategory(e,t){return this.getByParent(e).filter(e=>e.category===t)}unregister(e,t){let n=this.makeKey(e,t),r=this.items.delete(n);return r&&(this.invalidateCache(),this.notify()),r}clear(){this.items.clear(),this.invalidateCache(),this.notify()}makeKey(e,t){return`${e}:${t}`}invalidateCache(){this.cachedByParent=null}};const xe=new J;function Se(t){return t.on(e.list,e=>{let{surface:t}=e.payload,n=W.query(t?{surface:t}:{});e.setResult({pages:n.map(e=>({id:e.id,name:e.name,description:e.description,mode:e.mode,level:e.level,surfaces:e.surface===void 0?`all`:e.surface.surfaces?[...e.surface.surfaces]:void 0}))})})}function Ce(e,t){return`page-layout:${e}:${t.contextId!==null&&t.contextId!==void 0?`${t.scope}:${t.contextId}`:t.scope}`}const we={layout:`page-layout`,slotState:`page-slot-state`,editMode:`page-edit-mode`},Te=new Set([`focus`,`page`,`command`,`callback`,`external`]);function Ee(e){if(!e.id||typeof e.id!=`string`)throw Error(`NavigationTarget must have a non-empty string id`);if(!e.label||typeof e.label!=`string`)throw Error(`NavigationTarget "${e.id}" must have a non-empty label`);if(!e.action||typeof e.action.type!=`string`||!Te.has(e.action.type))throw Error(`NavigationTarget "${e.id}" must have a valid action`);if(typeof e.level!=`string`||e.level.trim().length===0)throw Error(`NavigationTarget "${e.id}" must have a non-empty level`)}function De(e,t){return e.level===`any`||t===`any`?!0:e.level===t}var Y=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`NavigationTarget "${e.id}" is already registered`);Ee(e);let t=Object.freeze({...e,order:e.order??50,group:e.group??`navigate`,action:Object.freeze({...e.action})});return this.items.set(t.id,t),this.invalidateCache(),this.notify(),()=>{this.items.get(t.id)===t&&this.unregister(t.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>(e.order??50)-(t.order??50))),this.cachedAll}query(e={}){let{level:t,group:n,includeHidden:r=!1}=e;return this.getAll().filter(e=>{if(t&&!De(e,t)||n&&e.group!==n)return!1;if(!r&&e.when)try{if(!e.when())return!1}catch(t){return console.warn(`[NavigationRegistry] Target "when" callback threw, hiding target.`,{targetId:e.id,error:t}),!1}return!0})}getByLevel(e){return this.query({level:e})}getByGroup(e){return this.query({group:e})}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const Oe=new Y,ke=Object.freeze([Object.freeze({id:`navigate`,label:`Navigate`,order:0}),Object.freeze({id:`analytics`,label:`Analytics`,order:5}),Object.freeze({id:`quick-access`,label:`Quick Access`,order:10})]),Ae=new Set([`project-overview`,`control-center`,`agent-manager`]);function je(e){let t=(e.split(`#`)[0].split(`?`)[0].replace(/\/+$/,``)||`/`).split(`/`).filter(Boolean);return t.length===0?`_blank`:t[0]===`apps`&&t[1]?`apps-${t[1]}`:t[0]===`project`&&t[1]?`project-${t[1]}`:t[0]===`chat`?t[1]?`chat-${t[1]}`:`_blank`:t.length===1&&Ae.has(t[0])?t[0]:`_blank`}const Me=t.enum([`electron`,`electrobun`,`web`,`mobile`,`tray`]),X={ready:t.object({surface:Me,timestamp:t.number()}),navigate:{request:t.object({url:t.string().regex(/^\/(?!\/)/,`url must be an internal app path starting with a single /`)}),response:t.object({action:t.enum([`opened`,`focused`,`navigated`])})},"popover.show":{request:t.object({x:t.number().optional(),y:t.number().optional()}),response:t.object({shown:t.boolean()})},"shortcut.triggered":t.object({accelerator:t.string()})},Z=r(`ui`,X),Ne=Z.subjects;function Pe(e){return!!(typeof e==`function`||typeof e==`object`&&e&&`$$typeof`in e)}function Fe(e){if(!e.id||typeof e.id!=`string`)throw Error(`OnboardingStepDefinition must have a non-empty string id`);if(!e.title||typeof e.title!=`string`)throw Error(`OnboardingStepDefinition "${e.id}" must have a non-empty title`);if(typeof e.order!=`number`||!isFinite(e.order))throw Error(`OnboardingStepDefinition "${e.id}" must have a finite numeric order`);if(!Pe(e.component))throw Error(`OnboardingStepDefinition "${e.id}" must have a component`)}var Q=class extends m{cachedAll=null;register(e){return Fe(e),this.items.has(e.id)&&this.items.delete(e.id),this.items.set(e.id,e),this.invalidateCache(),this.notify(),()=>{this.items.get(e.id)===e&&this.unregister(e.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>e.order-t.order)),this.cachedAll}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const Ie=new Q,$=[{label:`Essential`,members:new Set([`hash-trigger`,`tool-tracking`,`artifacts`,`coordinator`]),defaultEnabled:!0,alwaysEnabled:!0},{label:`Recommended`,members:new Set([`context-advisor`,`terminal`,`conversation-timeline`,`skill-injector`,`code-annotations`,`agent-notes`,`pin-message`,`file-history`,`lock`]),defaultEnabled:!0,alwaysEnabled:!1},{label:`Developer Workflow`,members:new Set([`github`,`pr-review`,`worktree`,`drift-detector`]),defaultEnabled:!0,alwaysEnabled:!1},{label:`Advanced`,members:new Set([`routine`,`loop`,`summarize`,`vision`,`instruction-guard`,`question-extractor`]),defaultEnabled:!1,alwaysEnabled:!1},{label:`Integrations`,members:new Set([`pushover`,`linear-tasks`,`opencode`]),defaultEnabled:!1,alwaysEnabled:!1},{label:`Debug`,members:new Set([]),defaultEnabled:!1,alwaysEnabled:!1}];function Le(e){return e.alwaysEnabled||e.defaultEnabled}const Re={label:`Other`,members:new Set,defaultEnabled:!1,alwaysEnabled:!1};function ze(e){return $.find(t=>t.members.has(e))??Re}export{c as DEFAULT_WIDGET_UI_CONTEXT,Y as NavigationRegistry,Q as OnboardingStepRegistry,we as PAGE_PREFERENCE_CATEGORIES,$ as PLUGIN_CATEGORIES,U as PageDefinitionRegistry,G as PageRegistry,J as PageSectionRegistry,m as RegistryBase,q as SHELL_BG_COLOR,ve as SHELL_FONT_FAMILY,_e as SHELL_TEXT_COLOR,ie as TRAY_CANVAS_HORIZONTAL_PADDING_PX,D as TRAY_CELL_MARGIN,ae as TRAY_GRID_COLS,se as TRAY_GRID_WIDTH_PX,oe as TRAY_ROW_HEIGHT_PX,re as TRAY_WINDOW_HEIGHT_PX,ne as TRAY_WINDOW_WIDTH_PX,Z as UiNamespace,X as UiSchemas,Ne as UiSubjects,T as WidgetNamespace,te as WidgetRawSchemas,h as WidgetRegistry,w as WidgetSchemas,E as WidgetSubjects,Ce as buildPageLayoutKey,F as clearExtensionBrowserFactories,ye as createRuntimeReadyWaiter,ke as defaultNavigationGroups,je as deriveBrowserTarget,Le as deriveDefaultEnabled,le as deriveTrayLayout,l as eraseWidgetConfig,ze as findCategory,I as getRegisteredExtensionBrowserFactory,be as isOverlayMode,p as isWidgetLayout,f as isWidgetPlacement,Oe as navigationRegistry,Ie as onboardingStepRegistry,W as pageDefinitionRegistry,K as pageRegistry,xe as pageSectionRegistry,H as queryPageDefinitions,fe as registerExtensionBrowserFactory,ge as registerExtensionUI,Se as registerPageBusHandler,k as registerWidget,ue as registerWidgets,L as resolveExtensionBrowserFactory,z as runCleanupsInReverse,de as subscribeToWidgetEvents,P as unregisterExtensionBrowserFactory,A as unregisterWidget,s as widgetMatchesScope,g as widgetRegistry,o as widgetScopeRegistry};
1
+ import{PageSubjects as e}from"./pages/namespace.mjs";import{z as t}from"zod";import{isRecord as n}from"@makaio/framework/utils";import{createBusNamespace as r}from"@makaio/framework/core";import{localSubject as i}from"@makaio/framework/bus";import{KernelSubjects as a}from"@makaio/framework/kernel";const o=new class{scopes=new Map([[`global`,{label:`Global`,description:`Available in global UI contexts`}],[`any`,{label:`Any`,description:`Available in every UI context`}]]);listeners=new Set;register(e,t){if(this.scopes.has(e)){console.warn(`Widget scope '${e}' already registered`);return}this.scopes.set(e,t),this.notify()}has(e){return this.scopes.has(e)}getAll(){return new Map(this.scopes)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.listeners.forEach(e=>e())}};function s(e,t,n=!0){let r=Array.isArray(e)?e:[e];return r.includes(t)||n&&r.includes(`any`)}const c=Object.freeze({level:`root`,values:Object.freeze({})});function l(e){return e}const u=new Set([`small`,`medium`,`large`,`full-width`]);function d(e){return typeof e==`number`&&Number.isFinite(e)}function f(e){return!n(e)||typeof e.instanceId!=`string`||typeof e.widgetId!=`string`||!d(e.col)||!d(e.row)||typeof e.size!=`string`||!u.has(e.size)||e.w!==void 0&&!d(e.w)||e.h!==void 0&&!d(e.h)||e.locked!==void 0&&typeof e.locked!=`boolean`?!1:e.config===void 0||n(e.config)}function p(e){return!n(e)||e.version!==1||!Array.isArray(e.placements)?!1:e.placements.every(e=>f(e))}var m=class{items=new Map;listeners=new Set;subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){let e,t=!1;if(this.listeners.forEach(n=>{try{n()}catch(n){t||=(e=n,!0)}}),t)throw e}has(e){return this.items.has(e)}size(){return this.items.size}},h=class extends m{cachedAll=null;register(e){return this.items.has(e.id)?!1:(this.items.set(e.id,l(e)),this.cachedAll=null,this.notify(),!0)}registerAll(e){e.forEach(e=>this.register(e))}get(e){return this.items.get(e)}getAll(){return this.cachedAll===null&&(this.cachedAll=Object.freeze(Array.from(this.items.values()))),this.cachedAll}getByScope(e,t=!0){return this.getAll().filter(n=>s(n.scope,e,t))}unregister(e){let t=this.items.delete(e);return t&&(this.cachedAll=null,this.notify()),t}clear(){this.items.size!==0&&(this.items.clear(),this.cachedAll=null,this.notify())}};const g=new h,_=t.string(),v=t.enum([`small`,`medium`,`large`,`full-width`]),ee=t.object({pageId:t.string().optional(),windowId:t.string().optional(),onActivate:t.unknown().refine(e=>typeof e==`function`,{message:`onActivate must be a function`}).optional()}),y=t.object({id:t.string(),name:t.string(),scope:t.union([_,t.array(_)]),description:t.string().optional(),supportedSizes:t.array(v),defaultSize:v,component:t.unknown().refine(e=>e!==void 0,{message:`component is required`}),defaultConfig:t.unknown().optional(),allowMultiple:t.boolean().optional(),activate:ee.optional()}),b=t.object({widgetId:t.string()}),x=t.object({widgetId:t.string(),instanceId:t.string()}),S=t.object({scope:_.optional()}),C=t.object({widgets:t.array(y)}),w={register:i(y),unregister:i(b),list:i({request:S,response:C}),activated:i(x)},te={register:y,unregister:b,list:{request:S,response:C},activated:x},T=r(`widget`,w),E=T.subjects,ne=480,re=500,ie=8,ae=2,oe=60,D=[8,8],se=464,O={small:1,medium:2,large:3,"full-width":4},ce=Object.freeze([]);function le(e,t=ce){let n=e.filter(e=>s(e.scope,`tray`,!1)),r=new Set(t),i=new Map(n.map(e=>[e.id,e])),a=1,o=[],c=new Set;for(let e of t){if(c.has(e))continue;c.add(e);let t=i.get(e);if(!t)continue;let n=t.trayDefaultSize??t.defaultSize,r=O[n];o.push({col:1,h:r,instanceId:`tray:locked:${e}`,locked:!0,row:a,size:n,w:2,widgetId:e}),a+=r}for(let e of n){if(r.has(e.id))continue;let t=e.trayDefaultSize??e.defaultSize,n=O[t];o.push({col:1,h:n,instanceId:`tray:item:${e.id}`,row:a,size:t,w:2,widgetId:e.id}),a+=n}return{placements:o,version:1}}function k(e,t){return g.register(t)?(e.emit(E.register,{id:t.id,name:t.name,scope:t.scope,description:t.description,supportedSizes:t.supportedSizes,defaultSize:t.defaultSize,component:t.component,defaultConfig:t.defaultConfig,allowMultiple:t.allowMultiple,activate:t.activate}).catch(e=>{console.error(`[widget-register] Failed to emit register for "${t.id}":`,e)}),!0):!1}function ue(e,t){return t.flatMap(t=>k(e,t)?[t.id]:[])}function A(e,t){return g.unregister(t)?(e.emit(E.unregister,{widgetId:t}).catch(e=>{console.error(`[widget-register] Failed to emit unregister for "${t}":`,e)}),!0):!1}const j=new WeakMap;function de(e){let t=j.get(e);if(t)return t.refCount+=1,()=>{--t.refCount,t.refCount===0&&(t.cleanup(),j.delete(e))};let n=[];n.push(e.on(E.register,e=>{let t=e.payload;g.has(t.id)||g.register(t)})),n.push(e.on(E.unregister,e=>{g.unregister(e.payload.widgetId)})),n.push(e.on(E.list,e=>{let{scope:t}=e.payload,n=t?g.getByScope(t):Array.from(g.getAll());e.setResult({widgets:n})}));let r=()=>n.forEach(e=>e()),i={cleanup:r,refCount:1};return j.set(e,i),()=>{--i.refCount,i.refCount===0&&(r(),j.delete(e))}}const M=new Map;function N(e){if(typeof e!=`string`)throw Error(`Extension name must be a non-empty string.`);let t=e.trim();if(t.length===0)throw Error(`Extension name must be a non-empty string.`);return t}function fe(e,t){let n=N(e);if(typeof t!=`function`)throw Error(`Browser factory must be a function.`);let r=M.get(n);if(r!==void 0&&r!==t)throw Error(`Browser factory already registered for extension "${n}".`);M.set(n,t)}function P(e){let t=N(e);M.delete(t)}function F(){M.clear()}function I(e){let t=N(e);return M.get(t)}function L(e,t){let n=R(e)?e:t;return n===void 0?{kind:`invalid`,reason:`expected function, got default export ${typeof e} and registry fallback ${t===void 0?`undefined`:typeof t}`}:{kind:`resolved`,factory:n}}function R(e){return typeof e==`function`}function z(e,t){for(let n of[...e].reverse())try{n()}catch(e){console.error(`${t} Cleanup failed:`,e)}}function B(e,t){return e===`any`||t===`any`?!0:e===t}function V(e,t){return e.surface?e.surface.surfaces?e.surface.surfaces.includes(t):!1:!0}function H(e,t={}){let{mode:n,level:r,group:i,surface:a,includeHidden:o=!1}=t;return e.filter(e=>{if(n&&e.mode!==n||r&&!B(e.level,r)||i&&e.group!==i||a&&!V(e,a))return!1;if(!o&&e.when)try{if(!e.when())return!1}catch(t){return console.warn(`[PageDefinitionRegistry] Page "when" callback threw, hiding page.`,{pageId:e.id,error:t}),!1}return!0})}function pe(e){if(e)return Object.freeze({...e,...e.surfaces?{surfaces:Object.freeze([...e.surfaces])}:{},...e.requiredCapabilities?{requiredCapabilities:Object.freeze([...e.requiredCapabilities])}:{}})}function me(e){if(!e.id||typeof e.id!=`string`)throw Error(`PageDefinition must have a non-empty string id`);if(!e.name||typeof e.name!=`string`)throw Error(`PageDefinition "${e.id}" must have a non-empty name`);if(e.mode!==`switch`&&e.mode!==`peek`&&e.mode!==`cover`&&e.mode!==`sheet`)throw Error(`PageDefinition "${e.id}" must have mode 'switch', 'peek', 'cover', or 'sheet'`);if(typeof e.level!=`string`||e.level.trim().length===0)throw Error(`PageDefinition "${e.id}" must have a non-empty level`);if(typeof e.component!=`function`)throw Error(`PageDefinition "${e.id}" must have a component loader function`);if(e.surface){let t=e.surface.surfaces,n=e.surface.requiredCapabilities;if(t!==void 0==(n!==void 0))throw Error(`PageDefinition "${e.id}" surface must specify exactly one of "surfaces" or "requiredCapabilities"`);if(t&&t.length===0)throw Error(`PageDefinition "${e.id}" surface.surfaces must be a non-empty array`);if(n&&n.length===0)throw Error(`PageDefinition "${e.id}" surface.requiredCapabilities must be a non-empty array`)}}var U=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`PageDefinition "${e.id}" is already registered`);me(e);let t=Object.freeze({order:50,group:`navigate`,...e,surface:pe(e.surface)});return this.items.set(t.id,t),this.invalidateCache(),this.notify(),()=>{this.items.get(t.id)===t&&this.unregister(t.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>(e.order??50)-(t.order??50))),this.cachedAll}query(e={}){return H(this.getAll(),e)}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const W=new U;function he(e){o.has(e.scope)||console.warn(`[PageRegistry] Page "${e.id}" uses unregistered scope "${e.scope}". Consider registering it via widgetScopeRegistry.`);let t=new Set(e.slots.map(e=>e.id));for(let n of Object.keys(e.defaultContent))if(!t.has(n))throw Error(`Page "${e.id}" has defaultContent for slot "${n}" but slot is not declared in slots array`);if(t.size!==e.slots.length)throw Error(`Page "${e.id}" has duplicate slot IDs`);for(let t of e.slots){if(t.minColumnWidth<=0)throw Error(`Slot "${t.id}" in page "${e.id}" has invalid minColumnWidth (must be > 0)`);if(t.maxColumns<=0)throw Error(`Slot "${t.id}" in page "${e.id}" has invalid maxColumns (must be > 0)`);if(t.acceptsSizes.length===0)throw Error(`Slot "${t.id}" in page "${e.id}" has empty acceptsSizes array`)}for(let[t,n]of Object.entries(e.defaultContent))if(n)for(let r of n){if(!r.instanceId)throw Error(`Page "${e.id}" slot "${t}" has placement missing instanceId`);if(r.content.type===`widget`&&!r.content.widgetId)throw Error(`Page "${e.id}" slot "${t}" has widget placement with empty widgetId`);if(r.content.type===`view`&&!r.content.viewId)throw Error(`Page "${e.id}" slot "${t}" has view placement with empty viewId`)}}var G=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`Page "${e.id}" is already registered`);if(e.route!==void 0){for(let t of this.items.values())if(t.route===e.route)throw Error(`Route "${e.route}" is already registered by page "${t.id}"`)}return he(e),this.items.set(e.id,e),this.invalidateCache(),this.notify(),()=>{this.items.get(e.id)===e&&this.unregister(e.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll===null&&(this.cachedAll=Object.freeze(Array.from(this.items.values()))),this.cachedAll}getRoutablePages(){return this.getAll().filter(e=>e.route!==void 0)}getByScope(e,t=!0){return this.getAll().filter(n=>n.scope===e||t&&n.scope===`any`)}getByLevel(e,t=!0){return this.getAll().filter(n=>n.level===e||t&&(n.level===`any`||n.level===void 0))}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.size!==0&&(this.items.clear(),this.invalidateCache(),this.notify())}invalidateCache(){this.cachedAll=null}};const K=new G;function ge(e,t,n){let r=[];try{if(n.pages)for(let e of n.pages)r.push(K.register(e));if(n.pageDefinitions)for(let e of n.pageDefinitions)r.push(W.register(e));return n.widgets&&n.widgets.forEach(n=>{k(e,n)?r.push(()=>A(e,n.id)):console.warn(`[registerExtensionUI] Widget "${n.id}" from extension "${t}" was already registered.`)}),()=>z(r,`[registerExtensionUI] ${t}`)}catch(e){throw z(r,`[registerExtensionUI] ${t}`),e}}const q=`#0d1117`,_e=`#e9eaed`,ve=`system-ui, sans-serif`;function ye(e,t=3e4){let n=!1,r,i,o=()=>{},s,c=new Promise((e,t)=>{r=e,i=e=>t(e)}),l=()=>{s!==void 0&&(clearTimeout(s),s=void 0)},u=()=>{n||(n=!0,l(),o(),r(`ready`))},d=()=>{n||(n=!0,l(),o(),r(`cancelled`))},f=()=>{n||(n=!0,l(),o(),r(`timeout`))},p=e=>{n||(n=!0,l(),o(),i(e instanceof Error?e:Error(String(e))))};return t>0&&(s=setTimeout(f,t)),o=e.on(a.ready,()=>{u()}),(async()=>{try{let t=await e.requestOptional(a.isReady,{});if(n)return;t.handled&&t.data.ready&&u()}catch(e){p(Error(`[waitForRuntimeReady] Readiness probe failed`,{cause:e}))}})(),{cleanup:d,ready:c}}function be(e){return e===`peek`||e===`cover`||e===`sheet`}var J=class extends m{cachedByParent=null;register(e){let t=this.makeKey(e.parentPageId,e.id);return this.items.has(t)?()=>void 0:(this.items.set(t,e),this.invalidateCache(),this.notify(),()=>{this.items.get(t)===e&&this.unregister(e.parentPageId,e.id)})}get(e,t){let n=this.makeKey(e,t);return this.items.get(n)}getByParent(e){this.cachedByParent||=new Map;let t=this.cachedByParent.get(e);return t||(t=Array.from(this.items.values()).filter(t=>t.parentPageId===e).sort((e,t)=>(e.order??100)-(t.order??100)),this.cachedByParent.set(e,t)),t}getByParentAndCategory(e,t){return this.getByParent(e).filter(e=>e.category===t)}unregister(e,t){let n=this.makeKey(e,t),r=this.items.delete(n);return r&&(this.invalidateCache(),this.notify()),r}clear(){this.items.clear(),this.invalidateCache(),this.notify()}makeKey(e,t){return`${e}:${t}`}invalidateCache(){this.cachedByParent=null}};const xe=new J;function Se(t){return t.on(e.list,e=>{let{surface:t}=e.payload,n=W.query(t?{surface:t}:{});e.setResult({pages:n.map(e=>({id:e.id,name:e.name,description:e.description,mode:e.mode,level:e.level,surfaces:e.surface===void 0?`all`:e.surface.surfaces?[...e.surface.surfaces]:void 0}))})})}function Ce(e,t){return`page-layout:${e}:${t.contextId!==null&&t.contextId!==void 0?`${t.scope}:${t.contextId}`:t.scope}`}const we={layout:`page-layout`,slotState:`page-slot-state`,editMode:`page-edit-mode`},Te=new Set([`focus`,`page`,`command`,`callback`,`external`]);function Ee(e){if(!e.id||typeof e.id!=`string`)throw Error(`NavigationTarget must have a non-empty string id`);if(!e.label||typeof e.label!=`string`)throw Error(`NavigationTarget "${e.id}" must have a non-empty label`);if(!e.action||typeof e.action.type!=`string`||!Te.has(e.action.type))throw Error(`NavigationTarget "${e.id}" must have a valid action`);if(typeof e.level!=`string`||e.level.trim().length===0)throw Error(`NavigationTarget "${e.id}" must have a non-empty level`)}function De(e,t){return e.level===`any`||t===`any`?!0:e.level===t}var Y=class extends m{cachedAll=null;register(e){if(this.items.has(e.id))throw Error(`NavigationTarget "${e.id}" is already registered`);Ee(e);let t=Object.freeze({...e,order:e.order??50,group:e.group??`navigate`,action:Object.freeze({...e.action})});return this.items.set(t.id,t),this.invalidateCache(),this.notify(),()=>{this.items.get(t.id)===t&&this.unregister(t.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>(e.order??50)-(t.order??50))),this.cachedAll}query(e={}){let{level:t,group:n,includeHidden:r=!1}=e;return this.getAll().filter(e=>{if(t&&!De(e,t)||n&&e.group!==n)return!1;if(!r&&e.when)try{if(!e.when())return!1}catch(t){return console.warn(`[NavigationRegistry] Target "when" callback threw, hiding target.`,{targetId:e.id,error:t}),!1}return!0})}getByLevel(e){return this.query({level:e})}getByGroup(e){return this.query({group:e})}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const Oe=new Y,ke=Object.freeze([Object.freeze({id:`navigate`,label:`Navigate`,order:0}),Object.freeze({id:`analytics`,label:`Analytics`,order:5}),Object.freeze({id:`quick-access`,label:`Quick Access`,order:10})]),Ae=new Set([`project-overview`,`control-center`,`agent-manager`]);function je(e){let t=(e.split(`#`)[0].split(`?`)[0].replace(/\/+$/,``)||`/`).split(`/`).filter(Boolean);return t.length===0?`_blank`:t[0]===`apps`&&t[1]?`apps-${t[1]}`:t[0]===`project`&&t[1]?`project-${t[1]}`:t[0]===`chat`?t[1]?`chat-${t[1]}`:`_blank`:t.length===1&&Ae.has(t[0])?t[0]:`_blank`}const Me=t.enum([`electron`,`electrobun`,`web`,`mobile`,`tray`]),X={ready:t.object({surface:Me,timestamp:t.number()}),navigate:{request:t.object({url:t.string().regex(/^\/(?!\/)/,`url must be an internal app path starting with a single /`)}),response:t.object({action:t.enum([`opened`,`focused`,`navigated`])})},"popover.show":{request:t.object({x:t.number().optional(),y:t.number().optional()}),response:t.object({shown:t.boolean()})},"shortcut.triggered":t.object({accelerator:t.string()})},Z=r(`ui`,X),Ne=Z.subjects;function Pe(e){return!!(typeof e==`function`||typeof e==`object`&&e&&`$$typeof`in e)}function Fe(e){if(!e.id||typeof e.id!=`string`)throw Error(`OnboardingStepDefinition must have a non-empty string id`);if(!e.title||typeof e.title!=`string`)throw Error(`OnboardingStepDefinition "${e.id}" must have a non-empty title`);if(typeof e.order!=`number`||!isFinite(e.order))throw Error(`OnboardingStepDefinition "${e.id}" must have a finite numeric order`);if(!Pe(e.component))throw Error(`OnboardingStepDefinition "${e.id}" must have a component`)}var Q=class extends m{cachedAll=null;register(e){return Fe(e),this.items.has(e.id)&&this.items.delete(e.id),this.items.set(e.id,e),this.invalidateCache(),this.notify(),()=>{this.items.get(e.id)===e&&this.unregister(e.id)}}get(e){return this.items.get(e)}getAll(){return this.cachedAll||=Object.freeze(Array.from(this.items.values()).sort((e,t)=>e.order-t.order)),this.cachedAll}unregister(e){let t=this.items.delete(e);return t&&(this.invalidateCache(),this.notify()),t}clear(){this.items.clear(),this.invalidateCache(),this.notify()}invalidateCache(){this.cachedAll=null}};const Ie=new Q,$=[{label:`Essential`,members:new Set([`hash-trigger`,`tool-tracking`,`artifacts`,`coordinator`]),defaultEnabled:!0,alwaysEnabled:!0},{label:`Recommended`,members:new Set([`context-advisor`,`terminal`,`conversation-timeline`,`skill-injector`,`code-annotations`,`agent-notes`,`pin-message`,`file-history`,`lock`]),defaultEnabled:!0,alwaysEnabled:!1},{label:`Developer Workflow`,members:new Set([`github`,`pr-review`,`worktree`,`drift-detector`]),defaultEnabled:!0,alwaysEnabled:!1},{label:`Advanced`,members:new Set([`routine`,`loop`,`summarize`,`vision`,`instruction-guard`,`question-extractor`]),defaultEnabled:!1,alwaysEnabled:!1},{label:`Integrations`,members:new Set([`pushover`,`linear-tasks`,`opencode`]),defaultEnabled:!1,alwaysEnabled:!1},{label:`Debug`,members:new Set([]),defaultEnabled:!1,alwaysEnabled:!1}];function Le(e,t=!1){return t||e.alwaysEnabled||e.defaultEnabled}const Re={label:`Other`,members:new Set,defaultEnabled:!1,alwaysEnabled:!1};function ze(e){return $.find(t=>t.members.has(e))??Re}export{c as DEFAULT_WIDGET_UI_CONTEXT,Y as NavigationRegistry,Q as OnboardingStepRegistry,we as PAGE_PREFERENCE_CATEGORIES,$ as PLUGIN_CATEGORIES,U as PageDefinitionRegistry,G as PageRegistry,J as PageSectionRegistry,m as RegistryBase,q as SHELL_BG_COLOR,ve as SHELL_FONT_FAMILY,_e as SHELL_TEXT_COLOR,ie as TRAY_CANVAS_HORIZONTAL_PADDING_PX,D as TRAY_CELL_MARGIN,ae as TRAY_GRID_COLS,se as TRAY_GRID_WIDTH_PX,oe as TRAY_ROW_HEIGHT_PX,re as TRAY_WINDOW_HEIGHT_PX,ne as TRAY_WINDOW_WIDTH_PX,Z as UiNamespace,X as UiSchemas,Ne as UiSubjects,T as WidgetNamespace,te as WidgetRawSchemas,h as WidgetRegistry,w as WidgetSchemas,E as WidgetSubjects,Ce as buildPageLayoutKey,F as clearExtensionBrowserFactories,ye as createRuntimeReadyWaiter,ke as defaultNavigationGroups,je as deriveBrowserTarget,Le as deriveDefaultEnabled,le as deriveTrayLayout,l as eraseWidgetConfig,ze as findCategory,I as getRegisteredExtensionBrowserFactory,be as isOverlayMode,p as isWidgetLayout,f as isWidgetPlacement,Oe as navigationRegistry,Ie as onboardingStepRegistry,W as pageDefinitionRegistry,K as pageRegistry,xe as pageSectionRegistry,H as queryPageDefinitions,fe as registerExtensionBrowserFactory,ge as registerExtensionUI,Se as registerPageBusHandler,k as registerWidget,ue as registerWidgets,L as resolveExtensionBrowserFactory,z as runCleanupsInReverse,de as subscribeToWidgetEvents,P as unregisterExtensionBrowserFactory,A as unregisterWidget,s as widgetMatchesScope,g as widgetRegistry,o as widgetScopeRegistry};
@@ -1,2 +1,2 @@
1
- import { a as SurfaceCapabilitySchema, c as SurfaceIdSchema, i as SurfaceCapability, l as isPageVisibleOnSurface, n as PageSchemas, o as SurfaceDeclaration, r as PageSurfaceConfig, s as SurfaceId, t as PageMetadata } from "../../schemas-LiiyNNpr.mjs";
1
+ import { a as SurfaceCapabilitySchema, c as SurfaceIdSchema, i as SurfaceCapability, l as isPageVisibleOnSurface, n as PageSchemas, o as SurfaceDeclaration, r as PageSurfaceConfig, s as SurfaceId, t as PageMetadata } from "../../schemas-Cl7fPlRv.mjs";
2
2
  export { PageMetadata, PageSchemas, PageSurfaceConfig, SurfaceCapability, SurfaceCapabilitySchema, SurfaceDeclaration, SurfaceId, SurfaceIdSchema, isPageVisibleOnSurface };
@@ -1,4 +1,4 @@
1
- import{n as e,r as t,t as n}from"../chunk-cpUYaJdV.mjs";import r,{Component as i,Suspense as a,forwardRef as o,isValidElement as s,useCallback as c,useEffect as l,useId as u,useMemo as d,useRef as f,useState as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"react-dom";import{DEFAULT_WIDGET_UI_CONTEXT as v,SHELL_BG_COLOR as y,SHELL_FONT_FAMILY as b,SHELL_TEXT_COLOR as x,TRAY_CELL_MARGIN as S,TRAY_GRID_COLS as C,TRAY_GRID_WIDTH_PX as w,TRAY_ROW_HEIGHT_PX as T,WidgetSubjects as E,createRuntimeReadyWaiter as D,defaultNavigationGroups as O,getRegisteredExtensionBrowserFactory as k,isOverlayMode as A,registerExtensionUI as j,registerWidget as M,resolveExtensionBrowserFactory as N,runCleanupsInReverse as P,unregisterExtensionBrowserFactory as F,unregisterWidget as I,widgetMatchesScope as L,widgetRegistry as R}from"@makaio/framework/ui-kernel";import{ExtensionSubjects as z,KernelSubjects as ee}from"@makaio/framework/kernel";import{HostSubjects as te}from"@makaio/framework/contracts";import{BusProvider as ne,groupPagesByNavigationGroup as re,loadExtensionBrowserContributions as ie,useBus as B,useNavigationLevel as ae,useOptionalBus as oe,usePageComponent as se,usePageOverlayStore as ce,useSidebarStore as V,useTrayLayout as le,useWidgetLayout as ue,useWidgetLayoutActions as H,useWidgets as U,useWindowContext as de,useWindowIdPages as fe}from"@makaio/framework/ui-hooks";import{CloseIcon as pe,MultiActionToast as me,NavSidebar as he,useBodyScrollLock as ge,useEscapeKey as _e,useFocusOnOpen as ve,useFocusTrap as ye}from"@makaio/framework/ui-components";import{ToastSubjects as be}from"@makaio/framework/contracts/toast";var W={container:`ZryHjW_container`,content:`ZryHjW_content`,error:`ZryHjW_error`,errorMessage:`ZryHjW_errorMessage`,flexible:`ZryHjW_flexible`,header:`ZryHjW_header`,large:`ZryHjW_large`,medium:`ZryHjW_medium`,removeButton:`ZryHjW_removeButton`,retryButton:`ZryHjW_retryButton`,small:`ZryHjW_small`,title:`ZryHjW_title`},xe=class extends i{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(){this.props.onError()}render(){return this.state.hasError?null:this.props.children}};function Se({instanceId:e,title:t,size:n,children:r,onRemove:i}){let[a,o]=p(!1);return a?g(`div`,{className:`${W.container} ${W[n]} ${W.error}`,children:[h(`div`,{className:W.header,children:h(`span`,{className:W.title,children:t})}),g(`div`,{className:W.content,children:[h(`p`,{className:W.errorMessage,children:`Widget failed to render`}),h(`button`,{type:`button`,className:W.retryButton,onClick:()=>o(!1),children:`Retry`})]})]}):g(`div`,{className:`${W.container} ${W[n]}`,"data-widget-instance":e,children:[g(`div`,{className:W.header,children:[h(`span`,{className:W.title,children:t}),i&&h(`button`,{type:`button`,className:W.removeButton,onClick:i,"aria-label":`Remove widget`,title:`Remove widget`,children:`×`})]}),h(`div`,{className:W.content,children:h(xe,{onError:()=>o(!0),children:r})})]})}var G={compactLabel:`iC7Dmq_compactLabel`,compactMachineId:`iC7Dmq_compactMachineId`,compactRow:`iC7Dmq_compactRow`,emptyExtensions:`iC7Dmq_emptyExtensions`,extensionCard:`iC7Dmq_extensionCard`,extensionError:`iC7Dmq_extensionError`,extensionHeader:`iC7Dmq_extensionHeader`,extensionsList:`iC7Dmq_extensionsList`,extensionsSection:`iC7Dmq_extensionsSection`,extensionStatus:`iC7Dmq_extensionStatus`,feedbackError:`iC7Dmq_feedbackError`,feedbackSuccess:`iC7Dmq_feedbackSuccess`,machineIdButton:`iC7Dmq_machineIdButton`,restartButton:`iC7Dmq_restartButton`,section:`iC7Dmq_section`,sectionLabel:`iC7Dmq_sectionLabel`,statusDot:`iC7Dmq_statusDot`,summaryRow:`iC7Dmq_summaryRow`,summaryText:`iC7Dmq_summaryText`,widget:`iC7Dmq_widget`};const Ce={active:`var(--color-success)`,discovered:`var(--color-text-muted)`,failed:`var(--color-danger)`,initializing:`var(--color-text-secondary)`,skipped:`var(--color-text-muted)`,stopped:`var(--color-text-muted)`};function K(e){return e.length<=18?e:`${e.slice(0,8)}...${e.slice(-8)}`}function we(){let e=B(),t=f(0),[n,r]=p(null);return l(()=>{let n=++t.current,i=()=>t.current===n;return(async()=>{try{let{machineId:t}=await e.request(ee.isReady,{});i()&&r(t)}catch(e){i()&&console.error(`[StatusWidget] Failed to load runtime status`,e)}})(),()=>{++t.current}},[e]),n}function Te(e){let t=B(),n=f(0),r=f(!1),[i,a]=p([]);return l(()=>{if(!e){r.current=!1,a([]);return}let i=++n.current,o=()=>n.current===i,s=async()=>{try{let{extensions:e}=await t.request(z.list,{});if(!o())return;r.current=!0,a(e)}catch(e){o()&&console.error(`[StatusWidget] Failed to load extension status`,e)}},c=()=>{s()},l=t.on(z.stateChanged,e=>{a(t=>{if(!r.current)return c(),t;let n=t.find(t=>t.name===e.payload.name);if(!n)return c(),t;let i=t.filter(t=>t.name!==e.payload.name);return i.push({browser:n.browser,displayName:e.payload.displayName,enabled:n.enabled,error:e.payload.error,name:e.payload.name,state:e.payload.to,surface:n.surface}),i.sort((e,t)=>e.displayName.localeCompare(t.displayName))})});return s(),()=>{++n.current,r.current=!1,l()}},[t,e]),i}function Ee(e){let t=f(null),n=we(),r=Te(e),[i,a]=p(`idle`),o=()=>{t.current!==null&&clearTimeout(t.current),t.current=setTimeout(()=>{t.current=null,a(`idle`)},2e3)};return l(()=>()=>{t.current!==null&&(clearTimeout(t.current),t.current=null)},[]),{copyFeedback:i,copyMachineId:async()=>{if(!n||typeof navigator>`u`||!navigator.clipboard){a(`error`),o();return}try{await navigator.clipboard.writeText(n),a(`success`),o()}catch(e){a(`error`),o(),console.error(`[StatusWidget] Failed to copy machine ID`,e)}},extensions:r,machineId:n}}function De(e){let{copyFeedback:t,copyMachineId:n,machineId:r}=e;return g(`div`,{className:G.section,children:[h(`span`,{className:G.sectionLabel,children:`Runtime`}),h(`button`,{className:G.machineIdButton,disabled:!r,onClick:r?()=>void n():void 0,title:r?`Copy machine ID`:`Machine ID unavailable`,type:`button`,children:r?K(r):`Machine ID unavailable`}),t===`success`?h(`span`,{"aria-live":`polite`,className:G.feedbackSuccess,children:`Copied machine ID.`}):null,t===`error`?h(`span`,{"aria-live":`polite`,className:G.feedbackError,children:`Failed to copy machine ID.`}):null]})}function Oe(e){let{extension:t}=e;return g(`div`,{className:G.extensionCard,children:[g(`div`,{className:G.extensionHeader,children:[h(`span`,{children:t.displayName}),g(`span`,{className:G.extensionStatus,children:[h(`span`,{className:G.statusDot,style:{backgroundColor:Ce[t.state]}}),t.state]})]}),t.error?h(`span`,{className:G.extensionError,children:t.error}):null]})}function ke(e){let{extensions:t}=e;return g(`div`,{className:G.extensionsSection,children:[h(`span`,{className:G.sectionLabel,children:`Extensions`}),h(`div`,{className:G.extensionsList,children:t.length===0?h(`div`,{className:G.emptyExtensions,children:`No extensions registered.`}):t.map(e=>h(Oe,{extension:e},e.name))})]})}function Ae(){return h(`button`,{className:G.restartButton,disabled:!0,title:`Not yet available`,type:`button`,children:`Restart Runtime`})}function je(e){let{extensions:t}=e,n=new Map;for(let e of t)n.set(e.state,(n.get(e.state)??0)+1);if(t.length===0)return h(`span`,{className:G.summaryText,children:`No extensions registered.`});let r=[],i=n.get(`active`)??0;i>0&&r.push(`${i} active`);let a=n.get(`failed`)??0;a>0&&r.push(`${a} failed`);let o=t.length-i-a;return o>0&&r.push(`${o} other`),g(`div`,{className:G.summaryRow,children:[h(`span`,{className:G.sectionLabel,children:`Extensions`}),h(`span`,{className:G.summaryText,children:r.join(`, `)}),a>0?h(`span`,{className:G.statusDot,style:{backgroundColor:`var(--color-danger)`}}):null]})}function Me(e){let{machineId:t}=e,n=t?t.slice(0,7):`…`;return g(`div`,{className:G.compactRow,"data-testid":`status-compact-row`,children:[h(`span`,{className:G.statusDot,style:{backgroundColor:`var(--color-success)`}}),h(`span`,{className:G.compactLabel,children:`Running`}),h(`span`,{className:G.compactMachineId,children:n})]})}function Ne(e){let{size:t}=e,n=t===`medium`,{copyFeedback:r,copyMachineId:i,extensions:a,machineId:o}=Ee(t!==`small`);return t===`small`?h(`div`,{className:G.widget,"data-component":`StatusWidget`,"data-size":t,children:h(Me,{machineId:o})}):g(`div`,{className:G.widget,"data-component":`StatusWidget`,"data-size":t,children:[h(De,{copyFeedback:r,copyMachineId:i,machineId:o}),h(n?je:ke,{extensions:a}),h(Ae,{})]})}const Pe={allowMultiple:!1,component:Ne,defaultSize:`large`,description:`Runtime and extension health for the framework shell.`,id:`framework-status`,name:`Status`,scope:[`global`,`tray`],supportedSizes:[`small`,`medium`,`large`,`full-width`],trayDefaultSize:`small`},Fe=`application/vnd.makaio.widget+json`,Ie=e=>!e||typeof e!=`object`?!1:typeof e.widgetId==`string`,Le=(e,t)=>{e.setData(Fe,JSON.stringify(t))},Re=e=>{if(!e)return null;let t=e.getData(Fe);if(!t)return null;try{let e=JSON.parse(t);return Ie(e)?e:null}catch{return null}};var ze=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0});function t(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function n(e){return function(t,n,r,i){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e(t,n,r,i);var a=i.get(t),o=i.get(n);if(a&&o)return a===n&&o===t;i.set(t,n),i.set(n,t);var s=e(t,n,r,i);return i.delete(t),i.delete(n),s}}function r(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function i(e){return e.constructor===Object||e.constructor==null}function a(e){return typeof e.then==`function`}function o(e,t){return e===t||e!==e&&t!==t}var s=`[object Arguments]`,c=`[object Boolean]`,l=`[object Date]`,u=`[object RegExp]`,d=`[object Map]`,f=`[object Number]`,p=`[object Object]`,m=`[object Set]`,h=`[object String]`,g=Object.prototype.toString;function _(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areMapsEqual,_=e.areObjectsEqual,v=e.areRegExpsEqual,y=e.areSetsEqual,b=e.createIsNestedEqual,x=b(S);function S(e,b,S){if(e===b)return!0;if(!e||!b||typeof e!=`object`||typeof b!=`object`)return e!==e&&b!==b;if(i(e)&&i(b))return _(e,b,x,S);var C=Array.isArray(e),w=Array.isArray(b);if(C||w)return C===w&&t(e,b,x,S);var T=g.call(e);return T===g.call(b)?T===l?n(e,b,x,S):T===u?v(e,b,x,S):T===d?r(e,b,x,S):T===m?y(e,b,x,S):T===p||T===s?a(e)||a(b)?!1:_(e,b,x,S):T===c||T===f||T===h?o(e.valueOf(),b.valueOf()):!1:!1}return S}function v(e,t,n,r){var i=e.length;if(t.length!==i)return!1;for(;i-- >0;)if(!n(e[i],t[i],i,i,e,t,r))return!1;return!0}var y=n(v);function b(e,t){return o(e.valueOf(),t.valueOf())}function x(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={},o=0;return e.forEach(function(s,c){if(i){var l=!1,u=0;t.forEach(function(i,d){!l&&!a[u]&&(l=n(c,d,o,u,e,t,r)&&n(s,i,c,d,e,t,r))&&(a[u]=!0),u++}),o++,i=l}}),i}var S=n(x),C=`_owner`,w=Object.prototype.hasOwnProperty;function T(e,t,n,r){var i=Object.keys(e),a=i.length;if(Object.keys(t).length!==a)return!1;for(var o;a-- >0;){if(o=i[a],o===C){var s=!!e.$$typeof,c=!!t.$$typeof;if((s||c)&&s!==c)return!1}if(!w.call(t,o)||!n(e[o],t[o],o,o,e,t,r))return!1}return!0}var E=n(T);function D(e,t){return e.source===t.source&&e.flags===t.flags}function O(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={};return e.forEach(function(o,s){if(i){var c=!1,l=0;t.forEach(function(i,u){!c&&!a[l]&&(c=n(o,i,s,u,e,t,r))&&(a[l]=!0),l++}),i=c}}),i}var k=n(O),A=Object.freeze({areArraysEqual:v,areDatesEqual:b,areMapsEqual:x,areObjectsEqual:T,areRegExpsEqual:D,areSetsEqual:O,createIsNestedEqual:t}),j=Object.freeze({areArraysEqual:y,areDatesEqual:b,areMapsEqual:S,areObjectsEqual:E,areRegExpsEqual:D,areSetsEqual:k,createIsNestedEqual:t}),M=_(A);function N(e,t){return M(e,t,void 0)}var P=_(r(A,{createIsNestedEqual:function(){return o}}));function F(e,t){return P(e,t,void 0)}var I=_(j);function L(e,t){return I(e,t,new WeakMap)}var R=_(r(j,{createIsNestedEqual:function(){return o}}));function z(e,t){return R(e,t,new WeakMap)}function ee(e){return _(r(A,e(A)))}function te(e){var t=_(r(j,e(j)));return(function(e,n,r){return r===void 0&&(r=new WeakMap),t(e,n,r)})}e.circularDeepEqual=L,e.circularShallowEqual=z,e.createCustomCircularEqual=te,e.createCustomEqual=ee,e.deepEqual=N,e.sameValueZeroEqual=o,e.shallowEqual=F})),Be=n(((e,t)=>{function n(e){var t,r,i=``;if(typeof e==`string`||typeof e==`number`)i+=e;else if(typeof e==`object`)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=n(e[t]))&&(i&&(i+=` `),i+=r)}else for(r in e)e[r]&&(i&&(i+=` `),i+=r);return i}function r(){for(var e,t,r=0,i=``,a=arguments.length;r<a;r++)(e=arguments[r])&&(t=n(e))&&(i&&(i+=` `),i+=t);return i}t.exports=r,t.exports.clsx=r})),Ve=n(((e,t)=>{t.exports=function(e,t,n){return e===t?!0:e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}})),He=n((t=>{Object.defineProperty(t,`__esModule`,{value:!0}),t.bottom=d,t.childrenEqual=g,t.cloneLayout=f,t.cloneLayoutItem=h,t.collides=v,t.compact=y,t.compactItem=S,t.compactType=se,t.correctBounds=C,t.fastPositionEqual=_,t.fastRGLPropsEqual=void 0,t.getAllCollisions=E,t.getFirstCollision=T,t.getLayoutItem=w,t.getStatics=D,t.modifyLayout=p,t.moveElement=O,t.moveElementAwayFromCollision=k,t.noop=void 0,t.perc=A,t.resizeItemInDirection=ee,t.setTopLeft=ne,t.setTransform=te,t.sortLayoutItems=re,t.sortLayoutItemsByColRow=B,t.sortLayoutItemsByRowCol=ie,t.synchronizeLayoutWithChildren=ae,t.validateLayout=oe,t.withLayoutItem=m;var n=ze(),r=i(e(`react`));function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?a(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e){var t=l(e,`string`);return typeof t==`symbol`?t:t+``}function l(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}let u=process.env.NODE_ENV===`production`;function d(e){let t=0,n;for(let r=0,i=e.length;r<i;r++)n=e[r].y+e[r].h,n>t&&(t=n);return t}function f(e){let t=Array(e.length);for(let n=0,r=e.length;n<r;n++)t[n]=h(e[n]);return t}function p(e,t){let n=Array(e.length);for(let r=0,i=e.length;r<i;r++)t.i===e[r].i?n[r]=t:n[r]=e[r];return n}function m(e,t,n){let r=w(e,t);return r?(r=n(h(r)),e=p(e,r),[e,r]):[e,null]}function h(e){return{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}}function g(e,t){return(0,n.deepEqual)(r.default.Children.map(e,e=>e?.key),r.default.Children.map(t,e=>e?.key))&&(0,n.deepEqual)(r.default.Children.map(e,e=>e?.props[`data-grid`]),r.default.Children.map(t,e=>e?.props[`data-grid`]))}t.fastRGLPropsEqual=Ve();function _(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height}function v(e,t){return!(e.i===t.i||e.x+e.w<=t.x||e.x>=t.x+t.w||e.y+e.h<=t.y||e.y>=t.y+t.h)}function y(e,t,n,r){let i=D(e),a=d(i),o=re(e,t),s=Array(e.length);for(let c=0,l=o.length;c<l;c++){let l=h(o[c]);l.static||(l=S(i,l,t,n,o,r,a),a=Math.max(a,l.y+l.h),i.push(l)),s[e.indexOf(o[c])]=l,l.moved=!1}return s}let b={x:`w`,y:`h`};function x(e,t,n,r){let i=b[r];t[r]+=1;let a=e.map(e=>e.i).indexOf(t.i);for(let o=a+1;o<e.length;o++){let a=e[o];if(!a.static){if(a.y>t.y+t.h)break;v(t,a)&&x(e,a,n+t[i],r)}}t[r]=n}function S(e,t,n,r,i,a,o){let s=n===`vertical`,c=n===`horizontal`;if(s)for(typeof o==`number`?t.y=Math.min(o,t.y):t.y=Math.min(d(e),t.y);t.y>0&&!T(e,t);)t.y--;else if(c)for(;t.x>0&&!T(e,t);)t.x--;let l;for(;(l=T(e,t))&&!(n===null&&a);)if(c?x(i,t,l.x+l.w,`x`):x(i,t,l.y+l.h,`y`),c&&t.x+t.w>r)for(t.x=r-t.w,t.y++;t.x>0&&!T(e,t);)t.x--;return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function C(e,t){let n=D(e);for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i.x+i.w>t.cols&&(i.x=t.cols-i.w),i.x<0&&(i.x=0,i.w=t.cols),!i.static)n.push(i);else for(;T(n,i);)i.y++}return e}function w(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n].i===t)return e[n]}function T(e,t){for(let n=0,r=e.length;n<r;n++)if(v(e[n],t))return e[n]}function E(e,t){return e.filter(e=>v(e,t))}function D(e){return e.filter(e=>e.static)}function O(e,t,n,r,i,a,o,s,c){if(t.static&&t.isDraggable!==!0||t.y===r&&t.x===n)return e;`${t.i}${String(n)}${String(r)}${t.x}${t.y}`;let l=t.x,u=t.y;typeof n==`number`&&(t.x=n),typeof r==`number`&&(t.y=r),t.moved=!0;let d=re(e,o);(o===`vertical`&&typeof r==`number`?u>=r:o===`horizontal`&&typeof n==`number`&&l>=n)&&(d=d.reverse());let p=E(d,t),m=p.length>0;if(m&&c)return f(e);if(m&&a)return`${t.i}`,t.x=l,t.y=u,t.moved=!1,e;for(let n=0,r=p.length;n<r;n++){let r=p[n];`${t.i}${t.x}${t.y}${r.i}${r.x}${r.y}`,!r.moved&&(e=r.static?k(e,r,t,i,o,s):k(e,t,r,i,o,s))}return e}function k(e,t,n,r,i,a){let o=i===`horizontal`,s=i===`vertical`,c=t.static;if(r){r=!1;let l={x:o?Math.max(t.x-n.w,0):n.x,y:s?Math.max(t.y-n.h,0):n.y,w:n.w,h:n.h,i:`-1`},u=T(e,l),d=u&&u.y+u.h>t.y,f=u&&t.x+t.w>u.x;if(!u)return`${n.i}${l.x}${l.y}`,O(e,n,o?l.x:void 0,s?l.y:void 0,r,c,i,a);if(d&&s)return O(e,n,void 0,n.y+1,r,c,i,a);if(d&&i==null)return t.y=n.y,n.y+=n.h,e;if(f&&o)return O(e,t,n.x,void 0,r,c,i,a)}let l=o?n.x+1:void 0,u=s?n.y+1:void 0;return l==null&&u==null?e:O(e,n,o?n.x+1:void 0,s?n.y+1:void 0,r,c,i,a)}function A(e){return e*100+`%`}let j=(e,t,n,r)=>e+n>r?t:n,M=(e,t,n)=>e<0?t:n,N=e=>Math.max(0,e),P=e=>Math.max(0,e),F=(e,t,n)=>{let{left:r,height:i,width:a}=t,o=e.top-(i-e.height);return{left:r,width:a,height:M(o,e.height,i),top:P(o)}},I=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{top:r,height:a,width:j(e.left,e.width,o,n),left:N(i)}},L=(e,t,n)=>{let{top:r,height:i,width:a}=t,o=e.left-(a-e.width);return{height:i,width:o<0?e.width:j(e.left,e.width,a,n),top:P(r),left:N(o)}},R=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{width:o,left:i,height:M(r,e.height,a),top:P(r)}},z={n:F,ne:function(){return F(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])},e:I,se:function(){return R(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])},s:R,sw:function(){return R(arguments.length<=0?void 0:arguments[0],L(...arguments),arguments.length<=2?void 0:arguments[2])},w:L,nw:function(){return F(arguments.length<=0?void 0:arguments[0],L(...arguments),arguments.length<=2?void 0:arguments[2])}};function ee(e,t,n,r){let i=z[e];return i?i(t,o(o({},t),n),r):n}function te(e){let{top:t,left:n,width:r,height:i}=e,a=`translate(${n}px,${t}px)`;return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:`${r}px`,height:`${i}px`,position:`absolute`}}function ne(e){let{top:t,left:n,width:r,height:i}=e;return{top:`${t}px`,left:`${n}px`,width:`${r}px`,height:`${i}px`,position:`absolute`}}function re(e,t){return t===`horizontal`?B(e):t===`vertical`?ie(e):e}function ie(e){return e.slice(0).sort(function(e,t){return e.y>t.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1})}function B(e){return e.slice(0).sort(function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1})}function ae(e,t,n,i,a){e||=[];let s=[];r.default.Children.forEach(t,t=>{if(t?.key==null)return;let n=w(e,String(t.key)),r=t.props[`data-grid`];n&&r==null?s.push(h(n)):r?(u||oe([r],`ReactGridLayout.children`),s.push(h(o(o({},r),{},{i:t.key})))):s.push(h({w:1,h:1,x:0,y:d(s),i:String(t.key)}))});let c=C(s,{cols:n});return a?c:y(c,i,n)}function oe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Layout`,n=[`x`,`y`,`w`,`h`];if(!Array.isArray(e))throw Error(t+` must be an array!`);for(let r=0,i=e.length;r<i;r++){let i=e[r];for(let e=0;e<n.length;e++){let a=n[e],o=i[a];if(typeof o!=`number`||Number.isNaN(o))throw Error(`ReactGridLayout: ${t}[${r}].${a} must be a number! Received: ${o} (${typeof o})`)}if(i.i!==void 0&&typeof i.i!=`string`)throw Error(`ReactGridLayout: ${t}[${r}].i must be a string! Received: ${i.i} (${typeof i.i})`)}}function se(e){let{verticalCompact:t,compactType:n}=e||{};return t===!1?null:n}t.noop=()=>{}})),Ue=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.calcGridColWidth=t,e.calcGridItemPosition=r,e.calcGridItemWHPx=n,e.calcWH=a,e.calcXY=i,e.clamp=o;function t(e){let{margin:t,containerPadding:n,containerWidth:r,cols:i}=e;return(r-t[0]*(i-1)-n[0]*2)/i}function n(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function r(e,r,i,a,o,s){let{margin:c,containerPadding:l,rowHeight:u}=e,d=t(e),f={};return s&&s.resizing?(f.width=Math.round(s.resizing.width),f.height=Math.round(s.resizing.height)):(f.width=n(a,d,c[0]),f.height=n(o,u,c[1])),s&&s.dragging?(f.top=Math.round(s.dragging.top),f.left=Math.round(s.dragging.left)):s&&s.resizing&&typeof s.resizing.top==`number`&&typeof s.resizing.left==`number`?(f.top=Math.round(s.resizing.top),f.left=Math.round(s.resizing.left)):(f.top=Math.round((u+c[1])*i+l[1]),f.left=Math.round((d+c[0])*r+l[0])),f}function i(e,n,r,i,a){let{margin:s,containerPadding:c,cols:l,rowHeight:u,maxRows:d}=e,f=t(e),p=Math.round((r-c[0])/(f+s[0])),m=Math.round((n-c[1])/(u+s[1]));return p=o(p,0,l-i),m=o(m,0,d-a),{x:p,y:m}}function a(e,n,r,i,a,s){let{margin:c,maxRows:l,cols:u,rowHeight:d}=e,f=t(e),p=Math.round((n+c[0])/(f+c[0])),m=Math.round((r+c[1])/(d+c[1])),h=o(p,0,u-i),g=o(m,0,l-a);return[`sw`,`w`,`nw`].indexOf(s)!==-1&&(h=o(p,0,u)),[`nw`,`n`,`ne`].indexOf(s)!==-1&&(g=o(m,0,l)),{w:h,h:g}}function o(e,t,n){return Math.max(Math.min(e,n),t)}})),We=n((e=>{
1
+ import{n as e,r as t,t as n}from"../chunk-cpUYaJdV.mjs";import r,{Component as i,Suspense as a,forwardRef as o,isValidElement as s,useCallback as c,useEffect as l,useId as u,useMemo as d,useRef as f,useState as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"react-dom";import{DEFAULT_WIDGET_UI_CONTEXT as v,SHELL_BG_COLOR as y,SHELL_FONT_FAMILY as b,SHELL_TEXT_COLOR as x,TRAY_CELL_MARGIN as S,TRAY_GRID_COLS as C,TRAY_GRID_WIDTH_PX as w,TRAY_ROW_HEIGHT_PX as T,WidgetSubjects as E,createRuntimeReadyWaiter as D,defaultNavigationGroups as O,getRegisteredExtensionBrowserFactory as k,isOverlayMode as A,registerExtensionUI as j,registerWidget as M,resolveExtensionBrowserFactory as N,runCleanupsInReverse as P,unregisterExtensionBrowserFactory as F,unregisterWidget as I,widgetMatchesScope as L,widgetRegistry as R}from"@makaio/framework/ui-kernel";import{ExtensionSubjects as z,KernelSubjects as ee}from"@makaio/framework/kernel";import{HostSubjects as te}from"@makaio/framework/contracts";import{BusProvider as ne,groupPagesByNavigationGroup as re,loadExtensionBrowserContributions as ie,useBus as B,useNavigationLevel as ae,useOptionalBus as oe,usePageComponent as se,usePageOverlayStore as ce,useSidebarStore as V,useTrayLayout as le,useWidgetLayout as ue,useWidgetLayoutActions as H,useWidgets as U,useWindowContext as de,useWindowIdPages as fe}from"@makaio/framework/ui-hooks";import{CloseIcon as pe,MultiActionToast as me,NavSidebar as he,useBodyScrollLock as ge,useEscapeKey as _e,useFocusOnOpen as ve,useFocusTrap as ye}from"@makaio/framework/ui-components";import{ToastSubjects as be}from"@makaio/framework/contracts/toast";var W={container:`ZryHjW_container`,content:`ZryHjW_content`,error:`ZryHjW_error`,errorMessage:`ZryHjW_errorMessage`,flexible:`ZryHjW_flexible`,header:`ZryHjW_header`,large:`ZryHjW_large`,medium:`ZryHjW_medium`,removeButton:`ZryHjW_removeButton`,retryButton:`ZryHjW_retryButton`,small:`ZryHjW_small`,title:`ZryHjW_title`},xe=class extends i{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(){this.props.onError()}render(){return this.state.hasError?null:this.props.children}};function Se({instanceId:e,title:t,size:n,children:r,onRemove:i}){let[a,o]=p(!1);return a?g(`div`,{className:`${W.container} ${W[n]} ${W.error}`,children:[h(`div`,{className:W.header,children:h(`span`,{className:W.title,children:t})}),g(`div`,{className:W.content,children:[h(`p`,{className:W.errorMessage,children:`Widget failed to render`}),h(`button`,{type:`button`,className:W.retryButton,onClick:()=>o(!1),children:`Retry`})]})]}):g(`div`,{className:`${W.container} ${W[n]}`,"data-widget-instance":e,children:[g(`div`,{className:W.header,children:[h(`span`,{className:W.title,children:t}),i&&h(`button`,{type:`button`,className:W.removeButton,onClick:i,"aria-label":`Remove widget`,title:`Remove widget`,children:`×`})]}),h(`div`,{className:W.content,children:h(xe,{onError:()=>o(!0),children:r})})]})}var G={compactLabel:`iC7Dmq_compactLabel`,compactMachineId:`iC7Dmq_compactMachineId`,compactRow:`iC7Dmq_compactRow`,emptyExtensions:`iC7Dmq_emptyExtensions`,extensionCard:`iC7Dmq_extensionCard`,extensionError:`iC7Dmq_extensionError`,extensionHeader:`iC7Dmq_extensionHeader`,extensionsList:`iC7Dmq_extensionsList`,extensionsSection:`iC7Dmq_extensionsSection`,extensionStatus:`iC7Dmq_extensionStatus`,feedbackError:`iC7Dmq_feedbackError`,feedbackSuccess:`iC7Dmq_feedbackSuccess`,machineIdButton:`iC7Dmq_machineIdButton`,restartButton:`iC7Dmq_restartButton`,section:`iC7Dmq_section`,sectionLabel:`iC7Dmq_sectionLabel`,statusDot:`iC7Dmq_statusDot`,summaryRow:`iC7Dmq_summaryRow`,summaryText:`iC7Dmq_summaryText`,widget:`iC7Dmq_widget`};const Ce={active:`var(--color-success)`,discovered:`var(--color-text-muted)`,failed:`var(--color-danger)`,initializing:`var(--color-text-secondary)`,skipped:`var(--color-text-muted)`,stopped:`var(--color-text-muted)`};function K(e){return e.length<=18?e:`${e.slice(0,8)}...${e.slice(-8)}`}function we(){let e=B(),t=f(0),[n,r]=p(null);return l(()=>{let n=++t.current,i=()=>t.current===n;return(async()=>{try{let{machineId:t}=await e.request(ee.isReady,{});i()&&r(t)}catch(e){i()&&console.error(`[StatusWidget] Failed to load runtime status`,e)}})(),()=>{++t.current}},[e]),n}function Te(e){let t=B(),n=f(0),r=f(!1),[i,a]=p([]);return l(()=>{if(!e){r.current=!1,a([]);return}let i=++n.current,o=()=>n.current===i,s=async()=>{try{let{extensions:e}=await t.request(z.list,{});if(!o())return;r.current=!0,a(e)}catch(e){o()&&console.error(`[StatusWidget] Failed to load extension status`,e)}},c=()=>{s()},l=t.on(z.stateChanged,e=>{a(t=>{if(!r.current)return c(),t;let n=t.find(t=>t.name===e.payload.name);if(!n)return c(),t;let i=t.filter(t=>t.name!==e.payload.name);return i.push({browser:n.browser,critical:n.critical,displayName:e.payload.displayName,enabled:n.enabled,error:e.payload.error,extensionManaged:n.extensionManaged,name:e.payload.name,persistedEnabled:n.persistedEnabled,state:e.payload.to,surface:n.surface}),i.sort((e,t)=>e.displayName.localeCompare(t.displayName))})});return s(),()=>{++n.current,r.current=!1,l()}},[t,e]),i}function Ee(e){let t=f(null),n=we(),r=Te(e),[i,a]=p(`idle`),o=()=>{t.current!==null&&clearTimeout(t.current),t.current=setTimeout(()=>{t.current=null,a(`idle`)},2e3)};return l(()=>()=>{t.current!==null&&(clearTimeout(t.current),t.current=null)},[]),{copyFeedback:i,copyMachineId:async()=>{if(!n||typeof navigator>`u`||!navigator.clipboard){a(`error`),o();return}try{await navigator.clipboard.writeText(n),a(`success`),o()}catch(e){a(`error`),o(),console.error(`[StatusWidget] Failed to copy machine ID`,e)}},extensions:r,machineId:n}}function De(e){let{copyFeedback:t,copyMachineId:n,machineId:r}=e;return g(`div`,{className:G.section,children:[h(`span`,{className:G.sectionLabel,children:`Runtime`}),h(`button`,{className:G.machineIdButton,disabled:!r,onClick:r?()=>void n():void 0,title:r?`Copy machine ID`:`Machine ID unavailable`,type:`button`,children:r?K(r):`Machine ID unavailable`}),t===`success`?h(`span`,{"aria-live":`polite`,className:G.feedbackSuccess,children:`Copied machine ID.`}):null,t===`error`?h(`span`,{"aria-live":`polite`,className:G.feedbackError,children:`Failed to copy machine ID.`}):null]})}function Oe(e){let{extension:t}=e;return g(`div`,{className:G.extensionCard,children:[g(`div`,{className:G.extensionHeader,children:[h(`span`,{children:t.displayName}),g(`span`,{className:G.extensionStatus,children:[h(`span`,{className:G.statusDot,style:{backgroundColor:Ce[t.state]}}),t.state]})]}),t.error?h(`span`,{className:G.extensionError,children:t.error}):null]})}function ke(e){let{extensions:t}=e;return g(`div`,{className:G.extensionsSection,children:[h(`span`,{className:G.sectionLabel,children:`Extensions`}),h(`div`,{className:G.extensionsList,children:t.length===0?h(`div`,{className:G.emptyExtensions,children:`No extensions registered.`}):t.map(e=>h(Oe,{extension:e},e.name))})]})}function Ae(){return h(`button`,{className:G.restartButton,disabled:!0,title:`Not yet available`,type:`button`,children:`Restart Runtime`})}function je(e){let{extensions:t}=e,n=new Map;for(let e of t)n.set(e.state,(n.get(e.state)??0)+1);if(t.length===0)return h(`span`,{className:G.summaryText,children:`No extensions registered.`});let r=[],i=n.get(`active`)??0;i>0&&r.push(`${i} active`);let a=n.get(`failed`)??0;a>0&&r.push(`${a} failed`);let o=t.length-i-a;return o>0&&r.push(`${o} other`),g(`div`,{className:G.summaryRow,children:[h(`span`,{className:G.sectionLabel,children:`Extensions`}),h(`span`,{className:G.summaryText,children:r.join(`, `)}),a>0?h(`span`,{className:G.statusDot,style:{backgroundColor:`var(--color-danger)`}}):null]})}function Me(e){let{machineId:t}=e,n=t?t.slice(0,7):`…`;return g(`div`,{className:G.compactRow,"data-testid":`status-compact-row`,children:[h(`span`,{className:G.statusDot,style:{backgroundColor:`var(--color-success)`}}),h(`span`,{className:G.compactLabel,children:`Running`}),h(`span`,{className:G.compactMachineId,children:n})]})}function Ne(e){let{size:t}=e,n=t===`medium`,{copyFeedback:r,copyMachineId:i,extensions:a,machineId:o}=Ee(t!==`small`);return t===`small`?h(`div`,{className:G.widget,"data-component":`StatusWidget`,"data-size":t,children:h(Me,{machineId:o})}):g(`div`,{className:G.widget,"data-component":`StatusWidget`,"data-size":t,children:[h(De,{copyFeedback:r,copyMachineId:i,machineId:o}),h(n?je:ke,{extensions:a}),h(Ae,{})]})}const Pe={allowMultiple:!1,component:Ne,defaultSize:`large`,description:`Runtime and extension health for the framework shell.`,id:`framework-status`,name:`Status`,scope:[`global`,`tray`],supportedSizes:[`small`,`medium`,`large`,`full-width`],trayDefaultSize:`small`},Fe=`application/vnd.makaio.widget+json`,Ie=e=>!e||typeof e!=`object`?!1:typeof e.widgetId==`string`,Le=(e,t)=>{e.setData(Fe,JSON.stringify(t))},Re=e=>{if(!e)return null;let t=e.getData(Fe);if(!t)return null;try{let e=JSON.parse(t);return Ie(e)?e:null}catch{return null}};var ze=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0});function t(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function n(e){return function(t,n,r,i){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e(t,n,r,i);var a=i.get(t),o=i.get(n);if(a&&o)return a===n&&o===t;i.set(t,n),i.set(n,t);var s=e(t,n,r,i);return i.delete(t),i.delete(n),s}}function r(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function i(e){return e.constructor===Object||e.constructor==null}function a(e){return typeof e.then==`function`}function o(e,t){return e===t||e!==e&&t!==t}var s=`[object Arguments]`,c=`[object Boolean]`,l=`[object Date]`,u=`[object RegExp]`,d=`[object Map]`,f=`[object Number]`,p=`[object Object]`,m=`[object Set]`,h=`[object String]`,g=Object.prototype.toString;function _(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areMapsEqual,_=e.areObjectsEqual,v=e.areRegExpsEqual,y=e.areSetsEqual,b=e.createIsNestedEqual,x=b(S);function S(e,b,S){if(e===b)return!0;if(!e||!b||typeof e!=`object`||typeof b!=`object`)return e!==e&&b!==b;if(i(e)&&i(b))return _(e,b,x,S);var C=Array.isArray(e),w=Array.isArray(b);if(C||w)return C===w&&t(e,b,x,S);var T=g.call(e);return T===g.call(b)?T===l?n(e,b,x,S):T===u?v(e,b,x,S):T===d?r(e,b,x,S):T===m?y(e,b,x,S):T===p||T===s?a(e)||a(b)?!1:_(e,b,x,S):T===c||T===f||T===h?o(e.valueOf(),b.valueOf()):!1:!1}return S}function v(e,t,n,r){var i=e.length;if(t.length!==i)return!1;for(;i-- >0;)if(!n(e[i],t[i],i,i,e,t,r))return!1;return!0}var y=n(v);function b(e,t){return o(e.valueOf(),t.valueOf())}function x(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={},o=0;return e.forEach(function(s,c){if(i){var l=!1,u=0;t.forEach(function(i,d){!l&&!a[u]&&(l=n(c,d,o,u,e,t,r)&&n(s,i,c,d,e,t,r))&&(a[u]=!0),u++}),o++,i=l}}),i}var S=n(x),C=`_owner`,w=Object.prototype.hasOwnProperty;function T(e,t,n,r){var i=Object.keys(e),a=i.length;if(Object.keys(t).length!==a)return!1;for(var o;a-- >0;){if(o=i[a],o===C){var s=!!e.$$typeof,c=!!t.$$typeof;if((s||c)&&s!==c)return!1}if(!w.call(t,o)||!n(e[o],t[o],o,o,e,t,r))return!1}return!0}var E=n(T);function D(e,t){return e.source===t.source&&e.flags===t.flags}function O(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={};return e.forEach(function(o,s){if(i){var c=!1,l=0;t.forEach(function(i,u){!c&&!a[l]&&(c=n(o,i,s,u,e,t,r))&&(a[l]=!0),l++}),i=c}}),i}var k=n(O),A=Object.freeze({areArraysEqual:v,areDatesEqual:b,areMapsEqual:x,areObjectsEqual:T,areRegExpsEqual:D,areSetsEqual:O,createIsNestedEqual:t}),j=Object.freeze({areArraysEqual:y,areDatesEqual:b,areMapsEqual:S,areObjectsEqual:E,areRegExpsEqual:D,areSetsEqual:k,createIsNestedEqual:t}),M=_(A);function N(e,t){return M(e,t,void 0)}var P=_(r(A,{createIsNestedEqual:function(){return o}}));function F(e,t){return P(e,t,void 0)}var I=_(j);function L(e,t){return I(e,t,new WeakMap)}var R=_(r(j,{createIsNestedEqual:function(){return o}}));function z(e,t){return R(e,t,new WeakMap)}function ee(e){return _(r(A,e(A)))}function te(e){var t=_(r(j,e(j)));return(function(e,n,r){return r===void 0&&(r=new WeakMap),t(e,n,r)})}e.circularDeepEqual=L,e.circularShallowEqual=z,e.createCustomCircularEqual=te,e.createCustomEqual=ee,e.deepEqual=N,e.sameValueZeroEqual=o,e.shallowEqual=F})),Be=n(((e,t)=>{function n(e){var t,r,i=``;if(typeof e==`string`||typeof e==`number`)i+=e;else if(typeof e==`object`)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=n(e[t]))&&(i&&(i+=` `),i+=r)}else for(r in e)e[r]&&(i&&(i+=` `),i+=r);return i}function r(){for(var e,t,r=0,i=``,a=arguments.length;r<a;r++)(e=arguments[r])&&(t=n(e))&&(i&&(i+=` `),i+=t);return i}t.exports=r,t.exports.clsx=r})),Ve=n(((e,t)=>{t.exports=function(e,t,n){return e===t?!0:e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}})),He=n((t=>{Object.defineProperty(t,`__esModule`,{value:!0}),t.bottom=d,t.childrenEqual=g,t.cloneLayout=f,t.cloneLayoutItem=h,t.collides=v,t.compact=y,t.compactItem=S,t.compactType=se,t.correctBounds=C,t.fastPositionEqual=_,t.fastRGLPropsEqual=void 0,t.getAllCollisions=E,t.getFirstCollision=T,t.getLayoutItem=w,t.getStatics=D,t.modifyLayout=p,t.moveElement=O,t.moveElementAwayFromCollision=k,t.noop=void 0,t.perc=A,t.resizeItemInDirection=ee,t.setTopLeft=ne,t.setTransform=te,t.sortLayoutItems=re,t.sortLayoutItemsByColRow=B,t.sortLayoutItemsByRowCol=ie,t.synchronizeLayoutWithChildren=ae,t.validateLayout=oe,t.withLayoutItem=m;var n=ze(),r=i(e(`react`));function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?a(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e){var t=l(e,`string`);return typeof t==`symbol`?t:t+``}function l(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}let u=process.env.NODE_ENV===`production`;function d(e){let t=0,n;for(let r=0,i=e.length;r<i;r++)n=e[r].y+e[r].h,n>t&&(t=n);return t}function f(e){let t=Array(e.length);for(let n=0,r=e.length;n<r;n++)t[n]=h(e[n]);return t}function p(e,t){let n=Array(e.length);for(let r=0,i=e.length;r<i;r++)t.i===e[r].i?n[r]=t:n[r]=e[r];return n}function m(e,t,n){let r=w(e,t);return r?(r=n(h(r)),e=p(e,r),[e,r]):[e,null]}function h(e){return{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}}function g(e,t){return(0,n.deepEqual)(r.default.Children.map(e,e=>e?.key),r.default.Children.map(t,e=>e?.key))&&(0,n.deepEqual)(r.default.Children.map(e,e=>e?.props[`data-grid`]),r.default.Children.map(t,e=>e?.props[`data-grid`]))}t.fastRGLPropsEqual=Ve();function _(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height}function v(e,t){return!(e.i===t.i||e.x+e.w<=t.x||e.x>=t.x+t.w||e.y+e.h<=t.y||e.y>=t.y+t.h)}function y(e,t,n,r){let i=D(e),a=d(i),o=re(e,t),s=Array(e.length);for(let c=0,l=o.length;c<l;c++){let l=h(o[c]);l.static||(l=S(i,l,t,n,o,r,a),a=Math.max(a,l.y+l.h),i.push(l)),s[e.indexOf(o[c])]=l,l.moved=!1}return s}let b={x:`w`,y:`h`};function x(e,t,n,r){let i=b[r];t[r]+=1;let a=e.map(e=>e.i).indexOf(t.i);for(let o=a+1;o<e.length;o++){let a=e[o];if(!a.static){if(a.y>t.y+t.h)break;v(t,a)&&x(e,a,n+t[i],r)}}t[r]=n}function S(e,t,n,r,i,a,o){let s=n===`vertical`,c=n===`horizontal`;if(s)for(typeof o==`number`?t.y=Math.min(o,t.y):t.y=Math.min(d(e),t.y);t.y>0&&!T(e,t);)t.y--;else if(c)for(;t.x>0&&!T(e,t);)t.x--;let l;for(;(l=T(e,t))&&!(n===null&&a);)if(c?x(i,t,l.x+l.w,`x`):x(i,t,l.y+l.h,`y`),c&&t.x+t.w>r)for(t.x=r-t.w,t.y++;t.x>0&&!T(e,t);)t.x--;return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function C(e,t){let n=D(e);for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i.x+i.w>t.cols&&(i.x=t.cols-i.w),i.x<0&&(i.x=0,i.w=t.cols),!i.static)n.push(i);else for(;T(n,i);)i.y++}return e}function w(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n].i===t)return e[n]}function T(e,t){for(let n=0,r=e.length;n<r;n++)if(v(e[n],t))return e[n]}function E(e,t){return e.filter(e=>v(e,t))}function D(e){return e.filter(e=>e.static)}function O(e,t,n,r,i,a,o,s,c){if(t.static&&t.isDraggable!==!0||t.y===r&&t.x===n)return e;`${t.i}${String(n)}${String(r)}${t.x}${t.y}`;let l=t.x,u=t.y;typeof n==`number`&&(t.x=n),typeof r==`number`&&(t.y=r),t.moved=!0;let d=re(e,o);(o===`vertical`&&typeof r==`number`?u>=r:o===`horizontal`&&typeof n==`number`&&l>=n)&&(d=d.reverse());let p=E(d,t),m=p.length>0;if(m&&c)return f(e);if(m&&a)return`${t.i}`,t.x=l,t.y=u,t.moved=!1,e;for(let n=0,r=p.length;n<r;n++){let r=p[n];`${t.i}${t.x}${t.y}${r.i}${r.x}${r.y}`,!r.moved&&(e=r.static?k(e,r,t,i,o,s):k(e,t,r,i,o,s))}return e}function k(e,t,n,r,i,a){let o=i===`horizontal`,s=i===`vertical`,c=t.static;if(r){r=!1;let l={x:o?Math.max(t.x-n.w,0):n.x,y:s?Math.max(t.y-n.h,0):n.y,w:n.w,h:n.h,i:`-1`},u=T(e,l),d=u&&u.y+u.h>t.y,f=u&&t.x+t.w>u.x;if(!u)return`${n.i}${l.x}${l.y}`,O(e,n,o?l.x:void 0,s?l.y:void 0,r,c,i,a);if(d&&s)return O(e,n,void 0,n.y+1,r,c,i,a);if(d&&i==null)return t.y=n.y,n.y+=n.h,e;if(f&&o)return O(e,t,n.x,void 0,r,c,i,a)}let l=o?n.x+1:void 0,u=s?n.y+1:void 0;return l==null&&u==null?e:O(e,n,o?n.x+1:void 0,s?n.y+1:void 0,r,c,i,a)}function A(e){return e*100+`%`}let j=(e,t,n,r)=>e+n>r?t:n,M=(e,t,n)=>e<0?t:n,N=e=>Math.max(0,e),P=e=>Math.max(0,e),F=(e,t,n)=>{let{left:r,height:i,width:a}=t,o=e.top-(i-e.height);return{left:r,width:a,height:M(o,e.height,i),top:P(o)}},I=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{top:r,height:a,width:j(e.left,e.width,o,n),left:N(i)}},L=(e,t,n)=>{let{top:r,height:i,width:a}=t,o=e.left-(a-e.width);return{height:i,width:o<0?e.width:j(e.left,e.width,a,n),top:P(r),left:N(o)}},R=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{width:o,left:i,height:M(r,e.height,a),top:P(r)}},z={n:F,ne:function(){return F(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])},e:I,se:function(){return R(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])},s:R,sw:function(){return R(arguments.length<=0?void 0:arguments[0],L(...arguments),arguments.length<=2?void 0:arguments[2])},w:L,nw:function(){return F(arguments.length<=0?void 0:arguments[0],L(...arguments),arguments.length<=2?void 0:arguments[2])}};function ee(e,t,n,r){let i=z[e];return i?i(t,o(o({},t),n),r):n}function te(e){let{top:t,left:n,width:r,height:i}=e,a=`translate(${n}px,${t}px)`;return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:`${r}px`,height:`${i}px`,position:`absolute`}}function ne(e){let{top:t,left:n,width:r,height:i}=e;return{top:`${t}px`,left:`${n}px`,width:`${r}px`,height:`${i}px`,position:`absolute`}}function re(e,t){return t===`horizontal`?B(e):t===`vertical`?ie(e):e}function ie(e){return e.slice(0).sort(function(e,t){return e.y>t.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1})}function B(e){return e.slice(0).sort(function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1})}function ae(e,t,n,i,a){e||=[];let s=[];r.default.Children.forEach(t,t=>{if(t?.key==null)return;let n=w(e,String(t.key)),r=t.props[`data-grid`];n&&r==null?s.push(h(n)):r?(u||oe([r],`ReactGridLayout.children`),s.push(h(o(o({},r),{},{i:t.key})))):s.push(h({w:1,h:1,x:0,y:d(s),i:String(t.key)}))});let c=C(s,{cols:n});return a?c:y(c,i,n)}function oe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Layout`,n=[`x`,`y`,`w`,`h`];if(!Array.isArray(e))throw Error(t+` must be an array!`);for(let r=0,i=e.length;r<i;r++){let i=e[r];for(let e=0;e<n.length;e++){let a=n[e],o=i[a];if(typeof o!=`number`||Number.isNaN(o))throw Error(`ReactGridLayout: ${t}[${r}].${a} must be a number! Received: ${o} (${typeof o})`)}if(i.i!==void 0&&typeof i.i!=`string`)throw Error(`ReactGridLayout: ${t}[${r}].i must be a string! Received: ${i.i} (${typeof i.i})`)}}function se(e){let{verticalCompact:t,compactType:n}=e||{};return t===!1?null:n}t.noop=()=>{}})),Ue=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.calcGridColWidth=t,e.calcGridItemPosition=r,e.calcGridItemWHPx=n,e.calcWH=a,e.calcXY=i,e.clamp=o;function t(e){let{margin:t,containerPadding:n,containerWidth:r,cols:i}=e;return(r-t[0]*(i-1)-n[0]*2)/i}function n(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function r(e,r,i,a,o,s){let{margin:c,containerPadding:l,rowHeight:u}=e,d=t(e),f={};return s&&s.resizing?(f.width=Math.round(s.resizing.width),f.height=Math.round(s.resizing.height)):(f.width=n(a,d,c[0]),f.height=n(o,u,c[1])),s&&s.dragging?(f.top=Math.round(s.dragging.top),f.left=Math.round(s.dragging.left)):s&&s.resizing&&typeof s.resizing.top==`number`&&typeof s.resizing.left==`number`?(f.top=Math.round(s.resizing.top),f.left=Math.round(s.resizing.left)):(f.top=Math.round((u+c[1])*i+l[1]),f.left=Math.round((d+c[0])*r+l[0])),f}function i(e,n,r,i,a){let{margin:s,containerPadding:c,cols:l,rowHeight:u,maxRows:d}=e,f=t(e),p=Math.round((r-c[0])/(f+s[0])),m=Math.round((n-c[1])/(u+s[1]));return p=o(p,0,l-i),m=o(m,0,d-a),{x:p,y:m}}function a(e,n,r,i,a,s){let{margin:c,maxRows:l,cols:u,rowHeight:d}=e,f=t(e),p=Math.round((n+c[0])/(f+c[0])),m=Math.round((r+c[1])/(d+c[1])),h=o(p,0,u-i),g=o(m,0,l-a);return[`sw`,`w`,`nw`].indexOf(s)!==-1&&(h=o(p,0,u)),[`nw`,`n`,`ne`].indexOf(s)!==-1&&(g=o(m,0,l)),{w:h,h:g}}function o(e,t,n){return Math.max(Math.min(e,n),t)}})),We=n((e=>{
2
2
  /** @license React v16.13.1
3
3
  * react-is.production.min.js
4
4
  *