@ixo/editor 6.32.1 → 6.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BidConfig-YLGSEIOS.js +154 -0
- package/dist/BidConfig-YLGSEIOS.js.map +1 -0
- package/dist/BidFlowDetail-TJCJBJZZ.js +365 -0
- package/dist/BidFlowDetail-TJCJBJZZ.js.map +1 -0
- package/dist/CalendarEventCreateConfig-J2LU6LJO.js +155 -0
- package/dist/CalendarEventCreateConfig-J2LU6LJO.js.map +1 -0
- package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js +174 -0
- package/dist/CalendarEventCreateFlowDetail-ZWHZWDOK.js.map +1 -0
- package/dist/CalendarEventListConfig-GQNNF4ZB.js +116 -0
- package/dist/CalendarEventListConfig-GQNNF4ZB.js.map +1 -0
- package/dist/CalendarEventListFlowDetail-SSRTOXIX.js +58 -0
- package/dist/CalendarEventListFlowDetail-SSRTOXIX.js.map +1 -0
- package/dist/CalendarEventUpdateConfig-KACZA6GH.js +133 -0
- package/dist/CalendarEventUpdateConfig-KACZA6GH.js.map +1 -0
- package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js +155 -0
- package/dist/CalendarEventUpdateFlowDetail-CD6NHHOU.js.map +1 -0
- package/dist/ClaimConfig-3HKPGK55.js +200 -0
- package/dist/ClaimConfig-3HKPGK55.js.map +1 -0
- package/dist/ClaimFlowDetail-UVEQMEI5.js +641 -0
- package/dist/ClaimFlowDetail-UVEQMEI5.js.map +1 -0
- package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js +149 -0
- package/dist/CollectionLifecycleConfig-LCCGZ3CJ.js.map +1 -0
- package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js +647 -0
- package/dist/CollectionLifecycleFlowDetail-WFCSVIIG.js.map +1 -0
- package/dist/CollectionUsersConfig-RI2X3YY2.js +271 -0
- package/dist/CollectionUsersConfig-RI2X3YY2.js.map +1 -0
- package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js +1276 -0
- package/dist/CollectionUsersFlowDetail-ZLCJBWHG.js.map +1 -0
- package/dist/CredentialStoreConfig-G66AQDGZ.js +75 -0
- package/dist/CredentialStoreConfig-G66AQDGZ.js.map +1 -0
- package/dist/CredentialStoreFlowDetail-FL7QAM3S.js +99 -0
- package/dist/CredentialStoreFlowDetail-FL7QAM3S.js.map +1 -0
- package/dist/DesignPodConfig-LJ7H2CZ6.js +8 -0
- package/dist/DesignPodConfig-LJ7H2CZ6.js.map +1 -0
- package/dist/DesignPodFlowDetail-JHJWGNVY.js +309 -0
- package/dist/DesignPodFlowDetail-JHJWGNVY.js.map +1 -0
- package/dist/DomainCardPreviewConfig-Q3X5M4WF.js +37 -0
- package/dist/DomainCardPreviewConfig-Q3X5M4WF.js.map +1 -0
- package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js +131 -0
- package/dist/DomainCardPreviewFlowDetail-Y2FE7O5Z.js.map +1 -0
- package/dist/DomainIndexerLookupConfig-N4VONQUY.js +41 -0
- package/dist/DomainIndexerLookupConfig-N4VONQUY.js.map +1 -0
- package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js +70 -0
- package/dist/DomainIndexerLookupFlowDetail-GJ7WWK7I.js.map +1 -0
- package/dist/DomainSignConfig-XFIXROVK.js +47 -0
- package/dist/DomainSignConfig-XFIXROVK.js.map +1 -0
- package/dist/DomainSignFlowDetail-BXZ6JBPR.js +206 -0
- package/dist/DomainSignFlowDetail-BXZ6JBPR.js.map +1 -0
- package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js +101 -0
- package/dist/DomainSingleSelectionConfig-ZNKIXB4P.js.map +1 -0
- package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js +147 -0
- package/dist/DomainSingleSelectionFlowDetail-HWTQXSLA.js.map +1 -0
- package/dist/EmailSendConfig-YEGZ5Q77.js +215 -0
- package/dist/EmailSendConfig-YEGZ5Q77.js.map +1 -0
- package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js +150 -0
- package/dist/EntityCreateOracleConfig-UZ6ZIMP5.js.map +1 -0
- package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js +120 -0
- package/dist/EntityCreateOracleFlowDetail-H2X7CPYU.js.map +1 -0
- package/dist/EntitySingleSelectionConfig-DL57KNKM.js +30 -0
- package/dist/EntitySingleSelectionConfig-DL57KNKM.js.map +1 -0
- package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js +118 -0
- package/dist/EntitySingleSelectionFlowDetail-GFQGX3GA.js.map +1 -0
- package/dist/EntityTransferConfig-JVZ3H35B.js +62 -0
- package/dist/EntityTransferConfig-JVZ3H35B.js.map +1 -0
- package/dist/EntityTransferFlowDetail-XEXM34XB.js +132 -0
- package/dist/EntityTransferFlowDetail-XEXM34XB.js.map +1 -0
- package/dist/EvalEngineConfig-CHC4IRN3.js +464 -0
- package/dist/EvalEngineConfig-CHC4IRN3.js.map +1 -0
- package/dist/EvalEngineFlowDetail-PUFRNO4U.js +4291 -0
- package/dist/EvalEngineFlowDetail-PUFRNO4U.js.map +1 -0
- package/dist/EvaluateBidConfig-OE4CM43G.js +151 -0
- package/dist/EvaluateBidConfig-OE4CM43G.js.map +1 -0
- package/dist/EvaluateBidFlowDetail-2S2N4YTW.js +564 -0
- package/dist/EvaluateBidFlowDetail-2S2N4YTW.js.map +1 -0
- package/dist/EvaluateClaimConfig-3D4F5LHU.js +297 -0
- package/dist/EvaluateClaimConfig-3D4F5LHU.js.map +1 -0
- package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js +2237 -0
- package/dist/EvaluateClaimFlowDetail-QYR7PJRD.js.map +1 -0
- package/dist/FormSubmitConfig-UFZYMLUN.js +59 -0
- package/dist/FormSubmitConfig-UFZYMLUN.js.map +1 -0
- package/dist/FormSubmitFlowDetail-IAHDJS6P.js +169 -0
- package/dist/FormSubmitFlowDetail-IAHDJS6P.js.map +1 -0
- package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js +166 -0
- package/dist/GovernanceAuthzExecFlowDetail-SQBGU5BX.js.map +1 -0
- package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js +88 -0
- package/dist/GovernanceAuthzGrantFlowDetail-DZPNLANT.js.map +1 -0
- package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js +88 -0
- package/dist/GovernanceAuthzRevokeFlowDetail-3JZ4IUJG.js.map +1 -0
- package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js +83 -0
- package/dist/GovernanceChainVoteFlowDetail-475UDNG6.js.map +1 -0
- package/dist/GovernanceConfigConfig-V3WM4WBP.js +30 -0
- package/dist/GovernanceConfigConfig-V3WM4WBP.js.map +1 -0
- package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js +267 -0
- package/dist/GovernanceConfigFlowDetail-SQ5PPDRX.js.map +1 -0
- package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js +113 -0
- package/dist/GovernanceContractExecuteFlowDetail-H2ZV6W2E.js.map +1 -0
- package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js +144 -0
- package/dist/GovernanceContractInstantiateFlowDetail-YJJMGM54.js.map +1 -0
- package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js +72 -0
- package/dist/GovernanceContractManageCw20FlowDetail-OCBMW3YJ.js.map +1 -0
- package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js +104 -0
- package/dist/GovernanceContractMigrateFlowDetail-JDNIKTT3.js.map +1 -0
- package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js +68 -0
- package/dist/GovernanceContractUpdateAdminFlowDetail-SZBOAOCC.js.map +1 -0
- package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js +78 -0
- package/dist/GovernanceCustomMessageFlowDetail-CXD4ZATO.js.map +1 -0
- package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js +98 -0
- package/dist/GovernanceDaoAcceptToMarketplaceFlowDetail-Q6ZBNY7Z.js.map +1 -0
- package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js +94 -0
- package/dist/GovernanceDaoAdminExecFlowDetail-JAEAY2US.js.map +1 -0
- package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js +96 -0
- package/dist/GovernanceDaoCreateEntityFlowDetail-7RVNTVAB.js.map +1 -0
- package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js +68 -0
- package/dist/GovernanceDaoJoinFlowDetail-XYCTCNHO.js.map +1 -0
- package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js +93 -0
- package/dist/GovernanceDaoManageStorageFlowDetail-LMLYLYYC.js.map +1 -0
- package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js +84 -0
- package/dist/GovernanceDaoManageSubDaosFlowDetail-YUFQ67JN.js.map +1 -0
- package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js +104 -0
- package/dist/GovernanceDaoUpdateInfoFlowDetail-G5FIBY4L.js.map +1 -0
- package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js +42 -0
- package/dist/GovernanceMemberProposalConfig-IGPXEFDB.js.map +1 -0
- package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js +240 -0
- package/dist/GovernanceMemberProposalFlowDetail-T3VURONF.js.map +1 -0
- package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js +69 -0
- package/dist/GovernanceNftBurnFlowDetail-AG4I2O7H.js.map +1 -0
- package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js +71 -0
- package/dist/GovernanceNftManageCollectionsFlowDetail-UAAGO3Q6.js.map +1 -0
- package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js +130 -0
- package/dist/GovernanceNftTransferFlowDetail-KXM7DTOV.js.map +1 -0
- package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js +42 -0
- package/dist/GovernanceSettingsProposalConfig-4SLJTBLW.js.map +1 -0
- package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js +165 -0
- package/dist/GovernanceSettingsProposalFlowDetail-VFZPSCLR.js.map +1 -0
- package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js +123 -0
- package/dist/GovernanceStakingStakeFlowDetail-ULLJ7FLM.js.map +1 -0
- package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js +84 -0
- package/dist/GovernanceStakingStakeToGroupFlowDetail-CSPKJA3H.js.map +1 -0
- package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js +111 -0
- package/dist/GovernanceSubmissionConfigProposalFlowDetail-MZCPSZF2.js.map +1 -0
- package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js +66 -0
- package/dist/GovernanceTransactionMintFlowDetail-Y2WRAODH.js.map +1 -0
- package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js +133 -0
- package/dist/GovernanceTransactionPerformTokenSwapFlowDetail-GEK6PMMI.js.map +1 -0
- package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js +42 -0
- package/dist/GovernanceTransactionSendFundsConfig-VBKMLSF3.js.map +1 -0
- package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js +182 -0
- package/dist/GovernanceTransactionSendFundsFlowDetail-5TZB64VL.js.map +1 -0
- package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js +155 -0
- package/dist/GovernanceTransactionSendGroupTokenFlowDetail-EGOWVZM2.js.map +1 -0
- package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js +56 -0
- package/dist/GovernanceTransactionWithdrawTokenSwapFlowDetail-6XWVO5O6.js.map +1 -0
- package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js +117 -0
- package/dist/GovernanceValidatorActionsFlowDetail-ZMLPAFUB.js.map +1 -0
- package/dist/HarvestConfig-AIGOGBFR.js +56 -0
- package/dist/HarvestConfig-AIGOGBFR.js.map +1 -0
- package/dist/HarvestFlowDetail-X3RUH3X3.js +131 -0
- package/dist/HarvestFlowDetail-X3RUH3X3.js.map +1 -0
- package/dist/HttpRequestConfig-OQEJIIJY.js +194 -0
- package/dist/HttpRequestConfig-OQEJIIJY.js.map +1 -0
- package/dist/HttpRequestFlowDetail-JVLV533Z.js +116 -0
- package/dist/HttpRequestFlowDetail-JVLV533Z.js.map +1 -0
- package/dist/IdentityCreateConfig-ZBUOJ6AL.js +94 -0
- package/dist/IdentityCreateConfig-ZBUOJ6AL.js.map +1 -0
- package/dist/IdentityCreateFlowDetail-WGKO43IH.js +83 -0
- package/dist/IdentityCreateFlowDetail-WGKO43IH.js.map +1 -0
- package/dist/IidCreateConfig-RRV2DYXI.js +75 -0
- package/dist/IidCreateConfig-RRV2DYXI.js.map +1 -0
- package/dist/IidCreateFlowDetail-6M32S6XS.js +57 -0
- package/dist/IidCreateFlowDetail-6M32S6XS.js.map +1 -0
- package/dist/KycVerifyConfig-VCG65K5K.js +65 -0
- package/dist/KycVerifyConfig-VCG65K5K.js.map +1 -0
- package/dist/KycVerifyFlowDetail-EWOMXSD3.js +421 -0
- package/dist/KycVerifyFlowDetail-EWOMXSD3.js.map +1 -0
- package/dist/ListDomainFlowsConfig-3JZEPTOJ.js +37 -0
- package/dist/ListDomainFlowsConfig-3JZEPTOJ.js.map +1 -0
- package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js +257 -0
- package/dist/ListDomainFlowsFlowDetail-XX5AXDZZ.js.map +1 -0
- package/dist/LoadBatchesConfig-IMODIWRT.js +38 -0
- package/dist/LoadBatchesConfig-IMODIWRT.js.map +1 -0
- package/dist/LoadBatchesFlowDetail-GB24T76O.js +101 -0
- package/dist/LoadBatchesFlowDetail-GB24T76O.js.map +1 -0
- package/dist/MatrixDmConfig-NBII27CS.js +120 -0
- package/dist/MatrixDmConfig-NBII27CS.js.map +1 -0
- package/dist/MatrixRegisterConfig-N2U4FBYF.js +62 -0
- package/dist/MatrixRegisterConfig-N2U4FBYF.js.map +1 -0
- package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js +86 -0
- package/dist/MatrixRegisterFlowDetail-D5YNL5QX.js.map +1 -0
- package/dist/MemberMultiSelectConfig-E7WUB2WD.js +30 -0
- package/dist/MemberMultiSelectConfig-E7WUB2WD.js.map +1 -0
- package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js +392 -0
- package/dist/MemberMultiSelectFlowDetail-6C4ZMSDR.js.map +1 -0
- package/dist/OracleConfig-R7TDTTKN.js +56 -0
- package/dist/OracleConfig-R7TDTTKN.js.map +1 -0
- package/dist/OracleConfigureOracleConfig-QFF74X3N.js +198 -0
- package/dist/OracleConfigureOracleConfig-QFF74X3N.js.map +1 -0
- package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js +255 -0
- package/dist/OracleConfigureOracleFlowDetail-73BHAN76.js.map +1 -0
- package/dist/OracleContractConfig-PHY5L7W2.js +38 -0
- package/dist/OracleContractConfig-PHY5L7W2.js.map +1 -0
- package/dist/OracleContractFlowDetail-M3PM4AU4.js +78 -0
- package/dist/OracleContractFlowDetail-M3PM4AU4.js.map +1 -0
- package/dist/OracleDeployConfig-QBG76ATZ.js +10 -0
- package/dist/OracleDeployConfig-QBG76ATZ.js.map +1 -0
- package/dist/OracleDeployFlowDetail-WKTMD2AD.js +231 -0
- package/dist/OracleDeployFlowDetail-WKTMD2AD.js.map +1 -0
- package/dist/OracleDeploySetupConfig-75XPGFJQ.js +10 -0
- package/dist/OracleDeploySetupConfig-75XPGFJQ.js.map +1 -0
- package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js +165 -0
- package/dist/OracleDeploySetupFlowDetail-R3BQ7EAU.js.map +1 -0
- package/dist/OracleDeployStartConfig-NA6GZ4VQ.js +10 -0
- package/dist/OracleDeployStartConfig-NA6GZ4VQ.js.map +1 -0
- package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js +89 -0
- package/dist/OracleDeployStartFlowDetail-EL3CMDMG.js.map +1 -0
- package/dist/OracleFlowDetail-5JCJK3GH.js +76 -0
- package/dist/OracleFlowDetail-5JCJK3GH.js.map +1 -0
- package/dist/OraclePromptConfig-YBRESISH.js +39 -0
- package/dist/OraclePromptConfig-YBRESISH.js.map +1 -0
- package/dist/OraclePromptFlowDetail-O3XNK7HY.js +112 -0
- package/dist/OraclePromptFlowDetail-O3XNK7HY.js.map +1 -0
- package/dist/OracleStoreConfigConfig-TUZWTJMA.js +134 -0
- package/dist/OracleStoreConfigConfig-TUZWTJMA.js.map +1 -0
- package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js +99 -0
- package/dist/OracleStoreConfigFlowDetail-Q6AUUSUL.js.map +1 -0
- package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js +198 -0
- package/dist/OracleStoreSecretsAndConfigConfig-SZPYEK7U.js.map +1 -0
- package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js +220 -0
- package/dist/OracleStoreSecretsAndConfigFlowDetail-BFV2EHLT.js.map +1 -0
- package/dist/OracleStoreSecretsConfig-PQMF7LFT.js +191 -0
- package/dist/OracleStoreSecretsConfig-PQMF7LFT.js.map +1 -0
- package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js +197 -0
- package/dist/OracleStoreSecretsFlowDetail-DNNOPHVA.js.map +1 -0
- package/dist/ProposalCreateConfig-U5IHZNT7.js +161 -0
- package/dist/ProposalCreateConfig-U5IHZNT7.js.map +1 -0
- package/dist/ProposalCreateFlowDetail-4VZZPAWH.js +235 -0
- package/dist/ProposalCreateFlowDetail-4VZZPAWH.js.map +1 -0
- package/dist/ProposalVoteConfig-MH4MU7SL.js +150 -0
- package/dist/ProposalVoteConfig-MH4MU7SL.js.map +1 -0
- package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js +280 -0
- package/dist/ProposalVoteFlowDetail-IJJ3OHAB.js.map +1 -0
- package/dist/ProtocolSelectConfig-S5U3P6K7.js +48 -0
- package/dist/ProtocolSelectConfig-S5U3P6K7.js.map +1 -0
- package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js +116 -0
- package/dist/ProtocolSelectFlowDetail-XBSJIEIH.js.map +1 -0
- package/dist/RetireConfig-MV37WWZ6.js +59 -0
- package/dist/RetireConfig-MV37WWZ6.js.map +1 -0
- package/dist/RetireFlowDetail-VZ5O4SXI.js +147 -0
- package/dist/RetireFlowDetail-VZ5O4SXI.js.map +1 -0
- package/dist/SandboxProvisionConfig-ZGG4IRHM.js +46 -0
- package/dist/SandboxProvisionConfig-ZGG4IRHM.js.map +1 -0
- package/dist/SandboxProvisionFlowDetail-RUY64INV.js +79 -0
- package/dist/SandboxProvisionFlowDetail-RUY64INV.js.map +1 -0
- package/dist/WalletFundConfig-CMM3EP3B.js +117 -0
- package/dist/WalletFundConfig-CMM3EP3B.js.map +1 -0
- package/dist/WalletFundFlowDetail-TXWCZA4K.js +279 -0
- package/dist/WalletFundFlowDetail-TXWCZA4K.js.map +1 -0
- package/dist/WalletGenerateAndFundConfig-364RSEND.js +10 -0
- package/dist/WalletGenerateAndFundConfig-364RSEND.js.map +1 -0
- package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js +54 -0
- package/dist/WalletGenerateAndFundFlowDetail-C2LZW3NO.js.map +1 -0
- package/dist/WalletGenerateConfig-YYLCS65G.js +10 -0
- package/dist/WalletGenerateConfig-YYLCS65G.js.map +1 -0
- package/dist/WalletGenerateFlowDetail-CQCNDGJA.js +53 -0
- package/dist/WalletGenerateFlowDetail-CQCNDGJA.js.map +1 -0
- package/dist/XeroContactCreateConfig-OWG5PA3B.js +102 -0
- package/dist/XeroContactCreateConfig-OWG5PA3B.js.map +1 -0
- package/dist/XeroContactCreateFlowDetail-6MAINCF6.js +127 -0
- package/dist/XeroContactCreateFlowDetail-6MAINCF6.js.map +1 -0
- package/dist/XeroInvoiceCreateConfig-O74RUSZM.js +403 -0
- package/dist/XeroInvoiceCreateConfig-O74RUSZM.js.map +1 -0
- package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js +631 -0
- package/dist/XeroInvoiceCreateFlowDetail-UL7KS6CZ.js.map +1 -0
- package/dist/XeroInvoiceListConfig-UR3GONBJ.js +113 -0
- package/dist/XeroInvoiceListConfig-UR3GONBJ.js.map +1 -0
- package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js +58 -0
- package/dist/XeroInvoiceListFlowDetail-LYHODWH6.js.map +1 -0
- package/dist/XeroPaymentCreateConfig-RPMAIK6E.js +116 -0
- package/dist/XeroPaymentCreateConfig-RPMAIK6E.js.map +1 -0
- package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js +573 -0
- package/dist/XeroPaymentCreateFlowDetail-CF35MVIM.js.map +1 -0
- package/dist/action-manifest.json +2091 -393
- package/dist/chunk-2GAYKKTL.js +9 -0
- package/dist/chunk-2GAYKKTL.js.map +1 -0
- package/dist/chunk-2WPEATI7.js +315 -0
- package/dist/chunk-2WPEATI7.js.map +1 -0
- package/dist/chunk-3O42FYT3.js +3333 -0
- package/dist/chunk-3O42FYT3.js.map +1 -0
- package/dist/chunk-3TUYY4HK.js +20 -0
- package/dist/chunk-3TUYY4HK.js.map +1 -0
- package/dist/chunk-3XSLBJYI.js +554 -0
- package/dist/chunk-3XSLBJYI.js.map +1 -0
- package/dist/chunk-4DGCCXD6.js +710 -0
- package/dist/chunk-4DGCCXD6.js.map +1 -0
- package/dist/chunk-4NAFQF6V.js +11 -0
- package/dist/chunk-4NAFQF6V.js.map +1 -0
- package/dist/chunk-4PONO4US.js +799 -0
- package/dist/chunk-4PONO4US.js.map +1 -0
- package/dist/chunk-4TMOIK5M.js +21 -0
- package/dist/chunk-4TMOIK5M.js.map +1 -0
- package/dist/chunk-5IH3VC5I.js +102 -0
- package/dist/chunk-5IH3VC5I.js.map +1 -0
- package/dist/chunk-5NTKDOP6.js +89 -0
- package/dist/chunk-5NTKDOP6.js.map +1 -0
- package/dist/chunk-5O2SFRGU.js +18 -0
- package/dist/chunk-5O2SFRGU.js.map +1 -0
- package/dist/chunk-632JLECF.js +55 -0
- package/dist/chunk-632JLECF.js.map +1 -0
- package/dist/chunk-676HDB7K.js +95 -0
- package/dist/chunk-676HDB7K.js.map +1 -0
- package/dist/chunk-6ESTNTSH.js +223 -0
- package/dist/chunk-6ESTNTSH.js.map +1 -0
- package/dist/chunk-6GKJR52N.js +15 -0
- package/dist/chunk-6GKJR52N.js.map +1 -0
- package/dist/chunk-6L4ZIKYU.js +23 -0
- package/dist/chunk-6L4ZIKYU.js.map +1 -0
- package/dist/chunk-76YX5R4L.js +11 -0
- package/dist/chunk-76YX5R4L.js.map +1 -0
- package/dist/chunk-7J3GFMN3.js +32 -0
- package/dist/chunk-7J3GFMN3.js.map +1 -0
- package/dist/chunk-7LSARC2G.js +102 -0
- package/dist/chunk-7LSARC2G.js.map +1 -0
- package/dist/chunk-7W7UUUIE.js +609 -0
- package/dist/chunk-7W7UUUIE.js.map +1 -0
- package/dist/chunk-7ZLW7H37.js +21 -0
- package/dist/chunk-7ZLW7H37.js.map +1 -0
- package/dist/chunk-AAZHI22G.js +18 -0
- package/dist/chunk-AAZHI22G.js.map +1 -0
- package/dist/chunk-ACNE455I.js +76 -0
- package/dist/chunk-ACNE455I.js.map +1 -0
- package/dist/chunk-BKLSSLPZ.js +27 -0
- package/dist/chunk-BKLSSLPZ.js.map +1 -0
- package/dist/chunk-BZ7UPUTY.js +417 -0
- package/dist/chunk-BZ7UPUTY.js.map +1 -0
- package/dist/chunk-CGFAICUE.js +28 -0
- package/dist/chunk-CGFAICUE.js.map +1 -0
- package/dist/chunk-CMCEWQ3C.js +19 -0
- package/dist/chunk-CMCEWQ3C.js.map +1 -0
- package/dist/chunk-CP4UV436.js +41 -0
- package/dist/chunk-CP4UV436.js.map +1 -0
- package/dist/chunk-D2CQPNQG.js +27508 -0
- package/dist/chunk-D2CQPNQG.js.map +1 -0
- package/dist/chunk-DIQRZP7Z.js +51 -0
- package/dist/chunk-DIQRZP7Z.js.map +1 -0
- package/dist/chunk-EBFFDDAS.js +13 -0
- package/dist/chunk-EBFFDDAS.js.map +1 -0
- package/dist/chunk-EGVS23DR.js +85 -0
- package/dist/chunk-EGVS23DR.js.map +1 -0
- package/dist/chunk-EKBQ7K4N.js +15 -0
- package/dist/chunk-EKBQ7K4N.js.map +1 -0
- package/dist/chunk-EKQCZRAN.js +24 -0
- package/dist/chunk-EKQCZRAN.js.map +1 -0
- package/dist/chunk-EYKZIZ5J.js +48 -0
- package/dist/chunk-EYKZIZ5J.js.map +1 -0
- package/dist/{chunk-NEOPTPDF.js → chunk-F4PTFXZH.js} +11554 -22046
- package/dist/chunk-F4PTFXZH.js.map +1 -0
- package/dist/chunk-FFYZXA75.js +58 -0
- package/dist/chunk-FFYZXA75.js.map +1 -0
- package/dist/chunk-GFGDHPZ2.js +22 -0
- package/dist/chunk-GFGDHPZ2.js.map +1 -0
- package/dist/chunk-GR3CDFID.js +18 -0
- package/dist/chunk-GR3CDFID.js.map +1 -0
- package/dist/chunk-GR4SIU32.js +104 -0
- package/dist/chunk-GR4SIU32.js.map +1 -0
- package/dist/chunk-H5E46IIS.js +18 -0
- package/dist/chunk-H5E46IIS.js.map +1 -0
- package/dist/chunk-HFHVAMZL.js +22 -0
- package/dist/chunk-HFHVAMZL.js.map +1 -0
- package/dist/chunk-HRRI4BLF.js +4456 -0
- package/dist/chunk-HRRI4BLF.js.map +1 -0
- package/dist/chunk-HT6L7A5M.js +12 -0
- package/dist/chunk-HT6L7A5M.js.map +1 -0
- package/dist/chunk-I2FPFISM.js +301 -0
- package/dist/chunk-I2FPFISM.js.map +1 -0
- package/dist/chunk-IADAQJDH.js +28 -0
- package/dist/chunk-IADAQJDH.js.map +1 -0
- package/dist/chunk-IBOBCMQQ.js +99 -0
- package/dist/chunk-IBOBCMQQ.js.map +1 -0
- package/dist/chunk-IFWKRCFF.js +56 -0
- package/dist/chunk-IFWKRCFF.js.map +1 -0
- package/dist/chunk-IH4T7V4C.js +40 -0
- package/dist/chunk-IH4T7V4C.js.map +1 -0
- package/dist/chunk-IIIZZ4E4.js +1679 -0
- package/dist/chunk-IIIZZ4E4.js.map +1 -0
- package/dist/chunk-ILSFU3WD.js +83 -0
- package/dist/chunk-ILSFU3WD.js.map +1 -0
- package/dist/chunk-IX3VBV3L.js +43 -0
- package/dist/chunk-IX3VBV3L.js.map +1 -0
- package/dist/chunk-JBBFSORW.js +846 -0
- package/dist/chunk-JBBFSORW.js.map +1 -0
- package/dist/chunk-JIDTNKKL.js +1183 -0
- package/dist/chunk-JIDTNKKL.js.map +1 -0
- package/dist/chunk-JSPE6NGZ.js +22 -0
- package/dist/chunk-JSPE6NGZ.js.map +1 -0
- package/dist/chunk-JVROGQ7Q.js +150 -0
- package/dist/chunk-JVROGQ7Q.js.map +1 -0
- package/dist/chunk-K4WUMWNJ.js +32 -0
- package/dist/chunk-K4WUMWNJ.js.map +1 -0
- package/dist/chunk-K74XQ4Q5.js +11 -0
- package/dist/chunk-K74XQ4Q5.js.map +1 -0
- package/dist/chunk-KLLMJ4U3.js +22 -0
- package/dist/chunk-KLLMJ4U3.js.map +1 -0
- package/dist/chunk-LTKVCJ2E.js +27 -0
- package/dist/chunk-LTKVCJ2E.js.map +1 -0
- package/dist/chunk-M36DJTFZ.js +34 -0
- package/dist/chunk-M36DJTFZ.js.map +1 -0
- package/dist/chunk-MHM52LCJ.js +154 -0
- package/dist/chunk-MHM52LCJ.js.map +1 -0
- package/dist/chunk-MQCDMHRZ.js +59 -0
- package/dist/chunk-MQCDMHRZ.js.map +1 -0
- package/dist/chunk-N3ORMGAI.js +348 -0
- package/dist/chunk-N3ORMGAI.js.map +1 -0
- package/dist/chunk-NCSGIRRQ.js +28 -0
- package/dist/chunk-NCSGIRRQ.js.map +1 -0
- package/dist/chunk-NIXT2SBH.js +1423 -0
- package/dist/chunk-NIXT2SBH.js.map +1 -0
- package/dist/chunk-NJAII6CO.js +148 -0
- package/dist/chunk-NJAII6CO.js.map +1 -0
- package/dist/chunk-NKE4TL43.js +92 -0
- package/dist/chunk-NKE4TL43.js.map +1 -0
- package/dist/chunk-NZ7AXA7B.js +1 -0
- package/dist/chunk-NZ7AXA7B.js.map +1 -0
- package/dist/chunk-OCAYEGI2.js +26 -0
- package/dist/chunk-OCAYEGI2.js.map +1 -0
- package/dist/chunk-OMLI45ER.js +90 -0
- package/dist/chunk-OMLI45ER.js.map +1 -0
- package/dist/chunk-P7OBLJAG.js +88 -0
- package/dist/chunk-P7OBLJAG.js.map +1 -0
- package/dist/chunk-PAY3CBWL.js +2321 -0
- package/dist/chunk-PAY3CBWL.js.map +1 -0
- package/dist/chunk-PFF6VY35.js +257 -0
- package/dist/chunk-PFF6VY35.js.map +1 -0
- package/dist/chunk-PYNDJDWZ.js +1758 -0
- package/dist/chunk-PYNDJDWZ.js.map +1 -0
- package/dist/chunk-QDQ6UMMN.js +53 -0
- package/dist/chunk-QDQ6UMMN.js.map +1 -0
- package/dist/chunk-QGT3G2XG.js +24 -0
- package/dist/chunk-QGT3G2XG.js.map +1 -0
- package/dist/chunk-QZYCJ2GZ.js +55 -0
- package/dist/chunk-QZYCJ2GZ.js.map +1 -0
- package/dist/chunk-REZ7RFSA.js +124 -0
- package/dist/chunk-REZ7RFSA.js.map +1 -0
- package/dist/chunk-RRYBAE6E.js +2449 -0
- package/dist/chunk-RRYBAE6E.js.map +1 -0
- package/dist/chunk-RWUZOB62.js +34 -0
- package/dist/chunk-RWUZOB62.js.map +1 -0
- package/dist/chunk-SB5UCPZH.js +116 -0
- package/dist/chunk-SB5UCPZH.js.map +1 -0
- package/dist/chunk-SEJJ7CRI.js +99 -0
- package/dist/chunk-SEJJ7CRI.js.map +1 -0
- package/dist/chunk-SHBFGRPV.js +45 -0
- package/dist/chunk-SHBFGRPV.js.map +1 -0
- package/dist/chunk-SOFJ4GC5.js +45 -0
- package/dist/chunk-SOFJ4GC5.js.map +1 -0
- package/dist/chunk-STH2HPZK.js +44 -0
- package/dist/chunk-STH2HPZK.js.map +1 -0
- package/dist/chunk-TK3JNKME.js +28 -0
- package/dist/chunk-TK3JNKME.js.map +1 -0
- package/dist/chunk-TMONHFE3.js +46 -0
- package/dist/chunk-TMONHFE3.js.map +1 -0
- package/dist/chunk-TR4KO3AG.js +44 -0
- package/dist/chunk-TR4KO3AG.js.map +1 -0
- package/dist/chunk-TS2LNBF2.js +68 -0
- package/dist/chunk-TS2LNBF2.js.map +1 -0
- package/dist/chunk-UZUMBFPP.js +26 -0
- package/dist/chunk-UZUMBFPP.js.map +1 -0
- package/dist/chunk-VRZ5LMOW.js +176 -0
- package/dist/chunk-VRZ5LMOW.js.map +1 -0
- package/dist/chunk-WLGGY6Z6.js +75 -0
- package/dist/chunk-WLGGY6Z6.js.map +1 -0
- package/dist/chunk-WO7V6ZNC.js +11 -0
- package/dist/chunk-WO7V6ZNC.js.map +1 -0
- package/dist/chunk-WXSENSRP.js +64 -0
- package/dist/chunk-WXSENSRP.js.map +1 -0
- package/dist/chunk-XEKBZ2SA.js +19 -0
- package/dist/chunk-XEKBZ2SA.js.map +1 -0
- package/dist/chunk-XPBKU3JX.js +61 -0
- package/dist/chunk-XPBKU3JX.js.map +1 -0
- package/dist/chunk-XRYXBXWH.js +24 -0
- package/dist/chunk-XRYXBXWH.js.map +1 -0
- package/dist/chunk-XVA7QRVH.js +22 -0
- package/dist/chunk-XVA7QRVH.js.map +1 -0
- package/dist/chunk-YCTHHBSS.js +37 -0
- package/dist/chunk-YCTHHBSS.js.map +1 -0
- package/dist/chunk-YHPWD5NE.js +70 -0
- package/dist/chunk-YHPWD5NE.js.map +1 -0
- package/dist/chunk-YLNEKJQ5.js +126 -0
- package/dist/chunk-YLNEKJQ5.js.map +1 -0
- package/dist/chunk-YN4CEKCF.js +73 -0
- package/dist/chunk-YN4CEKCF.js.map +1 -0
- package/dist/chunk-YYNMESIF.js +17 -0
- package/dist/chunk-YYNMESIF.js.map +1 -0
- package/dist/chunk-Z6PRMCV6.js +1 -0
- package/dist/chunk-Z6PRMCV6.js.map +1 -0
- package/dist/chunk-ZDNW6VQG.js +11 -0
- package/dist/chunk-ZDNW6VQG.js.map +1 -0
- package/dist/chunk-ZP4D73DO.js +36 -0
- package/dist/chunk-ZP4D73DO.js.map +1 -0
- package/dist/chunk-ZUATADUV.js +26 -0
- package/dist/chunk-ZUATADUV.js.map +1 -0
- package/dist/{connections-1NtNQrsY.d.ts → connections-CEcurtWI.d.ts} +74 -9
- package/dist/core/index.cjs +14041 -6973
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +422 -138
- package/dist/core/index.js +425 -183
- package/dist/core/index.js.map +1 -1
- package/dist/flow-vnext/index.cjs +2842 -0
- package/dist/flow-vnext/index.cjs.map +1 -0
- package/dist/flow-vnext/index.d.ts +3 -0
- package/dist/flow-vnext/index.js +119 -0
- package/dist/flow-vnext/index.js.map +1 -0
- package/dist/{graphql-client-Bn0tN049.d.ts → graphql-client-B2tREsx6.d.ts} +3 -1
- package/dist/index-b9xxXGFs.d.ts +1230 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +202 -37
- package/dist/index.js.map +1 -1
- package/dist/legacy-BpgIqaQ5.d.ts +14 -0
- package/dist/mantine/index.d.ts +7 -4
- package/dist/mantine/index.js +84 -30
- package/dist/mantine/index.js.map +1 -1
- package/dist/{runtime-BFwvCQDF.d.ts → types-Dqk5MTfW.d.ts} +6096 -5386
- package/package.json +12 -2
- package/dist/chunk-5JF23UP3.js +0 -59687
- package/dist/chunk-5JF23UP3.js.map +0 -1
- package/dist/chunk-A4CWC4AG.js +0 -374
- package/dist/chunk-A4CWC4AG.js.map +0 -1
- package/dist/chunk-NEOPTPDF.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/lib/actionRegistry/inputRequirements.ts","../src/core/lib/domainCard/transformSurveyToCredentialSubject.ts","../src/core/lib/domainCard/buildVerifiableCredential.ts","../src/core/lib/domainCard/extractSurveyAnswersTemplate.ts","../src/core/lib/domainCard/buildLinkedEntityResource.ts","../src/core/lib/domainCard/defaultSurvey.ts","../src/core/lib/actionRegistry/actions/domainSign.ts"],"sourcesContent":["import { getAction } from './registry';\nimport { warnOnce } from '../warnOnce';\n\n/**\n * Required-input evaluation for action types — the machine-readable mirror of\n * the throw-preamble in each action's `run()`.\n *\n * External orchestrators (the flow-manager oracle, third-party agentic Oracle\n * actors) call {@link getMissingActionInputs} BEFORE queuing execution so a\n * missing input becomes a prompt to a human instead of a failed run. The\n * editor's registry is the single source of truth for requiredness: actions\n * with unconditional requirements derive from `inputSchema.required`; actions\n * whose requiredness depends on other inputs define\n * {@link ActionDefinition.getMissingInputs} next to their `run()`.\n *\n * Scope: presence only. A field can pass here (present, non-blank) and still\n * fail value validation (ranges, formats, duplicates) inside `run()` — `run()`\n * remains the authority on validity.\n */\n\n/**\n * Whether a value counts as \"missing\" for a required input: `null`/`undefined`,\n * a string that is blank after trimming, or an empty array. Objects and other\n * primitives (including `false` and `0`) count as present.\n */\nexport function isBlankInputValue(value: unknown): boolean {\n if (value == null) return true;\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\n/**\n * Coerce an input that `run()` accepts as either an object or a JSON string\n * (e.g. `domainCardData`) into an object, or `undefined` when it is neither.\n */\nexport function parseMaybeJsonObject(value: unknown): Record<string, unknown> | undefined {\n if (value && typeof value === 'object' && !Array.isArray(value)) return value as Record<string, unknown>;\n if (typeof value === 'string' && value.trim()) {\n try {\n const parsed = JSON.parse(value);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) return parsed as Record<string, unknown>;\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\nfunction dedupe(values: string[]): string[] {\n return Array.from(new Set(values.filter((value) => typeof value === 'string' && value.length > 0)));\n}\n\n/**\n * Names of the inputs still missing or blank for `actionType` given a\n * fully-merged inputs object (empty array = ready to execute, as far as\n * presence goes). Resolves legacy aliases through the registry; unknown or\n * alias-less action types report nothing missing.\n *\n * Prefers the action's `getMissingInputs` (conditional requiredness), falling\n * back to `inputSchema.required` with {@link isBlankInputValue} semantics.\n * A crashing `getMissingInputs` must not break an orchestrator tick: it is\n * absorbed (warn-once) and reports nothing missing, so the real error\n * surfaces from `run()` instead.\n */\nexport function getMissingActionInputs(actionType: string | undefined | null, inputs: Record<string, unknown> | undefined): string[] {\n if (!actionType) return [];\n const action = getAction(actionType);\n if (!action) return [];\n\n const merged = inputs ?? {};\n if (action.getMissingInputs) {\n try {\n return dedupe(action.getMissingInputs(merged) || []);\n } catch (error) {\n warnOnce(\n `missing-inputs:${action.type}`,\n `[flow-config] action ${action.type}: getMissingInputs threw (${error instanceof Error ? error.message : String(error)}); reporting no missing inputs`\n );\n return [];\n }\n }\n\n const schema = action.inputSchema as { required?: unknown } | undefined;\n const required = Array.isArray(schema?.required) ? schema.required.filter((name): name is string => typeof name === 'string') : [];\n return dedupe(required.filter((name) => isBlankInputValue(merged[name])));\n}\n","/**\n * Transforms survey data from the Domain Creator survey into a W3C Verifiable Credential\n * credentialSubject structure compatible with ixo:DomainCard schema.\n */\n\nexport interface DomainCardCredentialSubject {\n id: string;\n type: string[];\n additionalType?: string[];\n name: string;\n alternateName?: string[];\n description: string;\n url?: string;\n sameAs?: string[];\n logo?: {\n type: string;\n id: string;\n contentUrl: string;\n };\n image?: Array<{\n type: string;\n id: string;\n contentUrl: string;\n }>;\n keywords?: string[];\n knowsAbout?: string[];\n address?: {\n type: string;\n streetAddress?: string;\n addressLocality?: string;\n addressRegion?: string;\n postalCode?: string;\n addressCountry?: string;\n };\n areaServed?: {\n type: string;\n name: string;\n };\n contactPoint?: Array<{\n type: string;\n contactType: string;\n email?: string;\n telephone?: string;\n availableLanguage?: string[];\n }>;\n composition?: {\n type: string;\n hasPart?: Array<{\n type: string;\n id?: string;\n name?: string;\n description?: string;\n url?: string;\n creator?: {\n type: string;\n name: string;\n };\n }>;\n subjectOf?: Array<{\n type: string;\n name: string;\n url?: string;\n author?: {\n type: string;\n name: string;\n };\n }>;\n };\n makesOffer?: Array<{\n type: string;\n name?: string;\n description?: string;\n itemOffered?: {\n type: string;\n name?: string;\n url?: string;\n };\n }>;\n relationships?: {\n memberOf?: Array<{\n type: string;\n name: string;\n }>;\n 'prov:wasAssociatedWith'?: Array<{\n type: string;\n name: string;\n url?: string;\n }>;\n funding?: Array<{\n type: string;\n funder?: {\n type: string;\n name: string;\n };\n amount?: {\n type: string;\n currency: string;\n value: string;\n };\n }>;\n };\n agents?: Array<{\n type: string;\n id?: string;\n name?: string;\n description?: string;\n }>;\n credentials?: Array<{\n type: string;\n id?: string;\n name?: string;\n description?: string;\n }>;\n attributes?: Array<{\n '@type': string;\n '@id': string;\n name: string;\n value: string;\n }>;\n project?: {\n type?: string;\n name?: string;\n description?: string;\n hadObjective?: string[];\n plannedStart?: string;\n plannedEnd?: string;\n wasFundedThrough?: Array<{\n type: string;\n moneyAmount?: string;\n moneyCurrency?: string;\n agent?: {\n type: string;\n id?: string;\n name?: string;\n };\n }>;\n };\n researchProfile?: {\n type: string;\n 'ixo:seedQueries'?: string[];\n citation?: Array<{\n type: string;\n name: string;\n url?: string;\n publisher?: string;\n datePublished?: string;\n }>;\n 'ixo:embedding'?: {\n type: string;\n id: string;\n model: string;\n contentUrl: string;\n };\n dateModified?: string;\n };\n}\n\n/**\n * Helper to extract array items from paneldynamic survey fields\n */\nfunction extractPanelDynamicItems<T>(surveyData: Record<string, any>, panelName: string, itemMapper: (item: Record<string, any>) => T | null): T[] {\n const items = surveyData[panelName];\n if (!Array.isArray(items)) return [];\n return items.map(itemMapper).filter((item): item is T => item !== null);\n}\n\n/**\n * Parse comma-separated string into array of trimmed strings\n */\nfunction parseCommaSeparated(value: string | undefined): string[] {\n if (!value || typeof value !== 'string') return [];\n return value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\n/**\n * Parse language codes from comma-separated string\n */\nfunction parseLanguageCodes(value: string | undefined): string[] {\n return parseCommaSeparated(value);\n}\n\n/**\n * Build image object from URL\n */\nfunction buildImageObject(url: string | undefined): { type: string; id: string; contentUrl: string } | null {\n if (!url) return null;\n return {\n type: 'schema:ImageObject',\n id: url,\n contentUrl: url,\n };\n}\n\n/**\n * Main transformation function\n */\nexport function transformSurveyToCredentialSubject(surveyData: Record<string, any>, entityDid: string): DomainCardCredentialSubject {\n // Build type array from survey selections\n const types: string[] = [];\n if (surveyData['type_1']) types.push(`ixo:${surveyData['type_1']}`);\n if (surveyData['type_2']) types.push(surveyData['type_2']);\n\n // Build additionalType from daoType\n const additionalType: string[] = [];\n if (surveyData['daoType']) additionalType.push(surveyData['daoType']);\n\n // Extract alternate names from paneldynamic\n const alternateNames = extractPanelDynamicItems(surveyData, 'pannel_schema:alternateName', (item) => item['schema:alternateName'] || null);\n\n // Extract sameAs URLs from paneldynamic\n const sameAsUrls = extractPanelDynamicItems(surveyData, 'schema:sameAs', (item) => item['schema:sameAs.url'] || null);\n\n // Build logo from URL or uploaded file\n const logoUrl = surveyData['ixo:imageLogo_url'] || surveyData['ixo:imageLogo']?.[0]?.content;\n const logo = buildImageObject(logoUrl);\n\n // Build profile image from URL or uploaded file\n const profileImageUrl = surveyData['ixo:imageProfile_url'] || surveyData['ixo:imageProfile']?.[0]?.content;\n const profileImage = buildImageObject(profileImageUrl);\n\n // Parse keywords from comma-separated string\n const keywords = parseCommaSeparated(surveyData['schema:keywords']);\n\n // Extract knowsAbout from paneldynamic\n const knowsAbout = extractPanelDynamicItems(surveyData, 'pannel_ixo:knowsAbout', (item) => item['ixo:knowsAbout'] || null);\n\n // Build address object\n const hasAddressData =\n surveyData['schema:streetAddress'] ||\n surveyData['schema:addressLocality'] ||\n surveyData['schema:addressRegion'] ||\n surveyData['schema:postalCode'] ||\n surveyData['schema:addressCountry'];\n\n const address = hasAddressData\n ? {\n type: 'schema:PostalAddress',\n streetAddress: surveyData['schema:streetAddress'] || undefined,\n addressLocality: surveyData['schema:addressLocality'] || undefined,\n addressRegion: surveyData['schema:addressRegion'] || undefined,\n postalCode: surveyData['schema:postalCode'] || undefined,\n addressCountry: surveyData['schema:addressCountry'] || undefined,\n }\n : undefined;\n\n // Build areaServed\n const areaServed = surveyData['schema:AdministrativeArea']\n ? {\n type: 'schema:AdministrativeArea',\n name: surveyData['schema:AdministrativeArea'],\n }\n : undefined;\n\n // Extract contact points from paneldynamic\n const contactPoints = extractPanelDynamicItems(surveyData, 'pannel:schema_contactPoint', (item) => {\n if (!item['schema:contactType'] && !item['schema:email'] && !item['schema:telephone']) return null;\n return {\n type: 'schema:ContactPoint',\n contactType: item['schema:contactType'] || 'general',\n email: item['schema:email'] || undefined,\n telephone: item['schema:telephone'] || undefined,\n availableLanguage: parseLanguageCodes(item['schema:availableLanguage']),\n };\n });\n\n // Build composition object\n const hasParts = extractPanelDynamicItems(surveyData, 'schema:hasPart', (item) => {\n if (!item['schema:hasPart.name'] && !item['schema:hasPart.id']) return null;\n return {\n type: 'schema:CreativeWork',\n id: item['schema:hasPart.id'] || undefined,\n name: item['schema:hasPart.name'] || undefined,\n description: item['schema:hasPart.description'] || undefined,\n url: item['schema:hasPart.url'] || undefined,\n creator: item['schema:hasPart.creator.name']\n ? {\n type: 'schema:Organization',\n name: item['schema:hasPart.creator.name'],\n }\n : undefined,\n };\n });\n\n const subjectOf = extractPanelDynamicItems(surveyData, 'schema:subjectOf', (item) => {\n if (!item['schema:subjectOf.name']) return null;\n return {\n type: 'schema:CreativeWork',\n name: item['schema:subjectOf.name'],\n url: item['schema:subjectOf.url'] || undefined,\n author: item['schema:subjectOf.author.name']\n ? {\n type: 'schema:Organisation',\n name: item['schema:subjectOf.author.name'],\n }\n : undefined,\n };\n });\n\n const composition =\n hasParts.length > 0 || subjectOf.length > 0\n ? {\n type: 'schema:Collection',\n hasPart: hasParts.length > 0 ? hasParts : undefined,\n subjectOf: subjectOf.length > 0 ? subjectOf : undefined,\n }\n : undefined;\n\n // Extract makesOffer from paneldynamic\n const makesOffer = extractPanelDynamicItems(surveyData, 'schema:makesOffer', (item) => {\n if (!item['schema:itemOffered.name']) return null;\n return {\n type: 'schema:Offer',\n itemOffered: {\n type: item['schema:itemOffered.type'] === 'service' ? 'schema:Service' : 'schema:Product',\n name: item['schema:itemOffered.name'] || undefined,\n description: item['schema:itemOffered.description'] || undefined,\n url: item['schema:itemOffered.url'] || undefined,\n },\n };\n });\n\n // Build relationships object\n const memberOf = extractPanelDynamicItems(surveyData, 'schema:memberOf', (item) => {\n if (!item['schema:memberOf.name']) return null;\n return {\n type: 'schema:Organization',\n name: item['schema:memberOf.name'],\n };\n });\n\n const wasAssociatedWith = extractPanelDynamicItems(surveyData, 'schema:wasAssociatedWith', (item) => {\n if (!item['schema:wasAssociatedWith.name']) return null;\n return {\n type: 'schema:Organization',\n name: item['schema:wasAssociatedWith.name'],\n url: item['schema:wasAssociatedWith.url'] || undefined,\n };\n });\n\n const funding = extractPanelDynamicItems(surveyData, 'schema:funding', (item) => {\n if (!item['schema:funder.name']) return null;\n return {\n type: 'schema:MonetaryGrant',\n funder: {\n type: 'schema:Organization',\n name: item['schema:funder.name'],\n },\n amount:\n item['schema:amount.value'] || item['schema:amount.currency']\n ? {\n type: 'schema:MonetaryAmount',\n currency: item['schema:amount.currency'] || 'USD',\n value: item['schema:amount.value'] || '0',\n }\n : undefined,\n };\n });\n\n const relationships =\n memberOf.length > 0 || wasAssociatedWith.length > 0 || funding.length > 0\n ? {\n memberOf: memberOf.length > 0 ? memberOf : undefined,\n 'prov:wasAssociatedWith': wasAssociatedWith.length > 0 ? wasAssociatedWith : undefined,\n funding: funding.length > 0 ? funding : undefined,\n }\n : undefined;\n\n // Extract agents from paneldynamic\n const agents = extractPanelDynamicItems(surveyData, 'ixo:agentCard', (item) => {\n if (!item['ixo:agentCard.name'] && !item['ixo:agentCard.id']) return null;\n return {\n type: 'ixo:AgentCard',\n id: item['ixo:agentCard.id'] || undefined,\n name: item['ixo:agentCard.name'] || undefined,\n description: item['ixo:agentCard.description'] || undefined,\n };\n });\n\n // Extract credentials from paneldynamic\n const credentials = extractPanelDynamicItems(surveyData, 'ixo:verifiableCredential', (item) => {\n if (!item['schema:Name'] && !item['schema:ID']) return null;\n return {\n type: 'VerifiableCredential',\n id: item['schema:ID'] || undefined,\n name: item['schema:Name'] || undefined,\n description: item['schema:description'] || undefined,\n };\n });\n\n // Extract attributes from paneldynamic\n const attributes = extractPanelDynamicItems(surveyData, 'ixo:attribute', (item) => {\n if (!item['schema:name_2']) return null;\n return {\n '@type': 'ixo:Attribute',\n '@id': item['schema:ID_2'] || `attribute:${item['schema:name_2'].replace(/\\s+/g, '_').toLowerCase()}`,\n name: item['schema:name_2'],\n value: item['schema:description_2'] || '',\n };\n });\n\n // Build project object from paneldynamic\n const projects = extractPanelDynamicItems(surveyData, 'pannel_proj:project', (item) => {\n if (!item['proj:project.name']) return null;\n\n // Extract objectives\n const objectives = extractPanelDynamicItems(item, 'proj:project.hadObjective', (objItem) => objItem['proj:hadObjective'] || null);\n\n // Extract funding\n const projectFunding = extractPanelDynamicItems(item, 'proj:wasFundedThrough', (fundItem) => ({\n type: 'proj:FundingAssociation',\n moneyAmount: fundItem['proj:moneyAmount'] || undefined,\n moneyCurrency: fundItem['proj:moneyCurrency'] || undefined,\n agent:\n fundItem['prov.agent.name'] || fundItem['prov:agent.id']\n ? {\n type: 'prov:Agent',\n id: fundItem['prov:agent.id'] || undefined,\n name: fundItem['prov.agent.name'] || undefined,\n }\n : undefined,\n }));\n\n return {\n type: 'proj:Project',\n name: item['proj:project.name'],\n description: item['proj:project.description'] || undefined,\n hadObjective: objectives.length > 0 ? objectives : undefined,\n plannedStart: item['proj:plannedStart'] || undefined,\n plannedEnd: item['proj:plannedEnd'] || undefined,\n wasFundedThrough: projectFunding.length > 0 ? projectFunding : undefined,\n };\n });\n\n // Use first project if multiple (or combine as needed)\n const project = projects.length > 0 ? projects[0] : undefined;\n\n // Build research profile\n const seedQueries = extractPanelDynamicItems(surveyData, 'ixo:ResearchProfile', (item) => item['ixo:seedQueries'] || null);\n\n const citations = extractPanelDynamicItems(surveyData, 'schema:creativeWork', (item) => {\n if (!item['schema:creativeWork.name']) return null;\n return {\n type: 'schema:CreativeWork',\n name: item['schema:creativeWork.name'],\n url: item['schema:creativeWork.url'] || undefined,\n publisher: item['schema:creativeWork.publisher'] || undefined,\n datePublished: item['schema:creativeWork.datePublished'] || undefined,\n };\n });\n\n const researchProfile =\n seedQueries.length > 0 || citations.length > 0\n ? {\n type: 'ixo:ResearchProfile',\n 'ixo:seedQueries': seedQueries.length > 0 ? seedQueries : undefined,\n citation: citations.length > 0 ? citations : undefined,\n dateModified: new Date().toISOString(),\n }\n : undefined;\n\n // Build the final credentialSubject\n const credentialSubject: DomainCardCredentialSubject = {\n id: entityDid,\n type: types.length > 0 ? types : ['ixo:dao'],\n name: surveyData['schema:name'] || '',\n description: surveyData['schema.description'] || '',\n };\n\n // Add optional fields only if they have values\n if (additionalType.length > 0) credentialSubject.additionalType = additionalType;\n if (alternateNames.length > 0) credentialSubject.alternateName = alternateNames;\n if (surveyData['schema:url']) credentialSubject.url = surveyData['schema:url'];\n if (sameAsUrls.length > 0) credentialSubject.sameAs = sameAsUrls;\n if (logo) credentialSubject.logo = logo;\n if (profileImage) credentialSubject.image = [profileImage];\n if (keywords.length > 0) credentialSubject.keywords = keywords;\n if (knowsAbout.length > 0) credentialSubject.knowsAbout = knowsAbout;\n if (address) credentialSubject.address = address;\n if (areaServed) credentialSubject.areaServed = areaServed;\n if (contactPoints.length > 0) credentialSubject.contactPoint = contactPoints;\n if (composition) credentialSubject.composition = composition;\n if (makesOffer.length > 0) credentialSubject.makesOffer = makesOffer;\n if (relationships) credentialSubject.relationships = relationships;\n if (agents.length > 0) credentialSubject.agents = agents;\n if (credentials.length > 0) credentialSubject.credentials = credentials;\n if (attributes.length > 0) credentialSubject.attributes = attributes;\n if (project) credentialSubject.project = project;\n if (researchProfile) credentialSubject.researchProfile = researchProfile;\n\n return credentialSubject;\n}\n","/**\n * Builds an unsigned W3C Verifiable Credential envelope for a Domain Card.\n * The credential follows the ixo:DomainCard schema.\n */\n\nimport type { DomainCardCredentialSubject } from './transformSurveyToCredentialSubject';\n\n/**\n * JSON-LD context for Domain Card credentials\n */\nexport const DOMAIN_CARD_CONTEXT = [\n 'https://w3id.org/ixo/context/v1',\n {\n schema: 'https://schema.org/',\n ixo: 'https://w3id.org/ixo/vocab/v1',\n prov: 'http://www.w3.org/ns/prov#',\n proj: 'http://www.w3.org/ns/project#',\n id: '@id',\n type: '@type',\n '@protected': true,\n },\n] as const;\n\n/**\n * Domain Card credential schema reference\n */\nexport const DOMAIN_CARD_SCHEMA = {\n id: 'https://w3id.org/ixo/protocol/schema/v1#domainCard',\n type: 'JsonSchema',\n} as const;\n\n/**\n * DataIntegrityProof structure for signed credentials\n */\nexport interface DataIntegrityProof {\n type: 'DataIntegrityProof';\n created: string;\n verificationMethod: string;\n cryptosuite: 'eddsa-rdfc-2022';\n proofPurpose: 'assertionMethod';\n proofValue: string;\n}\n\n/**\n * Unsigned Verifiable Credential structure\n */\nexport interface UnsignedVerifiableCredential {\n '@context': typeof DOMAIN_CARD_CONTEXT;\n id: string;\n type: ['VerifiableCredential', 'ixo:DomainCard'];\n issuer: {\n id: string;\n };\n validFrom: string;\n validUntil: string;\n credentialSchema: typeof DOMAIN_CARD_SCHEMA;\n credentialSubject: DomainCardCredentialSubject;\n}\n\n/**\n * Signed Verifiable Credential with proof\n */\nexport interface SignedVerifiableCredential extends UnsignedVerifiableCredential {\n proof: DataIntegrityProof;\n}\n\n/**\n * Base credential subject with required fields.\n * Used for flexible input that may come from different sources (survey, existing credential, etc.)\n */\nexport interface BaseCredentialSubject {\n id: string;\n type: string[];\n name: string;\n description: string;\n [key: string]: unknown; // Allow additional properties\n}\n\n/**\n * Parameters for building an unsigned verifiable credential\n */\nexport interface BuildCredentialParams {\n /** DID of the entity this domain card describes */\n entityDid: string;\n /** DID of the issuer signing this credential */\n issuerDid: string;\n /** The credential subject containing domain card data (flexible input) */\n credentialSubject: BaseCredentialSubject | DomainCardCredentialSubject;\n /** ISO 8601 date string for when credential becomes valid */\n validFrom: string;\n /** ISO 8601 date string for when credential expires */\n validUntil: string;\n}\n\n/**\n * Converts a date input to ISO 8601 string format.\n * Handles various input formats from survey fields.\n */\nfunction toISOString(dateInput: string | Date | undefined, fallback: Date = new Date()): string {\n if (!dateInput) {\n return fallback.toISOString();\n }\n\n if (dateInput instanceof Date) {\n return dateInput.toISOString();\n }\n\n // Handle date-only strings (YYYY-MM-DD) from date inputs\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateInput)) {\n return new Date(dateInput + 'T00:00:00.000Z').toISOString();\n }\n\n // Handle datetime-local strings (YYYY-MM-DDTHH:MM)\n if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/.test(dateInput)) {\n return new Date(dateInput + ':00.000Z').toISOString();\n }\n\n // Try parsing as-is\n const parsed = new Date(dateInput);\n if (!isNaN(parsed.getTime())) {\n return parsed.toISOString();\n }\n\n return fallback.toISOString();\n}\n\n/**\n * Calculates a default expiration date (5 years from validFrom).\n */\nfunction getDefaultValidUntil(validFrom: string): string {\n const fromDate = new Date(validFrom);\n const untilDate = new Date(fromDate);\n untilDate.setFullYear(untilDate.getFullYear() + 5);\n return untilDate.toISOString();\n}\n\n/**\n * Builds an unsigned verifiable credential for a Domain Card.\n *\n * @param params - Parameters for building the credential\n * @returns An unsigned verifiable credential ready for signing\n *\n * @example\n * ```typescript\n * const credential = buildVerifiableCredential({\n * entityDid: 'did:ixo:entity:abc123',\n * issuerDid: 'did:ixo:ixo1xyz...',\n * credentialSubject: transformedSubject,\n * validFrom: '2025-01-01',\n * validUntil: '2030-01-01',\n * });\n * ```\n */\nexport function buildVerifiableCredential(params: BuildCredentialParams): UnsignedVerifiableCredential {\n const { entityDid, issuerDid, credentialSubject, validFrom, validUntil } = params;\n\n const validFromISO = toISOString(validFrom);\n const validUntilISO = validUntil ? toISOString(validUntil) : getDefaultValidUntil(validFromISO);\n\n return {\n '@context': DOMAIN_CARD_CONTEXT,\n id: `${entityDid}#dmn`,\n type: ['VerifiableCredential', 'ixo:DomainCard'],\n issuer: {\n id: issuerDid,\n },\n validFrom: validFromISO,\n validUntil: validUntilISO,\n credentialSchema: DOMAIN_CARD_SCHEMA,\n credentialSubject: {\n ...credentialSubject,\n // Ensure the subject ID matches the entity DID\n id: entityDid,\n },\n };\n}\n\n/**\n * LinkedResource structure for storing the credential on-chain\n */\nexport interface DomainCardLinkedResource {\n id: string;\n type: 'domainCard';\n proof: string;\n right: string;\n encrypted: string;\n mediaType: 'application/json';\n description: string;\n serviceEndpoint: string;\n}\n\n/**\n * Builds a LinkedResource object for a Domain Card credential.\n *\n * @param params - Parameters for building the linked resource\n * @returns A LinkedResource object ready to be added to an entity\n *\n * @example\n * ```typescript\n * const linkedResource = buildDomainCardLinkedResource({\n * entityDid: 'did:ixo:entity:abc123',\n * cid: 'bafkreid2t3hp7qi6ynyvaz4o3bphyjtqcz2qwlhm4odvuvesnh6dtv3hvu',\n * serviceEndpoint: 'https://mx.ixo.earth/_matrix/media/v3/download/...',\n * });\n * ```\n */\nexport function buildDomainCardLinkedResource(params: { entityDid: string; cid: string; serviceEndpoint: string; description?: string }): DomainCardLinkedResource {\n return {\n id: `${params.entityDid}#dmn`,\n type: 'domainCard',\n proof: params.cid,\n right: '',\n encrypted: 'false',\n mediaType: 'application/json',\n description: params.description || 'Domain Card',\n serviceEndpoint: params.serviceEndpoint,\n };\n}\n","interface SurveyElement {\n type: string;\n name?: string;\n elements?: SurveyElement[];\n templateElements?: SurveyElement[];\n}\n\ninterface SurveyPage {\n name: string;\n elements: SurveyElement[];\n}\n\ninterface SurveyDefinition {\n pages: SurveyPage[];\n}\n\n/**\n * Recursively extracts field names from survey elements.\n * Handles nested panels and paneldynamic template elements.\n */\nfunction extractFieldsFromElements(elements: SurveyElement[], fields: Record<string, unknown>): void {\n for (const element of elements) {\n // Skip panel containers but process their children\n if (element.type === 'panel' && element.elements) {\n extractFieldsFromElements(element.elements, fields);\n continue;\n }\n\n // Handle paneldynamic - these create arrays of objects\n if (element.type === 'paneldynamic' && element.name) {\n // Initialize as empty array for dynamic panels\n fields[element.name] = [];\n\n // Also extract template element names for reference\n if (element.templateElements) {\n extractFieldsFromElements(element.templateElements, fields);\n }\n continue;\n }\n\n // Regular input elements with a name\n if (element.name && element.type !== 'panel') {\n // Set appropriate default based on type\n switch (element.type) {\n case 'boolean':\n fields[element.name] = false;\n break;\n case 'checkbox':\n fields[element.name] = [];\n break;\n case 'file':\n fields[element.name] = [];\n break;\n default:\n fields[element.name] = '';\n }\n }\n\n // Handle nested elements in regular panels\n if (element.elements) {\n extractFieldsFromElements(element.elements, fields);\n }\n }\n}\n\n/**\n * Extracts all field names from a SurveyJS survey definition\n * and creates an empty answers template object.\n *\n * This template can be used to:\n * 1. Initialize the answers prop with all possible fields\n * 2. Provide AI agents with the structure they can fill in\n *\n * @param surveyDef - The SurveyJS survey definition object\n * @returns An object with all field names as keys and empty/default values\n */\nexport function extractSurveyAnswersTemplate(surveyDef: SurveyDefinition): Record<string, unknown> {\n const fields: Record<string, unknown> = {};\n\n for (const page of surveyDef.pages) {\n extractFieldsFromElements(page.elements, fields);\n }\n\n return fields;\n}\n\n/**\n * Creates a stringified empty answers template from a survey definition.\n * Useful for initializing the block prop.\n */\nexport function createEmptyAnswersJson(surveyDef: SurveyDefinition): string {\n return JSON.stringify(extractSurveyAnswersTemplate(surveyDef));\n}\n","import type { LinkedEntityData } from '@/mantine/blocks/governanceGroup/types';\n\n/**\n * LinkedEntity structure for createDomain call\n */\nexport interface LinkedEntity {\n id: string;\n type: string;\n relationship: string;\n service: string;\n}\n\n/**\n * Parse linked entities from block props\n */\nexport function parseLinkedEntities(entitiesString: string): LinkedEntityData[] {\n if (!entitiesString || entitiesString === '[]') return [];\n try {\n return JSON.parse(entitiesString) as LinkedEntityData[];\n } catch {\n return [];\n }\n}\n\n/**\n * Build LinkedEntity array for governance groups\n * These will be passed to createDomain as linkedEntity parameter\n */\nexport function buildGovernanceGroupLinkedEntities(linkedEntities: LinkedEntityData[]): LinkedEntity[] {\n return linkedEntities\n .filter((entity) => entity.type === 'governanceGroup' && entity.coreAddress)\n .map((entity) => ({\n id: `{id}#${entity.coreAddress}`,\n type: 'group',\n relationship: 'governs',\n service: '',\n }));\n}\n","export const tempDomainCreatorSurvey = {\n title: 'Domain Card Creation',\n description: 'This survey collects structured information required to create a Domain Card Verifiable Credential in compliance with W3C standards.',\n pages: [\n {\n name: 'domainDetails',\n title: 'Domain Information',\n description: 'Provide identifying and descriptive information about the domain entity represented by this credential.',\n elements: [\n {\n type: 'boolean',\n name: 'ixo:advancedDomainSettings',\n title: 'Show Advanced Options',\n defaultValue: 'false',\n },\n {\n type: 'dropdown',\n name: 'type_1',\n visible: false,\n title: 'Domain Type (Primary)',\n defaultValue: 'dao',\n choices: [\n {\n value: 'dao',\n text: 'DAO',\n },\n {\n value: 'protocol',\n text: 'Protocol',\n },\n ],\n },\n {\n type: 'dropdown',\n name: 'type_2',\n title: 'Domain Type ',\n isRequired: true,\n choicesByUrl: {\n url: 'https://test.studio.ixo.earth/api/survey-choices?url=https://raw.githubusercontent.com/ixofoundation/ns/refs/heads/GraemeLeightonIXO-patch-4/protocol/entities/v1/index.json&path=entities.dao.types',\n valueName: 'Value',\n titleName: 'Text',\n },\n },\n {\n type: 'dropdown',\n name: 'daoType',\n title: 'DAO Type',\n isRequired: true,\n choicesByUrl: {\n url: 'https://test.studio.ixo.earth/api/survey-choices?url=https://raw.githubusercontent.com/ixofoundation/ns/refs/heads/GraemeLeightonIXO-patch-4/protocol/tags/v1/index.json&path=daoType',\n valueName: 'Value',\n titleName: 'Text',\n },\n },\n {\n type: 'text',\n name: 'schema:validFrom',\n title: 'Valid From',\n defaultValueExpression: 'today()',\n isRequired: true,\n inputType: 'date',\n },\n {\n type: 'text',\n name: 'schema:validUntil',\n title: 'Vaid Untill',\n defaultValueExpression: 'today()',\n isRequired: true,\n inputType: 'date',\n },\n {\n type: 'text',\n name: 'schema:name',\n title: 'Domain Name',\n description: 'The official name of the domain.',\n isRequired: true,\n },\n {\n type: 'paneldynamic',\n name: 'pannel_schema:alternateName',\n title: 'Alternate Names',\n templateElements: [\n {\n type: 'text',\n name: 'schema:alternateName',\n title: 'Alternate Name',\n },\n ],\n },\n {\n type: 'text',\n name: 'schema:url',\n title: 'URL',\n description: 'Primary URL for the domain',\n inputType: 'url',\n },\n {\n type: 'paneldynamic',\n name: 'schema:sameAs',\n title: 'Additional URLs',\n description: 'Additional URLs associated with the domain (Twitter, Github, Medium)',\n templateElements: [\n {\n type: 'text',\n name: 'schema:sameAs.url',\n title: 'URL',\n inputType: 'url',\n },\n ],\n },\n {\n type: 'comment',\n name: 'schema.description',\n title: 'Canonical Description',\n description: 'A concise, one-paragraph description of the domain.',\n isRequired: true,\n },\n {\n type: 'panel',\n name: 'pannel_schema:media',\n title: 'Domain Images',\n elements: [\n {\n type: 'text',\n name: 'ixo:imageProfile_url',\n title: 'Profile Image URL',\n inputType: 'url',\n },\n {\n type: 'file',\n name: 'ixo:imageProfile',\n title: 'Profile Image',\n },\n {\n type: 'text',\n name: 'ixo:imageLogo_url',\n title: 'Logo URL',\n inputType: 'url',\n },\n {\n type: 'file',\n name: 'ixo:imageLogo',\n title: 'Logo',\n },\n ],\n },\n {\n type: 'comment',\n name: 'schema:keywords',\n title: 'Keywords',\n description: 'List of comma separated keywords describing the domain’s focus areas.',\n },\n {\n type: 'paneldynamic',\n name: 'pannel_ixo:knowsAbout',\n title: 'Topics /Primary Knowledge Areas',\n description: 'Subjects or fields the domain is knowledgeable in.',\n templateElements: [\n {\n type: 'text',\n name: 'ixo:knowsAbout',\n title: 'Knows About',\n },\n ],\n },\n ],\n },\n {\n name: 'contactAndLocation',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Contact & Location',\n description: 'Provide address and contact information for the domain.',\n elements: [\n {\n type: 'panel',\n name: 'schema:address',\n title: 'Postal Address',\n elements: [\n {\n type: 'text',\n name: 'schema:streetAddress',\n title: 'Street Address',\n },\n {\n type: 'text',\n name: 'schema:addressLocality',\n title: 'City',\n },\n {\n type: 'text',\n name: 'schema:addressRegion',\n title: 'Region/State',\n },\n {\n type: 'text',\n name: 'schema:postalCode',\n title: 'Postal Code',\n },\n {\n type: 'text',\n name: 'schema:addressCountry',\n title: 'Country',\n },\n ],\n },\n {\n type: 'text',\n name: 'schema:AdministrativeArea',\n title: 'Area Served',\n },\n {\n type: 'paneldynamic',\n name: 'pannel:schema_contactPoint',\n title: 'Contact Points',\n description: 'List available contact methods for support, business, or technical inquiries.',\n templateElements: [\n {\n type: 'text',\n name: 'schema:contactType',\n title: 'Contact Type',\n description: 'Example: General, Support, Sales',\n },\n {\n type: 'text',\n name: 'schema:email',\n title: 'Email Address',\n inputType: 'email',\n },\n {\n type: 'text',\n name: 'schema:telephone',\n title: 'Telephone ',\n inputType: 'tel',\n },\n {\n type: 'text',\n name: 'schema:availableLanguage',\n title: 'Languages Supported',\n description: 'Comma separated two letter language code (English = en)',\n },\n ],\n },\n ],\n },\n {\n name: 'composition',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Composition',\n elements: [\n {\n type: 'paneldynamic',\n name: 'schema:hasPart',\n title: 'Domain Components',\n description: 'Describes the specific items, documents, linked domains, or components that belong to this domain.',\n templateElements: [\n {\n type: 'text',\n name: 'schema:hasPart.id',\n title: 'Identifier',\n description: 'URI or URL ',\n },\n {\n type: 'text',\n name: 'schema:hasPart.name',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'schema:hasPart.description',\n title: 'Description',\n },\n {\n type: 'text',\n name: 'schema:hasPart.url',\n title: 'URL',\n description: 'If different to the identifier',\n inputType: 'url',\n },\n {\n type: 'text',\n name: 'schema:hasPart.creator.name',\n title: 'Creator',\n description: 'Component creator (Organisation Name)',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'schema:subjectOf',\n title: 'Publications',\n description: 'Publications produced by the domain or where the domain is the subject.',\n templateElements: [\n {\n type: 'text',\n name: 'schema:subjectOf.name',\n title: 'Publication Title',\n },\n {\n type: 'text',\n name: 'schema:subjectOf.url',\n title: 'URL',\n },\n {\n type: 'text',\n name: 'schema:subjectOf.author.name',\n title: 'Author',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'schema:makesOffer',\n title: 'Offers (Product and/or Services)',\n templateElements: [\n {\n type: 'dropdown',\n name: 'schema:itemOffered.type',\n title: 'Catagory',\n choices: [\n {\n value: 'product',\n text: 'Product',\n },\n {\n value: 'service',\n text: 'Service',\n },\n ],\n },\n {\n type: 'text',\n name: 'schema:itemOffered.name',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'schema:itemOffered.description',\n title: 'Description',\n },\n {\n type: 'text',\n name: 'schema:itemOffered.url',\n title: 'URL',\n inputType: 'url',\n },\n ],\n },\n ],\n },\n {\n name: 'relationshipsAndOffers',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Relationships & Funding',\n description: 'Describe the domain’s relationships with other organizations and its software or service offerings.',\n elements: [\n {\n type: 'paneldynamic',\n name: 'schema:memberOf',\n title: 'Memberships',\n templateElements: [\n {\n type: 'text',\n name: 'schema:memberOf.name',\n title: 'Organization Name',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'schema:wasAssociatedWith',\n title: 'Partner/Associated Organizations',\n templateElements: [\n {\n type: 'text',\n name: 'schema:wasAssociatedWith.name',\n title: 'Organization Name',\n },\n {\n type: 'text',\n name: 'schema:wasAssociatedWith.url',\n title: 'URL',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'schema:funding',\n title: 'Funding Sources',\n templateElements: [\n {\n type: 'text',\n name: 'schema:funder.name',\n title: 'Funder Organization',\n },\n {\n type: 'text',\n name: 'schema:amount.currency',\n title: 'Currency Code',\n },\n {\n type: 'text',\n name: 'schema:amount.value',\n title: 'Funding Amount',\n },\n ],\n },\n ],\n },\n {\n name: 'events',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Events',\n elements: [\n {\n type: 'paneldynamic',\n name: 'schema:event',\n title: 'Event',\n templateElements: [\n {\n type: 'text',\n name: 'schema:event.name',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'schema:startDate',\n title: 'Start Date',\n },\n {\n type: 'text',\n name: 'schema:endDate',\n title: 'End Date',\n },\n {\n type: 'text',\n name: 'schema:event.location',\n title: 'Location Name',\n },\n {\n type: 'panel',\n name: 'schema:event.address',\n title: 'Postal Address',\n elements: [\n {\n type: 'text',\n name: 'schema:event.streetAddress',\n title: 'Street Address',\n },\n {\n type: 'text',\n name: 'schema:event.addressLocality',\n title: 'City',\n },\n {\n type: 'text',\n name: 'schema:event.addressRegion',\n title: 'Region/State',\n },\n {\n type: 'text',\n name: 'schema:event.postalCode',\n title: 'Postal Code',\n },\n {\n type: 'text',\n name: 'schema:event.addressCountry',\n title: 'Country',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'agentsCredentialsAndAttributes',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Agents, Credentials, and Attributes',\n elements: [\n {\n type: 'paneldynamic',\n name: 'ixo:agentCard',\n title: 'Agents',\n templateElements: [\n {\n type: 'text',\n name: 'ixo:agentCard.id',\n title: 'Agent ID',\n },\n {\n type: 'text',\n name: 'ixo:agentCard.name',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'ixo:agentCard.description',\n title: 'Description',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'ixo:verifiableCredential',\n title: 'Credentials',\n templateElements: [\n {\n type: 'text',\n name: 'schema:ID',\n title: 'Credential ID',\n },\n {\n type: 'text',\n name: 'schema:Name',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'schema:description',\n title: 'Description',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'ixo:attribute',\n title: 'Attributes',\n templateElements: [\n {\n type: 'text',\n name: 'schema:ID_2',\n title: 'Attribute ID',\n },\n {\n type: 'text',\n name: 'schema:name_2',\n title: 'Name',\n },\n {\n type: 'text',\n name: 'schema:description_2',\n title: 'Description',\n },\n ],\n },\n ],\n },\n {\n name: 'project',\n visibleIf: '{ixo:advancedDomainSettings} = true',\n title: 'Project Information',\n description: 'Provide details about the related project(s), including objectives, sponsors, and deliverables.',\n elements: [\n {\n type: 'paneldynamic',\n name: 'pannel_proj:project',\n title: 'Projects',\n templateElements: [\n {\n type: 'text',\n name: 'proj:project.name',\n title: 'Project Title',\n },\n {\n type: 'comment',\n name: 'proj:project.description',\n title: 'Project Mission',\n description: 'High-level purpose or mission statement of the project.',\n },\n {\n type: 'paneldynamic',\n name: 'proj:project.hadObjective',\n title: 'Project Objectives',\n templateElements: [\n {\n type: 'comment',\n name: 'proj:hadObjective',\n title: 'Project Objective',\n },\n ],\n },\n {\n type: 'text',\n name: 'proj:plannedStart',\n title: 'Planned Start Date',\n inputType: 'datetime-local',\n },\n {\n type: 'text',\n name: 'proj:plannedEnd',\n title: 'Planned End Date',\n inputType: 'datetime-local',\n },\n {\n type: 'paneldynamic',\n name: 'proj:wasFundedThrough',\n title: 'Project Funding',\n templateElements: [\n {\n type: 'text',\n name: 'proj:moneyAmount',\n title: 'Funding Amount',\n },\n {\n type: 'text',\n name: 'proj:moneyCurrency',\n title: 'Funding Currency',\n },\n {\n type: 'text',\n name: 'prov.agent.name',\n title: 'Funder Name',\n },\n {\n type: 'text',\n name: 'prov:agent.id',\n title: 'Funder URL',\n inputType: 'url',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: 'researchProfile',\n title: 'Research Profile',\n description: 'Provide information about the research profile associated with the domain.',\n elements: [\n {\n type: 'paneldynamic',\n name: 'ixo:ResearchProfile',\n title: 'Seed Queries',\n templateElements: [\n {\n type: 'comment',\n name: 'ixo:seedQueries',\n title: 'Seed Query',\n description: 'Seed keywords or queries that define the research scope.',\n },\n ],\n },\n {\n type: 'paneldynamic',\n name: 'schema:creativeWork',\n title: 'Citations',\n templateElements: [\n {\n type: 'text',\n name: 'schema:creativeWork.name',\n title: 'Citation Title',\n },\n {\n type: 'text',\n name: 'schema:creativeWork.url',\n title: 'Citation URL',\n },\n {\n type: 'text',\n name: 'schema:creativeWork.publisher',\n title: 'Publisher',\n },\n {\n type: 'text',\n name: 'schema:creativeWork.datePublished',\n title: 'Date Published',\n inputType: 'datetime-local',\n },\n ],\n },\n ],\n },\n ],\n showPageTitles: false,\n showQuestionNumbers: 'on',\n showProgressBar: true,\n progressBarLocation: 'top',\n};\n","import { registerAction, doneWhenCompleted } from '../registry';\nimport { parseMaybeJsonObject } from '../inputRequirements';\nimport { buildVerifiableCredential, buildDomainCardLinkedResource } from '@/core/lib/domainCard';\n\n/**\n * Map a schema.org-style credential type (e.g. `schema:Organization`) to the\n * on-chain entity type accepted by `createDomain`. Valid on-chain types are\n * `dao/pod`, `protocol`, `oracle`, `investment`, `project`, `asset`. Schema types\n * without a direct match fall back to `dao/pod`.\n */\nexport function resolveEntityTypeFromSchema(schemaType: string): string {\n const normalized = schemaType.replace(/^schema:/i, '').toLowerCase();\n const schemaToEntity: Record<string, string> = {\n organization: 'dao/pod',\n nonprofit: 'dao/pod',\n corporation: 'dao/pod',\n governmentorganization: 'dao/pod',\n };\n if (schemaToEntity[normalized]) return schemaToEntity[normalized];\n const allowed = new Set(['dao/pod', 'protocol', 'oracle', 'investment', 'project', 'asset']);\n return allowed.has(normalized) ? normalized : 'dao/pod';\n}\n\n/** Parse a JSON input that may be a string, object, or empty. */\nfunction parseJsonInput(value: unknown): Record<string, any> | null {\n if (!value) return null;\n if (typeof value === 'object' && !Array.isArray(value)) return value as Record<string, any>;\n if (typeof value === 'string') {\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' ? parsed : null;\n } catch {\n return null;\n }\n }\n return null;\n}\n\nfunction parseContextInput(value: unknown): Array<{ key: string; val: string }> {\n let raw = value;\n if (typeof value === 'string') {\n try {\n raw = JSON.parse(value);\n } catch {\n raw = [];\n }\n }\n if (!Array.isArray(raw)) return [];\n\n return raw\n .map((entry) => {\n if (!entry || typeof entry !== 'object') return null;\n const key = String((entry as Record<string, unknown>).key || '').trim();\n const val = String((entry as Record<string, unknown>).val || '').trim();\n return key && val ? { key, val } : null;\n })\n .filter((entry): entry is { key: string; val: string } => entry !== null);\n}\n\ntype SelectedProtocolTemplate = {\n protocolDid: string;\n sourceRoomId: string;\n sourceLabel?: string;\n};\n\nfunction getSelectedProtocolTemplates(flowTemplateConfig: Record<string, any> | null): SelectedProtocolTemplate[] {\n const raw = flowTemplateConfig?.selectedTemplates;\n if (!Array.isArray(raw)) return [];\n\n return raw\n .map((item) => {\n if (!item || typeof item !== 'object') return null;\n const record = item as Record<string, unknown>;\n const protocolDid = String(record.protocolDid || '').trim();\n const sourceRoomId = String(record.sourceRoomId || '').trim();\n if (!protocolDid || !sourceRoomId) return null;\n const sourceLabel = String(record.sourceLabel || record.label || '').trim();\n return {\n protocolDid,\n sourceRoomId,\n ...(sourceLabel ? { sourceLabel } : {}),\n };\n })\n .filter((item): item is SelectedProtocolTemplate => item !== null);\n}\n\nfunction groupTemplatesByProtocol(templates: SelectedProtocolTemplate[]): Map<string, Array<{ sourceRoomId: string; sourceLabel?: string }>> {\n const grouped = new Map<string, Array<{ sourceRoomId: string; sourceLabel?: string }>>();\n for (const template of templates) {\n const existing = grouped.get(template.protocolDid) || [];\n existing.push({\n sourceRoomId: template.sourceRoomId,\n ...(template.sourceLabel ? { sourceLabel: template.sourceLabel } : {}),\n });\n grouped.set(template.protocolDid, existing);\n }\n return grouped;\n}\n\ntype DomainSignCheckpointStep =\n | 'createGovernanceGroup'\n | 'createDomain'\n | 'signAndUploadDomainCard'\n | 'addLinkedResource'\n | 'addParentLinkedEntity'\n | 'sourceDomainSpaces'\n | 'importTemplates';\n\ntype DomainSignCheckpoint = {\n invocationId: string;\n status: 'running' | 'completed' | 'failed';\n updatedAt: string;\n entityDid?: string;\n governanceGroupCoreAddress?: string;\n governanceGroupLinkedEntities?: any[];\n transactionHash?: string;\n linkedResourceTransactionHash?: string;\n parentEntityDid?: string;\n parentLinkedEntity?: { id: string; type: string; relationship: string; service: string };\n parentLinkedEntityTransactionHash?: string;\n domainCardLinkedResource?: ReturnType<typeof buildDomainCardLinkedResource>;\n flowTemplateConfig?: Record<string, any> | null;\n domainSpaces?: any;\n protocolTemplateImports?: Array<{ protocolDid: string; imported: any[] }>;\n output?: Record<string, any>;\n error?: string;\n completedSteps?: Partial<Record<DomainSignCheckpointStep, boolean>>;\n};\n\nconst DOMAIN_SIGN_CACHE_KEY = 'domainSign';\n\nfunction getDomainSignCheckpointKey(inputs: Record<string, unknown>, ctx: any): string {\n return String(ctx.pendingInvocation?.id || inputs.pendingInvocationId || inputs.invocationId || 'manual');\n}\n\nfunction readDomainSignCheckpoint(ctx: any, key: string): DomainSignCheckpoint | undefined {\n const cache = ctx.runtime?.get?.(ctx.nodeId)?.cache;\n const bucket = cache?.[DOMAIN_SIGN_CACHE_KEY];\n if (!bucket || typeof bucket !== 'object') return undefined;\n const checkpoint = (bucket as Record<string, unknown>)[key];\n return checkpoint && typeof checkpoint === 'object' ? (checkpoint as DomainSignCheckpoint) : undefined;\n}\n\nfunction writeDomainSignCheckpoint(ctx: any, key: string, checkpoint: DomainSignCheckpoint): void {\n if (!ctx.runtime?.get || !ctx.runtime?.update || !ctx.nodeId) return;\n const current = ctx.runtime.get(ctx.nodeId) || {};\n const cache = current.cache && typeof current.cache === 'object' ? current.cache : {};\n const bucket = cache[DOMAIN_SIGN_CACHE_KEY] && typeof cache[DOMAIN_SIGN_CACHE_KEY] === 'object' ? (cache[DOMAIN_SIGN_CACHE_KEY] as Record<string, unknown>) : {};\n ctx.runtime.update(ctx.nodeId, {\n cache: {\n ...cache,\n [DOMAIN_SIGN_CACHE_KEY]: {\n ...bucket,\n [key]: checkpoint,\n },\n },\n });\n}\n\nfunction buildCompletedDomainSignResult(output: Record<string, any>) {\n const payload = {\n entityDid: output.entityDid,\n governanceGroupCoreAddress: output.governanceGroupCoreAddress || '',\n transactionHash: output.transactionHash || '',\n linkedResourceTransactionHash: output.linkedResourceTransactionHash || '',\n ...(output.parentLinkedEntityTransactionHash ? { parentLinkedEntityTransactionHash: output.parentLinkedEntityTransactionHash } : {}),\n };\n\n return {\n output,\n events: [\n {\n name: 'created',\n payload,\n },\n ],\n };\n}\n\nfunction readDidInput(value: unknown): string {\n if (typeof value !== 'string') return '';\n const did = value.trim();\n if (!did || did === 'null' || did === 'undefined') return '';\n return did.startsWith('did:') ? did : '';\n}\n\nfunction getSelectedParentEntityDid(inputs: Record<string, unknown>): string {\n if (inputs.skipped === true || inputs.parentSkipped === true) return '';\n return readDidInput(inputs.selectedEntityDid) || readDidInput(inputs.parentDid) || readDidInput(inputs.parentDID);\n}\n\n/** Max times we re-prompt for the PIN before giving up and surfacing the error. */\nconst MAX_PIN_ATTEMPTS = 3;\n\n/**\n * A wrong PIN throws \"Invalid PIN - could not decrypt mnemonic\" (the mnemonic\n * is encrypted with the PIN, so a bad PIN fails decryption). This is a\n * recoverable, user-correctable error — re-prompt rather than failing the run.\n */\nfunction isInvalidPinError(err: unknown): boolean {\n const msg = err instanceof Error ? err.message : String(err);\n return /invalid pin|could not decrypt mnemonic/i.test(msg);\n}\n\n/**\n * Parse a duration string like '604800s' into amount + unit suitable for\n * the daodao group config (proposalDurationAmount / proposalDurationUnit).\n */\nfunction parseDuration(raw: string): { amount: number; unit: string } {\n const seconds = parseInt(raw, 10) || 0;\n if (seconds % (7 * 86400) === 0) return { amount: seconds / (7 * 86400), unit: 'weeks' };\n if (seconds % 86400 === 0) return { amount: seconds / 86400, unit: 'days' };\n if (seconds % 3600 === 0) return { amount: seconds / 3600, unit: 'hours' };\n if (seconds % 60 === 0) return { amount: seconds / 60, unit: 'minutes' };\n return { amount: seconds, unit: 'seconds' };\n}\n\n/**\n * Build the config object for `handlers.createGovernanceGroup` by transforming\n * the PODGovernance + member data from the barrier payload into the shape the\n * daodao message builders expect (CategoricalGroupConfig, MultisigGroupConfig,\n * NftStakingGroupConfig, or TokenStakingGroupConfig).\n *\n * Member identifiers are forwarded as DIDs in the address fields — the\n * consumer's message builders resolve them to bech32 account addresses\n * (`did:ixo:<address>` embeds the address) before anything reaches the chain.\n */\nfunction buildGroupConfig(groupType: string, governance: Record<string, any>, memberConfig: Record<string, any> | null): Record<string, unknown> {\n const duration = parseDuration(governance.votingPeriod || '604800s');\n const thresholdNum = parseFloat(governance.threshold || '0.51');\n const quorumNum = parseFloat(governance.quorum);\n const unstakingDuration = governance.unstakingDuration ? parseDuration(governance.unstakingDuration) : null;\n\n const baseConfig: Record<string, unknown> = {\n proposalDurationAmount: duration.amount,\n proposalDurationUnit: duration.unit,\n proposalSubmissionPolicy: 'members',\n voteSwitching: false,\n };\n\n // Pod governance thresholds are decimals of votes cast (0–1]; the builders\n // take percentages, paired with the quorum via threshold_quorum on-chain.\n const decisionPolicy: Record<string, unknown> = {\n passingThreshold: 'percentage',\n passingThresholdPercentage: Math.round(thresholdNum * 100),\n ...(Number.isFinite(quorumNum) && quorumNum > 0 ? { quorum: 'percentage', quorumPercentage: Math.round(quorumNum * 100) } : {}),\n };\n\n if (groupType === 'multisig') {\n const members = (memberConfig?.members || []) as Array<{ did: string }>;\n return {\n ...baseConfig,\n threshold: memberConfig?.multisigThreshold || 1,\n membershipCategory: [{ members: members.map((m) => m.did) }],\n };\n }\n\n if (groupType === 'nftStaking') {\n return {\n ...baseConfig,\n ...decisionPolicy,\n nftContractAddress: memberConfig?.nftContractAddress || '',\n ...(unstakingDuration ? { unstakingDurationAmount: unstakingDuration.amount, unstakingDurationUnit: unstakingDuration.unit } : {}),\n };\n }\n\n if (groupType === 'tokenStaking') {\n const tokenConfig = memberConfig?.tokenConfig || {};\n return {\n ...baseConfig,\n ...decisionPolicy,\n isExistingToken: Boolean(tokenConfig.isExistingToken),\n tokenAddress: tokenConfig.tokenAddress || '',\n tokenName: tokenConfig.tokenName || '',\n tokenSymbol: tokenConfig.tokenSymbol || '',\n tokenSupply: tokenConfig.tokenSupply || 0,\n distributionCategory: tokenConfig.distributionCategory || [],\n ...(unstakingDuration ? { unstakingDurationAmount: unstakingDuration.amount, unstakingDurationUnit: unstakingDuration.unit } : {}),\n };\n }\n\n // categorical (default)\n const members = (memberConfig?.members || []) as Array<{ did: string; role: string; votingPower: number }>;\n const byRole = new Map<string, { dids: string[]; weight: number }>();\n for (const m of members) {\n const role = m.role || 'member';\n const existing = byRole.get(role);\n if (existing) {\n existing.dids.push(m.did);\n } else {\n byRole.set(role, { dids: [m.did], weight: m.votingPower || 1 });\n }\n }\n\n return {\n ...baseConfig,\n ...decisionPolicy,\n membershipCategory: Array.from(byRole.entries()).map(([role, { dids, weight }]) => ({\n categoryName: role,\n members: dids.map((did) => ({ memberAddress: did })),\n weightPerMember: weight,\n })),\n };\n}\n\nregisterAction({\n type: 'qi/domain.sign',\n can: 'domain/sign',\n sideEffect: true,\n proof: { fields: ['entityDid'] },\n done: doneWhenCompleted,\n defaultRequiresConfirmation: true,\n requiredCapability: 'flow/block/execute',\n eligibleForEventTrigger: true,\n\n inputSchema: {\n type: 'object',\n required: ['domainCardData'],\n properties: {\n domainCardData: {\n type: 'object',\n description: 'Domain card envelope (object or JSON string) with credentialSubject.name; signed and used to create the domain.',\n },\n entityType: { type: 'string', description: 'Optional on-chain entity type; defaults from the credential type or dao/pod.' },\n governanceConfig: { type: 'object', description: 'Optional governance group config (object or JSON string) used to create a governance group.' },\n memberConfig: { type: 'object', description: 'Optional member config (object or JSON string) for the governance group.' },\n flowTemplateConfig: { type: 'object', description: 'Optional flow template config (object or JSON string) with selected protocol templates.' },\n context: { type: 'array', description: 'Optional context entries (array of { key, val } or JSON string) attached to the domain.' },\n selectedEntityDid: { type: 'string', description: 'Optional parent entity DID to link the new POD to.' },\n parentDid: { type: 'string', description: 'Optional parent entity DID (alternate field).' },\n parentDID: { type: 'string', description: 'Optional parent entity DID (alternate field).' },\n skipped: { type: 'boolean', description: 'Optional flag that skips parent entity linking.' },\n parentSkipped: { type: 'boolean', description: 'Optional flag that skips parent entity linking.' },\n pendingInvocationId: { type: 'string', description: 'Optional invocation ID used as the checkpoint key for resumable runs.' },\n invocationId: { type: 'string', description: 'Optional invocation ID used as the checkpoint key for resumable runs.' },\n },\n },\n\n outputSchema: [\n { path: 'entityDid', displayName: 'Entity DID', type: 'string', description: 'The DID of the newly created domain entity' },\n {\n path: 'governanceGroupCoreAddress',\n displayName: 'Governance Group Core Address',\n type: 'string',\n description: 'The core address of the created governance group, when one was created',\n },\n { path: 'transactionHash', displayName: 'Transaction Hash', type: 'string', description: 'The on-chain transaction hash for domain creation' },\n {\n path: 'linkedResourceTransactionHash',\n displayName: 'Linked Resource Transaction Hash',\n type: 'string',\n description: 'The on-chain transaction hash for adding the domain card linked resource',\n },\n {\n path: 'parentEntityDid',\n displayName: 'Parent Entity DID',\n type: 'string',\n description: 'The selected parent entity DID that was updated with the new POD linked entity',\n },\n {\n path: 'parentLinkedEntityTransactionHash',\n displayName: 'Parent Linked Entity Transaction Hash',\n type: 'string',\n description: 'The on-chain transaction hash for linking the new POD to the selected parent entity',\n },\n {\n path: 'flowTemplateConfig',\n displayName: 'Flow Template Config',\n type: 'object',\n description: 'Selected protocol templates captured before POD creation',\n },\n {\n path: 'domainSpaces',\n displayName: 'Domain Spaces',\n type: 'object',\n description: 'Matrix space structure sourced for the new domain',\n },\n {\n path: 'protocolTemplateImports',\n displayName: 'Protocol Template Imports',\n type: 'array',\n description: 'Import results for selected protocol templates',\n },\n ],\n\n events: [\n {\n name: 'created',\n displayName: 'Domain Created',\n description: 'Fires after the domain entity is successfully created on-chain.',\n payloadSchema: [\n { path: 'entityDid', displayName: 'Entity DID', type: 'string', description: 'DID of the newly created domain' },\n {\n path: 'governanceGroupCoreAddress',\n displayName: 'Governance Group Core Address',\n type: 'string',\n description: 'Core address of the created governance group, when present',\n },\n { path: 'transactionHash', displayName: 'Transaction Hash', type: 'string', description: 'On-chain transaction hash' },\n {\n path: 'linkedResourceTransactionHash',\n displayName: 'Linked Resource Transaction Hash',\n type: 'string',\n description: 'On-chain transaction hash for adding the domain card linked resource',\n },\n {\n path: 'parentLinkedEntityTransactionHash',\n displayName: 'Parent Linked Entity Transaction Hash',\n type: 'string',\n description: 'On-chain transaction hash for linking the new POD to the selected parent entity',\n },\n ],\n pendingDisplayFields: ['entityDid', 'governanceGroupCoreAddress'],\n },\n ],\n\n // Mirrors run(): the card envelope (object or JSON string) must carry\n // credentialSubject.name before signing can start.\n getMissingInputs: (inputs) => {\n const card = parseMaybeJsonObject(inputs.domainCardData);\n if (!card) return ['domainCardData'];\n const subject = card.credentialSubject as Record<string, unknown> | undefined;\n return subject && String(subject.name || '').trim() ? [] : ['domainCardData.credentialSubject.name'];\n },\n\n run: async (inputs, ctx) => {\n const handlers = ctx.handlers || {};\n\n // Parse domainCardData input\n let domainCardData: any;\n if (typeof inputs.domainCardData === 'string') {\n try {\n domainCardData = JSON.parse(inputs.domainCardData);\n } catch {\n throw new Error('domainCardData must be valid JSON');\n }\n } else if (inputs.domainCardData && typeof inputs.domainCardData === 'object') {\n domainCardData = inputs.domainCardData;\n } else {\n throw new Error('domainCardData is required');\n }\n\n if (!domainCardData?.credentialSubject?.name) {\n throw new Error('domainCardData is missing or invalid (credentialSubject.name required)');\n }\n\n // Determine entity type\n const entityType =\n String(inputs.entityType || '').trim() || (domainCardData.credentialSubject?.type?.[0] ? resolveEntityTypeFromSchema(domainCardData.credentialSubject.type[0]) : 'dao/pod');\n\n const validFrom = domainCardData.validFrom || new Date().toISOString();\n const validUntil =\n domainCardData.validUntil ||\n (() => {\n const d = new Date();\n d.setFullYear(d.getFullYear() + 100);\n return d.toISOString();\n })();\n\n const govConfig = parseJsonInput(inputs.governanceConfig);\n const memberConfig = parseJsonInput(inputs.memberConfig);\n const flowTemplateConfig = parseJsonInput(inputs.flowTemplateConfig);\n const context = parseContextInput(inputs.context);\n const selectedParentEntityDid = getSelectedParentEntityDid(inputs);\n const selectedProtocolTemplates = getSelectedProtocolTemplates(flowTemplateConfig);\n const checkpointKey = getDomainSignCheckpointKey(inputs, ctx);\n let checkpoint: DomainSignCheckpoint = readDomainSignCheckpoint(ctx, checkpointKey) || {\n invocationId: checkpointKey,\n status: 'running',\n updatedAt: new Date().toISOString(),\n completedSteps: {},\n };\n\n if (checkpoint.status === 'completed' && checkpoint.output) {\n return buildCompletedDomainSignResult(checkpoint.output);\n }\n\n if (!ctx.handlers) {\n throw new Error('Handlers not available');\n }\n\n if (typeof handlers.requestPin !== 'function') throw new Error('requestPin handler not available');\n if (typeof handlers.signCredential !== 'function') throw new Error('signCredential handler not implemented');\n if (!ctx.services.domainVfs) throw new Error('entity VFS domain persistence service not available');\n if (typeof handlers.createDomain !== 'function') throw new Error('createDomain handler not implemented');\n if (typeof handlers.createAddLinkedResourceMessage !== 'function') throw new Error('createAddLinkedResourceMessage handler not implemented');\n if (typeof handlers.executeTransaction !== 'function') throw new Error('executeTransaction handler not implemented');\n // Captured after the guards above so the narrowed (non-undefined) types\n // survive into the step closures below.\n const { requestPin, signCredential } = handlers;\n const domainVfs = ctx.services.domainVfs;\n\n const saveCheckpoint = (updates: Partial<DomainSignCheckpoint>): DomainSignCheckpoint => {\n checkpoint = {\n ...checkpoint,\n ...updates,\n invocationId: checkpointKey,\n updatedAt: new Date().toISOString(),\n completedSteps: {\n ...(checkpoint.completedSteps || {}),\n ...(updates.completedSteps || {}),\n },\n };\n writeDomainSignCheckpoint(ctx, checkpointKey, checkpoint);\n return checkpoint;\n };\n\n saveCheckpoint({\n status: 'running',\n error: undefined,\n flowTemplateConfig,\n });\n\n try {\n // Step 1: Create governance group if config arrived from barrier payload.\n let governanceGroupLinkedEntities: any[] = checkpoint.governanceGroupLinkedEntities || [];\n let governanceGroupCoreAddress = checkpoint.governanceGroupCoreAddress || '';\n\n if (govConfig && handlers.createGovernanceGroup && !checkpoint.completedSteps?.createGovernanceGroup) {\n const groupType = govConfig.groupType as string;\n const governance = (govConfig.governance || {}) as Record<string, any>;\n const config = buildGroupConfig(groupType, governance, memberConfig);\n\n const groupResult = await handlers.createGovernanceGroup({\n groupType: groupType as 'categorical' | 'multisig' | 'nftStaking' | 'tokenStaking',\n name: govConfig.groupName || domainCardData.credentialSubject?.name || 'Governance Group',\n config,\n });\n governanceGroupCoreAddress = groupResult.coreAddress;\n\n governanceGroupLinkedEntities = [\n {\n id: `{id}#${governanceGroupCoreAddress}`,\n type: 'group',\n relationship: 'governs',\n service: '',\n },\n ];\n\n saveCheckpoint({\n governanceGroupCoreAddress,\n governanceGroupLinkedEntities,\n completedSteps: { createGovernanceGroup: true },\n });\n } else if (!govConfig) {\n saveCheckpoint({ completedSteps: { createGovernanceGroup: true } });\n }\n\n // Get issuer DID\n const issuerDid = handlers.getEntityDid?.() || handlers.getCurrentUser?.()?.address;\n if (!issuerDid) throw new Error('Unable to determine issuer DID');\n\n const signAndUploadDomainCard = async (entityDid: string) => {\n const credentialSubject = {\n ...domainCardData.credentialSubject,\n id: entityDid,\n };\n\n const unsignedCredential = buildVerifiableCredential({\n entityDid,\n issuerDid,\n credentialSubject,\n validFrom,\n validUntil,\n });\n\n // Re-prompt for the PIN on an invalid-PIN failure instead of unwinding\n // the run. createDomain has already happened by this point, so failing\n // here would leave the user with a half-created POD and a \"Try Again\"\n // button; an inline re-prompt lets them recover without that.\n let signedCredential: Awaited<ReturnType<NonNullable<typeof handlers.signCredential>>>['signedCredential'] | undefined;\n for (let attempt = 1; attempt <= MAX_PIN_ATTEMPTS; attempt++) {\n const pin = await requestPin({\n title: 'Sign Domain Card',\n description: attempt === 1 ? 'Enter your PIN to sign the Domain Card credential' : 'Incorrect PIN. Re-enter your PIN to sign the Domain Card credential.',\n submitText: 'Sign',\n });\n // A cancelled prompt (falsy PIN) ends the loop cleanly rather than\n // re-prompting forever.\n if (!pin) throw new Error('PIN entry cancelled');\n\n try {\n ({ signedCredential } = await signCredential({\n issuerDid,\n issuerType: 'user',\n credential: unsignedCredential,\n pin,\n }));\n break;\n } catch (signError) {\n // Only an invalid PIN is retryable, and only while attempts remain;\n // anything else (or the final attempt) propagates to fail the run.\n if (isInvalidPinError(signError) && attempt < MAX_PIN_ATTEMPTS) continue;\n throw signError;\n }\n }\n\n // The loop only exits via `break` (success) or `throw`, so this is an\n // invariant — it also narrows the type away from `undefined`.\n if (!signedCredential) throw new Error('Failed to sign credential');\n\n const domainMarkdown = [\n '---',\n `id: ${entityDid}`,\n `name: ${JSON.stringify(domainCardData.credentialSubject?.name || 'Domain')}`,\n 'private: true',\n 'access: UCAN',\n '---',\n '',\n `# ${domainCardData.credentialSubject?.name || 'Domain'}`,\n '',\n 'This private domain package is stored in the entity VFS.',\n '',\n ].join('\\n');\n const persisted = await domainVfs.persistDomainPackage({\n entityDid,\n name: domainCardData.credentialSubject?.name || 'Domain',\n signedCredential: signedCredential as Record<string, unknown>,\n domainMarkdown,\n });\n\n return {\n ...buildDomainCardLinkedResource({\n entityDid,\n cid: persisted.credentialCid,\n serviceEndpoint: persisted.credentialServiceEndpoint,\n description: `Domain Card for ${domainCardData.credentialSubject?.name || 'Domain'}`,\n }),\n id: '{id}#dmn',\n };\n };\n\n const endDate = domainCardData.endDate || validUntil;\n let newEntityDid = checkpoint.entityDid || '';\n let transactionHash = checkpoint.transactionHash || '';\n let linkedResourceTransactionHash = checkpoint.linkedResourceTransactionHash || '';\n const parentEntityDid = checkpoint.parentEntityDid || selectedParentEntityDid;\n let parentLinkedEntity = checkpoint.parentLinkedEntity;\n let parentLinkedEntityTransactionHash = checkpoint.parentLinkedEntityTransactionHash || '';\n let domainCardLinkedResource = checkpoint.domainCardLinkedResource;\n\n // Unified path: create the entity first so the signed domain card and\n // linked resource use the real entity DID, then add the domain card as a\n // second transaction.\n if (!checkpoint.completedSteps?.createDomain || !newEntityDid || !transactionHash) {\n const createResult = await handlers.createDomain({\n entityType,\n context: context.length > 0 ? context : undefined,\n linkedResource: [],\n linkedEntity: governanceGroupLinkedEntities.length > 0 ? governanceGroupLinkedEntities : undefined,\n startDate: validFrom,\n endDate,\n });\n newEntityDid = createResult.entityDid;\n transactionHash = createResult.transactionHash;\n saveCheckpoint({\n entityDid: newEntityDid,\n transactionHash,\n completedSteps: { createDomain: true },\n });\n }\n\n if (!checkpoint.completedSteps?.signAndUploadDomainCard || !domainCardLinkedResource) {\n domainCardLinkedResource = await signAndUploadDomainCard(newEntityDid);\n saveCheckpoint({\n domainCardLinkedResource,\n completedSteps: { signAndUploadDomainCard: true },\n });\n }\n\n if (!checkpoint.completedSteps?.addLinkedResource || !linkedResourceTransactionHash) {\n const addLinkedResourceMessage = await handlers.createAddLinkedResourceMessage({\n entityDid: newEntityDid,\n linkedResource: domainCardLinkedResource,\n });\n const addLinkedResourceResult = await handlers.executeTransaction({\n messages: [addLinkedResourceMessage],\n memo: '',\n });\n linkedResourceTransactionHash = String(addLinkedResourceResult?.transactionHash || '');\n if (!linkedResourceTransactionHash) {\n throw new Error('Linked resource transaction completed but no transaction hash received');\n }\n saveCheckpoint({\n linkedResourceTransactionHash,\n completedSteps: { addLinkedResource: true },\n });\n }\n\n if (parentEntityDid && (!checkpoint.completedSteps?.addParentLinkedEntity || !parentLinkedEntityTransactionHash)) {\n if (typeof handlers.createAddLinkedEntityMessage !== 'function') {\n throw new Error('createAddLinkedEntityMessage handler not implemented');\n }\n\n parentLinkedEntity = parentLinkedEntity || {\n id: newEntityDid,\n type: entityType,\n relationship: 'manages',\n service: '',\n };\n\n const addParentLinkedEntityMessage = await handlers.createAddLinkedEntityMessage({\n entityDid: parentEntityDid,\n linkedEntity: parentLinkedEntity,\n });\n const addParentLinkedEntityResult = await handlers.executeTransaction({\n messages: [addParentLinkedEntityMessage],\n memo: '',\n });\n parentLinkedEntityTransactionHash = String(addParentLinkedEntityResult?.transactionHash || '');\n if (!parentLinkedEntityTransactionHash) {\n throw new Error('Parent linked entity transaction completed but no transaction hash received');\n }\n saveCheckpoint({\n parentEntityDid,\n parentLinkedEntity,\n parentLinkedEntityTransactionHash,\n completedSteps: { addParentLinkedEntity: true },\n });\n } else if (!parentEntityDid) {\n saveCheckpoint({ completedSteps: { addParentLinkedEntity: true } });\n }\n\n let domainSpaces: Awaited<ReturnType<NonNullable<typeof handlers.sourceDomainSpaces>>> | undefined = checkpoint.domainSpaces;\n let protocolTemplateImports: Array<{ protocolDid: string; imported: any[] }> = checkpoint.protocolTemplateImports || [];\n\n if (handlers.sourceDomainSpaces && (!checkpoint.completedSteps?.sourceDomainSpaces || !domainSpaces)) {\n domainSpaces = await handlers.sourceDomainSpaces({ entityDid: newEntityDid });\n if (!domainSpaces?.success) {\n throw new Error('Domain spaces could not be sourced for the newly created domain');\n }\n saveCheckpoint({\n domainSpaces,\n completedSteps: { sourceDomainSpaces: true },\n });\n } else if (!handlers.sourceDomainSpaces) {\n saveCheckpoint({ completedSteps: { sourceDomainSpaces: true } });\n }\n\n if (selectedProtocolTemplates.length > 0 && !checkpoint.completedSteps?.importTemplates) {\n if (!handlers.sourceDomainSpaces) {\n throw new Error('sourceDomainSpaces handler is required to import selected protocol templates');\n }\n if (!handlers.importProtocolTemplatesToSpace) {\n throw new Error('importProtocolTemplatesToSpace handler is required to import selected protocol templates');\n }\n\n const targetFlowsSubspaceId = domainSpaces?.subspaces?.['domain flows']?.space_id;\n if (!targetFlowsSubspaceId) {\n throw new Error('Domain flows subspace was not returned by sourceDomainSpaces');\n }\n\n const groupedTemplates = groupTemplatesByProtocol(selectedProtocolTemplates);\n protocolTemplateImports = await Promise.all(\n Array.from(groupedTemplates.entries()).map(async ([protocolDid, templates]) => {\n const result = await handlers.importProtocolTemplatesToSpace!({\n protocolDid,\n entityDid: newEntityDid,\n targetFlowsSubspaceId,\n templates,\n });\n return { protocolDid, imported: result.imported };\n })\n );\n saveCheckpoint({\n protocolTemplateImports,\n completedSteps: { importTemplates: true },\n });\n } else if (selectedProtocolTemplates.length === 0) {\n saveCheckpoint({\n protocolTemplateImports,\n completedSteps: { importTemplates: true },\n });\n }\n\n const output = {\n entityDid: newEntityDid,\n governanceGroupCoreAddress,\n linkedEntities: governanceGroupLinkedEntities,\n linkedResources: [domainCardLinkedResource],\n parentEntityDid,\n parentLinkedEntity,\n flowTemplateConfig,\n domainSpaces,\n protocolTemplateImports,\n transactionHash,\n linkedResourceTransactionHash,\n parentLinkedEntityTransactionHash,\n };\n\n saveCheckpoint({\n status: 'completed',\n output,\n });\n\n return buildCompletedDomainSignResult(output);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Domain sign failed';\n saveCheckpoint({\n status: 'failed',\n error: message,\n });\n throw error;\n }\n },\n});\n"],"mappings":"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","names":["members"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// src/core/lib/actionRegistry/actions/xero/contactCreate.types.ts
|
|
2
|
+
var EMPTY = {
|
|
3
|
+
connection: null,
|
|
4
|
+
tenant_id: "",
|
|
5
|
+
Name: "",
|
|
6
|
+
FirstName: "",
|
|
7
|
+
LastName: "",
|
|
8
|
+
EmailAddress: "",
|
|
9
|
+
phone_number: "",
|
|
10
|
+
mobile_number: "",
|
|
11
|
+
Website: "",
|
|
12
|
+
TaxNumber: "",
|
|
13
|
+
AccountNumber: "",
|
|
14
|
+
DefaultCurrency: "",
|
|
15
|
+
BankAccountDetails: "",
|
|
16
|
+
IsCustomer: false,
|
|
17
|
+
IsSupplier: false
|
|
18
|
+
};
|
|
19
|
+
function parseXeroContactCreateInputs(raw) {
|
|
20
|
+
try {
|
|
21
|
+
const parsed = typeof raw === "string" ? JSON.parse(raw || "{}") : raw || {};
|
|
22
|
+
const conn = parsed.connection;
|
|
23
|
+
const connection = conn && typeof conn === "object" && typeof conn.connectedAccountId === "string" && typeof conn.entityDid === "string" ? { connectedAccountId: conn.connectedAccountId, entityDid: conn.entityDid } : null;
|
|
24
|
+
return {
|
|
25
|
+
connection,
|
|
26
|
+
tenant_id: typeof parsed.tenant_id === "string" ? parsed.tenant_id : "",
|
|
27
|
+
Name: typeof parsed.Name === "string" ? parsed.Name : "",
|
|
28
|
+
FirstName: typeof parsed.FirstName === "string" ? parsed.FirstName : "",
|
|
29
|
+
LastName: typeof parsed.LastName === "string" ? parsed.LastName : "",
|
|
30
|
+
EmailAddress: typeof parsed.EmailAddress === "string" ? parsed.EmailAddress : "",
|
|
31
|
+
phone_number: typeof parsed.phone_number === "string" ? parsed.phone_number : "",
|
|
32
|
+
mobile_number: typeof parsed.mobile_number === "string" ? parsed.mobile_number : "",
|
|
33
|
+
Website: typeof parsed.Website === "string" ? parsed.Website : "",
|
|
34
|
+
TaxNumber: typeof parsed.TaxNumber === "string" ? parsed.TaxNumber : "",
|
|
35
|
+
AccountNumber: typeof parsed.AccountNumber === "string" ? parsed.AccountNumber : "",
|
|
36
|
+
DefaultCurrency: typeof parsed.DefaultCurrency === "string" ? parsed.DefaultCurrency : "",
|
|
37
|
+
BankAccountDetails: typeof parsed.BankAccountDetails === "string" ? parsed.BankAccountDetails : "",
|
|
38
|
+
IsCustomer: typeof parsed.IsCustomer === "boolean" ? parsed.IsCustomer : false,
|
|
39
|
+
IsSupplier: typeof parsed.IsSupplier === "boolean" ? parsed.IsSupplier : false
|
|
40
|
+
};
|
|
41
|
+
} catch {
|
|
42
|
+
return { ...EMPTY };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function serializeXeroContactCreateInputs(inputs) {
|
|
46
|
+
return JSON.stringify(inputs);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export {
|
|
50
|
+
parseXeroContactCreateInputs,
|
|
51
|
+
serializeXeroContactCreateInputs
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=chunk-QDQ6UMMN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/lib/actionRegistry/actions/xero/contactCreate.types.ts"],"sourcesContent":["import type { PinnedConnection } from '@/mantine/blocks/action/actionTypes/_shared/ConnectionSelector';\n\n/**\n * Template storage shape for `qi/xero.contact.create` — mirrors the\n * `XERO_CREATE_CONTACT` schema verbatim. Xero mixes PascalCase and snake_case\n * in the same tool (see gotchas §17). Do NOT normalise names here.\n */\nexport interface XeroContactCreateInputs {\n connection: PinnedConnection | null;\n /** Xero org identifier. Empty = use the connection's default. See gotchas §17. */\n tenant_id: string;\n Name: string;\n FirstName: string;\n LastName: string;\n EmailAddress: string;\n phone_number: string;\n mobile_number: string;\n Website: string;\n TaxNumber: string;\n AccountNumber: string;\n DefaultCurrency: string;\n BankAccountDetails: string;\n IsCustomer: boolean;\n IsSupplier: boolean;\n}\n\nconst EMPTY: XeroContactCreateInputs = {\n connection: null,\n tenant_id: '',\n Name: '',\n FirstName: '',\n LastName: '',\n EmailAddress: '',\n phone_number: '',\n mobile_number: '',\n Website: '',\n TaxNumber: '',\n AccountNumber: '',\n DefaultCurrency: '',\n BankAccountDetails: '',\n IsCustomer: false,\n IsSupplier: false,\n};\n\nexport function parseXeroContactCreateInputs(raw: string | Record<string, any> | undefined): XeroContactCreateInputs {\n try {\n const parsed: any = typeof raw === 'string' ? JSON.parse(raw || '{}') : raw || {};\n const conn = parsed.connection;\n const connection: PinnedConnection | null =\n conn && typeof conn === 'object' && typeof conn.connectedAccountId === 'string' && typeof conn.entityDid === 'string'\n ? { connectedAccountId: conn.connectedAccountId, entityDid: conn.entityDid }\n : null;\n\n return {\n connection,\n tenant_id: typeof parsed.tenant_id === 'string' ? parsed.tenant_id : '',\n Name: typeof parsed.Name === 'string' ? parsed.Name : '',\n FirstName: typeof parsed.FirstName === 'string' ? parsed.FirstName : '',\n LastName: typeof parsed.LastName === 'string' ? parsed.LastName : '',\n EmailAddress: typeof parsed.EmailAddress === 'string' ? parsed.EmailAddress : '',\n phone_number: typeof parsed.phone_number === 'string' ? parsed.phone_number : '',\n mobile_number: typeof parsed.mobile_number === 'string' ? parsed.mobile_number : '',\n Website: typeof parsed.Website === 'string' ? parsed.Website : '',\n TaxNumber: typeof parsed.TaxNumber === 'string' ? parsed.TaxNumber : '',\n AccountNumber: typeof parsed.AccountNumber === 'string' ? parsed.AccountNumber : '',\n DefaultCurrency: typeof parsed.DefaultCurrency === 'string' ? parsed.DefaultCurrency : '',\n BankAccountDetails: typeof parsed.BankAccountDetails === 'string' ? parsed.BankAccountDetails : '',\n IsCustomer: typeof parsed.IsCustomer === 'boolean' ? parsed.IsCustomer : false,\n IsSupplier: typeof parsed.IsSupplier === 'boolean' ? parsed.IsSupplier : false,\n };\n } catch {\n return { ...EMPTY };\n }\n}\n\nexport function serializeXeroContactCreateInputs(inputs: XeroContactCreateInputs): string {\n return JSON.stringify(inputs);\n}\n"],"mappings":";AA0BA,IAAM,QAAiC;AAAA,EACrC,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AACd;AAEO,SAAS,6BAA6B,KAAwE;AACnH,MAAI;AACF,UAAM,SAAc,OAAO,QAAQ,WAAW,KAAK,MAAM,OAAO,IAAI,IAAI,OAAO,CAAC;AAChF,UAAM,OAAO,OAAO;AACpB,UAAM,aACJ,QAAQ,OAAO,SAAS,YAAY,OAAO,KAAK,uBAAuB,YAAY,OAAO,KAAK,cAAc,WACzG,EAAE,oBAAoB,KAAK,oBAAoB,WAAW,KAAK,UAAU,IACzE;AAEN,WAAO;AAAA,MACL;AAAA,MACA,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;AAAA,MACrE,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAAA,MACtD,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;AAAA,MACrE,UAAU,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW;AAAA,MAClE,cAAc,OAAO,OAAO,iBAAiB,WAAW,OAAO,eAAe;AAAA,MAC9E,cAAc,OAAO,OAAO,iBAAiB,WAAW,OAAO,eAAe;AAAA,MAC9E,eAAe,OAAO,OAAO,kBAAkB,WAAW,OAAO,gBAAgB;AAAA,MACjF,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,MAC/D,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;AAAA,MACrE,eAAe,OAAO,OAAO,kBAAkB,WAAW,OAAO,gBAAgB;AAAA,MACjF,iBAAiB,OAAO,OAAO,oBAAoB,WAAW,OAAO,kBAAkB;AAAA,MACvF,oBAAoB,OAAO,OAAO,uBAAuB,WAAW,OAAO,qBAAqB;AAAA,MAChG,YAAY,OAAO,OAAO,eAAe,YAAY,OAAO,aAAa;AAAA,MACzE,YAAY,OAAO,OAAO,eAAe,YAAY,OAAO,aAAa;AAAA,IAC3E;AAAA,EACF,QAAQ;AACN,WAAO,EAAE,GAAG,MAAM;AAAA,EACpB;AACF;AAEO,SAAS,iCAAiC,QAAyC;AACxF,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// src/mantine/blocks/action/actionTypes/evaluateBid/types.ts
|
|
2
|
+
function parseEvaluateBidActionInputs(json) {
|
|
3
|
+
try {
|
|
4
|
+
const parsed = typeof json === "string" ? JSON.parse(json) : json;
|
|
5
|
+
return {
|
|
6
|
+
deedDid: parsed?.deedDid || "",
|
|
7
|
+
collectionId: parsed?.collectionId || ""
|
|
8
|
+
};
|
|
9
|
+
} catch {
|
|
10
|
+
return {
|
|
11
|
+
deedDid: "",
|
|
12
|
+
collectionId: ""
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function serializeEvaluateBidActionInputs(inputs) {
|
|
17
|
+
return JSON.stringify(inputs);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
parseEvaluateBidActionInputs,
|
|
22
|
+
serializeEvaluateBidActionInputs
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=chunk-QGT3G2XG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/blocks/action/actionTypes/evaluateBid/types.ts"],"sourcesContent":["export type { EvaluateBidRuntimeInputs } from '@/core/lib/actionRegistry/actions/evaluateBid/types';\n\nexport interface EvaluateBidActionInputs {\n deedDid: string;\n collectionId: string;\n}\n\nexport function parseEvaluateBidActionInputs(json: string): EvaluateBidActionInputs {\n try {\n const parsed = typeof json === 'string' ? JSON.parse(json) : json;\n return {\n deedDid: parsed?.deedDid || '',\n collectionId: parsed?.collectionId || '',\n };\n } catch {\n return {\n deedDid: '',\n collectionId: '',\n };\n }\n}\n\nexport function serializeEvaluateBidActionInputs(inputs: EvaluateBidActionInputs): string {\n return JSON.stringify(inputs);\n}\n"],"mappings":";AAOO,SAAS,6BAA6B,MAAuC;AAClF,MAAI;AACF,UAAM,SAAS,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI;AAC7D,WAAO;AAAA,MACL,SAAS,QAAQ,WAAW;AAAA,MAC5B,cAAc,QAAQ,gBAAgB;AAAA,IACxC;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,MACL,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,EACF;AACF;AAEO,SAAS,iCAAiC,QAAyC;AACxF,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DataInput
|
|
3
|
+
} from "./chunk-4PONO4US.js";
|
|
4
|
+
|
|
5
|
+
// src/mantine/blocks/action/actionTypes/carbon/BatchesSourceSelect.tsx
|
|
6
|
+
import React, { useMemo, useState } from "react";
|
|
7
|
+
import { Anchor, Select, Stack, Text } from "@mantine/core";
|
|
8
|
+
var LOAD_BATCHES_ACTION_TYPE = "qi/carbon.loadBatches";
|
|
9
|
+
function refFor(blockId, field) {
|
|
10
|
+
return `{{${blockId}.output.${field}}}`;
|
|
11
|
+
}
|
|
12
|
+
function matchBlockId(value, field) {
|
|
13
|
+
const m = (value || "").match(new RegExp(`\\{\\{([a-zA-Z0-9_-]+)\\.output\\.${field}\\}\\}`));
|
|
14
|
+
return m?.[1] || null;
|
|
15
|
+
}
|
|
16
|
+
var BatchesSourceSelect = ({ outputField, value, onChange, editorDocument, currentBlockId, label, description }) => {
|
|
17
|
+
const options = useMemo(() => {
|
|
18
|
+
const blocks = editorDocument || [];
|
|
19
|
+
return blocks.filter((b) => b?.id && b.id !== currentBlockId && b.props?.actionType === LOAD_BATCHES_ACTION_TYPE).map((b) => ({ value: b.id, label: String(b.props?.title || "Load Carbon Batches") }));
|
|
20
|
+
}, [editorDocument, currentBlockId]);
|
|
21
|
+
const selectedBlockId = useMemo(() => matchBlockId(value, outputField), [value, outputField]);
|
|
22
|
+
const [manual, setManual] = useState(!!value && !selectedBlockId);
|
|
23
|
+
if (manual || options.length === 0 && !selectedBlockId) {
|
|
24
|
+
return /* @__PURE__ */ React.createElement(Stack, { gap: 4 }, /* @__PURE__ */ React.createElement(
|
|
25
|
+
DataInput,
|
|
26
|
+
{
|
|
27
|
+
label,
|
|
28
|
+
description,
|
|
29
|
+
placeholder: refFor("loadBlock", outputField),
|
|
30
|
+
value,
|
|
31
|
+
onChange,
|
|
32
|
+
editorDocument,
|
|
33
|
+
currentBlockId
|
|
34
|
+
}
|
|
35
|
+
), options.length > 0 ? /* @__PURE__ */ React.createElement(Anchor, { component: "button", type: "button", size: "xs", onClick: () => setManual(false) }, "Pick a Load Carbon Batches block instead") : /* @__PURE__ */ React.createElement(Text, { size: "xs", c: "dimmed" }, "Add a Load Carbon Batches block upstream to pick it here, or insert a reference that resolves to ", outputField, "."));
|
|
36
|
+
}
|
|
37
|
+
return /* @__PURE__ */ React.createElement(Stack, { gap: 4 }, /* @__PURE__ */ React.createElement(
|
|
38
|
+
Select,
|
|
39
|
+
{
|
|
40
|
+
label,
|
|
41
|
+
description,
|
|
42
|
+
placeholder: "Select a Load Carbon Batches block",
|
|
43
|
+
data: options,
|
|
44
|
+
value: selectedBlockId,
|
|
45
|
+
onChange: (v) => onChange(v ? refFor(v, outputField) : ""),
|
|
46
|
+
searchable: true,
|
|
47
|
+
clearable: true
|
|
48
|
+
}
|
|
49
|
+
), /* @__PURE__ */ React.createElement(Anchor, { component: "button", type: "button", size: "xs", onClick: () => setManual(true) }, "Use a custom reference"));
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
BatchesSourceSelect
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=chunk-QZYCJ2GZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mantine/blocks/action/actionTypes/carbon/BatchesSourceSelect.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Anchor, Select, Stack, Text } from '@mantine/core';\nimport { DataInput } from '@/mantine/components/DataInput';\n\n/**\n * Guided source picker for the harvest/retire blocks (IXO-2675).\n *\n * Instead of hand-typing a `{{block.output.<field>}}` reference, the user picks\n * an upstream **Load Carbon Batches** block from a dropdown and we auto-fill the\n * correct reference (mirrors the \"select the source block\" UX of\n * `qi/collection.users`). A \"custom reference\" escape hatch falls back to the\n * generic reference-aware `DataInput` for advanced cases (e.g. an HTTP block\n * that returns batches).\n */\nconst LOAD_BATCHES_ACTION_TYPE = 'qi/carbon.loadBatches';\n\nfunction refFor(blockId: string, field: string): string {\n return `{{${blockId}.output.${field}}}`;\n}\n\nfunction matchBlockId(value: string, field: string): string | null {\n const m = (value || '').match(new RegExp(`\\\\{\\\\{([a-zA-Z0-9_-]+)\\\\.output\\\\.${field}\\\\}\\\\}`));\n return m?.[1] || null;\n}\n\nexport interface BatchesSourceSelectProps {\n /** Output field on the load block to reference. */\n outputField: 'harvestableBatches' | 'retireableBatches';\n value: string;\n onChange: (value: string) => void;\n editorDocument: any[];\n currentBlockId: string;\n label: string;\n description?: string;\n}\n\nexport const BatchesSourceSelect: React.FC<BatchesSourceSelectProps> = ({ outputField, value, onChange, editorDocument, currentBlockId, label, description }) => {\n const options = useMemo(() => {\n const blocks = (editorDocument || []) as Array<{ id?: string; props?: { actionType?: string; title?: string } }>;\n return blocks\n .filter((b) => b?.id && b.id !== currentBlockId && b.props?.actionType === LOAD_BATCHES_ACTION_TYPE)\n .map((b) => ({ value: b.id as string, label: String(b.props?.title || 'Load Carbon Batches') }));\n }, [editorDocument, currentBlockId]);\n\n const selectedBlockId = useMemo(() => matchBlockId(value, outputField), [value, outputField]);\n\n // A non-empty value that doesn't match the expected ref shape is a custom\n // reference the user wrote — start in manual mode so we don't silently drop it.\n const [manual, setManual] = useState<boolean>(!!value && !selectedBlockId);\n\n if (manual || (options.length === 0 && !selectedBlockId)) {\n return (\n <Stack gap={4}>\n <DataInput\n label={label}\n description={description}\n placeholder={refFor('loadBlock', outputField)}\n value={value}\n onChange={onChange}\n editorDocument={editorDocument}\n currentBlockId={currentBlockId}\n />\n {options.length > 0 ? (\n <Anchor component=\"button\" type=\"button\" size=\"xs\" onClick={() => setManual(false)}>\n Pick a Load Carbon Batches block instead\n </Anchor>\n ) : (\n <Text size=\"xs\" c=\"dimmed\">\n Add a Load Carbon Batches block upstream to pick it here, or insert a reference that resolves to {outputField}.\n </Text>\n )}\n </Stack>\n );\n }\n\n return (\n <Stack gap={4}>\n <Select\n label={label}\n description={description}\n placeholder=\"Select a Load Carbon Batches block\"\n data={options}\n value={selectedBlockId}\n onChange={(v) => onChange(v ? refFor(v, outputField) : '')}\n searchable\n clearable\n />\n <Anchor component=\"button\" type=\"button\" size=\"xs\" onClick={() => setManual(true)}>\n Use a custom reference\n </Anchor>\n </Stack>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,SAAS,SAAS,gBAAgB;AACzC,SAAS,QAAQ,QAAQ,OAAO,YAAY;AAa5C,IAAM,2BAA2B;AAEjC,SAAS,OAAO,SAAiB,OAAuB;AACtD,SAAO,KAAK,OAAO,WAAW,KAAK;AACrC;AAEA,SAAS,aAAa,OAAe,OAA8B;AACjE,QAAM,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO,qCAAqC,KAAK,QAAQ,CAAC;AAC5F,SAAO,IAAI,CAAC,KAAK;AACnB;AAaO,IAAM,sBAA0D,CAAC,EAAE,aAAa,OAAO,UAAU,gBAAgB,gBAAgB,OAAO,YAAY,MAAM;AAC/J,QAAM,UAAU,QAAQ,MAAM;AAC5B,UAAM,SAAU,kBAAkB,CAAC;AACnC,WAAO,OACJ,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,kBAAkB,EAAE,OAAO,eAAe,wBAAwB,EAClG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAc,OAAO,OAAO,EAAE,OAAO,SAAS,qBAAqB,EAAE,EAAE;AAAA,EACnG,GAAG,CAAC,gBAAgB,cAAc,CAAC;AAEnC,QAAM,kBAAkB,QAAQ,MAAM,aAAa,OAAO,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC;AAI5F,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAkB,CAAC,CAAC,SAAS,CAAC,eAAe;AAEzE,MAAI,UAAW,QAAQ,WAAW,KAAK,CAAC,iBAAkB;AACxD,WACE,oCAAC,SAAM,KAAK,KACV;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,aAAa,OAAO,aAAa,WAAW;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,GACC,QAAQ,SAAS,IAChB,oCAAC,UAAO,WAAU,UAAS,MAAK,UAAS,MAAK,MAAK,SAAS,MAAM,UAAU,KAAK,KAAG,0CAEpF,IAEA,oCAAC,QAAK,MAAK,MAAK,GAAE,YAAS,qGACyE,aAAY,GAChH,CAEJ;AAAA,EAEJ;AAEA,SACE,oCAAC,SAAM,KAAK,KACV;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,aAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,SAAS,IAAI,OAAO,GAAG,WAAW,IAAI,EAAE;AAAA,MACzD,YAAU;AAAA,MACV,WAAS;AAAA;AAAA,EACX,GACA,oCAAC,UAAO,WAAU,UAAS,MAAK,UAAS,MAAK,MAAK,SAAS,MAAM,UAAU,IAAI,KAAG,wBAEnF,CACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// src/core/lib/actionRegistry/actions/xero/invoiceCreate.types.ts
|
|
2
|
+
var LINE_ITEM_FIELD_KEYS = ["Description", "Quantity", "UnitAmount", "AccountCode", "TaxType", "ItemCode", "DiscountRate"];
|
|
3
|
+
function emptyLineItemCells() {
|
|
4
|
+
return {
|
|
5
|
+
Description: "",
|
|
6
|
+
Quantity: "1",
|
|
7
|
+
UnitAmount: "",
|
|
8
|
+
AccountCode: "",
|
|
9
|
+
TaxType: "",
|
|
10
|
+
ItemCode: "",
|
|
11
|
+
DiscountRate: ""
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function emptyLineItems() {
|
|
15
|
+
return { mode: "manual", rows: [emptyLineItemCells()] };
|
|
16
|
+
}
|
|
17
|
+
function coerceCells(raw) {
|
|
18
|
+
const base = emptyLineItemCells();
|
|
19
|
+
if (!raw || typeof raw !== "object") return base;
|
|
20
|
+
for (const key of LINE_ITEM_FIELD_KEYS) {
|
|
21
|
+
const v = raw[key];
|
|
22
|
+
if (typeof v === "string") base[key] = v;
|
|
23
|
+
else if (typeof v === "number") base[key] = String(v);
|
|
24
|
+
else if (typeof v === "boolean") base[key] = v ? "true" : "false";
|
|
25
|
+
}
|
|
26
|
+
return base;
|
|
27
|
+
}
|
|
28
|
+
function normaliseLineItems(raw) {
|
|
29
|
+
if (raw && typeof raw === "object") {
|
|
30
|
+
const candidate = raw;
|
|
31
|
+
if (candidate.mode === "iterative") {
|
|
32
|
+
return {
|
|
33
|
+
mode: "iterative",
|
|
34
|
+
source: typeof candidate.source === "string" ? candidate.source : "",
|
|
35
|
+
map: coerceCells(candidate.map)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (candidate.mode === "manual") {
|
|
39
|
+
const rows = Array.isArray(candidate.rows) ? candidate.rows.map(coerceCells) : [];
|
|
40
|
+
return { mode: "manual", rows: rows.length > 0 ? rows : [emptyLineItemCells()] };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (typeof raw === "string") {
|
|
44
|
+
const trimmed = raw.trim();
|
|
45
|
+
if (!trimmed) return emptyLineItems();
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(trimmed);
|
|
48
|
+
if (Array.isArray(parsed) && parsed.length > 0) {
|
|
49
|
+
return { mode: "manual", rows: parsed.map(coerceCells) };
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return emptyLineItems();
|
|
55
|
+
}
|
|
56
|
+
function parseXeroInvoiceCreateInputs(raw) {
|
|
57
|
+
try {
|
|
58
|
+
const parsed = typeof raw === "string" ? JSON.parse(raw || "{}") : raw || {};
|
|
59
|
+
const conn = parsed.connection;
|
|
60
|
+
const connection = conn && typeof conn === "object" && typeof conn.connectedAccountId === "string" && typeof conn.entityDid === "string" ? { connectedAccountId: conn.connectedAccountId, entityDid: conn.entityDid } : null;
|
|
61
|
+
return {
|
|
62
|
+
connection,
|
|
63
|
+
tenant_id: typeof parsed.tenant_id === "string" ? parsed.tenant_id : "",
|
|
64
|
+
Type: typeof parsed.Type === "string" && parsed.Type ? parsed.Type : "ACCREC",
|
|
65
|
+
Status: typeof parsed.Status === "string" ? parsed.Status : "DRAFT",
|
|
66
|
+
Date: typeof parsed.Date === "string" ? parsed.Date : "",
|
|
67
|
+
DueDate: typeof parsed.DueDate === "string" ? parsed.DueDate : "",
|
|
68
|
+
ContactID: typeof parsed.ContactID === "string" ? parsed.ContactID : "",
|
|
69
|
+
ContactName: typeof parsed.ContactName === "string" ? parsed.ContactName : "",
|
|
70
|
+
Reference: typeof parsed.Reference === "string" ? parsed.Reference : "",
|
|
71
|
+
InvoiceNumber: typeof parsed.InvoiceNumber === "string" ? parsed.InvoiceNumber : "",
|
|
72
|
+
CurrencyCode: typeof parsed.CurrencyCode === "string" ? parsed.CurrencyCode : "",
|
|
73
|
+
LineItems: normaliseLineItems(parsed.LineItems)
|
|
74
|
+
};
|
|
75
|
+
} catch {
|
|
76
|
+
return {
|
|
77
|
+
connection: null,
|
|
78
|
+
tenant_id: "",
|
|
79
|
+
Type: "ACCREC",
|
|
80
|
+
Status: "DRAFT",
|
|
81
|
+
Date: "",
|
|
82
|
+
DueDate: "",
|
|
83
|
+
ContactID: "",
|
|
84
|
+
ContactName: "",
|
|
85
|
+
Reference: "",
|
|
86
|
+
InvoiceNumber: "",
|
|
87
|
+
CurrencyCode: "",
|
|
88
|
+
LineItems: emptyLineItems()
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function serializeXeroInvoiceCreateInputs(inputs) {
|
|
93
|
+
return JSON.stringify(inputs);
|
|
94
|
+
}
|
|
95
|
+
var NUMERIC_LINE_ITEM_FIELDS = ["Quantity", "UnitAmount", "DiscountRate"];
|
|
96
|
+
function finaliseLineItem(cells) {
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const key of LINE_ITEM_FIELD_KEYS) {
|
|
99
|
+
const raw = (cells[key] ?? "").trim();
|
|
100
|
+
if (!raw) continue;
|
|
101
|
+
if (NUMERIC_LINE_ITEM_FIELDS.includes(key)) {
|
|
102
|
+
const n = Number(raw);
|
|
103
|
+
if (!Number.isFinite(n)) {
|
|
104
|
+
throw new Error(`Line item field ${key} must be a number; got "${raw}"`);
|
|
105
|
+
}
|
|
106
|
+
out[key] = n;
|
|
107
|
+
} else {
|
|
108
|
+
out[key] = raw;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!out.Description) {
|
|
112
|
+
out.Description = "payment";
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export {
|
|
118
|
+
LINE_ITEM_FIELD_KEYS,
|
|
119
|
+
emptyLineItemCells,
|
|
120
|
+
parseXeroInvoiceCreateInputs,
|
|
121
|
+
serializeXeroInvoiceCreateInputs,
|
|
122
|
+
finaliseLineItem
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=chunk-REZ7RFSA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/lib/actionRegistry/actions/xero/invoiceCreate.types.ts"],"sourcesContent":["import type { PinnedConnection } from '@/mantine/blocks/action/actionTypes/_shared/ConnectionSelector';\n\n/**\n * A single line-item row as the template author typed it. Every cell is a\n * string so `{{blockId.field}}` and `{{item.field}}` references survive the\n * round-trip through JSON. Numeric cells are `Number()`-coerced at execute\n * time by the flow detail component.\n */\nexport interface XeroLineItemCells {\n Description: string;\n Quantity: string;\n UnitAmount: string;\n AccountCode: string;\n TaxType: string;\n ItemCode: string;\n DiscountRate: string;\n}\n\n/** Field keys the template author can map in iterative mode. */\nexport const LINE_ITEM_FIELD_KEYS = ['Description', 'Quantity', 'UnitAmount', 'AccountCode', 'TaxType', 'ItemCode', 'DiscountRate'] as const;\n\nexport type XeroLineItemsConfig =\n | { mode: 'manual'; rows: XeroLineItemCells[] }\n | {\n mode: 'iterative';\n /** DataInput value pointing at an upstream array (e.g. `{{formId.output.LineItems}}`). */\n source: string;\n /** Per-field mapping — cells may use `{{item.<field>}}` refs. */\n map: XeroLineItemCells;\n };\n\n/**\n * Template storage shape for `qi/xero.invoice.create`.\n * Mirrors `XERO_CREATE_INVOICE` verbatim. `LineItems` is structured (manual\n * rows or iterative binding) rather than a raw JSON string.\n */\nexport interface XeroInvoiceCreateInputs {\n connection: PinnedConnection | null;\n tenant_id: string;\n /** 'ACCREC' (sale) | 'ACCPAY' (bill). Required by Xero. */\n Type: string;\n Status: string;\n Date: string;\n DueDate: string;\n /** Prefer ContactID (UUID); ContactName is the fallback. */\n ContactID: string;\n ContactName: string;\n Reference: string;\n InvoiceNumber: string;\n CurrencyCode: string;\n /** Structured line-items config. See `XeroLineItemsConfig`. Required by Xero. */\n LineItems: XeroLineItemsConfig;\n}\n\nexport function emptyLineItemCells(): XeroLineItemCells {\n return {\n Description: '',\n Quantity: '1',\n UnitAmount: '',\n AccountCode: '',\n TaxType: '',\n ItemCode: '',\n DiscountRate: '',\n };\n}\n\nfunction emptyLineItems(): XeroLineItemsConfig {\n return { mode: 'manual', rows: [emptyLineItemCells()] };\n}\n\nfunction coerceCells(raw: any): XeroLineItemCells {\n const base = emptyLineItemCells();\n if (!raw || typeof raw !== 'object') return base;\n for (const key of LINE_ITEM_FIELD_KEYS) {\n const v = (raw as any)[key];\n if (typeof v === 'string') base[key] = v;\n else if (typeof v === 'number') base[key] = String(v);\n else if (typeof v === 'boolean') base[key] = v ? 'true' : 'false';\n }\n return base;\n}\n\n/**\n * Normalise whatever we find in `inputs.LineItems` into the structured shape.\n *\n * Handles three forms:\n * - Already-structured `XeroLineItemsConfig` (current shape) → returned as-is.\n * - Legacy JSON string (`'[{...}]'`) → migrated to `{ mode: 'manual', rows }`.\n * - Anything unrecognised → one empty manual row.\n */\nfunction normaliseLineItems(raw: unknown): XeroLineItemsConfig {\n if (raw && typeof raw === 'object') {\n const candidate = raw as { mode?: unknown; rows?: unknown; source?: unknown; map?: unknown };\n if (candidate.mode === 'iterative') {\n return {\n mode: 'iterative',\n source: typeof candidate.source === 'string' ? candidate.source : '',\n map: coerceCells(candidate.map),\n };\n }\n if (candidate.mode === 'manual') {\n const rows = Array.isArray(candidate.rows) ? candidate.rows.map(coerceCells) : [];\n return { mode: 'manual', rows: rows.length > 0 ? rows : [emptyLineItemCells()] };\n }\n }\n\n // Legacy: LineItems stored as a JSON string array of plain objects.\n if (typeof raw === 'string') {\n const trimmed = raw.trim();\n if (!trimmed) return emptyLineItems();\n try {\n const parsed = JSON.parse(trimmed);\n if (Array.isArray(parsed) && parsed.length > 0) {\n return { mode: 'manual', rows: parsed.map(coerceCells) };\n }\n } catch {\n // fall through\n }\n }\n\n return emptyLineItems();\n}\n\nexport function parseXeroInvoiceCreateInputs(raw: string | Record<string, any> | undefined): XeroInvoiceCreateInputs {\n try {\n const parsed: any = typeof raw === 'string' ? JSON.parse(raw || '{}') : raw || {};\n const conn = parsed.connection;\n const connection: PinnedConnection | null =\n conn && typeof conn === 'object' && typeof conn.connectedAccountId === 'string' && typeof conn.entityDid === 'string'\n ? { connectedAccountId: conn.connectedAccountId, entityDid: conn.entityDid }\n : null;\n\n return {\n connection,\n tenant_id: typeof parsed.tenant_id === 'string' ? parsed.tenant_id : '',\n Type: typeof parsed.Type === 'string' && parsed.Type ? parsed.Type : 'ACCREC',\n Status: typeof parsed.Status === 'string' ? parsed.Status : 'DRAFT',\n Date: typeof parsed.Date === 'string' ? parsed.Date : '',\n DueDate: typeof parsed.DueDate === 'string' ? parsed.DueDate : '',\n ContactID: typeof parsed.ContactID === 'string' ? parsed.ContactID : '',\n ContactName: typeof parsed.ContactName === 'string' ? parsed.ContactName : '',\n Reference: typeof parsed.Reference === 'string' ? parsed.Reference : '',\n InvoiceNumber: typeof parsed.InvoiceNumber === 'string' ? parsed.InvoiceNumber : '',\n CurrencyCode: typeof parsed.CurrencyCode === 'string' ? parsed.CurrencyCode : '',\n LineItems: normaliseLineItems(parsed.LineItems),\n };\n } catch {\n return {\n connection: null,\n tenant_id: '',\n Type: 'ACCREC',\n Status: 'DRAFT',\n Date: '',\n DueDate: '',\n ContactID: '',\n ContactName: '',\n Reference: '',\n InvoiceNumber: '',\n CurrencyCode: '',\n LineItems: emptyLineItems(),\n };\n }\n}\n\nexport function serializeXeroInvoiceCreateInputs(inputs: XeroInvoiceCreateInputs): string {\n return JSON.stringify(inputs);\n}\n\n/**\n * Numeric field keys — stringly-typed in the editor, `Number()`-coerced at\n * execute time before sending to Xero.\n */\nexport const NUMERIC_LINE_ITEM_FIELDS: Array<keyof XeroLineItemCells> = ['Quantity', 'UnitAmount', 'DiscountRate'];\n\n/**\n * Finalise a single resolved cells object into a Xero LineItem — strips empty\n * fields and coerces numerics. Exported so both the action run() and the\n * diff resolver can reuse the coercion rules.\n */\nexport function finaliseLineItem(cells: XeroLineItemCells): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of LINE_ITEM_FIELD_KEYS) {\n const raw = (cells[key] ?? '').trim();\n if (!raw) continue;\n if (NUMERIC_LINE_ITEM_FIELDS.includes(key)) {\n const n = Number(raw);\n if (!Number.isFinite(n)) {\n throw new Error(`Line item field ${key} must be a number; got \"${raw}\"`);\n }\n out[key] = n;\n } else {\n out[key] = raw;\n }\n }\n if (!out.Description) {\n out.Description = 'payment';\n }\n return out;\n}\n"],"mappings":"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","names":[]}
|