@ixo/editor 6.32.1 → 6.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/dist/BidConfig-YLGSEIOS.js +154 -0
  2. package/dist/BidConfig-YLGSEIOS.js.map +1 -0
  3. package/dist/BidFlowDetail-TJCJBJZZ.js +365 -0
  4. package/dist/BidFlowDetail-TJCJBJZZ.js.map +1 -0
  5. package/dist/CalendarEventCreateConfig-J2LU6LJO.js +155 -0
  6. package/dist/CalendarEventCreateConfig-J2LU6LJO.js.map +1 -0
  7. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js +174 -0
  8. package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js.map +1 -0
  9. package/dist/CalendarEventListConfig-GQNNF4ZB.js +116 -0
  10. package/dist/CalendarEventListConfig-GQNNF4ZB.js.map +1 -0
  11. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js +58 -0
  12. package/dist/CalendarEventListFlowDetail-SSRTOXIX.js.map +1 -0
  13. package/dist/CalendarEventUpdateConfig-KACZA6GH.js +133 -0
  14. package/dist/CalendarEventUpdateConfig-KACZA6GH.js.map +1 -0
  15. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js +155 -0
  16. package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js.map +1 -0
  17. package/dist/ClaimConfig-3HKPGK55.js +200 -0
  18. package/dist/ClaimConfig-3HKPGK55.js.map +1 -0
  19. package/dist/ClaimFlowDetail-UVEQMEI5.js +641 -0
  20. package/dist/ClaimFlowDetail-UVEQMEI5.js.map +1 -0
  21. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js +149 -0
  22. package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js.map +1 -0
  23. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js +647 -0
  24. package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js.map +1 -0
  25. package/dist/CollectionUsersConfig-RI2X3YY2.js +271 -0
  26. package/dist/CollectionUsersConfig-RI2X3YY2.js.map +1 -0
  27. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js +1276 -0
  28. package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js.map +1 -0
  29. package/dist/CredentialStoreConfig-G66AQDGZ.js +75 -0
  30. package/dist/CredentialStoreConfig-G66AQDGZ.js.map +1 -0
  31. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js +99 -0
  32. package/dist/CredentialStoreFlowDetail-FL7QAM3S.js.map +1 -0
  33. package/dist/DesignPodConfig-LJ7H2CZ6.js +8 -0
  34. package/dist/DesignPodConfig-LJ7H2CZ6.js.map +1 -0
  35. package/dist/DesignPodFlowDetail-JHJWGNVY.js +309 -0
  36. package/dist/DesignPodFlowDetail-JHJWGNVY.js.map +1 -0
  37. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js +37 -0
  38. package/dist/DomainCardPreviewConfig-Q3X5M4WF.js.map +1 -0
  39. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js +131 -0
  40. package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js.map +1 -0
  41. package/dist/DomainIndexerLookupConfig-N4VONQUY.js +41 -0
  42. package/dist/DomainIndexerLookupConfig-N4VONQUY.js.map +1 -0
  43. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js +70 -0
  44. package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js.map +1 -0
  45. package/dist/DomainSignConfig-XFIXROVK.js +47 -0
  46. package/dist/DomainSignConfig-XFIXROVK.js.map +1 -0
  47. package/dist/DomainSignFlowDetail-BXZ6JBPR.js +206 -0
  48. package/dist/DomainSignFlowDetail-BXZ6JBPR.js.map +1 -0
  49. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js +101 -0
  50. package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js.map +1 -0
  51. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js +147 -0
  52. package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js.map +1 -0
  53. package/dist/EmailSendConfig-YEGZ5Q77.js +215 -0
  54. package/dist/EmailSendConfig-YEGZ5Q77.js.map +1 -0
  55. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js +150 -0
  56. package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js.map +1 -0
  57. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js +120 -0
  58. package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js.map +1 -0
  59. package/dist/EntitySingleSelectionConfig-DL57KNKM.js +30 -0
  60. package/dist/EntitySingleSelectionConfig-DL57KNKM.js.map +1 -0
  61. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js +118 -0
  62. package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js.map +1 -0
  63. package/dist/EntityTransferConfig-JVZ3H35B.js +62 -0
  64. package/dist/EntityTransferConfig-JVZ3H35B.js.map +1 -0
  65. package/dist/EntityTransferFlowDetail-XEXM34XB.js +132 -0
  66. package/dist/EntityTransferFlowDetail-XEXM34XB.js.map +1 -0
  67. package/dist/EvalEngineConfig-CHC4IRN3.js +464 -0
  68. package/dist/EvalEngineConfig-CHC4IRN3.js.map +1 -0
  69. package/dist/EvalEngineFlowDetail-PUFRNO4U.js +4291 -0
  70. package/dist/EvalEngineFlowDetail-PUFRNO4U.js.map +1 -0
  71. package/dist/EvaluateBidConfig-OE4CM43G.js +151 -0
  72. package/dist/EvaluateBidConfig-OE4CM43G.js.map +1 -0
  73. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js +564 -0
  74. package/dist/EvaluateBidFlowDetail-2S2N4YTW.js.map +1 -0
  75. package/dist/EvaluateClaimConfig-3D4F5LHU.js +297 -0
  76. package/dist/EvaluateClaimConfig-3D4F5LHU.js.map +1 -0
  77. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js +2237 -0
  78. package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js.map +1 -0
  79. package/dist/FormSubmitConfig-UFZYMLUN.js +59 -0
  80. package/dist/FormSubmitConfig-UFZYMLUN.js.map +1 -0
  81. package/dist/FormSubmitFlowDetail-IAHDJS6P.js +169 -0
  82. package/dist/FormSubmitFlowDetail-IAHDJS6P.js.map +1 -0
  83. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js +166 -0
  84. package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js.map +1 -0
  85. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js +88 -0
  86. package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js.map +1 -0
  87. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js +88 -0
  88. package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js.map +1 -0
  89. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js +83 -0
  90. package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js.map +1 -0
  91. package/dist/GovernanceConfigConfig-V3WM4WBP.js +30 -0
  92. package/dist/GovernanceConfigConfig-V3WM4WBP.js.map +1 -0
  93. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js +267 -0
  94. package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js.map +1 -0
  95. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js +113 -0
  96. package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js.map +1 -0
  97. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js +144 -0
  98. package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js.map +1 -0
  99. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js +72 -0
  100. package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js.map +1 -0
  101. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js +104 -0
  102. package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js.map +1 -0
  103. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js +68 -0
  104. package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js.map +1 -0
  105. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js +78 -0
  106. package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js.map +1 -0
  107. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js +98 -0
  108. package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js.map +1 -0
  109. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js +94 -0
  110. package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js.map +1 -0
  111. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js +96 -0
  112. package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js.map +1 -0
  113. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js +68 -0
  114. package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js.map +1 -0
  115. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js +93 -0
  116. package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js.map +1 -0
  117. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js +84 -0
  118. package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js.map +1 -0
  119. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js +104 -0
  120. package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js.map +1 -0
  121. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js +42 -0
  122. package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js.map +1 -0
  123. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js +240 -0
  124. package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js.map +1 -0
  125. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js +69 -0
  126. package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js.map +1 -0
  127. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js +71 -0
  128. package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js.map +1 -0
  129. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js +130 -0
  130. package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js.map +1 -0
  131. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js +42 -0
  132. package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js.map +1 -0
  133. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js +165 -0
  134. package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js.map +1 -0
  135. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js +123 -0
  136. package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js.map +1 -0
  137. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js +84 -0
  138. package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js.map +1 -0
  139. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js +111 -0
  140. package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js.map +1 -0
  141. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js +66 -0
  142. package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js.map +1 -0
  143. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js +133 -0
  144. package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js.map +1 -0
  145. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js +42 -0
  146. package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js.map +1 -0
  147. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js +182 -0
  148. package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js.map +1 -0
  149. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js +155 -0
  150. package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js.map +1 -0
  151. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js +56 -0
  152. package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js.map +1 -0
  153. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js +117 -0
  154. package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js.map +1 -0
  155. package/dist/HarvestConfig-AIGOGBFR.js +56 -0
  156. package/dist/HarvestConfig-AIGOGBFR.js.map +1 -0
  157. package/dist/HarvestFlowDetail-X3RUH3X3.js +131 -0
  158. package/dist/HarvestFlowDetail-X3RUH3X3.js.map +1 -0
  159. package/dist/HttpRequestConfig-OQEJIIJY.js +194 -0
  160. package/dist/HttpRequestConfig-OQEJIIJY.js.map +1 -0
  161. package/dist/HttpRequestFlowDetail-JVLV533Z.js +116 -0
  162. package/dist/HttpRequestFlowDetail-JVLV533Z.js.map +1 -0
  163. package/dist/IdentityCreateConfig-ZBUOJ6AL.js +94 -0
  164. package/dist/IdentityCreateConfig-ZBUOJ6AL.js.map +1 -0
  165. package/dist/IdentityCreateFlowDetail-WGKO43IH.js +83 -0
  166. package/dist/IdentityCreateFlowDetail-WGKO43IH.js.map +1 -0
  167. package/dist/IidCreateConfig-RRV2DYXI.js +75 -0
  168. package/dist/IidCreateConfig-RRV2DYXI.js.map +1 -0
  169. package/dist/IidCreateFlowDetail-6M32S6XS.js +57 -0
  170. package/dist/IidCreateFlowDetail-6M32S6XS.js.map +1 -0
  171. package/dist/KycVerifyConfig-VCG65K5K.js +65 -0
  172. package/dist/KycVerifyConfig-VCG65K5K.js.map +1 -0
  173. package/dist/KycVerifyFlowDetail-EWOMXSD3.js +421 -0
  174. package/dist/KycVerifyFlowDetail-EWOMXSD3.js.map +1 -0
  175. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js +37 -0
  176. package/dist/ListDomainFlowsConfig-3JZEPTOJ.js.map +1 -0
  177. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js +257 -0
  178. package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js.map +1 -0
  179. package/dist/LoadBatchesConfig-IMODIWRT.js +38 -0
  180. package/dist/LoadBatchesConfig-IMODIWRT.js.map +1 -0
  181. package/dist/LoadBatchesFlowDetail-GB24T76O.js +101 -0
  182. package/dist/LoadBatchesFlowDetail-GB24T76O.js.map +1 -0
  183. package/dist/MatrixDmConfig-NBII27CS.js +120 -0
  184. package/dist/MatrixDmConfig-NBII27CS.js.map +1 -0
  185. package/dist/MatrixRegisterConfig-N2U4FBYF.js +62 -0
  186. package/dist/MatrixRegisterConfig-N2U4FBYF.js.map +1 -0
  187. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js +86 -0
  188. package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js.map +1 -0
  189. package/dist/MemberMultiSelectConfig-E7WUB2WD.js +30 -0
  190. package/dist/MemberMultiSelectConfig-E7WUB2WD.js.map +1 -0
  191. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js +392 -0
  192. package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js.map +1 -0
  193. package/dist/OracleConfig-R7TDTTKN.js +56 -0
  194. package/dist/OracleConfig-R7TDTTKN.js.map +1 -0
  195. package/dist/OracleConfigureOracleConfig-QFF74X3N.js +198 -0
  196. package/dist/OracleConfigureOracleConfig-QFF74X3N.js.map +1 -0
  197. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js +255 -0
  198. package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js.map +1 -0
  199. package/dist/OracleContractConfig-PHY5L7W2.js +38 -0
  200. package/dist/OracleContractConfig-PHY5L7W2.js.map +1 -0
  201. package/dist/OracleContractFlowDetail-M3PM4AU4.js +78 -0
  202. package/dist/OracleContractFlowDetail-M3PM4AU4.js.map +1 -0
  203. package/dist/OracleDeployConfig-QBG76ATZ.js +10 -0
  204. package/dist/OracleDeployConfig-QBG76ATZ.js.map +1 -0
  205. package/dist/OracleDeployFlowDetail-WKTMD2AD.js +231 -0
  206. package/dist/OracleDeployFlowDetail-WKTMD2AD.js.map +1 -0
  207. package/dist/OracleDeploySetupConfig-75XPGFJQ.js +10 -0
  208. package/dist/OracleDeploySetupConfig-75XPGFJQ.js.map +1 -0
  209. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js +165 -0
  210. package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js.map +1 -0
  211. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js +10 -0
  212. package/dist/OracleDeployStartConfig-NA6GZ4VQ.js.map +1 -0
  213. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js +89 -0
  214. package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js.map +1 -0
  215. package/dist/OracleFlowDetail-5JCJK3GH.js +76 -0
  216. package/dist/OracleFlowDetail-5JCJK3GH.js.map +1 -0
  217. package/dist/OraclePromptConfig-YBRESISH.js +39 -0
  218. package/dist/OraclePromptConfig-YBRESISH.js.map +1 -0
  219. package/dist/OraclePromptFlowDetail-O3XNK7HY.js +112 -0
  220. package/dist/OraclePromptFlowDetail-O3XNK7HY.js.map +1 -0
  221. package/dist/OracleStoreConfigConfig-TUZWTJMA.js +134 -0
  222. package/dist/OracleStoreConfigConfig-TUZWTJMA.js.map +1 -0
  223. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js +99 -0
  224. package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js.map +1 -0
  225. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js +198 -0
  226. package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js.map +1 -0
  227. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js +220 -0
  228. package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js.map +1 -0
  229. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js +191 -0
  230. package/dist/OracleStoreSecretsConfig-PQMF7LFT.js.map +1 -0
  231. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js +197 -0
  232. package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js.map +1 -0
  233. package/dist/ProposalCreateConfig-U5IHZNT7.js +161 -0
  234. package/dist/ProposalCreateConfig-U5IHZNT7.js.map +1 -0
  235. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js +235 -0
  236. package/dist/ProposalCreateFlowDetail-4VZZPAWH.js.map +1 -0
  237. package/dist/ProposalVoteConfig-MH4MU7SL.js +150 -0
  238. package/dist/ProposalVoteConfig-MH4MU7SL.js.map +1 -0
  239. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js +280 -0
  240. package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js.map +1 -0
  241. package/dist/ProtocolSelectConfig-S5U3P6K7.js +48 -0
  242. package/dist/ProtocolSelectConfig-S5U3P6K7.js.map +1 -0
  243. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js +116 -0
  244. package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js.map +1 -0
  245. package/dist/RetireConfig-MV37WWZ6.js +59 -0
  246. package/dist/RetireConfig-MV37WWZ6.js.map +1 -0
  247. package/dist/RetireFlowDetail-VZ5O4SXI.js +147 -0
  248. package/dist/RetireFlowDetail-VZ5O4SXI.js.map +1 -0
  249. package/dist/SandboxProvisionConfig-ZGG4IRHM.js +46 -0
  250. package/dist/SandboxProvisionConfig-ZGG4IRHM.js.map +1 -0
  251. package/dist/SandboxProvisionFlowDetail-RUY64INV.js +79 -0
  252. package/dist/SandboxProvisionFlowDetail-RUY64INV.js.map +1 -0
  253. package/dist/WalletFundConfig-CMM3EP3B.js +117 -0
  254. package/dist/WalletFundConfig-CMM3EP3B.js.map +1 -0
  255. package/dist/WalletFundFlowDetail-TXWCZA4K.js +279 -0
  256. package/dist/WalletFundFlowDetail-TXWCZA4K.js.map +1 -0
  257. package/dist/WalletGenerateAndFundConfig-364RSEND.js +10 -0
  258. package/dist/WalletGenerateAndFundConfig-364RSEND.js.map +1 -0
  259. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js +54 -0
  260. package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js.map +1 -0
  261. package/dist/WalletGenerateConfig-YYLCS65G.js +10 -0
  262. package/dist/WalletGenerateConfig-YYLCS65G.js.map +1 -0
  263. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js +53 -0
  264. package/dist/WalletGenerateFlowDetail-CQCNDGJA.js.map +1 -0
  265. package/dist/XeroContactCreateConfig-OWG5PA3B.js +102 -0
  266. package/dist/XeroContactCreateConfig-OWG5PA3B.js.map +1 -0
  267. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js +127 -0
  268. package/dist/XeroContactCreateFlowDetail-6MAINCF6.js.map +1 -0
  269. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js +403 -0
  270. package/dist/XeroInvoiceCreateConfig-O74RUSZM.js.map +1 -0
  271. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js +631 -0
  272. package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js.map +1 -0
  273. package/dist/XeroInvoiceListConfig-UR3GONBJ.js +113 -0
  274. package/dist/XeroInvoiceListConfig-UR3GONBJ.js.map +1 -0
  275. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js +58 -0
  276. package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js.map +1 -0
  277. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js +116 -0
  278. package/dist/XeroPaymentCreateConfig-RPMAIK6E.js.map +1 -0
  279. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js +573 -0
  280. package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js.map +1 -0
  281. package/dist/action-manifest.json +2091 -393
  282. package/dist/chunk-2GAYKKTL.js +9 -0
  283. package/dist/chunk-2GAYKKTL.js.map +1 -0
  284. package/dist/chunk-2WPEATI7.js +315 -0
  285. package/dist/chunk-2WPEATI7.js.map +1 -0
  286. package/dist/chunk-3O42FYT3.js +3333 -0
  287. package/dist/chunk-3O42FYT3.js.map +1 -0
  288. package/dist/chunk-3TUYY4HK.js +20 -0
  289. package/dist/chunk-3TUYY4HK.js.map +1 -0
  290. package/dist/chunk-3XSLBJYI.js +554 -0
  291. package/dist/chunk-3XSLBJYI.js.map +1 -0
  292. package/dist/chunk-4DGCCXD6.js +710 -0
  293. package/dist/chunk-4DGCCXD6.js.map +1 -0
  294. package/dist/chunk-4NAFQF6V.js +11 -0
  295. package/dist/chunk-4NAFQF6V.js.map +1 -0
  296. package/dist/chunk-4PONO4US.js +799 -0
  297. package/dist/chunk-4PONO4US.js.map +1 -0
  298. package/dist/chunk-4TMOIK5M.js +21 -0
  299. package/dist/chunk-4TMOIK5M.js.map +1 -0
  300. package/dist/chunk-5IH3VC5I.js +102 -0
  301. package/dist/chunk-5IH3VC5I.js.map +1 -0
  302. package/dist/chunk-5NTKDOP6.js +89 -0
  303. package/dist/chunk-5NTKDOP6.js.map +1 -0
  304. package/dist/chunk-5O2SFRGU.js +18 -0
  305. package/dist/chunk-5O2SFRGU.js.map +1 -0
  306. package/dist/chunk-632JLECF.js +55 -0
  307. package/dist/chunk-632JLECF.js.map +1 -0
  308. package/dist/chunk-676HDB7K.js +95 -0
  309. package/dist/chunk-676HDB7K.js.map +1 -0
  310. package/dist/chunk-6ESTNTSH.js +223 -0
  311. package/dist/chunk-6ESTNTSH.js.map +1 -0
  312. package/dist/chunk-6GKJR52N.js +15 -0
  313. package/dist/chunk-6GKJR52N.js.map +1 -0
  314. package/dist/chunk-6L4ZIKYU.js +23 -0
  315. package/dist/chunk-6L4ZIKYU.js.map +1 -0
  316. package/dist/chunk-76YX5R4L.js +11 -0
  317. package/dist/chunk-76YX5R4L.js.map +1 -0
  318. package/dist/chunk-7J3GFMN3.js +32 -0
  319. package/dist/chunk-7J3GFMN3.js.map +1 -0
  320. package/dist/chunk-7LSARC2G.js +102 -0
  321. package/dist/chunk-7LSARC2G.js.map +1 -0
  322. package/dist/chunk-7W7UUUIE.js +609 -0
  323. package/dist/chunk-7W7UUUIE.js.map +1 -0
  324. package/dist/chunk-7ZLW7H37.js +21 -0
  325. package/dist/chunk-7ZLW7H37.js.map +1 -0
  326. package/dist/chunk-AAZHI22G.js +18 -0
  327. package/dist/chunk-AAZHI22G.js.map +1 -0
  328. package/dist/chunk-ACNE455I.js +76 -0
  329. package/dist/chunk-ACNE455I.js.map +1 -0
  330. package/dist/chunk-BKLSSLPZ.js +27 -0
  331. package/dist/chunk-BKLSSLPZ.js.map +1 -0
  332. package/dist/chunk-BZ7UPUTY.js +417 -0
  333. package/dist/chunk-BZ7UPUTY.js.map +1 -0
  334. package/dist/chunk-CGFAICUE.js +28 -0
  335. package/dist/chunk-CGFAICUE.js.map +1 -0
  336. package/dist/chunk-CMCEWQ3C.js +19 -0
  337. package/dist/chunk-CMCEWQ3C.js.map +1 -0
  338. package/dist/chunk-CP4UV436.js +41 -0
  339. package/dist/chunk-CP4UV436.js.map +1 -0
  340. package/dist/chunk-D2CQPNQG.js +27508 -0
  341. package/dist/chunk-D2CQPNQG.js.map +1 -0
  342. package/dist/chunk-DIQRZP7Z.js +51 -0
  343. package/dist/chunk-DIQRZP7Z.js.map +1 -0
  344. package/dist/chunk-EBFFDDAS.js +13 -0
  345. package/dist/chunk-EBFFDDAS.js.map +1 -0
  346. package/dist/chunk-EGVS23DR.js +85 -0
  347. package/dist/chunk-EGVS23DR.js.map +1 -0
  348. package/dist/chunk-EKBQ7K4N.js +15 -0
  349. package/dist/chunk-EKBQ7K4N.js.map +1 -0
  350. package/dist/chunk-EKQCZRAN.js +24 -0
  351. package/dist/chunk-EKQCZRAN.js.map +1 -0
  352. package/dist/chunk-EYKZIZ5J.js +48 -0
  353. package/dist/chunk-EYKZIZ5J.js.map +1 -0
  354. package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
  355. package/dist/chunk-F4PTFXZH.js.map +1 -0
  356. package/dist/chunk-FFYZXA75.js +58 -0
  357. package/dist/chunk-FFYZXA75.js.map +1 -0
  358. package/dist/chunk-GFGDHPZ2.js +22 -0
  359. package/dist/chunk-GFGDHPZ2.js.map +1 -0
  360. package/dist/chunk-GR3CDFID.js +18 -0
  361. package/dist/chunk-GR3CDFID.js.map +1 -0
  362. package/dist/chunk-GR4SIU32.js +104 -0
  363. package/dist/chunk-GR4SIU32.js.map +1 -0
  364. package/dist/chunk-H5E46IIS.js +18 -0
  365. package/dist/chunk-H5E46IIS.js.map +1 -0
  366. package/dist/chunk-HFHVAMZL.js +22 -0
  367. package/dist/chunk-HFHVAMZL.js.map +1 -0
  368. package/dist/chunk-HRRI4BLF.js +4456 -0
  369. package/dist/chunk-HRRI4BLF.js.map +1 -0
  370. package/dist/chunk-HT6L7A5M.js +12 -0
  371. package/dist/chunk-HT6L7A5M.js.map +1 -0
  372. package/dist/chunk-I2FPFISM.js +301 -0
  373. package/dist/chunk-I2FPFISM.js.map +1 -0
  374. package/dist/chunk-IADAQJDH.js +28 -0
  375. package/dist/chunk-IADAQJDH.js.map +1 -0
  376. package/dist/chunk-IBOBCMQQ.js +99 -0
  377. package/dist/chunk-IBOBCMQQ.js.map +1 -0
  378. package/dist/chunk-IFWKRCFF.js +56 -0
  379. package/dist/chunk-IFWKRCFF.js.map +1 -0
  380. package/dist/chunk-IH4T7V4C.js +40 -0
  381. package/dist/chunk-IH4T7V4C.js.map +1 -0
  382. package/dist/chunk-IIIZZ4E4.js +1679 -0
  383. package/dist/chunk-IIIZZ4E4.js.map +1 -0
  384. package/dist/chunk-ILSFU3WD.js +83 -0
  385. package/dist/chunk-ILSFU3WD.js.map +1 -0
  386. package/dist/chunk-IX3VBV3L.js +43 -0
  387. package/dist/chunk-IX3VBV3L.js.map +1 -0
  388. package/dist/chunk-JBBFSORW.js +846 -0
  389. package/dist/chunk-JBBFSORW.js.map +1 -0
  390. package/dist/chunk-JIDTNKKL.js +1183 -0
  391. package/dist/chunk-JIDTNKKL.js.map +1 -0
  392. package/dist/chunk-JSPE6NGZ.js +22 -0
  393. package/dist/chunk-JSPE6NGZ.js.map +1 -0
  394. package/dist/chunk-JVROGQ7Q.js +150 -0
  395. package/dist/chunk-JVROGQ7Q.js.map +1 -0
  396. package/dist/chunk-K4WUMWNJ.js +32 -0
  397. package/dist/chunk-K4WUMWNJ.js.map +1 -0
  398. package/dist/chunk-K74XQ4Q5.js +11 -0
  399. package/dist/chunk-K74XQ4Q5.js.map +1 -0
  400. package/dist/chunk-KLLMJ4U3.js +22 -0
  401. package/dist/chunk-KLLMJ4U3.js.map +1 -0
  402. package/dist/chunk-LTKVCJ2E.js +27 -0
  403. package/dist/chunk-LTKVCJ2E.js.map +1 -0
  404. package/dist/chunk-M36DJTFZ.js +34 -0
  405. package/dist/chunk-M36DJTFZ.js.map +1 -0
  406. package/dist/chunk-MHM52LCJ.js +154 -0
  407. package/dist/chunk-MHM52LCJ.js.map +1 -0
  408. package/dist/chunk-MQCDMHRZ.js +59 -0
  409. package/dist/chunk-MQCDMHRZ.js.map +1 -0
  410. package/dist/chunk-N3ORMGAI.js +348 -0
  411. package/dist/chunk-N3ORMGAI.js.map +1 -0
  412. package/dist/chunk-NCSGIRRQ.js +28 -0
  413. package/dist/chunk-NCSGIRRQ.js.map +1 -0
  414. package/dist/chunk-NIXT2SBH.js +1423 -0
  415. package/dist/chunk-NIXT2SBH.js.map +1 -0
  416. package/dist/chunk-NJAII6CO.js +148 -0
  417. package/dist/chunk-NJAII6CO.js.map +1 -0
  418. package/dist/chunk-NKE4TL43.js +92 -0
  419. package/dist/chunk-NKE4TL43.js.map +1 -0
  420. package/dist/chunk-NZ7AXA7B.js +1 -0
  421. package/dist/chunk-NZ7AXA7B.js.map +1 -0
  422. package/dist/chunk-OCAYEGI2.js +26 -0
  423. package/dist/chunk-OCAYEGI2.js.map +1 -0
  424. package/dist/chunk-OMLI45ER.js +90 -0
  425. package/dist/chunk-OMLI45ER.js.map +1 -0
  426. package/dist/chunk-P7OBLJAG.js +88 -0
  427. package/dist/chunk-P7OBLJAG.js.map +1 -0
  428. package/dist/chunk-PAY3CBWL.js +2321 -0
  429. package/dist/chunk-PAY3CBWL.js.map +1 -0
  430. package/dist/chunk-PFF6VY35.js +257 -0
  431. package/dist/chunk-PFF6VY35.js.map +1 -0
  432. package/dist/chunk-PYNDJDWZ.js +1758 -0
  433. package/dist/chunk-PYNDJDWZ.js.map +1 -0
  434. package/dist/chunk-QDQ6UMMN.js +53 -0
  435. package/dist/chunk-QDQ6UMMN.js.map +1 -0
  436. package/dist/chunk-QGT3G2XG.js +24 -0
  437. package/dist/chunk-QGT3G2XG.js.map +1 -0
  438. package/dist/chunk-QZYCJ2GZ.js +55 -0
  439. package/dist/chunk-QZYCJ2GZ.js.map +1 -0
  440. package/dist/chunk-REZ7RFSA.js +124 -0
  441. package/dist/chunk-REZ7RFSA.js.map +1 -0
  442. package/dist/chunk-RRYBAE6E.js +2449 -0
  443. package/dist/chunk-RRYBAE6E.js.map +1 -0
  444. package/dist/chunk-RWUZOB62.js +34 -0
  445. package/dist/chunk-RWUZOB62.js.map +1 -0
  446. package/dist/chunk-SB5UCPZH.js +116 -0
  447. package/dist/chunk-SB5UCPZH.js.map +1 -0
  448. package/dist/chunk-SEJJ7CRI.js +99 -0
  449. package/dist/chunk-SEJJ7CRI.js.map +1 -0
  450. package/dist/chunk-SHBFGRPV.js +45 -0
  451. package/dist/chunk-SHBFGRPV.js.map +1 -0
  452. package/dist/chunk-SOFJ4GC5.js +45 -0
  453. package/dist/chunk-SOFJ4GC5.js.map +1 -0
  454. package/dist/chunk-STH2HPZK.js +44 -0
  455. package/dist/chunk-STH2HPZK.js.map +1 -0
  456. package/dist/chunk-TK3JNKME.js +28 -0
  457. package/dist/chunk-TK3JNKME.js.map +1 -0
  458. package/dist/chunk-TMONHFE3.js +46 -0
  459. package/dist/chunk-TMONHFE3.js.map +1 -0
  460. package/dist/chunk-TR4KO3AG.js +44 -0
  461. package/dist/chunk-TR4KO3AG.js.map +1 -0
  462. package/dist/chunk-TS2LNBF2.js +68 -0
  463. package/dist/chunk-TS2LNBF2.js.map +1 -0
  464. package/dist/chunk-UZUMBFPP.js +26 -0
  465. package/dist/chunk-UZUMBFPP.js.map +1 -0
  466. package/dist/chunk-VRZ5LMOW.js +176 -0
  467. package/dist/chunk-VRZ5LMOW.js.map +1 -0
  468. package/dist/chunk-WLGGY6Z6.js +75 -0
  469. package/dist/chunk-WLGGY6Z6.js.map +1 -0
  470. package/dist/chunk-WO7V6ZNC.js +11 -0
  471. package/dist/chunk-WO7V6ZNC.js.map +1 -0
  472. package/dist/chunk-WXSENSRP.js +64 -0
  473. package/dist/chunk-WXSENSRP.js.map +1 -0
  474. package/dist/chunk-XEKBZ2SA.js +19 -0
  475. package/dist/chunk-XEKBZ2SA.js.map +1 -0
  476. package/dist/chunk-XPBKU3JX.js +61 -0
  477. package/dist/chunk-XPBKU3JX.js.map +1 -0
  478. package/dist/chunk-XRYXBXWH.js +24 -0
  479. package/dist/chunk-XRYXBXWH.js.map +1 -0
  480. package/dist/chunk-XVA7QRVH.js +22 -0
  481. package/dist/chunk-XVA7QRVH.js.map +1 -0
  482. package/dist/chunk-YCTHHBSS.js +37 -0
  483. package/dist/chunk-YCTHHBSS.js.map +1 -0
  484. package/dist/chunk-YHPWD5NE.js +70 -0
  485. package/dist/chunk-YHPWD5NE.js.map +1 -0
  486. package/dist/chunk-YLNEKJQ5.js +126 -0
  487. package/dist/chunk-YLNEKJQ5.js.map +1 -0
  488. package/dist/chunk-YN4CEKCF.js +73 -0
  489. package/dist/chunk-YN4CEKCF.js.map +1 -0
  490. package/dist/chunk-YYNMESIF.js +17 -0
  491. package/dist/chunk-YYNMESIF.js.map +1 -0
  492. package/dist/chunk-Z6PRMCV6.js +1 -0
  493. package/dist/chunk-Z6PRMCV6.js.map +1 -0
  494. package/dist/chunk-ZDNW6VQG.js +11 -0
  495. package/dist/chunk-ZDNW6VQG.js.map +1 -0
  496. package/dist/chunk-ZP4D73DO.js +36 -0
  497. package/dist/chunk-ZP4D73DO.js.map +1 -0
  498. package/dist/chunk-ZUATADUV.js +26 -0
  499. package/dist/chunk-ZUATADUV.js.map +1 -0
  500. package/dist/{connections-1NtNQrsY.d.ts → connections-CEcurtWI.d.ts} +74 -9
  501. package/dist/core/index.cjs +14041 -6973
  502. package/dist/core/index.cjs.map +1 -1
  503. package/dist/core/index.d.ts +422 -138
  504. package/dist/core/index.js +425 -183
  505. package/dist/core/index.js.map +1 -1
  506. package/dist/flow-vnext/index.cjs +2842 -0
  507. package/dist/flow-vnext/index.cjs.map +1 -0
  508. package/dist/flow-vnext/index.d.ts +3 -0
  509. package/dist/flow-vnext/index.js +119 -0
  510. package/dist/flow-vnext/index.js.map +1 -0
  511. package/dist/{graphql-client-Bn0tN049.d.ts → graphql-client-B2tREsx6.d.ts} +3 -1
  512. package/dist/index-b9xxXGFs.d.ts +1230 -0
  513. package/dist/index.d.ts +5 -3
  514. package/dist/index.js +202 -37
  515. package/dist/index.js.map +1 -1
  516. package/dist/legacy-BpgIqaQ5.d.ts +14 -0
  517. package/dist/mantine/index.d.ts +7 -4
  518. package/dist/mantine/index.js +84 -30
  519. package/dist/mantine/index.js.map +1 -1
  520. package/dist/{runtime-BFwvCQDF.d.ts → types-Dqk5MTfW.d.ts} +6096 -5386
  521. package/package.json +12 -2
  522. package/dist/chunk-5JF23UP3.js +0 -59687
  523. package/dist/chunk-5JF23UP3.js.map +0 -1
  524. package/dist/chunk-A4CWC4AG.js +0 -374
  525. package/dist/chunk-A4CWC4AG.js.map +0 -1
  526. package/dist/chunk-NEOPTPDF.js.map +0 -1
@@ -0,0 +1,1679 @@
1
+ import {
2
+ warnOnce
3
+ } from "./chunk-HT6L7A5M.js";
4
+ import {
5
+ getExistingYMap,
6
+ isYMapLike
7
+ } from "./chunk-NCSGIRRQ.js";
8
+
9
+ // src/core/lib/actionRegistry/digest.ts
10
+ function compareCodeUnits(left, right) {
11
+ return left < right ? -1 : left > right ? 1 : 0;
12
+ }
13
+ function canonicalActionJson(value) {
14
+ if (value === null) return "null";
15
+ if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
16
+ if (typeof value === "number") {
17
+ if (!Number.isFinite(value)) throw new Error("Action manifest cannot contain non-finite numbers");
18
+ return JSON.stringify(value);
19
+ }
20
+ if (Array.isArray(value)) return `[${value.map((item) => item === void 0 ? "null" : canonicalActionJson(item)).join(",")}]`;
21
+ if (typeof value === "object") {
22
+ const fields = Object.entries(value).filter(([, item]) => item !== void 0).sort(([a], [b]) => compareCodeUnits(a, b));
23
+ return `{${fields.map(([key, item]) => `${JSON.stringify(key)}:${canonicalActionJson(item)}`).join(",")}}`;
24
+ }
25
+ throw new Error(`Action manifest cannot contain ${typeof value}`);
26
+ }
27
+ var SHA256_K = new Uint32Array([
28
+ 1116352408,
29
+ 1899447441,
30
+ 3049323471,
31
+ 3921009573,
32
+ 961987163,
33
+ 1508970993,
34
+ 2453635748,
35
+ 2870763221,
36
+ 3624381080,
37
+ 310598401,
38
+ 607225278,
39
+ 1426881987,
40
+ 1925078388,
41
+ 2162078206,
42
+ 2614888103,
43
+ 3248222580,
44
+ 3835390401,
45
+ 4022224774,
46
+ 264347078,
47
+ 604807628,
48
+ 770255983,
49
+ 1249150122,
50
+ 1555081692,
51
+ 1996064986,
52
+ 2554220882,
53
+ 2821834349,
54
+ 2952996808,
55
+ 3210313671,
56
+ 3336571891,
57
+ 3584528711,
58
+ 113926993,
59
+ 338241895,
60
+ 666307205,
61
+ 773529912,
62
+ 1294757372,
63
+ 1396182291,
64
+ 1695183700,
65
+ 1986661051,
66
+ 2177026350,
67
+ 2456956037,
68
+ 2730485921,
69
+ 2820302411,
70
+ 3259730800,
71
+ 3345764771,
72
+ 3516065817,
73
+ 3600352804,
74
+ 4094571909,
75
+ 275423344,
76
+ 430227734,
77
+ 506948616,
78
+ 659060556,
79
+ 883997877,
80
+ 958139571,
81
+ 1322822218,
82
+ 1537002063,
83
+ 1747873779,
84
+ 1955562222,
85
+ 2024104815,
86
+ 2227730452,
87
+ 2361852424,
88
+ 2428436474,
89
+ 2756734187,
90
+ 3204031479,
91
+ 3329325298
92
+ ]);
93
+ function rotateRight(value, bits) {
94
+ return value >>> bits | value << 32 - bits;
95
+ }
96
+ function sha256Hex(text) {
97
+ const input = new TextEncoder().encode(text);
98
+ const bitLength = input.length * 8;
99
+ const paddedLength = Math.ceil((input.length + 9) / 64) * 64;
100
+ const bytes = new Uint8Array(paddedLength);
101
+ bytes.set(input);
102
+ bytes[input.length] = 128;
103
+ const view = new DataView(bytes.buffer);
104
+ view.setUint32(paddedLength - 8, Math.floor(bitLength / 4294967296), false);
105
+ view.setUint32(paddedLength - 4, bitLength >>> 0, false);
106
+ const state = new Uint32Array([1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]);
107
+ const words = new Uint32Array(64);
108
+ for (let offset = 0; offset < bytes.length; offset += 64) {
109
+ for (let index = 0; index < 16; index += 1) words[index] = view.getUint32(offset + index * 4, false);
110
+ for (let index = 16; index < 64; index += 1) {
111
+ const s0 = rotateRight(words[index - 15], 7) ^ rotateRight(words[index - 15], 18) ^ words[index - 15] >>> 3;
112
+ const s1 = rotateRight(words[index - 2], 17) ^ rotateRight(words[index - 2], 19) ^ words[index - 2] >>> 10;
113
+ words[index] = words[index - 16] + s0 + words[index - 7] + s1 >>> 0;
114
+ }
115
+ let a = state[0];
116
+ let b = state[1];
117
+ let c = state[2];
118
+ let d = state[3];
119
+ let e = state[4];
120
+ let f = state[5];
121
+ let g = state[6];
122
+ let h = state[7];
123
+ for (let index = 0; index < 64; index += 1) {
124
+ const sum1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
125
+ const choice = e & f ^ ~e & g;
126
+ const temp1 = h + sum1 + choice + SHA256_K[index] + words[index] >>> 0;
127
+ const sum0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
128
+ const majority = a & b ^ a & c ^ b & c;
129
+ const temp2 = sum0 + majority >>> 0;
130
+ h = g;
131
+ g = f;
132
+ f = e;
133
+ e = d + temp1 >>> 0;
134
+ d = c;
135
+ c = b;
136
+ b = a;
137
+ a = temp1 + temp2 >>> 0;
138
+ }
139
+ state[0] = state[0] + a >>> 0;
140
+ state[1] = state[1] + b >>> 0;
141
+ state[2] = state[2] + c >>> 0;
142
+ state[3] = state[3] + d >>> 0;
143
+ state[4] = state[4] + e >>> 0;
144
+ state[5] = state[5] + f >>> 0;
145
+ state[6] = state[6] + g >>> 0;
146
+ state[7] = state[7] + h >>> 0;
147
+ }
148
+ return Array.from(state, (word) => word.toString(16).padStart(8, "0")).join("");
149
+ }
150
+ function sha256Digest(value) {
151
+ return `sha256:${sha256Hex(canonicalActionJson(value))}`;
152
+ }
153
+
154
+ // src/core/lib/actionRegistry/topicSemanticRecords.ts
155
+ import Ajv2020 from "ajv/dist/2020.js";
156
+ var stringArray = { type: "array", items: { type: "string" } };
157
+ var digest = { type: "string", pattern: "^sha256:[a-f0-9]{64}$" };
158
+ var dateTime = {
159
+ type: "string",
160
+ pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
161
+ };
162
+ var MAX_TOPIC_SEMANTIC_RECORDS_PER_RECEIPT = 25;
163
+ var MAX_TOPIC_SEMANTIC_RECORD_BATCH_BYTES = 32 * 1024;
164
+ function closed(required, properties) {
165
+ return { type: "object", required, additionalProperties: false, properties };
166
+ }
167
+ var TOPIC_SEMANTIC_RECORD_DEFINITIONS = [
168
+ {
169
+ type: "org.ixo.topic.claim-submission",
170
+ version: 1,
171
+ displayName: "Claim submitted",
172
+ description: "Records that a claim was submitted to a collection.",
173
+ valueSchema: closed(["claimId", "collectionId", "deedDid", "submittedByDid", "submittedAt", "transactionHash", "submissionDigest"], {
174
+ claimId: { type: "string" },
175
+ collectionId: { type: "string" },
176
+ deedDid: { type: "string" },
177
+ submittedByDid: { type: "string" },
178
+ submittedAt: dateTime,
179
+ transactionHash: { type: "string" },
180
+ submissionDigest: digest
181
+ })
182
+ },
183
+ {
184
+ type: "org.ixo.topic.claim-evaluation",
185
+ version: 1,
186
+ displayName: "Claim evaluated",
187
+ description: "Records the governed evaluation outcome for a claim.",
188
+ valueSchema: closed(["claimId", "collectionId", "deedDid", "decision", "evaluatedByDid", "evaluatedAt", "transactionHash", "evidenceDigest"], {
189
+ claimId: { type: "string" },
190
+ collectionId: { type: "string" },
191
+ deedDid: { type: "string" },
192
+ decision: { type: "string" },
193
+ evaluatedByDid: { type: "string" },
194
+ evaluatedAt: dateTime,
195
+ verificationProof: { type: "string" },
196
+ transactionHash: { type: "string" },
197
+ evidenceDigest: digest
198
+ })
199
+ },
200
+ {
201
+ type: "org.ixo.topic.proposal-receipt",
202
+ version: 1,
203
+ displayName: "Governance proposal update",
204
+ description: "Records the creation of, or a vote on, a governance proposal.",
205
+ valueSchema: closed(["event", "proposalId", "proposalContractAddress"], {
206
+ event: { type: "string", enum: ["created", "vote-cast"] },
207
+ actionType: { type: "string" },
208
+ proposalId: { type: "string" },
209
+ proposalContractAddress: { type: "string" },
210
+ coreAddress: { type: "string" },
211
+ title: { type: "string" },
212
+ proposalTitle: { type: "string" },
213
+ descriptionDigest: digest,
214
+ proposalDescriptionDigest: digest,
215
+ status: { type: "string" },
216
+ vote: { type: "string" },
217
+ rationaleDigest: digest,
218
+ actorDid: { type: "string" },
219
+ votedAt: dateTime,
220
+ createdAt: dateTime
221
+ })
222
+ },
223
+ {
224
+ type: "org.ixo.topic.work-event",
225
+ version: 1,
226
+ displayName: "Work update",
227
+ description: "Records an assignment, dispatch, checkpoint, submission, or acceptance of work.",
228
+ valueSchema: closed(["workId", "resourceType", "phase", "assigneeDid", "note", "artifactReferences", "evidenceReferences", "actorDid", "occurredAt"], {
229
+ workId: { type: "string" },
230
+ resourceType: { type: "string" },
231
+ phase: { type: "string", enum: ["requested", "dispatched", "in_progress", "ready_for_review", "completed"] },
232
+ assigneeDid: { type: "string" },
233
+ note: { type: "string" },
234
+ artifactReferences: stringArray,
235
+ evidenceReferences: stringArray,
236
+ actorDid: { type: "string" },
237
+ occurredAt: dateTime
238
+ })
239
+ },
240
+ {
241
+ type: "org.ixo.topic.agent-result",
242
+ version: 1,
243
+ displayName: "Agent result",
244
+ description: "Records a delegated agent result and its evidence references without exposing invocation inputs.",
245
+ valueSchema: closed(["sessionId", "result", "resultDigest", "evidenceReferences", "evidenceDigest", "providerReceiptReference"], {
246
+ sessionId: { type: "string" },
247
+ result: { description: "Provider-owned result extension point." },
248
+ resultDigest: digest,
249
+ evidenceReferences: stringArray,
250
+ evidenceDigest: digest,
251
+ providerReceiptReference: { type: "string" }
252
+ })
253
+ },
254
+ {
255
+ type: "org.ixo.topic.agent-cancellation",
256
+ version: 1,
257
+ displayName: "Agent cancelled",
258
+ description: "Records cancellation of a delegated agent session.",
259
+ valueSchema: closed(["sessionId", "status", "providerReceiptReference"], {
260
+ sessionId: { type: "string" },
261
+ status: { const: "cancelled" },
262
+ providerReceiptReference: { type: "string" }
263
+ })
264
+ },
265
+ {
266
+ type: "org.ixo.topic.evidence",
267
+ version: 1,
268
+ displayName: "Evidence collected",
269
+ description: "Records collected evidence, provenance, and stable evidence references.",
270
+ valueSchema: closed(["question", "evidence", "provenance", "evidenceReferences", "evidenceDigest"], {
271
+ question: { type: "string" },
272
+ evidence: { description: "Provider-owned evidence extension point." },
273
+ provenance: { description: "Provider-owned provenance extension point." },
274
+ evidenceReferences: stringArray,
275
+ evidenceDigest: digest
276
+ })
277
+ },
278
+ ...["proposed", "accepted"].map(
279
+ (status) => ({
280
+ type: `org.ixo.topic.${status}-answer`,
281
+ version: 1,
282
+ displayName: status === "accepted" ? "Answer accepted" : "Answer proposed",
283
+ description: status === "accepted" ? "Records an answer accepted by the stated authority." : "Records an answer proposed for review.",
284
+ valueSchema: closed(["answer", "status", "proposedAnswerRecordId", "authorityDid", "evidenceReferences", "limitations", "occurredAt"], {
285
+ answer: { type: "string" },
286
+ status: { const: status },
287
+ proposedAnswerRecordId: { type: "string" },
288
+ authorityDid: { type: "string" },
289
+ evidenceReferences: stringArray,
290
+ limitations: { type: "string" },
291
+ occurredAt: dateTime
292
+ })
293
+ })
294
+ ),
295
+ ...["assertion", "review"].map(
296
+ (kind) => ({
297
+ type: `org.ixo.topic.evaluation-${kind}`,
298
+ version: 1,
299
+ displayName: kind === "review" ? "Evaluation reviewed" : "Evaluation assertion",
300
+ description: kind === "review" ? "Records a signed human review of an evaluation assertion." : "Records a signed evaluation assertion.",
301
+ valueSchema: closed(
302
+ [kind === "review" ? "reviewId" : "assertionId", "providerResult", "methodologyRevision", "rubricRevision", "evaluatorDid", "evidenceReferences", "signature"],
303
+ {
304
+ assertionId: { type: "string" },
305
+ reviewId: { type: "string" },
306
+ providerResult: { type: "object", description: "Provider-owned evaluation result extension point.", additionalProperties: true },
307
+ methodologyRevision: { type: "string" },
308
+ rubricRevision: { type: "string" },
309
+ evaluatorDid: { type: "string" },
310
+ evidenceReferences: stringArray,
311
+ signature: { type: "string" }
312
+ }
313
+ )
314
+ })
315
+ ),
316
+ {
317
+ type: "org.ixo.topic.settlement-record",
318
+ version: 1,
319
+ displayName: "Settlement update",
320
+ description: "Records the provider reference and terminal status of an approved settlement execution.",
321
+ valueSchema: closed(["settlementId", "transactionReference", "providerReceiptReference", "status"], {
322
+ settlementId: { type: "string" },
323
+ transactionReference: { type: "string" },
324
+ providerReceiptReference: { type: "string" },
325
+ status: { type: "string", enum: ["submitted", "confirmed", "needs_verification"] }
326
+ })
327
+ },
328
+ {
329
+ type: "org.ixo.topic.incident-escalation",
330
+ version: 1,
331
+ displayName: "Incident escalated",
332
+ description: "Records that an incident was escalated to the stated recipients.",
333
+ valueSchema: closed(["severity", "affectedResources", "recipients", "evidenceReferences", "summary", "escalationId", "notifiedAt", "providerReceiptReferences"], {
334
+ severity: { type: "string", enum: ["low", "medium", "high", "critical"] },
335
+ affectedResources: stringArray,
336
+ recipients: stringArray,
337
+ evidenceReferences: stringArray,
338
+ summary: { type: "string" },
339
+ escalationId: { type: "string" },
340
+ notifiedAt: dateTime,
341
+ providerReceiptReferences: stringArray
342
+ })
343
+ },
344
+ {
345
+ type: "org.ixo.topic.incident-mitigation",
346
+ version: 1,
347
+ displayName: "Incident mitigation recorded",
348
+ description: "Records mitigation work for an incident without changing the incident lifecycle.",
349
+ valueSchema: closed(["mitigation", "affectedResources", "evidenceReferences", "recordedBy", "occurredAt"], {
350
+ mitigation: { type: "string" },
351
+ affectedResources: stringArray,
352
+ evidenceReferences: stringArray,
353
+ recordedBy: { type: "string" },
354
+ occurredAt: dateTime
355
+ })
356
+ }
357
+ ];
358
+ var definitionsByType = new Map(TOPIC_SEMANTIC_RECORD_DEFINITIONS.map((definition) => [definition.type, definition]));
359
+ var ajv = new Ajv2020({ allErrors: true, strict: false });
360
+ var validators = /* @__PURE__ */ new Map();
361
+ function getTopicSemanticRecordDefinitions(types) {
362
+ return types.map((type) => definitionsByType.get(type)).filter((definition) => !!definition);
363
+ }
364
+ function validateTopicSemanticRecord(record, topic) {
365
+ if (!record || typeof record !== "object" || Array.isArray(record)) return { valid: false, code: "INVALID_RECORD_ENVELOPE" };
366
+ const candidate = record;
367
+ const envelopeKeys = /* @__PURE__ */ new Set(["type", "id", "version", "value", "evidenceReferences"]);
368
+ if (Object.keys(candidate).some((key) => !envelopeKeys.has(key)) || typeof candidate.type !== "string" || typeof candidate.id !== "string" || !candidate.id || !Number.isInteger(candidate.version) || Number(candidate.version) < 1 || !candidate.value || typeof candidate.value !== "object" || Array.isArray(candidate.value)) {
369
+ return { valid: false, code: "INVALID_RECORD_ENVELOPE" };
370
+ }
371
+ if (candidate.evidenceReferences !== void 0 && (!Array.isArray(candidate.evidenceReferences) || candidate.evidenceReferences.some((item) => typeof item !== "string"))) {
372
+ return { valid: false, code: "INVALID_RECORD_ENVELOPE" };
373
+ }
374
+ const definition = topic.semanticRecordTypes.find((item) => item.type === candidate.type);
375
+ if (!definition) return { valid: false, code: "UNKNOWN_RECORD_TYPE" };
376
+ if (candidate.version !== definition.version) return { valid: false, code: "UNSUPPORTED_RECORD_VERSION" };
377
+ const validatorKey = `${definition.type}@${definition.version}:${sha256Digest(definition.valueSchema)}`;
378
+ let validate = validators.get(validatorKey);
379
+ if (!validate) {
380
+ validate = ajv.compile(definition.valueSchema);
381
+ validators.set(validatorKey, validate);
382
+ }
383
+ if (!validate(candidate.value)) return { valid: false, code: "INVALID_RECORD_VALUE", errors: validate.errors || void 0 };
384
+ return { valid: true, definition };
385
+ }
386
+ function validateTopicSemanticRecordBatch(records, topic) {
387
+ if (records.length > MAX_TOPIC_SEMANTIC_RECORDS_PER_RECEIPT) return { valid: false, code: "TOO_MANY_RECORDS" };
388
+ for (const record of records) {
389
+ const validation = validateTopicSemanticRecord(record, topic);
390
+ if (!validation.valid) return validation;
391
+ }
392
+ try {
393
+ const byteLength = new TextEncoder().encode(canonicalActionJson(records)).byteLength;
394
+ if (byteLength > MAX_TOPIC_SEMANTIC_RECORD_BATCH_BYTES) return { valid: false, code: "RECORD_BATCH_TOO_LARGE" };
395
+ } catch {
396
+ return { valid: false, code: "INVALID_RECORD_BATCH" };
397
+ }
398
+ return { valid: true };
399
+ }
400
+
401
+ // src/core/lib/actionRegistry/canMapping.ts
402
+ var CAN_TO_TYPE = {
403
+ "flow/run.start": "qi/flow.run.start",
404
+ "flow/run.close": "qi/flow.run.close",
405
+ "bid/submit": "qi/bid.submit",
406
+ "bid/evaluate": "qi/bid.evaluate",
407
+ "claim/submit": "qi/claim.submit",
408
+ "claim/evaluate": "qi/claim.evaluate",
409
+ "collection/lifecycle": "qi/collection.lifecycle",
410
+ "collection/users": "qi/collection.users",
411
+ "email/send": "qi/email.send",
412
+ "notification/push": "qi/notification.push",
413
+ "matrix/dm": "qi/matrix.dm",
414
+ "proposal/create": "qi/proposal.create",
415
+ "proposal/vote": "qi/proposal.vote",
416
+ "governance/member-proposal": "qi/governance.member-proposal",
417
+ "governance/settings-proposal": "qi/governance.settings-proposal",
418
+ "governance.transaction/send-funds": "qi/governance.transaction.send-funds",
419
+ "domain/card-preview": "qi/domain.card-preview",
420
+ "domain/sign": "qi/domain.sign",
421
+ "credential/store": "qi/credential.store",
422
+ "funding/verify": "qi/funding.verify",
423
+ "credential/issue": "qi/credential.issue",
424
+ "yoma/opportunity": "qi/yoma.opportunity",
425
+ "yoid/link": "qi/yoid.link",
426
+ "outcome/certificate": "qi/outcome.certificate",
427
+ "http/request": "qi/http.request",
428
+ "protocol/select": "qi/protocol.select",
429
+ "human/checkbox": "qi/human.checkbox.set",
430
+ "human/form": "qi/human.form.submit",
431
+ "oracle/query": "oracle",
432
+ "pod/domain-indexer-lookup": "qi/pod.domain-indexer-lookup",
433
+ "pod/domain-single-selection": "qi/pod.domain-single-selection",
434
+ "pod/entity-single-selection": "qi/pod.entity-single-selection",
435
+ "pod/governance-config": "qi/pod.governance-config",
436
+ "pod/member-multi-select": "qi/pod.member-multi-select",
437
+ "pod/list-domain-flows": "qi/pod.list-domain-flows",
438
+ "blueprint/workspace-start": "qi/blueprint.workspace-start",
439
+ "blueprint/journey-resume": "qi/blueprint.journey-resume",
440
+ "blueprint/guided-authoring": "qi/blueprint.guided-authoring",
441
+ "blueprint/artifact-preview": "qi/blueprint.artifact-preview",
442
+ "blueprint/artifact-save": "qi/blueprint.artifact-save",
443
+ "blueprint/checklist-update": "qi/blueprint.checklist-update",
444
+ "blueprint/phase-commit": "qi/blueprint.phase-commit",
445
+ "blueprint/phase-confirm": "qi/blueprint.phase-confirm",
446
+ "blueprint/reviewer-assign": "qi/blueprint.reviewer-assign",
447
+ "blueprint/review-submit": "qi/blueprint.review-submit",
448
+ "blueprint/review-respond": "qi/blueprint.review-respond",
449
+ "blueprint/release-compile": "qi/blueprint.release-compile",
450
+ "blueprint/yoma-readiness": "qi/blueprint.yoma-readiness",
451
+ "blueprint/publish": "qi/blueprint.publish",
452
+ // Delegated integrations (author connects once, runners execute on their behalf)
453
+ "gmail.email/send": "qi/gmail.email.send",
454
+ "outlook.email/send": "qi/outlook.email.send",
455
+ "slack.message/send": "qi/slack.message.send",
456
+ "googlecalendar.event/create": "qi/googlecalendar.event.create",
457
+ // Google Calendar, self-connected (renamed from qi/calendar.* — IXO-4420 §5).
458
+ // The cans keep their historical values so existing UCAN grants still match.
459
+ "calendar.event/create": "qi/googlecalendar.event.create-self",
460
+ "calendar.event/update": "qi/googlecalendar.event.update-self",
461
+ "calendar.event/list": "qi/googlecalendar.event.list-self",
462
+ // Xero integration
463
+ "xero.contact/create": "qi/xero.contact.create",
464
+ "xero.invoice/create": "qi/xero.invoice.create",
465
+ "xero.invoice/list": "qi/xero.invoice.list",
466
+ "xero.payment/create": "qi/xero.payment.create",
467
+ // Oracle / wallet / matrix lifecycle
468
+ "wallet/generate": "qi/wallet.generate",
469
+ "wallet/fund": "qi/wallet.fund",
470
+ "iid/create": "qi/iid.create",
471
+ "matrix/register": "qi/matrix.register",
472
+ "entity/createOracle": "qi/entity.createOracle",
473
+ "sandbox/provision": "qi/sandbox.provision",
474
+ "oracle/contract": "qi/oracle.contract",
475
+ "oracle/storeSecrets": "qi/oracle.storeSecrets",
476
+ "oracle/storeConfig": "qi/oracle.storeConfig",
477
+ "oracle/configureOracle": "qi/oracle.configureOracle"
478
+ };
479
+ var TYPE_TO_CAN = Object.fromEntries(Object.entries(CAN_TO_TYPE).map(([can, type]) => [type, can]));
480
+ function canToType(can) {
481
+ return CAN_TO_TYPE[can];
482
+ }
483
+ function typeToCan(type) {
484
+ return TYPE_TO_CAN[type];
485
+ }
486
+ function getAllCanMappings() {
487
+ return Object.entries(CAN_TO_TYPE).map(([can, type]) => ({ can, type }));
488
+ }
489
+
490
+ // src/core/lib/actionRegistry/presentation.ts
491
+ var PRESENTATION = {
492
+ oracle: { displayName: "Ask your Agent", description: "Send a prompt to the Personal Agent" },
493
+ "oracle.prompt": { displayName: "Oracle Prompt", description: "Send a prompt to the Personal Agent" },
494
+ "qi/bid.evaluate": { displayName: "Evaluate Bid", description: "Approve or reject a bid" },
495
+ "qi/bid.submit": { displayName: "Bid", description: "Submit a bid application" },
496
+ "qi/agent.cancel": { displayName: "Cancel Agent", description: "Cancel a delegated agent session" },
497
+ "qi/agent.invoke": { displayName: "Invoke Agent", description: "Delegate a task to an authorised agent runtime" },
498
+ "qi/answer.accept": { displayName: "Accept Answer", description: "Accept a proposed answer using the stated authority" },
499
+ "qi/answer.propose": { displayName: "Propose Answer", description: "Propose an answer for review in the Topic" },
500
+ "qi/blueprint.artifact-preview": { displayName: "Preview Blueprint Artifact", description: "Preview an authored Blueprint artifact before saving it" },
501
+ "qi/blueprint.artifact-save": { displayName: "Save Blueprint Artifact", description: "Save an authored artifact to the Blueprint workspace" },
502
+ "qi/blueprint.checklist-update": { displayName: "Update Blueprint Checklist", description: "Record progress against the Blueprint authoring checklist" },
503
+ "qi/blueprint.guided-authoring": { displayName: "Guide Blueprint Authoring", description: "Generate guided authoring input for the current Blueprint phase" },
504
+ "qi/blueprint.journey-resume": { displayName: "Resume Blueprint Journey", description: "Resume an existing Blueprint authoring journey" },
505
+ "qi/blueprint.phase-commit": { displayName: "Commit Blueprint Phase", description: "Commit the agreed answers for this phase of the design" },
506
+ "qi/blueprint.phase-confirm": { displayName: "Confirm Blueprint Phase", description: "Confirm completion of the current Blueprint authoring phase" },
507
+ "qi/blueprint.publish": { displayName: "Publish Blueprint", description: "Publish an approved Blueprint release" },
508
+ "qi/blueprint.release-compile": { displayName: "Compile Blueprint Release", description: "Compile Blueprint artifacts into a release candidate" },
509
+ "qi/blueprint.review-respond": { displayName: "Respond to Blueprint Review", description: "Respond to review feedback on a Blueprint release" },
510
+ "qi/blueprint.review-submit": { displayName: "Submit Blueprint Review", description: "Submit a Blueprint release for review" },
511
+ "qi/blueprint.reviewer-assign": { displayName: "Assign Blueprint Reviewer", description: "Assign a reviewer to a Blueprint release" },
512
+ "qi/blueprint.protocol-mint": { displayName: "Mint Protocol", description: "Create the protocol from the published design so working domains can be set up from it" },
513
+ "qi/blueprint.workspace-start": { displayName: "Start Blueprint Workspace", description: "Create a workspace for a new Blueprint authoring journey" },
514
+ "qi/blueprint.yoma-readiness": { displayName: "Check Blueprint Readiness", description: "Report how far the design has progressed towards publication" },
515
+ "qi/calendar.event.create": { displayName: "Create Calendar event", description: "Create an event on a connected Calendar" },
516
+ "qi/calendar.event.list": { displayName: "List Calendar events", description: "Fetch events from a connected Calendar" },
517
+ "qi/calendar.event.update": { displayName: "Update Calendar event", description: "Replace an existing Calendar event" },
518
+ "qi/carbon.harvest": { displayName: "Harvest Carbon", description: "Claim carbon credits into your wallet" },
519
+ "qi/carbon.loadBatches": { displayName: "Load Carbon Batches", description: "Reconcile harvestable and retireable CARBON credits" },
520
+ "qi/carbon.retire": { displayName: "Retire Carbon", description: "Permanently retire carbon credits to offset impact" },
521
+ "qi/claim.evaluate": { displayName: "Evaluate Claim", description: "Approve or reject a claim" },
522
+ "qi/claim.submit": { displayName: "Claim", description: "Submit a claim" },
523
+ "qi/collection.lifecycle": { displayName: "Claim Collection", description: "Create and manage a claim collection lifecycle" },
524
+ "qi/collection.create": { displayName: "Create Claim Collection", description: "Pin a protocol release and create its exact on-chain collection record" },
525
+ "qi/collection.users": { displayName: "Collection Users", description: "Add, list and revoke claim collection contributors & evaluators" },
526
+ "qi/credential.issue": { displayName: "Issue Credential", description: "Issue a verifiable credential to a participant" },
527
+ "qi/credential.store": { displayName: "Store Credential", description: "Store a verifiable credential in Matrix room state" },
528
+ "qi/funding.verify": { displayName: "Verify Funding", description: "Confirm the payout source holds enough funds before claims are evaluated" },
529
+ "qi/domain.card-preview": { displayName: "Preview Domain Card", description: "Review an oracle-enriched domain card and approve it before signing" },
530
+ "qi/domain.sign": { displayName: "Sign Domain", description: "Sign the domain card credential and create the entity on-chain" },
531
+ "qi/email.send": { displayName: "Email", description: "Send an email to a user" },
532
+ "qi/eval.connect": { displayName: "Connect Evaluation Service", description: "Authorize one evaluation service for one existing claim collection" },
533
+ "qi/eval.engine": { displayName: "Evaluation Engine", description: "Enroll a collection and publish its claim-approval rules in one step" },
534
+ "qi/evaluation.review": { displayName: "Review Evaluation", description: "Review and sign an evaluation assertion" },
535
+ "qi/evaluation.run": { displayName: "Run Evaluation", description: "Run an evaluation against the selected methodology and rubric" },
536
+ "qi/evidence.collect": { displayName: "Collect Evidence", description: "Collect evidence and provenance from approved sources" },
537
+ "qi/flow.run.close": { displayName: "Close Flow Run", description: "Close the current Flow run with a terminal outcome" },
538
+ "qi/flow.run.start": { displayName: "Start Flow Run", description: "Start a new governed Flow run" },
539
+ "qi/entity.createOracle": { displayName: "Create Oracle Entity", description: "Create the oracle entity on-chain" },
540
+ "qi/entity.transfer": { displayName: "Transfer Entity", description: "Transfer ownership of an entity to a new owner" },
541
+ "qi/form.submit": { displayName: "Form Submit", description: "Submit a form response" },
542
+ "qi/gmail.email.send": { displayName: "Send Gmail email", description: "Send an email from the template author's Gmail account" },
543
+ "qi/googlecalendar.event.create": { displayName: "Create Calendar event (delegated)", description: "Create an event on the template author's Google Calendar" },
544
+ "qi/googlecalendar.event.create-self": { displayName: "Create Calendar event", description: "Create an event on a connected Calendar" },
545
+ "qi/googlecalendar.event.list-self": { displayName: "List Calendar events", description: "Fetch events from a connected Calendar" },
546
+ "qi/googlecalendar.event.update-self": { displayName: "Update Calendar event", description: "Replace an existing Calendar event" },
547
+ "qi/governance.authz.exec": { displayName: "Execute Authorized Action", description: "Propose executing a message the POD was authorized to run" },
548
+ "qi/governance.authz.grant": { displayName: "Grant Authorization", description: "Propose granting an address authorization to act for the POD" },
549
+ "qi/governance.authz.revoke": { displayName: "Revoke Authorization", description: "Propose revoking a previously granted authorization" },
550
+ "qi/governance.chain-governance-vote": { displayName: "Chain Governance Vote", description: "Propose casting the POD's vote on a chain governance proposal" },
551
+ "qi/governance.contract.execute": { displayName: "Execute Contract", description: "Propose executing a message on a smart contract as the DAO" },
552
+ "qi/governance.contract.instantiate": { displayName: "Instantiate Contract", description: "Propose instantiating a new smart contract from a code id" },
553
+ "qi/governance.contract.manage-cw20": { displayName: "Manage Token List", description: "Propose tracking or untracking a cw20 token in the DAO treasury" },
554
+ "qi/governance.contract.migrate": { displayName: "Migrate Contract", description: "Propose migrating a smart contract the DAO administers to a new code id" },
555
+ "qi/governance.contract.update-admin": { displayName: "Update Contract Admin", description: "Propose transferring admin rights over a smart contract to a new address" },
556
+ "qi/governance.custom-message": { displayName: "Custom Message", description: "Propose executing a raw JSON cosmos message (advanced)" },
557
+ "qi/governance.dao.accept-to-marketplace": { displayName: "Accept to Marketplace", description: "Propose marking an entity as verified on the marketplace" },
558
+ "qi/governance.dao.admin-exec": { displayName: "DAO Admin Execute", description: "Propose executing admin messages on a SubDAO this POD administers" },
559
+ "qi/governance.dao.create-entity": { displayName: "Create Entity", description: "Propose broadcasting a raw entity-creation message" },
560
+ "qi/governance.dao.join": { displayName: "Join Entity", description: "Propose linking this POD as a member of another entity" },
561
+ "qi/governance.dao.manage-storage": { displayName: "Manage Storage Items", description: "Propose setting or removing an item in the DAO's on-chain storage" },
562
+ "qi/governance.dao.manage-subdaos": { displayName: "Manage SubDAOs", description: "Propose recognising or removing SubDAOs of this DAO" },
563
+ "qi/governance.dao.update-info": { displayName: "Update DAO Info", description: "Propose replacing the DAO's name, description and image" },
564
+ "qi/governance.member-proposal": { displayName: "Membership Proposal", description: "Propose adding/removing members or changing voting power" },
565
+ "qi/governance.nft.burn": { displayName: "Burn NFT", description: "Propose permanently burning an NFT held by the treasury" },
566
+ "qi/governance.nft.manage-collections": { displayName: "Manage NFT Collections", description: "Propose tracking or untracking an NFT collection in the treasury" },
567
+ "qi/governance.nft.transfer": { displayName: "Transfer NFT", description: "Propose transferring an NFT from the treasury" },
568
+ "qi/governance.settings-proposal": { displayName: "Governance Settings Proposal", description: "Propose new voting rules (period, quorum, thresholds)" },
569
+ "qi/governance.staking.stake": { displayName: "Stake Treasury Tokens", description: "Propose staking treasury IXO with a validator \u2014 stake, unstake, restake or claim rewards" },
570
+ "qi/governance.staking.stake-to-group": { displayName: "Stake to POD", description: "Propose staking treasury cw20 tokens into a POD's staking contract" },
571
+ "qi/governance.submission-config-proposal": { displayName: "Proposal Submission Rules", description: "Propose changing who may submit proposals and the required deposit" },
572
+ "qi/governance.transaction.mint": { displayName: "Mint Governance Tokens", description: "Propose minting new governance tokens to an address" },
573
+ "qi/governance.transaction.perform-token-swap": { displayName: "Fund Token Swap", description: "Propose funding the POD\u2019s side of a token swap contract" },
574
+ "qi/governance.transaction.send-funds": { displayName: "Send Funds", description: "Propose sending funds from the POD treasury" },
575
+ "qi/governance.transaction.send-group-token": { displayName: "Send POD Tokens", description: "Propose transferring cw20 POD tokens from the treasury" },
576
+ "qi/governance.transaction.withdraw-token-swap": { displayName: "Withdraw Token Swap", description: "Propose withdrawing the POD\u2019s funds from a token swap contract" },
577
+ "qi/governance.validator.actions": { displayName: "Validator Actions", description: "Propose a validator operation with the POD's validator account" },
578
+ "qi/http.request": { displayName: "HTTP Request", description: "Make an HTTP API request" },
579
+ "qi/http.fetch": { displayName: "Fetch HTTP Resource", description: "Read data from an HTTP endpoint" },
580
+ "qi/incident.escalate": { displayName: "Escalate Incident", description: "Notify the stated recipients about an incident escalation" },
581
+ "qi/incident.mitigation.record": { displayName: "Record Incident Mitigation", description: "Record mitigation work and evidence for an incident" },
582
+ "qi/human.checkbox.set": { displayName: "Checkbox Set", description: "Record a checkbox response" },
583
+ "qi/human.form.submit": { displayName: "Human Form Submit", description: "Submit a human-completed form" },
584
+ "qi/identity.create": { displayName: "Create Identity", description: "Create an IID document and Matrix account for a user" },
585
+ "qi/iid.create": { displayName: "Create IID", description: "Create an IID document on-chain" },
586
+ "qi/kyc.verify": { displayName: "Identity Verification (KYC)", description: "Verify your identity and save the issued credential to your Vault" },
587
+ "qi/matrix.dm": { displayName: "Matrix DM", description: "Send a direct message via Matrix" },
588
+ "qi/matrix.register": { displayName: "Register Matrix Account", description: "Create a Matrix account and access token" },
589
+ "qi/notification.push": { displayName: "Push Notification", description: "Send a push notification" },
590
+ "qi/oracle.configureOracle": { displayName: "Configure Oracle", description: "Store oracle secrets and configuration in one step" },
591
+ "qi/oracle.contract": { displayName: "Create Oracle Contract", description: "Establish the user-oracle Matrix DM room" },
592
+ "qi/oracle.deploy": { displayName: "Deploy Oracle", description: "Build, deploy, and start the oracle" },
593
+ "qi/oracle.deploySetup": { displayName: "Set Up Oracle Deployment", description: "Build and prepare the oracle for deployment" },
594
+ "qi/oracle.deployStart": { displayName: "Start Oracle Deployment", description: "Start the oracle deployment process" },
595
+ "qi/oracle.invoke": { displayName: "Ask your Agent", description: "Send a prompt to the Personal Agent" },
596
+ "qi/oracle.storeConfig": { displayName: "Store Oracle Config", description: "Store the oracle configuration in Matrix room state" },
597
+ "qi/oracle.storeSecrets": { displayName: "Store Oracle Secrets", description: "Store oracle secrets in Matrix room state" },
598
+ "qi/oracle.storeSecretsAndConfig": { displayName: "Store Oracle Secrets & Config", description: "Store oracle secrets and configuration in Matrix room state" },
599
+ "qi/outlook.email.send": { displayName: "Send Outlook email", description: "Send an email from the template author's Outlook account" },
600
+ "qi/pod.domain-indexer-lookup": { displayName: "Define Purpose", description: "Capture intent and find matching Blueprint candidates" },
601
+ "qi/pod.domain-single-selection": { displayName: "Select Blueprint", description: "Choose a Blueprint protocol for the POD" },
602
+ "qi/pod.entity-single-selection": { displayName: "Select Parent Organisation", description: "Pick a parent entity where you hold a role" },
603
+ "qi/pod.governance-config": { displayName: "Configure Governance", description: "Set the governance group type and decision policy" },
604
+ "qi/pod.list-domain-flows": { displayName: "Select Flow Templates", description: "Choose protocol flow templates to import" },
605
+ "qi/pod.member-multi-select": { displayName: "Configure Membership", description: "Define POD members, roles, and voting power" },
606
+ "qi/proposal.create": { displayName: "Create Proposal", description: "Create an on-chain governance proposal" },
607
+ "qi/proposal.vote": { displayName: "Vote on Proposal", description: "Cast a vote on a governance proposal" },
608
+ "qi/protocol.select": { displayName: "Select Protocol", description: "Select a protocol from a configured list" },
609
+ "qi/sandbox.provision": { displayName: "Provision Sandbox", description: "Provision a sandbox environment for the oracle" },
610
+ "qi/settlement.execute": { displayName: "Execute Settlement", description: "Execute an approved settlement using the configured provider" },
611
+ "qi/slack.message.send": { displayName: "Post Slack message", description: "Post a message to a channel from the template author's Slack account" },
612
+ "qi/topic.action.cancel": { displayName: "Cancel Topic Action", description: "Cancel an outstanding governed Action request" },
613
+ "qi/topic.action.receipt.record": { displayName: "Record Action Receipt", description: "Record a signed Action receipt against its Topic request" },
614
+ "qi/topic.action.request": { displayName: "Request Topic Action", description: "Request an Action against the current Topic revision" },
615
+ "qi/topic.context.link": { displayName: "Link Topic Context", description: "Link a referenced resource or service to the Topic" },
616
+ "qi/topic.contract.confirm-setup": { displayName: "Confirm Topic Setup", description: "Confirm the exact proposed Topic setup revision" },
617
+ "qi/topic.decision.record": { displayName: "Record Topic Decision", description: "Record an authorised decision and its rationale" },
618
+ "qi/topic.file.attach-reference": { displayName: "Attach File Reference", description: "Attach a pinned VFS file reference to the Topic" },
619
+ "qi/topic.flow.bind": { displayName: "Bind Flow to Topic", description: "Bind a governed Flow revision to the Topic" },
620
+ "qi/topic.flow.unbind": { displayName: "Unbind Flow from Topic", description: "Remove an existing Flow binding from the Topic" },
621
+ "qi/outcome.certificate": { displayName: "Issue Outcome Certificate", description: "Certify that a promised outcome was achieved and evidenced" },
622
+ "qi/topic.outcome.confirm": { displayName: "Confirm Topic Outcome", description: "Confirm a proposed outcome using the stated authority" },
623
+ "qi/topic.outcome.propose": { displayName: "Propose Topic Outcome", description: "Propose an evidence-backed outcome for review" },
624
+ "qi/topic.status.transition": { displayName: "Change Topic Status", description: "Move the Topic between permitted lifecycle statuses" },
625
+ "qi/yoid.link": { displayName: "Link YoID", description: "Link a participant to their Yoma identity" },
626
+ "qi/yoma.opportunity": { displayName: "Publish Yoma Opportunity", description: "Publish an opportunity young people can take part in" },
627
+ "qi/wallet.fund": { displayName: "Fund Wallet", description: "Fund a wallet with an on-chain transfer" },
628
+ "qi/wallet.generate": { displayName: "Generate Wallet", description: "Generate an IXO wallet and DID" },
629
+ "qi/wallet.generateAndFund": { displayName: "Generate & Fund Wallet", description: "Generate an IXO wallet and fund it on-chain" },
630
+ "qi/work.accept": { displayName: "Accept Work", description: "Accept submitted work using the stated authority" },
631
+ "qi/work.assign": { displayName: "Assign Work", description: "Assign a referenced unit of work" },
632
+ "qi/work.checkpoint": { displayName: "Record Work Checkpoint", description: "Record progress and evidence for work in progress" },
633
+ "qi/work.dispatch": { displayName: "Dispatch Work", description: "Dispatch assigned work to its assignee" },
634
+ "qi/work.submit": { displayName: "Submit Work", description: "Submit completed work for review" },
635
+ "qi/xero.contact.create": { displayName: "Create Xero contact", description: "Add a customer or supplier in Xero" },
636
+ "qi/xero.invoice.create": { displayName: "Create Xero invoice", description: "Draft a new Xero invoice" },
637
+ "qi/xero.invoice.list": { displayName: "List Xero invoices", description: "Fetch invoices from Xero" },
638
+ "qi/xero.payment.create": { displayName: "Record Xero payment", description: "Settle a Xero bill \u2014 typically wired to capture an on-chain tx hash as the reference" }
639
+ };
640
+ function humanizeActionType(type) {
641
+ const withoutNamespace = type.replace(/^qi\//, "").replace(/^oracle\.?/, "oracle ");
642
+ const words = withoutNamespace.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/[./_-]+/).filter(Boolean);
643
+ return words.map((word) => /^(iid|kyc|dao|nft|http|dm|pod|cw20)$/i.test(word) ? word.toUpperCase() : word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
644
+ }
645
+ function getActionPresentation(type) {
646
+ const registered = PRESENTATION[type];
647
+ if (registered) return registered;
648
+ const displayName = humanizeActionType(type) || "Action";
649
+ return { displayName, description: `Perform ${displayName.toLowerCase()} as part of this flow.` };
650
+ }
651
+
652
+ // src/core/lib/actionRegistry/types.ts
653
+ var TOPIC_ACTION_BASE_KINDS = ["task", "agent_task", "proposal", "evaluation", "claims", "question", "discussion", "incident"];
654
+ var CollectionStateEnum = /* @__PURE__ */ ((CollectionStateEnum2) => {
655
+ CollectionStateEnum2[CollectionStateEnum2["OPEN"] = 0] = "OPEN";
656
+ CollectionStateEnum2[CollectionStateEnum2["PAUSED"] = 1] = "PAUSED";
657
+ CollectionStateEnum2[CollectionStateEnum2["CLOSED"] = 2] = "CLOSED";
658
+ return CollectionStateEnum2;
659
+ })(CollectionStateEnum || {});
660
+
661
+ // src/core/lib/actionRegistry/topicPolicy.ts
662
+ var ALL_KINDS = [...TOPIC_ACTION_BASE_KINDS];
663
+ var HUMAN_OWNED = [
664
+ /^qi\/human\./,
665
+ /^qi\/governance\./,
666
+ /^qi\/proposal\./,
667
+ /^qi\/(claim|bid)\.(submit|evaluate)$/,
668
+ /^qi\/(domain\.sign|entity\.|iid\.|identity\.|kyc\.)/,
669
+ /^qi\/(carbon\.(harvest|retire)|wallet\.fund)/,
670
+ // qi/xero.invoice.create and qi/xero.payment.create are deliberately absent:
671
+ // they are agent-owned. A headless runner contracts them out to the Xero
672
+ // helper oracle through @ixo/flow-work, and that oracle acts on the user's
673
+ // own delegated Composio authority, so no human surface is needed at
674
+ // execution time. qi/xero.payment.create stays riskTier 'high' — risk and
675
+ // execution owner are separate decisions.
676
+ /^qi\/settlement\./,
677
+ /^qi\/topic\.(flow\.(bind|unbind)|status\.transition|contract\.accept|outcome\.confirm)$/,
678
+ /^qi\/work\.accept$/,
679
+ /^qi\/answer\.accept$/
680
+ ];
681
+ var RESTRICTED = [/^qi\/oracle\.(configure|deploy|store)/i, /^qi\/(matrix\.register|sandbox\.provision|entity\.createOracle|wallet\.generate)/];
682
+ function any(patterns, value) {
683
+ return patterns.some((pattern) => pattern.test(value));
684
+ }
685
+ function requiredServices(type) {
686
+ if (type.startsWith("qi/http.")) return ["http"];
687
+ if (type === "qi/email.send") return ["email"];
688
+ if (type === "qi/notification.push") return ["notifications"];
689
+ if (/^qi\/(gmail|outlook|slack|googlecalendar|calendar|xero)\./.test(type)) return ["integrations"];
690
+ if (/^qi\/flow\.run\./.test(type)) return ["flowRuns"];
691
+ if (/^qi\/blueprint\./.test(type)) return ["blueprint"];
692
+ if (/^qi\/bid\./.test(type)) return ["bid"];
693
+ if (/^qi\/claim\./.test(type)) return ["claim"];
694
+ if (type === "qi/collection.lifecycle") return ["collection"];
695
+ if (type === "qi/collection.users") return ["collectionUsers"];
696
+ if (/^qi\/(matrix\.dm|credential\.store)/.test(type)) return ["matrix"];
697
+ if (/^qi\/(oracle\.|wallet\.|iid\.|matrix\.register|identity\.|entity\.createOracle|sandbox\.)/.test(type) || type === "qi/oracle.invoke") return ["oracle"];
698
+ if (/^qi\/carbon\./.test(type)) return ["carbon"];
699
+ if (/^qi\/entity\.transfer/.test(type)) return ["entity"];
700
+ if (/^qi\/kyc\./.test(type)) return ["kyc"];
701
+ if (/^qi\/eval\./.test(type)) return ["evalRegister", "rubric"];
702
+ if (/^qi\/topic\./.test(type)) return ["topic"];
703
+ if (/^qi\/agent\./.test(type)) return ["agents"];
704
+ if (/^qi\/evidence\./.test(type)) return ["evidence"];
705
+ if (/^qi\/evaluation\./.test(type)) return ["evaluations"];
706
+ if (/^qi\/settlement\./.test(type)) return ["settlement"];
707
+ if (/^qi\/incident\.escalate/.test(type)) return ["incidents"];
708
+ if (/^qi\/(work|answer|incident\.mitigation)\./.test(type)) return ["topic"];
709
+ if (/^qi\/(governance|proposal|domain\.)\./.test(type)) return ["portalHandlers"];
710
+ return [];
711
+ }
712
+ function riskTier(action) {
713
+ const type = action.type;
714
+ if (/^qi\/(settlement\.execute|carbon\.retire)$/.test(type)) return "critical";
715
+ if (/^qi\/(governance\.|claim\.evaluate|entity\.transfer|domain\.sign|xero\.payment\.create|wallet\.fund)/.test(type)) return "high";
716
+ if (!action.sideEffect || /\.(list|loadBatches|card-preview|fetch)$/.test(type)) return "low";
717
+ return "medium";
718
+ }
719
+ function sensitivePaths(type) {
720
+ const input = [];
721
+ const output = [];
722
+ if (type.startsWith("qi/http.")) {
723
+ input.push("headers.authorization", "headers.cookie", "headers.x-api-key", "body");
724
+ output.push("data", "response");
725
+ }
726
+ if (/^qi\/(email|gmail|outlook|slack|notification|matrix\.dm)/.test(type)) {
727
+ input.push("to", "cc", "bcc", "body", "template", "variables");
728
+ output.push("providerResponse");
729
+ }
730
+ if (/^qi\/(gmail|outlook|slack|googlecalendar|calendar|xero)\./.test(type)) input.push("connection", "bindingId");
731
+ if (/^qi\/(kyc|credential)\./.test(type)) {
732
+ input.push("data", "credential");
733
+ output.push("credential", "surveyAnswers");
734
+ }
735
+ if (/^qi\/(oracle\.|wallet\.|iid\.|matrix\.register|identity\.|entity\.createOracle|sandbox\.)/.test(type)) {
736
+ input.push("mnemonic", "pin", "secrets", "config");
737
+ output.push("mnemonic", "privateKey", "matrixAccessToken", "matrixPassword", "matrixRecoveryPhrase", "secrets");
738
+ }
739
+ if (type === "qi/oracle.invoke") {
740
+ input.push("prompt");
741
+ output.push("result");
742
+ }
743
+ if (/^qi\/(form|human\.form|claim|bid)\./.test(type)) {
744
+ input.push("answers", "surveyAnswers", "surveyData");
745
+ output.push("answers", "surveyAnswers", "surveyData");
746
+ }
747
+ return { sensitiveInputPaths: [...new Set(input)].sort(), sensitiveOutputPaths: [...new Set(output)].sort() };
748
+ }
749
+ function topicKindsAndRelevance(type) {
750
+ if (any(RESTRICTED, type)) return { supportedBaseKinds: ["agent_task"], relevance: "restricted" };
751
+ if (/^qi\/flow\.run\./.test(type)) return { supportedBaseKinds: ALL_KINDS, relevance: "recommended" };
752
+ if (/^qi\/(oracle\.invoke|agent\.)/.test(type)) return { supportedBaseKinds: ["agent_task", "question", "task"], relevance: "recommended" };
753
+ if (/^qi\/(governance\.|proposal\.|topic\.decision)/.test(type)) return { supportedBaseKinds: ["proposal", "discussion", "evaluation"], relevance: "recommended" };
754
+ if (/^qi\/(eval\.|evaluation\.)/.test(type)) return { supportedBaseKinds: ["evaluation", "claims"], relevance: "recommended" };
755
+ if (/^qi\/(claim\.|collection\.|settlement\.)/.test(type)) return { supportedBaseKinds: ["claims", "evaluation"], relevance: "recommended" };
756
+ if (/^qi\/(work\.)/.test(type)) return { supportedBaseKinds: ["task", "discussion", "incident"], relevance: "recommended" };
757
+ if (/^qi\/(evidence\.|answer\.)/.test(type)) return { supportedBaseKinds: ["question", "evaluation"], relevance: "recommended" };
758
+ if (/^qi\/incident\./.test(type)) return { supportedBaseKinds: ["incident"], relevance: "recommended" };
759
+ if (/^qi\/topic\./.test(type)) return { supportedBaseKinds: ALL_KINDS, relevance: "recommended" };
760
+ if (/^qi\/(http\.|domain\.card-preview|calendar\.|googlecalendar\.)/.test(type))
761
+ return { supportedBaseKinds: ["question", "evaluation", "agent_task", "task"], relevance: "contextual" };
762
+ if (/^qi\/(email\.|gmail\.|outlook\.|slack\.|matrix\.dm|notification\.)/.test(type)) {
763
+ return { supportedBaseKinds: ["task", "question", "discussion", "incident"], relevance: "contextual" };
764
+ }
765
+ return { supportedBaseKinds: ALL_KINDS, relevance: "contextual" };
766
+ }
767
+ function topicSemanticRecords(type) {
768
+ if (/^qi\/(governance\.|proposal\.)/.test(type)) return ["org.ixo.topic.proposal-receipt"];
769
+ if (/^qi\/claim\.submit/.test(type)) return ["org.ixo.topic.claim-submission"];
770
+ if (/^qi\/claim\.evaluate/.test(type)) return ["org.ixo.topic.claim-evaluation"];
771
+ if (/^qi\/evaluation\./.test(type)) return ["org.ixo.topic.evaluation-assertion"];
772
+ return [];
773
+ }
774
+ function normalizeActionPolicy(action) {
775
+ const sensitive = sensitivePaths(action.type);
776
+ const topicSelection = topicKindsAndRelevance(action.type);
777
+ const semanticRecords = topicSemanticRecords(action.type);
778
+ const declaredTopic = action.topic;
779
+ const sensitiveInputPaths = [.../* @__PURE__ */ new Set([...action.sensitiveInputPaths || [], ...sensitive.sensitiveInputPaths])].sort();
780
+ const sensitiveOutputPaths = [.../* @__PURE__ */ new Set([...action.sensitiveOutputPaths || [], ...sensitive.sensitiveOutputPaths])].sort();
781
+ return {
782
+ executionOwner: action.executionOwner || (any(HUMAN_OWNED, action.type) ? "human" : "agent"),
783
+ riskTier: action.riskTier || riskTier(action),
784
+ requiredServices: [...new Set(action.requiredServices || requiredServices(action.type))].sort(),
785
+ sensitiveInputPaths,
786
+ sensitiveOutputPaths,
787
+ topic: declaredTopic ? {
788
+ ...declaredTopic,
789
+ semanticRecordTypes: declaredTopic.semanticRecordTypes || getTopicSemanticRecordDefinitions(declaredTopic.permittedTopicRecordTypes),
790
+ permittedTopicRecordTypes: (declaredTopic.semanticRecordTypes || getTopicSemanticRecordDefinitions(declaredTopic.permittedTopicRecordTypes)).map(
791
+ (definition) => definition.type
792
+ )
793
+ } : {
794
+ ...topicSelection,
795
+ writeBackMode: semanticRecords.length > 0 ? "semantic-record" : "receipt-only",
796
+ semanticRecordTypes: getTopicSemanticRecordDefinitions(semanticRecords),
797
+ permittedTopicRecordTypes: semanticRecords,
798
+ lifecycleEffect: "none",
799
+ requiredTopicAbilities: ["topic/request-action", "topic/record-action"],
800
+ redactionPolicy: { mode: "paths", sensitiveInputPaths, sensitiveOutputPaths }
801
+ }
802
+ };
803
+ }
804
+
805
+ // src/core/lib/actionRegistry/registry.ts
806
+ var actions = /* @__PURE__ */ new Map();
807
+ var LEGACY_ACTION_CONTRACT_VERSION = "4.0.0";
808
+ var registryRevision = 0;
809
+ function getRegistryRevision() {
810
+ return registryRevision;
811
+ }
812
+ var STEP_COMPLETED_EVENT_NAME = "step.completed";
813
+ var STEP_COMPLETED_EVENT = {
814
+ name: STEP_COMPLETED_EVENT_NAME,
815
+ displayName: "Completed",
816
+ description: "Fires when this step is completed.",
817
+ payloadSchema: []
818
+ };
819
+ var doneWhenCompleted = {
820
+ isDone: (state) => state.state === "completed"
821
+ };
822
+ var neverDone = {
823
+ isDone: () => false
824
+ };
825
+ var ACTION_TYPE_ALIASES = {
826
+ oracle: "qi/oracle.invoke",
827
+ bid: "qi/bid.submit",
828
+ claim: "qi/claim.submit",
829
+ evaluateBid: "qi/bid.evaluate",
830
+ evaluateClaim: "qi/claim.evaluate",
831
+ "email.send": "qi/email.send",
832
+ "http.request": "qi/http.request",
833
+ "form.submit": "qi/form.submit",
834
+ "human.form.submit": "qi/human.form.submit",
835
+ "human.checkbox.set": "qi/human.checkbox.set",
836
+ "notification.push": "qi/notification.push",
837
+ "proposal.create": "qi/proposal.create",
838
+ "proposal.vote": "qi/proposal.vote",
839
+ "protocol.select": "qi/protocol.select",
840
+ "domain.sign": "qi/domain.sign",
841
+ "domain.card-preview": "qi/domain.card-preview",
842
+ "credential.store": "qi/credential.store",
843
+ // POD setup flow — camelCase orchestrator labels → canonical action types
844
+ DomainIndexerLookup: "qi/pod.domain-indexer-lookup",
845
+ DomainSingleSelection: "qi/pod.domain-single-selection",
846
+ EntitySingleSelection: "qi/pod.entity-single-selection",
847
+ MemberMultiSelect: "qi/pod.member-multi-select",
848
+ governanceConfig: "qi/pod.governance-config",
849
+ listDomainFlows: "qi/pod.list-domain-flows",
850
+ "matrix.dm": "qi/matrix.dm",
851
+ // The qi/calendar.* namespace is retired permanently (IXO-4420 §5): these
852
+ // blocks were always Google Calendar via Composio, misnamed as neutral.
853
+ // Aliases keep every existing document loading; because resolveActionType
854
+ // checks aliases before registered types, no new canonical action can ever
855
+ // be registered under these names — the IXO-native calendar (M4) takes
856
+ // qi/ixo.calendar.event.* instead.
857
+ "qi/calendar.event.create": "qi/googlecalendar.event.create-self",
858
+ "qi/calendar.event.update": "qi/googlecalendar.event.update-self",
859
+ "qi/calendar.event.list": "qi/googlecalendar.event.list-self",
860
+ // Topic v3 called setup confirmation "accept contract". Persisted Flow
861
+ // documents keep that action key, so resolve it to the v4 confirmation
862
+ // contract while new documents use the canonical name.
863
+ "qi/topic.contract.accept": "qi/topic.contract.confirm-setup"
864
+ };
865
+ var aliases = new Map(Object.entries(ACTION_TYPE_ALIASES));
866
+ function resolveActionType(type) {
867
+ return aliases.get(type) ?? type;
868
+ }
869
+ function normalizeCan(can) {
870
+ const trimmed = can.trim();
871
+ const lastDot = trimmed.lastIndexOf(".");
872
+ if (!trimmed.includes("/") && lastDot > 0) {
873
+ return `${trimmed.slice(0, lastDot)}/${trimmed.slice(lastDot + 1)}`;
874
+ }
875
+ return trimmed;
876
+ }
877
+ function normalizeCapabilityPattern(pattern) {
878
+ return normalizeCan(pattern);
879
+ }
880
+ function actionTypeToCan(type) {
881
+ const resolvedType = resolveActionType(type.trim());
882
+ const registered = actions.get(resolvedType);
883
+ if (registered?.can) return normalizeCan(registered.can);
884
+ const mapped = typeToCan(resolvedType);
885
+ if (mapped) return normalizeCan(mapped);
886
+ if (!resolvedType.startsWith("qi/")) return void 0;
887
+ return normalizeCan(resolvedType.slice("qi/".length));
888
+ }
889
+ function canToActionType(can) {
890
+ const normalizedCan = normalizeCan(can);
891
+ for (const action of actions.values()) {
892
+ if (action.can && normalizeCan(action.can) === normalizedCan) return action.type;
893
+ }
894
+ const mapped = canToType(normalizedCan);
895
+ if (mapped) return resolveActionType(mapped);
896
+ const segments = normalizedCan.split("/");
897
+ if (segments.length !== 2) return void 0;
898
+ const [namespace, verb] = segments;
899
+ if (namespace.length === 0 || verb.length === 0) return void 0;
900
+ return `qi/${namespace}.${verb}`;
901
+ }
902
+ function capabilityPatternCoversCan(pattern, can, options = {}) {
903
+ const normalizedPattern = normalizeCapabilityPattern(pattern);
904
+ const normalizedCan = normalizeCan(can);
905
+ if (normalizedPattern === "*") return options.allowGlobalWildcard === true;
906
+ if (normalizedPattern === normalizedCan) return true;
907
+ if (normalizedPattern.endsWith("/*")) {
908
+ const prefix = normalizedPattern.slice(0, -1);
909
+ return normalizedCan.startsWith(prefix);
910
+ }
911
+ return false;
912
+ }
913
+ function registerAction(definition) {
914
+ const presentation = getActionPresentation(definition.type);
915
+ definition.displayName = definition.displayName?.trim() || presentation.displayName;
916
+ definition.description = definition.description?.trim() || presentation.description;
917
+ if (!definition.contractVersion?.trim()) {
918
+ definition.contractVersion = LEGACY_ACTION_CONTRACT_VERSION;
919
+ }
920
+ if (definition.can) definition.can = normalizeCan(definition.can);
921
+ Object.assign(definition, normalizeActionPolicy(definition));
922
+ if (!definition.done) {
923
+ warnOnce(`missing-done-contract:${definition.type}`, `[flow-config] action ${definition.type}: no done contract declared; defaulting to state === 'completed'`);
924
+ definition.done = doneWhenCompleted;
925
+ }
926
+ actions.set(definition.type, definition);
927
+ registryRevision += 1;
928
+ }
929
+ function getAction(type) {
930
+ return actions.get(resolveActionType(type));
931
+ }
932
+ function getAllActions() {
933
+ return Array.from(actions.values());
934
+ }
935
+ function isRepeatableAction(type) {
936
+ if (!type) return false;
937
+ return getAction(type)?.cardinality === "many";
938
+ }
939
+ function isNeverDoneAction(type) {
940
+ if (!type) return false;
941
+ return getAction(type)?.done === neverDone;
942
+ }
943
+ function getAliasEntries() {
944
+ return Array.from(aliases.entries());
945
+ }
946
+ function hasAction(type) {
947
+ return actions.has(resolveActionType(type));
948
+ }
949
+ function getActionByCan(can) {
950
+ const normalizedCan = normalizeCan(can);
951
+ for (const action of actions.values()) {
952
+ if (action.can && normalizeCan(action.can) === normalizedCan) return action;
953
+ }
954
+ return void 0;
955
+ }
956
+ function getEventsForBlock(action, inputs) {
957
+ if (!action) return [];
958
+ let events;
959
+ if (action.getDynamicEvents) {
960
+ const parsed = normalizeInputs(inputs);
961
+ try {
962
+ const dynamic = action.getDynamicEvents(parsed) || [];
963
+ events = action.dynamicResolutionMode === "replace" ? dynamic : mergeByKey(action.events || [], dynamic, (event) => event.name);
964
+ } catch (error) {
965
+ warnOnce(
966
+ `dynamic-events:${action.type}`,
967
+ `[flow-config] action ${action.type}: getDynamicEvents threw (${error instanceof Error ? error.message : String(error)}); no events resolved`
968
+ );
969
+ events = [];
970
+ }
971
+ } else {
972
+ events = action.events || [];
973
+ }
974
+ if (events.some((event) => event.name === STEP_COMPLETED_EVENT_NAME)) {
975
+ return events;
976
+ }
977
+ return [...events, STEP_COMPLETED_EVENT];
978
+ }
979
+ function getOutputSchemaForBlock(action, inputs) {
980
+ if (!action) return [];
981
+ if (action.getDynamicOutputSchema) {
982
+ const parsed = normalizeInputs(inputs);
983
+ try {
984
+ const dynamic = action.getDynamicOutputSchema(parsed) || [];
985
+ if (action.dynamicResolutionMode === "replace") return dynamic;
986
+ return mergeByKey(action.outputSchema || [], dynamic, (field) => field.path);
987
+ } catch (error) {
988
+ warnOnce(
989
+ `dynamic-output-schema:${action.type}`,
990
+ `[flow-config] action ${action.type}: getDynamicOutputSchema threw (${error instanceof Error ? error.message : String(error)}); using static schema`
991
+ );
992
+ return action.outputSchema || [];
993
+ }
994
+ }
995
+ return action.outputSchema || [];
996
+ }
997
+ function mergeByKey(baseline, dynamic, keyOf) {
998
+ const dynamicKeys = new Set(dynamic.map(keyOf));
999
+ return [...baseline.filter((item) => !dynamicKeys.has(keyOf(item))), ...dynamic];
1000
+ }
1001
+ function normalizeInputs(inputs) {
1002
+ if (!inputs) return {};
1003
+ if (typeof inputs === "object") return inputs;
1004
+ if (typeof inputs === "string") {
1005
+ try {
1006
+ const parsed = JSON.parse(inputs || "{}");
1007
+ return parsed && typeof parsed === "object" ? parsed : {};
1008
+ } catch {
1009
+ warnOnce(`inputs-normalize:${inputs}`, `[flow-config] block inputs are not valid JSON; treated as empty`);
1010
+ return {};
1011
+ }
1012
+ }
1013
+ return {};
1014
+ }
1015
+
1016
+ // src/core/lib/flowEngine/dmNotificationState.ts
1017
+ var DM_NOTIFICATIONS_MAP_KEY = "dmNotificationState";
1018
+ var DM_NOTIFICATIONS_KEY = "__dm_notifications";
1019
+ var DM_NOTIFICATIONS_PENDING_KEY = "__dm_notifications_pending";
1020
+ var LEGACY_RUNTIME_MAP_KEY = "runtime";
1021
+ function getDMMap(yDoc) {
1022
+ return yDoc.getMap(DM_NOTIFICATIONS_MAP_KEY);
1023
+ }
1024
+ function getLegacyMap(yDoc) {
1025
+ return yDoc.getMap(LEGACY_RUNTIME_MAP_KEY);
1026
+ }
1027
+ function readRecordBag(map, key) {
1028
+ return readNestedBag(map?.get(key));
1029
+ }
1030
+ function readNestedBag(value) {
1031
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
1032
+ return value;
1033
+ }
1034
+ function asRecord(value) {
1035
+ if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
1036
+ return value;
1037
+ }
1038
+ function notifiedAtOf(record) {
1039
+ const at = record.notifiedAt;
1040
+ return typeof at === "number" && Number.isFinite(at) ? at : Number.NEGATIVE_INFINITY;
1041
+ }
1042
+ function resolveRecord(legacy, current) {
1043
+ const l = asRecord(legacy);
1044
+ const c = asRecord(current);
1045
+ if (!l) return c;
1046
+ if (!c) return l;
1047
+ return notifiedAtOf(l) > notifiedAtOf(c) ? l : c;
1048
+ }
1049
+ function unionKeys(a, b) {
1050
+ return Array.from(/* @__PURE__ */ new Set([...Object.keys(a), ...Object.keys(b)]));
1051
+ }
1052
+ function copyBag(value) {
1053
+ if (!value || typeof value !== "object" || Array.isArray(value)) return value;
1054
+ const out = {};
1055
+ for (const [key, nested] of Object.entries(value)) {
1056
+ out[key] = copyBag(nested);
1057
+ }
1058
+ return out;
1059
+ }
1060
+ function writeDedupBag(yDoc, key, next) {
1061
+ yDoc.transact(() => {
1062
+ getDMMap(yDoc).set(key, copyBag(next));
1063
+ getLegacyMap(yDoc).set(key, copyBag(next));
1064
+ });
1065
+ }
1066
+ function getDMNotificationState(yDoc) {
1067
+ const legacy = readRecordBag(getLegacyMap(yDoc), DM_NOTIFICATIONS_KEY);
1068
+ const current = readRecordBag(getDMMap(yDoc), DM_NOTIFICATIONS_KEY);
1069
+ const merged = {};
1070
+ for (const blockId of unionKeys(legacy, current)) {
1071
+ const winner = resolveRecord(legacy[blockId], current[blockId]);
1072
+ if (winner) merged[blockId] = { ...winner };
1073
+ }
1074
+ return merged;
1075
+ }
1076
+ function setDMNotificationRecord(yDoc, blockId, record) {
1077
+ const next = {
1078
+ ...getDMNotificationState(yDoc),
1079
+ [blockId]: { ...record }
1080
+ };
1081
+ writeDedupBag(yDoc, DM_NOTIFICATIONS_KEY, next);
1082
+ }
1083
+ function shouldNotify(state, blockId, currentAssignedDid) {
1084
+ const existing = state[blockId];
1085
+ if (!existing) return true;
1086
+ return existing.assignedDid !== currentAssignedDid;
1087
+ }
1088
+ function getPendingDMNotificationState(yDoc) {
1089
+ const legacy = readRecordBag(getLegacyMap(yDoc), DM_NOTIFICATIONS_PENDING_KEY);
1090
+ const current = readRecordBag(getDMMap(yDoc), DM_NOTIFICATIONS_PENDING_KEY);
1091
+ const merged = {};
1092
+ for (const blockId of unionKeys(legacy, current)) {
1093
+ const legacyBlock = readNestedBag(legacy[blockId]);
1094
+ const currentBlock = readNestedBag(current[blockId]);
1095
+ const block = {};
1096
+ for (const invocationId of unionKeys(legacyBlock, currentBlock)) {
1097
+ const winner = resolveRecord(legacyBlock[invocationId], currentBlock[invocationId]);
1098
+ if (winner) block[invocationId] = { ...winner };
1099
+ }
1100
+ if (Object.keys(block).length > 0) merged[blockId] = block;
1101
+ }
1102
+ return merged;
1103
+ }
1104
+ function setPendingDMNotificationRecord(yDoc, blockId, pendingInvocationId, record) {
1105
+ const current = getPendingDMNotificationState(yDoc);
1106
+ const blockState = current[blockId] || {};
1107
+ const next = {
1108
+ ...current,
1109
+ [blockId]: {
1110
+ ...blockState,
1111
+ [pendingInvocationId]: { ...record }
1112
+ }
1113
+ };
1114
+ writeDedupBag(yDoc, DM_NOTIFICATIONS_PENDING_KEY, next);
1115
+ }
1116
+ function shouldNotifyPending(state, blockId, pendingInvocationId, currentAssignedDid) {
1117
+ const blockState = state[blockId];
1118
+ if (!blockState) return true;
1119
+ const existing = blockState[pendingInvocationId];
1120
+ if (!existing) return true;
1121
+ return existing.assignedDid !== currentAssignedDid;
1122
+ }
1123
+
1124
+ // src/core/lib/flowEngine/runs.ts
1125
+ import * as Y from "yjs";
1126
+ var RUNS_MAP_KEY = "runs";
1127
+ var RUNS_TERMINAL_MAP_KEY = "runsTerminal";
1128
+ var RUNS_TERMINAL_PENDING_MAP_KEY = "runsTerminalPending";
1129
+ var LEGACY_RUNTIME_MAP_KEY2 = "runtime";
1130
+ var UNSESSIONED_RUN_ID = "__unsessioned__";
1131
+ function isRecordInRun(recordRunId, sessionRunId) {
1132
+ return (recordRunId ?? UNSESSIONED_RUN_ID) === sessionRunId;
1133
+ }
1134
+ function resolveRecordRunId(recordRunId, requestedRunId) {
1135
+ return recordRunId ?? requestedRunId ?? UNSESSIONED_RUN_ID;
1136
+ }
1137
+ var PHANTOM_LEGACY_RUN_ID = "r-0000-legacy";
1138
+ var RUN_STORAGE_VERSION_KEY = "runStorageVersion";
1139
+ var LEGACY_RUN_STORAGE_VERSION = 1;
1140
+ var MULTI_RUN_STORAGE_VERSION = 2;
1141
+ var RESERVED_RUNTIME_KEY_PREFIX = "__";
1142
+ var LEGACY_RUNTIME_ADOPTION_DEFAULT = false;
1143
+ var legacyRuntimeAdoptionEnabled = LEGACY_RUNTIME_ADOPTION_DEFAULT;
1144
+ function isLegacyRuntimeAdoptionEnabled() {
1145
+ return legacyRuntimeAdoptionEnabled;
1146
+ }
1147
+ var META_KEY = "meta";
1148
+ var ACTIONS_KEY = "actions";
1149
+ var PENDING_INVOCATIONS_KEY = "pendingInvocations";
1150
+ var BARRIER_STATE_KEY = "barrierState";
1151
+ var NODE_STATE_RANK = {
1152
+ idle: 0,
1153
+ pending: 1,
1154
+ running: 2,
1155
+ cancelled: 3,
1156
+ failed: 4,
1157
+ retry_scheduled: 5,
1158
+ awaiting_readback: 6,
1159
+ awaiting_human: 7,
1160
+ needs_verification: 8,
1161
+ completed: 9
1162
+ };
1163
+ function rankOf(state) {
1164
+ if (!state) return -1;
1165
+ const rank = NODE_STATE_RANK[state];
1166
+ return typeof rank === "number" ? rank : -1;
1167
+ }
1168
+ function isKnownNodeState(state) {
1169
+ return Object.prototype.hasOwnProperty.call(NODE_STATE_RANK, state);
1170
+ }
1171
+ function isStarted(entry) {
1172
+ return !!entry.state && entry.state !== "idle";
1173
+ }
1174
+ function cloneState(value) {
1175
+ if (value === null || typeof value !== "object") return value;
1176
+ try {
1177
+ return structuredClone(value);
1178
+ } catch {
1179
+ try {
1180
+ return JSON.parse(JSON.stringify(value));
1181
+ } catch {
1182
+ return value;
1183
+ }
1184
+ }
1185
+ }
1186
+ function asStateObject(value) {
1187
+ if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
1188
+ const proto = Object.getPrototypeOf(value);
1189
+ if (proto !== Object.prototype && proto !== null) return void 0;
1190
+ const entry = value;
1191
+ const state = entry.state;
1192
+ const at = entry.executedAt;
1193
+ const stateUsable = state === void 0 || typeof state === "string" && isKnownNodeState(state);
1194
+ const atUsable = at === void 0 || typeof at === "number" && Number.isFinite(at);
1195
+ if (stateUsable && atUsable) return entry;
1196
+ const normalised = { ...entry };
1197
+ if (!stateUsable) delete normalised.state;
1198
+ if (!atUsable) delete normalised.executedAt;
1199
+ return normalised;
1200
+ }
1201
+ function resolveActionState(runEntry, flatEntry) {
1202
+ const run = asStateObject(runEntry);
1203
+ const flat = asStateObject(flatEntry);
1204
+ if (!run && !flat) return { value: {}, winner: "neither" };
1205
+ if (!run) return { value: cloneState(flat), winner: "flat" };
1206
+ if (!flat) return { value: cloneState(run), winner: "run" };
1207
+ const runWins = () => ({ value: cloneState(run), winner: "run" });
1208
+ const flatWins = () => ({ value: cloneState(flat), winner: "flat" });
1209
+ const runStarted = isStarted(run);
1210
+ const flatStarted = isStarted(flat);
1211
+ if (runStarted !== flatStarted) return runStarted ? runWins() : flatWins();
1212
+ const runAt = typeof run.executedAt === "number" ? run.executedAt : void 0;
1213
+ const flatAt = typeof flat.executedAt === "number" ? flat.executedAt : void 0;
1214
+ if (runAt !== void 0 && flatAt !== void 0 && runAt !== flatAt) {
1215
+ return runAt > flatAt ? runWins() : flatWins();
1216
+ }
1217
+ const runRank = rankOf(run.state);
1218
+ const flatRank = rankOf(flat.state);
1219
+ if (runRank !== flatRank) return runRank > flatRank ? runWins() : flatWins();
1220
+ if (runAt !== void 0 && flatAt === void 0) return runWins();
1221
+ if (flatAt !== void 0 && runAt === void 0) return flatWins();
1222
+ return runWins();
1223
+ }
1224
+ function getRunsMap(yDoc) {
1225
+ return yDoc.getMap(RUNS_MAP_KEY);
1226
+ }
1227
+ function getExistingRunsMap(yDoc) {
1228
+ return getExistingYMap(yDoc, RUNS_MAP_KEY);
1229
+ }
1230
+ function getRunsTerminalMap(yDoc) {
1231
+ return yDoc.getMap(RUNS_TERMINAL_MAP_KEY);
1232
+ }
1233
+ function getExistingRunsTerminalMap(yDoc) {
1234
+ return getExistingYMap(yDoc, RUNS_TERMINAL_MAP_KEY);
1235
+ }
1236
+ function getRunsTerminalPendingMap(yDoc) {
1237
+ return yDoc.getMap(RUNS_TERMINAL_PENDING_MAP_KEY);
1238
+ }
1239
+ function getExistingRunsTerminalPendingMap(yDoc) {
1240
+ return getExistingYMap(yDoc, RUNS_TERMINAL_PENDING_MAP_KEY);
1241
+ }
1242
+ function isRunTerminalOrPending(yDoc, runId) {
1243
+ return Boolean(getExistingRunsTerminalMap(yDoc)?.has(runId) || getExistingRunsTerminalPendingMap(yDoc)?.has(runId));
1244
+ }
1245
+ function getLegacyRuntimeMap(yDoc) {
1246
+ return yDoc.getMap(LEGACY_RUNTIME_MAP_KEY2);
1247
+ }
1248
+ function getExistingLegacyRuntimeMap(yDoc) {
1249
+ return getExistingYMap(yDoc, LEGACY_RUNTIME_MAP_KEY2);
1250
+ }
1251
+ function getRunStorageVersion(yDoc) {
1252
+ assertDoc(yDoc, "getRunStorageVersion");
1253
+ const declared = getExistingYMap(yDoc, "root")?.get(RUN_STORAGE_VERSION_KEY);
1254
+ if (declared === MULTI_RUN_STORAGE_VERSION) return MULTI_RUN_STORAGE_VERSION;
1255
+ if (declared === LEGACY_RUN_STORAGE_VERSION) return LEGACY_RUN_STORAGE_VERSION;
1256
+ return hasLegacyRuntimeHistory(yDoc) ? LEGACY_RUN_STORAGE_VERSION : MULTI_RUN_STORAGE_VERSION;
1257
+ }
1258
+ function usesLegacyRuntimeCompatibility(yDoc) {
1259
+ return getRunStorageVersion(yDoc) === LEGACY_RUN_STORAGE_VERSION;
1260
+ }
1261
+ var ExplicitRunRequiredError = class extends Error {
1262
+ constructor(message = "Multi-run execution requires an explicit session run id.") {
1263
+ super(message);
1264
+ this.name = "ExplicitRunRequiredError";
1265
+ }
1266
+ };
1267
+ var UnknownRunError = class extends Error {
1268
+ constructor(runId) {
1269
+ super(`Unknown session run "${runId}".`);
1270
+ this.runId = runId;
1271
+ this.name = "UnknownRunError";
1272
+ }
1273
+ };
1274
+ var TerminalRunExecutionError = class extends Error {
1275
+ constructor(runId, blockId) {
1276
+ super(`Run "${runId}" is terminal; sequenced action "${blockId}" cannot execute.`);
1277
+ this.runId = runId;
1278
+ this.blockId = blockId;
1279
+ this.name = "TerminalRunExecutionError";
1280
+ }
1281
+ };
1282
+ function isBelowTheLineBlock(block) {
1283
+ const props = block?.props || {};
1284
+ return props.belowTheLine === true || props.sequenced === false || props.runScope === "below-the-line" || props.executionLane === "below-the-line" || isNeverDoneAction(typeof props.actionType === "string" ? props.actionType : void 0);
1285
+ }
1286
+ function resolveRunIdForExecution(yDoc, requestedRunId) {
1287
+ assertDoc(yDoc, "resolveRunIdForExecution");
1288
+ if (usesLegacyRuntimeCompatibility(yDoc)) {
1289
+ return requestedRunId || resolveActiveRunId(yDoc) || UNSESSIONED_RUN_ID;
1290
+ }
1291
+ if (!requestedRunId) throw new ExplicitRunRequiredError();
1292
+ if (!getExistingRunsMap(yDoc)?.has(requestedRunId)) {
1293
+ throw new UnknownRunError(requestedRunId);
1294
+ }
1295
+ return requestedRunId;
1296
+ }
1297
+ function assertRunActionExecutionAllowed(yDoc, runId, block) {
1298
+ if (!getExistingRunsMap(yDoc)?.has(runId) && !usesLegacyRuntimeCompatibility(yDoc)) {
1299
+ throw new UnknownRunError(runId);
1300
+ }
1301
+ if (isRunTerminalOrPending(yDoc, runId) && !isBelowTheLineBlock(block)) {
1302
+ throw new TerminalRunExecutionError(runId, block.id || "unknown");
1303
+ }
1304
+ }
1305
+ function assertDoc(yDoc, fn) {
1306
+ if (!yDoc || typeof yDoc.getMap !== "function") {
1307
+ throw new Error(`[runs] ${fn} requires a Y.Doc \u2014 refusing to fall back to non-persistent state`);
1308
+ }
1309
+ }
1310
+ function ensureRun(yDoc, runId, meta) {
1311
+ assertDoc(yDoc, "ensureRun");
1312
+ let run = getRunsMap(yDoc).get(runId);
1313
+ if (!run) {
1314
+ yDoc.transact(() => {
1315
+ const runs = getRunsMap(yDoc);
1316
+ if (!runs.get(runId)) {
1317
+ const created = new Y.Map();
1318
+ created.set(META_KEY, { seq: 0, startedAt: Date.now(), ...meta });
1319
+ created.set(ACTIONS_KEY, new Y.Map());
1320
+ runs.set(runId, created);
1321
+ }
1322
+ });
1323
+ run = getRunsMap(yDoc).get(runId);
1324
+ }
1325
+ return run;
1326
+ }
1327
+ function getRunActionsMap(yDoc, runId) {
1328
+ assertDoc(yDoc, "getRunActionsMap");
1329
+ const run = getExistingRunsMap(yDoc)?.get(runId);
1330
+ if (!run) return void 0;
1331
+ const actions2 = run.get(ACTIONS_KEY);
1332
+ return isYMapLike(actions2) ? actions2 : void 0;
1333
+ }
1334
+ function getRunScopedMap(yDoc, runId, key) {
1335
+ assertDoc(yDoc, "getRunScopedMap");
1336
+ const value = getExistingRunsMap(yDoc)?.get(runId)?.get(key);
1337
+ return isYMapLike(value) ? value : void 0;
1338
+ }
1339
+ function ensureRunScopedMap(yDoc, runId, key) {
1340
+ assertDoc(yDoc, "ensureRunScopedMap");
1341
+ const run = ensureRun(yDoc, runId);
1342
+ const existing = run.get(key);
1343
+ if (isYMapLike(existing)) return existing;
1344
+ run.set(key, new Y.Map());
1345
+ return getRunScopedMap(yDoc, runId, key);
1346
+ }
1347
+ function getRunMeta(yDoc, runId) {
1348
+ assertDoc(yDoc, "getRunMeta");
1349
+ const run = getExistingRunsMap(yDoc)?.get(runId);
1350
+ const meta = run?.get(META_KEY);
1351
+ if (!meta || typeof meta !== "object") return void 0;
1352
+ return { ...meta };
1353
+ }
1354
+ function resolveActionsForWrite(yDoc, runId) {
1355
+ if (!getExistingRunsMap(yDoc)?.has(runId)) {
1356
+ if (usesLegacyRuntimeCompatibility(yDoc)) return void 0;
1357
+ throw new UnknownRunError(runId);
1358
+ }
1359
+ return ensureRunActions(yDoc, runId);
1360
+ }
1361
+ function ensureRunActions(yDoc, runId) {
1362
+ ensureRun(yDoc, runId);
1363
+ const existing = getRunActionsMap(yDoc, runId);
1364
+ if (existing) return existing;
1365
+ const run = getRunsMap(yDoc).get(runId);
1366
+ run.set(ACTIONS_KEY, new Y.Map());
1367
+ return getRunActionsMap(yDoc, runId);
1368
+ }
1369
+ function copyNestedMapIntoRun(yDoc, runId, key) {
1370
+ const source = yDoc.getMap(key);
1371
+ const target = ensureRunScopedMap(yDoc, runId, key);
1372
+ let copied = 0;
1373
+ source.forEach((sourceInner, outerKey) => {
1374
+ if (!isYMapLike(sourceInner)) return;
1375
+ let targetInner = target.get(outerKey);
1376
+ if (!isYMapLike(targetInner)) {
1377
+ targetInner = new Y.Map();
1378
+ target.set(outerKey, targetInner);
1379
+ }
1380
+ sourceInner.forEach((value, innerKey) => {
1381
+ if (!targetInner.has(innerKey)) {
1382
+ targetInner.set(innerKey, cloneState(value));
1383
+ copied += 1;
1384
+ }
1385
+ });
1386
+ });
1387
+ return copied;
1388
+ }
1389
+ function hasLegacyRuntimeHistory(yDoc) {
1390
+ assertDoc(yDoc, "hasLegacyRuntimeHistory");
1391
+ const flat = getExistingLegacyRuntimeMap(yDoc);
1392
+ if (!flat) return false;
1393
+ let found = false;
1394
+ flat.forEach((value, key) => {
1395
+ if (found || key.startsWith(RESERVED_RUNTIME_KEY_PREFIX)) return;
1396
+ if (asStateObject(value)) found = true;
1397
+ });
1398
+ return found;
1399
+ }
1400
+ function collectPhantomLegacyRun(yDoc) {
1401
+ assertDoc(yDoc, "collectPhantomLegacyRun");
1402
+ if (!getExistingRunsMap(yDoc)?.has(PHANTOM_LEGACY_RUN_ID)) return false;
1403
+ if (getRunMeta(yDoc, PHANTOM_LEGACY_RUN_ID)?.manifest) return false;
1404
+ const phantomActions = getRunActionsMap(yDoc, PHANTOM_LEGACY_RUN_ID);
1405
+ if (phantomActions && phantomActions.size > 0 && !usesLegacyRuntimeCompatibility(yDoc)) return false;
1406
+ yDoc.transact(() => {
1407
+ getRunsMap(yDoc).delete(PHANTOM_LEGACY_RUN_ID);
1408
+ getRunsTerminalMap(yDoc).delete(PHANTOM_LEGACY_RUN_ID);
1409
+ const root = getExistingYMap(yDoc, "root");
1410
+ if (root?.get("activeRunId") === PHANTOM_LEGACY_RUN_ID) root.delete("activeRunId");
1411
+ });
1412
+ return true;
1413
+ }
1414
+ function seedRunFromLegacyRuntime(yDoc, runId) {
1415
+ assertDoc(yDoc, "seedRunFromLegacyRuntime");
1416
+ const result = { actionStates: 0, pendingInvocations: 0, barrierEntries: 0 };
1417
+ yDoc.transact(() => {
1418
+ const actions2 = ensureRunActions(yDoc, runId);
1419
+ const flat = getLegacyRuntimeMap(yDoc);
1420
+ const keys = /* @__PURE__ */ new Set();
1421
+ actions2.forEach((_, key) => keys.add(key));
1422
+ flat.forEach((_, key) => {
1423
+ if (!key.startsWith(RESERVED_RUNTIME_KEY_PREFIX)) keys.add(key);
1424
+ });
1425
+ for (const key of keys) {
1426
+ const resolved = resolveActionState(actions2.get(key), flat.get(key)).value;
1427
+ actions2.set(key, cloneState(resolved));
1428
+ result.actionStates += 1;
1429
+ }
1430
+ result.pendingInvocations = copyNestedMapIntoRun(yDoc, runId, PENDING_INVOCATIONS_KEY);
1431
+ result.barrierEntries = copyNestedMapIntoRun(yDoc, runId, BARRIER_STATE_KEY);
1432
+ });
1433
+ return result;
1434
+ }
1435
+ function setMultiRunStorage(yDoc) {
1436
+ assertDoc(yDoc, "setMultiRunStorage");
1437
+ yDoc.getMap("root").set(RUN_STORAGE_VERSION_KEY, MULTI_RUN_STORAGE_VERSION);
1438
+ }
1439
+ function enableMultiRunStorage(yDoc) {
1440
+ setMultiRunStorage(yDoc);
1441
+ }
1442
+ function readActionState(yDoc, runId, blockId) {
1443
+ assertDoc(yDoc, "readActionState");
1444
+ const runEntry = getRunActionsMap(yDoc, runId)?.get(blockId);
1445
+ if (!usesLegacyRuntimeCompatibility(yDoc)) {
1446
+ const state = asStateObject(runEntry);
1447
+ return state ? cloneState(state) : {};
1448
+ }
1449
+ const flatEntry = getExistingLegacyRuntimeMap(yDoc)?.get(blockId);
1450
+ return resolveActionState(runEntry, flatEntry).value;
1451
+ }
1452
+ function readActionStates(yDoc, runId) {
1453
+ assertDoc(yDoc, "readActionStates");
1454
+ const keys = /* @__PURE__ */ new Set();
1455
+ getRunActionsMap(yDoc, runId)?.forEach((_, key) => keys.add(key));
1456
+ if (usesLegacyRuntimeCompatibility(yDoc)) {
1457
+ getExistingLegacyRuntimeMap(yDoc)?.forEach((_, key) => {
1458
+ if (!key.startsWith(RESERVED_RUNTIME_KEY_PREFIX)) keys.add(key);
1459
+ });
1460
+ }
1461
+ const states = {};
1462
+ for (const key of keys) {
1463
+ states[key] = readActionState(yDoc, runId, key);
1464
+ }
1465
+ return states;
1466
+ }
1467
+ function writeActionState(yDoc, runId, blockId, updates) {
1468
+ assertDoc(yDoc, "writeActionState");
1469
+ let prev = {};
1470
+ let next = {};
1471
+ yDoc.transact(() => {
1472
+ const actions2 = resolveActionsForWrite(yDoc, runId);
1473
+ const legacyCompatible = usesLegacyRuntimeCompatibility(yDoc);
1474
+ const flat = legacyCompatible ? getLegacyRuntimeMap(yDoc) : void 0;
1475
+ prev = legacyCompatible ? resolveActionState(actions2?.get(blockId), flat?.get(blockId)).value : readActionState(yDoc, runId, blockId);
1476
+ next = cloneState({ ...prev, ...updates });
1477
+ actions2?.set(blockId, cloneState(next));
1478
+ flat?.set(blockId, cloneState(next));
1479
+ });
1480
+ return { prev, next };
1481
+ }
1482
+ function resetActionState(yDoc, runId, blockId, value = { state: "idle" }) {
1483
+ assertDoc(yDoc, "resetActionState");
1484
+ yDoc.transact(() => {
1485
+ const actions2 = resolveActionsForWrite(yDoc, runId);
1486
+ actions2?.set(blockId, cloneState(value));
1487
+ if (usesLegacyRuntimeCompatibility(yDoc)) {
1488
+ getLegacyRuntimeMap(yDoc).set(blockId, cloneState(value));
1489
+ }
1490
+ });
1491
+ }
1492
+ function deleteActionState(yDoc, runId, blockId) {
1493
+ assertDoc(yDoc, "deleteActionState");
1494
+ yDoc.transact(() => {
1495
+ getRunActionsMap(yDoc, runId)?.delete(blockId);
1496
+ if (usesLegacyRuntimeCompatibility(yDoc)) {
1497
+ getLegacyRuntimeMap(yDoc).delete(blockId);
1498
+ }
1499
+ });
1500
+ }
1501
+ function clearAllActionState(yDoc) {
1502
+ assertDoc(yDoc, "clearAllActionState");
1503
+ yDoc.transact(() => {
1504
+ const runs = getRunsMap(yDoc);
1505
+ runs.forEach((_, key) => runs.delete(key));
1506
+ const terminal = getRunsTerminalMap(yDoc);
1507
+ terminal.forEach((_, key) => terminal.delete(key));
1508
+ const flat = getLegacyRuntimeMap(yDoc);
1509
+ flat.forEach((_, key) => flat.delete(key));
1510
+ const dmState = yDoc.getMap(DM_NOTIFICATIONS_MAP_KEY);
1511
+ dmState.forEach((_, key) => dmState.delete(key));
1512
+ });
1513
+ }
1514
+ function adoptLegacyRuntime(yDoc, runId) {
1515
+ assertDoc(yDoc, "adoptLegacyRuntime");
1516
+ if (!legacyRuntimeAdoptionEnabled) return 0;
1517
+ let adopted = 0;
1518
+ yDoc.transact(() => {
1519
+ const actions2 = ensureRunActions(yDoc, runId);
1520
+ const flat = getLegacyRuntimeMap(yDoc);
1521
+ flat.forEach((value, key) => {
1522
+ if (key.startsWith(RESERVED_RUNTIME_KEY_PREFIX)) return;
1523
+ if (!asStateObject(value)) return;
1524
+ const resolved = resolveActionState(actions2.get(key), value);
1525
+ if (resolved.winner !== "flat") return;
1526
+ actions2.set(key, cloneState(resolved.value));
1527
+ adopted += 1;
1528
+ });
1529
+ });
1530
+ return adopted;
1531
+ }
1532
+ function subscribeToActionState(yDoc, handler) {
1533
+ assertDoc(yDoc, "subscribeToActionState");
1534
+ const runs = getRunsMap(yDoc);
1535
+ runs.observeDeep(handler);
1536
+ const flat = usesLegacyRuntimeCompatibility(yDoc) ? getLegacyRuntimeMap(yDoc) : void 0;
1537
+ flat?.observe(handler);
1538
+ return () => {
1539
+ runs.unobserveDeep(handler);
1540
+ flat?.unobserve(handler);
1541
+ };
1542
+ }
1543
+ function resolveActiveRunId(yDoc) {
1544
+ if (yDoc && typeof yDoc.getMap === "function") {
1545
+ const advisory = getExistingYMap(yDoc, "root")?.get("activeRunId");
1546
+ if (typeof advisory === "string" && advisory.length > 0 && getExistingRunsMap(yDoc)?.has(advisory)) {
1547
+ return advisory;
1548
+ }
1549
+ }
1550
+ return void 0;
1551
+ }
1552
+ function resolveRunIdForRead(yDoc, requestedRunId) {
1553
+ assertDoc(yDoc, "resolveRunIdForRead");
1554
+ if (requestedRunId) return requestedRunId;
1555
+ return resolveActiveRunId(yDoc) ?? (usesLegacyRuntimeCompatibility(yDoc) ? UNSESSIONED_RUN_ID : void 0);
1556
+ }
1557
+ function createRunScopedRuntimeManager(yDoc, runId) {
1558
+ assertDoc(yDoc, "createRunScopedRuntimeManager");
1559
+ if (!runId) {
1560
+ throw new Error("[runs] createRunScopedRuntimeManager requires a runId");
1561
+ }
1562
+ return {
1563
+ get: (nodeId) => readActionState(yDoc, runId, nodeId),
1564
+ update: (nodeId, updates) => {
1565
+ writeActionState(yDoc, runId, nodeId, updates);
1566
+ }
1567
+ };
1568
+ }
1569
+ function createRunRuntimeReader(yDoc, runId) {
1570
+ assertDoc(yDoc, "createRunRuntimeReader");
1571
+ return {
1572
+ get(blockId) {
1573
+ const runEntry = getRunActionsMap(yDoc, runId)?.get(blockId);
1574
+ if (!usesLegacyRuntimeCompatibility(yDoc)) {
1575
+ const state = asStateObject(runEntry);
1576
+ return state ? cloneState(state) : void 0;
1577
+ }
1578
+ const flatEntry = getLegacyRuntimeMap(yDoc).get(blockId);
1579
+ const resolved = resolveActionState(runEntry, flatEntry);
1580
+ return resolved.winner === "neither" ? void 0 : resolved.value;
1581
+ }
1582
+ };
1583
+ }
1584
+ function createRunRuntimeReaderWithDoc(yDoc, runId) {
1585
+ return Object.assign(createRunRuntimeReader(yDoc, runId), { doc: yDoc });
1586
+ }
1587
+
1588
+ export {
1589
+ compareCodeUnits,
1590
+ canonicalActionJson,
1591
+ sha256Digest,
1592
+ MAX_TOPIC_SEMANTIC_RECORDS_PER_RECEIPT,
1593
+ MAX_TOPIC_SEMANTIC_RECORD_BATCH_BYTES,
1594
+ getTopicSemanticRecordDefinitions,
1595
+ validateTopicSemanticRecord,
1596
+ validateTopicSemanticRecordBatch,
1597
+ canToType,
1598
+ typeToCan,
1599
+ getAllCanMappings,
1600
+ CollectionStateEnum,
1601
+ getActionPresentation,
1602
+ getRegistryRevision,
1603
+ STEP_COMPLETED_EVENT_NAME,
1604
+ STEP_COMPLETED_EVENT,
1605
+ doneWhenCompleted,
1606
+ neverDone,
1607
+ resolveActionType,
1608
+ normalizeCan,
1609
+ normalizeCapabilityPattern,
1610
+ actionTypeToCan,
1611
+ canToActionType,
1612
+ capabilityPatternCoversCan,
1613
+ registerAction,
1614
+ getAction,
1615
+ getAllActions,
1616
+ isRepeatableAction,
1617
+ isNeverDoneAction,
1618
+ getAliasEntries,
1619
+ hasAction,
1620
+ getActionByCan,
1621
+ getEventsForBlock,
1622
+ getOutputSchemaForBlock,
1623
+ DM_NOTIFICATIONS_MAP_KEY,
1624
+ getDMNotificationState,
1625
+ setDMNotificationRecord,
1626
+ shouldNotify,
1627
+ getPendingDMNotificationState,
1628
+ setPendingDMNotificationRecord,
1629
+ shouldNotifyPending,
1630
+ RUNS_MAP_KEY,
1631
+ RUNS_TERMINAL_MAP_KEY,
1632
+ RUNS_TERMINAL_PENDING_MAP_KEY,
1633
+ LEGACY_RUNTIME_MAP_KEY2 as LEGACY_RUNTIME_MAP_KEY,
1634
+ isRecordInRun,
1635
+ resolveRecordRunId,
1636
+ RUN_STORAGE_VERSION_KEY,
1637
+ LEGACY_RUN_STORAGE_VERSION,
1638
+ MULTI_RUN_STORAGE_VERSION,
1639
+ isLegacyRuntimeAdoptionEnabled,
1640
+ getRunsMap,
1641
+ getExistingRunsMap,
1642
+ getRunsTerminalMap,
1643
+ getExistingRunsTerminalMap,
1644
+ getRunsTerminalPendingMap,
1645
+ getExistingRunsTerminalPendingMap,
1646
+ isRunTerminalOrPending,
1647
+ getRunStorageVersion,
1648
+ usesLegacyRuntimeCompatibility,
1649
+ ExplicitRunRequiredError,
1650
+ UnknownRunError,
1651
+ TerminalRunExecutionError,
1652
+ isBelowTheLineBlock,
1653
+ resolveRunIdForExecution,
1654
+ assertRunActionExecutionAllowed,
1655
+ ensureRun,
1656
+ getRunActionsMap,
1657
+ getRunScopedMap,
1658
+ ensureRunScopedMap,
1659
+ getRunMeta,
1660
+ hasLegacyRuntimeHistory,
1661
+ collectPhantomLegacyRun,
1662
+ seedRunFromLegacyRuntime,
1663
+ setMultiRunStorage,
1664
+ enableMultiRunStorage,
1665
+ readActionState,
1666
+ readActionStates,
1667
+ writeActionState,
1668
+ resetActionState,
1669
+ deleteActionState,
1670
+ clearAllActionState,
1671
+ adoptLegacyRuntime,
1672
+ subscribeToActionState,
1673
+ resolveActiveRunId,
1674
+ resolveRunIdForRead,
1675
+ createRunScopedRuntimeManager,
1676
+ createRunRuntimeReader,
1677
+ createRunRuntimeReaderWithDoc
1678
+ };
1679
+ //# sourceMappingURL=chunk-IIIZZ4E4.js.map