@ixo/editor 6.33.0 → 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-A4CWC4AG.js +0 -374
  523. package/dist/chunk-A4CWC4AG.js.map +0 -1
  524. package/dist/chunk-NEOPTPDF.js.map +0 -1
  525. package/dist/chunk-VRCRDKN5.js +0 -59694
  526. package/dist/chunk-VRCRDKN5.js.map +0 -1
@@ -0,0 +1,1183 @@
1
+ import {
2
+ TerminalRunExecutionError,
3
+ getAction,
4
+ isRecordInRun,
5
+ isRunTerminalOrPending
6
+ } from "./chunk-IIIZZ4E4.js";
7
+ import {
8
+ getExistingYMap
9
+ } from "./chunk-NCSGIRRQ.js";
10
+
11
+ // src/core/lib/designPod/contracts.ts
12
+ var DESIGN_POD_TEMPLATE_ID = "design-pod-portal-journey-v2";
13
+ var DESIGN_POD_PHASE_IDS = ["discovery", "design", "validation", "testing", "deployment"];
14
+ var DESIGN_POD_CONTROL_IDS = [
15
+ "provider_onboarding",
16
+ "service_intent",
17
+ "service_architecture",
18
+ "outcome_contract",
19
+ "automation_feasibility",
20
+ "evidence_model",
21
+ "claims_and_rubrics",
22
+ "ucan_rights",
23
+ "flow_configuration",
24
+ "oracle_configuration",
25
+ "governance_risk",
26
+ "commercial_packaging",
27
+ "demo_build",
28
+ "domain_documentation",
29
+ "vfs_packaging",
30
+ "launch_readiness",
31
+ "operate_improve"
32
+ ];
33
+ var PHASES = [
34
+ {
35
+ id: "discovery",
36
+ title: "Discovery",
37
+ description: "Confirm the provider, opportunity intent, youth benefit, and design boundaries.",
38
+ controls: ["provider_onboarding", "service_intent"]
39
+ },
40
+ {
41
+ id: "design",
42
+ title: "Design",
43
+ description: "Design the Deed, evidence, claims, rights, operational Flows, and service skills.",
44
+ controls: [
45
+ "service_architecture",
46
+ "outcome_contract",
47
+ "automation_feasibility",
48
+ "evidence_model",
49
+ "claims_and_rubrics",
50
+ "ucan_rights",
51
+ "flow_configuration",
52
+ "oracle_configuration"
53
+ ]
54
+ },
55
+ {
56
+ id: "validation",
57
+ title: "Validation",
58
+ description: "Resolve governance, safeguarding, risk, authority, and commercial packaging.",
59
+ controls: ["governance_risk", "commercial_packaging"]
60
+ },
61
+ {
62
+ id: "testing",
63
+ title: "Testing",
64
+ description: "Run a representative end-to-end Deed rehearsal and inspect its evidence.",
65
+ controls: ["demo_build"]
66
+ },
67
+ {
68
+ id: "deployment",
69
+ title: "Deployment",
70
+ description: "Package, publish, launch, and establish the operate-and-improve model.",
71
+ controls: ["domain_documentation", "vfs_packaging", "launch_readiness", "operate_improve"]
72
+ }
73
+ ];
74
+ var DEPENDENCIES = {
75
+ provider_onboarding: [],
76
+ service_intent: ["provider_onboarding"],
77
+ service_architecture: ["service_intent"],
78
+ outcome_contract: ["service_intent", "service_architecture"],
79
+ automation_feasibility: ["service_architecture"],
80
+ evidence_model: ["outcome_contract"],
81
+ claims_and_rubrics: ["outcome_contract", "evidence_model"],
82
+ ucan_rights: ["service_architecture", "automation_feasibility"],
83
+ flow_configuration: ["service_architecture", "ucan_rights"],
84
+ oracle_configuration: ["service_architecture", "ucan_rights", "flow_configuration"],
85
+ governance_risk: [
86
+ "service_architecture",
87
+ "outcome_contract",
88
+ "automation_feasibility",
89
+ "evidence_model",
90
+ "claims_and_rubrics",
91
+ "ucan_rights",
92
+ "flow_configuration",
93
+ "oracle_configuration"
94
+ ],
95
+ commercial_packaging: ["service_intent", "outcome_contract"],
96
+ demo_build: ["claims_and_rubrics", "flow_configuration", "oracle_configuration"],
97
+ domain_documentation: ["governance_risk", "commercial_packaging"],
98
+ vfs_packaging: ["domain_documentation", "ucan_rights", "oracle_configuration"],
99
+ launch_readiness: ["demo_build", "governance_risk", "vfs_packaging"],
100
+ operate_improve: ["launch_readiness"]
101
+ };
102
+ var TITLES = {
103
+ provider_onboarding: "Opportunity Provider onboarding",
104
+ service_intent: "Deed and youth opportunity intent",
105
+ service_architecture: "Deed service architecture",
106
+ outcome_contract: "Theory-of-change outcome contract",
107
+ automation_feasibility: "Automation feasibility",
108
+ evidence_model: "Evidence model",
109
+ claims_and_rubrics: "Claims and evaluation rubrics",
110
+ ucan_rights: "Participant rights and UCAN capabilities",
111
+ flow_configuration: "Operational Flow configuration",
112
+ oracle_configuration: "Evaluation and service skills",
113
+ governance_risk: "Governance, safeguarding, consent, and risk",
114
+ commercial_packaging: "Funding and commercial packaging",
115
+ demo_build: "Representative dry-run",
116
+ domain_documentation: "Domain documentation",
117
+ vfs_packaging: "Entity VFS package",
118
+ launch_readiness: "Launch readiness",
119
+ operate_improve: "Operate and improve"
120
+ };
121
+ var SKILLS = {
122
+ service_intent: "design-pod-service-intent-scorer",
123
+ service_architecture: "design-pod-service-architect",
124
+ outcome_contract: "design-pod-outcome-contract",
125
+ automation_feasibility: "design-pod-automation-feasibility",
126
+ claims_and_rubrics: "design-pod-claims-architect",
127
+ ucan_rights: "design-pod-ucan-rights-architect",
128
+ flow_configuration: "design-pod-flow-builder",
129
+ governance_risk: "design-pod-governance-risk",
130
+ commercial_packaging: "design-pod-commercial-packager",
131
+ demo_build: "design-pod-demo-builder",
132
+ launch_readiness: "design-pod-qa-launch-readiness"
133
+ };
134
+ function buildControls() {
135
+ return Object.fromEntries(
136
+ DESIGN_POD_CONTROL_IDS.map((id) => [
137
+ id,
138
+ {
139
+ id,
140
+ title: TITLES[id],
141
+ schema: `ixo.design-pod.${id}.v1`,
142
+ skill: SKILLS[id] ?? "design-pod-orchestration",
143
+ dependencies: DEPENDENCIES[id]
144
+ }
145
+ ])
146
+ );
147
+ }
148
+ var BASE_MANIFEST = {
149
+ schemaVersion: "1.0",
150
+ templateId: DESIGN_POD_TEMPLATE_ID,
151
+ methodVersion: 1,
152
+ phases: PHASES,
153
+ controls: buildControls(),
154
+ publicationRules: {
155
+ independentReviewRequired: true,
156
+ phaseDecision: "Yes, continue",
157
+ canonicalPackageRoot: "/pod-blueprints/{releaseDigest}",
158
+ domainPath: "/.domain/domain.md",
159
+ contentAddressedArtifacts: true,
160
+ checklistItems: [
161
+ { id: "safeguarding-owner", title: "Safeguarding owner", description: "A named authority owns safeguarding decisions and escalation." },
162
+ { id: "rights-and-consent", title: "Rights and consent", description: "Participant rights, consent, and data handling are launch-ready." },
163
+ { id: "funding-readiness", title: "Funding readiness", description: "The governed funding source and payout controls are verified." },
164
+ { id: "credential-authority", title: "Credential authority", description: "Credential and outcome issuers have explicit authority." },
165
+ { id: "testnet-rehearsal", title: "Testnet rehearsal", description: "The representative end-to-end rehearsal has no unresolved blocker." }
166
+ ]
167
+ }
168
+ };
169
+ var PROFESSIONAL_SERVICE_METHOD_V1 = {
170
+ ...BASE_MANIFEST,
171
+ methodId: "professional-service/v1",
172
+ title: "Professional Service POD",
173
+ operationalActions: []
174
+ };
175
+ var DESIGN_YOMA_METHOD_V1 = {
176
+ ...BASE_MANIFEST,
177
+ methodId: "design-yoma/v1",
178
+ title: "Yoma Deed POD",
179
+ operationalActions: [
180
+ "qi/collection.lifecycle",
181
+ "qi/collection.users",
182
+ "qi/claim.submit",
183
+ "qi/claim.evaluate",
184
+ "qi/funding.verify",
185
+ "qi/credential.issue",
186
+ "qi/credential.store",
187
+ "qi/yoma.opportunity",
188
+ "qi/yoid.link",
189
+ "qi/outcome.certificate"
190
+ ]
191
+ };
192
+ var DESIGN_POD_METHODS = {
193
+ "professional-service/v1": PROFESSIONAL_SERVICE_METHOD_V1,
194
+ "design-yoma/v1": DESIGN_YOMA_METHOD_V1
195
+ };
196
+
197
+ // src/core/lib/flowEngine/runHistory.ts
198
+ var INVOCATIONS_MAP_KEY = "invocations";
199
+ function readInvocationsForRun(yDoc, sessionRunId) {
200
+ const existing = getExistingYMap(yDoc, INVOCATIONS_MAP_KEY);
201
+ if (!existing) return [];
202
+ const invocations = [];
203
+ existing.forEach((value) => {
204
+ if (!value || typeof value !== "object") return;
205
+ const invocation = value;
206
+ if (!invocation.cid) return;
207
+ if (!isRecordInRun(invocation.sessionRunId, sessionRunId)) return;
208
+ invocations.push({
209
+ ...invocation,
210
+ capability: { ...invocation.capability || {} },
211
+ proofCids: [...invocation.proofCids || []]
212
+ });
213
+ });
214
+ return invocations.sort((a, b) => b.executedAt - a.executedAt || a.cid.localeCompare(b.cid));
215
+ }
216
+
217
+ // src/core/lib/designPod/digest.ts
218
+ function canonicalValue(value) {
219
+ if (value === null) return "null";
220
+ if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
221
+ if (typeof value === "number") {
222
+ if (!Number.isFinite(value)) throw new Error("Design POD canonical JSON does not allow non-finite numbers");
223
+ return JSON.stringify(value);
224
+ }
225
+ if (Array.isArray(value)) return `[${value.map((item) => canonicalValue(item)).join(",")}]`;
226
+ if (typeof value === "object") {
227
+ const entries = Object.entries(value).filter(([, child]) => child !== void 0).sort(([left], [right]) => left.localeCompare(right));
228
+ return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${canonicalValue(child)}`).join(",")}}`;
229
+ }
230
+ throw new Error(`Design POD canonical JSON does not support ${typeof value}`);
231
+ }
232
+ function canonicalDesignPodJson(value) {
233
+ return canonicalValue(value);
234
+ }
235
+ async function digestDesignPodValue(value) {
236
+ const bytes = new TextEncoder().encode(canonicalDesignPodJson(value));
237
+ const hash = await globalThis.crypto.subtle.digest("SHA-256", bytes);
238
+ return `sha256:${Array.from(new Uint8Array(hash), (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
239
+ }
240
+
241
+ // src/core/lib/designPod/state.ts
242
+ var DESIGN_POD_DEFINITION_MAP_KEY = "designPodDefinition";
243
+ var DESIGN_POD_STATE_MAP_KEY = "designPodState";
244
+ var MANIFEST_KEY = "manifest";
245
+ var IDENTITY_KEY = "identity";
246
+ var REVIEW_KEY = "review";
247
+ var REVIEW_ASSIGNMENT_KEY = "reviewAssignment";
248
+ var REVIEW_REQUEST_KEY = "reviewRequest";
249
+ var RELEASE_KEY = "release";
250
+ var PROTOCOL_KEY = "protocol";
251
+ var LEGACY_EVIDENCE_KEY = "legacyEvidence";
252
+ var CONTROL_PREFIX = "control:";
253
+ var ARTIFACT_PREFIX = "artifact:";
254
+ var COMMITMENT_PREFIX = "commitment:";
255
+ var CHECKLIST_PREFIX = "checklist:";
256
+ function stateMap(doc) {
257
+ return doc.getMap(DESIGN_POD_STATE_MAP_KEY);
258
+ }
259
+ function definitionMap(doc) {
260
+ return doc.getMap(DESIGN_POD_DEFINITION_MAP_KEY);
261
+ }
262
+ function sameDesignPodActor(a, b) {
263
+ const norm = (value) => {
264
+ const v = (value || "").trim();
265
+ return v.startsWith("ixo1") ? `did:ixo:${v}` : v;
266
+ };
267
+ const left = norm(a);
268
+ return left !== "" && left === norm(b);
269
+ }
270
+ function seedDesignPodMethodDefinition(doc, methodId) {
271
+ const manifest = DESIGN_POD_METHODS[methodId];
272
+ if (!manifest) throw new Error(`Unknown Design POD method: ${methodId}`);
273
+ definitionMap(doc).set(MANIFEST_KEY, manifest);
274
+ return manifest;
275
+ }
276
+ function isRecord(value) {
277
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
278
+ }
279
+ async function initializeDesignPod(doc, methodId, identity) {
280
+ const manifest = DESIGN_POD_METHODS[methodId];
281
+ if (!manifest) throw new Error(`Unknown Design POD method: ${methodId}`);
282
+ const methodManifestDigest = await digestDesignPodValue(manifest);
283
+ const pinnedIdentity = { ...identity, methodManifestDigest };
284
+ let initializedIdentity = pinnedIdentity;
285
+ doc.transact(() => {
286
+ const map = stateMap(doc);
287
+ const existingIdentity = map.get(IDENTITY_KEY);
288
+ if (existingIdentity) {
289
+ if (existingIdentity.designProjectEntityDid !== pinnedIdentity.designProjectEntityDid || existingIdentity.flowOwnerDid !== pinnedIdentity.flowOwnerDid || existingIdentity.flowRoomId !== pinnedIdentity.flowRoomId || existingIdentity.sessionRunId !== pinnedIdentity.sessionRunId || existingIdentity.methodManifestDigest !== pinnedIdentity.methodManifestDigest) {
290
+ throw new Error("Design POD identity is already pinned to a different project session");
291
+ }
292
+ const root2 = doc.getMap("root");
293
+ if (root2.get("doc_id") !== pinnedIdentity.flowRoomId || root2.get("flowOwnerDid") !== pinnedIdentity.flowOwnerDid) {
294
+ throw new Error("Design POD Flow authority no longer matches its pinned Flow owner and Matrix room");
295
+ }
296
+ if (isRunTerminalOrPending(doc, existingIdentity.sessionRunId)) {
297
+ throw new TerminalRunExecutionError(existingIdentity.sessionRunId, "design-pod-initialize");
298
+ }
299
+ initializedIdentity = existingIdentity;
300
+ return;
301
+ }
302
+ if (isRunTerminalOrPending(doc, pinnedIdentity.sessionRunId)) {
303
+ throw new TerminalRunExecutionError(pinnedIdentity.sessionRunId, "design-pod-initialize");
304
+ }
305
+ definitionMap(doc).set(MANIFEST_KEY, manifest);
306
+ map.set(IDENTITY_KEY, pinnedIdentity);
307
+ const root = doc.getMap("root");
308
+ root.set("@context", "https://ixo.world/flow/1.0");
309
+ root.set("schema_version", "1.0.0");
310
+ root.set("doc_id", pinnedIdentity.flowRoomId);
311
+ root.set("flowOwnerDid", pinnedIdentity.flowOwnerDid);
312
+ });
313
+ return initializedIdentity;
314
+ }
315
+ function readDesignPodDefinition(doc) {
316
+ return definitionMap(doc).get(MANIFEST_KEY);
317
+ }
318
+ function readDesignPodState(doc) {
319
+ const map = stateMap(doc);
320
+ const identity = map.get(IDENTITY_KEY);
321
+ if (!identity) return void 0;
322
+ const controls = {};
323
+ const artifactReceipts = [];
324
+ const phaseCommitments = {};
325
+ const checklistRecords = {};
326
+ const checklistDispositions = {};
327
+ map.forEach((value, key) => {
328
+ if (key.startsWith(CONTROL_PREFIX)) controls[key.slice(CONTROL_PREFIX.length)] = value;
329
+ if (key.startsWith(ARTIFACT_PREFIX)) artifactReceipts.push(value);
330
+ if (key.startsWith(COMMITMENT_PREFIX)) phaseCommitments[key.slice(COMMITMENT_PREFIX.length)] = value;
331
+ if (key.startsWith(CHECKLIST_PREFIX)) {
332
+ const itemId = key.slice(CHECKLIST_PREFIX.length);
333
+ checklistRecords[itemId] = value;
334
+ if (isRecord(value)) {
335
+ const record2 = value;
336
+ if (["resolved", "accepted_for_later", "blocking"].includes(record2.disposition)) checklistDispositions[itemId] = record2.disposition;
337
+ }
338
+ }
339
+ });
340
+ const commitmentCount = Object.values(phaseCommitments).filter((record2) => record2?.status === "current").length;
341
+ const review = map.get(REVIEW_KEY);
342
+ const reviewAssignment = map.get(REVIEW_ASSIGNMENT_KEY);
343
+ const reviewRequest = map.get(REVIEW_REQUEST_KEY);
344
+ const release = map.get(RELEASE_KEY);
345
+ const protocol = map.get(PROTOCOL_KEY);
346
+ const readiness = release?.status === "published" ? "published" : release?.status === "compiled" ? "compiled" : review?.status === "current" && review.decision === "approved" ? "reviewed" : commitmentCount === 5 ? "phases_committed" : "draft";
347
+ return {
348
+ schemaVersion: "1.0",
349
+ identity,
350
+ controls,
351
+ artifactReceipts: artifactReceipts.sort((left, right) => left.path.localeCompare(right.path)),
352
+ phaseCommitments,
353
+ checklistRecords,
354
+ checklistDispositions,
355
+ reviewAssignment,
356
+ reviewRequest,
357
+ review,
358
+ release,
359
+ protocol,
360
+ readiness,
361
+ publicationStatus: release?.status === "published" ? "published" : release?.status === "publishing" ? "publishing" : release?.status === "failed" ? "failed" : release?.status === "compiled" ? "ready" : "not_started"
362
+ };
363
+ }
364
+ function collectDependants(manifest, changed) {
365
+ const affected = /* @__PURE__ */ new Set();
366
+ let grew = true;
367
+ while (grew) {
368
+ grew = false;
369
+ for (const control of Object.values(manifest.controls)) {
370
+ if (control.id === changed || affected.has(control.id)) continue;
371
+ if (control.dependencies.some((dependency) => dependency === changed || affected.has(dependency))) {
372
+ affected.add(control.id);
373
+ grew = true;
374
+ }
375
+ }
376
+ }
377
+ return affected;
378
+ }
379
+ function phaseForControl(manifest, controlId) {
380
+ const phase = manifest.phases.find((candidate) => candidate.controls.includes(controlId));
381
+ if (!phase) throw new Error(`Control ${controlId} is not assigned to a Design POD phase`);
382
+ return phase.id;
383
+ }
384
+ function staleReviewAndRelease(map) {
385
+ const reviewRequest = map.get(REVIEW_REQUEST_KEY);
386
+ if (isRecord(reviewRequest)) map.set(REVIEW_REQUEST_KEY, { ...reviewRequest, status: "stale" });
387
+ const review = map.get(REVIEW_KEY);
388
+ if (isRecord(review)) map.set(REVIEW_KEY, { ...review, status: "stale" });
389
+ const release = map.get(RELEASE_KEY);
390
+ if (isRecord(release)) map.set(RELEASE_KEY, { ...release, status: "stale" });
391
+ }
392
+ function assertPublicationCanBeInvalidated(map, operation) {
393
+ const release = map.get(RELEASE_KEY);
394
+ if (isRecord(release) && release.status === "publishing") {
395
+ throw new Error(`${operation} cannot change Design POD authority while IXO publication is reserved`);
396
+ }
397
+ }
398
+ function assertProjectIdentity(map, expected, operation) {
399
+ const current = map.get(IDENTITY_KEY);
400
+ if (!current || current.designProjectEntityDid !== expected.designProjectEntityDid || current.flowOwnerDid !== expected.flowOwnerDid || current.flowRoomId !== expected.flowRoomId || current.sessionRunId !== expected.sessionRunId || current.methodManifestDigest !== expected.methodManifestDigest) {
401
+ throw new Error(`The pinned Design POD project identity changed while ${operation} was being prepared`);
402
+ }
403
+ }
404
+ async function updateDesignPodControl(doc, params) {
405
+ const manifest = readDesignPodDefinition(doc);
406
+ const state = readDesignPodState(doc);
407
+ if (!manifest || !state) throw new Error("Design POD method definition is not initialized");
408
+ if (!manifest.controls[params.controlId]) throw new Error(`Control ${params.controlId} is not in the pinned method manifest`);
409
+ const sessionRunId = params.sessionRunId ?? state.identity.sessionRunId;
410
+ if (sessionRunId !== state.identity.sessionRunId) throw new Error("Control mutation session does not match the pinned Design POD session");
411
+ const map = stateMap(doc);
412
+ const prior = map.get(`${CONTROL_PREFIX}${params.controlId}`);
413
+ const priorDigest = prior?.digest ?? null;
414
+ if (params.expectedBaseDigest !== void 0 && priorDigest !== params.expectedBaseDigest) {
415
+ throw new Error(`${params.controlId} changed before the proposed revision could be prepared`);
416
+ }
417
+ const revision = (prior?.revision ?? 0) + 1;
418
+ const digest = await digestDesignPodValue({ controlId: params.controlId, revision, content: params.content });
419
+ const next = {
420
+ controlId: params.controlId,
421
+ revision,
422
+ digest,
423
+ content: params.content,
424
+ status: params.importedLegacy ? "draft" : "current",
425
+ updatedAt: params.now ?? (/* @__PURE__ */ new Date()).toISOString(),
426
+ updatedByDid: params.actorDid
427
+ };
428
+ const dependants = collectDependants(manifest, params.controlId);
429
+ const affectedPhases = /* @__PURE__ */ new Set([phaseForControl(manifest, params.controlId)]);
430
+ dependants.forEach((controlId) => affectedPhases.add(phaseForControl(manifest, controlId)));
431
+ doc.transact(() => {
432
+ assertProjectIdentity(map, state.identity, `control ${params.controlId}`);
433
+ if (isRunTerminalOrPending(doc, sessionRunId)) {
434
+ throw new TerminalRunExecutionError(sessionRunId, `design-pod-control:${params.controlId}`);
435
+ }
436
+ assertPublicationCanBeInvalidated(map, `Updating ${params.controlId}`);
437
+ const current = map.get(`${CONTROL_PREFIX}${params.controlId}`);
438
+ const currentDigest = current?.digest ?? null;
439
+ if (currentDigest !== priorDigest || params.expectedBaseDigest !== void 0 && currentDigest !== params.expectedBaseDigest) {
440
+ throw new Error(`${params.controlId} changed while the proposed revision was being prepared`);
441
+ }
442
+ map.set(`${CONTROL_PREFIX}${params.controlId}`, next);
443
+ dependants.forEach((controlId) => {
444
+ const current2 = map.get(`${CONTROL_PREFIX}${controlId}`);
445
+ if (isRecord(current2)) map.set(`${CONTROL_PREFIX}${controlId}`, { ...current2, status: "stale" });
446
+ });
447
+ affectedPhases.forEach((phaseId) => {
448
+ const commitment = map.get(`${COMMITMENT_PREFIX}${phaseId}`);
449
+ if (isRecord(commitment)) map.set(`${COMMITMENT_PREFIX}${phaseId}`, { ...commitment, status: "stale" });
450
+ });
451
+ staleReviewAndRelease(map);
452
+ });
453
+ return next;
454
+ }
455
+ function createDesignPodArtifactReceipt(doc, receipt) {
456
+ if (!receipt.id || !receipt.path || !receipt.version || !receipt.contentHash || !receipt.cid) {
457
+ throw new Error("A verified VFS artifact receipt requires id, path, version, contentHash, and cid");
458
+ }
459
+ const identity = stateMap(doc).get(IDENTITY_KEY);
460
+ if (identity && isRunTerminalOrPending(doc, identity.sessionRunId)) {
461
+ throw new TerminalRunExecutionError(identity.sessionRunId, `design-pod-artifact-receipt:${receipt.controlId}`);
462
+ }
463
+ const value = { schemaVersion: "1.0", ...receipt };
464
+ stateMap(doc).set(`${ARTIFACT_PREFIX}${receipt.controlId}:${receipt.digest}`, value);
465
+ return value;
466
+ }
467
+ async function commitDesignPodPhase(doc, params) {
468
+ const manifest = readDesignPodDefinition(doc);
469
+ const state = readDesignPodState(doc);
470
+ if (!manifest || !state) throw new Error("Design POD is not initialized");
471
+ if (params.decision !== manifest.publicationRules.phaseDecision) throw new Error("Phase commitment requires the explicit \u201CYes, continue\u201D decision");
472
+ const phase = manifest.phases.find((candidate) => candidate.id === params.phaseId);
473
+ if (!phase) throw new Error(`Unknown Design POD phase: ${params.phaseId}`);
474
+ const controlDigests = {};
475
+ const receipts = [];
476
+ for (const controlId of phase.controls) {
477
+ const revision = state.controls[controlId];
478
+ if (!revision || revision.status !== "current") throw new Error(`${controlId} must have a current revision before committing ${params.phaseId}`);
479
+ if (params.expectedControlDigests[controlId] !== revision.digest) throw new Error(`${controlId} changed while ${params.phaseId} was being committed`);
480
+ const receipt = state.artifactReceipts.find((candidate) => candidate.controlId === controlId && candidate.digest === revision.digest);
481
+ if (!receipt) throw new Error(`${controlId} has not been persisted and verified through the Design Project entity VFS`);
482
+ controlDigests[controlId] = revision.digest;
483
+ receipts.push(receipt);
484
+ }
485
+ const committedAt = params.now ?? (/* @__PURE__ */ new Date()).toISOString();
486
+ const digest = await digestDesignPodValue({ phaseId: params.phaseId, controlDigests, artifactReceipts: receipts, committedByDid: params.actorDid, committedAt });
487
+ const commitment = {
488
+ schemaVersion: "1.0",
489
+ phaseId: params.phaseId,
490
+ decision: "Yes, continue",
491
+ committedByDid: params.actorDid,
492
+ committedAt,
493
+ controlDigests,
494
+ artifactReceipts: receipts,
495
+ proof: params.proof,
496
+ digest,
497
+ status: "current"
498
+ };
499
+ const map = stateMap(doc);
500
+ doc.transact(() => {
501
+ assertProjectIdentity(map, state.identity, `${params.phaseId} commitment`);
502
+ if (isRunTerminalOrPending(doc, state.identity.sessionRunId)) {
503
+ throw new TerminalRunExecutionError(state.identity.sessionRunId, `design-pod-phase-commit:${params.phaseId}`);
504
+ }
505
+ for (const controlId of phase.controls) {
506
+ const current = map.get(`${CONTROL_PREFIX}${controlId}`);
507
+ if (!current || current.status !== "current" || current.digest !== controlDigests[controlId]) {
508
+ throw new Error(`${controlId} changed while ${params.phaseId} commitment was being prepared`);
509
+ }
510
+ const expectedReceipt = receipts.find((receipt) => receipt.controlId === controlId);
511
+ const currentReceipt = map.get(`${ARTIFACT_PREFIX}${controlId}:${current.digest}`);
512
+ if (!currentReceipt || currentReceipt.id !== expectedReceipt.id || currentReceipt.path !== expectedReceipt.path || currentReceipt.version !== expectedReceipt.version || currentReceipt.contentHash !== expectedReceipt.contentHash || currentReceipt.cid !== expectedReceipt.cid) {
513
+ throw new Error(`${controlId} VFS proof changed while ${params.phaseId} commitment was being prepared`);
514
+ }
515
+ }
516
+ const currentCommitment = map.get(`${COMMITMENT_PREFIX}${params.phaseId}`);
517
+ if (isRecord(currentCommitment) && currentCommitment.status === "current" && currentCommitment.digest !== commitment.digest) {
518
+ assertPublicationCanBeInvalidated(map, `Recommitting ${params.phaseId}`);
519
+ staleReviewAndRelease(map);
520
+ }
521
+ map.set(`${COMMITMENT_PREFIX}${params.phaseId}`, commitment);
522
+ });
523
+ return commitment;
524
+ }
525
+ async function computeDesignPodRevisionSetDigest(doc) {
526
+ const state = readDesignPodState(doc);
527
+ if (!state) throw new Error("Design POD is not initialized");
528
+ const phases = Object.entries(state.phaseCommitments).filter(([, commitment]) => commitment?.status === "current").sort(([left], [right]) => left.localeCompare(right));
529
+ const checklistRecords = Object.entries(state.checklistRecords).sort(([left], [right]) => left.localeCompare(right));
530
+ return digestDesignPodValue({ phases, checklistRecords });
531
+ }
532
+ function markDesignPodReviewed(doc, params) {
533
+ const identity = stateMap(doc).get(IDENTITY_KEY);
534
+ if (identity && isRunTerminalOrPending(doc, identity.sessionRunId)) {
535
+ throw new TerminalRunExecutionError(identity.sessionRunId, "design-pod-review");
536
+ }
537
+ const review = {
538
+ schemaVersion: "1.0",
539
+ reviewerDid: params.reviewerDid,
540
+ revisionSetDigest: params.revisionSetDigest,
541
+ decision: params.decision,
542
+ reviewedAt: params.now ?? (/* @__PURE__ */ new Date()).toISOString(),
543
+ assignmentDigest: params.assignmentDigest,
544
+ reviewRequestDigest: params.reviewRequestDigest,
545
+ proof: params.proof,
546
+ status: "current"
547
+ };
548
+ stateMap(doc).set(REVIEW_KEY, review);
549
+ return review;
550
+ }
551
+ async function importLegacyDesignPodEvidence(doc, evidence, identity, persistence) {
552
+ if (!evidence.legacyWorkspaceId || !["0.5", "0.6"].includes(evidence.sourceVersion) || !evidence.exportedAt) {
553
+ throw new Error("Legacy Design POD evidence metadata is invalid");
554
+ }
555
+ if (evidence.history.length === 0) throw new Error("Legacy Design POD evidence requires its exported hash-chained history");
556
+ let previousDigest = null;
557
+ const payloadDigests = /* @__PURE__ */ new Set();
558
+ for (const [index, record2] of evidence.history.entries()) {
559
+ if (record2.sequence !== index || record2.previousDigest !== previousDigest) {
560
+ throw new Error(`Legacy Design POD history chain is broken at sequence ${index}`);
561
+ }
562
+ const digest = await digestDesignPodValue({
563
+ sequence: record2.sequence,
564
+ previousDigest: record2.previousDigest,
565
+ eventType: record2.eventType,
566
+ payloadDigest: record2.payloadDigest,
567
+ occurredAt: record2.occurredAt
568
+ });
569
+ if (record2.digest !== digest) throw new Error(`Legacy Design POD history digest is invalid at sequence ${index}`);
570
+ payloadDigests.add(record2.payloadDigest);
571
+ previousDigest = digest;
572
+ }
573
+ if (evidence.historyDigest !== previousDigest) throw new Error("Legacy Design POD history head does not match the verified hash chain");
574
+ const artifacts = [];
575
+ for (const artifact of evidence.artifacts) {
576
+ const sourceDigest = await digestDesignPodValue({ controlId: artifact.controlId, content: artifact.content });
577
+ if (artifact.sourceDigest !== sourceDigest || !payloadDigests.has(sourceDigest)) {
578
+ throw new Error(`${artifact.controlId} is not bound to the verified legacy history`);
579
+ }
580
+ artifacts.push({ artifact, content: { ...artifact.content, legacySourceDigest: artifact.sourceDigest } });
581
+ }
582
+ await initializeDesignPod(doc, "design-yoma/v1", identity);
583
+ if (isRunTerminalOrPending(doc, identity.sessionRunId)) {
584
+ throw new TerminalRunExecutionError(identity.sessionRunId, "design-pod-legacy-import");
585
+ }
586
+ stateMap(doc).set(LEGACY_EVIDENCE_KEY, evidence);
587
+ for (const { artifact, content } of artifacts) {
588
+ const revision = await updateDesignPodControl(doc, {
589
+ controlId: artifact.controlId,
590
+ content,
591
+ actorDid: "did:ixo:legacy-import",
592
+ now: evidence.exportedAt,
593
+ importedLegacy: true
594
+ });
595
+ const persisted = await persistence.persistArtifact({
596
+ designProjectEntityDid: identity.designProjectEntityDid,
597
+ controlId: artifact.controlId,
598
+ revision: revision.revision,
599
+ digest: revision.digest,
600
+ content: revision.content
601
+ });
602
+ const receipt = { schemaVersion: "1.0", controlId: artifact.controlId, digest: revision.digest, ...persisted };
603
+ const verified = await persistence.verifyArtifactReceipt({ designProjectEntityDid: identity.designProjectEntityDid, revision, receipt });
604
+ if (verified.id !== receipt.id || verified.path !== receipt.path || verified.version !== receipt.version || verified.contentHash !== receipt.contentHash || verified.cid !== receipt.cid) {
605
+ throw new Error(`${artifact.controlId} legacy VFS import failed authoritative readback`);
606
+ }
607
+ createDesignPodArtifactReceipt(doc, { controlId: artifact.controlId, digest: revision.digest, ...verified });
608
+ }
609
+ }
610
+
611
+ // src/core/lib/designPod/compiler.ts
612
+ var YOMA_OPERATIONAL_FLOW_GROUPS = [
613
+ {
614
+ id: "youth-participation",
615
+ title: "Youth opportunity participation and YoID linkage",
616
+ sourceControlIds: ["service_architecture", "ucan_rights", "flow_configuration", "governance_risk"],
617
+ actions: ["qi/yoma.opportunity", "qi/yoid.link"]
618
+ },
619
+ {
620
+ id: "work-claims",
621
+ title: "Work collection, claim submission, and evaluation",
622
+ sourceControlIds: ["service_architecture", "evidence_model", "claims_rubrics", "ucan_rights", "flow_configuration"],
623
+ actions: ["qi/collection.lifecycle", "qi/collection.users", "qi/claim.submit", "qi/claim.evaluate"]
624
+ },
625
+ {
626
+ id: "rewards-and-funding",
627
+ title: "Funding verification and claims-native reward readiness",
628
+ sourceControlIds: ["automation_feasibility", "claims_rubrics", "commercial_packaging", "flow_configuration"],
629
+ actions: ["qi/funding.verify"]
630
+ },
631
+ {
632
+ id: "youth-credentials",
633
+ title: "Youth credential issuance and delivery",
634
+ sourceControlIds: ["outcome_contract", "evidence_model", "ucan_rights", "flow_configuration"],
635
+ actions: ["qi/credential.issue", "qi/credential.store"]
636
+ },
637
+ {
638
+ id: "outcome-certification",
639
+ title: "Theory-of-change outcome certificate issuance",
640
+ sourceControlIds: ["outcome_contract", "evidence_model", "commercial_packaging", "governance_risk", "flow_configuration"],
641
+ actions: ["qi/outcome.certificate"]
642
+ }
643
+ ];
644
+ function compileYomaOperationalFlows(manifest) {
645
+ if (manifest.methodId !== "design-yoma/v1") return [];
646
+ const declared = new Set(manifest.operationalActions);
647
+ const flows = YOMA_OPERATIONAL_FLOW_GROUPS.map((group) => ({
648
+ schemaVersion: "1.0",
649
+ kind: "OperationalFlowTemplate",
650
+ id: group.id,
651
+ title: group.title,
652
+ sourceControlIds: [...group.sourceControlIds],
653
+ nodes: group.actions.map((actionType, sequence) => ({ id: `${group.id}-${sequence + 1}`, sequence, actionType }))
654
+ }));
655
+ const compiledActions = flows.flatMap((flow) => flow.nodes.map((node) => node.actionType));
656
+ const missing = manifest.operationalActions.filter((action) => !compiledActions.includes(action));
657
+ const undeclared = compiledActions.filter((action) => !declared.has(action));
658
+ if (missing.length > 0 || undeclared.length > 0) {
659
+ throw new Error(
660
+ `Yoma operational Flow templates do not match the pinned action manifest (missing: ${missing.join(", ") || "none"}; undeclared: ${undeclared.join(", ") || "none"})`
661
+ );
662
+ }
663
+ return flows;
664
+ }
665
+ function governedInputs(state, inputs) {
666
+ return {
667
+ ...inputs,
668
+ designProjectEntityDid: state.identity.designProjectEntityDid,
669
+ flowRoomId: state.identity.flowRoomId,
670
+ sessionRunId: state.identity.sessionRunId,
671
+ methodManifestDigest: state.identity.methodManifestDigest
672
+ };
673
+ }
674
+ function flowAuthority(doc, state, authority) {
675
+ const root = doc.getMap("root");
676
+ if (state.identity.designProjectEntityDid !== authority.designProjectEntityDid || state.identity.flowOwnerDid !== authority.flowOwnerDid || state.identity.flowRoomId !== authority.flowRoomId || state.identity.sessionRunId !== authority.sessionRunId) {
677
+ throw new Error("The Design POD project identity does not match Portal-owned authority");
678
+ }
679
+ if (root.get("doc_id") !== authority.flowRoomId || root.get("flowOwnerDid") !== authority.flowOwnerDid) {
680
+ throw new Error("The collaborative Flow authority does not match the Portal-owned Flow owner and Matrix room");
681
+ }
682
+ return { flowUri: `ixo:flow:${authority.flowRoomId}`, flowOwnerDid: authority.flowOwnerDid };
683
+ }
684
+ async function verifyActionProof(doc, state, proof, expected, authority, verifyInvocation) {
685
+ if (!proof?.invocationCid || !proof.actionBlockId || !proof.inputDigest) {
686
+ throw new Error(`${expected.actionType} is missing its identity-bound Flow invocation proof`);
687
+ }
688
+ const expectedInputDigest = await digestDesignPodValue(expected.inputs);
689
+ if (proof.inputDigest !== expectedInputDigest) throw new Error(`${expected.actionType} proof is not bound to its canonical action input`);
690
+ const invocation = readInvocationsForRun(doc, state.identity.sessionRunId).find((candidate) => candidate.cid === proof.invocationCid);
691
+ if (!invocation) throw new Error(`${expected.actionType} invocation is not present in the pinned Matrix run history`);
692
+ const { flowUri, flowOwnerDid } = flowAuthority(doc, state, authority);
693
+ if (invocation.result !== "success" || invocation.invokerDid !== expected.actorDid || invocation.blockId !== proof.actionBlockId || invocation.sessionRunId !== state.identity.sessionRunId || invocation.capability?.can !== "flow/block/execute" || invocation.capability?.with !== `${flowUri}:${proof.actionBlockId}` || invocation.facts?.actionType !== expected.actionType || invocation.facts?.inputDigest !== proof.inputDigest || invocation.facts?.sessionRunId !== state.identity.sessionRunId) {
694
+ throw new Error(`${expected.actionType} invocation metadata does not match the reviewed Flow action`);
695
+ }
696
+ const verified = await verifyInvocation({
697
+ invocation,
698
+ expected: {
699
+ actorDid: expected.actorDid,
700
+ actionType: expected.actionType,
701
+ blockId: proof.actionBlockId,
702
+ inputDigest: proof.inputDigest,
703
+ flowUri,
704
+ flowOwnerDid,
705
+ designProjectEntityDid: state.identity.designProjectEntityDid,
706
+ sessionRunId: state.identity.sessionRunId
707
+ }
708
+ });
709
+ if (!verified.valid) throw new Error(`${expected.actionType} invocation failed cryptographic verification${verified.error ? `: ${verified.error}` : ""}`);
710
+ }
711
+ async function assertCompilable(doc, options) {
712
+ const manifest = readDesignPodDefinition(doc);
713
+ const state = readDesignPodState(doc);
714
+ if (!manifest || !state) throw new Error("Design POD is not initialized");
715
+ const registeredManifest = DESIGN_POD_METHODS[manifest.methodId];
716
+ if (!registeredManifest || canonicalDesignPodJson(manifest) !== canonicalDesignPodJson(registeredManifest)) {
717
+ throw new Error("The Design POD method definition does not match the registered Portal method");
718
+ }
719
+ if (await digestDesignPodValue(manifest) !== state.identity.methodManifestDigest) {
720
+ throw new Error("The current Design POD method manifest does not match its pinned digest");
721
+ }
722
+ const manifestControlIds = new Set(manifest.phases.flatMap((phase) => phase.controls));
723
+ const unknownControlIds = Object.keys(state.controls).filter((controlId) => !manifestControlIds.has(controlId));
724
+ if (unknownControlIds.length > 0) throw new Error(`Blueprint contains controls outside the pinned method manifest: ${unknownControlIds.join(", ")}`);
725
+ const governedChecklistIds = new Set(manifest.publicationRules.checklistItems.map((item) => item.id));
726
+ const unknownChecklistIds = Object.keys(state.checklistRecords).filter((itemId) => !governedChecklistIds.has(itemId));
727
+ if (unknownChecklistIds.length > 0) throw new Error(`Blueprint contains checklist records outside the pinned method manifest: ${unknownChecklistIds.join(", ")}`);
728
+ const blockers = [];
729
+ for (const item of manifest.publicationRules.checklistItems) {
730
+ const record2 = state.checklistRecords[item.id];
731
+ if (!record2) throw new Error(`Governed checklist item ${item.id} requires a signed disposition`);
732
+ if (record2.itemId !== item.id || !["resolved", "accepted_for_later", "blocking"].includes(record2.disposition)) {
733
+ throw new Error(`Governed checklist item ${item.id} has an invalid disposition record`);
734
+ }
735
+ const digest = await digestDesignPodValue({ itemId: record2.itemId, disposition: record2.disposition, updatedByDid: record2.updatedByDid, updatedAt: record2.updatedAt });
736
+ if (record2.digest !== digest) throw new Error(`Governed checklist item ${item.id} does not match its signed digest`);
737
+ await verifyActionProof(
738
+ doc,
739
+ state,
740
+ record2.proof,
741
+ {
742
+ actorDid: record2.updatedByDid,
743
+ actionType: "qi/blueprint.checklist-update",
744
+ inputs: governedInputs(state, { itemId: record2.itemId, disposition: record2.disposition })
745
+ },
746
+ options.authority,
747
+ options.verifyInvocation
748
+ );
749
+ if (record2.disposition === "blocking") blockers.push(item.id);
750
+ }
751
+ if (blockers.length > 0) throw new Error(`Publication blockers must be resolved before compilation: ${blockers.join(", ")}`);
752
+ const providerDids = /* @__PURE__ */ new Set();
753
+ for (const phase of manifest.phases) {
754
+ const commitment = state.phaseCommitments[phase.id];
755
+ if (commitment?.status !== "current") throw new Error(`${phase.title} requires a current provider commitment`);
756
+ for (const controlId of phase.controls) {
757
+ const revision = state.controls[controlId];
758
+ if (!revision || revision.status !== "current") throw new Error(`${controlId} requires a current control revision`);
759
+ const canonicalDigest = await digestDesignPodValue({ controlId: revision.controlId, revision: revision.revision, content: revision.content });
760
+ if (revision.controlId !== controlId || revision.digest !== canonicalDigest || commitment.controlDigests[controlId] !== canonicalDigest) {
761
+ throw new Error(`${controlId} current content is not bound to its signed phase commitment`);
762
+ }
763
+ const receipts = commitment.artifactReceipts.filter((receipt2) => receipt2.controlId === controlId && receipt2.digest === canonicalDigest);
764
+ if (receipts.length !== 1) throw new Error(`${controlId} requires exactly one committed VFS artifact receipt`);
765
+ const receipt = receipts[0];
766
+ const verified = await options.verifyArtifactReceipt({ designProjectEntityDid: state.identity.designProjectEntityDid, revision, receipt });
767
+ if (verified.id !== receipt.id || verified.path !== receipt.path || verified.version !== receipt.version || verified.contentHash !== receipt.contentHash || verified.cid !== receipt.cid) {
768
+ throw new Error(`${controlId} committed VFS artifact receipt failed authoritative readback`);
769
+ }
770
+ }
771
+ if (commitment.artifactReceipts.length !== phase.controls.length) throw new Error(`${phase.id} commitment contains unexpected VFS artifact receipts`);
772
+ const commitmentDigest = await digestDesignPodValue({
773
+ phaseId: commitment.phaseId,
774
+ controlDigests: commitment.controlDigests,
775
+ artifactReceipts: commitment.artifactReceipts,
776
+ committedByDid: commitment.committedByDid,
777
+ committedAt: commitment.committedAt
778
+ });
779
+ if (commitment.phaseId !== phase.id || commitment.digest !== commitmentDigest) throw new Error(`${phase.id} commitment does not match its governed digest`);
780
+ providerDids.add(commitment.committedByDid);
781
+ await verifyActionProof(
782
+ doc,
783
+ state,
784
+ commitment.proof,
785
+ {
786
+ actorDid: commitment.committedByDid,
787
+ actionType: "qi/blueprint.phase-commit",
788
+ inputs: governedInputs(state, { phase: phase.id, decision: commitment.decision, expectedControlDigests: commitment.controlDigests })
789
+ },
790
+ options.authority,
791
+ options.verifyInvocation
792
+ );
793
+ }
794
+ if (state.review?.status !== "current" || state.review.decision !== "approved") {
795
+ throw new Error("An identity-bound independent whole-blueprint approval is required before compilation");
796
+ }
797
+ const assignment = state.reviewAssignment;
798
+ const request = state.reviewRequest;
799
+ if (!assignment || assignment.digest !== state.review.assignmentDigest || !sameDesignPodActor(assignment.reviewerDid, state.review.reviewerDid)) {
800
+ const reason = !assignment ? "no reviewer assignment on the document" : assignment.digest !== state.review.assignmentDigest ? `assignment digest ${assignment.digest} != review-bound ${state.review.assignmentDigest}` : `assignment reviewer ${assignment.reviewerDid} != review reviewer ${state.review.reviewerDid}`;
801
+ throw new Error(`The independent review is not bound to the current reviewer assignment (${reason})`);
802
+ }
803
+ if (!request || request.status !== "responded" || request.digest !== state.review.reviewRequestDigest || request.revisionSetDigest !== state.review.revisionSetDigest) {
804
+ const reason = !request ? "no review request on the document" : request.status !== "responded" ? `request status is ${request.status}` : request.digest !== state.review.reviewRequestDigest ? `request digest ${request.digest} != review-bound ${state.review.reviewRequestDigest}` : `request revision set ${request.revisionSetDigest} != review-bound ${state.review.revisionSetDigest}`;
805
+ throw new Error(`The independent review is not bound to the current review request (${reason})`);
806
+ }
807
+ if (await digestDesignPodValue({ reviewerDid: assignment.reviewerDid, assignedByDid: assignment.assignedByDid, assignedAt: assignment.assignedAt }) !== assignment.digest) {
808
+ throw new Error("The reviewer assignment digest does not match its governed record");
809
+ }
810
+ if (await digestDesignPodValue({ revisionSetDigest: request.revisionSetDigest, submittedByDid: request.submittedByDid, submittedAt: request.submittedAt }) !== request.digest) {
811
+ throw new Error("The review request digest does not match its governed record");
812
+ }
813
+ const isCommittedProvider = (did) => [...providerDids].some((provider) => sameDesignPodActor(provider, did));
814
+ if (!isCommittedProvider(assignment.assignedByDid) || !isCommittedProvider(request.submittedByDid)) {
815
+ throw new Error("Reviewer assignment and review submission must be authorized by a committed provider");
816
+ }
817
+ if (isCommittedProvider(state.review.reviewerDid)) throw new Error("The independent reviewer cannot be a provider who committed this blueprint");
818
+ await verifyActionProof(
819
+ doc,
820
+ state,
821
+ assignment.proof,
822
+ { actorDid: assignment.assignedByDid, actionType: "qi/blueprint.reviewer-assign", inputs: governedInputs(state, { reviewerDid: assignment.reviewerDid }) },
823
+ options.authority,
824
+ options.verifyInvocation
825
+ );
826
+ await verifyActionProof(
827
+ doc,
828
+ state,
829
+ request.proof,
830
+ { actorDid: request.submittedByDid, actionType: "qi/blueprint.review-submit", inputs: governedInputs(state, {}) },
831
+ options.authority,
832
+ options.verifyInvocation
833
+ );
834
+ await verifyActionProof(
835
+ doc,
836
+ state,
837
+ state.review.proof,
838
+ {
839
+ actorDid: state.review.reviewerDid,
840
+ actionType: "qi/blueprint.review-respond",
841
+ inputs: governedInputs(state, {
842
+ revisionSetDigest: state.review.revisionSetDigest,
843
+ decision: state.review.decision,
844
+ assignmentDigest: state.review.assignmentDigest,
845
+ reviewRequestDigest: state.review.reviewRequestDigest
846
+ })
847
+ },
848
+ options.authority,
849
+ options.verifyInvocation
850
+ );
851
+ return { manifest, state };
852
+ }
853
+ async function compileDesignPodRelease(doc, options) {
854
+ const { manifest, state } = await assertCompilable(doc, options);
855
+ const committedPhases = Object.entries(state.phaseCommitments).filter(([, commitment]) => commitment?.status === "current").sort(([left], [right]) => left.localeCompare(right));
856
+ const checklistRecords = Object.entries(state.checklistRecords).sort(([left], [right]) => left.localeCompare(right));
857
+ const revisionSetDigest = await digestDesignPodValue({ phases: committedPhases, checklistRecords });
858
+ if (state.review?.revisionSetDigest !== revisionSetDigest) {
859
+ throw new Error("The independent review is not bound to the current committed revision set");
860
+ }
861
+ const controlRevisions = Object.fromEntries(manifest.phases.flatMap((phase) => phase.controls.map((controlId) => [controlId, state.controls[controlId]])));
862
+ const blueprint = {
863
+ schemaVersion: "1.0",
864
+ methodManifest: manifest,
865
+ methodManifestDigest: state.identity.methodManifestDigest,
866
+ designProjectEntityDid: state.identity.designProjectEntityDid,
867
+ flowRoomId: state.identity.flowRoomId,
868
+ controlRevisions,
869
+ phaseCommitments: state.phaseCommitments,
870
+ checklistRecords: state.checklistRecords,
871
+ review: state.review,
872
+ revisionSetDigest
873
+ };
874
+ const skillManifest = {
875
+ schemaVersion: "1.0",
876
+ methodId: manifest.methodId,
877
+ controls: Object.values(manifest.controls).map(({ id, skill, schema, dependencies }) => ({ id, skill, schema, dependencies }))
878
+ };
879
+ const operationalFlows = compileYomaOperationalFlows(manifest);
880
+ const operationalApp = {
881
+ schemaVersion: "1.0",
882
+ kind: manifest.methodId === "design-yoma/v1" ? "YomaDeed" : "ProfessionalServicePOD",
883
+ actions: manifest.operationalActions,
884
+ flowFiles: operationalFlows.map((flow) => `/apps/flows/${flow.id}.json`),
885
+ designFlowRoomId: state.identity.flowRoomId
886
+ };
887
+ const domain = [
888
+ "---",
889
+ `id: ${state.identity.designProjectEntityDid}`,
890
+ `kind: ${manifest.methodId === "design-yoma/v1" ? "YomaDeed" : "ServicePOD"}`,
891
+ `designPodMethod: ${manifest.methodId}`,
892
+ `revisionSetDigest: ${revisionSetDigest}`,
893
+ "---",
894
+ "",
895
+ `# ${manifest.title}`,
896
+ "",
897
+ "This private domain package was compiled from the independently reviewed Portal Design POD Flow.",
898
+ ""
899
+ ].join("\n");
900
+ const releaseDigest = await digestDesignPodValue({ blueprint, skillManifest, operationalApp, operationalFlows, domain });
901
+ const packageRoot = `/pod-blueprints/${releaseDigest}`;
902
+ return {
903
+ schemaVersion: "1.0",
904
+ releaseDigest,
905
+ revisionSetDigest,
906
+ packageRoot,
907
+ files: [
908
+ { relativePath: "/blueprint.json", mediaType: "application/json", content: canonicalDesignPodJson(blueprint) },
909
+ { relativePath: "/.skills/design-yoma.json", mediaType: "application/json", content: canonicalDesignPodJson(skillManifest) },
910
+ { relativePath: "/apps/yoma-deed.json", mediaType: "application/json", content: canonicalDesignPodJson(operationalApp) },
911
+ ...operationalFlows.map((flow) => ({
912
+ relativePath: `/apps/flows/${flow.id}.json`,
913
+ mediaType: "application/json",
914
+ content: canonicalDesignPodJson(flow)
915
+ })),
916
+ // domain.md is intentionally last. The host persists and verifies every
917
+ // private dependency before making this package discoverable.
918
+ { relativePath: "/.domain/domain.md", mediaType: "text/markdown", content: domain }
919
+ ]
920
+ };
921
+ }
922
+
923
+ // src/core/lib/designPod/publication.ts
924
+ function record(value, name) {
925
+ if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${name} is missing or invalid`);
926
+ return value;
927
+ }
928
+ function string(value, name) {
929
+ if (typeof value !== "string" || !value.trim()) throw new Error(`${name} is missing or invalid`);
930
+ return value;
931
+ }
932
+ var LINKED_RESOURCE_FIELDS = ["id", "type", "description", "serviceEndpoint", "proof", "mediaType", "encrypted", "right"];
933
+ async function verifyDesignPodPublishedRun(params) {
934
+ try {
935
+ const state = readDesignPodState(params.yDoc);
936
+ if (!state || state.identity.sessionRunId !== params.runId) throw new Error("The run is not the pinned Design POD session");
937
+ if (params.flowUri !== `ixo:flow:${state.identity.flowRoomId}`) throw new Error("The Flow URI does not match the pinned Matrix room");
938
+ const root = params.yDoc.getMap("root");
939
+ if (root.get("doc_id") !== state.identity.flowRoomId || root.get("flowOwnerDid") !== state.identity.flowOwnerDid) {
940
+ throw new Error("The collaborative Flow authority does not match the pinned Portal authority");
941
+ }
942
+ const release = state.release;
943
+ if (!release?.digest || release.status !== "published") throw new Error("The current Design POD release is not published");
944
+ const receipt = record(release.publicationReceipt, "publicationReceipt");
945
+ if (receipt.releaseDigest !== release.digest) throw new Error("The publication receipt is not bound to the current release");
946
+ const linkedResource = record(receipt.linkedResource, "publicationReceipt.linkedResource");
947
+ const resourceId = string(receipt.resourceId, "publicationReceipt.resourceId");
948
+ if (linkedResource.id !== resourceId) throw new Error("The publication receipt resource identity is inconsistent");
949
+ const publication = record(params.yDoc.getMap("designPodState").get(`publication:${release.digest}`), "authenticated publication record");
950
+ for (const field of ["releaseDigest", "resourceId", "domainCid"]) {
951
+ if (publication[field] !== receipt[field]) throw new Error(`The authenticated publication ${field} does not match its receipt`);
952
+ }
953
+ if (canonicalDesignPodJson(publication.linkedResource) !== canonicalDesignPodJson(linkedResource)) {
954
+ throw new Error("The authenticated publication linked resource does not match its receipt");
955
+ }
956
+ const invocationCid = string(publication.reconciledByInvocationCid, "publication.reconciledByInvocationCid");
957
+ const invocation = readInvocationsForRun(params.yDoc, params.runId).find((candidate) => candidate.cid === invocationCid);
958
+ if (!invocation) throw new Error("The signed publication invocation is missing from the pinned run history");
959
+ const blockId = string(invocation.blockId, "publication invocation blockId");
960
+ const inputDigest = await digestDesignPodValue({
961
+ releaseDigest: release.digest,
962
+ designProjectEntityDid: state.identity.designProjectEntityDid,
963
+ flowRoomId: state.identity.flowRoomId,
964
+ sessionRunId: state.identity.sessionRunId,
965
+ methodManifestDigest: state.identity.methodManifestDigest
966
+ });
967
+ if (invocation.result !== "success" || invocation.sessionRunId !== params.runId || invocation.capability?.can !== "flow/block/execute" || invocation.capability?.with !== `${params.flowUri}:${blockId}` || invocation.facts?.actionType !== "qi/blueprint.publish" || invocation.facts?.inputDigest !== inputDigest || invocation.facts?.sessionRunId !== params.runId) {
968
+ throw new Error("The publication record is not bound to a successful canonical publish invocation");
969
+ }
970
+ const verifiedInvocation = await params.service.verifyInvocation({
971
+ invocation,
972
+ expected: {
973
+ actorDid: invocation.invokerDid,
974
+ actionType: "qi/blueprint.publish",
975
+ blockId,
976
+ inputDigest,
977
+ flowUri: params.flowUri,
978
+ flowOwnerDid: state.identity.flowOwnerDid,
979
+ designProjectEntityDid: state.identity.designProjectEntityDid,
980
+ sessionRunId: params.runId
981
+ }
982
+ });
983
+ if (!verifiedInvocation.valid)
984
+ throw new Error(`The publication invocation failed cryptographic verification${verifiedInvocation.error ? `: ${verifiedInvocation.error}` : ""}`);
985
+ const typedLinkedResource = Object.fromEntries(LINKED_RESOURCE_FIELDS.map((field) => [field, string(linkedResource[field], `linkedResource.${field}`)]));
986
+ const authoritative = await params.service.verifyPublicationReceipt({
987
+ designProjectEntityDid: state.identity.designProjectEntityDid,
988
+ releaseDigest: release.digest,
989
+ linkedResource: typedLinkedResource
990
+ });
991
+ if (authoritative.status !== "published" || !authoritative.linkedResource) throw new Error("IXO has not authoritatively retained the published linked resource");
992
+ if (canonicalDesignPodJson(authoritative.linkedResource) !== canonicalDesignPodJson(typedLinkedResource)) {
993
+ throw new Error("IXO authoritative linked-resource readback does not match the publication receipt");
994
+ }
995
+ return { valid: true };
996
+ } catch (error) {
997
+ return { valid: false, error: error instanceof Error ? error.message : "Design POD publication verification failed" };
998
+ }
999
+ }
1000
+
1001
+ // src/core/lib/designPod/template.ts
1002
+ function createDesignPodPortalJourneyPlan(methodId) {
1003
+ const manifest = DESIGN_POD_METHODS[methodId];
1004
+ return {
1005
+ kind: "qi.flow.base-ucan",
1006
+ version: "1.0",
1007
+ flowId: DESIGN_POD_TEMPLATE_ID,
1008
+ title: manifest.title,
1009
+ goal: "Design, independently review, dry-run, and deploy one evidence-backed POD Blueprint.",
1010
+ capabilities: [
1011
+ ...manifest.phases.map((phase) => ({
1012
+ id: `design-pod-${phase.id}-commit`,
1013
+ can: "blueprint/phase-commit",
1014
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:${phase.id}`,
1015
+ title: phase.title,
1016
+ description: phase.description,
1017
+ phase: phase.id,
1018
+ nb: { phase: phase.id, decision: "Yes, continue" }
1019
+ })),
1020
+ {
1021
+ id: "design-pod-checklist-update",
1022
+ can: "blueprint/checklist-update",
1023
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:publication-checklist`,
1024
+ title: "Update publication checklist",
1025
+ description: "Record one signed governed checklist disposition before review and publication.",
1026
+ phase: "validation",
1027
+ nb: {}
1028
+ },
1029
+ {
1030
+ id: "design-pod-reviewer-assign",
1031
+ can: "blueprint/reviewer-assign",
1032
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:reviewer-assignment`,
1033
+ title: "Assign independent reviewer",
1034
+ description: "Nominate the IXO DID that will independently review the exact committed blueprint.",
1035
+ phase: "deployment",
1036
+ nb: {}
1037
+ },
1038
+ {
1039
+ id: "design-pod-review-submit",
1040
+ can: "blueprint/review-submit",
1041
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:review-submission`,
1042
+ title: "Submit blueprint for review",
1043
+ description: "Bind the five current commitments into one immutable review request.",
1044
+ phase: "deployment",
1045
+ nb: {}
1046
+ },
1047
+ {
1048
+ id: "design-pod-review-respond",
1049
+ can: "blueprint/review-respond",
1050
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:review-response`,
1051
+ title: "Record independent review",
1052
+ description: "Approve the submitted revision set or require governed changes.",
1053
+ phase: "deployment",
1054
+ nb: {}
1055
+ },
1056
+ {
1057
+ id: "design-pod-release-compile",
1058
+ can: "blueprint/release-compile",
1059
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:release-compilation`,
1060
+ title: "Compile reviewed blueprint",
1061
+ description: "Compile the exact approved revision set into the deterministic private VFS package.",
1062
+ phase: "deployment",
1063
+ nb: {}
1064
+ },
1065
+ {
1066
+ id: "design-pod-publish",
1067
+ can: "blueprint/publish",
1068
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:publication`,
1069
+ title: "Publish blueprint",
1070
+ description: "Persist the package through the entity VFS and publish its verified IXO linked resource.",
1071
+ phase: "deployment",
1072
+ nb: {}
1073
+ },
1074
+ {
1075
+ id: "design-pod-protocol-mint",
1076
+ can: "blueprint/protocol-mint",
1077
+ with: `ixo:flow:${DESIGN_POD_TEMPLATE_ID}:protocol-mint`,
1078
+ title: "Mint protocol",
1079
+ description: "Create the protocol entity from the published release and unpack its package so instances are ready to run.",
1080
+ phase: "deployment",
1081
+ nb: {}
1082
+ }
1083
+ ]
1084
+ };
1085
+ }
1086
+ var PROFESSIONAL_SERVICE_DESIGN_POD_PLAN_V1 = createDesignPodPortalJourneyPlan("professional-service/v1");
1087
+ var YOMA_DESIGN_POD_PLAN_V1 = createDesignPodPortalJourneyPlan("design-yoma/v1");
1088
+
1089
+ // src/core/lib/designPod/operationalPlan.ts
1090
+ function parseDesignPodOperationalFlow(raw) {
1091
+ if (!raw || typeof raw !== "object") return void 0;
1092
+ const candidate = raw;
1093
+ if (candidate.kind !== "OperationalFlowTemplate" || typeof candidate.id !== "string" || !Array.isArray(candidate.nodes)) return void 0;
1094
+ const nodes = candidate.nodes.filter((node) => !!node && typeof node.id === "string" && typeof node.actionType === "string").map((node, index) => ({
1095
+ id: node.id,
1096
+ sequence: typeof node.sequence === "number" ? node.sequence : index,
1097
+ actionType: node.actionType,
1098
+ ...node.inputs && typeof node.inputs === "object" ? { inputs: node.inputs } : {}
1099
+ })).sort((left, right) => left.sequence - right.sequence);
1100
+ if (nodes.length === 0) return void 0;
1101
+ return {
1102
+ schemaVersion: "1.0",
1103
+ kind: "OperationalFlowTemplate",
1104
+ id: candidate.id,
1105
+ title: typeof candidate.title === "string" && candidate.title.trim() ? candidate.title : candidate.id,
1106
+ sourceControlIds: Array.isArray(candidate.sourceControlIds) ? candidate.sourceControlIds.filter((id) => typeof id === "string") : [],
1107
+ nodes
1108
+ };
1109
+ }
1110
+ function createDesignPodOperationalFlowPlan(flow) {
1111
+ const capabilities = flow.nodes.map((node) => {
1112
+ const can = getAction(node.actionType)?.can;
1113
+ if (!can) throw new Error(`Operational Flow "${flow.id}" references ${node.actionType}, which is not a registered action with a UCAN ability`);
1114
+ return {
1115
+ id: node.id,
1116
+ can,
1117
+ with: `ixo:flow:${flow.id}:${node.id}`,
1118
+ title: node.actionType,
1119
+ description: `Operational step ${node.sequence + 1} of ${flow.title}.`,
1120
+ nb: node.inputs ?? {}
1121
+ };
1122
+ });
1123
+ return {
1124
+ kind: "qi.flow.base-ucan",
1125
+ version: "1.0",
1126
+ // Left empty on purpose: setupFlowFromBaseUcan fills it from the room it is
1127
+ // instantiated into, which is what makes each clone its own flow.
1128
+ flowId: "",
1129
+ title: flow.title,
1130
+ goal: `Run ${flow.title}.`,
1131
+ capabilities
1132
+ };
1133
+ }
1134
+
1135
+ // src/core/lib/designPod/prompts.ts
1136
+ function buildDesignPodPhasePrompt(definition, state, phase) {
1137
+ const controls = phase.controls.map((id) => {
1138
+ const control = definition.controls[id];
1139
+ const status = state.controls[id]?.status ?? "missing";
1140
+ return `- ${id} (${control.title}; schema ${control.schema}; skill ${control.skill}; depends on ${control.dependencies.join(", ") || "nothing"}) \u2014 ${status}`;
1141
+ }).join("\n");
1142
+ return [
1143
+ `I am designing a ${definition.title} in the open Design POD Flow. Help me complete the "${phase.title}" phase: ${phase.description}`,
1144
+ `Controls in this phase:
1145
+ ${controls}`,
1146
+ "First call get_design_pod_state to read the current state. It is the complete and only source of truth: the schema and skill names above are opaque identifiers, there is no external registry of control field definitions, so never search memory, skills or any knowledge base for them \u2014 design clear, named fields yourself from each control's title and description. Then work through the missing or stale controls: ask me one focused question at a time, and once you have enough, call propose_design_pod_patch with a complete typed content object for that control (include baseDigest when the control already exists). When you already have enough context for several controls \u2014 or when I explicitly ask you to cover multiple controls at once \u2014 call propose_design_pod_patch multiple times in the same turn, once per control; the proposals queue up in the Design POD panel and I accept each one separately. Do not ask me to paste JSON, and do not wait for one proposal to be accepted before proposing the next."
1147
+ ].join("\n\n");
1148
+ }
1149
+
1150
+ export {
1151
+ DESIGN_POD_TEMPLATE_ID,
1152
+ DESIGN_POD_PHASE_IDS,
1153
+ DESIGN_POD_CONTROL_IDS,
1154
+ PROFESSIONAL_SERVICE_METHOD_V1,
1155
+ DESIGN_YOMA_METHOD_V1,
1156
+ DESIGN_POD_METHODS,
1157
+ INVOCATIONS_MAP_KEY,
1158
+ readInvocationsForRun,
1159
+ canonicalDesignPodJson,
1160
+ digestDesignPodValue,
1161
+ DESIGN_POD_DEFINITION_MAP_KEY,
1162
+ DESIGN_POD_STATE_MAP_KEY,
1163
+ sameDesignPodActor,
1164
+ seedDesignPodMethodDefinition,
1165
+ initializeDesignPod,
1166
+ readDesignPodDefinition,
1167
+ readDesignPodState,
1168
+ updateDesignPodControl,
1169
+ createDesignPodArtifactReceipt,
1170
+ commitDesignPodPhase,
1171
+ computeDesignPodRevisionSetDigest,
1172
+ markDesignPodReviewed,
1173
+ importLegacyDesignPodEvidence,
1174
+ compileDesignPodRelease,
1175
+ verifyDesignPodPublishedRun,
1176
+ createDesignPodPortalJourneyPlan,
1177
+ PROFESSIONAL_SERVICE_DESIGN_POD_PLAN_V1,
1178
+ YOMA_DESIGN_POD_PLAN_V1,
1179
+ parseDesignPodOperationalFlow,
1180
+ createDesignPodOperationalFlowPlan,
1181
+ buildDesignPodPhasePrompt
1182
+ };
1183
+ //# sourceMappingURL=chunk-JIDTNKKL.js.map