@happyvertical/smrt-planner 0.0.0-stage → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (815) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +170 -2
  3. package/app/404.html +80 -0
  4. package/app/_app/immutable/assets/0.B5zXkXe_.css +1 -0
  5. package/app/_app/immutable/assets/10.hpcnxvK1.css +1 -0
  6. package/app/_app/immutable/assets/11.D7zoXfVV.css +1 -0
  7. package/app/_app/immutable/assets/12.CPobm1ED.css +1 -0
  8. package/app/_app/immutable/assets/2.CyaWdRdI.css +1 -0
  9. package/app/_app/immutable/assets/3.BlPQOes8.css +1 -0
  10. package/app/_app/immutable/assets/8.2gQeKBp_.css +1 -0
  11. package/app/_app/immutable/assets/9.HOPT4xtg.css +1 -0
  12. package/app/_app/immutable/assets/AiSetup.Cb22AigN.css +1 -0
  13. package/app/_app/immutable/assets/Button.DkP0qkG9.css +1 -0
  14. package/app/_app/immutable/assets/ConnectTools.BgIJOOGW.css +1 -0
  15. package/app/_app/immutable/assets/FieldMapForm.BCU-4pO4.css +1 -0
  16. package/app/_app/immutable/assets/ModelPage.Dd3LcMta.css +1 -0
  17. package/app/_app/immutable/assets/SectionActions.CTkVuNMF.css +1 -0
  18. package/app/_app/immutable/assets/SectionIcons.5Udq9vN-.css +1 -0
  19. package/app/_app/immutable/assets/SegmentedControl.B8SrQacd.css +1 -0
  20. package/app/_app/immutable/assets/dist.C5nHBk_O.css +1 -0
  21. package/app/_app/immutable/assets/feedback.BVKAwFck.css +1 -0
  22. package/app/_app/immutable/assets/forms.BChZ2RWM.css +1 -0
  23. package/app/_app/immutable/assets/inter-latin-ext.B_-bZUTo.woff2 +0 -0
  24. package/app/_app/immutable/assets/inter-latin.8kRkwJBP.woff2 +0 -0
  25. package/app/_app/immutable/assets/jetbrains-mono-latin-ext.Bnd2h4Br.woff2 +0 -0
  26. package/app/_app/immutable/assets/jetbrains-mono-latin.Db4Uuiha.woff2 +0 -0
  27. package/app/_app/immutable/assets/ort-wasm-simd-threaded.asyncify.CxOG5pUO.wasm +0 -0
  28. package/app/_app/immutable/assets/percent.LH0z-ozZ.css +1 -0
  29. package/app/_app/immutable/assets/space-grotesk-latin-ext.wJGaI8U0.woff2 +0 -0
  30. package/app/_app/immutable/assets/space-grotesk-latin.DPT1xrvW.woff2 +0 -0
  31. package/app/_app/immutable/assets/store.CGDwHkkF.css +1 -0
  32. package/app/_app/immutable/assets/ui.B1A1Zl2p.css +1 -0
  33. package/app/_app/immutable/assets/workspace.BIMkuZDb.css +1 -0
  34. package/app/_app/immutable/chunks/1okeBSoq.js +1 -0
  35. package/app/_app/immutable/chunks/B32EWqI8.js +9 -0
  36. package/app/_app/immutable/chunks/B4Kevpe0.js +1 -0
  37. package/app/_app/immutable/chunks/BJfAXhak.js +3 -0
  38. package/app/_app/immutable/chunks/BKwRT_1p.js +1 -0
  39. package/app/_app/immutable/chunks/BQxY8kkL.js +1 -0
  40. package/app/_app/immutable/chunks/BS4h9ES-.js +1 -0
  41. package/app/_app/immutable/chunks/BWPhGFHl.js +1 -0
  42. package/app/_app/immutable/chunks/BYcBM-fh.js +1 -0
  43. package/app/_app/immutable/chunks/BYde9M_U.js +1 -0
  44. package/app/_app/immutable/chunks/BegKiy2G.js +1 -0
  45. package/app/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  46. package/app/_app/immutable/chunks/C7zBd-pD.js +1 -0
  47. package/app/_app/immutable/chunks/CA-A9Ngs.js +1 -0
  48. package/app/_app/immutable/chunks/CMhpRMKg.js +1 -0
  49. package/app/_app/immutable/chunks/CPRHZZeW.js +1 -0
  50. package/app/_app/immutable/chunks/CRQ1Pmzr.js +1 -0
  51. package/app/_app/immutable/chunks/CV-2zt0K.js +2 -0
  52. package/app/_app/immutable/chunks/CWtfVMDz.js +1 -0
  53. package/app/_app/immutable/chunks/CgAkqYsL.js +1 -0
  54. package/app/_app/immutable/chunks/Chyo8rdT.js +3 -0
  55. package/app/_app/immutable/chunks/CmmuWmp6.js +2 -0
  56. package/app/_app/immutable/chunks/CrFNLK0f.js +1 -0
  57. package/app/_app/immutable/chunks/CrO3W89x.js +1 -0
  58. package/app/_app/immutable/chunks/CyUMm_Wp.js +1 -0
  59. package/app/_app/immutable/chunks/CygC84VT.js +2 -0
  60. package/app/_app/immutable/chunks/D0VgZnk1.js +1 -0
  61. package/app/_app/immutable/chunks/D333l2GL.js +2 -0
  62. package/app/_app/immutable/chunks/D71UrO5c.js +1 -0
  63. package/app/_app/immutable/chunks/D7hhQvDO.js +1 -0
  64. package/app/_app/immutable/chunks/DD7gpKb2.js +1 -0
  65. package/app/_app/immutable/chunks/DJtH-lRi.js +3 -0
  66. package/app/_app/immutable/chunks/DNRgqfTx.js +1 -0
  67. package/app/_app/immutable/chunks/DRByVC-c.js +1 -0
  68. package/app/_app/immutable/chunks/DVRKjN-E.js +1 -0
  69. package/app/_app/immutable/chunks/D_J_XtJy.js +846 -0
  70. package/app/_app/immutable/chunks/Dbjm4OuC.js +1 -0
  71. package/app/_app/immutable/chunks/Dc4q22LH.js +42 -0
  72. package/app/_app/immutable/chunks/Dd_uD5pT.js +1 -0
  73. package/app/_app/immutable/chunks/Dp9GVO-9.js +1 -0
  74. package/app/_app/immutable/chunks/DqcD-WtP.js +1 -0
  75. package/app/_app/immutable/chunks/Dt-HX3Vu.js +1 -0
  76. package/app/_app/immutable/chunks/DyGfbRG-.js +1 -0
  77. package/app/_app/immutable/chunks/FbOxj-PF.js +69 -0
  78. package/app/_app/immutable/chunks/OJ_lLTHH.js +1 -0
  79. package/app/_app/immutable/chunks/QukgIHDX.js +1 -0
  80. package/app/_app/immutable/chunks/WxSPP8QW.js +4 -0
  81. package/app/_app/immutable/chunks/iET62IRm.js +2 -0
  82. package/app/_app/immutable/chunks/leQCwW2d.js +1 -0
  83. package/app/_app/immutable/chunks/p6bgzXiY.js +1 -0
  84. package/app/_app/immutable/chunks/uBIymjUX.js +1 -0
  85. package/app/_app/immutable/chunks/ufuM4XBq.js +33 -0
  86. package/app/_app/immutable/chunks/xihTtKlq.js +1 -0
  87. package/app/_app/immutable/entry/app.D5JJain6.js +2 -0
  88. package/app/_app/immutable/entry/start.CH9DJLgI.js +1 -0
  89. package/app/_app/immutable/nodes/0.CL1MxOva.js +10 -0
  90. package/app/_app/immutable/nodes/1.BO731RRg.js +1 -0
  91. package/app/_app/immutable/nodes/10.1nQxyH9H.js +4 -0
  92. package/app/_app/immutable/nodes/11.Cw0JnQF3.js +1 -0
  93. package/app/_app/immutable/nodes/12.BmZyLHbM.js +1 -0
  94. package/app/_app/immutable/nodes/2.BEw046av.js +17 -0
  95. package/app/_app/immutable/nodes/3.DvwpTAQA.js +1 -0
  96. package/app/_app/immutable/nodes/4.qrT4bnmS.js +1 -0
  97. package/app/_app/immutable/nodes/5.DDLa2uhV.js +1 -0
  98. package/app/_app/immutable/nodes/6.DN0QTY6z.js +1 -0
  99. package/app/_app/immutable/nodes/7.C_8N82Wq.js +1 -0
  100. package/app/_app/immutable/nodes/8.D2Mszsua.js +3 -0
  101. package/app/_app/immutable/nodes/9.CLYsywul.js +1 -0
  102. package/app/_app/immutable/workers/assets/ort-wasm-simd-threaded.asyncify-CxOG5pUO.wasm +0 -0
  103. package/app/_app/immutable/workers/llm.worker-wfCOG_uk.js +69 -0
  104. package/app/_app/immutable/workers/local-speech.worker-DWbfmFUk.js +51 -0
  105. package/app/_app/version.json +1 -0
  106. package/app/ai/index.html +89 -0
  107. package/app/blueprint/index.html +87 -0
  108. package/app/cookbook/index.html +87 -0
  109. package/app/index.html +103 -0
  110. package/app/m/ads/AdDeliveryTier/index.html +96 -0
  111. package/app/m/ads/AdEvent/index.html +96 -0
  112. package/app/m/ads/AdFormat/index.html +96 -0
  113. package/app/m/ads/AdGroup/index.html +96 -0
  114. package/app/m/ads/AdVariation/index.html +96 -0
  115. package/app/m/analytics/AnalyticsDataStream/index.html +96 -0
  116. package/app/m/analytics/AnalyticsEvent/index.html +96 -0
  117. package/app/m/analytics/AnalyticsProperty/index.html +96 -0
  118. package/app/m/analytics/AnalyticsReport/index.html +96 -0
  119. package/app/m/approvals/ApprovalEvent/index.html +96 -0
  120. package/app/m/approvals/ApprovalPolicy/index.html +96 -0
  121. package/app/m/approvals/ApprovalRequest/index.html +96 -0
  122. package/app/m/assets/Asset/index.html +96 -0
  123. package/app/m/assets/AssetAssociation/index.html +97 -0
  124. package/app/m/assets/AssetMetafield/index.html +96 -0
  125. package/app/m/assets/AssetStatus/index.html +96 -0
  126. package/app/m/assets/AssetType/index.html +96 -0
  127. package/app/m/assets/Folder/index.html +96 -0
  128. package/app/m/chat/AgentSession/index.html +96 -0
  129. package/app/m/chat/ChatMessage/index.html +97 -0
  130. package/app/m/chat/ChatParticipant/index.html +97 -0
  131. package/app/m/chat/ChatReaction/index.html +96 -0
  132. package/app/m/chat/ChatRoom/index.html +96 -0
  133. package/app/m/chat/ChatThread/index.html +97 -0
  134. package/app/m/chat/VoiceGatewayTurn/index.html +96 -0
  135. package/app/m/chat/VoiceSession/index.html +96 -0
  136. package/app/m/commerce/Agreement/index.html +96 -0
  137. package/app/m/commerce/Cart/index.html +96 -0
  138. package/app/m/commerce/Contract/index.html +96 -0
  139. package/app/m/commerce/ContractLineItem/index.html +97 -0
  140. package/app/m/commerce/Customer/index.html +96 -0
  141. package/app/m/commerce/Estimate/index.html +96 -0
  142. package/app/m/commerce/Fulfillment/index.html +96 -0
  143. package/app/m/commerce/FulfillmentLineItem/index.html +97 -0
  144. package/app/m/commerce/Invoice/index.html +96 -0
  145. package/app/m/commerce/InvoiceLineItem/index.html +97 -0
  146. package/app/m/commerce/Lease/index.html +96 -0
  147. package/app/m/commerce/LicenseSale/index.html +96 -0
  148. package/app/m/commerce/Order/index.html +96 -0
  149. package/app/m/commerce/Payment/index.html +96 -0
  150. package/app/m/commerce/PaymentAllocation/index.html +97 -0
  151. package/app/m/commerce/PaymentInstrument/index.html +96 -0
  152. package/app/m/commerce/PaymentIntent/index.html +96 -0
  153. package/app/m/commerce/Payout/index.html +96 -0
  154. package/app/m/commerce/ProductionOrder/index.html +96 -0
  155. package/app/m/commerce/PurchaseOrder/index.html +96 -0
  156. package/app/m/commerce/Vendor/index.html +96 -0
  157. package/app/m/commerce/WholesaleOrder/index.html +96 -0
  158. package/app/m/content/Content/index.html +96 -0
  159. package/app/m/content/ContentContribution/index.html +96 -0
  160. package/app/m/content/ContentContributionAttachment/index.html +96 -0
  161. package/app/m/content/ContentContributionRevision/index.html +96 -0
  162. package/app/m/content/ContentContributionType/index.html +96 -0
  163. package/app/m/content/ContentContributor/index.html +96 -0
  164. package/app/m/content/ContentCorrection/index.html +96 -0
  165. package/app/m/content/ContentFeedSource/index.html +96 -0
  166. package/app/m/content/ContentGovernanceAssignment/index.html +96 -0
  167. package/app/m/content/ContentGovernancePolicy/index.html +96 -0
  168. package/app/m/content/ContentGovernanceProfile/index.html +96 -0
  169. package/app/m/content/ContentReference/index.html +96 -0
  170. package/app/m/content/ContentReview/index.html +96 -0
  171. package/app/m/content/ContentVersion/index.html +96 -0
  172. package/app/m/content/Contents/index.html +96 -0
  173. package/app/m/events/Event/index.html +96 -0
  174. package/app/m/events/EventParticipant/index.html +97 -0
  175. package/app/m/events/EventSeries/index.html +96 -0
  176. package/app/m/events/EventType/index.html +96 -0
  177. package/app/m/facts/Fact/index.html +96 -0
  178. package/app/m/facts/FactContent/index.html +96 -0
  179. package/app/m/facts/FactEvidence/index.html +96 -0
  180. package/app/m/facts/FactSource/index.html +96 -0
  181. package/app/m/facts/FactSubject/index.html +96 -0
  182. package/app/m/facts/FactTag/index.html +96 -0
  183. package/app/m/fields/FieldPolicy/index.html +96 -0
  184. package/app/m/fields/FieldPolicySuggestion/index.html +96 -0
  185. package/app/m/fields/FieldUsageCounter/index.html +96 -0
  186. package/app/m/images/Image/index.html +96 -0
  187. package/app/m/inventory/InventoryLocation/index.html +96 -0
  188. package/app/m/inventory/StockLevel/index.html +96 -0
  189. package/app/m/inventory/StockMovement/index.html +96 -0
  190. package/app/m/ledgers/Account/index.html +96 -0
  191. package/app/m/ledgers/Journal/index.html +96 -0
  192. package/app/m/ledgers/JournalEntry/index.html +97 -0
  193. package/app/m/manufacturing/Assembly/index.html +96 -0
  194. package/app/m/manufacturing/BillOfMaterials/index.html +96 -0
  195. package/app/m/manufacturing/BomLine/index.html +96 -0
  196. package/app/m/manufacturing/Operation/index.html +96 -0
  197. package/app/m/manufacturing/ProductionRun/index.html +96 -0
  198. package/app/m/manufacturing/ProductionRunCompletion/index.html +96 -0
  199. package/app/m/manufacturing/RoutingStep/index.html +96 -0
  200. package/app/m/marketing/Campaign/index.html +96 -0
  201. package/app/m/marketing/CampaignChannel/index.html +96 -0
  202. package/app/m/marketing/CampaignMetricSnapshot/index.html +96 -0
  203. package/app/m/messages/Account/index.html +96 -0
  204. package/app/m/messages/Attachment/index.html +96 -0
  205. package/app/m/messages/Blacklist/index.html +96 -0
  206. package/app/m/messages/Email/failed-sends/index.html +96 -0
  207. package/app/m/messages/Email/index.html +96 -0
  208. package/app/m/messages/Email/mailbox/index.html +96 -0
  209. package/app/m/messages/EmailAccount/index.html +96 -0
  210. package/app/m/messages/EmailFolder/index.html +96 -0
  211. package/app/m/messages/Message/index.html +96 -0
  212. package/app/m/messages/MessagingEndpoint/index.html +96 -0
  213. package/app/m/messages/PersonaMessageRoute/index.html +96 -0
  214. package/app/m/messages/SlackAccount/index.html +96 -0
  215. package/app/m/messages/SlackMessage/index.html +96 -0
  216. package/app/m/messages/TelegramAccount/index.html +96 -0
  217. package/app/m/messages/Tweet/index.html +96 -0
  218. package/app/m/messages/TwitterAccount/index.html +96 -0
  219. package/app/m/messages/Whitelist/index.html +96 -0
  220. package/app/m/messages/ZulipAccount/index.html +96 -0
  221. package/app/m/places/Place/index.html +96 -0
  222. package/app/m/places/PlaceType/index.html +96 -0
  223. package/app/m/preferences/UiPreferenceRecord/index.html +96 -0
  224. package/app/m/products/Category/index.html +96 -0
  225. package/app/m/products/Material/index.html +96 -0
  226. package/app/m/products/Product/index.html +96 -0
  227. package/app/m/products/Product/ingredients/index.html +96 -0
  228. package/app/m/products/ProductVariant/index.html +97 -0
  229. package/app/m/products/Sku/index.html +97 -0
  230. package/app/m/profiles/ApiKey/index.html +96 -0
  231. package/app/m/profiles/Bot/index.html +96 -0
  232. package/app/m/profiles/MagicLinkToken/index.html +96 -0
  233. package/app/m/profiles/NostrIdentity/index.html +96 -0
  234. package/app/m/profiles/OidcIdentity/index.html +96 -0
  235. package/app/m/profiles/Organization/index.html +96 -0
  236. package/app/m/profiles/Person/index.html +96 -0
  237. package/app/m/profiles/Profile/index.html +96 -0
  238. package/app/m/profiles/ProfileMetadata/index.html +96 -0
  239. package/app/m/profiles/ProfileMetafield/index.html +96 -0
  240. package/app/m/profiles/ProfileRelationship/index.html +96 -0
  241. package/app/m/profiles/ProfileRelationshipTerm/index.html +96 -0
  242. package/app/m/profiles/ProfileRelationshipType/index.html +96 -0
  243. package/app/m/profiles/ProfileType/index.html +96 -0
  244. package/app/m/projects/Comment/index.html +97 -0
  245. package/app/m/projects/Issue/index.html +96 -0
  246. package/app/m/projects/Label/index.html +96 -0
  247. package/app/m/projects/Project/index.html +96 -0
  248. package/app/m/projects/ProjectIntegration/index.html +96 -0
  249. package/app/m/projects/PullRequest/index.html +96 -0
  250. package/app/m/projects/Repository/index.html +96 -0
  251. package/app/m/properties/Property/index.html +96 -0
  252. package/app/m/properties/Zone/index.html +96 -0
  253. package/app/m/reports/RuntimeReport/index.html +96 -0
  254. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +96 -0
  255. package/app/m/reports/SmrtReportLock/index.html +96 -0
  256. package/app/m/reports/SmrtReportRefreshTask/index.html +96 -0
  257. package/app/m/reports/SmrtReportRun/index.html +96 -0
  258. package/app/m/reports/SmrtReportSchedule/index.html +96 -0
  259. package/app/m/reports/SmrtReportWatermark/index.html +96 -0
  260. package/app/m/sales/AttributionException/index.html +96 -0
  261. package/app/m/sales/AttributionPolicy/index.html +96 -0
  262. package/app/m/sales/Commission/index.html +96 -0
  263. package/app/m/sales/CommissionAdjustment/index.html +96 -0
  264. package/app/m/sales/CommissionPayout/index.html +96 -0
  265. package/app/m/sales/CommissionPlan/index.html +96 -0
  266. package/app/m/sales/Earner/index.html +96 -0
  267. package/app/m/sales/EarnerSourceAttribution/index.html +96 -0
  268. package/app/m/sales/EarningEvent/index.html +96 -0
  269. package/app/m/sales/ExecutedAgreement/index.html +96 -0
  270. package/app/m/sales/Lead/index.html +96 -0
  271. package/app/m/sales/Opportunity/index.html +96 -0
  272. package/app/m/sales/OpportunityConversion/index.html +96 -0
  273. package/app/m/sales/PipelineDefinition/index.html +96 -0
  274. package/app/m/sales/PipelineStage/index.html +97 -0
  275. package/app/m/sales/Referral/index.html +96 -0
  276. package/app/m/sales/ReferralAgreement/index.html +96 -0
  277. package/app/m/sales/ReferralLink/index.html +96 -0
  278. package/app/m/sales/ReferralProgram/index.html +96 -0
  279. package/app/m/sales/ReferralTermSnapshot/index.html +96 -0
  280. package/app/m/sales/ReferralTouch/index.html +96 -0
  281. package/app/m/sales/Referrer/index.html +96 -0
  282. package/app/m/sales/SalesActivity/index.html +96 -0
  283. package/app/m/sales/SalesRepresentative/index.html +96 -0
  284. package/app/m/sites/Site/index.html +96 -0
  285. package/app/m/sites/SiteAgentBinding/index.html +96 -0
  286. package/app/m/social/OAuthState/index.html +96 -0
  287. package/app/m/social/SocialAccount/index.html +96 -0
  288. package/app/m/social/SocialPost/index.html +96 -0
  289. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +96 -0
  290. package/app/m/subscriptions/BillingAdjustment/index.html +96 -0
  291. package/app/m/subscriptions/ClientCharge/index.html +96 -0
  292. package/app/m/subscriptions/CreditGrant/index.html +96 -0
  293. package/app/m/subscriptions/PricingRule/index.html +96 -0
  294. package/app/m/subscriptions/RetailCharge/index.html +96 -0
  295. package/app/m/subscriptions/SpendingPolicy/index.html +96 -0
  296. package/app/m/subscriptions/SubscriptionPlan/index.html +96 -0
  297. package/app/m/subscriptions/TenantSubscription/index.html +96 -0
  298. package/app/m/subscriptions/TenantUsageMetric/index.html +96 -0
  299. package/app/m/support/ServiceTimeEntry/index.html +96 -0
  300. package/app/m/support/SupportAiRun/index.html +96 -0
  301. package/app/m/support/SupportAvailability/index.html +96 -0
  302. package/app/m/support/SupportCase/index.html +96 -0
  303. package/app/m/support/SupportCaseEvent/index.html +96 -0
  304. package/app/m/support/SupportChannelBinding/index.html +96 -0
  305. package/app/m/support/SupportCharge/index.html +96 -0
  306. package/app/m/support/SupportCompensation/index.html +96 -0
  307. package/app/m/support/SupportCompensationPlan/index.html +96 -0
  308. package/app/m/support/SupportEscalation/index.html +96 -0
  309. package/app/m/support/SupportInteraction/index.html +96 -0
  310. package/app/m/support/SupportPlan/index.html +96 -0
  311. package/app/m/support/SupportPolicy/index.html +96 -0
  312. package/app/m/support/SupportQualification/index.html +96 -0
  313. package/app/m/support/SupportServiceTarget/index.html +96 -0
  314. package/app/m/support/SupportSpecialist/index.html +96 -0
  315. package/app/m/support/SupportWorkLink/index.html +96 -0
  316. package/app/m/tags/Tag/index.html +96 -0
  317. package/app/m/tags/TagAlias/index.html +96 -0
  318. package/app/m/timesheets/AttendanceBreak/index.html +96 -0
  319. package/app/m/timesheets/AttendancePunch/index.html +96 -0
  320. package/app/m/timesheets/ServiceChargeSnapshot/index.html +96 -0
  321. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +96 -0
  322. package/app/m/timesheets/ServiceTimeEntry/index.html +96 -0
  323. package/app/m/users/AccessRequest/index.html +96 -0
  324. package/app/m/users/Group/index.html +96 -0
  325. package/app/m/users/GroupMember/index.html +96 -0
  326. package/app/m/users/GroupRole/index.html +96 -0
  327. package/app/m/users/Membership/index.html +97 -0
  328. package/app/m/users/MembershipOverride/index.html +96 -0
  329. package/app/m/users/Permission/index.html +96 -0
  330. package/app/m/users/ResourceGrant/index.html +96 -0
  331. package/app/m/users/Role/index.html +96 -0
  332. package/app/m/users/RolePermission/index.html +96 -0
  333. package/app/m/users/Session/index.html +96 -0
  334. package/app/m/users/Tenant/index.html +96 -0
  335. package/app/m/users/TenantIntegration/index.html +96 -0
  336. package/app/m/users/TenantPermissionOverride/index.html +96 -0
  337. package/app/m/users/User/index.html +96 -0
  338. package/app/m/users/UsersCliAuthRequest/index.html +96 -0
  339. package/app/m/users/UsersMagicLinkToken/index.html +96 -0
  340. package/app/m/video/Character/index.html +96 -0
  341. package/app/m/video/CharacterAsset/index.html +96 -0
  342. package/app/m/video/CompositeJob/index.html +96 -0
  343. package/app/m/video/Performer/index.html +96 -0
  344. package/app/m/video/PerformerAsset/index.html +96 -0
  345. package/app/m/video/Scene/index.html +96 -0
  346. package/app/m/video/SceneAsset/index.html +96 -0
  347. package/app/m/video/VideoComposition/index.html +96 -0
  348. package/app/m/video/VideoCompositionAsset/index.html +96 -0
  349. package/app/m/video/VideoSequence/index.html +96 -0
  350. package/app/m/video/VideoSequenceAsset/index.html +96 -0
  351. package/app/m/video/VideoShot/index.html +96 -0
  352. package/app/m/video/VideoShotAsset/index.html +96 -0
  353. package/app/m/video/VideoShotCharacter/index.html +96 -0
  354. package/app/m/video/VideoWorkflow/index.html +96 -0
  355. package/app/m/voice/VoiceOutput/index.html +96 -0
  356. package/app/m/voice/VoiceProfile/index.html +96 -0
  357. package/app/m/voice/VoiceSample/index.html +96 -0
  358. package/app/packages/ads/index.html +92 -0
  359. package/app/packages/analytics/index.html +92 -0
  360. package/app/packages/approvals/index.html +92 -0
  361. package/app/packages/assets/index.html +92 -0
  362. package/app/packages/chat/index.html +92 -0
  363. package/app/packages/comments/index.html +92 -0
  364. package/app/packages/commerce/index.html +92 -0
  365. package/app/packages/content/index.html +92 -0
  366. package/app/packages/events/index.html +92 -0
  367. package/app/packages/expenses/index.html +92 -0
  368. package/app/packages/facts/index.html +92 -0
  369. package/app/packages/fields/index.html +92 -0
  370. package/app/packages/human-resources/index.html +92 -0
  371. package/app/packages/images/index.html +92 -0
  372. package/app/packages/index.html +90 -0
  373. package/app/packages/inventory/index.html +92 -0
  374. package/app/packages/ledgers/index.html +92 -0
  375. package/app/packages/manufacturing/index.html +92 -0
  376. package/app/packages/marketing/index.html +92 -0
  377. package/app/packages/messages/index.html +92 -0
  378. package/app/packages/places/index.html +92 -0
  379. package/app/packages/preferences/index.html +92 -0
  380. package/app/packages/products/index.html +92 -0
  381. package/app/packages/profiles/index.html +92 -0
  382. package/app/packages/projects/index.html +92 -0
  383. package/app/packages/properties/index.html +92 -0
  384. package/app/packages/reports/index.html +92 -0
  385. package/app/packages/sales/index.html +92 -0
  386. package/app/packages/sites/index.html +92 -0
  387. package/app/packages/social/index.html +92 -0
  388. package/app/packages/subscriptions/index.html +92 -0
  389. package/app/packages/support/index.html +92 -0
  390. package/app/packages/tags/index.html +92 -0
  391. package/app/packages/timesheets/index.html +92 -0
  392. package/app/packages/users/index.html +92 -0
  393. package/app/packages/video/index.html +92 -0
  394. package/app/packages/voice/index.html +92 -0
  395. package/app/recipes/account-access/help/index.html +93 -0
  396. package/app/recipes/account-access/index.html +95 -0
  397. package/app/recipes/activity/help/index.html +93 -0
  398. package/app/recipes/activity/index.html +94 -0
  399. package/app/recipes/agreements/help/index.html +93 -0
  400. package/app/recipes/agreements/index.html +96 -0
  401. package/app/recipes/analytics.reports/help/index.html +93 -0
  402. package/app/recipes/analytics.reports/index.html +94 -0
  403. package/app/recipes/assets/help/index.html +93 -0
  404. package/app/recipes/assets/index.html +95 -0
  405. package/app/recipes/billing/help/index.html +93 -0
  406. package/app/recipes/billing/index.html +95 -0
  407. package/app/recipes/chat.assistant/help/index.html +93 -0
  408. package/app/recipes/chat.assistant/index.html +94 -0
  409. package/app/recipes/comments/help/index.html +93 -0
  410. package/app/recipes/comments/index.html +94 -0
  411. package/app/recipes/commerce.customers/help/index.html +93 -0
  412. package/app/recipes/commerce.customers/index.html +94 -0
  413. package/app/recipes/commerce.estimates/help/index.html +93 -0
  414. package/app/recipes/commerce.estimates/index.html +94 -0
  415. package/app/recipes/commerce.purchases/help/index.html +93 -0
  416. package/app/recipes/commerce.purchases/index.html +94 -0
  417. package/app/recipes/commerce.sales/help/index.html +93 -0
  418. package/app/recipes/commerce.sales/index.html +94 -0
  419. package/app/recipes/commerce.vendors/help/index.html +93 -0
  420. package/app/recipes/commerce.vendors/index.html +94 -0
  421. package/app/recipes/commerce.wholesale/help/index.html +93 -0
  422. package/app/recipes/commerce.wholesale/index.html +94 -0
  423. package/app/recipes/events.calendar/help/index.html +93 -0
  424. package/app/recipes/events.calendar/index.html +94 -0
  425. package/app/recipes/fields.form-customization/help/index.html +93 -0
  426. package/app/recipes/fields.form-customization/index.html +94 -0
  427. package/app/recipes/inventory.stock/help/index.html +93 -0
  428. package/app/recipes/inventory.stock/index.html +94 -0
  429. package/app/recipes/ledgers.bookkeeping/help/index.html +93 -0
  430. package/app/recipes/ledgers.bookkeeping/index.html +94 -0
  431. package/app/recipes/messages/help/index.html +93 -0
  432. package/app/recipes/messages/index.html +95 -0
  433. package/app/recipes/products/help/index.html +93 -0
  434. package/app/recipes/products/index.html +96 -0
  435. package/app/recipes/projects.tracker/help/index.html +93 -0
  436. package/app/recipes/projects.tracker/index.html +94 -0
  437. package/app/recipes/reports.materialized/help/index.html +93 -0
  438. package/app/recipes/reports.materialized/index.html +94 -0
  439. package/app/recipes/sales.pipeline/help/index.html +93 -0
  440. package/app/recipes/sales.pipeline/index.html +94 -0
  441. package/app/recipes/tags.taxonomy/help/index.html +93 -0
  442. package/app/recipes/tags.taxonomy/index.html +94 -0
  443. package/app/recipes/team-collaboration/help/index.html +93 -0
  444. package/app/recipes/team-collaboration/index.html +94 -0
  445. package/app/s/custom-billing/index.html +89 -0
  446. package/app/s/custom-buying/index.html +89 -0
  447. package/app/s/custom-classes/index.html +89 -0
  448. package/app/s/custom-jobs/index.html +89 -0
  449. package/app/s/custom-kitchen/index.html +89 -0
  450. package/app/s/custom-material/index.html +89 -0
  451. package/app/s/custom-members/index.html +89 -0
  452. package/app/s/custom-parts/index.html +89 -0
  453. package/app/s/custom-schedule/index.html +89 -0
  454. package/app/s/custom-shop/index.html +89 -0
  455. package/app/s/custom-wholesale/index.html +89 -0
  456. package/app/s/section-access-control/index.html +89 -0
  457. package/app/s/section-account-security/index.html +89 -0
  458. package/app/s/section-accounting/index.html +89 -0
  459. package/app/s/section-activity/index.html +89 -0
  460. package/app/s/section-agreements/index.html +89 -0
  461. package/app/s/section-analytics/index.html +89 -0
  462. package/app/s/section-assets/index.html +89 -0
  463. package/app/s/section-billing/index.html +89 -0
  464. package/app/s/section-calendar/index.html +89 -0
  465. package/app/s/section-catalog/index.html +89 -0
  466. package/app/s/section-chat.assistant/index.html +89 -0
  467. package/app/s/section-comments/index.html +89 -0
  468. package/app/s/section-fields.form-customization/index.html +89 -0
  469. package/app/s/section-messages/index.html +89 -0
  470. package/app/s/section-more/index.html +89 -0
  471. package/app/s/section-operations/index.html +89 -0
  472. package/app/s/section-projects/index.html +89 -0
  473. package/app/s/section-purchasing/index.html +89 -0
  474. package/app/s/section-reports.materialized/index.html +89 -0
  475. package/app/s/section-sales/index.html +89 -0
  476. package/app/s/section-taxonomy/index.html +89 -0
  477. package/app/s/section-team/index.html +89 -0
  478. package/dist/ai/echo-gate.d.ts +13 -0
  479. package/dist/ai/echo-gate.js +21 -0
  480. package/dist/ai/icons.d.ts +9 -0
  481. package/dist/ai/icons.js +9 -0
  482. package/dist/ai/instance.d.ts +3 -0
  483. package/dist/ai/instance.js +25 -0
  484. package/dist/ai/state.svelte.d.ts +125 -0
  485. package/dist/ai/state.svelte.js +286 -0
  486. package/dist/ai/status.d.ts +67 -0
  487. package/dist/ai/status.js +117 -0
  488. package/dist/assets/smrt-mark.svg +38 -0
  489. package/dist/assistant/change.d.ts +101 -0
  490. package/dist/assistant/change.js +209 -0
  491. package/dist/assistant/engine.d.ts +20 -0
  492. package/dist/assistant/engine.js +43 -0
  493. package/dist/assistant/llm.worker.d.ts +1 -0
  494. package/dist/assistant/llm.worker.js +7 -0
  495. package/dist/assistant/match.d.ts +59 -0
  496. package/dist/assistant/match.js +271 -0
  497. package/dist/assistant/models.d.ts +38 -0
  498. package/dist/assistant/models.js +57 -0
  499. package/dist/assistant/offers.svelte.d.ts +36 -0
  500. package/dist/assistant/offers.svelte.js +59 -0
  501. package/dist/assistant/prefs.d.ts +14 -0
  502. package/dist/assistant/prefs.js +32 -0
  503. package/dist/assistant/prompt.d.ts +23 -0
  504. package/dist/assistant/prompt.js +163 -0
  505. package/dist/assistant/session.svelte.d.ts +73 -0
  506. package/dist/assistant/session.svelte.js +163 -0
  507. package/dist/assistant/theme-undo.svelte.d.ts +38 -0
  508. package/dist/assistant/theme-undo.svelte.js +50 -0
  509. package/dist/assistant/transport.d.ts +73 -0
  510. package/dist/assistant/transport.js +231 -0
  511. package/dist/assistant/voice-host.d.ts +10 -0
  512. package/dist/assistant/voice-host.js +17 -0
  513. package/dist/assistant/voice.svelte.d.ts +107 -0
  514. package/dist/assistant/voice.svelte.js +261 -0
  515. package/dist/catalog/catalog.json +89663 -0
  516. package/dist/catalog/generate/build.d.ts +33 -0
  517. package/dist/catalog/generate/build.js +131 -0
  518. package/dist/catalog/generate/exclusions.d.ts +18 -0
  519. package/dist/catalog/generate/exclusions.js +33 -0
  520. package/dist/catalog/generate/extract.d.ts +90 -0
  521. package/dist/catalog/generate/extract.js +326 -0
  522. package/dist/catalog/generate/local.d.ts +8 -0
  523. package/dist/catalog/generate/local.js +45 -0
  524. package/dist/catalog/generate/recipe-demo.d.ts +11 -0
  525. package/dist/catalog/generate/recipe-demo.js +29 -0
  526. package/dist/catalog/generate/recipe-metadata.d.ts +12 -0
  527. package/dist/catalog/generate/recipe-metadata.js +138 -0
  528. package/dist/catalog/generate/registry.d.ts +14 -0
  529. package/dist/catalog/generate/registry.js +83 -0
  530. package/dist/catalog/index.d.ts +21 -0
  531. package/dist/catalog/index.js +53 -0
  532. package/dist/catalog/types.d.ts +141 -0
  533. package/dist/catalog/types.js +8 -0
  534. package/dist/components/AiSetup.svelte +499 -0
  535. package/dist/components/AiSetup.svelte.d.ts +8 -0
  536. package/dist/components/AiStatusIcons.svelte +86 -0
  537. package/dist/components/AiStatusIcons.svelte.d.ts +18 -0
  538. package/dist/components/AppSettings.svelte +100 -0
  539. package/dist/components/AppSettings.svelte.d.ts +10 -0
  540. package/dist/components/BrowserAssistant.svelte +314 -0
  541. package/dist/components/BrowserAssistant.svelte.d.ts +8 -0
  542. package/dist/components/ChildRecords.svelte +331 -0
  543. package/dist/components/ChildRecords.svelte.d.ts +15 -0
  544. package/dist/components/ConnectTools.svelte +145 -0
  545. package/dist/components/ConnectTools.svelte.d.ts +8 -0
  546. package/dist/components/CookbooksPanel.svelte +308 -0
  547. package/dist/components/CookbooksPanel.svelte.d.ts +3 -0
  548. package/dist/components/ExportPanel.svelte +217 -0
  549. package/dist/components/ExportPanel.svelte.d.ts +3 -0
  550. package/dist/components/FeatureCard.svelte +197 -0
  551. package/dist/components/FeatureCard.svelte.d.ts +13 -0
  552. package/dist/components/FeaturesPanel.svelte +155 -0
  553. package/dist/components/FeaturesPanel.svelte.d.ts +3 -0
  554. package/dist/components/FieldInput.svelte +307 -0
  555. package/dist/components/FieldInput.svelte.d.ts +24 -0
  556. package/dist/components/FieldMapForm.svelte +173 -0
  557. package/dist/components/FieldMapForm.svelte.d.ts +18 -0
  558. package/dist/components/FormWorkspace.svelte +274 -0
  559. package/dist/components/FormWorkspace.svelte.d.ts +19 -0
  560. package/dist/components/HelpView.svelte +129 -0
  561. package/dist/components/HelpView.svelte.d.ts +12 -0
  562. package/dist/components/ModelOptions.svelte +239 -0
  563. package/dist/components/ModelOptions.svelte.d.ts +12 -0
  564. package/dist/components/ModelPage.svelte +295 -0
  565. package/dist/components/ModelPage.svelte.d.ts +9 -0
  566. package/dist/components/ModelWorkspace.svelte +488 -0
  567. package/dist/components/ModelWorkspace.svelte.d.ts +32 -0
  568. package/dist/components/PlannerEditBridge.svelte +36 -0
  569. package/dist/components/PlannerEditBridge.svelte.d.ts +3 -0
  570. package/dist/components/PlannerPalette.svelte +38 -0
  571. package/dist/components/PlannerPalette.svelte.d.ts +18 -0
  572. package/dist/components/RecipeCards.svelte +145 -0
  573. package/dist/components/RecipeCards.svelte.d.ts +3 -0
  574. package/dist/components/RecipeHelp.svelte +54 -0
  575. package/dist/components/RecipeHelp.svelte.d.ts +9 -0
  576. package/dist/components/RecipeOptions.svelte +160 -0
  577. package/dist/components/RecipeOptions.svelte.d.ts +9 -0
  578. package/dist/components/RecordFeatures.svelte +240 -0
  579. package/dist/components/RecordFeatures.svelte.d.ts +3 -0
  580. package/dist/components/RelationField.svelte +175 -0
  581. package/dist/components/RelationField.svelte.d.ts +16 -0
  582. package/dist/components/SectionActions.svelte +91 -0
  583. package/dist/components/SectionActions.svelte.d.ts +12 -0
  584. package/dist/components/SectionIcons.svelte +98 -0
  585. package/dist/components/SectionIcons.svelte.d.ts +15 -0
  586. package/dist/components/SectionOverview.svelte +65 -0
  587. package/dist/components/SectionOverview.svelte.d.ts +14 -0
  588. package/dist/components/SectionPage.svelte +230 -0
  589. package/dist/components/SectionPage.svelte.d.ts +7 -0
  590. package/dist/components/SettingsPanel.svelte +60 -0
  591. package/dist/components/SettingsPanel.svelte.d.ts +7 -0
  592. package/dist/components/ThemeBridge.svelte +56 -0
  593. package/dist/components/ThemeBridge.svelte.d.ts +3 -0
  594. package/dist/components/ThemeSection.svelte +167 -0
  595. package/dist/components/ThemeSection.svelte.d.ts +11 -0
  596. package/dist/components/VariantGridForm.svelte +309 -0
  597. package/dist/components/VariantGridForm.svelte.d.ts +12 -0
  598. package/dist/components/VoiceTyping.svelte +108 -0
  599. package/dist/components/VoiceTyping.svelte.d.ts +7 -0
  600. package/dist/cookbook/assemble.d.ts +16 -0
  601. package/dist/cookbook/assemble.js +29 -0
  602. package/dist/cookbook/file.d.ts +7 -0
  603. package/dist/cookbook/file.js +25 -0
  604. package/dist/cookbook/legacy.d.ts +9 -0
  605. package/dist/cookbook/legacy.js +87 -0
  606. package/dist/cookbook/migrate.d.ts +22 -0
  607. package/dist/cookbook/migrate.js +106 -0
  608. package/dist/cookbook/parse.d.ts +16 -0
  609. package/dist/cookbook/parse.js +246 -0
  610. package/dist/cookbook/storage.d.ts +45 -0
  611. package/dist/cookbook/storage.js +98 -0
  612. package/dist/cookbook/store.svelte.d.ts +94 -0
  613. package/dist/cookbook/store.svelte.js +231 -0
  614. package/dist/cookbook/types.d.ts +76 -0
  615. package/dist/cookbook/types.js +11 -0
  616. package/dist/cookbook/validate.d.ts +14 -0
  617. package/dist/cookbook/validate.js +29 -0
  618. package/dist/core/app.d.ts +12 -0
  619. package/dist/core/app.js +15 -0
  620. package/dist/core/catalog.d.ts +19 -0
  621. package/dist/core/catalog.js +9 -0
  622. package/dist/core/headless.d.ts +52 -0
  623. package/dist/core/headless.js +39 -0
  624. package/dist/core/index.d.ts +28 -0
  625. package/dist/core/index.js +28 -0
  626. package/dist/core/prompt.d.ts +38 -0
  627. package/dist/core/prompt.js +95 -0
  628. package/dist/core/reply.d.ts +60 -0
  629. package/dist/core/reply.js +89 -0
  630. package/dist/core/request.d.ts +15 -0
  631. package/dist/core/request.js +55 -0
  632. package/dist/data/children.d.ts +20 -0
  633. package/dist/data/children.js +80 -0
  634. package/dist/data/columns.d.ts +56 -0
  635. package/dist/data/columns.js +150 -0
  636. package/dist/data/context.d.ts +8 -0
  637. package/dist/data/context.js +19 -0
  638. package/dist/data/derived.d.ts +79 -0
  639. package/dist/data/derived.js +139 -0
  640. package/dist/data/display.d.ts +23 -0
  641. package/dist/data/display.js +84 -0
  642. package/dist/data/fakes.d.ts +52 -0
  643. package/dist/data/fakes.js +443 -0
  644. package/dist/data/format.d.ts +48 -0
  645. package/dist/data/format.js +121 -0
  646. package/dist/data/labels.d.ts +45 -0
  647. package/dist/data/labels.js +179 -0
  648. package/dist/data/packs.d.ts +95 -0
  649. package/dist/data/packs.js +830 -0
  650. package/dist/data/payments.d.ts +17 -0
  651. package/dist/data/payments.js +60 -0
  652. package/dist/data/planner-source.d.ts +7 -0
  653. package/dist/data/planner-source.js +32 -0
  654. package/dist/data/source.d.ts +119 -0
  655. package/dist/data/source.js +432 -0
  656. package/dist/features/catalogue.d.ts +96 -0
  657. package/dist/features/catalogue.js +225 -0
  658. package/dist/features/demo.d.ts +36 -0
  659. package/dist/features/demo.js +66 -0
  660. package/dist/features/palette.d.ts +39 -0
  661. package/dist/features/palette.js +53 -0
  662. package/dist/fields/address.d.ts +23 -0
  663. package/dist/fields/address.js +39 -0
  664. package/dist/fields/invalid.d.ts +2 -0
  665. package/dist/fields/invalid.js +8 -0
  666. package/dist/fields/modal.d.ts +7 -0
  667. package/dist/fields/modal.js +14 -0
  668. package/dist/fields/percent.d.ts +8 -0
  669. package/dist/fields/percent.js +16 -0
  670. package/dist/fields/renderer.d.ts +17 -0
  671. package/dist/fields/renderer.js +43 -0
  672. package/dist/forms/active.d.ts +16 -0
  673. package/dist/forms/active.js +24 -0
  674. package/dist/forms/fieldMap.d.ts +44 -0
  675. package/dist/forms/fieldMap.js +134 -0
  676. package/dist/forms/shared.d.ts +41 -0
  677. package/dist/forms/shared.js +138 -0
  678. package/dist/forms/stock.d.ts +28 -0
  679. package/dist/forms/stock.js +104 -0
  680. package/dist/forms/variantGrid.d.ts +83 -0
  681. package/dist/forms/variantGrid.js +283 -0
  682. package/dist/index.d.ts +17 -0
  683. package/dist/index.js +16 -0
  684. package/dist/inference/byo.svelte.d.ts +86 -0
  685. package/dist/inference/byo.svelte.js +267 -0
  686. package/dist/inference/config.d.ts +70 -0
  687. package/dist/inference/config.js +149 -0
  688. package/dist/inference/host.d.ts +40 -0
  689. package/dist/inference/host.js +57 -0
  690. package/dist/inference/openai.d.ts +59 -0
  691. package/dist/inference/openai.js +202 -0
  692. package/dist/inference/presets.d.ts +5 -0
  693. package/dist/inference/presets.js +46 -0
  694. package/dist/kitchen/client.d.ts +39 -0
  695. package/dist/kitchen/client.js +109 -0
  696. package/dist/kitchen/fragment.d.ts +30 -0
  697. package/dist/kitchen/fragment.js +49 -0
  698. package/dist/kitchen/state.svelte.d.ts +26 -0
  699. package/dist/kitchen/state.svelte.js +45 -0
  700. package/dist/library/apply.d.ts +17 -0
  701. package/dist/library/apply.js +32 -0
  702. package/dist/library/document.d.ts +12 -0
  703. package/dist/library/document.js +27 -0
  704. package/dist/library/icons.d.ts +6 -0
  705. package/dist/library/icons.js +26 -0
  706. package/dist/library/index.d.ts +8 -0
  707. package/dist/library/index.js +12 -0
  708. package/dist/library/library.json +788 -0
  709. package/dist/library/menu.d.ts +18 -0
  710. package/dist/library/menu.js +72 -0
  711. package/dist/library/state.svelte.d.ts +10 -0
  712. package/dist/library/state.svelte.js +28 -0
  713. package/dist/library/types.d.ts +57 -0
  714. package/dist/library/types.js +1 -0
  715. package/dist/overviews/definitions.d.ts +24 -0
  716. package/dist/overviews/definitions.js +97 -0
  717. package/dist/overviews/page.d.ts +21 -0
  718. package/dist/overviews/page.js +36 -0
  719. package/dist/overviews/registry.d.ts +44 -0
  720. package/dist/overviews/registry.js +191 -0
  721. package/dist/overviews/validate.d.ts +32 -0
  722. package/dist/overviews/validate.js +91 -0
  723. package/dist/planner/Planner.svelte +204 -0
  724. package/dist/planner/Planner.svelte.d.ts +4 -0
  725. package/dist/planner/app.svelte.d.ts +6 -0
  726. package/dist/planner/app.svelte.js +23 -0
  727. package/dist/planner/assistant.d.ts +46 -0
  728. package/dist/planner/assistant.js +122 -0
  729. package/dist/planner/commands/adapter.d.ts +121 -0
  730. package/dist/planner/commands/adapter.js +597 -0
  731. package/dist/planner/commands/catalog.d.ts +19 -0
  732. package/dist/planner/commands/catalog.js +54 -0
  733. package/dist/planner/commands/controller.svelte.d.ts +13 -0
  734. package/dist/planner/commands/controller.svelte.js +77 -0
  735. package/dist/planner/commands/index.d.ts +15 -0
  736. package/dist/planner/commands/index.js +15 -0
  737. package/dist/planner/commands/schemas.d.ts +25 -0
  738. package/dist/planner/commands/schemas.js +67 -0
  739. package/dist/planner/commands/slices.d.ts +18 -0
  740. package/dist/planner/commands/slices.js +49 -0
  741. package/dist/planner/commands/types.d.ts +80 -0
  742. package/dist/planner/commands/types.js +18 -0
  743. package/dist/planner/create.d.ts +4 -0
  744. package/dist/planner/create.js +22 -0
  745. package/dist/planner/instance.d.ts +15 -0
  746. package/dist/planner/instance.js +22 -0
  747. package/dist/planner/query.d.ts +16 -0
  748. package/dist/planner/query.js +28 -0
  749. package/dist/planner/selection.d.ts +15 -0
  750. package/dist/planner/selection.js +38 -0
  751. package/dist/planner/selection.svelte.d.ts +29 -0
  752. package/dist/planner/selection.svelte.js +54 -0
  753. package/dist/planner/tab.svelte.d.ts +11 -0
  754. package/dist/planner/tab.svelte.js +22 -0
  755. package/dist/planner/types.d.ts +41 -0
  756. package/dist/planner/types.js +1 -0
  757. package/dist/recipes/cards.d.ts +55 -0
  758. package/dist/recipes/cards.js +80 -0
  759. package/dist/recipes/features.d.ts +53 -0
  760. package/dist/recipes/features.js +97 -0
  761. package/dist/recipes/help/descriptions.json +373 -0
  762. package/dist/recipes/help.d.ts +121 -0
  763. package/dist/recipes/help.js +262 -0
  764. package/dist/recipes/index.d.ts +65 -0
  765. package/dist/recipes/index.js +95 -0
  766. package/dist/recipes/merge.d.ts +26 -0
  767. package/dist/recipes/merge.js +21 -0
  768. package/dist/recipes/overlay.json +409 -0
  769. package/dist/recipes/plan-data.d.ts +41 -0
  770. package/dist/recipes/plan-data.js +97 -0
  771. package/dist/recipes/plumbing.d.ts +70 -0
  772. package/dist/recipes/plumbing.js +185 -0
  773. package/dist/recipes/policy.d.ts +118 -0
  774. package/dist/recipes/policy.js +268 -0
  775. package/dist/recipes/resolve.d.ts +19 -0
  776. package/dist/recipes/resolve.js +65 -0
  777. package/dist/recipes/scope.d.ts +25 -0
  778. package/dist/recipes/scope.js +31 -0
  779. package/dist/recipes/sections.d.ts +49 -0
  780. package/dist/recipes/sections.js +84 -0
  781. package/dist/recipes/state.svelte.d.ts +67 -0
  782. package/dist/recipes/state.svelte.js +112 -0
  783. package/dist/recipes/types.d.ts +322 -0
  784. package/dist/recipes/types.js +8 -0
  785. package/dist/sections/entries.d.ts +30 -0
  786. package/dist/sections/entries.js +57 -0
  787. package/dist/sections/info.d.ts +16 -0
  788. package/dist/sections/info.js +39 -0
  789. package/dist/sections/path.d.ts +12 -0
  790. package/dist/sections/path.js +18 -0
  791. package/dist/settings/app-settings.d.ts +44 -0
  792. package/dist/settings/app-settings.js +138 -0
  793. package/dist/settings/currencies.d.ts +2 -0
  794. package/dist/settings/currencies.js +8 -0
  795. package/dist/theme/runtime.d.ts +14 -0
  796. package/dist/theme/runtime.js +27 -0
  797. package/dist/theme/theme.d.ts +47 -0
  798. package/dist/theme/theme.js +122 -0
  799. package/dist/upstream/CustomerSelect.svelte +60 -0
  800. package/dist/upstream/CustomerSelect.svelte.d.ts +17 -0
  801. package/dist/upstream/VendorSelect.svelte +60 -0
  802. package/dist/upstream/VendorSelect.svelte.d.ts +17 -0
  803. package/dist/upstream/overlay.d.ts +10 -0
  804. package/dist/upstream/overlay.js +49 -0
  805. package/dist/upstream/partySelect.d.ts +8 -0
  806. package/dist/upstream/partySelect.js +21 -0
  807. package/dist/upstream/partyTypes.d.ts +64 -0
  808. package/dist/upstream/partyTypes.js +8 -0
  809. package/dist/upstream/relations.d.ts +2 -0
  810. package/dist/upstream/relations.js +24 -0
  811. package/dist/upstream/selects.d.ts +26 -0
  812. package/dist/upstream/selects.js +20 -0
  813. package/dist/upstream/widgets.d.ts +20 -0
  814. package/dist/upstream/widgets.js +30 -0
  815. package/package.json +80 -3
@@ -0,0 +1,846 @@
1
+ import{Z as e,gt as t,mt as n,vt as r}from"./Chyo8rdT.js";var i=`@happyvertical/smrt-inventory`,a=`@happyvertical/smrt-products`,o={[`${i}:StockLevel`]:{skuId:`${a}:Sku`,locationId:`${i}:InventoryLocation`},[`${a}:Sku`]:{productId:`${a}:Product`,parentSkuId:`${a}:Sku`},[`${a}:ProductVariant`]:{productId:`${a}:Product`}},s=`@happyvertical/smrt-commerce`,c={[`${s}:Contract`]:{terms:`textarea`,notes:`textarea`,currency:`currency`},[`${s}:Customer`]:{notes:`textarea`},[`${s}:Vendor`]:{notes:`textarea`,currency:`currency`,defaultContactEmail:`email`,defaultContactPhone:`phone`},"@happyvertical/smrt-profiles:Profile":{email:`email`,description:`textarea`},"@happyvertical/smrt-products:Product":{description:`textarea`}},ee={[`${s}:Customer`]:[`defaultShippingAddress`,`defaultBillingAddress`]};function te(e,t){let n=[],r=e;for(;r&&!n.includes(r.id);)n.push(r.id),r=r.extends?t.get(r.extends):void 0;return n}function l(e,t,n){for(let r of t){let t=e[r]?.[n];if(t!==void 0)return t}}function ne(e,t){let n=e,r=e.ui?.widget?void 0:l(c,t,e.name);if(r&&(n={...n,ui:{...n.ui,widget:r}}),!e.related){let r=l(o,t,e.name);r&&(n={...n,type:`foreignKey`,related:r})}return n}function re(e){let t=new Map(e.packages.flatMap(e=>e.models.map(e=>[e.id,e]))),n=e.packages.map(e=>({...e,models:e.models.map(e=>{let n=te(e,t);return{...e,fields:e.fields.map(e=>ne(e,n))}})}));return{...e,packages:n}}var u=re({schema:1,registry:`https://npm.happyvertical.com`,packages:[{id:`ads`,packageName:`@happyvertical/smrt-ads`,version:`0.55.11`,description:`Advertising delivery and tracking models for SMRT framework`,models:[{id:`@happyvertical/smrt-ads:AdDeliveryTier`,name:`AdDeliveryTier`,collection:`addeliverytiers`,display:{label:`name`},fields:[{name:`name`,type:`text`,required:!1,default:``},{name:`priority`,type:`integer`,required:!1,default:0},{name:`pricingModel`,type:`text`,required:!1,enum:[`fixed`,`cpm`,`cpc`,`cpa`]},{name:`description`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/addeliverytiers/findByPriority`},{method:`POST`,path:`/addeliverytiers/findByPricingModel`},{method:`POST`,path:`/addeliverytiers/getHighestPriority`},{method:`POST`,path:`/addeliverytiers/findFixedPricing`},{method:`POST`,path:`/addeliverytiers/findCPM`},{method:`POST`,path:`/addeliverytiers/findPerformanceBased`},{method:`GET`,path:`/addeliverytiers`},{method:`GET`,path:`/addeliverytiers/[id]`},{method:`POST`,path:`/addeliverytiers`},{method:`PATCH`,path:`/addeliverytiers/[id]`}],mcp:[{operation:`get`,name:`addeliverytier_get`},{operation:`list`,name:`addeliverytier_list`},{operation:`findByPricingModel`,name:`addeliverytiercollection_findbypricingmodel`},{operation:`findByPriority`,name:`addeliverytiercollection_findbypriority`},{operation:`findCPM`,name:`addeliverytiercollection_findcpm`},{operation:`findFixedPricing`,name:`addeliverytiercollection_findfixedpricing`},{operation:`findPerformanceBased`,name:`addeliverytiercollection_findperformancebased`},{operation:`getHighestPriority`,name:`addeliverytiercollection_gethighestpriority`}],cli:[{operation:`create`,name:`addeliverytier_create`},{operation:`delete`,name:`addeliverytier_delete`},{operation:`get`,name:`addeliverytier_get`},{operation:`isFixedPricing`,name:`addeliverytier_isFixedPricing`},{operation:`isHigherPriorityThan`,name:`addeliverytier_isHigherPriorityThan`},{operation:`isPerformanceBased`,name:`addeliverytier_isPerformanceBased`},{operation:`list`,name:`addeliverytier_list`},{operation:`update`,name:`addeliverytier_update`},{operation:`findByPricingModel`,name:`addeliverytiercollection_findByPricingModel`},{operation:`findByPriority`,name:`addeliverytiercollection_findByPriority`},{operation:`findCPM`,name:`addeliverytiercollection_findCPM`},{operation:`findFixedPricing`,name:`addeliverytiercollection_findFixedPricing`},{operation:`findPerformanceBased`,name:`addeliverytiercollection_findPerformanceBased`},{operation:`getHighestPriority`,name:`addeliverytiercollection_getHighestPriority`}],methods:[{name:`findByPricingModel`,async:!0,parameters:[`pricingModel: PricingModel`],returnType:`Promise<AdDeliveryTier[]>`,aiCallable:!0},{name:`findByPriority`,async:!0,parameters:[],returnType:`Promise<AdDeliveryTier[]>`,aiCallable:!0},{name:`findCPM`,async:!0,parameters:[],returnType:`Promise<AdDeliveryTier[]>`,aiCallable:!0},{name:`findFixedPricing`,async:!0,parameters:[],returnType:`Promise<AdDeliveryTier[]>`,aiCallable:!0},{name:`findPerformanceBased`,async:!0,parameters:[],returnType:`Promise<AdDeliveryTier[]>`,aiCallable:!0},{name:`getHighestPriority`,async:!0,parameters:[],returnType:`Promise<AdDeliveryTier | null>`,aiCallable:!0},{name:`isFixedPricing`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isHigherPriorityThan`,async:!1,parameters:[`other: AdDeliveryTier`],returnType:`boolean`,aiCallable:!1},{name:`isPerformanceBased`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-ads:AdEvent`,name:`AdEvent`,collection:`adevents`,description:`AdEvent tracks ad impressions, clicks, and conversions. Events are immutable (append-only, no update/delete).`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`variationId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ads:AdVariation`},{name:`zoneId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-properties:Zone`},{name:`siteId`,type:`text`,required:!1,default:``},{name:`eventType`,type:`text`,required:!1,enum:[`impression`,`click`,`conversion`]},{name:`timestamp`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/adevents/findByVariation`},{method:`POST`,path:`/adevents/findByZone`},{method:`POST`,path:`/adevents/findBySite`},{method:`POST`,path:`/adevents/findByDateRange`},{method:`POST`,path:`/adevents/findByType`},{method:`POST`,path:`/adevents/countByType`},{method:`POST`,path:`/adevents/countImpressions`},{method:`POST`,path:`/adevents/countClicks`},{method:`POST`,path:`/adevents/countConversions`},{method:`POST`,path:`/adevents/findImpressions`},{method:`POST`,path:`/adevents/findClicks`},{method:`POST`,path:`/adevents/findConversions`},{method:`POST`,path:`/adevents/getVariationStats`},{method:`POST`,path:`/adevents/findByTenant`},{method:`POST`,path:`/adevents/findGlobal`},{method:`POST`,path:`/adevents/findWithGlobals`},{method:`GET`,path:`/adevents`},{method:`POST`,path:`/adevents`}],mcp:[{operation:`create`,name:`adevent_create`},{operation:`countByType`,name:`adeventcollection_countbytype`},{operation:`countClicks`,name:`adeventcollection_countclicks`},{operation:`countConversions`,name:`adeventcollection_countconversions`},{operation:`countImpressions`,name:`adeventcollection_countimpressions`},{operation:`findByDateRange`,name:`adeventcollection_findbydaterange`},{operation:`findBySite`,name:`adeventcollection_findbysite`},{operation:`findByTenant`,name:`adeventcollection_findbytenant`},{operation:`findByType`,name:`adeventcollection_findbytype`},{operation:`findByVariation`,name:`adeventcollection_findbyvariation`},{operation:`findByZone`,name:`adeventcollection_findbyzone`},{operation:`findClicks`,name:`adeventcollection_findclicks`},{operation:`findConversions`,name:`adeventcollection_findconversions`},{operation:`findGlobal`,name:`adeventcollection_findglobal`},{operation:`findImpressions`,name:`adeventcollection_findimpressions`},{operation:`findWithGlobals`,name:`adeventcollection_findwithglobals`},{operation:`getVariationStats`,name:`adeventcollection_getvariationstats`}],cli:[],methods:[{name:`countByType`,async:!0,parameters:[`variationId: string`,`eventType: AdEventType`],returnType:`Promise<number>`,aiCallable:!0},{name:`countClicks`,async:!0,parameters:[`variationId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`countConversions`,async:!0,parameters:[`variationId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`countImpressions`,async:!0,parameters:[`variationId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`start: Date`,`end: Date`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findBySite`,async:!0,parameters:[`siteId: string`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`eventType: AdEventType`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findByVariation`,async:!0,parameters:[`variationId: string`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findByZone`,async:!0,parameters:[`zoneId: string`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findClicks`,async:!0,parameters:[],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findConversions`,async:!0,parameters:[],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findImpressions`,async:!0,parameters:[],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdEvent[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getVariationStats`,async:!0,parameters:[`variationId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`isClick`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isConversion`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isImpression`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-ads:AdVariation`,`@happyvertical/smrt-properties:Zone`],exposed:!0},{id:`@happyvertical/smrt-ads:AdFormat`,name:`AdFormat`,collection:`adformats`,display:{label:`name`},fields:[{name:`name`,type:`text`,required:!1,default:``},{name:`width`,type:`integer`,required:!1,default:0},{name:`height`,type:`integer`,required:!1,default:0},{name:`formatType`,type:`text`,required:!1,enum:[`banner`,`native`,`video`]},{name:`description`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/adformats/findByDimensions`},{method:`POST`,path:`/adformats/findByType`},{method:`POST`,path:`/adformats/findBanners`},{method:`POST`,path:`/adformats/findNative`},{method:`POST`,path:`/adformats/findVideo`},{method:`GET`,path:`/adformats`},{method:`GET`,path:`/adformats/[id]`},{method:`POST`,path:`/adformats`},{method:`PATCH`,path:`/adformats/[id]`}],mcp:[{operation:`get`,name:`adformat_get`},{operation:`list`,name:`adformat_list`},{operation:`findBanners`,name:`adformatcollection_findbanners`},{operation:`findByDimensions`,name:`adformatcollection_findbydimensions`},{operation:`findByType`,name:`adformatcollection_findbytype`},{operation:`findNative`,name:`adformatcollection_findnative`},{operation:`findVideo`,name:`adformatcollection_findvideo`}],cli:[{operation:`create`,name:`adformat_create`},{operation:`delete`,name:`adformat_delete`},{operation:`get`,name:`adformat_get`},{operation:`getDimensions`,name:`adformat_getDimensions`},{operation:`list`,name:`adformat_list`},{operation:`matchesDimensions`,name:`adformat_matchesDimensions`},{operation:`update`,name:`adformat_update`},{operation:`findBanners`,name:`adformatcollection_findBanners`},{operation:`findByDimensions`,name:`adformatcollection_findByDimensions`},{operation:`findByType`,name:`adformatcollection_findByType`},{operation:`findNative`,name:`adformatcollection_findNative`},{operation:`findVideo`,name:`adformatcollection_findVideo`}],methods:[{name:`findBanners`,async:!0,parameters:[],returnType:`Promise<AdFormat[]>`,aiCallable:!0},{name:`findByDimensions`,async:!0,parameters:[`width: number`,`height: number`],returnType:`Promise<AdFormat | null>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`formatType: AdFormatType`],returnType:`Promise<AdFormat[]>`,aiCallable:!0},{name:`findNative`,async:!0,parameters:[],returnType:`Promise<AdFormat[]>`,aiCallable:!0},{name:`findVideo`,async:!0,parameters:[],returnType:`Promise<AdFormat[]>`,aiCallable:!0},{name:`getDimensions`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`matchesDimensions`,async:!1,parameters:[`width: number`,`height: number`],returnType:`boolean`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-ads:AdGroup`,name:`AdGroup`,collection:`adgroups`,description:`AdGroup organizes ad creatives with targeting and budget controls.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:Contract`},{name:`tierId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ads:AdDeliveryTier`},{name:`name`,type:`text`,required:!1,default:``},{name:`verticalSlug`,type:`text`,required:!1,default:``},{name:`targeting`,type:`text`,required:!1,default:``},{name:`zoneIds`,type:`text`,required:!1,default:``},{name:`startDate`,type:`datetime`,required:!1},{name:`endDate`,type:`datetime`,required:!1},{name:`dailyBudget`,type:`decimal`,required:!1,default:0},{name:`totalBudget`,type:`decimal`,required:!1,default:0},{name:`status`,type:`text`,required:!1,enum:[`draft`,`active`,`paused`,`completed`]}],rest:[{method:`POST`,path:`/adgroups/findByContract`},{method:`POST`,path:`/adgroups/findByTier`},{method:`POST`,path:`/adgroups/findByStatus`},{method:`POST`,path:`/adgroups/findActive`},{method:`POST`,path:`/adgroups/findByVertical`},{method:`POST`,path:`/adgroups/findByZone`},{method:`POST`,path:`/adgroups/findEligibleForZone`},{method:`POST`,path:`/adgroups/findDrafts`},{method:`POST`,path:`/adgroups/findPaused`},{method:`POST`,path:`/adgroups/findCompleted`},{method:`POST`,path:`/adgroups/findByTenant`},{method:`POST`,path:`/adgroups/findGlobal`},{method:`POST`,path:`/adgroups/findWithGlobals`},{method:`GET`,path:`/adgroups`},{method:`GET`,path:`/adgroups/[id]`},{method:`POST`,path:`/adgroups`},{method:`PATCH`,path:`/adgroups/[id]`}],mcp:[{operation:`create`,name:`adgroup_create`},{operation:`get`,name:`adgroup_get`},{operation:`list`,name:`adgroup_list`},{operation:`findActive`,name:`adgroupcollection_findactive`},{operation:`findByContract`,name:`adgroupcollection_findbycontract`},{operation:`findByStatus`,name:`adgroupcollection_findbystatus`},{operation:`findByTenant`,name:`adgroupcollection_findbytenant`},{operation:`findByTier`,name:`adgroupcollection_findbytier`},{operation:`findByVertical`,name:`adgroupcollection_findbyvertical`},{operation:`findByZone`,name:`adgroupcollection_findbyzone`},{operation:`findCompleted`,name:`adgroupcollection_findcompleted`},{operation:`findDrafts`,name:`adgroupcollection_finddrafts`},{operation:`findEligibleForZone`,name:`adgroupcollection_findeligibleforzone`},{operation:`findGlobal`,name:`adgroupcollection_findglobal`},{operation:`findPaused`,name:`adgroupcollection_findpaused`},{operation:`findWithGlobals`,name:`adgroupcollection_findwithglobals`}],cli:[{operation:`addZoneId`,name:`adgroup_addZoneId`},{operation:`create`,name:`adgroup_create`},{operation:`delete`,name:`adgroup_delete`},{operation:`get`,name:`adgroup_get`},{operation:`getTargeting`,name:`adgroup_getTargeting`},{operation:`getZoneIds`,name:`adgroup_getZoneIds`},{operation:`hasEnded`,name:`adgroup_hasEnded`},{operation:`hasStarted`,name:`adgroup_hasStarted`},{operation:`hasZoneId`,name:`adgroup_hasZoneId`},{operation:`isActive`,name:`adgroup_isActive`},{operation:`isCompleted`,name:`adgroup_isCompleted`},{operation:`isDraft`,name:`adgroup_isDraft`},{operation:`isPaused`,name:`adgroup_isPaused`},{operation:`list`,name:`adgroup_list`},{operation:`removeZoneId`,name:`adgroup_removeZoneId`},{operation:`setTargeting`,name:`adgroup_setTargeting`},{operation:`setZoneIds`,name:`adgroup_setZoneIds`},{operation:`update`,name:`adgroup_update`},{operation:`findActive`,name:`adgroupcollection_findActive`},{operation:`findByContract`,name:`adgroupcollection_findByContract`},{operation:`findByStatus`,name:`adgroupcollection_findByStatus`},{operation:`findByTenant`,name:`adgroupcollection_findByTenant`},{operation:`findByTier`,name:`adgroupcollection_findByTier`},{operation:`findByVertical`,name:`adgroupcollection_findByVertical`},{operation:`findByZone`,name:`adgroupcollection_findByZone`},{operation:`findCompleted`,name:`adgroupcollection_findCompleted`},{operation:`findDrafts`,name:`adgroupcollection_findDrafts`},{operation:`findEligibleForZone`,name:`adgroupcollection_findEligibleForZone`},{operation:`findGlobal`,name:`adgroupcollection_findGlobal`},{operation:`findPaused`,name:`adgroupcollection_findPaused`},{operation:`findWithGlobals`,name:`adgroupcollection_findWithGlobals`}],methods:[{name:`addZoneId`,async:!1,parameters:[`zoneId: string`],returnType:`void`,aiCallable:!1},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: AdGroupStatus`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByTier`,async:!0,parameters:[`tierId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByVertical`,async:!0,parameters:[`verticalSlug: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findByZone`,async:!0,parameters:[`zoneId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findCompleted`,async:!0,parameters:[],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findEligibleForZone`,async:!0,parameters:[`zoneId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findPaused`,async:!0,parameters:[],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdGroup[]>`,aiCallable:!0},{name:`getTargeting`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getZoneIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`hasEnded`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`hasStarted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`hasZoneId`,async:!1,parameters:[`zoneId: string`],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPaused`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`removeZoneId`,async:!1,parameters:[`zoneId: string`],returnType:`void`,aiCallable:!1},{name:`setTargeting`,async:!1,parameters:[`rules: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setZoneIds`,async:!1,parameters:[`ids: string[]`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-ads:AdDeliveryTier`,`@happyvertical/smrt-commerce:Contract`],exposed:!0},{id:`@happyvertical/smrt-ads:AdVariation`,name:`AdVariation`,collection:`advariations`,description:`AdVariation represents a creative asset within an ad group. Supports A/B testing via weighted selection.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`groupId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ads:AdGroup`},{name:`formatId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ads:AdFormat`},{name:`assetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`name`,type:`text`,required:!1,default:``},{name:`clickUrl`,type:`text`,required:!1,default:``},{name:`altText`,type:`text`,required:!1,default:``},{name:`weight`,type:`integer`,required:!1,default:1},{name:`status`,type:`text`,required:!1,enum:[`draft`,`active`,`paused`]},{name:`impressions`,type:`integer`,required:!1,default:0},{name:`clicks`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/advariations/findByGroup`},{method:`POST`,path:`/advariations/findByFormat`},{method:`POST`,path:`/advariations/findActiveByGroup`},{method:`POST`,path:`/advariations/selectByWeight`},{method:`POST`,path:`/advariations/findByStatus`},{method:`POST`,path:`/advariations/findActive`},{method:`POST`,path:`/advariations/findDrafts`},{method:`POST`,path:`/advariations/findPaused`},{method:`POST`,path:`/advariations/findTopPerformers`},{method:`POST`,path:`/advariations/findByTenant`},{method:`POST`,path:`/advariations/findGlobal`},{method:`POST`,path:`/advariations/findWithGlobals`},{method:`GET`,path:`/advariations`},{method:`GET`,path:`/advariations/[id]`},{method:`POST`,path:`/advariations`},{method:`PATCH`,path:`/advariations/[id]`}],mcp:[{operation:`create`,name:`advariation_create`},{operation:`get`,name:`advariation_get`},{operation:`list`,name:`advariation_list`},{operation:`findActive`,name:`advariationcollection_findactive`},{operation:`findActiveByGroup`,name:`advariationcollection_findactivebygroup`},{operation:`findByFormat`,name:`advariationcollection_findbyformat`},{operation:`findByGroup`,name:`advariationcollection_findbygroup`},{operation:`findByStatus`,name:`advariationcollection_findbystatus`},{operation:`findByTenant`,name:`advariationcollection_findbytenant`},{operation:`findDrafts`,name:`advariationcollection_finddrafts`},{operation:`findGlobal`,name:`advariationcollection_findglobal`},{operation:`findPaused`,name:`advariationcollection_findpaused`},{operation:`findTopPerformers`,name:`advariationcollection_findtopperformers`},{operation:`findWithGlobals`,name:`advariationcollection_findwithglobals`},{operation:`selectByWeight`,name:`advariationcollection_selectbyweight`}],cli:[{operation:`create`,name:`advariation_create`},{operation:`delete`,name:`advariation_delete`},{operation:`get`,name:`advariation_get`},{operation:`getCTR`,name:`advariation_getCTR`},{operation:`isActive`,name:`advariation_isActive`},{operation:`isDraft`,name:`advariation_isDraft`},{operation:`isPaused`,name:`advariation_isPaused`},{operation:`list`,name:`advariation_list`},{operation:`recordClick`,name:`advariation_recordClick`},{operation:`recordImpression`,name:`advariation_recordImpression`},{operation:`update`,name:`advariation_update`},{operation:`findActive`,name:`advariationcollection_findActive`},{operation:`findActiveByGroup`,name:`advariationcollection_findActiveByGroup`},{operation:`findByFormat`,name:`advariationcollection_findByFormat`},{operation:`findByGroup`,name:`advariationcollection_findByGroup`},{operation:`findByStatus`,name:`advariationcollection_findByStatus`},{operation:`findByTenant`,name:`advariationcollection_findByTenant`},{operation:`findDrafts`,name:`advariationcollection_findDrafts`},{operation:`findGlobal`,name:`advariationcollection_findGlobal`},{operation:`findPaused`,name:`advariationcollection_findPaused`},{operation:`findTopPerformers`,name:`advariationcollection_findTopPerformers`},{operation:`findWithGlobals`,name:`advariationcollection_findWithGlobals`},{operation:`selectByWeight`,name:`advariationcollection_selectByWeight`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findActiveByGroup`,async:!0,parameters:[`groupId: string`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findByFormat`,async:!0,parameters:[`formatId: string`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findByGroup`,async:!0,parameters:[`groupId: string`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: AdVariationStatus`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findPaused`,async:!0,parameters:[],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findTopPerformers`,async:!0,parameters:[`limit?: number`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<AdVariation[]>`,aiCallable:!0},{name:`getCTR`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPaused`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recordClick`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`recordImpression`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`selectByWeight`,async:!0,parameters:[`groupId: string`],returnType:`Promise<AdVariation | null>`,aiCallable:!0}],references:[`@happyvertical/smrt-ads:AdFormat`,`@happyvertical/smrt-ads:AdGroup`,`@happyvertical/smrt-assets:Asset`],exposed:!0}],dependencies:[`assets`,`commerce`,`properties`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`analytics`,packageName:`@happyvertical/smrt-analytics`,version:`0.55.11`,description:`Analytics integration models for SMRT framework`,models:[{id:`@happyvertical/smrt-analytics:AnalyticsDataStream`,name:`AnalyticsDataStream`,collection:`analyticsdatastreams`,description:`AnalyticsDataStream represents a data stream (web, iOS, Android) for an analytics property.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`propertyId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-analytics:AnalyticsProperty`},{name:`displayName`,type:`text`,required:!1,default:``},{name:`streamType`,type:`text`,required:!1,enum:[`WEB_DATA_STREAM`,`ANDROID_APP_DATA_STREAM`,`IOS_APP_DATA_STREAM`]},{name:`externalId`,type:`text`,required:!1,default:``},{name:`measurementId`,type:`text`,required:!1,default:``},{name:`firebaseAppId`,type:`text`,required:!1,default:``},{name:`defaultUri`,type:`text`,required:!1,default:``},{name:`bundleId`,type:`text`,required:!1,default:``},{name:`packageName`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,enum:[`active`,`inactive`]},{name:`enhancedMeasurement`,type:`boolean`,required:!1,default:!0}],rest:[{method:`POST`,path:`/analyticsdatastreams/findByProperty`},{method:`POST`,path:`/analyticsdatastreams/findByExternalId`},{method:`POST`,path:`/analyticsdatastreams/findByMeasurementId`},{method:`POST`,path:`/analyticsdatastreams/findByType`},{method:`POST`,path:`/analyticsdatastreams/findWebStreams`},{method:`POST`,path:`/analyticsdatastreams/findIOSStreams`},{method:`POST`,path:`/analyticsdatastreams/findAndroidStreams`},{method:`POST`,path:`/analyticsdatastreams/findMobileStreams`},{method:`POST`,path:`/analyticsdatastreams/findByStatus`},{method:`POST`,path:`/analyticsdatastreams/findActive`},{method:`POST`,path:`/analyticsdatastreams/findActiveByProperty`},{method:`GET`,path:`/analyticsdatastreams`},{method:`GET`,path:`/analyticsdatastreams/[id]`},{method:`POST`,path:`/analyticsdatastreams`},{method:`PATCH`,path:`/analyticsdatastreams/[id]`}],mcp:[{operation:`get`,name:`analyticsdatastream_get`},{operation:`list`,name:`analyticsdatastream_list`},{operation:`findActive`,name:`analyticsdatastreamcollection_findactive`},{operation:`findActiveByProperty`,name:`analyticsdatastreamcollection_findactivebyproperty`},{operation:`findAndroidStreams`,name:`analyticsdatastreamcollection_findandroidstreams`},{operation:`findByExternalId`,name:`analyticsdatastreamcollection_findbyexternalid`},{operation:`findByMeasurementId`,name:`analyticsdatastreamcollection_findbymeasurementid`},{operation:`findByProperty`,name:`analyticsdatastreamcollection_findbyproperty`},{operation:`findByStatus`,name:`analyticsdatastreamcollection_findbystatus`},{operation:`findByType`,name:`analyticsdatastreamcollection_findbytype`},{operation:`findIOSStreams`,name:`analyticsdatastreamcollection_findiosstreams`},{operation:`findMobileStreams`,name:`analyticsdatastreamcollection_findmobilestreams`},{operation:`findWebStreams`,name:`analyticsdatastreamcollection_findwebstreams`}],cli:[{operation:`create`,name:`analyticsdatastream_create`},{operation:`delete`,name:`analyticsdatastream_delete`},{operation:`get`,name:`analyticsdatastream_get`},{operation:`getPlatformId`,name:`analyticsdatastream_getPlatformId`},{operation:`isAndroid`,name:`analyticsdatastream_isAndroid`},{operation:`isIOS`,name:`analyticsdatastream_isIOS`},{operation:`isMobileApp`,name:`analyticsdatastream_isMobileApp`},{operation:`isWeb`,name:`analyticsdatastream_isWeb`},{operation:`list`,name:`analyticsdatastream_list`},{operation:`update`,name:`analyticsdatastream_update`},{operation:`findActive`,name:`analyticsdatastreamcollection_findActive`},{operation:`findActiveByProperty`,name:`analyticsdatastreamcollection_findActiveByProperty`},{operation:`findAndroidStreams`,name:`analyticsdatastreamcollection_findAndroidStreams`},{operation:`findByExternalId`,name:`analyticsdatastreamcollection_findByExternalId`},{operation:`findByMeasurementId`,name:`analyticsdatastreamcollection_findByMeasurementId`},{operation:`findByProperty`,name:`analyticsdatastreamcollection_findByProperty`},{operation:`findByStatus`,name:`analyticsdatastreamcollection_findByStatus`},{operation:`findByType`,name:`analyticsdatastreamcollection_findByType`},{operation:`findIOSStreams`,name:`analyticsdatastreamcollection_findIOSStreams`},{operation:`findMobileStreams`,name:`analyticsdatastreamcollection_findMobileStreams`},{operation:`findWebStreams`,name:`analyticsdatastreamcollection_findWebStreams`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findActiveByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findAndroidStreams`,async:!0,parameters:[],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findByExternalId`,async:!0,parameters:[`externalId: string`],returnType:`Promise<AnalyticsDataStream | null>`,aiCallable:!0},{name:`findByMeasurementId`,async:!0,parameters:[`measurementId: string`],returnType:`Promise<AnalyticsDataStream | null>`,aiCallable:!0},{name:`findByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: DataStreamStatus`],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`streamType: DataStreamType`],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findIOSStreams`,async:!0,parameters:[],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findMobileStreams`,async:!0,parameters:[],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`findWebStreams`,async:!0,parameters:[],returnType:`Promise<AnalyticsDataStream[]>`,aiCallable:!0},{name:`getPlatformId`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`isAndroid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isIOS`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isMobileApp`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isWeb`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-analytics:AnalyticsProperty`],exposed:!0},{id:`@happyvertical/smrt-analytics:AnalyticsEvent`,name:`AnalyticsEvent`,collection:`analyticsevents`,description:`AnalyticsEvent represents a tracked analytics event (server-side tracking log).`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`propertyId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-analytics:AnalyticsProperty`},{name:`eventName`,type:`text`,required:!1,default:``},{name:`clientId`,type:`text`,required:!1,default:``},{name:`userId`,type:`text`,required:!1,default:``},{name:`params`,type:`text`,required:!1,default:`{}`},{name:`eventTimestamp`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`pending`,`sent`,`failed`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`errorMessage`,type:`text`,required:!1,default:``},{name:`retryCount`,type:`integer`,required:!1,default:0},{name:`nonPersonalizedAds`,type:`boolean`,required:!1,default:!1},{name:`sessionId`,type:`text`,required:!1,default:``},{name:`pagePath`,type:`text`,required:!1,default:``},{name:`pageTitle`,type:`text`,required:!1,default:``},{name:`userAgent`,type:`text`,required:!1,default:``},{name:`ipAddress`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/analyticsevents/findByProperty`},{method:`POST`,path:`/analyticsevents/findByEventName`},{method:`POST`,path:`/analyticsevents/findByClientId`},{method:`POST`,path:`/analyticsevents/findByUserId`},{method:`POST`,path:`/analyticsevents/findByStatus`},{method:`POST`,path:`/analyticsevents/findPending`},{method:`POST`,path:`/analyticsevents/findSent`},{method:`POST`,path:`/analyticsevents/findFailed`},{method:`POST`,path:`/analyticsevents/findForRetry`},{method:`POST`,path:`/analyticsevents/findPendingByProperty`},{method:`POST`,path:`/analyticsevents/findByDateRange`},{method:`POST`,path:`/analyticsevents/findConversions`},{method:`POST`,path:`/analyticsevents/findPageviews`},{method:`POST`,path:`/analyticsevents/countByEventName`},{method:`POST`,path:`/analyticsevents/getPropertyStats`},{method:`POST`,path:`/analyticsevents/getPropertyStatsWithTrend`},{method:`POST`,path:`/analyticsevents/getBatchPropertyStats`},{method:`GET`,path:`/analyticsevents`},{method:`GET`,path:`/analyticsevents/[id]`},{method:`POST`,path:`/analyticsevents`}],mcp:[{operation:`get`,name:`analyticsevent_get`},{operation:`list`,name:`analyticsevent_list`},{operation:`countByEventName`,name:`analyticseventcollection_countbyeventname`},{operation:`findByClientId`,name:`analyticseventcollection_findbyclientid`},{operation:`findByDateRange`,name:`analyticseventcollection_findbydaterange`},{operation:`findByEventName`,name:`analyticseventcollection_findbyeventname`},{operation:`findByProperty`,name:`analyticseventcollection_findbyproperty`},{operation:`findByStatus`,name:`analyticseventcollection_findbystatus`},{operation:`findByUserId`,name:`analyticseventcollection_findbyuserid`},{operation:`findConversions`,name:`analyticseventcollection_findconversions`},{operation:`findFailed`,name:`analyticseventcollection_findfailed`},{operation:`findForRetry`,name:`analyticseventcollection_findforretry`},{operation:`findPageviews`,name:`analyticseventcollection_findpageviews`},{operation:`findPending`,name:`analyticseventcollection_findpending`},{operation:`findPendingByProperty`,name:`analyticseventcollection_findpendingbyproperty`},{operation:`findSent`,name:`analyticseventcollection_findsent`},{operation:`getBatchPropertyStats`,name:`analyticseventcollection_getbatchpropertystats`},{operation:`getPropertyStats`,name:`analyticseventcollection_getpropertystats`},{operation:`getPropertyStatsWithTrend`,name:`analyticseventcollection_getpropertystatswithtrend`}],cli:[{operation:`addParam`,name:`analyticsevent_addParam`},{operation:`create`,name:`analyticsevent_create`},{operation:`delete`,name:`analyticsevent_delete`},{operation:`get`,name:`analyticsevent_get`},{operation:`getParams`,name:`analyticsevent_getParams`},{operation:`isConversion`,name:`analyticsevent_isConversion`},{operation:`isPageview`,name:`analyticsevent_isPageview`},{operation:`list`,name:`analyticsevent_list`},{operation:`markFailed`,name:`analyticsevent_markFailed`},{operation:`markSent`,name:`analyticsevent_markSent`},{operation:`resetForRetry`,name:`analyticsevent_resetForRetry`},{operation:`setParams`,name:`analyticsevent_setParams`},{operation:`shouldRetry`,name:`analyticsevent_shouldRetry`},{operation:`toTrackEvent`,name:`analyticsevent_toTrackEvent`},{operation:`update`,name:`analyticsevent_update`},{operation:`countByEventName`,name:`analyticseventcollection_countByEventName`},{operation:`findByClientId`,name:`analyticseventcollection_findByClientId`},{operation:`findByDateRange`,name:`analyticseventcollection_findByDateRange`},{operation:`findByEventName`,name:`analyticseventcollection_findByEventName`},{operation:`findByProperty`,name:`analyticseventcollection_findByProperty`},{operation:`findByStatus`,name:`analyticseventcollection_findByStatus`},{operation:`findByUserId`,name:`analyticseventcollection_findByUserId`},{operation:`findConversions`,name:`analyticseventcollection_findConversions`},{operation:`findFailed`,name:`analyticseventcollection_findFailed`},{operation:`findForRetry`,name:`analyticseventcollection_findForRetry`},{operation:`findPageviews`,name:`analyticseventcollection_findPageviews`},{operation:`findPending`,name:`analyticseventcollection_findPending`},{operation:`findPendingByProperty`,name:`analyticseventcollection_findPendingByProperty`},{operation:`findSent`,name:`analyticseventcollection_findSent`},{operation:`getBatchPropertyStats`,name:`analyticseventcollection_getBatchPropertyStats`},{operation:`getPropertyStats`,name:`analyticseventcollection_getPropertyStats`},{operation:`getPropertyStatsWithTrend`,name:`analyticseventcollection_getPropertyStatsWithTrend`}],methods:[{name:`addParam`,async:!1,parameters:[`key: string`,`value: string | number | boolean`],returnType:`void`,aiCallable:!1},{name:`countByEventName`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<Map<string, number>>`,aiCallable:!0},{name:`findByClientId`,async:!0,parameters:[`clientId: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findByEventName`,async:!0,parameters:[`eventName: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: TrackingEventStatus`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findByUserId`,async:!0,parameters:[`userId: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findConversions`,async:!0,parameters:[`propertyId?: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findFailed`,async:!0,parameters:[],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findForRetry`,async:!0,parameters:[`maxRetries?: number`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findPageviews`,async:!0,parameters:[`propertyId?: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findPending`,async:!0,parameters:[],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findPendingByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`findSent`,async:!0,parameters:[],returnType:`Promise<AnalyticsEvent[]>`,aiCallable:!0},{name:`getBatchPropertyStats`,async:!0,parameters:[`propertyIds: string[]`,`now?: Date`,`timeZone?: string`],returnType:`Promise<Map<string, PropertyStatsWithTrend>>`,aiCallable:!0},{name:`getParams`,async:!1,parameters:[],returnType:`Record<string, string | number | boolean>`,aiCallable:!1},{name:`getPropertyStats`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getPropertyStatsWithTrend`,async:!0,parameters:[`propertyId: string`,`now?: Date`,`timeZone?: string`],returnType:`Promise<PropertyStatsWithTrend>`,aiCallable:!0},{name:`isConversion`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPageview`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markFailed`,async:!1,parameters:[`error: string`],returnType:`void`,aiCallable:!1},{name:`markSent`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`resetForRetry`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`setParams`,async:!1,parameters:[`params: Record<string, string | number | boolean>`],returnType:`void`,aiCallable:!1},{name:`shouldRetry`,async:!1,parameters:[`maxRetries?: number`],returnType:`boolean`,aiCallable:!1},{name:`toTrackEvent`,async:!1,parameters:[],returnType:`object`,aiCallable:!1}],references:[`@happyvertical/smrt-analytics:AnalyticsProperty`],exposed:!0},{id:`@happyvertical/smrt-analytics:AnalyticsProperty`,name:`AnalyticsProperty`,collection:`analyticsproperties`,description:`AnalyticsProperty represents an analytics property (GA4 property, Plausible site, or Matomo site).`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`displayName`,type:`text`,required:!1,default:``,description:`The name people see for this website or app.`},{name:`provider`,type:`text`,required:!1,enum:[`ga4`,`plausible`,`matomo`],description:`Which analytics service tracks it: Google Analytics 4, Plausible or Matomo.`},{name:`externalId`,type:`text`,required:!1,default:``,description:`The id the analytics service gives the property, such as properties/123456789 or a Matomo site id.`},{name:`measurementId`,type:`text`,required:!1,default:``,description:`The tracking id for a web stream, such as G-XXXXXXXXXX.`},{name:`apiSecret`,type:`text`,required:!1,default:``,description:`The secret key your analytics service issues for this property. It is kept out of responses and tool results, but it is not encrypted in the database.`},{name:`siteDomain`,type:`text`,required:!1,default:``,description:`The website address, used by Plausible and Matomo.`},{name:`timeZone`,type:`text`,required:!1,default:`America/Los_Angeles`,description:`The time zone the figures are reported in.`},{name:`currencyCode`,type:`text`,required:!1,default:`USD`,description:`The currency used for revenue figures, such as USD.`},{name:`industryCategory`,type:`text`,required:!1,default:``},{name:`serviceLevel`,type:`text`,required:!1,default:`STANDARD`},{name:`status`,type:`text`,required:!1,enum:[`active`,`inactive`,`pending`],description:`Whether tracking is active, inactive or still being set up.`},{name:`lastSyncAt`,type:`datetime`,required:!1,description:`When the property was last synced with the analytics service.`},{name:`providerMetadata`,type:`text`,required:!1,default:`{}`,description:`Extra connection details from your analytics service. They are kept out of responses and tool results, but they are not encrypted in the database.`}],rest:[{method:`POST`,path:`/analyticsproperties/findByExternalId`},{method:`POST`,path:`/analyticsproperties/findByMeasurementId`},{method:`POST`,path:`/analyticsproperties/findBySiteDomain`},{method:`POST`,path:`/analyticsproperties/findByProvider`},{method:`POST`,path:`/analyticsproperties/findGA4Properties`},{method:`POST`,path:`/analyticsproperties/findPlausibleSites`},{method:`POST`,path:`/analyticsproperties/findMatomoSites`},{method:`POST`,path:`/analyticsproperties/findByStatus`},{method:`POST`,path:`/analyticsproperties/findActive`},{method:`POST`,path:`/analyticsproperties/findNeedingSync`},{method:`GET`,path:`/analyticsproperties`},{method:`GET`,path:`/analyticsproperties/[id]`},{method:`POST`,path:`/analyticsproperties`},{method:`PATCH`,path:`/analyticsproperties/[id]`}],mcp:[{operation:`get`,name:`analyticsproperty_get`},{operation:`list`,name:`analyticsproperty_list`},{operation:`findActive`,name:`analyticspropertycollection_findactive`},{operation:`findByExternalId`,name:`analyticspropertycollection_findbyexternalid`},{operation:`findByMeasurementId`,name:`analyticspropertycollection_findbymeasurementid`},{operation:`findByProvider`,name:`analyticspropertycollection_findbyprovider`},{operation:`findBySiteDomain`,name:`analyticspropertycollection_findbysitedomain`},{operation:`findByStatus`,name:`analyticspropertycollection_findbystatus`},{operation:`findGA4Properties`,name:`analyticspropertycollection_findga4properties`},{operation:`findMatomoSites`,name:`analyticspropertycollection_findmatomosites`},{operation:`findNeedingSync`,name:`analyticspropertycollection_findneedingsync`},{operation:`findPlausibleSites`,name:`analyticspropertycollection_findplausiblesites`}],cli:[{operation:`analyzePerformance`,name:`analyticsproperty_analyzePerformance`},{operation:`create`,name:`analyticsproperty_create`},{operation:`delete`,name:`analyticsproperty_delete`},{operation:`get`,name:`analyticsproperty_get`},{operation:`getProviderMetadata`,name:`analyticsproperty_getProviderMetadata`},{operation:`isGA4`,name:`analyticsproperty_isGA4`},{operation:`isMatomo`,name:`analyticsproperty_isMatomo`},{operation:`isPerformingWell`,name:`analyticsproperty_isPerformingWell`},{operation:`isPlausible`,name:`analyticsproperty_isPlausible`},{operation:`list`,name:`analyticsproperty_list`},{operation:`markSynced`,name:`analyticsproperty_markSynced`},{operation:`setProviderMetadata`,name:`analyticsproperty_setProviderMetadata`},{operation:`update`,name:`analyticsproperty_update`},{operation:`findActive`,name:`analyticspropertycollection_findActive`},{operation:`findByExternalId`,name:`analyticspropertycollection_findByExternalId`},{operation:`findByMeasurementId`,name:`analyticspropertycollection_findByMeasurementId`},{operation:`findByProvider`,name:`analyticspropertycollection_findByProvider`},{operation:`findBySiteDomain`,name:`analyticspropertycollection_findBySiteDomain`},{operation:`findByStatus`,name:`analyticspropertycollection_findByStatus`},{operation:`findGA4Properties`,name:`analyticspropertycollection_findGA4Properties`},{operation:`findMatomoSites`,name:`analyticspropertycollection_findMatomoSites`},{operation:`findNeedingSync`,name:`analyticspropertycollection_findNeedingSync`},{operation:`findPlausibleSites`,name:`analyticspropertycollection_findPlausibleSites`}],methods:[{name:`analyzePerformance`,async:!0,parameters:[`options?: object`],returnType:`Promise<object>`,aiCallable:!1},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findByExternalId`,async:!0,parameters:[`externalId: string`],returnType:`Promise<AnalyticsProperty | null>`,aiCallable:!0},{name:`findByMeasurementId`,async:!0,parameters:[`measurementId: string`],returnType:`Promise<AnalyticsProperty | null>`,aiCallable:!0},{name:`findByProvider`,async:!0,parameters:[`provider: AnalyticsProvider`],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findBySiteDomain`,async:!0,parameters:[`siteDomain: string`,`provider?: AnalyticsProvider`],returnType:`Promise<AnalyticsProperty | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: AnalyticsPropertyStatus`],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findGA4Properties`,async:!0,parameters:[],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findMatomoSites`,async:!0,parameters:[],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findNeedingSync`,async:!0,parameters:[`hoursAgo?: number`],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`findPlausibleSites`,async:!0,parameters:[],returnType:`Promise<AnalyticsProperty[]>`,aiCallable:!0},{name:`getProviderMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isGA4`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isMatomo`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPerformingWell`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isPlausible`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markSynced`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`setProviderMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-analytics:AnalyticsReport`,name:`AnalyticsReport`,collection:`analyticsreports`,description:`AnalyticsReport represents a saved report configuration with optional scheduling.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`propertyId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-analytics:AnalyticsProperty`,description:`The website or app this report is about.`},{name:`name`,type:`text`,required:!1,default:``,description:`A short name for the report, such as Weekly traffic.`},{name:`description`,type:`text`,required:!1,default:``,description:`What the report is for.`},{name:`dimensions`,type:`text`,required:!1,default:`[]`,description:`What to break the figures down by, such as country or device, as a list.`},{name:`metrics`,type:`text`,required:!1,default:`[]`,description:`What to count, such as active users or sessions, as a list.`},{name:`dateRangeStart`,type:`text`,required:!1,default:`7daysAgo`,description:`Where the period begins: a date, or a relative value such as 7daysAgo.`},{name:`dateRangeEnd`,type:`text`,required:!1,default:`today`,description:`Where the period ends: a date, or a relative value such as today.`},{name:`dimensionFilter`,type:`text`,required:!1,default:``},{name:`metricFilter`,type:`text`,required:!1,default:``},{name:`orderBy`,type:`text`,required:!1,default:`[]`},{name:`maxResults`,type:`integer`,required:!1,default:0},{name:`status`,type:`text`,required:!1,enum:[`draft`,`scheduled`,`running`,`completed`,`failed`],description:`Where the report stands: draft, scheduled, running, completed or failed.`},{name:`frequency`,type:`text`,required:!1,enum:[`once`,`daily`,`weekly`,`monthly`],description:`How often the report repeats: once, daily, weekly or monthly.`},{name:`lastRunAt`,type:`datetime`,required:!1,description:`When the report last ran.`},{name:`nextRunAt`,type:`datetime`,required:!1,description:`When the report is next due to run.`},{name:`resultData`,type:`text`,required:!1,default:``},{name:`rowCount`,type:`integer`,required:!1,default:0,description:`How many rows the last run returned.`},{name:`lastError`,type:`text`,required:!1,default:``,description:`Why the last run failed. Empty when it worked.`}],rest:[{method:`POST`,path:`/analyticsreports/findByProperty`},{method:`POST`,path:`/analyticsreports/findByStatus`},{method:`POST`,path:`/analyticsreports/findDrafts`},{method:`POST`,path:`/analyticsreports/findScheduled`},{method:`POST`,path:`/analyticsreports/findCompleted`},{method:`POST`,path:`/analyticsreports/findFailed`},{method:`POST`,path:`/analyticsreports/findByFrequency`},{method:`POST`,path:`/analyticsreports/findRecurring`},{method:`POST`,path:`/analyticsreports/findDue`},{method:`POST`,path:`/analyticsreports/findByPropertyAndStatus`},{method:`POST`,path:`/analyticsreports/findRecentlyRun`},{method:`GET`,path:`/analyticsreports`},{method:`GET`,path:`/analyticsreports/[id]`},{method:`POST`,path:`/analyticsreports`},{method:`PATCH`,path:`/analyticsreports/[id]`}],mcp:[{operation:`get`,name:`analyticsreport_get`},{operation:`list`,name:`analyticsreport_list`},{operation:`findByFrequency`,name:`analyticsreportcollection_findbyfrequency`},{operation:`findByProperty`,name:`analyticsreportcollection_findbyproperty`},{operation:`findByPropertyAndStatus`,name:`analyticsreportcollection_findbypropertyandstatus`},{operation:`findByStatus`,name:`analyticsreportcollection_findbystatus`},{operation:`findCompleted`,name:`analyticsreportcollection_findcompleted`},{operation:`findDrafts`,name:`analyticsreportcollection_finddrafts`},{operation:`findDue`,name:`analyticsreportcollection_finddue`},{operation:`findFailed`,name:`analyticsreportcollection_findfailed`},{operation:`findRecentlyRun`,name:`analyticsreportcollection_findrecentlyrun`},{operation:`findRecurring`,name:`analyticsreportcollection_findrecurring`},{operation:`findScheduled`,name:`analyticsreportcollection_findscheduled`}],cli:[{operation:`analyzeResults`,name:`analyticsreport_analyzeResults`},{operation:`calculateNextRun`,name:`analyticsreport_calculateNextRun`},{operation:`create`,name:`analyticsreport_create`},{operation:`delete`,name:`analyticsreport_delete`},{operation:`get`,name:`analyticsreport_get`},{operation:`getDimensions`,name:`analyticsreport_getDimensions`},{operation:`getMetrics`,name:`analyticsreport_getMetrics`},{operation:`getResultData`,name:`analyticsreport_getResultData`},{operation:`hasPositiveTrends`,name:`analyticsreport_hasPositiveTrends`},{operation:`isDue`,name:`analyticsreport_isDue`},{operation:`list`,name:`analyticsreport_list`},{operation:`markCompleted`,name:`analyticsreport_markCompleted`},{operation:`markFailed`,name:`analyticsreport_markFailed`},{operation:`markRunning`,name:`analyticsreport_markRunning`},{operation:`setDimensions`,name:`analyticsreport_setDimensions`},{operation:`setMetrics`,name:`analyticsreport_setMetrics`},{operation:`setResultData`,name:`analyticsreport_setResultData`},{operation:`update`,name:`analyticsreport_update`},{operation:`findByFrequency`,name:`analyticsreportcollection_findByFrequency`},{operation:`findByProperty`,name:`analyticsreportcollection_findByProperty`},{operation:`findByPropertyAndStatus`,name:`analyticsreportcollection_findByPropertyAndStatus`},{operation:`findByStatus`,name:`analyticsreportcollection_findByStatus`},{operation:`findCompleted`,name:`analyticsreportcollection_findCompleted`},{operation:`findDrafts`,name:`analyticsreportcollection_findDrafts`},{operation:`findDue`,name:`analyticsreportcollection_findDue`},{operation:`findFailed`,name:`analyticsreportcollection_findFailed`},{operation:`findRecentlyRun`,name:`analyticsreportcollection_findRecentlyRun`},{operation:`findRecurring`,name:`analyticsreportcollection_findRecurring`},{operation:`findScheduled`,name:`analyticsreportcollection_findScheduled`}],methods:[{name:`analyzeResults`,async:!0,parameters:[`_options?: Record<string, unknown>`],returnType:`Promise<object>`,aiCallable:!1},{name:`calculateNextRun`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByFrequency`,async:!0,parameters:[`frequency: ReportFrequency`],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findByPropertyAndStatus`,async:!0,parameters:[`propertyId: string`,`status: ReportStatus`],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ReportStatus`],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findCompleted`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findDue`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findFailed`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findRecentlyRun`,async:!0,parameters:[`hoursAgo?: number`],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findRecurring`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`findScheduled`,async:!0,parameters:[],returnType:`Promise<AnalyticsReport[]>`,aiCallable:!0},{name:`getDimensions`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getMetrics`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getResultData`,async:!1,parameters:[],returnType:`Record<string, unknown> | null`,aiCallable:!1},{name:`hasPositiveTrends`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isDue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markCompleted`,async:!1,parameters:[`rowCount: number`],returnType:`void`,aiCallable:!1},{name:`markFailed`,async:!1,parameters:[`error: string`],returnType:`void`,aiCallable:!1},{name:`markRunning`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`setDimensions`,async:!1,parameters:[`dimensions: Array<object>`],returnType:`void`,aiCallable:!1},{name:`setMetrics`,async:!1,parameters:[`metrics: Array<object>`],returnType:`void`,aiCallable:!1},{name:`setResultData`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-analytics:AnalyticsProperty`],exposed:!0}],dependencies:[],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`analytics.reports`,label:`Analytics`,summary:`Save traffic reports for your websites and apps and get a plain-language read on the results.`,synonyms:[`analytics`,`traffic`,`pageviews`,`visitors`,`web stats`,`google analytics`,`plausible`,`matomo`],models:[`@happyvertical/smrt-analytics:AnalyticsProperty`,`@happyvertical/smrt-analytics:AnalyticsReport`],nav:[{label:`Analytics properties`,model:`@happyvertical/smrt-analytics:AnalyticsProperty`,icon:`home`,description:`The websites and apps you track, and who tracks them.`},{label:`Analytics reports`,model:`@happyvertical/smrt-analytics:AnalyticsReport`,icon:`fileText`,description:`Saved reports, how often they run and what they found.`}],requires:[],section:{id:`analytics`,label:`Analytics`,icon:`layers`,description:`How your websites and apps are doing.`},options:{"@happyvertical/smrt-analytics:AnalyticsProperty":{fields:{name:{visibility:`hidden`},industryCategory:{visibility:`advanced`},serviceLevel:{visibility:`advanced`},lastSyncAt:{locked:!0}}},"@happyvertical/smrt-analytics:AnalyticsReport":{fields:{dimensionFilter:{visibility:`advanced`},metricFilter:{visibility:`advanced`},orderBy:{visibility:`advanced`},maxResults:{visibility:`advanced`},resultData:{visibility:`hidden`,locked:!0},rowCount:{locked:!0},lastRunAt:{locked:!0},nextRunAt:{locked:!0},lastError:{locked:!0}}}},help:{markdown:`## Overview
2
+
3
+ Analytics keeps the traffic reports you care about for your websites and apps.
4
+ Add a property for each site or app you track in Google Analytics 4, Plausible
5
+ or Matomo. Save a report on it that says what to count, what to break the
6
+ figures down by, and over which dates. The rows each run returns are stored
7
+ with the report, and the assistant can read them back to you in plain words.
8
+
9
+ Properties and reports are kept on your server. Provider secrets are stored on
10
+ the property and never sent to the assistant or returned in responses, but they
11
+ are not encrypted in the database.
12
+
13
+ ## Tasks
14
+
15
+ ### Add a property
16
+
17
+ 1. Create a new property.
18
+ 2. Enter the **{field:AnalyticsProperty.displayName}** and pick the
19
+ **{field:AnalyticsProperty.provider}**.
20
+ 3. Enter the **{field:AnalyticsProperty.externalId}** the analytics service
21
+ gives it.
22
+ 4. For Google Analytics, enter the **{field:AnalyticsProperty.measurementId}**.
23
+ For Plausible or Matomo, enter the **{field:AnalyticsProperty.siteDomain}**.
24
+ 5. Keep **{field:AnalyticsProperty.status}** on active while you want it
25
+ tracked.
26
+
27
+ ### Save a report
28
+
29
+ 1. Create a new report and choose the property in
30
+ **{field:AnalyticsReport.propertyId}**.
31
+ 2. Give it a **{field:AnalyticsReport.name}**.
32
+ 3. List what to break the figures down by in
33
+ **{field:AnalyticsReport.dimensions}** and what to count in
34
+ **{field:AnalyticsReport.metrics}**.
35
+ 4. Set the period with **{field:AnalyticsReport.dateRangeStart}** and
36
+ **{field:AnalyticsReport.dateRangeEnd}**.
37
+ 5. Pick **{field:AnalyticsReport.frequency}** to repeat it daily, weekly or
38
+ monthly.
39
+
40
+ ### Check what a report found
41
+
42
+ 1. **{field:AnalyticsReport.status}** says where the report stands, and
43
+ **{field:AnalyticsReport.lastRunAt}** when it last ran.
44
+ 2. **{field:AnalyticsReport.rowCount}** shows how many rows came back.
45
+ 3. If a run failed, **{field:AnalyticsReport.lastError}** says why.
46
+
47
+ ### Ask the assistant
48
+
49
+ 1. Ask about a saved report by name, for example "how did last week's traffic
50
+ report look?". When your app has the analytics tools switched on, the
51
+ assistant can list your saved reports and open one to read its figures.
52
+ 2. A written summary of a report comes from your app, which sends the stored
53
+ rows to the AI provider as they are. Leave out dimensions that identify a
54
+ person.
55
+ 3. For totals your own app calculates, such as orders or signups, ask for a
56
+ refreshed report. The assistant reads those with \`reports.query\`; see
57
+ Reports.
58
+ 4. For a one-off question those reports do not answer, the assistant can
59
+ propose a report with \`reports.runtime.define\`. Nothing is saved until you
60
+ confirm it.
61
+ `,fieldRefs:[`AnalyticsProperty.displayName`,`AnalyticsProperty.externalId`,`AnalyticsProperty.measurementId`,`AnalyticsProperty.provider`,`AnalyticsProperty.siteDomain`,`AnalyticsProperty.status`,`AnalyticsReport.dateRangeEnd`,`AnalyticsReport.dateRangeStart`,`AnalyticsReport.dimensions`,`AnalyticsReport.frequency`,`AnalyticsReport.lastError`,`AnalyticsReport.lastRunAt`,`AnalyticsReport.metrics`,`AnalyticsReport.name`,`AnalyticsReport.propertyId`,`AnalyticsReport.rowCount`,`AnalyticsReport.status`]},surfaces:[{kind:`route`,path:`/analytics/summary`,export:`@happyvertical/smrt-analytics/svelte#AnalyticsSummary`,label:`Traffic summary`}],runtime:`server`,demo:{mode:`server`,reasons:[`The recipe declares runtime "server".`,`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]}}]},{id:`approvals`,packageName:`@happyvertical/smrt-approvals`,version:`0.55.11`,description:`Approval decision gate for the SMRT framework: revision-bound, single-use approvals with quorum, expiry, and an append-only event ledger`,models:[{id:`@happyvertical/smrt-approvals:ApprovalEvent`,name:`ApprovalEvent`,collection:`approvalevents`,description:`One immutable entry in an approval request's history.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`requestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-approvals:ApprovalRequest`},{name:`type`,type:`text`,required:!0},{name:`actorId`,type:`text`,required:!0},{name:`actorType`,type:`text`,required:!1,enum:[`human`,`agent`,`service`]},{name:`reason`,type:`text`,required:!1},{name:`subjectRevisionHash`,type:`text`,required:!1},{name:`sequence`,type:`integer`,required:!1},{name:`voteKey`,type:`text`,required:!1},{name:`occurredAt`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/approvalevents`},{method:`GET`,path:`/approvalevents/[id]`}],mcp:[{operation:`get`,name:`approvalevent_get`},{operation:`list`,name:`approvalevent_list`}],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-approvals:ApprovalRequest`],exposed:!0},{id:`@happyvertical/smrt-approvals:ApprovalPolicy`,name:`ApprovalPolicy`,collection:`approvalpolicies`,description:`Tenant-level tightening of an approval kind. One row per tenant and kind.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`kind`,type:`text`,required:!0},{name:`requiredApprovals`,type:`integer`,required:!1},{name:`ttlMs`,type:`integer`,required:!1},{name:`requiredPermission`,type:`text`,required:!1},{name:`updatedBy`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/approvalpolicies`},{method:`GET`,path:`/approvalpolicies/[id]`}],mcp:[{operation:`get`,name:`approvalpolicy_get`},{operation:`list`,name:`approvalpolicy_list`}],cli:[],methods:[{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-approvals:ApprovalRequest`,name:`ApprovalRequest`,collection:`approvalrequests`,description:`A request for approval of one subject revision.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`kind`,type:`text`,required:!0},{name:`subjectType`,type:`text`,required:!0},{name:`subjectId`,type:`text`,required:!0},{name:`subjectRevisionHash`,type:`text`,required:!0},{name:`requestKey`,type:`text`,required:!0},{name:`requestedBy`,type:`text`,required:!0},{name:`requestedByType`,type:`text`,required:!1,enum:[`human`,`agent`,`service`]},{name:`summary`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`requiredApprovals`,type:`integer`,required:!1},{name:`approvalCount`,type:`integer`,required:!1},{name:`requiredPermissions`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`decidedAt`,type:`datetime`,required:!1},{name:`consumedAt`,type:`datetime`,required:!1},{name:`consumedBy`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/approvalrequests`},{method:`GET`,path:`/approvalrequests/[id]`}],mcp:[{operation:`get`,name:`approvalrequest_get`},{operation:`list`,name:`approvalrequest_list`}],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`expiresAtMs`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getRequiredPermissions`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`isConsumed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setRequiredPermissions`,async:!1,parameters:[`slugs: any`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0}],dependencies:[`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`],via:[`@happyvertical/smrt-profiles`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]}},{id:`assets`,packageName:`@happyvertical/smrt-assets`,version:`0.55.11`,description:`Asset management system with versioning, metadata, and AI-powered operations for SMRT framework`,models:[{id:`@happyvertical/smrt-assets:Asset`,name:`Asset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-assets:Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`},{method:`POST`,path:`/assets/findByTenant`},{method:`POST`,path:`/assets/findGlobal`},{method:`POST`,path:`/assets/findWithGlobals`},{method:`POST`,path:`/assets/addTag`},{method:`POST`,path:`/assets/removeTag`},{method:`POST`,path:`/assets/setTags`},{method:`POST`,path:`/assets/getTagsForAssets`},{method:`POST`,path:`/assets/getByTag`},{method:`POST`,path:`/assets/getByType`},{method:`POST`,path:`/assets/getByStatus`},{method:`POST`,path:`/assets/getByOwner`},{method:`POST`,path:`/assets/getLatestVersion`},{method:`POST`,path:`/assets/listVersions`},{method:`POST`,path:`/assets/getDerivatives`},{method:`POST`,path:`/assets/getByMimeType`},{method:`POST`,path:`/assets/rollbackToVersion`},{method:`POST`,path:`/assets/getByFolder`}],mcp:[{operation:`create`,name:`asset_create`},{operation:`get`,name:`asset_get`},{operation:`list`,name:`asset_list`},{operation:`update`,name:`asset_update`},{operation:`addTag`,name:`assetcollection_addtag`},{operation:`createNewVersion`,name:`assetcollection_createnewversion`},{operation:`findByTenant`,name:`assetcollection_findbytenant`},{operation:`findGlobal`,name:`assetcollection_findglobal`},{operation:`findWithGlobals`,name:`assetcollection_findwithglobals`},{operation:`getByFolder`,name:`assetcollection_getbyfolder`},{operation:`getByMimeType`,name:`assetcollection_getbymimetype`},{operation:`getByOwner`,name:`assetcollection_getbyowner`},{operation:`getByStatus`,name:`assetcollection_getbystatus`},{operation:`getByTag`,name:`assetcollection_getbytag`},{operation:`getByType`,name:`assetcollection_getbytype`},{operation:`getDerivatives`,name:`assetcollection_getderivatives`},{operation:`getLatestVersion`,name:`assetcollection_getlatestversion`},{operation:`getTagsForAssets`,name:`assetcollection_gettagsforassets`},{operation:`listVersions`,name:`assetcollection_listversions`},{operation:`removeTag`,name:`assetcollection_removetag`},{operation:`rollbackToVersion`,name:`assetcollection_rollbacktoversion`},{operation:`setTags`,name:`assetcollection_settags`}],cli:[{operation:`associateWith`,name:`asset_associateWith`},{operation:`create`,name:`asset_create`},{operation:`delete`,name:`asset_delete`},{operation:`get`,name:`asset_get`},{operation:`getAssociations`,name:`asset_getAssociations`},{operation:`getBySlug`,name:`asset_getBySlug`},{operation:`getDerivatives`,name:`asset_getDerivatives`},{operation:`getExternalRef`,name:`asset_getExternalRef`},{operation:`getExternalRefs`,name:`asset_getExternalRefs`},{operation:`getMetadata`,name:`asset_getMetadata`},{operation:`getSource`,name:`asset_getSource`},{operation:`getStatus`,name:`asset_getStatus`},{operation:`getTags`,name:`asset_getTags`},{operation:`getType`,name:`asset_getType`},{operation:`hasTag`,name:`asset_hasTag`},{operation:`list`,name:`asset_list`},{operation:`mergeMetadata`,name:`asset_mergeMetadata`},{operation:`setExternalRef`,name:`asset_setExternalRef`},{operation:`setMetadata`,name:`asset_setMetadata`},{operation:`update`,name:`asset_update`},{operation:`addTag`,name:`assetcollection_addTag`},{operation:`createNewVersion`,name:`assetcollection_createNewVersion`},{operation:`findByTenant`,name:`assetcollection_findByTenant`},{operation:`findGlobal`,name:`assetcollection_findGlobal`},{operation:`findWithGlobals`,name:`assetcollection_findWithGlobals`},{operation:`getByFolder`,name:`assetcollection_getByFolder`},{operation:`getByMimeType`,name:`assetcollection_getByMimeType`},{operation:`getByOwner`,name:`assetcollection_getByOwner`},{operation:`getByStatus`,name:`assetcollection_getByStatus`},{operation:`getByTag`,name:`assetcollection_getByTag`},{operation:`getByType`,name:`assetcollection_getByType`},{operation:`getDerivatives`,name:`assetcollection_getDerivatives`},{operation:`getLatestVersion`,name:`assetcollection_getLatestVersion`},{operation:`getTagsForAssets`,name:`assetcollection_getTagsForAssets`},{operation:`listVersions`,name:`assetcollection_listVersions`},{operation:`removeTag`,name:`assetcollection_removeTag`},{operation:`rollbackToVersion`,name:`assetcollection_rollbackToVersion`},{operation:`setTags`,name:`assetcollection_setTags`}],methods:[{name:`addTag`,async:!0,parameters:[`assetId: string`,`tag: string`,`options?: AssetTagInput`],returnType:`Promise<Tag>`,aiCallable:!0},{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`createNewVersion`,async:!0,parameters:[`primaryVersionId: string`,`newSourceUri: string`,`updates?: Partial<Asset>`],returnType:`Promise<Asset>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getByFolder`,async:!0,parameters:[`folderId: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByMimeType`,async:!0,parameters:[`mimePattern: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByOwner`,async:!0,parameters:[`ownerProfileId: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByStatus`,async:!0,parameters:[`statusSlug: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByTag`,async:!0,parameters:[`tag: string`,`options?: Pick<AssetTagInput, 'context'>`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`typeSlug: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getLatestVersion`,async:!0,parameters:[`primaryVersionId: string`],returnType:`Promise<Asset | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getTagsForAssets`,async:!0,parameters:[`assetIds: string[]`],returnType:`Promise<Map<string, Tag[]>>`,aiCallable:!0},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[`primaryVersionId: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`removeTag`,async:!0,parameters:[`assetId: string`,`tag: string`,`options?: Pick<AssetTagInput, 'context'>`],returnType:`Promise<void>`,aiCallable:!0},{name:`rollbackToVersion`,async:!0,parameters:[`primaryVersionId: string`,`targetVersion: number`],returnType:`Promise<Asset>`,aiCallable:!0},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setTags`,async:!0,parameters:[`assetId: string`,`tags: string[]`,`options?: Pick<AssetTagInput, 'context'>`],returnType:`Promise<Tag[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-assets:Folder`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-assets:AssetAssociation`,name:`AssetAssociation`,collection:`assetassociations`,fields:[{name:`metaType`,type:`text`,required:!0},{name:`metaId`,type:`text`,required:!0},{name:`role`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!1,default:0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`assetId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-assets:Asset`}],rest:[{method:`GET`,path:`/assetassociations`},{method:`GET`,path:`/assetassociations/[id]`},{method:`POST`,path:`/assetassociations`},{method:`DELETE`,path:`/assetassociations/[id]`},{method:`POST`,path:`/assetassociations/byRight`},{method:`POST`,path:`/assetassociations/byLeft`},{method:`POST`,path:`/assetassociations/attach`},{method:`POST`,path:`/assetassociations/detach`},{method:`POST`,path:`/assetassociations/setLinks`}],mcp:[{operation:`create`,name:`assetassociation_create`},{operation:`get`,name:`assetassociation_get`},{operation:`list`,name:`assetassociation_list`},{operation:`attach`,name:`assetassociationcollection_attach`},{operation:`byLeft`,name:`assetassociationcollection_byleft`},{operation:`byRight`,name:`assetassociationcollection_byright`},{operation:`detach`,name:`assetassociationcollection_detach`},{operation:`setLinks`,name:`assetassociationcollection_setlinks`}],cli:[{operation:`create`,name:`assetassociation_create`},{operation:`delete`,name:`assetassociation_delete`},{operation:`get`,name:`assetassociation_get`},{operation:`hydrate`,name:`assetassociation_hydrate`},{operation:`list`,name:`assetassociation_list`},{operation:`update`,name:`assetassociation_update`},{operation:`attach`,name:`assetassociationcollection_attach`},{operation:`byLeft`,name:`assetassociationcollection_byLeft`},{operation:`byRight`,name:`assetassociationcollection_byRight`},{operation:`detach`,name:`assetassociationcollection_detach`},{operation:`setLinks`,name:`assetassociationcollection_setLinks`}],methods:[{name:`attach`,async:!0,parameters:[`metaType: string`,`metaId: string`,`assetId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<AssetAssociation>`,aiCallable:!0},{name:`byLeft`,async:!0,parameters:[`metaType: string`,`metaId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<AssetAssociation[]>`,aiCallable:!0},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`detach`,async:!0,parameters:[`metaType: string`,`metaId: string`,`assetId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`hydrate`,async:!0,parameters:[],returnType:`Promise<T | null>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`metaType: string`,`metaId: string`,`assetIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!0},{id:`@happyvertical/smrt-assets:AssetMetafield`,name:`AssetMetafield`,collection:`assetmetafields`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`validation`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/assetmetafields`},{method:`GET`,path:`/assetmetafields/[id]`},{method:`POST`,path:`/assetmetafields`},{method:`PATCH`,path:`/assetmetafields/[id]`},{method:`DELETE`,path:`/assetmetafields/[id]`},{method:`POST`,path:`/assetmetafields/getOrCreate`},{method:`POST`,path:`/assetmetafields/initializeCommonMetafields`}],mcp:[{operation:`create`,name:`assetmetafield_create`},{operation:`get`,name:`assetmetafield_get`},{operation:`list`,name:`assetmetafield_list`},{operation:`getOrCreate`,name:`assetmetafieldcollection_getorcreate`},{operation:`initializeCommonMetafields`,name:`assetmetafieldcollection_initializecommonmetafields`}],cli:[{operation:`create`,name:`assetmetafield_create`},{operation:`delete`,name:`assetmetafield_delete`},{operation:`get`,name:`assetmetafield_get`},{operation:`getBySlug`,name:`assetmetafield_getBySlug`},{operation:`getValidation`,name:`assetmetafield_getValidation`},{operation:`list`,name:`assetmetafield_list`},{operation:`setValidation`,name:`assetmetafield_setValidation`},{operation:`update`,name:`assetmetafield_update`},{operation:`getOrCreate`,name:`assetmetafieldcollection_getOrCreate`},{operation:`initializeCommonMetafields`,name:`assetmetafieldcollection_initializeCommonMetafields`}],methods:[{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`name?: string`,`validation?: string | Record<string, unknown>`],returnType:`Promise<AssetMetafield>`,aiCallable:!0},{name:`getValidation`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initializeCommonMetafields`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`setValidation`,async:!1,parameters:[`rules: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-assets:AssetStatus`,name:`AssetStatus`,collection:`assetstatuses`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/assetstatuses`},{method:`GET`,path:`/assetstatuses/[id]`},{method:`POST`,path:`/assetstatuses`},{method:`PATCH`,path:`/assetstatuses/[id]`},{method:`DELETE`,path:`/assetstatuses/[id]`},{method:`POST`,path:`/assetstatuses/getOrCreate`},{method:`POST`,path:`/assetstatuses/initializeCommonStatuses`}],mcp:[{operation:`create`,name:`assetstatus_create`},{operation:`get`,name:`assetstatus_get`},{operation:`list`,name:`assetstatus_list`},{operation:`getOrCreate`,name:`assetstatuscollection_getorcreate`},{operation:`initializeCommonStatuses`,name:`assetstatuscollection_initializecommonstatuses`}],cli:[{operation:`create`,name:`assetstatus_create`},{operation:`delete`,name:`assetstatus_delete`},{operation:`get`,name:`assetstatus_get`},{operation:`getBySlug`,name:`assetstatus_getBySlug`},{operation:`list`,name:`assetstatus_list`},{operation:`update`,name:`assetstatus_update`},{operation:`getOrCreate`,name:`assetstatuscollection_getOrCreate`},{operation:`initializeCommonStatuses`,name:`assetstatuscollection_initializeCommonStatuses`}],methods:[{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`name?: string`,`description?: string`],returnType:`Promise<AssetStatus>`,aiCallable:!0},{name:`initializeCommonStatuses`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-assets:AssetTag`,name:`AssetTag`,collection:`assettags`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`assetId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`tagId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-tags:Tag`}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-tags:Tag`],exposed:!1},{id:`@happyvertical/smrt-assets:AssetType`,name:`AssetType`,collection:`assettypes`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/assettypes`},{method:`GET`,path:`/assettypes/[id]`},{method:`POST`,path:`/assettypes`},{method:`PATCH`,path:`/assettypes/[id]`},{method:`DELETE`,path:`/assettypes/[id]`},{method:`POST`,path:`/assettypes/getOrCreate`},{method:`POST`,path:`/assettypes/initializeCommonTypes`}],mcp:[{operation:`create`,name:`assettype_create`},{operation:`get`,name:`assettype_get`},{operation:`list`,name:`assettype_list`},{operation:`getOrCreate`,name:`assettypecollection_getorcreate`},{operation:`initializeCommonTypes`,name:`assettypecollection_initializecommontypes`}],cli:[{operation:`create`,name:`assettype_create`},{operation:`delete`,name:`assettype_delete`},{operation:`get`,name:`assettype_get`},{operation:`getBySlug`,name:`assettype_getBySlug`},{operation:`list`,name:`assettype_list`},{operation:`update`,name:`assettype_update`},{operation:`getOrCreate`,name:`assettypecollection_getOrCreate`},{operation:`initializeCommonTypes`,name:`assettypecollection_initializeCommonTypes`}],methods:[{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`name?: string`,`description?: string`],returnType:`Promise<AssetType>`,aiCallable:!0},{name:`initializeCommonTypes`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-assets:Folder`,name:`Folder`,collection:`folders`,display:{label:`name`},fields:[{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-assets:Folder`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/folders`},{method:`GET`,path:`/folders/[id]`},{method:`POST`,path:`/folders`},{method:`PATCH`,path:`/folders/[id]`},{method:`DELETE`,path:`/folders/[id]`},{method:`POST`,path:`/folders/getTree`},{method:`POST`,path:`/folders/getPath`}],mcp:[{operation:`create`,name:`folder_create`},{operation:`get`,name:`folder_get`},{operation:`list`,name:`folder_list`},{operation:`update`,name:`folder_update`},{operation:`getContents`,name:`foldercollection_getcontents`},{operation:`getPath`,name:`foldercollection_getpath`},{operation:`getTree`,name:`foldercollection_gettree`},{operation:`moveAsset`,name:`foldercollection_moveasset`}],cli:[{operation:`create`,name:`folder_create`},{operation:`delete`,name:`folder_delete`},{operation:`get`,name:`folder_get`},{operation:`getAncestors`,name:`folder_getAncestors`},{operation:`getBySlug`,name:`folder_getBySlug`},{operation:`getChildren`,name:`folder_getChildren`},{operation:`getDescendants`,name:`folder_getDescendants`},{operation:`getHierarchy`,name:`folder_getHierarchy`},{operation:`getParent`,name:`folder_getParent`},{operation:`list`,name:`folder_list`},{operation:`moveTo`,name:`folder_moveTo`},{operation:`update`,name:`folder_update`},{operation:`getContents`,name:`foldercollection_getContents`},{operation:`getPath`,name:`foldercollection_getPath`},{operation:`getTree`,name:`foldercollection_getTree`},{operation:`moveAsset`,name:`foldercollection_moveAsset`}],methods:[{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getContents`,async:!0,parameters:[`folderId: string`,`assetCollection: AssetCollection`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!1},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getPath`,async:!0,parameters:[`folderId: string`],returnType:`Promise<Folder[]>`,aiCallable:!0},{name:`getTree`,async:!0,parameters:[`rootId?: string`],returnType:`Promise<Folder[]>`,aiCallable:!0},{name:`moveAsset`,async:!0,parameters:[`asset: Asset`,`folderId: string | null`],returnType:`Promise<void>`,aiCallable:!0},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Folder`,`@happyvertical/smrt-profiles:Profile`],exposed:!0}],dependencies:[`profiles`,`tags`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`assets.attachments`,label:`Attachments`,summary:`Attach authorized files to records and retain their history.`,synonyms:[`file attachments`,`record files`,`supporting documents`],models:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-assets:AssetAssociation`],nav:[{label:`Attachments`,model:`@happyvertical/smrt-assets:Asset`,icon:`fileText`,description:`Supporting files connected to the record you are viewing.`,noun:`attachment`}],requires:[`assets.library`],group:{id:`assets`,label:`Files and media`,summary:`Organize files and media, then attach them to the records that need them.`},section:{id:`assets`,label:`Assets`,icon:`folder`,description:`Files, media and attachments for your work.`},options:{"@happyvertical/smrt-assets:Asset":{fields:{name:{label:`File name`,order:1},description:{label:`Description`,order:2},mimeType:{label:`File type`,order:3}}},"@happyvertical/smrt-assets:AssetAssociation":{fields:{assetId:{label:`Attachment`,order:1},role:{label:`Role`,order:2},sortOrder:{label:`Display order`,order:3}}}},help:{markdown:`## Overview
62
+
63
+ Attachments keep authorized supporting files connected to a record without making a public storage link. The application supplies the authorization and upload endpoint; this recipe records the asset and its relationship.
64
+
65
+ ## Tasks
66
+
67
+ ### Describe an attachment
68
+
69
+ 1. Use a clear {field:Asset.name} so people can identify the file.
70
+ 2. Add a {field:Asset.description} when the attachment needs context.
71
+ 3. Check the {field:Asset.mimeType} before offering the file to a viewer.
72
+
73
+ ### Link an attachment to a record
74
+
75
+ 1. Select the {field:AssetAssociation.assetId} to link.
76
+ 2. Set a {field:AssetAssociation.role} when the record uses more than one file.
77
+ 3. Adjust {field:AssetAssociation.sortOrder} to control display order.
78
+ `,fieldRefs:[`Asset.description`,`Asset.mimeType`,`Asset.name`,`AssetAssociation.assetId`,`AssetAssociation.role`,`AssetAssociation.sortOrder`]},runtime:`both`,demoSeed:{export:`@happyvertical/smrt-assets/playground#assetAttachmentMockAttachments`},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`,`Needs assets.library, which is server.`]}},{id:`assets.library`,label:`Asset Library`,summary:`Organize files and media with folders, types, and statuses.`,synonyms:[`media library`,`file library`,`digital assets`],models:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-assets:Folder`,`@happyvertical/smrt-assets:AssetType`,`@happyvertical/smrt-assets:AssetStatus`,`@happyvertical/smrt-assets:AssetMetafield`],nav:[{label:`Assets`,model:`@happyvertical/smrt-assets:Asset`,icon:`archive`,description:`Files and media you can organize, reuse and share.`,noun:`asset`},{label:`Folders`,model:`@happyvertical/smrt-assets:Folder`,icon:`folder`,description:`Organize assets into clear, reusable groups.`,noun:`folder`}],requires:[],group:{id:`assets`,label:`Files and media`,summary:`Organize files and media, then attach them to the records that need them.`},section:{id:`assets`,label:`Assets`,icon:`folder`,description:`Files, media and attachments for your work.`},options:{"@happyvertical/smrt-assets:Asset":{fields:{name:{label:`Name`,order:1},description:{order:2},folderId:{label:`Folder`,order:3},typeSlug:{label:`Type`,order:4},statusSlug:{label:`Status`,order:5},mimeType:{label:`File type`,order:6}}},"@happyvertical/smrt-assets:Folder":{fields:{name:{label:`Name`,order:1},description:{order:2}}}},help:{markdown:`## Overview
79
+
80
+ The Asset Library keeps files and media in one place. Organize assets into folders, classify them by type and status, and keep a clear description for people who need to find them later.
81
+
82
+ ## Tasks
83
+
84
+ ### Add an asset
85
+
86
+ 1. Give the asset a recognizable {field:Asset.name}.
87
+ 2. Add a {field:Asset.description} that explains how the file can be used.
88
+ 3. Select its {field:Asset.folderId}, {field:Asset.typeSlug}, and {field:Asset.statusSlug}.
89
+ 4. Confirm the {field:Asset.mimeType} matches the file you intend to manage.
90
+
91
+ ### Organize folders
92
+
93
+ 1. Create a folder with a descriptive {field:Folder.name}.
94
+ 2. Use the {field:Folder.description} to explain the folder's purpose.
95
+ `,fieldRefs:[`Asset.description`,`Asset.folderId`,`Asset.mimeType`,`Asset.name`,`Asset.statusSlug`,`Asset.typeSlug`,`Folder.description`,`Folder.name`]},runtime:`both`,demoSeed:{export:`@happyvertical/smrt-assets/playground#assetGridMockAssets`},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]}}]},{id:`chat`,packageName:`@happyvertical/smrt-chat`,version:`0.55.11`,description:`Chat rooms, DMs, threads, and agent conversations for the SMRT framework`,models:[{id:`@happyvertical/smrt-chat:AgentSession`,name:`AgentSession`,collection:`agentsessions`,description:`Agent conversation session.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`agentId`,type:`text`,required:!0,default:``},{name:`agentProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`participantProfileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`chatRoomId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatRoom`},{name:`status`,type:`text`,required:!0,default:`active`,enum:[`active`,`closed`,`expired`]},{name:`allowedTools`,type:`text`,required:!1,default:`[]`},{name:`sessionContext`,type:`text`,required:!1,default:`{}`},{name:`systemPrompt`,type:`text`,required:!1,default:``},{name:`messageCount`,type:`integer`,required:!1,default:0},{name:`totalTokensUsed`,type:`integer`,required:!1,default:0},{name:`maxTokens`,type:`integer`,required:!1,default:0},{name:`maxMessages`,type:`integer`,required:!1,default:0},{name:`lastMessageAt`,type:`datetime`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`closedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/agentsessions/findActiveByParticipant`},{method:`POST`,path:`/agentsessions/findActiveSession`},{method:`POST`,path:`/agentsessions/findOrCreate`},{method:`POST`,path:`/agentsessions/findByAgent`},{method:`POST`,path:`/agentsessions/expireStale`},{method:`GET`,path:`/agentsessions`},{method:`GET`,path:`/agentsessions/[id]`}],mcp:[{operation:`get`,name:`agentsession_get`},{operation:`list`,name:`agentsession_list`},{operation:`expireStale`,name:`agentsessioncollection_expirestale`},{operation:`findActiveByParticipant`,name:`agentsessioncollection_findactivebyparticipant`},{operation:`findActiveSession`,name:`agentsessioncollection_findactivesession`},{operation:`findByAgent`,name:`agentsessioncollection_findbyagent`},{operation:`findOrCreate`,name:`agentsessioncollection_findorcreate`}],cli:[{operation:`close`,name:`agentsession_close`},{operation:`create`,name:`agentsession_create`},{operation:`delete`,name:`agentsession_delete`},{operation:`expire`,name:`agentsession_expire`},{operation:`get`,name:`agentsession_get`},{operation:`getAllowedTools`,name:`agentsession_getAllowedTools`},{operation:`getSessionContext`,name:`agentsession_getSessionContext`},{operation:`getSessionKey`,name:`agentsession_getSessionKey`},{operation:`isActive`,name:`agentsession_isActive`},{operation:`isExpired`,name:`agentsession_isExpired`},{operation:`isToolAllowed`,name:`agentsession_isToolAllowed`},{operation:`list`,name:`agentsession_list`},{operation:`recordMessage`,name:`agentsession_recordMessage`},{operation:`setAllowedTools`,name:`agentsession_setAllowedTools`},{operation:`setSessionContext`,name:`agentsession_setSessionContext`},{operation:`update`,name:`agentsession_update`},{operation:`updateSessionContext`,name:`agentsession_updateSessionContext`},{operation:`expireStale`,name:`agentsessioncollection_expireStale`},{operation:`findActiveByParticipant`,name:`agentsessioncollection_findActiveByParticipant`},{operation:`findActiveSession`,name:`agentsessioncollection_findActiveSession`},{operation:`findByAgent`,name:`agentsessioncollection_findByAgent`},{operation:`findOrCreate`,name:`agentsessioncollection_findOrCreate`}],methods:[{name:`close`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`expire`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`expireStale`,async:!0,parameters:[`olderThan: Date`,`scope?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`findActiveByParticipant`,async:!0,parameters:[`participantProfileId: string`],returnType:`Promise<AgentSession[]>`,aiCallable:!0},{name:`findActiveSession`,async:!0,parameters:[`agentId: string`,`participantProfileId: string`,`tenantId: string | null`,`sessionKey?: string | null`],returnType:`Promise<AgentSession | null>`,aiCallable:!0},{name:`findByAgent`,async:!0,parameters:[`agentId: string`],returnType:`Promise<AgentSession[]>`,aiCallable:!0},{name:`findOrCreate`,async:!0,parameters:[`params: object`],returnType:`Promise<AgentSession>`,aiCallable:!0},{name:`getAllowedTools`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getSessionContext`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSessionKey`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isToolAllowed`,async:!1,parameters:[`toolName: string`],returnType:`boolean`,aiCallable:!1},{name:`recordMessage`,async:!0,parameters:[`tokensUsed?: number`],returnType:`Promise<void>`,aiCallable:!1},{name:`setAllowedTools`,async:!1,parameters:[`tools: string[]`],returnType:`void`,aiCallable:!1},{name:`setSessionContext`,async:!1,parameters:[`ctx: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateSessionContext`,async:!0,parameters:[`updates: Record<string, unknown>`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-chat:ChatMessage`,name:`ChatMessage`,collection:`chatmessages`,description:`Chat message. Internal model — all mutations must go through the membership-checked ChatService (S5 #1392).`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`roomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:ChatRoom`},{name:`threadId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatThread`},{name:`senderProfileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`agentSessionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:AgentSession`},{name:`content`,type:`text`,required:!1,default:``},{name:`messageType`,type:`text`,required:!0,default:`text`,enum:[`text`,`system`,`action`,`file`,`tool_call`,`tool_result`]},{name:`role`,type:`text`,required:!0,default:`user`,enum:[`user`,`assistant`,`system`,`tool`]},{name:`isEdited`,type:`boolean`,required:!1,default:!1},{name:`editedAt`,type:`datetime`,required:!1},{name:`isDeleted`,type:`boolean`,required:!1,default:!1},{name:`replyToMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatMessage`},{name:`metadata`,type:`text`,required:!1,default:`{}`},{name:`toolCallData`,type:`text`,required:!1},{name:`attachments`,type:`text`,required:!1,default:`[]`}],rest:[{method:`POST`,path:`/chatmessages/getByRoom`},{method:`POST`,path:`/chatmessages/getByThread`},{method:`POST`,path:`/chatmessages/getByAgentSession`},{method:`POST`,path:`/chatmessages/getUnreadCount`},{method:`POST`,path:`/chatmessages/getLatestPerRoom`},{method:`GET`,path:`/chatmessages`},{method:`GET`,path:`/chatmessages/[id]`}],mcp:[{operation:`get`,name:`chatmessage_get`},{operation:`list`,name:`chatmessage_list`},{operation:`getByAgentSession`,name:`chatmessagecollection_getbyagentsession`},{operation:`getByRoom`,name:`chatmessagecollection_getbyroom`},{operation:`getByThread`,name:`chatmessagecollection_getbythread`},{operation:`getLatestPerRoom`,name:`chatmessagecollection_getlatestperroom`},{operation:`getUnreadCount`,name:`chatmessagecollection_getunreadcount`},{operation:`search`,name:`chatmessagecollection_search`}],cli:[{operation:`create`,name:`chatmessage_create`},{operation:`delete`,name:`chatmessage_delete`},{operation:`edit`,name:`chatmessage_edit`},{operation:`get`,name:`chatmessage_get`},{operation:`getAttachments`,name:`chatmessage_getAttachments`},{operation:`getMetadata`,name:`chatmessage_getMetadata`},{operation:`getPreview`,name:`chatmessage_getPreview`},{operation:`getToolCallData`,name:`chatmessage_getToolCallData`},{operation:`hasAttachments`,name:`chatmessage_hasAttachments`},{operation:`isFromAgent`,name:`chatmessage_isFromAgent`},{operation:`isSystemMessage`,name:`chatmessage_isSystemMessage`},{operation:`isToolCall`,name:`chatmessage_isToolCall`},{operation:`isToolResult`,name:`chatmessage_isToolResult`},{operation:`list`,name:`chatmessage_list`},{operation:`setAttachments`,name:`chatmessage_setAttachments`},{operation:`setMetadata`,name:`chatmessage_setMetadata`},{operation:`setToolCallData`,name:`chatmessage_setToolCallData`},{operation:`softDelete`,name:`chatmessage_softDelete`},{operation:`update`,name:`chatmessage_update`},{operation:`getByAgentSession`,name:`chatmessagecollection_getByAgentSession`},{operation:`getByRoom`,name:`chatmessagecollection_getByRoom`},{operation:`getByThread`,name:`chatmessagecollection_getByThread`},{operation:`getLatestPerRoom`,name:`chatmessagecollection_getLatestPerRoom`},{operation:`getUnreadCount`,name:`chatmessagecollection_getUnreadCount`},{operation:`search`,name:`chatmessagecollection_search`}],methods:[{name:`edit`,async:!0,parameters:[`newContent: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAttachments`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getByAgentSession`,async:!0,parameters:[`agentSessionId: string`,`tenantId: string`],returnType:`Promise<ChatMessage[]>`,aiCallable:!0},{name:`getByRoom`,async:!0,parameters:[`roomId: string`,`tenantId: string`,`options?: object`],returnType:`Promise<ChatMessage[]>`,aiCallable:!0},{name:`getByThread`,async:!0,parameters:[`threadId: string`,`tenantId: string`],returnType:`Promise<ChatMessage[]>`,aiCallable:!0},{name:`getLatestPerRoom`,async:!0,parameters:[`roomIds: string[]`,`tenantId: string`],returnType:`Promise<Map<string, ChatMessage>>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPreview`,async:!1,parameters:[`maxLength?: any`],returnType:`string`,aiCallable:!1},{name:`getToolCallData`,async:!1,parameters:[],returnType:`Record<string, unknown> | null`,aiCallable:!1},{name:`getUnreadCount`,async:!0,parameters:[`roomId: string`,`tenantId: string`,`lastReadMessageId: string | null`],returnType:`Promise<number>`,aiCallable:!0},{name:`hasAttachments`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isFromAgent`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSystemMessage`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isToolCall`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isToolResult`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`search`,async:!0,parameters:[`filters: any`],returnType:`Promise<ChatMessage[]>`,aiCallable:!0},{name:`setAttachments`,async:!1,parameters:[`items: Array<object>`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setToolCallData`,async:!1,parameters:[`data: Record<string, unknown> | null`],returnType:`void`,aiCallable:!1},{name:`softDelete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-chat:AgentSession`,`@happyvertical/smrt-chat:ChatMessage`,`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-chat:ChatThread`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-chat:ChatParticipant`,name:`ChatParticipant`,collection:`chatparticipants`,description:`Room membership row. Internal model — membership must be established and mutated only through the membership/owner-checked ChatService (S5 #1392).`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`roomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:ChatRoom`},{name:`profileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`role`,type:`text`,required:!0,default:`member`,enum:[`owner`,`admin`,`member`,`viewer`]},{name:`status`,type:`text`,required:!0,default:`active`,enum:[`active`,`left`,`kicked`,`banned`]},{name:`onlineStatus`,type:`text`,required:!0,default:`offline`,enum:[`online`,`away`,`dnd`,`offline`]},{name:`lastReadMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatMessage`},{name:`lastSeenAt`,type:`datetime`,required:!1},{name:`joinedAt`,type:`datetime`,required:!1},{name:`nickname`,type:`text`,required:!1,default:``},{name:`isMuted`,type:`boolean`,required:!1,default:!1},{name:`isPinned`,type:`boolean`,required:!1,default:!1}],rest:[{method:`POST`,path:`/chatparticipants/getByRoom`},{method:`POST`,path:`/chatparticipants/getByProfile`},{method:`POST`,path:`/chatparticipants/findMembership`},{method:`POST`,path:`/chatparticipants/findActiveMembership`},{method:`POST`,path:`/chatparticipants/isActiveMember`},{method:`POST`,path:`/chatparticipants/getOnlineInRoom`},{method:`POST`,path:`/chatparticipants/getAdminsInRoom`},{method:`POST`,path:`/chatparticipants/countInRoom`},{method:`GET`,path:`/chatparticipants`},{method:`GET`,path:`/chatparticipants/[id]`}],mcp:[{operation:`get`,name:`chatparticipant_get`},{operation:`list`,name:`chatparticipant_list`},{operation:`countInRoom`,name:`chatparticipantcollection_countinroom`},{operation:`findActiveMembership`,name:`chatparticipantcollection_findactivemembership`},{operation:`findMembership`,name:`chatparticipantcollection_findmembership`},{operation:`getAdminsInRoom`,name:`chatparticipantcollection_getadminsinroom`},{operation:`getByProfile`,name:`chatparticipantcollection_getbyprofile`},{operation:`getByRoom`,name:`chatparticipantcollection_getbyroom`},{operation:`getOnlineInRoom`,name:`chatparticipantcollection_getonlineinroom`},{operation:`isActiveMember`,name:`chatparticipantcollection_isactivemember`}],cli:[{operation:`create`,name:`chatparticipant_create`},{operation:`delete`,name:`chatparticipant_delete`},{operation:`get`,name:`chatparticipant_get`},{operation:`isActive`,name:`chatparticipant_isActive`},{operation:`isAdmin`,name:`chatparticipant_isAdmin`},{operation:`isOwner`,name:`chatparticipant_isOwner`},{operation:`leave`,name:`chatparticipant_leave`},{operation:`list`,name:`chatparticipant_list`},{operation:`markRead`,name:`chatparticipant_markRead`},{operation:`setOnline`,name:`chatparticipant_setOnline`},{operation:`update`,name:`chatparticipant_update`},{operation:`countInRoom`,name:`chatparticipantcollection_countInRoom`},{operation:`findActiveMembership`,name:`chatparticipantcollection_findActiveMembership`},{operation:`findMembership`,name:`chatparticipantcollection_findMembership`},{operation:`getAdminsInRoom`,name:`chatparticipantcollection_getAdminsInRoom`},{operation:`getByProfile`,name:`chatparticipantcollection_getByProfile`},{operation:`getByRoom`,name:`chatparticipantcollection_getByRoom`},{operation:`getOnlineInRoom`,name:`chatparticipantcollection_getOnlineInRoom`},{operation:`isActiveMember`,name:`chatparticipantcollection_isActiveMember`}],methods:[{name:`countInRoom`,async:!0,parameters:[`roomId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findActiveMembership`,async:!0,parameters:[`roomId: string`,`profileId: string`,`tenantId: string`],returnType:`Promise<ChatParticipant | null>`,aiCallable:!0},{name:`findMembership`,async:!0,parameters:[`roomId: string`,`profileId: string`,`tenantId?: string`],returnType:`Promise<ChatParticipant | null>`,aiCallable:!0},{name:`getAdminsInRoom`,async:!0,parameters:[`roomId: string`],returnType:`Promise<ChatParticipant[]>`,aiCallable:!0},{name:`getByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ChatParticipant[]>`,aiCallable:!0},{name:`getByRoom`,async:!0,parameters:[`roomId: string`],returnType:`Promise<ChatParticipant[]>`,aiCallable:!0},{name:`getOnlineInRoom`,async:!0,parameters:[`roomId: string`],returnType:`Promise<ChatParticipant[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isActiveMember`,async:!0,parameters:[`roomId: string`,`profileId: string`,`tenantId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isAdmin`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOwner`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`leave`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`markRead`,async:!0,parameters:[`messageId: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`setOnline`,async:!0,parameters:[`status: OnlineStatus`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-chat:ChatMessage`,`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-chat:ChatReaction`,name:`ChatReaction`,collection:`chatreactions`,description:`Message reaction. Internal model — reactions must be added/removed only through the membership-checked ChatService (S5 #1392).`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`messageId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:ChatMessage`},{name:`profileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`emoji`,type:`text`,required:!0,default:``}],rest:[{method:`POST`,path:`/chatreactions/getByMessage`},{method:`POST`,path:`/chatreactions/getReactionCounts`},{method:`POST`,path:`/chatreactions/toggle`},{method:`GET`,path:`/chatreactions`}],mcp:[{operation:`list`,name:`chatreaction_list`},{operation:`getByMessage`,name:`chatreactioncollection_getbymessage`},{operation:`getReactionCounts`,name:`chatreactioncollection_getreactioncounts`},{operation:`toggle`,name:`chatreactioncollection_toggle`}],cli:[],methods:[{name:`getByMessage`,async:!0,parameters:[`messageId: string`],returnType:`Promise<ChatReaction[]>`,aiCallable:!0},{name:`getReactionCounts`,async:!0,parameters:[`messageId: string`],returnType:`Promise<Map<string, object>>`,aiCallable:!0},{name:`toggle`,async:!0,parameters:[`messageId: string`,`profileId: string`,`emoji: string`,`tenantId: string`],returnType:`Promise<object>`,aiCallable:!0}],references:[`@happyvertical/smrt-chat:ChatMessage`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-chat:ChatRoom`,name:`ChatRoom`,collection:`chatrooms`,description:`Chat room supporting public channels, private groups, DMs, and agent conversations.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`roomType`,type:`text`,required:!0,default:`public`,enum:[`public`,`private`,`dm`,`agent`]},{name:`status`,type:`text`,required:!0,default:`active`,enum:[`active`,`archived`,`deleted`]},{name:`topic`,type:`text`,required:!1,default:``},{name:`avatarUrl`,type:`text`,required:!1,default:``},{name:`isArchived`,type:`boolean`,required:!1,default:!1},{name:`maxParticipants`,type:`integer`,required:!1,default:0},{name:`metadata`,type:`text`,required:!1,default:`{}`},{name:`createdByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`lastMessageAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/chatrooms/findByType`},{method:`POST`,path:`/chatrooms/findPublic`},{method:`POST`,path:`/chatrooms/findDMs`},{method:`POST`,path:`/chatrooms/findAgentRooms`},{method:`POST`,path:`/chatrooms/search`},{method:`GET`,path:`/chatrooms`},{method:`GET`,path:`/chatrooms/[id]`}],mcp:[{operation:`get`,name:`chatroom_get`},{operation:`list`,name:`chatroom_list`},{operation:`findAgentRooms`,name:`chatroomcollection_findagentrooms`},{operation:`findByType`,name:`chatroomcollection_findbytype`},{operation:`findDMs`,name:`chatroomcollection_finddms`},{operation:`findOrCreateDM`,name:`chatroomcollection_findorcreatedm`},{operation:`findPublic`,name:`chatroomcollection_findpublic`},{operation:`search`,name:`chatroomcollection_search`}],cli:[{operation:`archive`,name:`chatroom_archive`},{operation:`create`,name:`chatroom_create`},{operation:`delete`,name:`chatroom_delete`},{operation:`get`,name:`chatroom_get`},{operation:`getMetadata`,name:`chatroom_getMetadata`},{operation:`isActive`,name:`chatroom_isActive`},{operation:`isAgentRoom`,name:`chatroom_isAgentRoom`},{operation:`isDM`,name:`chatroom_isDM`},{operation:`isPublic`,name:`chatroom_isPublic`},{operation:`list`,name:`chatroom_list`},{operation:`setMetadata`,name:`chatroom_setMetadata`},{operation:`unarchive`,name:`chatroom_unarchive`},{operation:`update`,name:`chatroom_update`},{operation:`updateMetadata`,name:`chatroom_updateMetadata`},{operation:`findAgentRooms`,name:`chatroomcollection_findAgentRooms`},{operation:`findByType`,name:`chatroomcollection_findByType`},{operation:`findDMs`,name:`chatroomcollection_findDMs`},{operation:`findOrCreateDM`,name:`chatroomcollection_findOrCreateDM`},{operation:`findPublic`,name:`chatroomcollection_findPublic`},{operation:`search`,name:`chatroomcollection_search`}],methods:[{name:`archive`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findAgentRooms`,async:!0,parameters:[],returnType:`Promise<ChatRoom[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`roomType: ChatRoomType`],returnType:`Promise<ChatRoom[]>`,aiCallable:!0},{name:`findDMs`,async:!0,parameters:[],returnType:`Promise<ChatRoom[]>`,aiCallable:!0},{name:`findOrCreateDM`,async:!0,parameters:[`profileId1: string`,`profileId2: string`,`tenantId: string`,`participants: ChatParticipantCollection`],returnType:`Promise<ChatRoom>`,aiCallable:!0},{name:`findPublic`,async:!0,parameters:[],returnType:`Promise<ChatRoom[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`ChatRoomMetadata`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isAgentRoom`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDM`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPublic`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`options?: object`],returnType:`Promise<ChatRoom[]>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: ChatRoomMetadata`],returnType:`void`,aiCallable:!1},{name:`unarchive`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: ChatRoomMetadata`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-chat:ChatThread`,name:`ChatThread`,collection:`chatthreads`,description:`Conversation thread. Internal model — threads must be created/mutated only through the membership-checked ChatService (S5 #1392).`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`roomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:ChatRoom`},{name:`rootMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatMessage`},{name:`title`,type:`text`,required:!1,default:``},{name:`isResolved`,type:`boolean`,required:!1,default:!1},{name:`messageCount`,type:`integer`,required:!1,default:0},{name:`lastMessageAt`,type:`datetime`,required:!1},{name:`participantCount`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/chatthreads/getByRoom`},{method:`POST`,path:`/chatthreads/getActive`},{method:`POST`,path:`/chatthreads/getUnresolved`},{method:`GET`,path:`/chatthreads`},{method:`GET`,path:`/chatthreads/[id]`}],mcp:[{operation:`get`,name:`chatthread_get`},{operation:`list`,name:`chatthread_list`},{operation:`getActive`,name:`chatthreadcollection_getactive`},{operation:`getByRoom`,name:`chatthreadcollection_getbyroom`},{operation:`getUnresolved`,name:`chatthreadcollection_getunresolved`}],cli:[{operation:`create`,name:`chatthread_create`},{operation:`delete`,name:`chatthread_delete`},{operation:`get`,name:`chatthread_get`},{operation:`list`,name:`chatthread_list`},{operation:`reopen`,name:`chatthread_reopen`},{operation:`resolve`,name:`chatthread_resolve`},{operation:`update`,name:`chatthread_update`},{operation:`getActive`,name:`chatthreadcollection_getActive`},{operation:`getByRoom`,name:`chatthreadcollection_getByRoom`},{operation:`getUnresolved`,name:`chatthreadcollection_getUnresolved`}],methods:[{name:`getActive`,async:!0,parameters:[`roomId: string`],returnType:`Promise<ChatThread[]>`,aiCallable:!0},{name:`getByRoom`,async:!0,parameters:[`roomId: string`],returnType:`Promise<ChatThread[]>`,aiCallable:!0},{name:`getUnresolved`,async:!0,parameters:[],returnType:`Promise<ChatThread[]>`,aiCallable:!0},{name:`reopen`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`resolve`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-chat:ChatMessage`,`@happyvertical/smrt-chat:ChatRoom`],exposed:!0},{id:`@happyvertical/smrt-chat:VoiceGatewayTurn`,name:`VoiceGatewayTurn`,collection:`voicegatewayturns`,description:`Durable reservation for a gateway turn. The natural key makes turn_id replay checks concurrency-safe before transcript messages are written.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`voiceSessionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:VoiceSession`},{name:`gatewaySessionId`,type:`text`,required:!0,default:``},{name:`gatewayTurnId`,type:`text`,required:!0,default:``},{name:`target`,type:`text`,required:!0,default:`smrt:chat`},{name:`status`,type:`text`,required:!0,default:`processing`,enum:[`processing`,`completed`,`failed`]},{name:`completedAt`,type:`datetime`,required:!1},{name:`failedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/voicegatewayturns/reserveTurn`},{method:`GET`,path:`/voicegatewayturns`},{method:`GET`,path:`/voicegatewayturns/[id]`}],mcp:[{operation:`get`,name:`voicegatewayturn_get`},{operation:`list`,name:`voicegatewayturn_list`},{operation:`reserveTurn`,name:`voicegatewayturncollection_reserveturn`}],cli:[],methods:[{name:`complete`,async:!0,parameters:[`now?: Date`],returnType:`Promise<void>`,aiCallable:!1},{name:`fail`,async:!0,parameters:[`now?: Date`],returnType:`Promise<void>`,aiCallable:!1},{name:`reserveTurn`,async:!0,parameters:[`input: object`],returnType:`Promise<VoiceGatewayTurn>`,aiCallable:!0}],references:[`@happyvertical/smrt-chat:VoiceSession`],exposed:!0},{id:`@happyvertical/smrt-chat:VoiceSession`,name:`VoiceSession`,collection:`voicesessions`,description:`Short-lived binding proving a voice gateway turn belongs to an authenticated SMRT actor, persona, and chat session.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`gatewaySessionId`,type:`text`,required:!0,default:``},{name:`actorProfileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`actorUserId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`personaId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`agentSessionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:AgentSession`},{name:`chatRoomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-chat:ChatRoom`},{name:`threadId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-chat:ChatThread`},{name:`target`,type:`text`,required:!0,default:`smrt:chat`},{name:`status`,type:`text`,required:!0,default:`active`,enum:[`active`,`expired`,`revoked`]},{name:`expiresAt`,type:`datetime`,required:!0},{name:`lastTurnAt`,type:`datetime`,required:!1},{name:`lastGatewayTurnId`,type:`text`,required:!1},{name:`personaSnapshot`,type:`text`,required:!1,default:`{}`},{name:`metadata`,type:`text`,required:!1,default:`{}`},{name:`processedTurnIds`,type:`text`,required:!1,default:`[]`}],rest:[{method:`POST`,path:`/voicesessions/getActiveById`},{method:`POST`,path:`/voicesessions/expireStale`},{method:`GET`,path:`/voicesessions`},{method:`GET`,path:`/voicesessions/[id]`}],mcp:[{operation:`get`,name:`voicesession_get`},{operation:`list`,name:`voicesession_list`},{operation:`expireStale`,name:`voicesessioncollection_expirestale`},{operation:`getActiveById`,name:`voicesessioncollection_getactivebyid`}],cli:[{operation:`create`,name:`voicesession_create`},{operation:`delete`,name:`voicesession_delete`},{operation:`expire`,name:`voicesession_expire`},{operation:`get`,name:`voicesession_get`},{operation:`getMetadata`,name:`voicesession_getMetadata`},{operation:`getPersonaSnapshot`,name:`voicesession_getPersonaSnapshot`},{operation:`getProcessedTurnIds`,name:`voicesession_getProcessedTurnIds`},{operation:`hasProcessedTurn`,name:`voicesession_hasProcessedTurn`},{operation:`isActive`,name:`voicesession_isActive`},{operation:`isExpired`,name:`voicesession_isExpired`},{operation:`list`,name:`voicesession_list`},{operation:`recordGatewayTurn`,name:`voicesession_recordGatewayTurn`},{operation:`revoke`,name:`voicesession_revoke`},{operation:`setMetadata`,name:`voicesession_setMetadata`},{operation:`setPersonaSnapshot`,name:`voicesession_setPersonaSnapshot`},{operation:`update`,name:`voicesession_update`},{operation:`expireStale`,name:`voicesessioncollection_expireStale`},{operation:`getActiveById`,name:`voicesessioncollection_getActiveById`}],methods:[{name:`expire`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`expireStale`,async:!0,parameters:[`olderThan?: Date`,`scope?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`getActiveById`,async:!0,parameters:[`id: string`,`target?: any`],returnType:`Promise<VoiceSession | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPersonaSnapshot`,async:!1,parameters:[],returnType:`ConversationPersona`,aiCallable:!1},{name:`getProcessedTurnIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`hasProcessedTurn`,async:!1,parameters:[`turnId: string`],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[`now?: Date`],returnType:`boolean`,aiCallable:!1},{name:`isExpired`,async:!1,parameters:[`now?: Date`],returnType:`boolean`,aiCallable:!1},{name:`recordGatewayTurn`,async:!1,parameters:[`turnId: string`,`maxRememberedTurns?: any`],returnType:`void`,aiCallable:!1},{name:`revoke`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setPersonaSnapshot`,async:!1,parameters:[`persona: ConversationPersona`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-chat:AgentSession`,`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-chat:ChatThread`,`@happyvertical/smrt-personas:AgentPersona`,`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-users:User`],exposed:!0}],dependencies:[`assets`,`images`,`profiles`,`reports`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`node:crypto + node:async_hooks`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]},recipes:[{id:`chat.assistant`,label:`Assistant`,summary:`Ask an AI assistant about the page you are on, from a dock in the app shell.`,synonyms:[`ai assistant`,`ai chat`,`copilot`,`chatbot`,`ask ai`,`helper`],models:[`@happyvertical/smrt-chat:AgentSession`,`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-chat:ChatParticipant`,`@happyvertical/smrt-chat:ChatThread`,`@happyvertical/smrt-chat:ChatMessage`],nav:[],requires:[],help:{markdown:`## Overview
96
+
97
+ The assistant is a chat panel that opens from a button in the app's top bar. It
98
+ sees the page you are on, so you can ask about what is in front of you and get
99
+ an answer without leaving it.
100
+
101
+ You can keep several conversations and come back to them later. The assistant
102
+ only reaches the data and actions the app owner allows, and it works with your
103
+ own permissions: it cannot show you anything you could not open yourself.
104
+
105
+ ## Tasks
106
+
107
+ ### Ask a question
108
+
109
+ 1. Choose the assistant button in the top bar to open the panel.
110
+ 2. Type your question and send it.
111
+ 3. Read the reply as it arrives. Open the panel again from any page to carry on.
112
+
113
+ ### Start a new conversation
114
+
115
+ 1. Open the panel and choose the conversation list.
116
+ 2. Start a new conversation, or pick an earlier one to carry on.
117
+
118
+ ### Approve a change
119
+
120
+ When the assistant proposes a change, it shows what will happen and waits.
121
+
122
+ 1. Read the proposed change.
123
+ 2. Confirm it to go ahead, or reject it. Nothing changes until you confirm.
124
+
125
+ ### Choose a model
126
+
127
+ If the app offers more than one model, pick one from the list in the panel
128
+ before you send a message.
129
+
130
+ ## What the app owner sets up
131
+
132
+ - A model. Hosted models need the service key their provider issues, stored as
133
+ a secret in the app (\`OPENAI_API_KEY\`, \`ANTHROPIC_API_KEY\` or
134
+ \`GEMINI_API_KEY\`); only the key for the model the app uses is needed. Models
135
+ that run in the browser need no key.
136
+ - The tools the assistant may use. It is offered nothing unless the app lists
137
+ it, so an empty list means conversation only.
138
+ - Optionally, report tools. An app can let the assistant draft a report from a
139
+ request, preview it, and save it only after a person approves that exact
140
+ report.
141
+ `,fieldRefs:[]},surfaces:[{kind:`shell-widget`,slot:`header.end`,export:`@happyvertical/smrt-chat/svelte#AssistantDock`,label:`Assistant`,icon:`bot`}],providers:[{id:`llm`,kind:`llm`,options:[`openai`,`anthropic`,`gemini`,`webllm`,`bitgpu`],required:!0,secrets:[`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`GEMINI_API_KEY`],browserOptions:[`webllm`,`bitgpu`]}],runtime:`both`,demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto + node:async_hooks; and its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-images, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627, #3628).`,`Provider llm has an in-browser option (webllm, bitgpu).`]}},{id:`chat.rooms`,label:`Team Chat`,summary:`Organize team conversations in rooms with threads and reactions.`,synonyms:[`team chat`,`channels`,`group chat`,`conversations`],models:[`@happyvertical/smrt-chat:ChatRoom`,`@happyvertical/smrt-chat:ChatMessage`,`@happyvertical/smrt-chat:ChatParticipant`,`@happyvertical/smrt-chat:ChatThread`,`@happyvertical/smrt-chat:ChatReaction`],nav:[{label:`Chat Rooms`,model:`@happyvertical/smrt-chat:ChatRoom`,icon:`users`,description:`Team conversations organized by topic or audience.`,noun:`chat room`}],requires:[],group:{id:`team-collaboration`,label:`Team collaboration`,summary:`Keep conversations and shared work in one place.`},section:{id:`team`,label:`Team`,icon:`users`,description:`People and the conversations that keep them aligned.`},options:{"@happyvertical/smrt-chat:ChatRoom":{fields:{metadata:{visibility:`hidden`},createdByProfileId:{visibility:`hidden`},lastMessageAt:{label:`Last message`,order:1}}},"@happyvertical/smrt-chat:ChatMessage":{fields:{metadata:{visibility:`hidden`},toolCallData:{visibility:`hidden`},attachments:{visibility:`advanced`}}},"@happyvertical/smrt-chat:ChatParticipant":{fields:{lastReadMessageId:{visibility:`hidden`},lastSeenAt:{visibility:`advanced`}}}},help:{markdown:`## Overview
142
+
143
+ Team Chat keeps conversations in rooms so people can find the right discussion,
144
+ follow threads, and see reactions without mixing unrelated work together. The
145
+ room and message lists are read-only generated views. Create rooms, manage
146
+ members, and send messages through the app's authorized chat workflow.
147
+
148
+ ## Tasks
149
+
150
+ ### Find the right room
151
+
152
+ 1. Open **Chat Rooms** from the navigation.
153
+ 2. Search for a room by its **{field:ChatRoom.name}**, or use its
154
+ **{field:ChatRoom.topic}** to tell similar rooms apart.
155
+ 3. Open the room and check **{field:ChatRoom.lastMessageAt}** to see where the
156
+ most recent discussion happened.
157
+
158
+ ### Follow a conversation
159
+
160
+ 1. Read the room messages and open a thread when you need the discussion in
161
+ one place.
162
+ 2. Use the thread **{field:ChatThread.title}** to describe the subject when
163
+ your app supplies one.
164
+ 3. Add a reaction by choosing the **{field:ChatReaction.emoji}** that best
165
+ communicates your response.
166
+
167
+ ### Keep a room useful
168
+
169
+ 1. Give the room a clear **{field:ChatRoom.name}** and a short
170
+ **{field:ChatRoom.description}**.
171
+ 2. Set **{field:ChatRoom.roomType}** deliberately: public for broad team
172
+ discussion, private for restricted groups, and direct messages for one-to-one
173
+ conversations.
174
+ 3. Use a focused **{field:ChatMessage.content}** so teammates can scan the
175
+ conversation and reply in context.
176
+ `,fieldRefs:[`ChatMessage.content`,`ChatReaction.emoji`,`ChatRoom.description`,`ChatRoom.lastMessageAt`,`ChatRoom.name`,`ChatRoom.roomType`,`ChatRoom.topic`,`ChatThread.title`]},surfaces:[{kind:`route`,path:`/chat/rooms`,export:`@happyvertical/smrt-chat/svelte#ChatLayout`,label:`Team chat`},{kind:`playground`,export:`@happyvertical/smrt-chat/playground#default`,label:`Static chat fixtures`}],runtime:`both`,demoSeed:{export:`@happyvertical/smrt-chat/playground#chatRoomsFixture`},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto + node:async_hooks; and its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-images, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627, #3628).`]}}]},{id:`comments`,packageName:`@happyvertical/smrt-comments`,version:`0.55.11`,description:`Record comments and mention hooks for SMRT applications`,models:[{id:`@happyvertical/smrt-comments:Comment`,name:`Comment`,collection:`comments`,fields:[{name:`metaType`,type:`text`,required:!0},{name:`metaId`,type:`text`,required:!0},{name:`role`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!1,default:0},{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`authorUserId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`body`,type:`text`,required:!0},{name:`mentions`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`hydrate`,async:!0,parameters:[],returnType:`Promise<T | null>`,aiCallable:!1},{name:`listForRecord`,async:!0,parameters:[`recordType: string`,`recordId: string`],returnType:`Promise<Comment[]>`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!1}],dependencies:[`messages`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`comments.records`,label:`Record comments`,summary:`Discuss work directly on the records it concerns.`,synonyms:[`comments`,`mentions`,`discussion`],models:[`@happyvertical/smrt-comments:Comment`],nav:[],requires:[],group:{id:`comments`,label:`Comments`,summary:`Keep discussions alongside the records your team works on.`},help:{markdown:`## Overview
177
+
178
+ Record comments keep a discussion next to the work it concerns. Open a record
179
+ you can access to read its discussion or add a comment. Comments are part of
180
+ the record page, rather than a separate list of every discussion.
181
+
182
+ ## Tasks
183
+
184
+ ### Add a comment
185
+
186
+ Open the record, find Comments, write your message and choose Post comment.
187
+ Your app controls who can read the record and who can contribute to its discussion.
188
+
189
+ ### Mention someone
190
+
191
+ If your app provides mention selection, choose a teammate who can access the
192
+ record. When mention notifications are connected, that person receives a
193
+ notification. Typing a name alone does not select a recipient.
194
+
195
+ ### Check a failed post
196
+
197
+ If posting reports an error, refresh the discussion before trying again. A
198
+ comment may have been saved even when its mention notification could not be
199
+ delivered. If it appears in the discussion, do not post it a second time.
200
+ `,fieldRefs:[]},surfaces:[{kind:`playground`,export:`@happyvertical/smrt-comments/svelte#RecordCommentsPlayground`,label:`Record discussion preview`}],runtime:`both`,demoSeed:{export:`@happyvertical/smrt-comments/svelte#recordCommentsDemo`},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]}}]},{id:`commerce`,packageName:`@happyvertical/smrt-commerce`,version:`0.55.11`,description:`Commerce models for the SMRT framework - contracts, fulfillments, payments`,models:[{id:`@happyvertical/smrt-commerce:Agreement`,name:`Agreement`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Service or maintenance agreement`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`agreement_create`},{operation:`delete`,name:`agreement_delete`},{operation:`get`,name:`agreement_get`},{operation:`isAccepted`,name:`agreement_isaccepted`},{operation:`isCompleted`,name:`agreement_iscompleted`},{operation:`isDraft`,name:`agreement_isdraft`},{operation:`isExpired`,name:`agreement_isexpired`},{operation:`isOverdue`,name:`agreement_isoverdue`},{operation:`list`,name:`agreement_list`},{operation:`recalculateTotals`,name:`agreement_recalculatetotals`},{operation:`update`,name:`agreement_update`}],cli:[{operation:`create`,name:`agreement_create`},{operation:`delete`,name:`agreement_delete`},{operation:`get`,name:`agreement_get`},{operation:`isAccepted`,name:`agreement_isAccepted`},{operation:`isCompleted`,name:`agreement_isCompleted`},{operation:`isDraft`,name:`agreement_isDraft`},{operation:`isExpired`,name:`agreement_isExpired`},{operation:`isOverdue`,name:`agreement_isOverdue`},{operation:`list`,name:`agreement_list`},{operation:`recalculateTotals`,name:`agreement_recalculateTotals`},{operation:`update`,name:`agreement_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:BillingAccount`,name:`BillingAccount`,collection:`billingaccounts`,description:`One payer's account with one seller: the commerce Customer invoices are issued to, the provider customer they are pushed to, and the payer's billing terms.`,display:{label:`name`},fields:[{name:`sellerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`payerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`},{name:`name`,type:`text`,required:!1,default:``},{name:`email`,type:`text`,required:!1,default:``},{name:`provider`,type:`text`,required:!1,default:``},{name:`providerCustomerId`,type:`text`,required:!1,default:``},{name:`automaticTax`,type:`boolean`,required:!1,default:!0},{name:`flatDiscountBasisPoints`,type:`integer`,required:!1,default:0},{name:`paymentTermsDays`,type:`integer`,required:!1,default:30},{name:`standing`,type:`text`,required:!1,default:`current`,enum:[`current`,`past_due`,`uncollectible`]},{name:`billingAnchorAt`,type:`datetime`,required:!1},{name:`prorateFlatPlans`,type:`boolean`,required:!1,default:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-users:Tenant`],exposed:!1},{id:`@happyvertical/smrt-commerce:BillingLineSource`,name:`BillingLineSource`,collection:`billinglinesources`,description:`A claim that one billable source — a charge, an adjustment, or a window of a flat plan — is billed on exactly one period close.`,fields:[{name:`sellerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`periodCloseId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:BillingPeriodClose`},{name:`sourceType`,type:`text`,required:!1,default:`client_charge`,enum:[`client_charge`,`billing_adjustment`,`retail_charge`,`subscription_period`,`credit_carry_forward`]},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`lineKey`,type:`text`,required:!1,default:``},{name:`lineDescription`,type:`text`,required:!1,default:``},{name:`amount`,type:`integer`,required:!1,default:0},{name:`discount`,type:`integer`,required:!1,default:0},{name:`quantity`,type:`decimal`,required:!1,default:0},{name:`chainSequence`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`periodStart`,type:`datetime`,required:!1},{name:`periodEnd`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-commerce:BillingPeriodClose`,`@happyvertical/smrt-users:Tenant`],exposed:!1},{id:`@happyvertical/smrt-commerce:BillingPaymentAttempt`,name:`BillingPaymentAttempt`,collection:`billingpaymentattempts`,description:`One payment attempt on a payment rail (#3138): a short-lived provider checkout (for example a BTCPay invoice) paying a credit purchase or an issued invoice.`,fields:[{name:`sellerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`payerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`billingAccountId`,type:`text`,required:!1,default:``},{name:`purpose`,type:`text`,required:!1,default:`credit_purchase`,enum:[`credit_purchase`,`invoice_payment`]},{name:`invoiceId`,type:`text`,required:!1,default:``},{name:`spendingPolicyId`,type:`text`,required:!1,default:``},{name:`provider`,type:`text`,required:!1,default:``},{name:`orderId`,type:`text`,required:!1,default:``},{name:`checkoutId`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`open`},{name:`exception`,type:`text`,required:!1,default:`none`},{name:`flag`,type:`text`,required:!1,default:``,enum:[``,`overpaid`,`underpaid`,`paid_late`,`manually_marked`,`invalidated_after_settlement`,`invoice_already_paid`,`amount_mismatch`,`out_of_band_without_settlement`]},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`amountPaid`,type:`integer`,required:!1,default:0},{name:`nativeCurrency`,type:`text`,required:!1,default:``},{name:`nativeAmountDue`,type:`integer`,required:!1,default:0},{name:`nativeAmountPaid`,type:`integer`,required:!1,default:0},{name:`rate`,type:`text`,required:!1,default:``},{name:`rateSource`,type:`text`,required:!1,default:``},{name:`checkoutUrl`,type:`text`,required:!1,default:``},{name:`expiresAt`,type:`datetime`,required:!1},{name:`payments`,type:`json`,required:!1},{name:`timeline`,type:`json`,required:!1},{name:`settledAt`,type:`datetime`,required:!1},{name:`paymentId`,type:`text`,required:!1,default:``},{name:`creditGrantId`,type:`text`,required:!1,default:``},{name:`resolution`,type:`text`,required:!1,default:``},{name:`resolvedAt`,type:`datetime`,required:!1},{name:`outOfBandRequestedAt`,type:`datetime`,required:!1},{name:`pausedStanding`,type:`text`,required:!1,default:``},{name:`excessAmount`,type:`integer`,required:!1,default:0},{name:`excessRevision`,type:`integer`,required:!1,default:0},{name:`settlementOutcome`,type:`text`,required:!1,default:``},{name:`refundedAmount`,type:`integer`,required:!1,default:0},{name:`refundedPrincipal`,type:`integer`,required:!1,default:0},{name:`refunds`,type:`json`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-users:Tenant`],exposed:!1},{id:`@happyvertical/smrt-commerce:BillingPeriodClose`,name:`BillingPeriodClose`,collection:`billingperiodcloses`,description:`The idempotency anchor for one payer's invoice in one currency for one period. Its id is derived from that identity, so a retried close always resumes the same row, invoice, and provider invoice.`,fields:[{name:`sellerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`kind`,type:`text`,required:!1,default:`provider`,enum:[`provider`,`reseller`]},{name:`payerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`periodStart`,type:`datetime`,required:!1},{name:`periodEnd`,type:`datetime`,required:!1},{name:`billingAccountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:BillingAccount`},{name:`status`,type:`text`,required:!1,default:`collecting`,enum:[`collecting`,`invoiced`,`pushed`,`sent`,`completed`,`carried_forward`]},{name:`invoiceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Invoice`},{name:`providerInvoiceId`,type:`text`,required:!1,default:``},{name:`subtotal`,type:`integer`,required:!1,default:0},{name:`lineCount`,type:`integer`,required:!1,default:0},{name:`issuedAt`,type:`datetime`,required:!1},{name:`leaseToken`,type:`text`,required:!1},{name:`leaseExpiresAt`,type:`datetime`,required:!1},{name:`attempts`,type:`integer`,required:!1,default:0},{name:`lastError`,type:`text`,required:!1,default:``}],rest:[],mcp:[],cli:[],methods:[{name:`processBillingEvents`,async:!0,parameters:[`args?: Record<string, unknown>`,`_context?: JobExecutionContext`],returnType:`Promise<unknown>`,aiCallable:!1},{name:`runPeriodClose`,async:!0,parameters:[`args?: Record<string, unknown>`,`_context?: JobExecutionContext`],returnType:`Promise<unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:BillingAccount`,`@happyvertical/smrt-commerce:Invoice`,`@happyvertical/smrt-users:Tenant`],exposed:!1},{id:`@happyvertical/smrt-commerce:Cart`,name:`Cart`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Transient order-in-progress for a shopper.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`cart_create`},{operation:`delete`,name:`cart_delete`},{operation:`get`,name:`cart_get`},{operation:`isAccepted`,name:`cart_isaccepted`},{operation:`isCompleted`,name:`cart_iscompleted`},{operation:`isDraft`,name:`cart_isdraft`},{operation:`isExpired`,name:`cart_isexpired`},{operation:`isOverdue`,name:`cart_isoverdue`},{operation:`list`,name:`cart_list`},{operation:`recalculateTotals`,name:`cart_recalculatetotals`},{operation:`update`,name:`cart_update`}],cli:[{operation:`create`,name:`cart_create`},{operation:`delete`,name:`cart_delete`},{operation:`get`,name:`cart_get`},{operation:`isAccepted`,name:`cart_isAccepted`},{operation:`isCompleted`,name:`cart_isCompleted`},{operation:`isDraft`,name:`cart_isDraft`},{operation:`isExpired`,name:`cart_isExpired`},{operation:`isOverdue`,name:`cart_isOverdue`},{operation:`list`,name:`cart_list`},{operation:`recalculateTotals`,name:`cart_recalculateTotals`},{operation:`update`,name:`cart_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:Contract`,name:`Contract`,collection:`contracts`,description:`Contract is the base class for all commercial agreements.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`POST`,path:`/contracts/findByCustomer`},{method:`POST`,path:`/contracts/findByVendor`},{method:`POST`,path:`/contracts/findByType`},{method:`POST`,path:`/contracts/findByStatus`},{method:`POST`,path:`/contracts/findDrafts`},{method:`POST`,path:`/contracts/findAccepted`},{method:`POST`,path:`/contracts/findOverdue`},{method:`POST`,path:`/contracts/findExpired`},{method:`POST`,path:`/contracts/findByDateRange`},{method:`POST`,path:`/contracts/findByTenant`},{method:`POST`,path:`/contracts/findGlobal`},{method:`POST`,path:`/contracts/findWithGlobals`},{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`}],mcp:[{operation:`get`,name:`contract_get`},{operation:`list`,name:`contract_list`},{operation:`findAccepted`,name:`contractcollection_findaccepted`},{operation:`findByCustomer`,name:`contractcollection_findbycustomer`},{operation:`findByDateRange`,name:`contractcollection_findbydaterange`},{operation:`findByStatus`,name:`contractcollection_findbystatus`},{operation:`findByTenant`,name:`contractcollection_findbytenant`},{operation:`findByType`,name:`contractcollection_findbytype`},{operation:`findByVendor`,name:`contractcollection_findbyvendor`},{operation:`findDrafts`,name:`contractcollection_finddrafts`},{operation:`findExpired`,name:`contractcollection_findexpired`},{operation:`findGlobal`,name:`contractcollection_findglobal`},{operation:`findOverdue`,name:`contractcollection_findoverdue`},{operation:`findWithGlobals`,name:`contractcollection_findwithglobals`}],cli:[{operation:`create`,name:`contract_create`},{operation:`delete`,name:`contract_delete`},{operation:`get`,name:`contract_get`},{operation:`isAccepted`,name:`contract_isAccepted`},{operation:`isCompleted`,name:`contract_isCompleted`},{operation:`isDraft`,name:`contract_isDraft`},{operation:`isExpired`,name:`contract_isExpired`},{operation:`isOverdue`,name:`contract_isOverdue`},{operation:`list`,name:`contract_list`},{operation:`recalculateTotals`,name:`contract_recalculateTotals`},{operation:`update`,name:`contract_update`},{operation:`findAccepted`,name:`contractcollection_findAccepted`},{operation:`findByCustomer`,name:`contractcollection_findByCustomer`},{operation:`findByDateRange`,name:`contractcollection_findByDateRange`},{operation:`findByStatus`,name:`contractcollection_findByStatus`},{operation:`findByTenant`,name:`contractcollection_findByTenant`},{operation:`findByType`,name:`contractcollection_findByType`},{operation:`findByVendor`,name:`contractcollection_findByVendor`},{operation:`findDrafts`,name:`contractcollection_findDrafts`},{operation:`findExpired`,name:`contractcollection_findExpired`},{operation:`findGlobal`,name:`contractcollection_findGlobal`},{operation:`findOverdue`,name:`contractcollection_findOverdue`},{operation:`findWithGlobals`,name:`contractcollection_findWithGlobals`}],methods:[{name:`findAccepted`,async:!0,parameters:[],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ContractStatus`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`contractType: ContractType`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findByVendor`,async:!0,parameters:[`vendorId: string`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findExpired`,async:!0,parameters:[],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findOverdue`,async:!0,parameters:[],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Contract[]>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:ContractLineItem`,name:`ContractLineItem`,collection:`contractlineitems`,description:`ContractLineItem represents a single line item on a contract.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Contract`,description:`The order, quote or agreement this line belongs to.`},{name:`description`,type:`text`,required:!1,default:``,description:`What is being sold or bought on this line.`},{name:`quantity`,type:`decimal`,required:!1,default:1,description:`How many.`},{name:`unitPrice`,type:`integer`,required:!1,default:0,description:`The price of one, before tax.`},{name:`discount`,type:`integer`,required:!1,default:0},{name:`taxRate`,type:`decimal`,required:!1,default:0,description:`The tax rate for this line, as a percentage (5 means 5%).`},{name:`amount`,type:`integer`,required:!1,default:0,description:`The line total.`},{name:`productId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-products:Product`,description:`The product this line is for, if it is one you list.`},{name:`sku`,type:`text`,required:!1,default:``},{name:`startDate`,type:`datetime`,required:!1},{name:`endDate`,type:`datetime`,required:!1},{name:`billingPeriod`,type:`text`,required:!1,default:``},{name:`sortOrder`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/contractlineitems/findByContract`},{method:`POST`,path:`/contractlineitems/findByTenant`},{method:`POST`,path:`/contractlineitems/findGlobal`},{method:`POST`,path:`/contractlineitems/findWithGlobals`},{method:`GET`,path:`/contractlineitems`},{method:`GET`,path:`/contractlineitems/[id]`},{method:`POST`,path:`/contractlineitems`},{method:`PATCH`,path:`/contractlineitems/[id]`},{method:`DELETE`,path:`/contractlineitems/[id]`}],mcp:[{operation:`get`,name:`contractlineitem_get`},{operation:`list`,name:`contractlineitem_list`},{operation:`findByContract`,name:`contractlineitemcollection_findbycontract`},{operation:`findByTenant`,name:`contractlineitemcollection_findbytenant`},{operation:`findGlobal`,name:`contractlineitemcollection_findglobal`},{operation:`findWithGlobals`,name:`contractlineitemcollection_findwithglobals`}],cli:[{operation:`calculateAmount`,name:`contractlineitem_calculateAmount`},{operation:`create`,name:`contractlineitem_create`},{operation:`delete`,name:`contractlineitem_delete`},{operation:`get`,name:`contractlineitem_get`},{operation:`isRecurring`,name:`contractlineitem_isRecurring`},{operation:`isSubscriptionActive`,name:`contractlineitem_isSubscriptionActive`},{operation:`list`,name:`contractlineitem_list`},{operation:`update`,name:`contractlineitem_update`},{operation:`findByContract`,name:`contractlineitemcollection_findByContract`},{operation:`findByTenant`,name:`contractlineitemcollection_findByTenant`},{operation:`findGlobal`,name:`contractlineitemcollection_findGlobal`},{operation:`findWithGlobals`,name:`contractlineitemcollection_findWithGlobals`}],methods:[{name:`calculateAmount`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`findByContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<ContractLineItem[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<ContractLineItem[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<ContractLineItem[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<ContractLineItem[]>`,aiCallable:!0},{name:`isRecurring`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSubscriptionActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Contract`,`@happyvertical/smrt-products:Product`],exposed:!0},{id:`@happyvertical/smrt-commerce:Customer`,name:`Customer`,collection:`customers`,description:`Customer represents the customer role for a Profile.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`,description:`Links this customer to their profile record, where their name and contact details are kept.`},{name:`creditLimit`,type:`integer`,required:!1,default:0,description:`The most this customer may owe you at one time. Leave it at zero if you do not set limits.`},{name:`paymentTerms`,type:`text`,required:!1,default:``,description:`How long the customer has to pay, written the way you would say it, for example "Net 30".`},{name:`taxExempt`,type:`boolean`,required:!1,default:!1,description:`Turn this on if you do not charge this customer sales tax.`},{name:`taxId`,type:`text`,required:!1,default:``,description:`The tax or VAT number of the customer, kept on file for tax-exempt sales.`},{name:`defaultShippingAddress`,type:`json`,required:!1,description:`Where you usually send goods to this customer, so you do not retype it on every order.`},{name:`defaultBillingAddress`,type:`json`,required:!1,description:`Where you send invoices to this customer.`},{name:`status`,type:`text`,required:!1,enum:[`active`,`inactive`,`suspended`],description:`Whether you are still dealing with this customer: active, inactive or suspended.`},{name:`customerType`,type:`text`,required:!1,enum:[`dtc`,`wholesale`,`retail`],description:`The kind of customer: a direct shopper, a wholesale buyer or a retail customer.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this customer.`}],rest:[{method:`POST`,path:`/customers/findByProfile`},{method:`POST`,path:`/customers/findActive`},{method:`POST`,path:`/customers/findByStatus`},{method:`POST`,path:`/customers/getOrCreateForProfile`},{method:`POST`,path:`/customers/findByTenant`},{method:`POST`,path:`/customers/findGlobal`},{method:`POST`,path:`/customers/findWithGlobals`},{method:`GET`,path:`/customers`},{method:`GET`,path:`/customers/[id]`},{method:`POST`,path:`/customers`},{method:`PATCH`,path:`/customers/[id]`}],mcp:[{operation:`get`,name:`customer_get`},{operation:`list`,name:`customer_list`},{operation:`findActive`,name:`customercollection_findactive`},{operation:`findByProfile`,name:`customercollection_findbyprofile`},{operation:`findByStatus`,name:`customercollection_findbystatus`},{operation:`findByTenant`,name:`customercollection_findbytenant`},{operation:`findGlobal`,name:`customercollection_findglobal`},{operation:`findWithGlobals`,name:`customercollection_findwithglobals`},{operation:`getOrCreateForProfile`,name:`customercollection_getorcreateforprofile`}],cli:[{operation:`create`,name:`customer_create`},{operation:`delete`,name:`customer_delete`},{operation:`get`,name:`customer_get`},{operation:`getProfileId`,name:`customer_getProfileId`},{operation:`hasAvailableCredit`,name:`customer_hasAvailableCredit`},{operation:`isActive`,name:`customer_isActive`},{operation:`isWholesale`,name:`customer_isWholesale`},{operation:`list`,name:`customer_list`},{operation:`update`,name:`customer_update`},{operation:`findActive`,name:`customercollection_findActive`},{operation:`findByProfile`,name:`customercollection_findByProfile`},{operation:`findByStatus`,name:`customercollection_findByStatus`},{operation:`findByTenant`,name:`customercollection_findByTenant`},{operation:`findGlobal`,name:`customercollection_findGlobal`},{operation:`findWithGlobals`,name:`customercollection_findWithGlobals`},{operation:`getOrCreateForProfile`,name:`customercollection_getOrCreateForProfile`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: CustomerStatus`],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Customer[]>`,aiCallable:!0},{name:`getOrCreateForProfile`,async:!0,parameters:[`profileId: string`,`defaults?: Partial<object>`],returnType:`Promise<Customer>`,aiCallable:!0},{name:`getProfileId`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`hasAvailableCredit`,async:!1,parameters:[`amount: number`],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isWholesale`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-commerce:Estimate`,name:`Estimate`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Quote or proposal for a customer`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`estimate_create`},{operation:`delete`,name:`estimate_delete`},{operation:`get`,name:`estimate_get`},{operation:`isAccepted`,name:`estimate_isaccepted`},{operation:`isCompleted`,name:`estimate_iscompleted`},{operation:`isDraft`,name:`estimate_isdraft`},{operation:`isExpired`,name:`estimate_isexpired`},{operation:`isOverdue`,name:`estimate_isoverdue`},{operation:`list`,name:`estimate_list`},{operation:`recalculateTotals`,name:`estimate_recalculatetotals`},{operation:`update`,name:`estimate_update`}],cli:[{operation:`create`,name:`estimate_create`},{operation:`delete`,name:`estimate_delete`},{operation:`get`,name:`estimate_get`},{operation:`isAccepted`,name:`estimate_isAccepted`},{operation:`isCompleted`,name:`estimate_isCompleted`},{operation:`isDraft`,name:`estimate_isDraft`},{operation:`isExpired`,name:`estimate_isExpired`},{operation:`isOverdue`,name:`estimate_isOverdue`},{operation:`list`,name:`estimate_list`},{operation:`recalculateTotals`,name:`estimate_recalculateTotals`},{operation:`update`,name:`estimate_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:Fulfillment`,name:`Fulfillment`,collection:`fulfillments`,description:`Fulfillment tracks the delivery or completion of contract items.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Contract`,description:`The order being fulfilled.`},{name:`fulfillmentType`,type:`text`,required:!1,enum:[`shipment`,`delivery`,`pickup`,`digital`,`service`],description:`How it gets to the customer: shipment, delivery, pickup, digital or service.`},{name:`status`,type:`text`,required:!1,enum:[`pending`,`processing`,`shipped`,`delivered`,`cancelled`],description:`Where it stands: pending, processing, shipped, delivered or cancelled.`},{name:`trackingNumber`,type:`text`,required:!1,default:``,description:`The carrier's tracking number.`},{name:`carrier`,type:`text`,required:!1,default:``,description:`The company carrying it.`},{name:`shippingAddress`,type:`json`,required:!1},{name:`shippedAt`,type:`datetime`,required:!1,description:`When it was dispatched.`},{name:`deliveredAt`,type:`datetime`,required:!1,description:`When it arrived.`},{name:`estimatedDelivery`,type:`datetime`,required:!1},{name:`notes`,type:`text`,required:!1,default:``,description:`Anything worth remembering about this shipment.`}],rest:[{method:`POST`,path:`/fulfillments/findByContract`},{method:`POST`,path:`/fulfillments/findByStatus`},{method:`POST`,path:`/fulfillments/findByType`},{method:`POST`,path:`/fulfillments/findPending`},{method:`POST`,path:`/fulfillments/findInTransit`},{method:`POST`,path:`/fulfillments/findByTracking`},{method:`POST`,path:`/fulfillments/findShippedInRange`},{method:`POST`,path:`/fulfillments/findByTenant`},{method:`POST`,path:`/fulfillments/findGlobal`},{method:`POST`,path:`/fulfillments/findWithGlobals`},{method:`GET`,path:`/fulfillments`},{method:`GET`,path:`/fulfillments/[id]`},{method:`POST`,path:`/fulfillments`},{method:`PATCH`,path:`/fulfillments/[id]`}],mcp:[{operation:`get`,name:`fulfillment_get`},{operation:`list`,name:`fulfillment_list`},{operation:`findByContract`,name:`fulfillmentcollection_findbycontract`},{operation:`findByStatus`,name:`fulfillmentcollection_findbystatus`},{operation:`findByTenant`,name:`fulfillmentcollection_findbytenant`},{operation:`findByTracking`,name:`fulfillmentcollection_findbytracking`},{operation:`findByType`,name:`fulfillmentcollection_findbytype`},{operation:`findGlobal`,name:`fulfillmentcollection_findglobal`},{operation:`findInTransit`,name:`fulfillmentcollection_findintransit`},{operation:`findPending`,name:`fulfillmentcollection_findpending`},{operation:`findShippedInRange`,name:`fulfillmentcollection_findshippedinrange`},{operation:`findWithGlobals`,name:`fulfillmentcollection_findwithglobals`}],cli:[{operation:`cancel`,name:`fulfillment_cancel`},{operation:`create`,name:`fulfillment_create`},{operation:`delete`,name:`fulfillment_delete`},{operation:`get`,name:`fulfillment_get`},{operation:`isDelivered`,name:`fulfillment_isDelivered`},{operation:`isInTransit`,name:`fulfillment_isInTransit`},{operation:`isPending`,name:`fulfillment_isPending`},{operation:`list`,name:`fulfillment_list`},{operation:`markDelivered`,name:`fulfillment_markDelivered`},{operation:`markShipped`,name:`fulfillment_markShipped`},{operation:`update`,name:`fulfillment_update`},{operation:`findByContract`,name:`fulfillmentcollection_findByContract`},{operation:`findByStatus`,name:`fulfillmentcollection_findByStatus`},{operation:`findByTenant`,name:`fulfillmentcollection_findByTenant`},{operation:`findByTracking`,name:`fulfillmentcollection_findByTracking`},{operation:`findByType`,name:`fulfillmentcollection_findByType`},{operation:`findGlobal`,name:`fulfillmentcollection_findGlobal`},{operation:`findInTransit`,name:`fulfillmentcollection_findInTransit`},{operation:`findPending`,name:`fulfillmentcollection_findPending`},{operation:`findShippedInRange`,name:`fulfillmentcollection_findShippedInRange`},{operation:`findWithGlobals`,name:`fulfillmentcollection_findWithGlobals`}],methods:[{name:`cancel`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: FulfillmentStatus`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findByTracking`,async:!0,parameters:[`trackingNumber: string`],returnType:`Promise<Fulfillment | null>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`fulfillmentType: FulfillmentType`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findInTransit`,async:!0,parameters:[],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findPending`,async:!0,parameters:[],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findShippedInRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Fulfillment[]>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isDelivered`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInTransit`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markDelivered`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markShipped`,async:!1,parameters:[`trackingNumber?: string`,`carrier?: string`],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Contract`],exposed:!0},{id:`@happyvertical/smrt-commerce:FulfillmentLineItem`,name:`FulfillmentLineItem`,collection:`fulfillmentlineitems`,description:`FulfillmentLineItem tracks which contract line items are included in a specific fulfillment and how much was fulfilled.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`fulfillmentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Fulfillment`,description:`The shipment this line belongs to.`},{name:`contractLineItemId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:ContractLineItem`,description:`The order line being sent.`},{name:`quantityFulfilled`,type:`decimal`,required:!1,default:1,description:`How many of that line are in this shipment.`},{name:`notes`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/fulfillmentlineitems/findByFulfillment`},{method:`POST`,path:`/fulfillmentlineitems/findByContractLineItem`},{method:`POST`,path:`/fulfillmentlineitems/getTotalFulfilledForContractLine`},{method:`POST`,path:`/fulfillmentlineitems/findByTenant`},{method:`POST`,path:`/fulfillmentlineitems/findGlobal`},{method:`POST`,path:`/fulfillmentlineitems/findWithGlobals`},{method:`GET`,path:`/fulfillmentlineitems`},{method:`GET`,path:`/fulfillmentlineitems/[id]`},{method:`POST`,path:`/fulfillmentlineitems`},{method:`PATCH`,path:`/fulfillmentlineitems/[id]`},{method:`DELETE`,path:`/fulfillmentlineitems/[id]`}],mcp:[{operation:`get`,name:`fulfillmentlineitem_get`},{operation:`list`,name:`fulfillmentlineitem_list`},{operation:`findByContractLineItem`,name:`fulfillmentlineitemcollection_findbycontractlineitem`},{operation:`findByFulfillment`,name:`fulfillmentlineitemcollection_findbyfulfillment`},{operation:`findByTenant`,name:`fulfillmentlineitemcollection_findbytenant`},{operation:`findGlobal`,name:`fulfillmentlineitemcollection_findglobal`},{operation:`findWithGlobals`,name:`fulfillmentlineitemcollection_findwithglobals`},{operation:`getTotalFulfilledForContractLine`,name:`fulfillmentlineitemcollection_gettotalfulfilledforcontractline`}],cli:[{operation:`create`,name:`fulfillmentlineitem_create`},{operation:`delete`,name:`fulfillmentlineitem_delete`},{operation:`get`,name:`fulfillmentlineitem_get`},{operation:`list`,name:`fulfillmentlineitem_list`},{operation:`update`,name:`fulfillmentlineitem_update`},{operation:`findByContractLineItem`,name:`fulfillmentlineitemcollection_findByContractLineItem`},{operation:`findByFulfillment`,name:`fulfillmentlineitemcollection_findByFulfillment`},{operation:`findByTenant`,name:`fulfillmentlineitemcollection_findByTenant`},{operation:`findGlobal`,name:`fulfillmentlineitemcollection_findGlobal`},{operation:`findWithGlobals`,name:`fulfillmentlineitemcollection_findWithGlobals`},{operation:`getTotalFulfilledForContractLine`,name:`fulfillmentlineitemcollection_getTotalFulfilledForContractLine`}],methods:[{name:`findByContractLineItem`,async:!0,parameters:[`contractLineItemId: string`],returnType:`Promise<FulfillmentLineItem[]>`,aiCallable:!0},{name:`findByFulfillment`,async:!0,parameters:[`fulfillmentId: string`],returnType:`Promise<FulfillmentLineItem[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FulfillmentLineItem[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<FulfillmentLineItem[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FulfillmentLineItem[]>`,aiCallable:!0},{name:`getTotalFulfilledForContractLine`,async:!0,parameters:[`contractLineItemId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:ContractLineItem`,`@happyvertical/smrt-commerce:Fulfillment`],exposed:!0},{id:`@happyvertical/smrt-commerce:Invoice`,name:`Invoice`,collection:`invoices`,description:`Invoice represents a bill sent to a customer for goods or services.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer being billed.`},{name:`contractId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Contract`,description:`The order or agreement this invoice bills for, if any.`},{name:`invoiceNumber`,type:`text`,required:!1,default:``,description:`The number printed on the invoice.`},{name:`reference`,type:`text`,required:!1,default:``},{name:`issueDate`,type:`datetime`,required:!1,description:`The date the invoice was issued.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment is expected.`},{name:`paidDate`,type:`datetime`,required:!1,description:`The date it was paid in full.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`providerTaxAmount`,type:`integer`,required:!1,default:0},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`What the customer owes in all, tax included.`},{name:`amountPaid`,type:`integer`,required:!1,default:0,description:`How much of the total has been paid so far.`},{name:`currency`,type:`text`,required:!1,default:`CAD`,ui:{widget:`currency`},description:`The currency of the invoice.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`viewed`,`partial`,`paid`,`overdue`,`cancelled`,`written_off`],description:`Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled.`},{name:`arJournalId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-ledgers:Journal`},{name:`revenueJournalId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-ledgers:Journal`},{name:`externalId`,type:`text`,required:!1,default:``},{name:`customerExternalId`,type:`text`,required:!1,default:``},{name:`externalProvider`,type:`text`,required:!1,default:``},{name:`syncedAt`,type:`datetime`,required:!1},{name:`collectionMethod`,type:`text`,required:!1,default:``,enum:[``,`send_invoice`,`charge_automatically`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`viewedAt`,type:`datetime`,required:!1},{name:`remindersSent`,type:`integer`,required:!1,default:0},{name:`lastReminderAt`,type:`datetime`,required:!1},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Private notes, not shown to the customer.`},{name:`customerNotes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`A message shown to the customer on the invoice.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The payment conditions, such as Net 30.`}],rest:[{method:`POST`,path:`/invoices/findByCustomer`},{method:`POST`,path:`/invoices/findByContract`},{method:`POST`,path:`/invoices/findByStatus`},{method:`POST`,path:`/invoices/findDrafts`},{method:`POST`,path:`/invoices/findSent`},{method:`POST`,path:`/invoices/findPaid`},{method:`POST`,path:`/invoices/findPartial`},{method:`POST`,path:`/invoices/findOverdue`},{method:`POST`,path:`/invoices/findByDateRange`},{method:`POST`,path:`/invoices/findByExternalId`},{method:`POST`,path:`/invoices/findNeedingSync`},{method:`POST`,path:`/invoices/findByNumber`},{method:`POST`,path:`/invoices/countForYear`},{method:`POST`,path:`/invoices/generateInvoiceNumber`},{method:`POST`,path:`/invoices/getTotalOutstandingForCustomer`},{method:`POST`,path:`/invoices/findByTenant`},{method:`POST`,path:`/invoices/findGlobal`},{method:`POST`,path:`/invoices/findWithGlobals`},{method:`GET`,path:`/invoices`},{method:`GET`,path:`/invoices/[id]`},{method:`POST`,path:`/invoices`},{method:`PATCH`,path:`/invoices/[id]`}],mcp:[{operation:`get`,name:`invoice_get`},{operation:`list`,name:`invoice_list`},{operation:`countForYear`,name:`invoicecollection_countforyear`},{operation:`findByContract`,name:`invoicecollection_findbycontract`},{operation:`findByCustomer`,name:`invoicecollection_findbycustomer`},{operation:`findByDateRange`,name:`invoicecollection_findbydaterange`},{operation:`findByExternalId`,name:`invoicecollection_findbyexternalid`},{operation:`findByNumber`,name:`invoicecollection_findbynumber`},{operation:`findByStatus`,name:`invoicecollection_findbystatus`},{operation:`findByTenant`,name:`invoicecollection_findbytenant`},{operation:`findDrafts`,name:`invoicecollection_finddrafts`},{operation:`findGlobal`,name:`invoicecollection_findglobal`},{operation:`findNeedingSync`,name:`invoicecollection_findneedingsync`},{operation:`findOverdue`,name:`invoicecollection_findoverdue`},{operation:`findPaid`,name:`invoicecollection_findpaid`},{operation:`findPartial`,name:`invoicecollection_findpartial`},{operation:`findSent`,name:`invoicecollection_findsent`},{operation:`findWithGlobals`,name:`invoicecollection_findwithglobals`},{operation:`generateInvoiceNumber`,name:`invoicecollection_generateinvoicenumber`},{operation:`getTotalOutstandingForCustomer`,name:`invoicecollection_gettotaloutstandingforcustomer`}],cli:[{operation:`cancel`,name:`invoice_cancel`},{operation:`create`,name:`invoice_create`},{operation:`delete`,name:`invoice_delete`},{operation:`get`,name:`invoice_get`},{operation:`getAmountDue`,name:`invoice_getAmountDue`},{operation:`getArJournal`,name:`invoice_getArJournal`},{operation:`isDraft`,name:`invoice_isDraft`},{operation:`isOverdue`,name:`invoice_isOverdue`},{operation:`isPaid`,name:`invoice_isPaid`},{operation:`isPartial`,name:`invoice_isPartial`},{operation:`isSent`,name:`invoice_isSent`},{operation:`list`,name:`invoice_list`},{operation:`markSent`,name:`invoice_markSent`},{operation:`markViewed`,name:`invoice_markViewed`},{operation:`recognizeRevenue`,name:`invoice_recognizeRevenue`},{operation:`toAccountingInput`,name:`invoice_toAccountingInput`},{operation:`update`,name:`invoice_update`},{operation:`updatePaymentStatus`,name:`invoice_updatePaymentStatus`},{operation:`writeOff`,name:`invoice_writeOff`},{operation:`countForYear`,name:`invoicecollection_countForYear`},{operation:`findByContract`,name:`invoicecollection_findByContract`},{operation:`findByCustomer`,name:`invoicecollection_findByCustomer`},{operation:`findByDateRange`,name:`invoicecollection_findByDateRange`},{operation:`findByExternalId`,name:`invoicecollection_findByExternalId`},{operation:`findByNumber`,name:`invoicecollection_findByNumber`},{operation:`findByStatus`,name:`invoicecollection_findByStatus`},{operation:`findByTenant`,name:`invoicecollection_findByTenant`},{operation:`findDrafts`,name:`invoicecollection_findDrafts`},{operation:`findGlobal`,name:`invoicecollection_findGlobal`},{operation:`findNeedingSync`,name:`invoicecollection_findNeedingSync`},{operation:`findOverdue`,name:`invoicecollection_findOverdue`},{operation:`findPaid`,name:`invoicecollection_findPaid`},{operation:`findPartial`,name:`invoicecollection_findPartial`},{operation:`findSent`,name:`invoicecollection_findSent`},{operation:`findWithGlobals`,name:`invoicecollection_findWithGlobals`},{operation:`generateInvoiceNumber`,name:`invoicecollection_generateInvoiceNumber`},{operation:`getTotalOutstandingForCustomer`,name:`invoicecollection_getTotalOutstandingForCustomer`}],methods:[{name:`cancel`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`countForYear`,async:!0,parameters:[`year: number`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findByCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findByExternalId`,async:!0,parameters:[`externalId: string`],returnType:`Promise<Invoice | null>`,aiCallable:!0},{name:`findByNumber`,async:!0,parameters:[`invoiceNumber: string`],returnType:`Promise<Invoice | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: InvoiceStatus`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findNeedingSync`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findOverdue`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findPaid`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findPartial`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findSent`,async:!0,parameters:[],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Invoice[]>`,aiCallable:!0},{name:`generateInvoiceNumber`,async:!0,parameters:[`options?: InvoiceNumberOptions`],returnType:`Promise<string>`,aiCallable:!0},{name:`getAmountDue`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getArJournal`,async:!0,parameters:[],returnType:`Promise<Journal | null>`,aiCallable:!1},{name:`getTotalOutstandingForCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPaid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPartial`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSent`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markSent`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markViewed`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`recognizeRevenue`,async:!0,parameters:[`options: RecognizeRevenueOptions`],returnType:`Promise<Journal>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`toAccountingInput`,async:!0,parameters:[],returnType:`Promise<AccountingInvoiceInput>`,aiCallable:!1},{name:`updatePaymentStatus`,async:!1,parameters:[`amountPaid: number`],returnType:`void`,aiCallable:!1},{name:`writeOff`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Contract`,`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-ledgers:Journal`],exposed:!0},{id:`@happyvertical/smrt-commerce:InvoiceLineItem`,name:`InvoiceLineItem`,collection:`invoicelineitems`,description:`InvoiceLineItem represents a single line item on an invoice.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`invoiceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Invoice`,description:`The invoice this line belongs to.`},{name:`description`,type:`text`,required:!1,default:``,description:`What is being billed on this line.`},{name:`sku`,type:`text`,required:!1,default:``},{name:`quantity`,type:`decimal`,required:!1,default:1,description:`How many.`},{name:`invoiceEditorStateJson`,type:`text`,required:!1,default:``},{name:`unitPrice`,type:`integer`,required:!1,default:0,description:`The price of one, before tax.`},{name:`discount`,type:`integer`,required:!1,default:0},{name:`taxRate`,type:`decimal`,required:!1,default:0,description:`The tax rate for this line, as a percentage (5 means 5%).`},{name:`amount`,type:`integer`,required:!1,default:0,description:`The line total.`},{name:`sourceType`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`periodStart`,type:`datetime`,required:!1},{name:`periodEnd`,type:`datetime`,required:!1},{name:`revenueAccountId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-ledgers:Account`},{name:`sortOrder`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/invoicelineitems/findByInvoice`},{method:`POST`,path:`/invoicelineitems/findBySource`},{method:`POST`,path:`/invoicelineitems/findBySourceType`},{method:`POST`,path:`/invoicelineitems/getTotalForInvoice`},{method:`POST`,path:`/invoicelineitems/getSubtotalForInvoice`},{method:`POST`,path:`/invoicelineitems/getTaxForInvoice`},{method:`POST`,path:`/invoicelineitems/getNextSortOrder`},{method:`POST`,path:`/invoicelineitems/recalculateAmounts`},{method:`POST`,path:`/invoicelineitems/toAccountingLineItems`},{method:`POST`,path:`/invoicelineitems/findByTenant`},{method:`POST`,path:`/invoicelineitems/findGlobal`},{method:`POST`,path:`/invoicelineitems/findWithGlobals`},{method:`GET`,path:`/invoicelineitems`},{method:`GET`,path:`/invoicelineitems/[id]`},{method:`POST`,path:`/invoicelineitems`},{method:`PATCH`,path:`/invoicelineitems/[id]`},{method:`DELETE`,path:`/invoicelineitems/[id]`}],mcp:[{operation:`get`,name:`invoicelineitem_get`},{operation:`list`,name:`invoicelineitem_list`},{operation:`findByInvoice`,name:`invoicelineitemcollection_findbyinvoice`},{operation:`findBySource`,name:`invoicelineitemcollection_findbysource`},{operation:`findBySourceType`,name:`invoicelineitemcollection_findbysourcetype`},{operation:`findByTenant`,name:`invoicelineitemcollection_findbytenant`},{operation:`findGlobal`,name:`invoicelineitemcollection_findglobal`},{operation:`findWithGlobals`,name:`invoicelineitemcollection_findwithglobals`},{operation:`getNextSortOrder`,name:`invoicelineitemcollection_getnextsortorder`},{operation:`getSubtotalForInvoice`,name:`invoicelineitemcollection_getsubtotalforinvoice`},{operation:`getTaxForInvoice`,name:`invoicelineitemcollection_gettaxforinvoice`},{operation:`getTotalForInvoice`,name:`invoicelineitemcollection_gettotalforinvoice`},{operation:`recalculateAmounts`,name:`invoicelineitemcollection_recalculateamounts`},{operation:`toAccountingLineItems`,name:`invoicelineitemcollection_toaccountinglineitems`}],cli:[{operation:`applyEditorDraft`,name:`invoicelineitem_applyEditorDraft`},{operation:`calculateAmount`,name:`invoicelineitem_calculateAmount`},{operation:`create`,name:`invoicelineitem_create`},{operation:`delete`,name:`invoicelineitem_delete`},{operation:`get`,name:`invoicelineitem_get`},{operation:`getEditorDraft`,name:`invoicelineitem_getEditorDraft`},{operation:`getSubtotal`,name:`invoicelineitem_getSubtotal`},{operation:`getTaxAmount`,name:`invoicelineitem_getTaxAmount`},{operation:`hasPeriod`,name:`invoicelineitem_hasPeriod`},{operation:`hasSource`,name:`invoicelineitem_hasSource`},{operation:`list`,name:`invoicelineitem_list`},{operation:`toAccountingLineItem`,name:`invoicelineitem_toAccountingLineItem`},{operation:`update`,name:`invoicelineitem_update`},{operation:`findByInvoice`,name:`invoicelineitemcollection_findByInvoice`},{operation:`findBySource`,name:`invoicelineitemcollection_findBySource`},{operation:`findBySourceType`,name:`invoicelineitemcollection_findBySourceType`},{operation:`findByTenant`,name:`invoicelineitemcollection_findByTenant`},{operation:`findGlobal`,name:`invoicelineitemcollection_findGlobal`},{operation:`findWithGlobals`,name:`invoicelineitemcollection_findWithGlobals`},{operation:`getNextSortOrder`,name:`invoicelineitemcollection_getNextSortOrder`},{operation:`getSubtotalForInvoice`,name:`invoicelineitemcollection_getSubtotalForInvoice`},{operation:`getTaxForInvoice`,name:`invoicelineitemcollection_getTaxForInvoice`},{operation:`getTotalForInvoice`,name:`invoicelineitemcollection_getTotalForInvoice`},{operation:`recalculateAmounts`,name:`invoicelineitemcollection_recalculateAmounts`},{operation:`toAccountingLineItems`,name:`invoicelineitemcollection_toAccountingLineItems`}],methods:[{name:`applyEditorDraft`,async:!1,parameters:[`draft: InvoiceLineDraft`,`context: InvoiceCalculationContext`],returnType:`void`,aiCallable:!1},{name:`calculateAmount`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`findByInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceType: string`,`sourceId: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`findBySourceType`,async:!0,parameters:[`sourceType: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`getEditorDraft`,async:!1,parameters:[`authorizedContext: InvoiceCalculationContext`],returnType:`InvoiceLineDraft | null`,aiCallable:!1},{name:`getNextSortOrder`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getSubtotal`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getSubtotalForInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getTaxAmount`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getTaxForInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getTotalForInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`hasPeriod`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`hasSource`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recalculateAmounts`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<InvoiceLineItem[]>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`toAccountingLineItem`,async:!1,parameters:[`currency?: string`],returnType:`AccountingLineItemInput`,aiCallable:!1},{name:`toAccountingLineItems`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<AccountingLineItemInput[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-commerce:Invoice`,`@happyvertical/smrt-ledgers:Account`],exposed:!0},{id:`@happyvertical/smrt-commerce:Lease`,name:`Lease`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Rental or lease agreement`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`lease_create`},{operation:`delete`,name:`lease_delete`},{operation:`get`,name:`lease_get`},{operation:`isAccepted`,name:`lease_isaccepted`},{operation:`isCompleted`,name:`lease_iscompleted`},{operation:`isDraft`,name:`lease_isdraft`},{operation:`isExpired`,name:`lease_isexpired`},{operation:`isOverdue`,name:`lease_isoverdue`},{operation:`list`,name:`lease_list`},{operation:`recalculateTotals`,name:`lease_recalculatetotals`},{operation:`update`,name:`lease_update`}],cli:[{operation:`create`,name:`lease_create`},{operation:`delete`,name:`lease_delete`},{operation:`get`,name:`lease_get`},{operation:`isAccepted`,name:`lease_isAccepted`},{operation:`isCompleted`,name:`lease_isCompleted`},{operation:`isDraft`,name:`lease_isDraft`},{operation:`isExpired`,name:`lease_isExpired`},{operation:`isOverdue`,name:`lease_isOverdue`},{operation:`list`,name:`lease_list`},{operation:`recalculateTotals`,name:`lease_recalculateTotals`},{operation:`update`,name:`lease_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:LicenseSale`,name:`LicenseSale`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Industry-neutral licensing primitive.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`},{method:`POST`,path:`/contracts/[id]/getRightsSnapshot`},{method:`POST`,path:`/contracts/[id]/revoke`}],mcp:[{operation:`create`,name:`licensesale_create`},{operation:`delete`,name:`licensesale_delete`},{operation:`get`,name:`licensesale_get`},{operation:`getRightsSnapshot`,name:`licensesale_getrightssnapshot`},{operation:`isAccepted`,name:`licensesale_isaccepted`},{operation:`isCompleted`,name:`licensesale_iscompleted`},{operation:`isDraft`,name:`licensesale_isdraft`},{operation:`isExpired`,name:`licensesale_isexpired`},{operation:`isOverdue`,name:`licensesale_isoverdue`},{operation:`list`,name:`licensesale_list`},{operation:`recalculateTotals`,name:`licensesale_recalculatetotals`},{operation:`revoke`,name:`licensesale_revoke`},{operation:`update`,name:`licensesale_update`}],cli:[{operation:`create`,name:`licensesale_create`},{operation:`delete`,name:`licensesale_delete`},{operation:`get`,name:`licensesale_get`},{operation:`getRightsSnapshot`,name:`licensesale_getRightsSnapshot`},{operation:`isAccepted`,name:`licensesale_isAccepted`},{operation:`isCompleted`,name:`licensesale_isCompleted`},{operation:`isDraft`,name:`licensesale_isDraft`},{operation:`isExpired`,name:`licensesale_isExpired`},{operation:`isOverdue`,name:`licensesale_isOverdue`},{operation:`list`,name:`licensesale_list`},{operation:`recalculateTotals`,name:`licensesale_recalculateTotals`},{operation:`revoke`,name:`licensesale_revoke`},{operation:`update`,name:`licensesale_update`}],methods:[{name:`getRightsSnapshot`,async:!1,parameters:[],returnType:`LicenseRightsSnapshot`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`revoke`,async:!1,parameters:[],returnType:`void`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:Order`,name:`Order`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Customer purchase order`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`order_create`},{operation:`delete`,name:`order_delete`},{operation:`get`,name:`order_get`},{operation:`isAccepted`,name:`order_isaccepted`},{operation:`isCompleted`,name:`order_iscompleted`},{operation:`isDraft`,name:`order_isdraft`},{operation:`isExpired`,name:`order_isexpired`},{operation:`isOverdue`,name:`order_isoverdue`},{operation:`list`,name:`order_list`},{operation:`recalculateTotals`,name:`order_recalculatetotals`},{operation:`update`,name:`order_update`}],cli:[{operation:`create`,name:`order_create`},{operation:`delete`,name:`order_delete`},{operation:`get`,name:`order_get`},{operation:`isAccepted`,name:`order_isAccepted`},{operation:`isCompleted`,name:`order_isCompleted`},{operation:`isDraft`,name:`order_isDraft`},{operation:`isExpired`,name:`order_isExpired`},{operation:`isOverdue`,name:`order_isOverdue`},{operation:`list`,name:`order_list`},{operation:`recalculateTotals`,name:`order_recalculateTotals`},{operation:`update`,name:`order_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:Payment`,name:`Payment`,collection:`payments`,description:`Payment represents a financial transaction against a contract.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Contract`,description:`The order or agreement this payment is for, if any.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer who paid.`},{name:`amount`,type:`integer`,required:!1,default:0,description:`How much was paid.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the payment.`},{name:`method`,type:`text`,required:!1,enum:[`cash`,`check`,`credit_card`,`bank_transfer`,`crypto`,`other`],description:`How it was paid: cash, check, card, bank transfer or other.`},{name:`status`,type:`text`,required:!1,enum:[`pending`,`completed`,`failed`,`refunded`,`cancelled`],description:`Whether the payment is pending, completed, failed or refunded.`},{name:`transactionId`,type:`text`,required:!1,default:``},{name:`reference`,type:`text`,required:!1,default:``,description:`A reference note, such as a check number.`},{name:`journalId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-ledgers:Journal`},{name:`paidAt`,type:`datetime`,required:!1,description:`When the money was received.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this payment.`},{name:`externalId`,type:`text`,required:!1,default:``},{name:`externalProvider`,type:`text`,required:!1,default:``},{name:`syncedAt`,type:`datetime`,required:!1},{name:`backendId`,type:`text`,required:!1,default:``},{name:`backendTxRef`,type:`text`,required:!1,default:``},{name:`nativeAmount`,type:`integer`,required:!1,default:0},{name:`nativeCurrency`,type:`text`,required:!1,default:``},{name:`usdAtQuote`,type:`integer`,required:!1,default:0},{name:`usdAtConfirmation`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/payments/findByContract`},{method:`POST`,path:`/payments/findByCustomer`},{method:`POST`,path:`/payments/findByStatus`},{method:`POST`,path:`/payments/findByMethod`},{method:`POST`,path:`/payments/findPending`},{method:`POST`,path:`/payments/findCompleted`},{method:`POST`,path:`/payments/findByTransactionId`},{method:`POST`,path:`/payments/findByDateRange`},{method:`POST`,path:`/payments/getTotalForContract`},{method:`POST`,path:`/payments/findByJournal`},{method:`POST`,path:`/payments/findByTenant`},{method:`POST`,path:`/payments/findGlobal`},{method:`POST`,path:`/payments/findWithGlobals`},{method:`GET`,path:`/payments`},{method:`GET`,path:`/payments/[id]`},{method:`POST`,path:`/payments`},{method:`PATCH`,path:`/payments/[id]`}],mcp:[{operation:`get`,name:`payment_get`},{operation:`list`,name:`payment_list`},{operation:`findByContract`,name:`paymentcollection_findbycontract`},{operation:`findByCustomer`,name:`paymentcollection_findbycustomer`},{operation:`findByDateRange`,name:`paymentcollection_findbydaterange`},{operation:`findByJournal`,name:`paymentcollection_findbyjournal`},{operation:`findByMethod`,name:`paymentcollection_findbymethod`},{operation:`findByStatus`,name:`paymentcollection_findbystatus`},{operation:`findByTenant`,name:`paymentcollection_findbytenant`},{operation:`findByTransactionId`,name:`paymentcollection_findbytransactionid`},{operation:`findCompleted`,name:`paymentcollection_findcompleted`},{operation:`findGlobal`,name:`paymentcollection_findglobal`},{operation:`findPending`,name:`paymentcollection_findpending`},{operation:`findWithGlobals`,name:`paymentcollection_findwithglobals`},{operation:`getTotalForContract`,name:`paymentcollection_gettotalforcontract`}],cli:[{operation:`cancel`,name:`payment_cancel`},{operation:`create`,name:`payment_create`},{operation:`delete`,name:`payment_delete`},{operation:`get`,name:`payment_get`},{operation:`getJournal`,name:`payment_getJournal`},{operation:`isCompleted`,name:`payment_isCompleted`},{operation:`isPending`,name:`payment_isPending`},{operation:`isRefunded`,name:`payment_isRefunded`},{operation:`list`,name:`payment_list`},{operation:`markFailed`,name:`payment_markFailed`},{operation:`recordPayment`,name:`payment_recordPayment`},{operation:`update`,name:`payment_update`},{operation:`usdDrift`,name:`payment_usdDrift`},{operation:`findByContract`,name:`paymentcollection_findByContract`},{operation:`findByCustomer`,name:`paymentcollection_findByCustomer`},{operation:`findByDateRange`,name:`paymentcollection_findByDateRange`},{operation:`findByJournal`,name:`paymentcollection_findByJournal`},{operation:`findByMethod`,name:`paymentcollection_findByMethod`},{operation:`findByStatus`,name:`paymentcollection_findByStatus`},{operation:`findByTenant`,name:`paymentcollection_findByTenant`},{operation:`findByTransactionId`,name:`paymentcollection_findByTransactionId`},{operation:`findCompleted`,name:`paymentcollection_findCompleted`},{operation:`findGlobal`,name:`paymentcollection_findGlobal`},{operation:`findPending`,name:`paymentcollection_findPending`},{operation:`findWithGlobals`,name:`paymentcollection_findWithGlobals`},{operation:`getTotalForContract`,name:`paymentcollection_getTotalForContract`}],methods:[{name:`cancel`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByJournal`,async:!0,parameters:[`journalId: string`],returnType:`Promise<Payment | null>`,aiCallable:!0},{name:`findByMethod`,async:!0,parameters:[`method: PaymentMethod`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: PaymentStatus`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findByTransactionId`,async:!0,parameters:[`transactionId: string`],returnType:`Promise<Payment | null>`,aiCallable:!0},{name:`findCompleted`,async:!0,parameters:[],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findPending`,async:!0,parameters:[],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Payment[]>`,aiCallable:!0},{name:`getJournal`,async:!0,parameters:[],returnType:`Promise<Journal | null>`,aiCallable:!1},{name:`getTotalForContract`,async:!0,parameters:[`contractId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRefunded`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markFailed`,async:!1,parameters:[`reason?: string`],returnType:`void`,aiCallable:!1},{name:`recordPayment`,async:!0,parameters:[`options: RecordPaymentOptions`],returnType:`Promise<Journal>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`usdDrift`,async:!1,parameters:[],returnType:`number`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Contract`,`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-ledgers:Journal`],exposed:!0},{id:`@happyvertical/smrt-commerce:PaymentAllocation`,name:`PaymentAllocation`,collection:`paymentallocations`,description:`PaymentAllocation tracks how payments are applied to invoices.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`paymentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Payment`,description:`The payment being applied.`},{name:`invoiceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Invoice`,description:`The invoice it settles.`},{name:`amount`,type:`integer`,required:!1,default:0,description:`How much of the payment goes to this invoice.`},{name:`allocatedAt`,type:`datetime`,required:!1,description:`When it was applied.`},{name:`allocatedBy`,type:`text`,required:!1,default:``},{name:`notes`,type:`text`,required:!1,default:``,description:`Anything worth remembering about this allocation.`}],rest:[{method:`POST`,path:`/paymentallocations/findByPayment`},{method:`POST`,path:`/paymentallocations/findByInvoice`},{method:`POST`,path:`/paymentallocations/getTotalAllocatedToInvoice`},{method:`POST`,path:`/paymentallocations/getTotalAllocatedFromPayment`},{method:`POST`,path:`/paymentallocations/getUnallocatedFromPayment`},{method:`POST`,path:`/paymentallocations/findByPaymentAndInvoice`},{method:`POST`,path:`/paymentallocations/findByAllocator`},{method:`POST`,path:`/paymentallocations/findByDateRange`},{method:`POST`,path:`/paymentallocations/findByTenant`},{method:`POST`,path:`/paymentallocations/findGlobal`},{method:`POST`,path:`/paymentallocations/findWithGlobals`},{method:`GET`,path:`/paymentallocations`},{method:`GET`,path:`/paymentallocations/[id]`}],mcp:[{operation:`get`,name:`paymentallocation_get`},{operation:`list`,name:`paymentallocation_list`},{operation:`findByAllocator`,name:`paymentallocationcollection_findbyallocator`},{operation:`findByDateRange`,name:`paymentallocationcollection_findbydaterange`},{operation:`findByInvoice`,name:`paymentallocationcollection_findbyinvoice`},{operation:`findByPayment`,name:`paymentallocationcollection_findbypayment`},{operation:`findByPaymentAndInvoice`,name:`paymentallocationcollection_findbypaymentandinvoice`},{operation:`findByTenant`,name:`paymentallocationcollection_findbytenant`},{operation:`findGlobal`,name:`paymentallocationcollection_findglobal`},{operation:`findWithGlobals`,name:`paymentallocationcollection_findwithglobals`},{operation:`getTotalAllocatedFromPayment`,name:`paymentallocationcollection_gettotalallocatedfrompayment`},{operation:`getTotalAllocatedToInvoice`,name:`paymentallocationcollection_gettotalallocatedtoinvoice`},{operation:`getUnallocatedFromPayment`,name:`paymentallocationcollection_getunallocatedfrompayment`}],cli:[{operation:`get`,name:`paymentallocation_get`},{operation:`list`,name:`paymentallocation_list`},{operation:`findByAllocator`,name:`paymentallocationcollection_findByAllocator`},{operation:`findByDateRange`,name:`paymentallocationcollection_findByDateRange`},{operation:`findByInvoice`,name:`paymentallocationcollection_findByInvoice`},{operation:`findByPayment`,name:`paymentallocationcollection_findByPayment`},{operation:`findByPaymentAndInvoice`,name:`paymentallocationcollection_findByPaymentAndInvoice`},{operation:`findByTenant`,name:`paymentallocationcollection_findByTenant`},{operation:`findGlobal`,name:`paymentallocationcollection_findGlobal`},{operation:`findWithGlobals`,name:`paymentallocationcollection_findWithGlobals`},{operation:`getTotalAllocatedFromPayment`,name:`paymentallocationcollection_getTotalAllocatedFromPayment`},{operation:`getTotalAllocatedToInvoice`,name:`paymentallocationcollection_getTotalAllocatedToInvoice`},{operation:`getUnallocatedFromPayment`,name:`paymentallocationcollection_getUnallocatedFromPayment`}],methods:[{name:`findByAllocator`,async:!0,parameters:[`allocatedBy: string`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findByInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findByPayment`,async:!0,parameters:[`paymentId: string`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findByPaymentAndInvoice`,async:!0,parameters:[`paymentId: string`,`invoiceId: string`],returnType:`Promise<PaymentAllocation | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentAllocation[]>`,aiCallable:!0},{name:`getTotalAllocatedFromPayment`,async:!0,parameters:[`paymentId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getTotalAllocatedToInvoice`,async:!0,parameters:[`invoiceId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getUnallocatedFromPayment`,async:!0,parameters:[`paymentId: string`,`paymentAmount: number`],returnType:`Promise<number>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Invoice`,`@happyvertical/smrt-commerce:Payment`],exposed:!0},{id:`@happyvertical/smrt-commerce:PaymentInstrument`,name:`PaymentInstrument`,collection:`paymentinstruments`,description:`PaymentInstrument stores a reusable payment method a customer has saved with a payment backend (e.g. a card vaulted by Stripe), so it can be charged later without the customer present.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`},{name:`backendId`,type:`text`,required:!1,default:``},{name:`providerCustomerId`,type:`text`,required:!1,default:``},{name:`providerPaymentMethodId`,type:`text`,required:!1,default:``},{name:`type`,type:`text`,required:!1,default:`card`},{name:`brand`,type:`text`,required:!1,default:``},{name:`last4`,type:`text`,required:!1,default:``},{name:`expMonth`,type:`integer`,required:!1,default:0},{name:`expYear`,type:`integer`,required:!1,default:0},{name:`isDefault`,type:`boolean`,required:!1,default:!1},{name:`status`,type:`text`,required:!1,enum:[`active`,`expired`,`removed`]}],rest:[{method:`POST`,path:`/paymentinstruments/findByCustomer`},{method:`POST`,path:`/paymentinstruments/findActiveByCustomer`},{method:`POST`,path:`/paymentinstruments/findDefaultForCustomer`},{method:`POST`,path:`/paymentinstruments/findByProviderPaymentMethodId`},{method:`POST`,path:`/paymentinstruments/setDefaultForCustomer`},{method:`POST`,path:`/paymentinstruments/findByTenant`},{method:`POST`,path:`/paymentinstruments/findGlobal`},{method:`POST`,path:`/paymentinstruments/findWithGlobals`},{method:`GET`,path:`/paymentinstruments`},{method:`GET`,path:`/paymentinstruments/[id]`},{method:`POST`,path:`/paymentinstruments`},{method:`PATCH`,path:`/paymentinstruments/[id]`}],mcp:[{operation:`get`,name:`paymentinstrument_get`},{operation:`list`,name:`paymentinstrument_list`},{operation:`findActiveByCustomer`,name:`paymentinstrumentcollection_findactivebycustomer`},{operation:`findByCustomer`,name:`paymentinstrumentcollection_findbycustomer`},{operation:`findByProviderPaymentMethodId`,name:`paymentinstrumentcollection_findbyproviderpaymentmethodid`},{operation:`findByTenant`,name:`paymentinstrumentcollection_findbytenant`},{operation:`findDefaultForCustomer`,name:`paymentinstrumentcollection_finddefaultforcustomer`},{operation:`findGlobal`,name:`paymentinstrumentcollection_findglobal`},{operation:`findWithGlobals`,name:`paymentinstrumentcollection_findwithglobals`},{operation:`setDefaultForCustomer`,name:`paymentinstrumentcollection_setdefaultforcustomer`}],cli:[{operation:`create`,name:`paymentinstrument_create`},{operation:`delete`,name:`paymentinstrument_delete`},{operation:`get`,name:`paymentinstrument_get`},{operation:`isActive`,name:`paymentinstrument_isActive`},{operation:`isExpired`,name:`paymentinstrument_isExpired`},{operation:`isRemoved`,name:`paymentinstrument_isRemoved`},{operation:`list`,name:`paymentinstrument_list`},{operation:`markExpired`,name:`paymentinstrument_markExpired`},{operation:`markRemoved`,name:`paymentinstrument_markRemoved`},{operation:`update`,name:`paymentinstrument_update`},{operation:`findActiveByCustomer`,name:`paymentinstrumentcollection_findActiveByCustomer`},{operation:`findByCustomer`,name:`paymentinstrumentcollection_findByCustomer`},{operation:`findByProviderPaymentMethodId`,name:`paymentinstrumentcollection_findByProviderPaymentMethodId`},{operation:`findByTenant`,name:`paymentinstrumentcollection_findByTenant`},{operation:`findDefaultForCustomer`,name:`paymentinstrumentcollection_findDefaultForCustomer`},{operation:`findGlobal`,name:`paymentinstrumentcollection_findGlobal`},{operation:`findWithGlobals`,name:`paymentinstrumentcollection_findWithGlobals`},{operation:`setDefaultForCustomer`,name:`paymentinstrumentcollection_setDefaultForCustomer`}],methods:[{name:`findActiveByCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<PaymentInstrument[]>`,aiCallable:!0},{name:`findByCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<PaymentInstrument[]>`,aiCallable:!0},{name:`findByProviderPaymentMethodId`,async:!0,parameters:[`providerPaymentMethodId: string`],returnType:`Promise<PaymentInstrument | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentInstrument[]>`,aiCallable:!0},{name:`findDefaultForCustomer`,async:!0,parameters:[`customerId: string`],returnType:`Promise<PaymentInstrument | null>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<PaymentInstrument[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentInstrument[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRemoved`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markExpired`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markRemoved`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`setDefaultForCustomer`,async:!0,parameters:[`customerId: string`,`instrumentId: string`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-commerce:Customer`],exposed:!0},{id:`@happyvertical/smrt-commerce:PaymentIntent`,name:`PaymentIntent`,collection:`paymentintents`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`skuId`,type:`text`,required:!1,default:``},{name:`offeringRef`,type:`text`,required:!1,default:``},{name:`licenseeEmail`,type:`text`,required:!1,default:``},{name:`customerId`,type:`text`,required:!1,default:``},{name:`paymentOptions`,type:`json`,required:!1},{name:`usdPriceLocked`,type:`integer`,required:!1,default:0},{name:`priceLockWindowMs`,type:`integer`,required:!1},{name:`priceLockExpiresAt`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`awaiting_payment`,`paid`,`issued`,`retired`,`expired`,`cancelled`]},{name:`idempotencyKey`,type:`text`,required:!1,default:``},{name:`paidOptionBackendId`,type:`text`,required:!1,default:``},{name:`paymentId`,type:`text`,required:!1,default:``},{name:`paidAt`,type:`datetime`,required:!1},{name:`issuedAt`,type:`datetime`,required:!1},{name:`expiredAt`,type:`datetime`,required:!1},{name:`cancelledAt`,type:`datetime`,required:!1},{name:`retiredAt`,type:`datetime`,required:!1},{name:`notes`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/paymentintents/findByIdempotencyKey`},{method:`POST`,path:`/paymentintents/getOrCreateByIdempotencyKey`},{method:`POST`,path:`/paymentintents/findOpen`},{method:`POST`,path:`/paymentintents/findStale`},{method:`POST`,path:`/paymentintents/findByLicenseeEmail`},{method:`POST`,path:`/paymentintents/findByOfferingRef`},{method:`POST`,path:`/paymentintents/findByStatus`},{method:`POST`,path:`/paymentintents/findByTenant`},{method:`POST`,path:`/paymentintents/findGlobal`},{method:`POST`,path:`/paymentintents/findWithGlobals`},{method:`GET`,path:`/paymentintents`},{method:`GET`,path:`/paymentintents/[id]`},{method:`POST`,path:`/paymentintents`},{method:`PATCH`,path:`/paymentintents/[id]`}],mcp:[{operation:`get`,name:`paymentintent_get`},{operation:`list`,name:`paymentintent_list`},{operation:`findByIdempotencyKey`,name:`paymentintentcollection_findbyidempotencykey`},{operation:`findByLicenseeEmail`,name:`paymentintentcollection_findbylicenseeemail`},{operation:`findByOfferingRef`,name:`paymentintentcollection_findbyofferingref`},{operation:`findByStatus`,name:`paymentintentcollection_findbystatus`},{operation:`findByTenant`,name:`paymentintentcollection_findbytenant`},{operation:`findGlobal`,name:`paymentintentcollection_findglobal`},{operation:`findOpen`,name:`paymentintentcollection_findopen`},{operation:`findStale`,name:`paymentintentcollection_findstale`},{operation:`findWithGlobals`,name:`paymentintentcollection_findwithglobals`},{operation:`getOrCreateByIdempotencyKey`,name:`paymentintentcollection_getorcreatebyidempotencykey`}],cli:[{operation:`cancel`,name:`paymentintent_cancel`},{operation:`create`,name:`paymentintent_create`},{operation:`delete`,name:`paymentintent_delete`},{operation:`expire`,name:`paymentintent_expire`},{operation:`get`,name:`paymentintent_get`},{operation:`getOption`,name:`paymentintent_getOption`},{operation:`getRetiredOptions`,name:`paymentintent_getRetiredOptions`},{operation:`isAwaitingPayment`,name:`paymentintent_isAwaitingPayment`},{operation:`isCancelled`,name:`paymentintent_isCancelled`},{operation:`isExpired`,name:`paymentintent_isExpired`},{operation:`isIssued`,name:`paymentintent_isIssued`},{operation:`isOptionRetired`,name:`paymentintent_isOptionRetired`},{operation:`isPaid`,name:`paymentintent_isPaid`},{operation:`isRetired`,name:`paymentintent_isRetired`},{operation:`isTerminal`,name:`paymentintent_isTerminal`},{operation:`list`,name:`paymentintent_list`},{operation:`markIssued`,name:`paymentintent_markIssued`},{operation:`markPaid`,name:`paymentintent_markPaid`},{operation:`retire`,name:`paymentintent_retire`},{operation:`update`,name:`paymentintent_update`},{operation:`verifyAndMarkPaid`,name:`paymentintent_verifyAndMarkPaid`},{operation:`findByIdempotencyKey`,name:`paymentintentcollection_findByIdempotencyKey`},{operation:`findByLicenseeEmail`,name:`paymentintentcollection_findByLicenseeEmail`},{operation:`findByOfferingRef`,name:`paymentintentcollection_findByOfferingRef`},{operation:`findByStatus`,name:`paymentintentcollection_findByStatus`},{operation:`findByTenant`,name:`paymentintentcollection_findByTenant`},{operation:`findGlobal`,name:`paymentintentcollection_findGlobal`},{operation:`findOpen`,name:`paymentintentcollection_findOpen`},{operation:`findStale`,name:`paymentintentcollection_findStale`},{operation:`findWithGlobals`,name:`paymentintentcollection_findWithGlobals`},{operation:`getOrCreateByIdempotencyKey`,name:`paymentintentcollection_getOrCreateByIdempotencyKey`}],methods:[{name:`cancel`,async:!1,parameters:[`reason?: string`],returnType:`void`,aiCallable:!1},{name:`expire`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByIdempotencyKey`,async:!0,parameters:[`args: PaymentIntentIdempotencyArgs`],returnType:`Promise<PaymentIntent | null>`,aiCallable:!0},{name:`findByLicenseeEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findByOfferingRef`,async:!0,parameters:[`offeringRef: string`],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: PaymentIntentStatus`],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findOpen`,async:!0,parameters:[],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findStale`,async:!0,parameters:[],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PaymentIntent[]>`,aiCallable:!0},{name:`getOption`,async:!1,parameters:[`backendId: string`],returnType:`PaymentOption | undefined`,aiCallable:!1},{name:`getOrCreateByIdempotencyKey`,async:!0,parameters:[`seed: PaymentIntentSeed`],returnType:`Promise<object>`,aiCallable:!0},{name:`getRetiredOptions`,async:!1,parameters:[],returnType:`PaymentOption[]`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAwaitingPayment`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isCancelled`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isIssued`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOptionRetired`,async:!1,parameters:[`backendId: string`],returnType:`boolean`,aiCallable:!1},{name:`isPaid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRetired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTerminal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markIssued`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markPaid`,async:!1,parameters:[`args: object`],returnType:`void`,aiCallable:!1},{name:`retire`,async:!1,parameters:[`reason?: string`],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`verifyAndMarkPaid`,async:!0,parameters:[`args: object`],returnType:`Promise<void>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-commerce:Payout`,name:`Payout`,collection:`payouts`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`paymentId`,type:`text`,required:!1,default:``},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`},{name:`grossAmount`,type:`integer`,required:!1,default:0},{name:`operatorFee`,type:`integer`,required:!1,default:0},{name:`supplierNet`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:``},{name:`backendId`,type:`text`,required:!1,default:``},{name:`backendTxRef`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,enum:[`pending`,`sent`,`confirmed`,`failed`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`confirmedAt`,type:`datetime`,required:!1},{name:`failedAt`,type:`datetime`,required:!1},{name:`failureReason`,type:`text`,required:!1,default:``},{name:`notes`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/payouts/createFromPayment`},{method:`POST`,path:`/payouts/findByPayment`},{method:`POST`,path:`/payouts/findByVendor`},{method:`POST`,path:`/payouts/findByStatus`},{method:`POST`,path:`/payouts/findPending`},{method:`POST`,path:`/payouts/findFailed`},{method:`POST`,path:`/payouts/findByBackendTxRef`},{method:`POST`,path:`/payouts/getConfirmedTotalForVendor`},{method:`POST`,path:`/payouts/findByTenant`},{method:`POST`,path:`/payouts/findGlobal`},{method:`POST`,path:`/payouts/findWithGlobals`},{method:`GET`,path:`/payouts`},{method:`GET`,path:`/payouts/[id]`}],mcp:[{operation:`get`,name:`payout_get`},{operation:`list`,name:`payout_list`},{operation:`createFromPayment`,name:`payoutcollection_createfrompayment`},{operation:`findByBackendTxRef`,name:`payoutcollection_findbybackendtxref`},{operation:`findByPayment`,name:`payoutcollection_findbypayment`},{operation:`findByStatus`,name:`payoutcollection_findbystatus`},{operation:`findByTenant`,name:`payoutcollection_findbytenant`},{operation:`findByVendor`,name:`payoutcollection_findbyvendor`},{operation:`findFailed`,name:`payoutcollection_findfailed`},{operation:`findGlobal`,name:`payoutcollection_findglobal`},{operation:`findPending`,name:`payoutcollection_findpending`},{operation:`findWithGlobals`,name:`payoutcollection_findwithglobals`},{operation:`getConfirmedTotalForVendor`,name:`payoutcollection_getconfirmedtotalforvendor`}],cli:[{operation:`get`,name:`payout_get`},{operation:`list`,name:`payout_list`},{operation:`createFromPayment`,name:`payoutcollection_createFromPayment`},{operation:`findByBackendTxRef`,name:`payoutcollection_findByBackendTxRef`},{operation:`findByPayment`,name:`payoutcollection_findByPayment`},{operation:`findByStatus`,name:`payoutcollection_findByStatus`},{operation:`findByTenant`,name:`payoutcollection_findByTenant`},{operation:`findByVendor`,name:`payoutcollection_findByVendor`},{operation:`findFailed`,name:`payoutcollection_findFailed`},{operation:`findGlobal`,name:`payoutcollection_findGlobal`},{operation:`findPending`,name:`payoutcollection_findPending`},{operation:`findWithGlobals`,name:`payoutcollection_findWithGlobals`},{operation:`getConfirmedTotalForVendor`,name:`payoutcollection_getConfirmedTotalForVendor`}],methods:[{name:`createFromPayment`,async:!0,parameters:[`args: CreatePayoutFromPaymentArgs`],returnType:`Promise<Payout>`,aiCallable:!0},{name:`findByBackendTxRef`,async:!0,parameters:[`backendTxRef: string`],returnType:`Promise<Payout | null>`,aiCallable:!0},{name:`findByPayment`,async:!0,parameters:[`paymentId: string`],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: PayoutStatus`],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findByVendor`,async:!0,parameters:[`vendorId: string`],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findFailed`,async:!0,parameters:[],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findPending`,async:!0,parameters:[],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Payout[]>`,aiCallable:!0},{name:`getConfirmedTotalForVendor`,async:!0,parameters:[`vendorId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isConfirmed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isFailed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSent`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markConfirmed`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markFailed`,async:!1,parameters:[`reason: string`],returnType:`void`,aiCallable:!1},{name:`markSent`,async:!1,parameters:[`backendTxRef: string`],returnType:`void`,aiCallable:!1},{name:`resetFromFailed`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`validateAmounts`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:ProductionOrder`,name:`ProductionOrder`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Instruction to commission goods from an internal or external factory.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`productionorder_create`},{operation:`delete`,name:`productionorder_delete`},{operation:`get`,name:`productionorder_get`},{operation:`isAccepted`,name:`productionorder_isaccepted`},{operation:`isCompleted`,name:`productionorder_iscompleted`},{operation:`isDraft`,name:`productionorder_isdraft`},{operation:`isExpired`,name:`productionorder_isexpired`},{operation:`isOverdue`,name:`productionorder_isoverdue`},{operation:`list`,name:`productionorder_list`},{operation:`recalculateTotals`,name:`productionorder_recalculatetotals`},{operation:`update`,name:`productionorder_update`}],cli:[{operation:`create`,name:`productionorder_create`},{operation:`delete`,name:`productionorder_delete`},{operation:`get`,name:`productionorder_get`},{operation:`isAccepted`,name:`productionorder_isAccepted`},{operation:`isCompleted`,name:`productionorder_isCompleted`},{operation:`isDraft`,name:`productionorder_isDraft`},{operation:`isExpired`,name:`productionorder_isExpired`},{operation:`isOverdue`,name:`productionorder_isOverdue`},{operation:`list`,name:`productionorder_list`},{operation:`recalculateTotals`,name:`productionorder_recalculateTotals`},{operation:`update`,name:`productionorder_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:PurchaseOrder`,name:`PurchaseOrder`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`Order sent to vendor/supplier`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`purchaseorder_create`},{operation:`delete`,name:`purchaseorder_delete`},{operation:`get`,name:`purchaseorder_get`},{operation:`isAccepted`,name:`purchaseorder_isaccepted`},{operation:`isCompleted`,name:`purchaseorder_iscompleted`},{operation:`isDraft`,name:`purchaseorder_isdraft`},{operation:`isExpired`,name:`purchaseorder_isexpired`},{operation:`isOverdue`,name:`purchaseorder_isoverdue`},{operation:`list`,name:`purchaseorder_list`},{operation:`recalculateTotals`,name:`purchaseorder_recalculatetotals`},{operation:`update`,name:`purchaseorder_update`}],cli:[{operation:`create`,name:`purchaseorder_create`},{operation:`delete`,name:`purchaseorder_delete`},{operation:`get`,name:`purchaseorder_get`},{operation:`isAccepted`,name:`purchaseorder_isAccepted`},{operation:`isCompleted`,name:`purchaseorder_isCompleted`},{operation:`isDraft`,name:`purchaseorder_isDraft`},{operation:`isExpired`,name:`purchaseorder_isExpired`},{operation:`isOverdue`,name:`purchaseorder_isOverdue`},{operation:`list`,name:`purchaseorder_list`},{operation:`recalculateTotals`,name:`purchaseorder_recalculateTotals`},{operation:`update`,name:`purchaseorder_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0},{id:`@happyvertical/smrt-commerce:Vendor`,name:`Vendor`,collection:`vendors`,description:`Vendor represents the vendor/supplier role for a Profile.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`,description:`Links this vendor to their profile record, where their name and contact details are kept.`},{name:`leadTimeDays`,type:`integer`,required:!1,default:0,description:`How many days the vendor usually takes between your order and delivery.`},{name:`minimumOrderAmount`,type:`integer`,required:!1,default:0,description:`The smallest order the vendor will accept.`},{name:`paymentTerms`,type:`text`,required:!1,default:``,description:`How long you have to pay this vendor, written the way you would say it, for example "Net 30".`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency this vendor bills you in.`},{name:`defaultContactEmail`,type:`text`,required:!1,default:``,ui:{widget:`email`},description:`The email address you normally use to reach this vendor.`},{name:`defaultContactPhone`,type:`text`,required:!1,default:``,ui:{widget:`phone`},description:`The phone number you normally use to reach this vendor.`},{name:`status`,type:`text`,required:!1,enum:[`active`,`inactive`,`suspended`],description:`Whether you still buy from this vendor: active, inactive or suspended.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this vendor.`},{name:`payoutAddresses`,type:`json`,required:!1,description:`Where payments to this vendor should be sent.`}],rest:[{method:`POST`,path:`/vendors/findByProfile`},{method:`POST`,path:`/vendors/findActive`},{method:`POST`,path:`/vendors/findByStatus`},{method:`POST`,path:`/vendors/getOrCreateForProfile`},{method:`POST`,path:`/vendors/findByTenant`},{method:`POST`,path:`/vendors/findGlobal`},{method:`POST`,path:`/vendors/findWithGlobals`},{method:`GET`,path:`/vendors`},{method:`GET`,path:`/vendors/[id]`},{method:`POST`,path:`/vendors`},{method:`PATCH`,path:`/vendors/[id]`}],mcp:[{operation:`get`,name:`vendor_get`},{operation:`list`,name:`vendor_list`},{operation:`findActive`,name:`vendorcollection_findactive`},{operation:`findByProfile`,name:`vendorcollection_findbyprofile`},{operation:`findByStatus`,name:`vendorcollection_findbystatus`},{operation:`findByTenant`,name:`vendorcollection_findbytenant`},{operation:`findGlobal`,name:`vendorcollection_findglobal`},{operation:`findWithGlobals`,name:`vendorcollection_findwithglobals`},{operation:`getOrCreateForProfile`,name:`vendorcollection_getorcreateforprofile`}],cli:[{operation:`clearPayoutAddress`,name:`vendor_clearPayoutAddress`},{operation:`create`,name:`vendor_create`},{operation:`delete`,name:`vendor_delete`},{operation:`get`,name:`vendor_get`},{operation:`getPayoutAddress`,name:`vendor_getPayoutAddress`},{operation:`getProfileId`,name:`vendor_getProfileId`},{operation:`isActive`,name:`vendor_isActive`},{operation:`list`,name:`vendor_list`},{operation:`meetsMinimumOrder`,name:`vendor_meetsMinimumOrder`},{operation:`setPayoutAddress`,name:`vendor_setPayoutAddress`},{operation:`update`,name:`vendor_update`},{operation:`findActive`,name:`vendorcollection_findActive`},{operation:`findByProfile`,name:`vendorcollection_findByProfile`},{operation:`findByStatus`,name:`vendorcollection_findByStatus`},{operation:`findByTenant`,name:`vendorcollection_findByTenant`},{operation:`findGlobal`,name:`vendorcollection_findGlobal`},{operation:`findWithGlobals`,name:`vendorcollection_findWithGlobals`},{operation:`getOrCreateForProfile`,name:`vendorcollection_getOrCreateForProfile`}],methods:[{name:`clearPayoutAddress`,async:!1,parameters:[`currency: string`],returnType:`this`,aiCallable:!1},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: VendorStatus`],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Vendor[]>`,aiCallable:!0},{name:`getOrCreateForProfile`,async:!0,parameters:[`profileId: string`,`defaults?: Partial<object>`],returnType:`Promise<Vendor>`,aiCallable:!0},{name:`getPayoutAddress`,async:!1,parameters:[`currency: string`],returnType:`string | undefined`,aiCallable:!1},{name:`getProfileId`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`meetsMinimumOrder`,async:!1,parameters:[`amount: number`],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setPayoutAddress`,async:!1,parameters:[`currency: string`,`destination: string`],returnType:`this`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-commerce:WholesaleOrder`,name:`WholesaleOrder`,collection:`contracts`,extends:`@happyvertical/smrt-commerce:Contract`,description:`B2B order placed by a wholesale customer.`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contractType`,type:`text`,required:!1,enum:[`estimate`,`order`,`lease`,`agreement`,`purchase_order`,`wholesale_order`,`production_order`,`cart`,`license_sale`],description:`The kind of contract: order, estimate, lease, agreement and so on.`},{name:`status`,type:`text`,required:!1,enum:[`draft`,`sent`,`accepted`,`declined`,`completed`,`cancelled`],description:`Where the order or agreement stands, for example draft, sent, accepted or completed.`},{name:`customerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Customer`,description:`The customer a sales order or agreement is for.`},{name:`vendorId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`,description:`The vendor a purchase order is placed with.`},{name:`subtotal`,type:`integer`,required:!1,default:0,description:`The amount before tax.`},{name:`taxAmount`,type:`integer`,required:!1,default:0,description:`The tax charged.`},{name:`totalAmount`,type:`integer`,required:!1,default:0,description:`The full amount, tax included.`},{name:`currency`,type:`text`,required:!1,default:`USD`,ui:{widget:`currency`},description:`The currency of the amounts.`},{name:`issueDate`,type:`datetime`,required:!1,description:`The date it was issued or placed.`},{name:`dueDate`,type:`datetime`,required:!1,description:`The date payment or delivery is due.`},{name:`expiryDate`,type:`datetime`,required:!1,description:`The last day the price or offer is good for.`},{name:`reference`,type:`text`,required:!1,default:``,description:`Your own number or note for finding this later, such as a purchase order or quote number.`},{name:`notes`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`Anything worth remembering about this.`},{name:`terms`,type:`text`,required:!1,default:``,ui:{widget:`textarea`},description:`The conditions agreed, such as deposits, payment or delivery conditions.`},{name:`channelId`,type:`text`,required:!1,default:``,description:`Where it came from, for example your shop, a marketplace or a phone call.`}],rest:[{method:`GET`,path:`/contracts`},{method:`GET`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts`},{method:`PATCH`,path:`/contracts/[id]`},{method:`DELETE`,path:`/contracts/[id]`},{method:`POST`,path:`/contracts/[id]/isDraft`},{method:`POST`,path:`/contracts/[id]/isAccepted`},{method:`POST`,path:`/contracts/[id]/isCompleted`},{method:`POST`,path:`/contracts/[id]/isExpired`},{method:`POST`,path:`/contracts/[id]/isOverdue`},{method:`POST`,path:`/contracts/[id]/recalculateTotals`}],mcp:[{operation:`create`,name:`wholesaleorder_create`},{operation:`delete`,name:`wholesaleorder_delete`},{operation:`get`,name:`wholesaleorder_get`},{operation:`isAccepted`,name:`wholesaleorder_isaccepted`},{operation:`isCompleted`,name:`wholesaleorder_iscompleted`},{operation:`isDraft`,name:`wholesaleorder_isdraft`},{operation:`isExpired`,name:`wholesaleorder_isexpired`},{operation:`isOverdue`,name:`wholesaleorder_isoverdue`},{operation:`list`,name:`wholesaleorder_list`},{operation:`recalculateTotals`,name:`wholesaleorder_recalculatetotals`},{operation:`update`,name:`wholesaleorder_update`}],cli:[{operation:`create`,name:`wholesaleorder_create`},{operation:`delete`,name:`wholesaleorder_delete`},{operation:`get`,name:`wholesaleorder_get`},{operation:`isAccepted`,name:`wholesaleorder_isAccepted`},{operation:`isCompleted`,name:`wholesaleorder_isCompleted`},{operation:`isDraft`,name:`wholesaleorder_isDraft`},{operation:`isExpired`,name:`wholesaleorder_isExpired`},{operation:`isOverdue`,name:`wholesaleorder_isOverdue`},{operation:`list`,name:`wholesaleorder_list`},{operation:`recalculateTotals`,name:`wholesaleorder_recalculateTotals`},{operation:`update`,name:`wholesaleorder_update`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAccepted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isOverdue`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`recalculateTotals`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`,`@happyvertical/smrt-commerce:Vendor`],exposed:!0}],dependencies:[`ledgers`,`products`,`profiles`,`subscriptions`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3624`,`#3626`,`#3627`],reason:`@happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs`,via:[`@happyvertical/smrt-jobs`,`@happyvertical/smrt-ledgers`,`@happyvertical/smrt-subscriptions`,`@happyvertical/smrt-tenancy`]},recipes:[{id:`commerce.agreements`,label:`General agreements`,summary:`Keep signed agreements with customers, and see every contract in one list.`,synonyms:[`contracts`,`terms`,`deals`],models:[`@happyvertical/smrt-commerce:Agreement`,`@happyvertical/smrt-commerce:Contract`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Agreements`,model:`@happyvertical/smrt-commerce:Agreement`,icon:`fileText`,description:`Signed deals and terms with your customers, in one place.`},{label:`All contracts`,model:`@happyvertical/smrt-commerce:Contract`,icon:`fileText`,description:`Every contract you hold, whoever it is with.`}],requires:[`commerce.customers`],group:{id:`agreements`,label:`Agreements`,summary:`Contracts with customers: general agreements, leases and licence sales.`},section:{id:`agreements`,label:`Agreements`,icon:`fileText`,description:`Contracts, leases and licenses with customers.`},options:{"@happyvertical/smrt-commerce:Agreement":{fields:{contractType:{default:`agreement`,visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1,required:!0},vendorId:{visibility:`hidden`},subtotal:{visibility:`hidden`},taxAmount:{visibility:`hidden`},channelId:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}},"@happyvertical/smrt-commerce:Contract":{fields:{channelId:{visibility:`hidden`}}}},help:{markdown:`## Overview
201
+
202
+ Agreements are contracts you keep with customers. General agreements live here;
203
+ leases and licence sales are separate recipes in the same group.
204
+ **All contracts** lists every kind together, including orders and quotes.
205
+
206
+ ## Tasks
207
+
208
+ ### Record an agreement
209
+
210
+ 1. Create a new agreement.
211
+ 2. Pick the **{field:customerId}**.
212
+ 3. Set the **{field:issueDate}** and **{field:expiryDate}**.
213
+ 4. Put the conditions in **{field:terms}** and save.
214
+
215
+ ### Follow it
216
+
217
+ 1. Update **{field:status}** from draft to accepted to completed.
218
+ 2. Check **{field:expiryDate}** to spot agreements about to lapse.
219
+ `,fieldRefs:[`customerId`,`expiryDate`,`issueDate`,`status`,`terms`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.customers`,label:`Customers`,summary:`Keep a list of the people and companies you sell to.`,synonyms:[`clients`,`buyers`,`accounts`],models:[`@happyvertical/smrt-commerce:Customer`],nav:[{label:`Customers`,model:`@happyvertical/smrt-commerce:Customer`,icon:`users`,description:`The people and companies you sell to, with how to reach them.`}],requires:[],section:{id:`sales`,label:`Sales`,icon:`shoppingBag`,description:`Customers, orders and quotes: everything you sell.`},options:{"@happyvertical/smrt-commerce:Customer":{fields:{profileId:{label:`Name`,order:-1}}}},help:{markdown:`## Overview
220
+
221
+ Customers is your address book for the people and businesses you sell to. Keep
222
+ one record for each customer so you can see who they are, how they like to pay
223
+ and what you have agreed with them, then refer back to them whenever you take an
224
+ order.
225
+
226
+ ## Tasks
227
+
228
+ ### Add a new customer
229
+
230
+ 1. Choose the **New** button above the list.
231
+ 2. Describe the customer with **{field:customerType}**: a direct shopper, a
232
+ wholesale buyer or a retail customer. Note in **{field:status}** whether you
233
+ are still dealing with them.
234
+ 3. Fill in the **{field:defaultShippingAddress}** and
235
+ **{field:defaultBillingAddress}** so you do not have to type them again on
236
+ every order.
237
+ 4. Add **{field:paymentTerms}**, for example "Net 30", if you give this
238
+ customer time to pay.
239
+ 5. Save. The customer is now on your list and ready to use on a sales order.
240
+
241
+ ### Keep track of what a customer can owe
242
+
243
+ 1. Open the customer from the list and choose Edit.
244
+ 2. Set **{field:creditLimit}** to the most you are comfortable letting them owe
245
+ you at one time.
246
+ 3. If you do not charge them sales tax, turn on **{field:taxExempt}**, and keep
247
+ their tax number on file.
248
+ 4. Use **{field:notes}** for anything the next person who deals with this
249
+ customer should know.
250
+
251
+ ### Find a customer
252
+
253
+ Scan the list for the customer you want, or open a record to see everything you
254
+ have on file. To stop dealing with someone without losing their history, change
255
+ their **{field:status}** to inactive instead of deleting them.
256
+ `,fieldRefs:[`creditLimit`,`customerType`,`defaultBillingAddress`,`defaultShippingAddress`,`notes`,`paymentTerms`,`status`,`taxExempt`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]}},{id:`commerce.estimates`,label:`Estimates`,summary:`Send customers a price quote before they commit.`,synonyms:[`quotes`,`quotations`,`proposals`,`bids`],models:[`@happyvertical/smrt-commerce:Estimate`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Estimates`,model:`@happyvertical/smrt-commerce:Estimate`,icon:`fileText`,description:`Price quotes you have sent to customers.`}],requires:[`commerce.customers`],section:{id:`sales`,label:`Sales`,icon:`shoppingBag`,description:`Customers, orders and quotes: everything you sell.`},options:{"@happyvertical/smrt-commerce:Estimate":{fields:{contractType:{default:`estimate`,visibility:`hidden`,locked:!0},vendorId:{visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1,required:!0},channelId:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
257
+
258
+ Estimates are price quotes you send before a customer commits. Each one belongs
259
+ to a customer, lists its line items and shows how long the price is good for.
260
+
261
+ ## Tasks
262
+
263
+ ### Write an estimate
264
+
265
+ 1. Create a new estimate.
266
+ 2. Pick the **{field:customerId}** the quote is for.
267
+ 3. Add the line items, then check the **{field:totalAmount}**.
268
+ 4. Set **{field:expiryDate}** to the last day the price is good for.
269
+ 5. Put your conditions in **{field:terms}** and save.
270
+
271
+ ### Follow it up
272
+
273
+ 1. Set **{field:status}** to sent once it goes out.
274
+ 2. Move it to accepted or declined when the customer answers.
275
+ `,fieldRefs:[`customerId`,`expiryDate`,`status`,`terms`,`totalAmount`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.fulfillment`,label:`Shipping`,summary:`Pack, ship and deliver orders, with tracking.`,synonyms:[`fulfillment`,`delivery`,`shipments`,`tracking`],models:[`@happyvertical/smrt-commerce:Fulfillment`,`@happyvertical/smrt-commerce:FulfillmentLineItem`],nav:[{label:`Shipments`,model:`@happyvertical/smrt-commerce:Fulfillment`,icon:`truck`,description:`What has gone out the door and where it is now.`}],requires:[],requiresAny:[[`commerce.sales`,`commerce.wholesale`]],group:{id:`billing`,label:`Billing & shipping`,summary:`Invoice your customers, record what they pay and ship what they ordered.`},section:{id:`operations`,label:`Operations`,icon:`wrench`,description:`Fulfillment and the day-to-day work behind an order.`},options:{"@happyvertical/smrt-commerce:Fulfillment":{fields:{estimatedDelivery:{visibility:`hidden`},shippingAddress:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:FulfillmentLineItem":{fields:{notes:{visibility:`hidden`}}}},help:{markdown:`## Overview
276
+
277
+ Shipping tracks how an order gets to the customer. Each shipment belongs to an
278
+ order and lists which line items are in it, so an order can go out in parts.
279
+
280
+ ## Tasks
281
+
282
+ ### Ship an order
283
+
284
+ 1. Create a new shipment.
285
+ 2. Pick the order in **{field:contractId}** and choose the
286
+ **{field:fulfillmentType}**.
287
+ 3. Enter the **{field:carrier}** and **{field:trackingNumber}**.
288
+ 4. List the items and quantities in the shipment.
289
+ 5. Set **{field:status}** to shipped and record **{field:shippedAt}**.
290
+
291
+ ### Confirm delivery
292
+
293
+ 1. Open the shipment and set **{field:status}** to delivered.
294
+ 2. Record **{field:deliveredAt}**.
295
+ `,fieldRefs:[`carrier`,`contractId`,`deliveredAt`,`fulfillmentType`,`shippedAt`,`status`,`trackingNumber`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.sales, which is server.`]}},{id:`commerce.invoicing`,label:`Invoicing`,summary:`Bill customers and record the payments that come in.`,synonyms:[`invoices`,`billing`,`payments`,`receivables`],models:[`@happyvertical/smrt-commerce:Invoice`,`@happyvertical/smrt-commerce:InvoiceLineItem`,`@happyvertical/smrt-commerce:Payment`,`@happyvertical/smrt-commerce:PaymentAllocation`],nav:[{label:`Invoices`,model:`@happyvertical/smrt-commerce:Invoice`,icon:`receipt`,description:`Bills you have sent and which ones are still waiting to be paid.`},{label:`Payments`,model:`@happyvertical/smrt-commerce:Payment`,icon:`creditCard`,description:`Money received, matched to the invoices it paid.`}],requires:[`commerce.customers`],group:{id:`billing`,label:`Billing & shipping`,summary:`Invoice your customers, record what they pay and ship what they ordered.`},section:{id:`billing`,label:`Billing`,icon:`receipt`,description:`Invoices and the payments against them.`},options:{"@happyvertical/smrt-commerce:Invoice":{fields:{providerTaxAmount:{visibility:`hidden`},arJournalId:{visibility:`hidden`},revenueJournalId:{visibility:`hidden`},externalId:{visibility:`hidden`},customerExternalId:{visibility:`hidden`},externalProvider:{visibility:`hidden`},syncedAt:{visibility:`hidden`},collectionMethod:{visibility:`hidden`},sentAt:{visibility:`hidden`},viewedAt:{visibility:`hidden`},remindersSent:{visibility:`hidden`},lastReminderAt:{visibility:`hidden`},reference:{visibility:`hidden`},customerId:{required:!0}}},"@happyvertical/smrt-commerce:InvoiceLineItem":{fields:{invoiceEditorStateJson:{visibility:`hidden`},sourceType:{visibility:`hidden`},sourceId:{visibility:`hidden`},periodStart:{visibility:`hidden`},periodEnd:{visibility:`hidden`},revenueAccountId:{visibility:`hidden`},sortOrder:{visibility:`hidden`},sku:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}},"@happyvertical/smrt-commerce:Payment":{fields:{journalId:{visibility:`hidden`},externalId:{visibility:`hidden`},externalProvider:{visibility:`hidden`},syncedAt:{visibility:`hidden`},backendId:{visibility:`hidden`},backendTxRef:{visibility:`hidden`},nativeAmount:{visibility:`hidden`},nativeCurrency:{visibility:`hidden`},usdAtQuote:{visibility:`hidden`},usdAtConfirmation:{visibility:`hidden`},transactionId:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:PaymentAllocation":{fields:{allocatedBy:{visibility:`hidden`}}}},help:{markdown:`## Overview
296
+
297
+ Invoicing bills your customers and records what they pay. An invoice lists its
298
+ line items; a payment can be spread across one or more invoices.
299
+
300
+ ## Tasks
301
+
302
+ ### Send an invoice
303
+
304
+ 1. Create a new invoice.
305
+ 2. Pick the **{field:customerId}** and add the line items.
306
+ 3. Check the **{field:totalAmount}** and set the **{field:dueDate}**.
307
+ 4. Set **{field:status}** to sent once it goes out.
308
+
309
+ ### Record a payment
310
+
311
+ 1. Create a new payment.
312
+ 2. Pick the **{field:customerId}**, then enter the **{field:Payment.amount}** and the
313
+ **{field:method}** used.
314
+ 3. Set **{field:Payment.status}** to completed once the money has arrived.
315
+ 4. Apply it to the invoices it settles; each one shows what is still owed.
316
+ `,fieldRefs:[`Payment.amount`,`Payment.status`,`customerId`,`dueDate`,`method`,`status`,`totalAmount`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.leases`,label:`Leases`,summary:`Rent things out and track the term and the payments due.`,synonyms:[`rentals`,`renting`,`hire`],models:[`@happyvertical/smrt-commerce:Lease`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Leases`,model:`@happyvertical/smrt-commerce:Lease`,icon:`home`,description:`Rentals you give or take, with terms and dates.`}],requires:[`commerce.customers`],group:{id:`agreements`,label:`Agreements`,summary:`Contracts with customers: general agreements, leases and licence sales.`},section:{id:`agreements`,label:`Agreements`,icon:`fileText`,description:`Contracts, leases and licenses with customers.`},options:{"@happyvertical/smrt-commerce:Lease":{fields:{contractType:{default:`lease`,visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1,required:!0},vendorId:{visibility:`hidden`},subtotal:{visibility:`hidden`},taxAmount:{visibility:`hidden`},channelId:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
317
+
318
+ Leases are agreements where a customer rents something from you for a period.
319
+ Each lease keeps its own line items and dates.
320
+
321
+ ## Tasks
322
+
323
+ ### Record a lease
324
+
325
+ 1. Create a new lease.
326
+ 2. Pick the **{field:customerId}** renting from you.
327
+ 3. Set the **{field:issueDate}** it starts and the **{field:expiryDate}** it ends.
328
+ 4. Add a line item for each thing rented, then save.
329
+
330
+ ### Keep an eye on it
331
+
332
+ 1. Update **{field:status}** as the lease goes from draft to accepted to
333
+ completed.
334
+ 2. Check **{field:expiryDate}** to see which leases end soon.
335
+ `,fieldRefs:[`customerId`,`expiryDate`,`issueDate`,`status`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.licenses`,label:`Licence sales`,summary:`Sell licences to software, content or other rights.`,synonyms:[`licenses`,`licensing`,`subscriptions`],models:[`@happyvertical/smrt-commerce:LicenseSale`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Licence sales`,model:`@happyvertical/smrt-commerce:LicenseSale`,icon:`shoppingBag`,description:`Licences you have sold and who holds them.`}],requires:[`commerce.customers`],group:{id:`agreements`,label:`Agreements`,summary:`Contracts with customers: general agreements, leases and licence sales.`},section:{id:`agreements`,label:`Agreements`,icon:`fileText`,description:`Contracts, leases and licenses with customers.`},options:{"@happyvertical/smrt-commerce:LicenseSale":{fields:{contractType:{default:`license_sale`,visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1,required:!0},vendorId:{visibility:`hidden`},subtotal:{visibility:`hidden`},taxAmount:{visibility:`hidden`},channelId:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
336
+
337
+ Licence sales record selling the right to use something, such as software or
338
+ content, rather than a physical item.
339
+
340
+ ## Tasks
341
+
342
+ ### Record a licence sale
343
+
344
+ 1. Create a new licence sale.
345
+ 2. Pick the **{field:customerId}** who bought the licence.
346
+ 3. Add a line item for what is licensed and check the **{field:totalAmount}**.
347
+ 4. Set the **{field:expiryDate}** if the licence runs out, then save.
348
+
349
+ ### Follow it
350
+
351
+ 1. Update **{field:status}** when the customer accepts or the sale completes.
352
+ `,fieldRefs:[`customerId`,`expiryDate`,`status`,`totalAmount`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.purchases`,label:`Purchases`,summary:`Order from your vendors and track what you have bought.`,synonyms:[`purchase orders`,`buying`,`procurement`],models:[`@happyvertical/smrt-commerce:PurchaseOrder`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Purchase orders`,model:`@happyvertical/smrt-commerce:PurchaseOrder`,icon:`truck`,description:`What you have ordered from your suppliers and when it arrives.`}],requires:[`commerce.vendors`],section:{id:`purchasing`,label:`Purchasing`,icon:`truck`,description:`Vendors and purchase orders: everything you buy.`},options:{"@happyvertical/smrt-commerce:PurchaseOrder":{fields:{contractType:{default:`purchase_order`,visibility:`hidden`,locked:!0},customerId:{visibility:`hidden`,locked:!0},vendorId:{label:`Vendor`,order:1},channelId:{visibility:`hidden`},expiryDate:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
353
+
354
+ Purchases is where you order from your vendors and keep track of what you have
355
+ bought. Every purchase order belongs to one of your vendors and records the
356
+ amounts, the dates and where the order stands.
357
+
358
+ ## Tasks
359
+
360
+ ### Place a purchase order
361
+
362
+ 1. Choose the **New** button above the list.
363
+ 2. Enter the **{field:vendorId}** you are buying from. Add them under Vendors
364
+ first so they are on your list.
365
+ 3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the
366
+ **{field:totalAmount}** you expect to pay.
367
+ 4. Set the **{field:issueDate}**, and the **{field:dueDate}** for when the
368
+ goods or the payment are due.
369
+ 5. Add your own **{field:reference}**, such as the vendor's quote number, so
370
+ you can match it to their paperwork.
371
+ 6. Save.
372
+
373
+ ### Follow an order until it arrives
374
+
375
+ 1. Open the purchase order from the list and choose Edit.
376
+ 2. Update **{field:status}** as the order moves along, for example from draft to
377
+ sent, accepted and completed.
378
+ 3. Use **{field:notes}** to record what the vendor told you, such as delays or
379
+ partial shipments.
380
+
381
+ ### Record the agreement
382
+
383
+ 1. Open the purchase order and choose Edit.
384
+ 2. Write down the **{field:terms}** you agreed with the vendor, such as payment
385
+ or delivery conditions.
386
+ 3. Set **{field:expiryDate}** if the vendor's offer is only good until a certain
387
+ day.
388
+ `,fieldRefs:[`dueDate`,`expiryDate`,`issueDate`,`notes`,`reference`,`status`,`subtotal`,`taxAmount`,`terms`,`totalAmount`,`vendorId`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.vendors, which is server.`]}},{id:`commerce.sales`,label:`Sales`,summary:`Take customer orders and track them.`,synonyms:[`sales orders`,`orders`,`customer orders`],models:[`@happyvertical/smrt-commerce:Order`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Sales orders`,model:`@happyvertical/smrt-commerce:Order`,icon:`shoppingBag`,description:`Orders from your customers, from placed to delivered.`}],requires:[`commerce.customers`],section:{id:`sales`,label:`Sales`,icon:`shoppingBag`,description:`Customers, orders and quotes: everything you sell.`},options:{"@happyvertical/smrt-commerce:Order":{fields:{contractType:{default:`order`,visibility:`hidden`,locked:!0},vendorId:{visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1,required:!0},channelId:{visibility:`hidden`},expiryDate:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
389
+
390
+ Sales is where you take orders from your customers and see where each one
391
+ stands. Every order belongs to one of your customers, carries its amounts and
392
+ dates, and keeps a status so you always know what is still open.
393
+
394
+ ## Tasks
395
+
396
+ ### Take an order
397
+
398
+ 1. Choose the **New** button above the list.
399
+ 2. Enter the **{field:customerId}** the order is for. Add them under Customers
400
+ first so they are on your list.
401
+ 3. Enter the **{field:subtotal}** and **{field:taxAmount}**, then the
402
+ **{field:totalAmount}** the customer will pay.
403
+ 4. Set the **{field:issueDate}**, and the **{field:dueDate}** if you expect
404
+ payment by a certain day.
405
+ 5. Add your own **{field:reference}**, such as a purchase order number the
406
+ customer gave you, so you can find the order later.
407
+ 6. Save.
408
+
409
+ ### Follow an order through to the end
410
+
411
+ 1. Open the order from the list and choose Edit.
412
+ 2. Update **{field:status}** as the order moves along, for example from draft to
413
+ sent, accepted and completed.
414
+ 3. Check the **{field:dueDate}** against today to spot orders that are overdue.
415
+ 4. Use **{field:notes}** to record calls, changes and anything promised.
416
+
417
+ ### Make a quote with an expiry
418
+
419
+ 1. Create the order as usual and set its **{field:status}** to show it is still
420
+ a draft.
421
+ 2. Set **{field:expiryDate}** to the last day the price is good for.
422
+ 3. Put your conditions, such as deposits or delivery, in **{field:terms}**.
423
+ `,fieldRefs:[`customerId`,`dueDate`,`expiryDate`,`issueDate`,`notes`,`reference`,`status`,`subtotal`,`taxAmount`,`terms`,`totalAmount`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}},{id:`commerce.vendors`,label:`Vendors`,summary:`Keep a list of the suppliers you buy from.`,synonyms:[`suppliers`,`sellers`],models:[`@happyvertical/smrt-commerce:Vendor`],nav:[{label:`Vendors`,model:`@happyvertical/smrt-commerce:Vendor`,icon:`briefcase`,description:`The suppliers you buy from, with terms and contacts.`}],requires:[],section:{id:`purchasing`,label:`Purchasing`,icon:`truck`,description:`Vendors and purchase orders: everything you buy.`},options:{"@happyvertical/smrt-commerce:Vendor":{fields:{profileId:{label:`Name`,order:-1}}}},help:{markdown:`## Overview
424
+
425
+ Vendors is your list of the suppliers you buy from. Each record holds who they
426
+ are, how to reach them and the terms you have agreed, so you can order from them
427
+ quickly and keep track of what you have bought.
428
+
429
+ ## Tasks
430
+
431
+ ### Add a vendor
432
+
433
+ 1. Choose the **New** button above the list.
434
+ 2. Enter **{field:defaultContactEmail}** and **{field:defaultContactPhone}** for
435
+ the person you normally deal with.
436
+ 3. Set the **{field:currency}** they bill you in and your **{field:paymentTerms}**,
437
+ for example "Net 30".
438
+ 4. Save. The vendor is now on your list and ready to use on a purchase order.
439
+
440
+ ### Note how a vendor likes to work
441
+
442
+ 1. Open the vendor from the list and choose Edit.
443
+ 2. Enter **{field:leadTimeDays}**, the number of days they usually need between
444
+ your order and delivery, so you can plan ahead.
445
+ 3. Enter **{field:minimumOrderAmount}** if they will not accept small orders.
446
+ 4. Use **{field:notes}** for anything else worth remembering, such as the best
447
+ time to call.
448
+
449
+ ### Keep payment details in one place
450
+
451
+ 1. Open the vendor and choose Edit.
452
+ 2. Record where payments to this vendor should be sent, so it is all in one
453
+ place.
454
+ 3. Set **{field:status}** to show whether you still buy from them: active,
455
+ inactive or suspended.
456
+ `,fieldRefs:[`currency`,`defaultContactEmail`,`defaultContactPhone`,`leadTimeDays`,`minimumOrderAmount`,`notes`,`paymentTerms`,`status`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]}},{id:`commerce.wholesale`,label:`Wholesale orders`,summary:`Take bulk orders from trade customers.`,synonyms:[`bulk orders`,`trade orders`,`b2b`],models:[`@happyvertical/smrt-commerce:WholesaleOrder`,`@happyvertical/smrt-commerce:ContractLineItem`],nav:[{label:`Wholesale orders`,model:`@happyvertical/smrt-commerce:WholesaleOrder`,icon:`shoppingBag`,description:`Bulk orders from cafes, shops and other businesses.`}],requires:[`commerce.customers`],section:{id:`sales`,label:`Sales`,icon:`shoppingBag`,description:`Customers, orders and quotes: everything you sell.`},options:{"@happyvertical/smrt-commerce:WholesaleOrder":{fields:{contractType:{default:`wholesale_order`,visibility:`hidden`,locked:!0},vendorId:{visibility:`hidden`,locked:!0},customerId:{label:`Customer`,order:1},channelId:{visibility:`hidden`},expiryDate:{visibility:`hidden`}}},"@happyvertical/smrt-commerce:ContractLineItem":{fields:{sku:{visibility:`hidden`},startDate:{visibility:`hidden`},endDate:{visibility:`hidden`},billingPeriod:{visibility:`hidden`},sortOrder:{visibility:`hidden`},discount:{visibility:`hidden`},taxRate:{help:`Type a percentage: 5 means 5%.`}}}},help:{markdown:`## Overview
457
+
458
+ Wholesale orders are bulk orders from trade customers. They work like sales
459
+ orders, with a list of line items, but are kept in their own list so trade and
460
+ retail sales stay apart.
461
+
462
+ ## Tasks
463
+
464
+ ### Take a wholesale order
465
+
466
+ 1. Create a new wholesale order.
467
+ 2. Pick the **{field:customerId}** placing the order.
468
+ 3. Add the line items and check the **{field:totalAmount}**.
469
+ 4. Set the **{field:dueDate}** for payment and save.
470
+
471
+ ### Track it
472
+
473
+ 1. Update **{field:status}** as the order moves from draft to completed.
474
+ 2. Use **{field:reference}** for the buyer's own order number.
475
+ `,fieldRefs:[`customerId`,`dueDate`,`reference`,`status`,`totalAmount`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: @happyvertical/payments btcpay (node:crypto); core migrations (node:os). The jobs runner edge (#3615) is reported on smrt-jobs; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-ledgers, @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3626, #3627).`,`Needs commerce.customers, which is server.`]}}]},{id:`content`,packageName:`@happyvertical/smrt-content`,version:`0.55.11`,description:`Content processing module for SMRT framework - handles documents, web content, and media`,models:[{id:`@happyvertical/smrt-content:Article`,name:`Article`,collection:`contents`,extends:`@happyvertical/smrt-content:Content`,description:`Article content type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`,`options?: object`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!1},{id:`@happyvertical/smrt-content:Content`,name:`Content`,collection:`contents`,description:`Structured content object with metadata and body text`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`}],rest:[{method:`GET`,path:`/contents`},{method:`GET`,path:`/contents/[id]`},{method:`POST`,path:`/contents`},{method:`PATCH`,path:`/contents/[id]`},{method:`DELETE`,path:`/contents/[id]`},{method:`POST`,path:`/contents/[id]/fact-audit/repair`},{method:`POST`,path:`/contents/[id]/fact-audit/evidence/repair`},{method:`POST`,path:`/contents/[id]/fact-audit/claims/recheck`},{method:`PUT`,path:`/contents/[id]/fact-audit/evidence/status`},{method:`GET`,path:`/contents/[id]/fact-audit`},{method:`GET`,path:`/contents/[id]/facts`},{method:`PUT`,path:`/contents/[id]/facts`},{method:`GET`,path:`/contents/[id]/reviews`},{method:`GET`,path:`/contents/[id]/governance`},{method:`GET`,path:`/contents/[id]/review-profiles`},{method:`GET`,path:`/contents/[id]/review-profiles/[profileKey]`},{method:`GET`,path:`/contents/[id]/transparency`},{method:`GET`,path:`/contents/[id]/transparency/preview`},{method:`POST`,path:`/contents/[id]/reviews`},{method:`GET`,path:`/contents/[id]/corrections`},{method:`POST`,path:`/contents/[id]/corrections`},{method:`GET`,path:`/contents/[id]/versions`},{method:`POST`,path:`/contents/[id]/versions`}],mcp:[{operation:`create`,name:`content_create`},{operation:`get`,name:`content_get`},{operation:`list`,name:`content_list`},{operation:`update`,name:`content_update`}],cli:[{operation:`addAsset`,name:`content_addAsset`},{operation:`addFact`,name:`content_addFact`},{operation:`addReference`,name:`content_addReference`},{operation:`browseFacts`,name:`content_browseFacts`},{operation:`create`,name:`content_create`},{operation:`createVersion`,name:`content_createVersion`},{operation:`delete`,name:`content_delete`},{operation:`evaluateReviewProfile`,name:`content_evaluateReviewProfile`},{operation:`evaluateReviewProfileAction`,name:`content_evaluateReviewProfileAction`},{operation:`generateThumbnail`,name:`content_generateThumbnail`},{operation:`get`,name:`content_get`},{operation:`getAncestorPaths`,name:`content_getAncestorPaths`},{operation:`getAssetIds`,name:`content_getAssetIds`},{operation:`getAssets`,name:`content_getAssets`},{operation:`getCategorySegments`,name:`content_getCategorySegments`},{operation:`getCorrections`,name:`content_getCorrections`},{operation:`getFactAuditState`,name:`content_getFactAuditState`},{operation:`getFactAuditStateAction`,name:`content_getFactAuditStateAction`},{operation:`getFactLinks`,name:`content_getFactLinks`},{operation:`getFacts`,name:`content_getFacts`},{operation:`getFactsState`,name:`content_getFactsState`},{operation:`getGovernanceState`,name:`content_getGovernanceState`},{operation:`getGovernanceStateAction`,name:`content_getGovernanceStateAction`},{operation:`getMetadata`,name:`content_getMetadata`},{operation:`getParentCategory`,name:`content_getParentCategory`},{operation:`getPublishedTransparency`,name:`content_getPublishedTransparency`},{operation:`getPublishedTransparencyAction`,name:`content_getPublishedTransparencyAction`},{operation:`getReferenceDrift`,name:`content_getReferenceDrift`},{operation:`getReferenceEdges`,name:`content_getReferenceEdges`},{operation:`getReferences`,name:`content_getReferences`},{operation:`getReviewRequirements`,name:`content_getReviewRequirements`},{operation:`getReviews`,name:`content_getReviews`},{operation:`getRootCategory`,name:`content_getRootCategory`},{operation:`getThumbnail`,name:`content_getThumbnail`},{operation:`getVersions`,name:`content_getVersions`},{operation:`isGoverned`,name:`content_isGoverned`},{operation:`isInCategory`,name:`content_isInCategory`},{operation:`isReadyForReviewProfile`,name:`content_isReadyForReviewProfile`},{operation:`issueCorrection`,name:`content_issueCorrection`},{operation:`issueCorrectionAction`,name:`content_issueCorrectionAction`},{operation:`list`,name:`content_list`},{operation:`listCorrections`,name:`content_listCorrections`},{operation:`listReviewProfilesAction`,name:`content_listReviewProfilesAction`},{operation:`listReviews`,name:`content_listReviews`},{operation:`listVersions`,name:`content_listVersions`},{operation:`loadReferences`,name:`content_loadReferences`},{operation:`mutateVersionAction`,name:`content_mutateVersionAction`},{operation:`previewTransparency`,name:`content_previewTransparency`},{operation:`previewTransparencyAction`,name:`content_previewTransparencyAction`},{operation:`recheckFactClaims`,name:`content_recheckFactClaims`},{operation:`recheckFactClaimsAction`,name:`content_recheckFactClaimsAction`},{operation:`removeAsset`,name:`content_removeAsset`},{operation:`removeFact`,name:`content_removeFact`},{operation:`removeReference`,name:`content_removeReference`},{operation:`repairFactAudit`,name:`content_repairFactAudit`},{operation:`repairFactAuditAction`,name:`content_repairFactAuditAction`},{operation:`repairFactEvidence`,name:`content_repairFactEvidence`},{operation:`repairFactEvidenceAction`,name:`content_repairFactEvidenceAction`},{operation:`resolveGovernance`,name:`content_resolveGovernance`},{operation:`restoreFromVersion`,name:`content_restoreFromVersion`},{operation:`reviewFacts`,name:`content_reviewFacts`},{operation:`reviewSafety`,name:`content_reviewSafety`},{operation:`runReview`,name:`content_runReview`},{operation:`runReviewAction`,name:`content_runReviewAction`},{operation:`setMetadata`,name:`content_setMetadata`},{operation:`setThumbnail`,name:`content_setThumbnail`},{operation:`syncFacts`,name:`content_syncFacts`},{operation:`syncFactsState`,name:`content_syncFactsState`},{operation:`update`,name:`content_update`},{operation:`updateFactEvidenceStatus`,name:`content_updateFactEvidenceStatus`},{operation:`updateFactEvidenceStatusAction`,name:`content_updateFactEvidenceStatusAction`},{operation:`updateMetadata`,name:`content_updateMetadata`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`,`options?: object`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!0},{id:`@happyvertical/smrt-content:ContentAsset`,name:`ContentAsset`,collection:`contentassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`contentId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`relationship`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-content:Content`],exposed:!1},{id:`@happyvertical/smrt-content:ContentContribution`,name:`ContentContribution`,collection:`contentcontributions`,display:{label:`title`},fields:[{name:`contributorId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:ContentContributor`},{name:`contributionTypeKey`,type:`text`,required:!0},{name:`status`,type:`text`,required:!1,default:`submitted`,enum:[`submitted`,`quarantined`,`needs_changes`,`approved`,`promoted`,`rejected`,`withdrawn`]},{name:`intakeDecision`,type:`text`,required:!1,default:`accepted`,enum:[`accepted`,`quarantined`,`rejected`]},{name:`channel`,type:`text`,required:!1,default:`web`,enum:[`web`,`email`]},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`contributorEmail`,type:`text`,required:!1},{name:`contributorName`,type:`text`,required:!1},{name:`threadKey`,type:`text`,required:!1},{name:`sourceMessageId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`editorNotes`,type:`text`,required:!1},{name:`promotedContentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-content:Content`},{name:`revisionCount`,type:`integer`,required:!0,default:0},{name:`approvedAt`,type:`datetime`,required:!1},{name:`promotedAt`,type:`datetime`,required:!1},{name:`rejectedAt`,type:`datetime`,required:!1},{name:`withdrawnAt`,type:`datetime`,required:!1},{name:`requestedChangesAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcontributions`},{method:`GET`,path:`/contentcontributions/[id]`},{method:`POST`,path:`/contentcontributions`},{method:`PATCH`,path:`/contentcontributions/[id]`},{method:`DELETE`,path:`/contentcontributions/[id]`},{method:`POST`,path:`/contentcontributions/[id]/revisions`},{method:`POST`,path:`/contentcontributions/[id]/request-changes`},{method:`POST`,path:`/contentcontributions/[id]/reject`},{method:`POST`,path:`/contentcontributions/[id]/withdraw`},{method:`POST`,path:`/contentcontributions/[id]/approve`},{method:`POST`,path:`/contentcontributions/[id]/promote`},{method:`GET`,path:`/contentcontributions/types`},{method:`GET`,path:`/contentcontributions/by-contributor`},{method:`GET`,path:`/contentcontributions/inbox`},{method:`POST`,path:`/contentcontributions/submit`},{method:`POST`,path:`/contentcontributions/ingest-email`}],mcp:[{operation:`create`,name:`contentcontribution_create`},{operation:`get`,name:`contentcontribution_get`},{operation:`list`,name:`contentcontribution_list`},{operation:`update`,name:`contentcontribution_update`}],cli:[{operation:`appendRevisionAction`,name:`contentcontribution_appendRevisionAction`},{operation:`approveAction`,name:`contentcontribution_approveAction`},{operation:`create`,name:`contentcontribution_create`},{operation:`delete`,name:`contentcontribution_delete`},{operation:`get`,name:`contentcontribution_get`},{operation:`getAttachments`,name:`contentcontribution_getAttachments`},{operation:`getContributor`,name:`contentcontribution_getContributor`},{operation:`getLatestRevision`,name:`contentcontribution_getLatestRevision`},{operation:`getMetadata`,name:`contentcontribution_getMetadata`},{operation:`getRevisions`,name:`contentcontribution_getRevisions`},{operation:`list`,name:`contentcontribution_list`},{operation:`promoteAction`,name:`contentcontribution_promoteAction`},{operation:`rejectAction`,name:`contentcontribution_rejectAction`},{operation:`requestChangesAction`,name:`contentcontribution_requestChangesAction`},{operation:`resolveContributionType`,name:`contentcontribution_resolveContributionType`},{operation:`setMetadata`,name:`contentcontribution_setMetadata`},{operation:`update`,name:`contentcontribution_update`},{operation:`withdrawAction`,name:`contentcontribution_withdrawAction`}],methods:[{name:`appendRevisionAction`,async:!0,parameters:[`options?: AppendContentContributionRevisionOptions`],returnType:`any`,aiCallable:!1},{name:`approveAction`,async:!0,parameters:[`options?: ApproveContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`getAttachments`,async:!0,parameters:[],returnType:`Promise<ContentContributionAttachment[]>`,aiCallable:!1},{name:`getContributionTypesAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getContributor`,async:!0,parameters:[],returnType:`Promise<ContentContributor | null>`,aiCallable:!1},{name:`getLatestRevision`,async:!0,parameters:[],returnType:`Promise<ContentContributionRevision | null>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getRevisions`,async:!0,parameters:[],returnType:`Promise<ContentContributionRevision[]>`,aiCallable:!1},{name:`ingestEmailContribution`,async:!0,parameters:[`options: IngestEmailContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`listForContributor`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listInboxAction`,async:!0,parameters:[`options?: object`],returnType:`Promise<ContentContribution[]>`,aiCallable:!1},{name:`promoteAction`,async:!0,parameters:[`options?: PromoteContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`rejectAction`,async:!0,parameters:[`options?: RejectContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`requestChangesAction`,async:!0,parameters:[`options?: RequestChangesContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`resolveContributionType`,async:!0,parameters:[],returnType:`Promise<ContentContributionTypeDefinition | null>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`submitWebContribution`,async:!0,parameters:[`options: SubmitWebContentContributionOptions`],returnType:`any`,aiCallable:!1},{name:`withdrawAction`,async:!0,parameters:[`options?: WithdrawContentContributionOptions`],returnType:`any`,aiCallable:!1}],references:[`@happyvertical/smrt-content:Content`,`@happyvertical/smrt-content:ContentContributor`,`@happyvertical/smrt-messages:Message`],exposed:!0},{id:`@happyvertical/smrt-content:ContentContributionAttachment`,name:`ContentContributionAttachment`,collection:`contentcontributionattachments`,fields:[{name:`contributionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:ContentContribution`},{name:`revisionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-content:ContentContributionRevision`},{name:`filename`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`fileKey`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`channel`,type:`text`,required:!1,default:`web`,enum:[`web`,`email`]},{name:`promotedAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcontributionattachments`},{method:`GET`,path:`/contentcontributionattachments/[id]`},{method:`POST`,path:`/contentcontributionattachments`},{method:`PATCH`,path:`/contentcontributionattachments/[id]`},{method:`DELETE`,path:`/contentcontributionattachments/[id]`},{method:`POST`,path:`/contentcontributionattachments/listForContribution`},{method:`POST`,path:`/contentcontributionattachments/listForRevision`}],mcp:[{operation:`create`,name:`contentcontributionattachment_create`},{operation:`delete`,name:`contentcontributionattachment_delete`},{operation:`get`,name:`contentcontributionattachment_get`},{operation:`list`,name:`contentcontributionattachment_list`},{operation:`update`,name:`contentcontributionattachment_update`},{operation:`listForContribution`,name:`contentcontributionattachmentcollection_listforcontribution`},{operation:`listForRevision`,name:`contentcontributionattachmentcollection_listforrevision`}],cli:[{operation:`create`,name:`contentcontributionattachment_create`},{operation:`delete`,name:`contentcontributionattachment_delete`},{operation:`get`,name:`contentcontributionattachment_get`},{operation:`getMetadata`,name:`contentcontributionattachment_getMetadata`},{operation:`list`,name:`contentcontributionattachment_list`},{operation:`update`,name:`contentcontributionattachment_update`},{operation:`listForContribution`,name:`contentcontributionattachmentcollection_listForContribution`},{operation:`listForRevision`,name:`contentcontributionattachmentcollection_listForRevision`}],methods:[{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`listForContribution`,async:!0,parameters:[`contributionId: string`],returnType:`Promise<ContentContributionAttachment[]>`,aiCallable:!0},{name:`listForRevision`,async:!0,parameters:[`revisionId: string`],returnType:`Promise<ContentContributionAttachment[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-content:ContentContribution`,`@happyvertical/smrt-content:ContentContributionRevision`],exposed:!0},{id:`@happyvertical/smrt-content:ContentContributionRevision`,name:`ContentContributionRevision`,collection:`contentcontributionrevisions`,display:{label:`title`},fields:[{name:`contributionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:ContentContribution`},{name:`revisionNumber`,type:`integer`,required:!0,default:1},{name:`channel`,type:`text`,required:!1,default:`web`,enum:[`web`,`email`]},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`sourceMessageId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`sourceThreadKey`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcontributionrevisions`},{method:`GET`,path:`/contentcontributionrevisions/[id]`},{method:`POST`,path:`/contentcontributionrevisions`},{method:`PATCH`,path:`/contentcontributionrevisions/[id]`},{method:`DELETE`,path:`/contentcontributionrevisions/[id]`},{method:`POST`,path:`/contentcontributionrevisions/listForContribution`},{method:`POST`,path:`/contentcontributionrevisions/getLatestForContribution`}],mcp:[{operation:`create`,name:`contentcontributionrevision_create`},{operation:`delete`,name:`contentcontributionrevision_delete`},{operation:`get`,name:`contentcontributionrevision_get`},{operation:`list`,name:`contentcontributionrevision_list`},{operation:`update`,name:`contentcontributionrevision_update`},{operation:`getLatestForContribution`,name:`contentcontributionrevisioncollection_getlatestforcontribution`},{operation:`listForContribution`,name:`contentcontributionrevisioncollection_listforcontribution`}],cli:[{operation:`create`,name:`contentcontributionrevision_create`},{operation:`delete`,name:`contentcontributionrevision_delete`},{operation:`get`,name:`contentcontributionrevision_get`},{operation:`getMetadata`,name:`contentcontributionrevision_getMetadata`},{operation:`list`,name:`contentcontributionrevision_list`},{operation:`update`,name:`contentcontributionrevision_update`},{operation:`getLatestForContribution`,name:`contentcontributionrevisioncollection_getLatestForContribution`},{operation:`listForContribution`,name:`contentcontributionrevisioncollection_listForContribution`}],methods:[{name:`getLatestForContribution`,async:!0,parameters:[`contributionId: string`],returnType:`Promise<ContentContributionRevision | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`listForContribution`,async:!0,parameters:[`contributionId: string`],returnType:`Promise<ContentContributionRevision[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:ContentContribution`,`@happyvertical/smrt-messages:Message`],exposed:!0},{id:`@happyvertical/smrt-content:ContentContributionType`,name:`ContentContributionType`,collection:`contentcontributiontypes`,display:{label:`label`},fields:[{name:`key`,type:`text`,required:!0},{name:`label`,type:`text`,required:!1},{name:`enabled`,type:`boolean`,required:!0,default:!0},{name:`allowedChannels`,type:`text`,required:!1},{name:`allowText`,type:`boolean`,required:!0,default:!0},{name:`allowFiles`,type:`boolean`,required:!0,default:!1},{name:`allowEmptyText`,type:`boolean`,required:!0,default:!1},{name:`intakeRules`,type:`text`,required:!1},{name:`promotion`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcontributiontypes`},{method:`GET`,path:`/contentcontributiontypes/[id]`},{method:`POST`,path:`/contentcontributiontypes`},{method:`PATCH`,path:`/contentcontributiontypes/[id]`},{method:`DELETE`,path:`/contentcontributiontypes/[id]`},{method:`POST`,path:`/contentcontributiontypes/getByKey`}],mcp:[{operation:`create`,name:`contentcontributiontype_create`},{operation:`delete`,name:`contentcontributiontype_delete`},{operation:`get`,name:`contentcontributiontype_get`},{operation:`list`,name:`contentcontributiontype_list`},{operation:`update`,name:`contentcontributiontype_update`},{operation:`getByKey`,name:`contentcontributiontypecollection_getbykey`}],cli:[{operation:`create`,name:`contentcontributiontype_create`},{operation:`delete`,name:`contentcontributiontype_delete`},{operation:`get`,name:`contentcontributiontype_get`},{operation:`getAllowedChannels`,name:`contentcontributiontype_getAllowedChannels`},{operation:`getIntakeRules`,name:`contentcontributiontype_getIntakeRules`},{operation:`getMetadata`,name:`contentcontributiontype_getMetadata`},{operation:`getPromotion`,name:`contentcontributiontype_getPromotion`},{operation:`list`,name:`contentcontributiontype_list`},{operation:`setAllowedChannels`,name:`contentcontributiontype_setAllowedChannels`},{operation:`setIntakeRules`,name:`contentcontributiontype_setIntakeRules`},{operation:`setMetadata`,name:`contentcontributiontype_setMetadata`},{operation:`setPromotion`,name:`contentcontributiontype_setPromotion`},{operation:`toDefinition`,name:`contentcontributiontype_toDefinition`},{operation:`update`,name:`contentcontributiontype_update`},{operation:`getByKey`,name:`contentcontributiontypecollection_getByKey`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`getAllowedChannels`,async:!1,parameters:[],returnType:`ContentContributionChannel[]`,aiCallable:!1},{name:`getByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<ContentContributionType | null>`,aiCallable:!0},{name:`getIntakeRules`,async:!1,parameters:[],returnType:`ContentContributionIntakeRules`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPromotion`,async:!1,parameters:[],returnType:`ContentContributionPromotionMapping`,aiCallable:!1},{name:`setAllowedChannels`,async:!1,parameters:[`channels: ContentContributionChannel[]`],returnType:`void`,aiCallable:!1},{name:`setIntakeRules`,async:!1,parameters:[`rules: ContentContributionIntakeRules`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setPromotion`,async:!1,parameters:[`promotion: ContentContributionPromotionMapping`],returnType:`void`,aiCallable:!1},{name:`toDefinition`,async:!1,parameters:[],returnType:`ContentContributionTypeDefinition`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:ContentContributor`,name:`ContentContributor`,collection:`contentcontributors`,display:{label:`name`},fields:[{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`email`,type:`text`,required:!0},{name:`name`,type:`text`,required:!1},{name:`trustLevel`,type:`text`,required:!1,default:`standard`,enum:[`standard`,`trusted`,`blocked`]},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcontributors`},{method:`GET`,path:`/contentcontributors/[id]`},{method:`POST`,path:`/contentcontributors`},{method:`PATCH`,path:`/contentcontributors/[id]`},{method:`DELETE`,path:`/contentcontributors/[id]`},{method:`POST`,path:`/contentcontributors/getByEmail`},{method:`POST`,path:`/contentcontributors/getByProfileId`},{method:`POST`,path:`/contentcontributors/findOrCreateByEmail`}],mcp:[{operation:`create`,name:`contentcontributor_create`},{operation:`delete`,name:`contentcontributor_delete`},{operation:`get`,name:`contentcontributor_get`},{operation:`list`,name:`contentcontributor_list`},{operation:`update`,name:`contentcontributor_update`},{operation:`findOrCreateByEmail`,name:`contentcontributorcollection_findorcreatebyemail`},{operation:`getByEmail`,name:`contentcontributorcollection_getbyemail`},{operation:`getByProfileId`,name:`contentcontributorcollection_getbyprofileid`}],cli:[{operation:`create`,name:`contentcontributor_create`},{operation:`delete`,name:`contentcontributor_delete`},{operation:`get`,name:`contentcontributor_get`},{operation:`getMetadata`,name:`contentcontributor_getMetadata`},{operation:`list`,name:`contentcontributor_list`},{operation:`setMetadata`,name:`contentcontributor_setMetadata`},{operation:`update`,name:`contentcontributor_update`},{operation:`findOrCreateByEmail`,name:`contentcontributorcollection_findOrCreateByEmail`},{operation:`getByEmail`,name:`contentcontributorcollection_getByEmail`},{operation:`getByProfileId`,name:`contentcontributorcollection_getByProfileId`}],methods:[{name:`findOrCreateByEmail`,async:!0,parameters:[`options: object`],returnType:`Promise<ContentContributor>`,aiCallable:!0},{name:`getByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<ContentContributor | null>`,aiCallable:!0},{name:`getByProfileId`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ContentContributor | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-content:ContentCorrection`,name:`ContentCorrection`,collection:`contentcorrections`,fields:[{name:`contentId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`contentVersionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-content:ContentVersion`},{name:`factId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-facts:Fact`},{name:`replacementFactId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-facts:Fact`},{name:`correctionType`,type:`text`,required:!1,default:`fact`,enum:[`fact`,`safety`,`copy`,`custom`]},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`published`,`retracted`]},{name:`summary`,type:`text`,required:!1},{name:`incorrectText`,type:`text`,required:!1},{name:`correctedText`,type:`text`,required:!1},{name:`publicNote`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`publishedAt`,type:`datetime`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentcorrections`},{method:`GET`,path:`/contentcorrections/[id]`},{method:`POST`,path:`/contentcorrections`},{method:`PATCH`,path:`/contentcorrections/[id]`},{method:`POST`,path:`/contentcorrections/listForContent`},{method:`POST`,path:`/contentcorrections/getPublishedForContent`}],mcp:[{operation:`create`,name:`contentcorrection_create`},{operation:`get`,name:`contentcorrection_get`},{operation:`list`,name:`contentcorrection_list`},{operation:`update`,name:`contentcorrection_update`},{operation:`getPublishedForContent`,name:`contentcorrectioncollection_getpublishedforcontent`},{operation:`issue`,name:`contentcorrectioncollection_issue`},{operation:`listForContent`,name:`contentcorrectioncollection_listforcontent`}],cli:[{operation:`create`,name:`contentcorrection_create`},{operation:`delete`,name:`contentcorrection_delete`},{operation:`get`,name:`contentcorrection_get`},{operation:`getMetadata`,name:`contentcorrection_getMetadata`},{operation:`list`,name:`contentcorrection_list`},{operation:`update`,name:`contentcorrection_update`},{operation:`getPublishedForContent`,name:`contentcorrectioncollection_getPublishedForContent`},{operation:`issue`,name:`contentcorrectioncollection_issue`},{operation:`listForContent`,name:`contentcorrectioncollection_listForContent`}],methods:[{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPublishedForContent`,async:!0,parameters:[`contentId: string`],returnType:`Promise<ContentCorrection[]>`,aiCallable:!0},{name:`issue`,async:!0,parameters:[`options: any`],returnType:`Promise<ContentCorrection>`,aiCallable:!0},{name:`listForContent`,async:!0,parameters:[`contentId: string`],returnType:`Promise<ContentCorrection[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:Content`,`@happyvertical/smrt-content:ContentVersion`,`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-content:ContentDocument`,name:`ContentDocument`,collection:`contents`,extends:`@happyvertical/smrt-content:Content`,description:`ContentDocument content type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`,`options?: object`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!1},{id:`@happyvertical/smrt-content:ContentFeedSource`,name:`ContentFeedSource`,collection:`contentfeedsources`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0},{name:`feedUrl`,type:`text`,required:!0},{name:`homepageUrl`,type:`text`,required:!1},{name:`format`,type:`text`,required:!1,enum:[`rss`,`atom`]},{name:`status`,type:`text`,required:!0,default:`active`,enum:[`active`,`paused`,`error`,`archived`]},{name:`defaultCategory`,type:`text`,required:!1},{name:`sourceGroup`,type:`text`,required:!1},{name:`pollIntervalMinutes`,type:`integer`,required:!0,default:15},{name:`etag`,type:`text`,required:!1},{name:`lastModified`,type:`text`,required:!1},{name:`lastFetchedAt`,type:`datetime`,required:!1},{name:`lastSuccessAt`,type:`datetime`,required:!1},{name:`lastError`,type:`text`,required:!1},{name:`metadata`,type:`json`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentfeedsources`},{method:`GET`,path:`/contentfeedsources/[id]`},{method:`POST`,path:`/contentfeedsources`},{method:`PATCH`,path:`/contentfeedsources/[id]`},{method:`DELETE`,path:`/contentfeedsources/[id]`},{method:`POST`,path:`/contentfeedsources/findActive`},{method:`POST`,path:`/contentfeedsources/findByStatus`},{method:`POST`,path:`/contentfeedsources/findByFeedUrl`}],mcp:[{operation:`create`,name:`contentfeedsource_create`},{operation:`delete`,name:`contentfeedsource_delete`},{operation:`get`,name:`contentfeedsource_get`},{operation:`list`,name:`contentfeedsource_list`},{operation:`update`,name:`contentfeedsource_update`},{operation:`findActive`,name:`contentfeedsourcecollection_findactive`},{operation:`findByFeedUrl`,name:`contentfeedsourcecollection_findbyfeedurl`},{operation:`findByStatus`,name:`contentfeedsourcecollection_findbystatus`}],cli:[{operation:`create`,name:`contentfeedsource_create`},{operation:`delete`,name:`contentfeedsource_delete`},{operation:`get`,name:`contentfeedsource_get`},{operation:`getMetadata`,name:`contentfeedsource_getMetadata`},{operation:`list`,name:`contentfeedsource_list`},{operation:`markFetchFailed`,name:`contentfeedsource_markFetchFailed`},{operation:`markFetchStarted`,name:`contentfeedsource_markFetchStarted`},{operation:`markFetchSucceeded`,name:`contentfeedsource_markFetchSucceeded`},{operation:`setMetadata`,name:`contentfeedsource_setMetadata`},{operation:`update`,name:`contentfeedsource_update`},{operation:`findActive`,name:`contentfeedsourcecollection_findActive`},{operation:`findByFeedUrl`,name:`contentfeedsourcecollection_findByFeedUrl`},{operation:`findByStatus`,name:`contentfeedsourcecollection_findByStatus`}],methods:[{name:`findActive`,async:!0,parameters:[`tenantId?: string | null`],returnType:`Promise<ContentFeedSource[]>`,aiCallable:!0},{name:`findByFeedUrl`,async:!0,parameters:[`feedUrl: string`,`tenantId?: string | null`],returnType:`Promise<ContentFeedSource | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ContentFeedSourceStatus`,`tenantId?: string | null`],returnType:`Promise<ContentFeedSource[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`markFetchFailed`,async:!1,parameters:[`error: unknown`,`at?: any`],returnType:`void`,aiCallable:!1},{name:`markFetchStarted`,async:!1,parameters:[`at?: any`],returnType:`void`,aiCallable:!1},{name:`markFetchSucceeded`,async:!1,parameters:[`at?: any`,`headers?: object`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:ContentGovernanceAssignment`,name:`ContentGovernanceAssignment`,collection:`contentgovernanceassignments`,display:{label:`label`},fields:[{name:`key`,type:`text`,required:!0},{name:`label`,type:`text`,required:!1},{name:`contentType`,type:`text`,required:!0},{name:`contentVariant`,type:`text`,required:!1},{name:`enabled`,type:`boolean`,required:!0,default:!0},{name:`factLinkingEnabled`,type:`boolean`,required:!0,default:!1},{name:`transparencyEnabled`,type:`boolean`,required:!0,default:!1},{name:`publicationProfileKey`,type:`text`,required:!1},{name:`correctionProfileKey`,type:`text`,required:!1},{name:`enforcePublishReadiness`,type:`boolean`,required:!0,default:!1},{name:`defaultFactRelationship`,type:`text`,required:!1,default:`supports`},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentgovernanceassignments`},{method:`GET`,path:`/contentgovernanceassignments/[id]`},{method:`POST`,path:`/contentgovernanceassignments`},{method:`PATCH`,path:`/contentgovernanceassignments/[id]`},{method:`DELETE`,path:`/contentgovernanceassignments/[id]`},{method:`POST`,path:`/contentgovernanceassignments/getByKey`},{method:`POST`,path:`/contentgovernanceassignments/resolveForContent`}],mcp:[{operation:`create`,name:`contentgovernanceassignment_create`},{operation:`delete`,name:`contentgovernanceassignment_delete`},{operation:`get`,name:`contentgovernanceassignment_get`},{operation:`list`,name:`contentgovernanceassignment_list`},{operation:`update`,name:`contentgovernanceassignment_update`},{operation:`getByKey`,name:`contentgovernanceassignmentcollection_getbykey`},{operation:`resolveForContent`,name:`contentgovernanceassignmentcollection_resolveforcontent`}],cli:[{operation:`create`,name:`contentgovernanceassignment_create`},{operation:`delete`,name:`contentgovernanceassignment_delete`},{operation:`get`,name:`contentgovernanceassignment_get`},{operation:`getMetadata`,name:`contentgovernanceassignment_getMetadata`},{operation:`list`,name:`contentgovernanceassignment_list`},{operation:`toDefinition`,name:`contentgovernanceassignment_toDefinition`},{operation:`update`,name:`contentgovernanceassignment_update`},{operation:`getByKey`,name:`contentgovernanceassignmentcollection_getByKey`},{operation:`resolveForContent`,name:`contentgovernanceassignmentcollection_resolveForContent`}],methods:[{name:`getByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<ContentGovernanceAssignment | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`resolveForContent`,async:!0,parameters:[`options: object`],returnType:`Promise<ContentGovernanceAssignment | null>`,aiCallable:!0},{name:`toDefinition`,async:!1,parameters:[],returnType:`ContentGovernanceAssignmentDefinition`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:ContentGovernancePolicy`,name:`ContentGovernancePolicy`,collection:`contentgovernancepolicies`,display:{label:`label`},fields:[{name:`key`,type:`text`,required:!0},{name:`label`,type:`text`,required:!1},{name:`kind`,type:`text`,required:!1,default:`custom`,enum:[`facts`,`safety`,`custom`]},{name:`instructions`,type:`text`,required:!1},{name:`enabled`,type:`boolean`,required:!0,default:!0},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/contentgovernancepolicies/getByKey`},{method:`GET`,path:`/contentgovernancepolicies`},{method:`GET`,path:`/contentgovernancepolicies/[id]`},{method:`POST`,path:`/contentgovernancepolicies`},{method:`PATCH`,path:`/contentgovernancepolicies/[id]`},{method:`DELETE`,path:`/contentgovernancepolicies/[id]`}],mcp:[{operation:`create`,name:`contentgovernancepolicy_create`},{operation:`delete`,name:`contentgovernancepolicy_delete`},{operation:`get`,name:`contentgovernancepolicy_get`},{operation:`list`,name:`contentgovernancepolicy_list`},{operation:`update`,name:`contentgovernancepolicy_update`},{operation:`getByKey`,name:`contentgovernancepolicycollection_getbykey`}],cli:[{operation:`create`,name:`contentgovernancepolicy_create`},{operation:`delete`,name:`contentgovernancepolicy_delete`},{operation:`get`,name:`contentgovernancepolicy_get`},{operation:`getMetadata`,name:`contentgovernancepolicy_getMetadata`},{operation:`list`,name:`contentgovernancepolicy_list`},{operation:`toDefinition`,name:`contentgovernancepolicy_toDefinition`},{operation:`update`,name:`contentgovernancepolicy_update`},{operation:`getByKey`,name:`contentgovernancepolicycollection_getByKey`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`getByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<ContentGovernancePolicy | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`toDefinition`,async:!1,parameters:[],returnType:`ContentReviewPolicyDefinition`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:ContentGovernanceProfile`,name:`ContentGovernanceProfile`,collection:`contentgovernanceprofiles`,display:{label:`label`},fields:[{name:`key`,type:`text`,required:!0},{name:`label`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`enabled`,type:`boolean`,required:!0,default:!0},{name:`requirements`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentgovernanceprofiles`},{method:`GET`,path:`/contentgovernanceprofiles/[id]`},{method:`POST`,path:`/contentgovernanceprofiles`},{method:`PATCH`,path:`/contentgovernanceprofiles/[id]`},{method:`DELETE`,path:`/contentgovernanceprofiles/[id]`},{method:`POST`,path:`/contentgovernanceprofiles/getByKey`}],mcp:[{operation:`create`,name:`contentgovernanceprofile_create`},{operation:`delete`,name:`contentgovernanceprofile_delete`},{operation:`get`,name:`contentgovernanceprofile_get`},{operation:`list`,name:`contentgovernanceprofile_list`},{operation:`update`,name:`contentgovernanceprofile_update`},{operation:`getByKey`,name:`contentgovernanceprofilecollection_getbykey`}],cli:[{operation:`create`,name:`contentgovernanceprofile_create`},{operation:`delete`,name:`contentgovernanceprofile_delete`},{operation:`get`,name:`contentgovernanceprofile_get`},{operation:`getMetadata`,name:`contentgovernanceprofile_getMetadata`},{operation:`getRequirements`,name:`contentgovernanceprofile_getRequirements`},{operation:`list`,name:`contentgovernanceprofile_list`},{operation:`toDefinition`,name:`contentgovernanceprofile_toDefinition`},{operation:`update`,name:`contentgovernanceprofile_update`},{operation:`getByKey`,name:`contentgovernanceprofilecollection_getByKey`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`getByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<ContentGovernanceProfile | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getRequirements`,async:!1,parameters:[],returnType:`ContentReviewRequirement[]`,aiCallable:!1},{name:`toDefinition`,async:!1,parameters:[],returnType:`ContentGovernanceProfileDefinition`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:ContentReference`,name:`ContentReference`,collection:`contentreferences`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`sourceId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`targetId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`targetVersion`,type:`integer`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentreferences`},{method:`GET`,path:`/contentreferences/[id]`},{method:`POST`,path:`/contentreferences`},{method:`PATCH`,path:`/contentreferences/[id]`},{method:`DELETE`,path:`/contentreferences/[id]`},{method:`POST`,path:`/contentreferences/byRight`},{method:`POST`,path:`/contentreferences/byLeft`},{method:`POST`,path:`/contentreferences/attach`},{method:`POST`,path:`/contentreferences/detach`},{method:`POST`,path:`/contentreferences/setLinks`},{method:`POST`,path:`/contentreferences/getForSource`},{method:`POST`,path:`/contentreferences/getForTarget`},{method:`POST`,path:`/contentreferences/unlink`}],mcp:[{operation:`create`,name:`contentreference_create`},{operation:`delete`,name:`contentreference_delete`},{operation:`get`,name:`contentreference_get`},{operation:`list`,name:`contentreference_list`},{operation:`update`,name:`contentreference_update`},{operation:`attach`,name:`contentreferences_attach`},{operation:`byLeft`,name:`contentreferences_byleft`},{operation:`byRight`,name:`contentreferences_byright`},{operation:`detach`,name:`contentreferences_detach`},{operation:`getForSource`,name:`contentreferences_getforsource`},{operation:`getForTarget`,name:`contentreferences_getfortarget`},{operation:`setLinks`,name:`contentreferences_setlinks`},{operation:`unlink`,name:`contentreferences_unlink`}],cli:[{operation:`create`,name:`contentreference_create`},{operation:`delete`,name:`contentreference_delete`},{operation:`get`,name:`contentreference_get`},{operation:`list`,name:`contentreference_list`},{operation:`update`,name:`contentreference_update`},{operation:`attach`,name:`contentreferences_attach`},{operation:`byLeft`,name:`contentreferences_byLeft`},{operation:`byRight`,name:`contentreferences_byRight`},{operation:`detach`,name:`contentreferences_detach`},{operation:`getForSource`,name:`contentreferences_getForSource`},{operation:`getForTarget`,name:`contentreferences_getForTarget`},{operation:`setLinks`,name:`contentreferences_setLinks`},{operation:`unlink`,name:`contentreferences_unlink`}],methods:[{name:`attach`,async:!0,parameters:[`sourceId: string`,`targetId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<ContentReference>`,aiCallable:!0},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`getForSource`,async:!0,parameters:[`sourceId: string`],returnType:`Promise<ContentReference[]>`,aiCallable:!0},{name:`getForTarget`,async:!0,parameters:[`targetId: string`],returnType:`Promise<ContentReference[]>`,aiCallable:!0},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`unlink`,async:!0,parameters:[`sourceId: string`,`targetId: string`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:Content`],exposed:!0},{id:`@happyvertical/smrt-content:ContentReview`,name:`ContentReview`,collection:`contentreviews`,fields:[{name:`contentId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`contentVersionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-content:ContentVersion`},{name:`kind`,type:`text`,required:!1,default:`custom`,enum:[`facts`,`safety`,`custom`]},{name:`policyKey`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`passed`,`flagged`,`failed`,`waived`]},{name:`summary`,type:`text`,required:!1},{name:`findings`,type:`text`,required:!1},{name:`reviewer`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentreviews`},{method:`GET`,path:`/contentreviews/[id]`},{method:`POST`,path:`/contentreviews`},{method:`PATCH`,path:`/contentreviews/[id]`},{method:`POST`,path:`/contentreviews/listForContent`},{method:`POST`,path:`/contentreviews/getLatestForContent`},{method:`POST`,path:`/contentreviews/listForContentByPolicyKey`},{method:`POST`,path:`/contentreviews/getLatestForPolicyKey`},{method:`POST`,path:`/contentreviews/createFromResult`}],mcp:[{operation:`create`,name:`contentreview_create`},{operation:`get`,name:`contentreview_get`},{operation:`list`,name:`contentreview_list`},{operation:`update`,name:`contentreview_update`},{operation:`createFromResult`,name:`contentreviewcollection_createfromresult`},{operation:`getLatestForContent`,name:`contentreviewcollection_getlatestforcontent`},{operation:`getLatestForPolicyKey`,name:`contentreviewcollection_getlatestforpolicykey`},{operation:`listForContent`,name:`contentreviewcollection_listforcontent`},{operation:`listForContentByPolicyKey`,name:`contentreviewcollection_listforcontentbypolicykey`}],cli:[{operation:`create`,name:`contentreview_create`},{operation:`delete`,name:`contentreview_delete`},{operation:`get`,name:`contentreview_get`},{operation:`getFindings`,name:`contentreview_getFindings`},{operation:`getMetadata`,name:`contentreview_getMetadata`},{operation:`list`,name:`contentreview_list`},{operation:`update`,name:`contentreview_update`},{operation:`createFromResult`,name:`contentreviewcollection_createFromResult`},{operation:`getLatestForContent`,name:`contentreviewcollection_getLatestForContent`},{operation:`getLatestForPolicyKey`,name:`contentreviewcollection_getLatestForPolicyKey`},{operation:`listForContent`,name:`contentreviewcollection_listForContent`},{operation:`listForContentByPolicyKey`,name:`contentreviewcollection_listForContentByPolicyKey`}],methods:[{name:`createFromResult`,async:!0,parameters:[`options: object`],returnType:`Promise<ContentReview>`,aiCallable:!0},{name:`getFindings`,async:!1,parameters:[],returnType:`ContentReviewFinding[]`,aiCallable:!1},{name:`getLatestForContent`,async:!0,parameters:[`contentId: string`,`kind?: ContentReviewKind`],returnType:`Promise<ContentReview | null>`,aiCallable:!0},{name:`getLatestForPolicyKey`,async:!0,parameters:[`contentId: string`,`policyKey: string`],returnType:`Promise<ContentReview | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`listForContent`,async:!0,parameters:[`contentId: string`,`kind?: ContentReviewKind`],returnType:`Promise<ContentReview[]>`,aiCallable:!0},{name:`listForContentByPolicyKey`,async:!0,parameters:[`contentId: string`,`policyKey: string`],returnType:`Promise<ContentReview[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:Content`,`@happyvertical/smrt-content:ContentVersion`],exposed:!0},{id:`@happyvertical/smrt-content:ContentVersion`,name:`ContentVersion`,collection:`contentversions`,display:{label:`title`},fields:[{name:`contentId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`version`,type:`integer`,required:!0,default:1},{name:`kind`,type:`text`,required:!1,default:`manual`,enum:[`manual`,`draft`,`review`,`publication`,`correction`,`auto-generated`]},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`summary`,type:`text`,required:!1},{name:`snapshot`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/contentversions`},{method:`GET`,path:`/contentversions/[id]`},{method:`POST`,path:`/contentversions`},{method:`GET`,path:`/contentversions/[id]/transparency`},{method:`POST`,path:`/contentversions/listForContent`},{method:`POST`,path:`/contentversions/getLatestForContent`},{method:`POST`,path:`/contentversions/getLatestPublishedForContent`},{method:`POST`,path:`/contentversions/getVersion`},{method:`POST`,path:`/contentversions/getNextVersionNumber`}],mcp:[{operation:`create`,name:`contentversion_create`},{operation:`get`,name:`contentversion_get`},{operation:`list`,name:`contentversion_list`},{operation:`createSnapshot`,name:`contentversioncollection_createsnapshot`},{operation:`getLatestForContent`,name:`contentversioncollection_getlatestforcontent`},{operation:`getLatestPublishedForContent`,name:`contentversioncollection_getlatestpublishedforcontent`},{operation:`getNextVersionNumber`,name:`contentversioncollection_getnextversionnumber`},{operation:`getVersion`,name:`contentversioncollection_getversion`},{operation:`listForContent`,name:`contentversioncollection_listforcontent`},{operation:`restoreIntoContent`,name:`contentversioncollection_restoreintocontent`}],cli:[{operation:`create`,name:`contentversion_create`},{operation:`delete`,name:`contentversion_delete`},{operation:`get`,name:`contentversion_get`},{operation:`getMetadata`,name:`contentversion_getMetadata`},{operation:`getSnapshot`,name:`contentversion_getSnapshot`},{operation:`getTransparency`,name:`contentversion_getTransparency`},{operation:`getTransparencyAction`,name:`contentversion_getTransparencyAction`},{operation:`list`,name:`contentversion_list`},{operation:`update`,name:`contentversion_update`},{operation:`createSnapshot`,name:`contentversioncollection_createSnapshot`},{operation:`getLatestForContent`,name:`contentversioncollection_getLatestForContent`},{operation:`getLatestPublishedForContent`,name:`contentversioncollection_getLatestPublishedForContent`},{operation:`getNextVersionNumber`,name:`contentversioncollection_getNextVersionNumber`},{operation:`getVersion`,name:`contentversioncollection_getVersion`},{operation:`listForContent`,name:`contentversioncollection_listForContent`},{operation:`restoreIntoContent`,name:`contentversioncollection_restoreIntoContent`}],methods:[{name:`createSnapshot`,async:!0,parameters:[`content: Content`,`options?: CreateContentVersionOptions`],returnType:`Promise<ContentVersion>`,aiCallable:!0},{name:`getLatestForContent`,async:!0,parameters:[`contentId: string`],returnType:`Promise<ContentVersion | null>`,aiCallable:!0},{name:`getLatestPublishedForContent`,async:!0,parameters:[`contentId: string`],returnType:`Promise<ContentVersion | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`ContentVersionMetadata`,aiCallable:!1},{name:`getNextVersionNumber`,async:!0,parameters:[`contentId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getTransparency`,async:!1,parameters:[],returnType:`any`,aiCallable:!1},{name:`getTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getVersion`,async:!0,parameters:[`contentId: string`,`versionNumber: number`],returnType:`Promise<ContentVersion | null>`,aiCallable:!0},{name:`listForContent`,async:!0,parameters:[`contentId: string`],returnType:`Promise<ContentVersion[]>`,aiCallable:!0},{name:`restoreIntoContent`,async:!0,parameters:[`content: Content`,`versionNumber: number`],returnType:`Promise<Content>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:Content`],exposed:!0},{id:`@happyvertical/smrt-content:Contents`,name:`Contents`,collection:`contents`,description:`Collection for managing Content objects`,fields:[{name:`contentDir`,type:`text`,required:!1},{name:`loaded`,type:`json`,required:!0}],rest:[{method:`POST`,path:`/contents/query`},{method:`GET`,path:`/contents/facts`},{method:`GET`,path:`/contents/by-slug`},{method:`GET`,path:`/contents/governance`},{method:`GET`,path:`/contents/governance/resolve`}],mcp:[],cli:[],methods:[{name:`browseFacts`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Content[]>`,aiCallable:!1},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Content[]>`,aiCallable:!1},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Content[]>`,aiCallable:!1},{name:`generateMissingThumbnails`,async:!0,parameters:[`options: GenerateMissingThumbnailsOptions`],returnType:`Promise<object>`,aiCallable:!1},{name:`getBySlug`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getDb`,async:!1,parameters:[],returnType:`any`,aiCallable:!1},{name:`getGovernanceDefinitionsAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`mirror`,async:!0,parameters:[`options: object`],returnType:`any`,aiCallable:!1},{name:`queryAction`,async:!0,parameters:[`options: unknown`],returnType:`Promise<DataQueryResult>`,aiCallable:!1},{name:`resolveGovernanceAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`syncContentDir`,async:!0,parameters:[`options: object`],returnType:`any`,aiCallable:!1},{name:`writeContentFile`,async:!0,parameters:[`options: object`],returnType:`any`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-content:Mirror`,name:`Mirror`,collection:`contents`,extends:`@happyvertical/smrt-content:Content`,description:`Mirror content type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`feedSourceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-content:ContentFeedSource`},{name:`sourceGuid`,type:`text`,required:!1},{name:`sourceName`,type:`text`,required:!1},{name:`sourceHomepageUrl`,type:`text`,required:!1},{name:`externalUrl`,type:`text`,required:!1},{name:`originalPublishedAt`,type:`datetime`,required:!1},{name:`dedupeKey`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`,`options?: object`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-content:ContentFeedSource`],exposed:!1}],dependencies:[`assets`,`chat`,`facts`,`images`,`messages`,`profiles`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`node:crypto; documents/spider/files/images/ai SDK graph (crawlee, undici, googleapis, native addons); CJS parse error`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-chat`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]}},{id:`events`,packageName:`@happyvertical/smrt-events`,version:`0.55.11`,description:`Hierarchical event management with participant tracking and SMRT framework support`,models:[{id:`@happyvertical/smrt-events:Event`,name:`Event`,collection:`events`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-events:Event`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``,description:`What the event is called.`},{name:`seriesId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-events:EventSeries`,description:`The series this event is part of, if any.`},{name:`typeId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-events:EventType`,description:`The kind of event.`},{name:`placeId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-places:Place`,description:`Where it takes place.`},{name:`description`,type:`text`,required:!1,description:`What the event is about.`},{name:`startDate`,type:`datetime`,required:!1,description:`When it starts.`},{name:`endDate`,type:`datetime`,required:!1,description:`When it ends.`},{name:`allDay`,type:`boolean`,required:!1,default:!1,description:`Whether the event lasts all day.`},{name:`timeZone`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`scheduled`,enum:[`scheduled`,`in_progress`,`completed`,`cancelled`,`postponed`],description:`scheduled, in progress, completed, cancelled or postponed.`},{name:`round`,type:`integer`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/events/getBySeriesId`},{method:`POST`,path:`/events/getByPlace`},{method:`POST`,path:`/events/getByDateRange`},{method:`POST`,path:`/events/getUpcoming`},{method:`POST`,path:`/events/getByStatus`},{method:`POST`,path:`/events/getByType`},{method:`POST`,path:`/events/getRootEvents`},{method:`POST`,path:`/events/getByParent`},{method:`POST`,path:`/events/getEventTree`},{method:`POST`,path:`/events/getAssets`},{method:`POST`,path:`/events/addAsset`},{method:`POST`,path:`/events/removeAsset`},{method:`POST`,path:`/events/search`},{method:`POST`,path:`/events/getInProgress`},{method:`POST`,path:`/events/findByTenant`},{method:`POST`,path:`/events/findGlobal`},{method:`POST`,path:`/events/findWithGlobals`},{method:`GET`,path:`/events`},{method:`GET`,path:`/events/[id]`},{method:`POST`,path:`/events`},{method:`PATCH`,path:`/events/[id]`},{method:`DELETE`,path:`/events/[id]`}],mcp:[{operation:`create`,name:`event_create`},{operation:`get`,name:`event_get`},{operation:`list`,name:`event_list`},{operation:`update`,name:`event_update`},{operation:`addAsset`,name:`eventcollection_addasset`},{operation:`findByTenant`,name:`eventcollection_findbytenant`},{operation:`findGlobal`,name:`eventcollection_findglobal`},{operation:`findWithGlobals`,name:`eventcollection_findwithglobals`},{operation:`getAssets`,name:`eventcollection_getassets`},{operation:`getByDateRange`,name:`eventcollection_getbydaterange`},{operation:`getByParent`,name:`eventcollection_getbyparent`},{operation:`getByPlace`,name:`eventcollection_getbyplace`},{operation:`getBySeriesId`,name:`eventcollection_getbyseriesid`},{operation:`getByStatus`,name:`eventcollection_getbystatus`},{operation:`getByType`,name:`eventcollection_getbytype`},{operation:`getEventTree`,name:`eventcollection_geteventtree`},{operation:`getInProgress`,name:`eventcollection_getinprogress`},{operation:`getRootEvents`,name:`eventcollection_getrootevents`},{operation:`getUpcoming`,name:`eventcollection_getupcoming`},{operation:`removeAsset`,name:`eventcollection_removeasset`},{operation:`search`,name:`eventcollection_search`}],cli:[{operation:`addAsset`,name:`event_addAsset`},{operation:`create`,name:`event_create`},{operation:`delete`,name:`event_delete`},{operation:`get`,name:`event_get`},{operation:`getAncestors`,name:`event_getAncestors`},{operation:`getAssets`,name:`event_getAssets`},{operation:`getChildren`,name:`event_getChildren`},{operation:`getDescendants`,name:`event_getDescendants`},{operation:`getHierarchy`,name:`event_getHierarchy`},{operation:`getMetadata`,name:`event_getMetadata`},{operation:`getParent`,name:`event_getParent`},{operation:`getParticipants`,name:`event_getParticipants`},{operation:`getPlace`,name:`event_getPlace`},{operation:`getRootEvent`,name:`event_getRootEvent`},{operation:`getSeries`,name:`event_getSeries`},{operation:`getType`,name:`event_getType`},{operation:`isInProgress`,name:`event_isInProgress`},{operation:`isRoot`,name:`event_isRoot`},{operation:`list`,name:`event_list`},{operation:`moveTo`,name:`event_moveTo`},{operation:`removeAsset`,name:`event_removeAsset`},{operation:`setMetadata`,name:`event_setMetadata`},{operation:`update`,name:`event_update`},{operation:`updateMetadata`,name:`event_updateMetadata`},{operation:`updateStatus`,name:`event_updateStatus`},{operation:`addAsset`,name:`eventcollection_addAsset`},{operation:`findByTenant`,name:`eventcollection_findByTenant`},{operation:`findGlobal`,name:`eventcollection_findGlobal`},{operation:`findWithGlobals`,name:`eventcollection_findWithGlobals`},{operation:`getAssets`,name:`eventcollection_getAssets`},{operation:`getByDateRange`,name:`eventcollection_getByDateRange`},{operation:`getByParent`,name:`eventcollection_getByParent`},{operation:`getByPlace`,name:`eventcollection_getByPlace`},{operation:`getBySeriesId`,name:`eventcollection_getBySeriesId`},{operation:`getByStatus`,name:`eventcollection_getByStatus`},{operation:`getByType`,name:`eventcollection_getByType`},{operation:`getEventTree`,name:`eventcollection_getEventTree`},{operation:`getInProgress`,name:`eventcollection_getInProgress`},{operation:`getRootEvents`,name:`eventcollection_getRootEvents`},{operation:`getUpcoming`,name:`eventcollection_getUpcoming`},{operation:`removeAsset`,name:`eventcollection_removeAsset`},{operation:`search`,name:`eventcollection_search`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByDateRange`,async:!0,parameters:[`startDate: Date`,`endDate: Date`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getByParent`,async:!0,parameters:[`parentId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getByPlace`,async:!0,parameters:[`placeId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getBySeriesId`,async:!0,parameters:[`seriesId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getByStatus`,async:!0,parameters:[`status: EventStatus`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`typeId: string`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getEventTree`,async:!0,parameters:[`eventId: string`],returnType:`Promise<Event | null>`,aiCallable:!0},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!1},{name:`getInProgress`,async:!0,parameters:[],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getParticipants`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPlace`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getRootEvent`,async:!0,parameters:[],returnType:`Promise<Event>`,aiCallable:!1},{name:`getRootEvents`,async:!0,parameters:[],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`getSeries`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getUpcoming`,async:!0,parameters:[`limit?: number`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`isInProgress`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRoot`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`search`,async:!0,parameters:[`query: string`,`filters?: EventSearchFilters`],returnType:`Promise<Event[]>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateStatus`,async:!0,parameters:[`newStatus: EventStatus`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-events:Event`,`@happyvertical/smrt-events:EventSeries`,`@happyvertical/smrt-events:EventType`,`@happyvertical/smrt-places:Place`],exposed:!0},{id:`@happyvertical/smrt-events:EventAsset`,name:`EventAsset`,collection:`eventassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`eventId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-events:Event`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`relationship`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`eventId: string`,`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`eventId: string`,`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`eventId: string`,`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-events:Event`],exposed:!1},{id:`@happyvertical/smrt-events:EventParticipant`,name:`EventParticipant`,collection:`eventparticipants`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`eventId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-events:Event`,description:`The event the person takes part in.`},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`,description:`The person taking part.`},{name:`role`,type:`text`,required:!1,default:``,description:`What they do there, for example speaker or attendee.`},{name:`placement`,type:`integer`,required:!1},{name:`groupId`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/eventparticipants/byRight`},{method:`POST`,path:`/eventparticipants/byLeft`},{method:`POST`,path:`/eventparticipants/attach`},{method:`POST`,path:`/eventparticipants/detach`},{method:`POST`,path:`/eventparticipants/setLinks`},{method:`POST`,path:`/eventparticipants/getByPlacement`},{method:`POST`,path:`/eventparticipants/getByGroup`},{method:`POST`,path:`/eventparticipants/getHome`},{method:`POST`,path:`/eventparticipants/getAway`},{method:`POST`,path:`/eventparticipants/search`},{method:`POST`,path:`/eventparticipants/getParticipantStats`},{method:`POST`,path:`/eventparticipants/findByTenant`},{method:`POST`,path:`/eventparticipants/findGlobal`},{method:`POST`,path:`/eventparticipants/findWithGlobals`},{method:`GET`,path:`/eventparticipants`},{method:`GET`,path:`/eventparticipants/[id]`},{method:`POST`,path:`/eventparticipants`},{method:`PATCH`,path:`/eventparticipants/[id]`},{method:`DELETE`,path:`/eventparticipants/[id]`}],mcp:[{operation:`create`,name:`eventparticipant_create`},{operation:`get`,name:`eventparticipant_get`},{operation:`list`,name:`eventparticipant_list`},{operation:`update`,name:`eventparticipant_update`},{operation:`attach`,name:`eventparticipantcollection_attach`},{operation:`byLeft`,name:`eventparticipantcollection_byleft`},{operation:`byRight`,name:`eventparticipantcollection_byright`},{operation:`detach`,name:`eventparticipantcollection_detach`},{operation:`findByTenant`,name:`eventparticipantcollection_findbytenant`},{operation:`findGlobal`,name:`eventparticipantcollection_findglobal`},{operation:`findWithGlobals`,name:`eventparticipantcollection_findwithglobals`},{operation:`getAway`,name:`eventparticipantcollection_getaway`},{operation:`getByGroup`,name:`eventparticipantcollection_getbygroup`},{operation:`getByPlacement`,name:`eventparticipantcollection_getbyplacement`},{operation:`getHome`,name:`eventparticipantcollection_gethome`},{operation:`getParticipantStats`,name:`eventparticipantcollection_getparticipantstats`},{operation:`search`,name:`eventparticipantcollection_search`},{operation:`setLinks`,name:`eventparticipantcollection_setlinks`}],cli:[{operation:`create`,name:`eventparticipant_create`},{operation:`delete`,name:`eventparticipant_delete`},{operation:`get`,name:`eventparticipant_get`},{operation:`getEvent`,name:`eventparticipant_getEvent`},{operation:`getGroupParticipants`,name:`eventparticipant_getGroupParticipants`},{operation:`getMetadata`,name:`eventparticipant_getMetadata`},{operation:`getProfile`,name:`eventparticipant_getProfile`},{operation:`isAway`,name:`eventparticipant_isAway`},{operation:`isHome`,name:`eventparticipant_isHome`},{operation:`list`,name:`eventparticipant_list`},{operation:`setMetadata`,name:`eventparticipant_setMetadata`},{operation:`update`,name:`eventparticipant_update`},{operation:`updateMetadata`,name:`eventparticipant_updateMetadata`},{operation:`attach`,name:`eventparticipantcollection_attach`},{operation:`byLeft`,name:`eventparticipantcollection_byLeft`},{operation:`byRight`,name:`eventparticipantcollection_byRight`},{operation:`detach`,name:`eventparticipantcollection_detach`},{operation:`findByTenant`,name:`eventparticipantcollection_findByTenant`},{operation:`findGlobal`,name:`eventparticipantcollection_findGlobal`},{operation:`findWithGlobals`,name:`eventparticipantcollection_findWithGlobals`},{operation:`getAway`,name:`eventparticipantcollection_getAway`},{operation:`getByGroup`,name:`eventparticipantcollection_getByGroup`},{operation:`getByPlacement`,name:`eventparticipantcollection_getByPlacement`},{operation:`getHome`,name:`eventparticipantcollection_getHome`},{operation:`getParticipantStats`,name:`eventparticipantcollection_getParticipantStats`},{operation:`search`,name:`eventparticipantcollection_search`},{operation:`setLinks`,name:`eventparticipantcollection_setLinks`}],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!0},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`getAway`,async:!0,parameters:[`eventId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`getByGroup`,async:!0,parameters:[`eventId: string`,`groupId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`getByPlacement`,async:!0,parameters:[`eventId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`getEvent`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getGroupParticipants`,async:!0,parameters:[],returnType:`Promise<EventParticipant[]>`,aiCallable:!1},{name:`getHome`,async:!0,parameters:[`eventId: string`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParticipantStats`,async:!0,parameters:[`profileId: string`,`eventTypeId?: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getProfile`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`isAway`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isHome`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`search`,async:!0,parameters:[`filters: ParticipantSearchFilters`],returnType:`Promise<EventParticipant[]>`,aiCallable:!0},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-events:Event`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-events:EventSeries`,name:`EventSeries`,collection:`eventserieses`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``,description:`What the series is called.`},{name:`typeId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-events:EventType`,description:`The kind of event in this series.`},{name:`organizerId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`,description:`Who runs the series.`},{name:`description`,type:`text`,required:!1,description:`What the series is about.`},{name:`startDate`,type:`datetime`,required:!1,description:`When the series begins.`},{name:`endDate`,type:`datetime`,required:!1,description:`When the series ends.`},{name:`recurrence`,type:`text`,required:!1,description:`How often it repeats.`},{name:`metadata`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/eventserieses/getByOrganizer`},{method:`POST`,path:`/eventserieses/getActive`},{method:`POST`,path:`/eventserieses/getUpcoming`},{method:`POST`,path:`/eventserieses/getByType`},{method:`POST`,path:`/eventserieses/search`},{method:`POST`,path:`/eventserieses/findByTenant`},{method:`POST`,path:`/eventserieses/findGlobal`},{method:`POST`,path:`/eventserieses/findWithGlobals`},{method:`GET`,path:`/eventserieses`},{method:`GET`,path:`/eventserieses/[id]`},{method:`POST`,path:`/eventserieses`},{method:`PATCH`,path:`/eventserieses/[id]`},{method:`DELETE`,path:`/eventserieses/[id]`}],mcp:[{operation:`create`,name:`eventseries_create`},{operation:`get`,name:`eventseries_get`},{operation:`list`,name:`eventseries_list`},{operation:`update`,name:`eventseries_update`},{operation:`findByTenant`,name:`eventseriescollection_findbytenant`},{operation:`findGlobal`,name:`eventseriescollection_findglobal`},{operation:`findWithGlobals`,name:`eventseriescollection_findwithglobals`},{operation:`getActive`,name:`eventseriescollection_getactive`},{operation:`getByOrganizer`,name:`eventseriescollection_getbyorganizer`},{operation:`getByType`,name:`eventseriescollection_getbytype`},{operation:`getUpcoming`,name:`eventseriescollection_getupcoming`},{operation:`search`,name:`eventseriescollection_search`}],cli:[{operation:`create`,name:`eventseries_create`},{operation:`delete`,name:`eventseries_delete`},{operation:`get`,name:`eventseries_get`},{operation:`getEvents`,name:`eventseries_getEvents`},{operation:`getMetadata`,name:`eventseries_getMetadata`},{operation:`getOccurrences`,name:`eventseries_getOccurrences`},{operation:`getOrganizer`,name:`eventseries_getOrganizer`},{operation:`getRecurrence`,name:`eventseries_getRecurrence`},{operation:`getType`,name:`eventseries_getType`},{operation:`isActive`,name:`eventseries_isActive`},{operation:`list`,name:`eventseries_list`},{operation:`setMetadata`,name:`eventseries_setMetadata`},{operation:`setRecurrence`,name:`eventseries_setRecurrence`},{operation:`update`,name:`eventseries_update`},{operation:`updateMetadata`,name:`eventseries_updateMetadata`},{operation:`findByTenant`,name:`eventseriescollection_findByTenant`},{operation:`findGlobal`,name:`eventseriescollection_findGlobal`},{operation:`findWithGlobals`,name:`eventseriescollection_findWithGlobals`},{operation:`getActive`,name:`eventseriescollection_getActive`},{operation:`getByOrganizer`,name:`eventseriescollection_getByOrganizer`},{operation:`getByType`,name:`eventseriescollection_getByType`},{operation:`getUpcoming`,name:`eventseriescollection_getUpcoming`},{operation:`search`,name:`eventseriescollection_search`}],methods:[{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`getActive`,async:!0,parameters:[],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`getByOrganizer`,async:!0,parameters:[`organizerId: string`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`typeId: string`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`getEvents`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getOccurrences`,async:!1,parameters:[`rangeStart: Date`,`rangeEnd: Date`,`options?: object`],returnType:`Date[]`,aiCallable:!1},{name:`getOrganizer`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getRecurrence`,async:!1,parameters:[],returnType:`RecurrencePattern | null`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getUpcoming`,async:!0,parameters:[`limit?: number`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`filters?: EventSeriesSearchFilters`],returnType:`Promise<EventSeries[]>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setRecurrence`,async:!1,parameters:[`pattern: RecurrencePattern`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-events:EventType`,`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-events:EventType`,name:`EventType`,collection:`eventtypes`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``,description:`What this kind of event is called, for example workshop.`},{name:`description`,type:`text`,required:!1,default:``,description:`What this kind of event is for.`},{name:`schema`,type:`text`,required:!1,default:``},{name:`participantSchema`,type:`text`,required:!1,default:``},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`POST`,path:`/eventtypes/getOrCreate`},{method:`POST`,path:`/eventtypes/getBySlug`},{method:`POST`,path:`/eventtypes/initializeDefaults`},{method:`POST`,path:`/eventtypes/findByTenant`},{method:`POST`,path:`/eventtypes/findGlobal`},{method:`POST`,path:`/eventtypes/findWithGlobals`},{method:`GET`,path:`/eventtypes`},{method:`GET`,path:`/eventtypes/[id]`},{method:`POST`,path:`/eventtypes`},{method:`PATCH`,path:`/eventtypes/[id]`},{method:`DELETE`,path:`/eventtypes/[id]`}],mcp:[{operation:`create`,name:`eventtype_create`},{operation:`get`,name:`eventtype_get`},{operation:`list`,name:`eventtype_list`},{operation:`findByTenant`,name:`eventtypecollection_findbytenant`},{operation:`findGlobal`,name:`eventtypecollection_findglobal`},{operation:`findWithGlobals`,name:`eventtypecollection_findwithglobals`},{operation:`getBySlug`,name:`eventtypecollection_getbyslug`},{operation:`getOrCreate`,name:`eventtypecollection_getorcreate`},{operation:`initializeDefaults`,name:`eventtypecollection_initializedefaults`}],cli:[{operation:`create`,name:`eventtype_create`},{operation:`delete`,name:`eventtype_delete`},{operation:`get`,name:`eventtype_get`},{operation:`getBySlug`,name:`eventtype_getBySlug`},{operation:`getParticipantSchema`,name:`eventtype_getParticipantSchema`},{operation:`getSchema`,name:`eventtype_getSchema`},{operation:`list`,name:`eventtype_list`},{operation:`setParticipantSchema`,name:`eventtype_setParticipantSchema`},{operation:`setSchema`,name:`eventtype_setSchema`},{operation:`update`,name:`eventtype_update`},{operation:`findByTenant`,name:`eventtypecollection_findByTenant`},{operation:`findGlobal`,name:`eventtypecollection_findGlobal`},{operation:`findWithGlobals`,name:`eventtypecollection_findWithGlobals`},{operation:`getBySlug`,name:`eventtypecollection_getBySlug`},{operation:`getOrCreate`,name:`eventtypecollection_getOrCreate`},{operation:`initializeDefaults`,name:`eventtypecollection_initializeDefaults`}],methods:[{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventType[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<EventType[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EventType[]>`,aiCallable:!0},{name:`getBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<EventType | null>`,aiCallable:!0},{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`name?: string`],returnType:`Promise<EventType>`,aiCallable:!0},{name:`getParticipantSchema`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSchema`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initializeDefaults`,async:!0,parameters:[],returnType:`Promise<EventType[]>`,aiCallable:!0},{name:`setParticipantSchema`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setSchema`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0}],dependencies:[`assets`,`places`,`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`,`#3627`],reason:`node:crypto`,via:[`@happyvertical/smrt-places`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-tenancy`]},recipes:[{id:`events.calendar`,label:`Events`,summary:`Schedule events, group them in series and track who takes part.`,synonyms:[`calendar`,`schedule`,`meetings`,`bookings`,`attendees`],models:[`@happyvertical/smrt-events:Event`,`@happyvertical/smrt-events:EventType`,`@happyvertical/smrt-events:EventSeries`,`@happyvertical/smrt-events:EventParticipant`],nav:[{label:`Events`,model:`@happyvertical/smrt-events:Event`,icon:`calendar`,description:`Everything on your calendar, with who and when.`},{label:`Event types`,model:`@happyvertical/smrt-events:EventType`,icon:`tag`,description:`The kinds of events you run, such as workshops or classes.`},{label:`Event series`,model:`@happyvertical/smrt-events:EventSeries`,icon:`repeat`,description:`Repeating schedules, like a class every Tuesday evening.`}],requires:[],section:{id:`calendar`,label:`Calendar`,icon:`calendar`,description:`Events and what is scheduled when.`},options:{"@happyvertical/smrt-events:Event":{fields:{parentId:{visibility:`hidden`},round:{visibility:`hidden`},metadata:{visibility:`hidden`},externalId:{visibility:`hidden`},source:{visibility:`hidden`},timeZone:{visibility:`hidden`}}},"@happyvertical/smrt-events:EventType":{fields:{schema:{visibility:`hidden`},participantSchema:{visibility:`hidden`}}},"@happyvertical/smrt-events:EventSeries":{fields:{metadata:{visibility:`hidden`},externalId:{visibility:`hidden`},source:{visibility:`hidden`}}},"@happyvertical/smrt-events:EventParticipant":{fields:{groupId:{visibility:`hidden`},placement:{visibility:`hidden`},metadata:{visibility:`hidden`},externalId:{visibility:`hidden`},source:{visibility:`hidden`}}}},help:{markdown:`## Overview
476
+
477
+ Events is your calendar. Each event has a time and a type, can belong to a
478
+ series, and lists who takes part.
479
+
480
+ ## Tasks
481
+
482
+ ### Schedule an event
483
+
484
+ 1. Create a new event.
485
+ 2. Enter the **{field:name}**, the **{field:startDate}** and the
486
+ **{field:endDate}**.
487
+ 3. Pick the **{field:typeId}**, and the **{field:seriesId}** if it repeats.
488
+ 4. Add the people taking part with their **{field:role}**.
489
+
490
+ ### Keep it current
491
+
492
+ 1. Update **{field:status}** as the event goes ahead, finishes or is postponed.
493
+ `,fieldRefs:[`endDate`,`name`,`role`,`seriesId`,`startDate`,`status`,`typeId`]},surfaces:[{kind:`route`,path:`/events/meeting`,export:`@happyvertical/smrt-events/svelte#MeetingView`,label:`Meeting view`}],runtime:`both`,demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto; and its package depends on @happyvertical/smrt-places, @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626, #3627).`]}}]},{id:`expenses`,packageName:`@happyvertical/smrt-expenses`,version:`0.55.11`,description:`Expense records for the SMRT framework - reviewed costs against a cost object, deduplicated receipts, and commitment drawdown`,models:[{id:`@happyvertical/smrt-expenses:Expense`,name:`Expense`,collection:`expenses`,description:`A cost someone incurred.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`costObjectType`,type:`text`,required:!1},{name:`costObjectId`,type:`text`,required:!1},{name:`category`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`amount`,type:`integer`,required:!1},{name:`currency`,type:`text`,required:!1},{name:`incurredOn`,type:`text`,required:!1},{name:`recordedAt`,type:`datetime`,required:!1},{name:`recordedByProfileId`,type:`crossPackageRef`,required:!1,related:`PROFILE`},{name:`paidBy`,type:`text`,required:!1,enum:[`company`,`person`]},{name:`paidByProfileId`,type:`crossPackageRef`,required:!1,related:`PROFILE`},{name:`vendorId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:Vendor`},{name:`commitmentId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:Contract`},{name:`commitmentLineId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:ContractLineItem`},{name:`reviewStatus`,type:`text`,required:!1,enum:[`unreviewed`,`reviewed`,`rejected`]},{name:`reviewedByProfileId`,type:`crossPackageRef`,required:!1,related:`PROFILE`},{name:`reviewedAt`,type:`datetime`,required:!1},{name:`reviewNote`,type:`text`,required:!1},{name:`duplicateOfId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-expenses:Expense`},{name:`reimbursable`,type:`boolean`,required:!1},{name:`reimbursedAt`,type:`datetime`,required:!1},{name:`reimbursementReference`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`commitmentPosition`,async:!0,parameters:[`commitmentId: string`,`options?: object`],returnType:`Promise<CommitmentPosition>`,aiCallable:!1},{name:`forCostObject`,async:!0,parameters:[`costObjectType: string`,`costObjectId: string`],returnType:`Promise<Expense[]>`,aiCallable:!1},{name:`getCostObject`,async:!0,parameters:[],returnType:`Promise<T | null>`,aiCallable:!1},{name:`isCountable`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isReimbursed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markDuplicate`,async:!0,parameters:[`input: MarkDuplicateExpenseInput`],returnType:`Promise<this>`,aiCallable:!1},{name:`markReimbursed`,async:!0,parameters:[`input?: MarkReimbursedInput`],returnType:`Promise<this>`,aiCallable:!1},{name:`reject`,async:!0,parameters:[`input: RejectExpenseInput`],returnType:`Promise<this>`,aiCallable:!1},{name:`reopen`,async:!0,parameters:[`input: ReopenExpenseInput`],returnType:`Promise<this>`,aiCallable:!1},{name:`review`,async:!0,parameters:[`input: ReviewExpenseInput`],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`totalsByCurrency`,async:!0,parameters:[`options?: ExpenseTotalsOptions`],returnType:`Promise<CurrencyTotals>`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Contract`,`@happyvertical/smrt-commerce:ContractLineItem`,`@happyvertical/smrt-commerce:Vendor`,`@happyvertical/smrt-expenses:Expense`,`PROFILE`],exposed:!1},{id:`@happyvertical/smrt-expenses:ExpenseReceipt`,name:`ExpenseReceipt`,collection:`expensereceipts`,description:`A receipt file attached to an expense.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`expenseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-expenses:Expense`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`uploadedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`filename`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`byteCount`,type:`integer`,required:!1},{name:`contentSha256`,type:`text`,required:!0}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`_expenseId: string`,`_assetId: string`,`_opts?: JunctionAttachOptions`],returnType:`Promise<ExpenseReceipt>`,aiCallable:!1},{name:`attachReceipt`,async:!0,parameters:[`input: AttachReceiptInput`],returnType:`Promise<ExpenseReceipt>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`findDuplicateReceipts`,async:!0,parameters:[`options?: FindDuplicateReceiptsOptions`],returnType:`Promise<DuplicateReceiptGroup[]>`,aiCallable:!1},{name:`receiptsFor`,async:!0,parameters:[`expenseId: string`],returnType:`Promise<ExpenseReceipt[]>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`_expenseId: string`,`_assetIds: string[]`,`_opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-expenses:Expense`,`@happyvertical/smrt-profiles:Profile`],exposed:!1}],dependencies:[`assets`,`commerce`,`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3624`,`#3626`,`#3627`],reason:`node:crypto`,via:[`@happyvertical/smrt-commerce`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-ledgers`,`@happyvertical/smrt-subscriptions`,`@happyvertical/smrt-tenancy`]}},{id:`facts`,packageName:`@happyvertical/smrt-facts`,version:`0.55.11`,description:`Distributed memory and knowledge management with provenance tracking for SMRT framework`,models:[{id:`@happyvertical/smrt-facts:Fact`,name:`Fact`,collection:`facts`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`textRefined`,type:`text`,required:!0,default:``},{name:`textRaw`,type:`text`,required:!1,default:``},{name:`catalogSearch`,type:`text`,required:!1},{name:`type`,type:`text`,required:!0,default:`assertion`},{name:`status`,type:`text`,required:!0,default:`pending`},{name:`domain`,type:`text`,required:!1,default:``},{name:`accessScope`,type:`text`,required:!1},{name:`previousFactId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-facts:Fact`},{name:`evolutionType`,type:`text`,required:!1,default:`original`},{name:`sourceCount`,type:`integer`,required:!1,default:0},{name:`confidence`,type:`decimal`,required:!1,default:0},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/facts`},{method:`GET`,path:`/facts/[id]`},{method:`POST`,path:`/facts`},{method:`PATCH`,path:`/facts/[id]`},{method:`DELETE`,path:`/facts/[id]`},{method:`POST`,path:`/facts/getActive`},{method:`POST`,path:`/facts/getPending`},{method:`POST`,path:`/facts/getByType`},{method:`POST`,path:`/facts/getByDomain`},{method:`POST`,path:`/facts/getByStatus`},{method:`POST`,path:`/facts/getSuccessors`},{method:`POST`,path:`/facts/findByTenant`},{method:`POST`,path:`/facts/findGlobal`},{method:`POST`,path:`/facts/findWithGlobals`},{method:`POST`,path:`/facts/browseCatalog`},{method:`POST`,path:`/facts/backfillCatalogSearch`},{method:`POST`,path:`/facts/getForContent`},{method:`POST`,path:`/facts/reconcile`},{method:`POST`,path:`/facts/extractCandidatesFromText`},{method:`POST`,path:`/facts/extractArticleClaims`},{method:`POST`,path:`/facts/assessClaimSupport`},{method:`POST`,path:`/facts/branch`},{method:`POST`,path:`/facts/getEvolutionChain`},{method:`POST`,path:`/facts/getLatestInChain`},{method:`POST`,path:`/facts/getEvolutionTree`},{method:`POST`,path:`/facts/recalculateConfidence`},{method:`POST`,path:`/facts/getEntityBriefing`}],mcp:[{operation:`create`,name:`fact_create`},{operation:`get`,name:`fact_get`},{operation:`list`,name:`fact_list`},{operation:`update`,name:`fact_update`},{operation:`assessClaimSupport`,name:`factcollection_assessclaimsupport`},{operation:`backfillCatalogSearch`,name:`factcollection_backfillcatalogsearch`},{operation:`branch`,name:`factcollection_branch`},{operation:`browseCatalog`,name:`factcollection_browsecatalog`},{operation:`extractArticleClaims`,name:`factcollection_extractarticleclaims`},{operation:`extractCandidatesFromText`,name:`factcollection_extractcandidatesfromtext`},{operation:`findByTenant`,name:`factcollection_findbytenant`},{operation:`findGlobal`,name:`factcollection_findglobal`},{operation:`findWithGlobals`,name:`factcollection_findwithglobals`},{operation:`getActive`,name:`factcollection_getactive`},{operation:`getByDomain`,name:`factcollection_getbydomain`},{operation:`getByStatus`,name:`factcollection_getbystatus`},{operation:`getByType`,name:`factcollection_getbytype`},{operation:`getEntityBriefing`,name:`factcollection_getentitybriefing`},{operation:`getEvolutionChain`,name:`factcollection_getevolutionchain`},{operation:`getEvolutionTree`,name:`factcollection_getevolutiontree`},{operation:`getForContent`,name:`factcollection_getforcontent`},{operation:`getLatestInChain`,name:`factcollection_getlatestinchain`},{operation:`getPending`,name:`factcollection_getpending`},{operation:`getSuccessors`,name:`factcollection_getsuccessors`},{operation:`recalculateConfidence`,name:`factcollection_recalculateconfidence`},{operation:`reconcile`,name:`factcollection_reconcile`}],cli:[{operation:`create`,name:`fact_create`},{operation:`delete`,name:`fact_delete`},{operation:`get`,name:`fact_get`},{operation:`getEvolutionType`,name:`fact_getEvolutionType`},{operation:`getMetadata`,name:`fact_getMetadata`},{operation:`getPredecessor`,name:`fact_getPredecessor`},{operation:`getSources`,name:`fact_getSources`},{operation:`getStatus`,name:`fact_getStatus`},{operation:`getSubjects`,name:`fact_getSubjects`},{operation:`getSuccessors`,name:`fact_getSuccessors`},{operation:`getType`,name:`fact_getType`},{operation:`hasPredecessor`,name:`fact_hasPredecessor`},{operation:`isActive`,name:`fact_isActive`},{operation:`isSuperseded`,name:`fact_isSuperseded`},{operation:`list`,name:`fact_list`},{operation:`setMetadata`,name:`fact_setMetadata`},{operation:`update`,name:`fact_update`},{operation:`updateMetadata`,name:`fact_updateMetadata`},{operation:`assessClaimSupport`,name:`factcollection_assessClaimSupport`},{operation:`backfillCatalogSearch`,name:`factcollection_backfillCatalogSearch`},{operation:`branch`,name:`factcollection_branch`},{operation:`browseCatalog`,name:`factcollection_browseCatalog`},{operation:`extractArticleClaims`,name:`factcollection_extractArticleClaims`},{operation:`extractCandidatesFromText`,name:`factcollection_extractCandidatesFromText`},{operation:`findByTenant`,name:`factcollection_findByTenant`},{operation:`findGlobal`,name:`factcollection_findGlobal`},{operation:`findWithGlobals`,name:`factcollection_findWithGlobals`},{operation:`getActive`,name:`factcollection_getActive`},{operation:`getByDomain`,name:`factcollection_getByDomain`},{operation:`getByStatus`,name:`factcollection_getByStatus`},{operation:`getByType`,name:`factcollection_getByType`},{operation:`getEntityBriefing`,name:`factcollection_getEntityBriefing`},{operation:`getEvolutionChain`,name:`factcollection_getEvolutionChain`},{operation:`getEvolutionTree`,name:`factcollection_getEvolutionTree`},{operation:`getForContent`,name:`factcollection_getForContent`},{operation:`getLatestInChain`,name:`factcollection_getLatestInChain`},{operation:`getPending`,name:`factcollection_getPending`},{operation:`getSuccessors`,name:`factcollection_getSuccessors`},{operation:`recalculateConfidence`,name:`factcollection_recalculateConfidence`},{operation:`reconcile`,name:`factcollection_reconcile`}],methods:[{name:`assessClaimSupport`,async:!0,parameters:[`claim: string`,`candidateFacts: FactClaimSupportCandidate[]`,`options?: FactClaimSupportOptions`],returnType:`Promise<FactClaimSupportAssessment>`,aiCallable:!0},{name:`backfillCatalogSearch`,async:!0,parameters:[`batchSize?: any`],returnType:`Promise<object>`,aiCallable:!0},{name:`branch`,async:!0,parameters:[`previousFactId: string`,`data: Partial<FactOptions>`,`evolutionType?: EvolutionType`],returnType:`Promise<Fact>`,aiCallable:!0},{name:`browseCatalog`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`extractArticleClaims`,async:!0,parameters:[`text: string`,`options?: FactExtractionOptions`],returnType:`Promise<FactExtractionCandidate[]>`,aiCallable:!0},{name:`extractCandidatesFromText`,async:!0,parameters:[`text: string`,`options?: FactExtractionOptions`],returnType:`Promise<FactExtractionCandidate[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getActive`,async:!0,parameters:[],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getByDomain`,async:!0,parameters:[`domain: string`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getByStatus`,async:!0,parameters:[`status: FactStatus`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`type: FactType`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getEntityBriefing`,async:!0,parameters:[`entityType: string`,`entityId: string`],returnType:`Promise<EntityBriefing>`,aiCallable:!0},{name:`getEvolutionChain`,async:!0,parameters:[`factId: string`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getEvolutionTree`,async:!0,parameters:[`factId: string`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getEvolutionType`,async:!1,parameters:[],returnType:`EvolutionType`,aiCallable:!1},{name:`getForContent`,async:!0,parameters:[`contentId: string`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getLatestInChain`,async:!0,parameters:[`factId: string`],returnType:`Promise<Fact>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`FactMetadata`,aiCallable:!1},{name:`getPending`,async:!0,parameters:[],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getPredecessor`,async:!0,parameters:[],returnType:`Promise<Fact | null>`,aiCallable:!1},{name:`getSources`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getStatus`,async:!1,parameters:[],returnType:`FactStatus`,aiCallable:!1},{name:`getSubjects`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getSuccessors`,async:!0,parameters:[],returnType:`Promise<Fact[]>`,aiCallable:!0},{name:`getType`,async:!1,parameters:[],returnType:`FactType`,aiCallable:!1},{name:`hasPredecessor`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSuperseded`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recalculateConfidence`,async:!0,parameters:[`factId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`reconcile`,async:!0,parameters:[`options: ReconcileOptions`],returnType:`Promise<ReconcileResult>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: FactMetadata`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Partial<FactMetadata>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-facts:FactContent`,name:`FactContent`,collection:`factcontents`,fields:[{name:`factId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-facts:Fact`},{name:`contentId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-content:Content`},{name:`relationship`,type:`text`,required:!0,default:`extracted_from`},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/factcontents`},{method:`GET`,path:`/factcontents/[id]`},{method:`POST`,path:`/factcontents`},{method:`DELETE`,path:`/factcontents/[id]`},{method:`POST`,path:`/factcontents/byRight`},{method:`POST`,path:`/factcontents/byLeft`},{method:`POST`,path:`/factcontents/attach`},{method:`POST`,path:`/factcontents/detach`},{method:`POST`,path:`/factcontents/setLinks`},{method:`POST`,path:`/factcontents/findByTenant`},{method:`POST`,path:`/factcontents/findGlobal`},{method:`POST`,path:`/factcontents/findWithGlobals`}],mcp:[{operation:`create`,name:`factcontent_create`},{operation:`get`,name:`factcontent_get`},{operation:`list`,name:`factcontent_list`},{operation:`attach`,name:`factcontentcollection_attach`},{operation:`byLeft`,name:`factcontentcollection_byleft`},{operation:`byRight`,name:`factcontentcollection_byright`},{operation:`detach`,name:`factcontentcollection_detach`},{operation:`findByTenant`,name:`factcontentcollection_findbytenant`},{operation:`findGlobal`,name:`factcontentcollection_findglobal`},{operation:`findWithGlobals`,name:`factcontentcollection_findwithglobals`},{operation:`setLinks`,name:`factcontentcollection_setlinks`}],cli:[{operation:`create`,name:`factcontent_create`},{operation:`delete`,name:`factcontent_delete`},{operation:`get`,name:`factcontent_get`},{operation:`getFact`,name:`factcontent_getFact`},{operation:`getMetadata`,name:`factcontent_getMetadata`},{operation:`getRelationship`,name:`factcontent_getRelationship`},{operation:`list`,name:`factcontent_list`},{operation:`setMetadata`,name:`factcontent_setMetadata`},{operation:`update`,name:`factcontent_update`},{operation:`updateMetadata`,name:`factcontent_updateMetadata`},{operation:`attach`,name:`factcontentcollection_attach`},{operation:`byLeft`,name:`factcontentcollection_byLeft`},{operation:`byRight`,name:`factcontentcollection_byRight`},{operation:`detach`,name:`factcontentcollection_detach`},{operation:`findByTenant`,name:`factcontentcollection_findByTenant`},{operation:`findGlobal`,name:`factcontentcollection_findGlobal`},{operation:`findWithGlobals`,name:`factcontentcollection_findWithGlobals`},{operation:`setLinks`,name:`factcontentcollection_setLinks`}],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!0},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!0},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactContent[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<FactContent[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactContent[]>`,aiCallable:!0},{name:`getFact`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getRelationship`,async:!1,parameters:[],returnType:`FactContentRelationship`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-content:Content`,`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-facts:FactEvidence`,name:`FactEvidence`,collection:`factevidences`,fields:[{name:`factId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-facts:Fact`},{name:`evidenceKey`,type:`text`,required:!0,default:``},{name:`status`,type:`text`,required:!0,default:`supports`,enum:[`supports`,`contradicts`,`unclear`,`irrelevant`,`invalid`]},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`sourceUrl`,type:`text`,required:!1,default:``},{name:`sourceTitle`,type:`text`,required:!1,default:``},{name:`quote`,type:`text`,required:!1,default:``},{name:`locator`,type:`text`,required:!1,default:``},{name:`extractionMethod`,type:`text`,required:!1,default:``},{name:`confidence`,type:`decimal`,required:!1,default:0},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/factevidences`},{method:`GET`,path:`/factevidences/[id]`},{method:`POST`,path:`/factevidences`},{method:`DELETE`,path:`/factevidences/[id]`},{method:`POST`,path:`/factevidences/getForFact`},{method:`POST`,path:`/factevidences/getForSource`},{method:`POST`,path:`/factevidences/getForSources`},{method:`POST`,path:`/factevidences/bulkUpdateStatus`},{method:`POST`,path:`/factevidences/replaceGeneratedForSources`},{method:`POST`,path:`/factevidences/upsertEvidence`}],mcp:[{operation:`create`,name:`factevidence_create`},{operation:`get`,name:`factevidence_get`},{operation:`list`,name:`factevidence_list`},{operation:`bulkUpdateStatus`,name:`factevidencecollection_bulkupdatestatus`},{operation:`getForFact`,name:`factevidencecollection_getforfact`},{operation:`getForSource`,name:`factevidencecollection_getforsource`},{operation:`getForSources`,name:`factevidencecollection_getforsources`},{operation:`replaceGeneratedForSources`,name:`factevidencecollection_replacegeneratedforsources`},{operation:`upsertEvidence`,name:`factevidencecollection_upsertevidence`}],cli:[{operation:`create`,name:`factevidence_create`},{operation:`delete`,name:`factevidence_delete`},{operation:`get`,name:`factevidence_get`},{operation:`getMetadata`,name:`factevidence_getMetadata`},{operation:`list`,name:`factevidence_list`},{operation:`setMetadata`,name:`factevidence_setMetadata`},{operation:`update`,name:`factevidence_update`},{operation:`updateMetadata`,name:`factevidence_updateMetadata`},{operation:`bulkUpdateStatus`,name:`factevidencecollection_bulkUpdateStatus`},{operation:`getForFact`,name:`factevidencecollection_getForFact`},{operation:`getForSource`,name:`factevidencecollection_getForSource`},{operation:`getForSources`,name:`factevidencecollection_getForSources`},{operation:`replaceGeneratedForSources`,name:`factevidencecollection_replaceGeneratedForSources`},{operation:`upsertEvidence`,name:`factevidencecollection_upsertEvidence`}],methods:[{name:`bulkUpdateStatus`,async:!0,parameters:[`evidenceIds: string[]`,`status: FactEvidenceStatus`,`options?: object`],returnType:`Promise<FactEvidence[]>`,aiCallable:!0},{name:`getForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<FactEvidence[]>`,aiCallable:!0},{name:`getForSource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`],returnType:`Promise<FactEvidence[]>`,aiCallable:!0},{name:`getForSources`,async:!0,parameters:[`sources: Array<object>`],returnType:`Promise<FactEvidence[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`replaceGeneratedForSources`,async:!0,parameters:[`sources: Array<object>`,`options?: object`],returnType:`Promise<object>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`upsertEvidence`,async:!0,parameters:[`options: FactEvidenceOptions`],returnType:`Promise<FactEvidence>`,aiCallable:!0}],references:[`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-facts:FactSource`,name:`FactSource`,collection:`factsources`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`factId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-facts:Fact`},{name:`sourceType`,type:`text`,required:!1,default:``},{name:`sourceUrl`,type:`text`,required:!1,default:``},{name:`sourceTitle`,type:`text`,required:!1,default:``},{name:`credibility`,type:`decimal`,required:!1,default:0},{name:`extractedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/factsources`},{method:`GET`,path:`/factsources/[id]`},{method:`POST`,path:`/factsources`},{method:`DELETE`,path:`/factsources/[id]`},{method:`POST`,path:`/factsources/getForFact`},{method:`POST`,path:`/factsources/countForFact`},{method:`POST`,path:`/factsources/getByType`},{method:`POST`,path:`/factsources/getHighCredibility`},{method:`POST`,path:`/factsources/getAverageCredibility`},{method:`POST`,path:`/factsources/findByTenant`},{method:`POST`,path:`/factsources/findGlobal`},{method:`POST`,path:`/factsources/findWithGlobals`}],mcp:[{operation:`create`,name:`factsource_create`},{operation:`get`,name:`factsource_get`},{operation:`list`,name:`factsource_list`},{operation:`countForFact`,name:`factsourcecollection_countforfact`},{operation:`findByTenant`,name:`factsourcecollection_findbytenant`},{operation:`findGlobal`,name:`factsourcecollection_findglobal`},{operation:`findWithGlobals`,name:`factsourcecollection_findwithglobals`},{operation:`getAverageCredibility`,name:`factsourcecollection_getaveragecredibility`},{operation:`getByType`,name:`factsourcecollection_getbytype`},{operation:`getForFact`,name:`factsourcecollection_getforfact`},{operation:`getHighCredibility`,name:`factsourcecollection_gethighcredibility`}],cli:[{operation:`create`,name:`factsource_create`},{operation:`delete`,name:`factsource_delete`},{operation:`get`,name:`factsource_get`},{operation:`getFact`,name:`factsource_getFact`},{operation:`getMetadata`,name:`factsource_getMetadata`},{operation:`list`,name:`factsource_list`},{operation:`setMetadata`,name:`factsource_setMetadata`},{operation:`update`,name:`factsource_update`},{operation:`updateMetadata`,name:`factsource_updateMetadata`},{operation:`countForFact`,name:`factsourcecollection_countForFact`},{operation:`findByTenant`,name:`factsourcecollection_findByTenant`},{operation:`findGlobal`,name:`factsourcecollection_findGlobal`},{operation:`findWithGlobals`,name:`factsourcecollection_findWithGlobals`},{operation:`getAverageCredibility`,name:`factsourcecollection_getAverageCredibility`},{operation:`getByType`,name:`factsourcecollection_getByType`},{operation:`getForFact`,name:`factsourcecollection_getForFact`},{operation:`getHighCredibility`,name:`factsourcecollection_getHighCredibility`}],methods:[{name:`countForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`getAverageCredibility`,async:!0,parameters:[`factId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`sourceType: string`],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`getFact`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`getHighCredibility`,async:!0,parameters:[`minCredibility?: number`],returnType:`Promise<FactSource[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-facts:FactSubject`,name:`FactSubject`,collection:`factsubjects`,fields:[{name:`factId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-facts:Fact`},{name:`entityType`,type:`text`,required:!0,default:``},{name:`entityId`,type:`text`,required:!0,default:``},{name:`role`,type:`text`,required:!1,default:`subject`},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/factsubjects`},{method:`GET`,path:`/factsubjects/[id]`},{method:`POST`,path:`/factsubjects`},{method:`DELETE`,path:`/factsubjects/[id]`},{method:`POST`,path:`/factsubjects/getForFact`},{method:`POST`,path:`/factsubjects/getForEntity`},{method:`POST`,path:`/factsubjects/linkEntity`},{method:`POST`,path:`/factsubjects/unlinkEntity`},{method:`POST`,path:`/factsubjects/getByRole`},{method:`POST`,path:`/factsubjects/countForFact`},{method:`POST`,path:`/factsubjects/findByTenant`},{method:`POST`,path:`/factsubjects/findGlobal`},{method:`POST`,path:`/factsubjects/findWithGlobals`}],mcp:[{operation:`create`,name:`factsubject_create`},{operation:`get`,name:`factsubject_get`},{operation:`list`,name:`factsubject_list`},{operation:`countForFact`,name:`factsubjectcollection_countforfact`},{operation:`findByTenant`,name:`factsubjectcollection_findbytenant`},{operation:`findGlobal`,name:`factsubjectcollection_findglobal`},{operation:`findWithGlobals`,name:`factsubjectcollection_findwithglobals`},{operation:`getByRole`,name:`factsubjectcollection_getbyrole`},{operation:`getForEntity`,name:`factsubjectcollection_getforentity`},{operation:`getForFact`,name:`factsubjectcollection_getforfact`},{operation:`linkEntity`,name:`factsubjectcollection_linkentity`},{operation:`unlinkEntity`,name:`factsubjectcollection_unlinkentity`}],cli:[{operation:`create`,name:`factsubject_create`},{operation:`delete`,name:`factsubject_delete`},{operation:`get`,name:`factsubject_get`},{operation:`getFact`,name:`factsubject_getFact`},{operation:`getMetadata`,name:`factsubject_getMetadata`},{operation:`getRole`,name:`factsubject_getRole`},{operation:`list`,name:`factsubject_list`},{operation:`setMetadata`,name:`factsubject_setMetadata`},{operation:`update`,name:`factsubject_update`},{operation:`updateMetadata`,name:`factsubject_updateMetadata`},{operation:`countForFact`,name:`factsubjectcollection_countForFact`},{operation:`findByTenant`,name:`factsubjectcollection_findByTenant`},{operation:`findGlobal`,name:`factsubjectcollection_findGlobal`},{operation:`findWithGlobals`,name:`factsubjectcollection_findWithGlobals`},{operation:`getByRole`,name:`factsubjectcollection_getByRole`},{operation:`getForEntity`,name:`factsubjectcollection_getForEntity`},{operation:`getForFact`,name:`factsubjectcollection_getForFact`},{operation:`linkEntity`,name:`factsubjectcollection_linkEntity`},{operation:`unlinkEntity`,name:`factsubjectcollection_unlinkEntity`}],methods:[{name:`countForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`getByRole`,async:!0,parameters:[`factId: string`,`role: SubjectRole`],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`getFact`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getForEntity`,async:!0,parameters:[`entityType: string`,`entityId: string`],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`getForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<FactSubject[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getRole`,async:!1,parameters:[],returnType:`SubjectRole`,aiCallable:!1},{name:`linkEntity`,async:!0,parameters:[`factId: string`,`entityType: string`,`entityId: string`,`role?: SubjectRole`],returnType:`Promise<FactSubject>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`unlinkEntity`,async:!0,parameters:[`factId: string`,`entityType: string`,`entityId: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-facts:Fact`],exposed:!0},{id:`@happyvertical/smrt-facts:FactTag`,name:`FactTag`,collection:`facttags`,fields:[{name:`factId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-facts:Fact`},{name:`tagSlug`,type:`text`,required:!0,default:``},{name:`metadata`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/facttags`},{method:`GET`,path:`/facttags/[id]`},{method:`POST`,path:`/facttags`},{method:`DELETE`,path:`/facttags/[id]`},{method:`POST`,path:`/facttags/getForFact`},{method:`POST`,path:`/facttags/getForTag`},{method:`POST`,path:`/facttags/addTag`},{method:`POST`,path:`/facttags/removeTag`},{method:`POST`,path:`/facttags/getTagSlugs`},{method:`POST`,path:`/facttags/findByTenant`},{method:`POST`,path:`/facttags/findGlobal`},{method:`POST`,path:`/facttags/findWithGlobals`}],mcp:[{operation:`create`,name:`facttag_create`},{operation:`get`,name:`facttag_get`},{operation:`list`,name:`facttag_list`},{operation:`addTag`,name:`facttagcollection_addtag`},{operation:`findByTenant`,name:`facttagcollection_findbytenant`},{operation:`findGlobal`,name:`facttagcollection_findglobal`},{operation:`findWithGlobals`,name:`facttagcollection_findwithglobals`},{operation:`getForFact`,name:`facttagcollection_getforfact`},{operation:`getForTag`,name:`facttagcollection_getfortag`},{operation:`getTagSlugs`,name:`facttagcollection_gettagslugs`},{operation:`removeTag`,name:`facttagcollection_removetag`}],cli:[{operation:`create`,name:`facttag_create`},{operation:`delete`,name:`facttag_delete`},{operation:`get`,name:`facttag_get`},{operation:`getFact`,name:`facttag_getFact`},{operation:`getMetadata`,name:`facttag_getMetadata`},{operation:`list`,name:`facttag_list`},{operation:`setMetadata`,name:`facttag_setMetadata`},{operation:`update`,name:`facttag_update`},{operation:`updateMetadata`,name:`facttag_updateMetadata`},{operation:`addTag`,name:`facttagcollection_addTag`},{operation:`findByTenant`,name:`facttagcollection_findByTenant`},{operation:`findGlobal`,name:`facttagcollection_findGlobal`},{operation:`findWithGlobals`,name:`facttagcollection_findWithGlobals`},{operation:`getForFact`,name:`facttagcollection_getForFact`},{operation:`getForTag`,name:`facttagcollection_getForTag`},{operation:`getTagSlugs`,name:`facttagcollection_getTagSlugs`},{operation:`removeTag`,name:`facttagcollection_removeTag`}],methods:[{name:`addTag`,async:!0,parameters:[`factId: string`,`tagSlug: string`],returnType:`Promise<FactTag>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactTag[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<FactTag[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<FactTag[]>`,aiCallable:!0},{name:`getFact`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getForFact`,async:!0,parameters:[`factId: string`],returnType:`Promise<FactTag[]>`,aiCallable:!0},{name:`getForTag`,async:!0,parameters:[`tagSlug: string`],returnType:`Promise<FactTag[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getTagSlugs`,async:!0,parameters:[`factId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`removeTag`,async:!0,parameters:[`factId: string`,`tagSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-facts:Fact`],exposed:!0}],dependencies:[`content`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`fields`,packageName:`@happyvertical/smrt-fields`,version:`0.55.11`,description:`Layered field policy store and resolver (defaults, visibility tiers, help text) for SMRT objects`,models:[{id:`@happyvertical/smrt-fields:FieldPolicy`,name:`FieldPolicy`,collection:`fieldpolicies`,display:{label:`label`},fields:[{name:`objectRef`,type:`text`,required:!0,default:``},{name:`fieldName`,type:`text`,required:!0,default:``},{name:`scopeType`,type:`text`,required:!0,default:`app`,enum:[`app`,`tenant`,`user`]},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`userId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`scopeKey`,type:`text`,required:!0},{name:`defaultValue`,type:`text`,required:!1,description:`The value a new record starts with for this field.`},{name:`visibility`,type:`text`,required:!1,enum:[`basic`,`advanced`,`hidden`],description:`Whether the field is always shown, tucked under advanced, or hidden.`},{name:`help`,type:`text`,required:!1,description:`The hint shown beside the field on the form.`},{name:`label`,type:`text`,required:!1,description:`The name people see for the field on forms.`},{name:`displayOrder`,type:`integer`,required:!1,description:`Where the field appears on the form; lower numbers come first.`},{name:`locked`,type:`boolean`,required:!1,description:`Stops individual people from changing this field for themselves.`},{name:`updatedBy`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`}],rest:[{method:`POST`,path:`/fieldpolicies/policy-audit`},{method:`POST`,path:`/fieldpolicies/resolve`},{method:`POST`,path:`/fieldpolicies/editor-state`},{method:`POST`,path:`/fieldpolicies`},{method:`PATCH`,path:`/fieldpolicies/[id]`},{method:`DELETE`,path:`/fieldpolicies/[id]`}],mcp:[],cli:[{operation:`create`,name:`fieldpolicy_create`},{operation:`delete`,name:`fieldpolicy_delete`},{operation:`update`,name:`fieldpolicy_update`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getAppRows`,async:!0,parameters:[`objectRef: string`],returnType:`Promise<Map<string, FieldPolicy>>`,aiCallable:!1},{name:`getDefaultValue`,async:!1,parameters:[],returnType:`unknown`,aiCallable:!1},{name:`getEditorState`,async:!0,parameters:[`options?: object`],returnType:`Promise<FieldPolicyEditorStateResult>`,aiCallable:!1},{name:`getTenantRows`,async:!0,parameters:[`objectRef: string`,`tenantIds: string[]`],returnType:`Promise<Map<string, Map<string, FieldPolicy>>>`,aiCallable:!1},{name:`getUserRows`,async:!0,parameters:[`objectRef: string`,`userId: string`],returnType:`Promise<Map<string, FieldPolicy>>`,aiCallable:!1},{name:`policyAudit`,async:!0,parameters:[`options?: object`],returnType:`Promise<FieldPolicyAuditSnapshot>`,aiCallable:!1},{name:`resolveBatch`,async:!0,parameters:[`options?: object`],returnType:`Promise<FieldPolicyBatchResult>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setDefaultValue`,async:!1,parameters:[`value: unknown`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-fields:FieldPolicySuggestion`,name:`FieldPolicySuggestion`,collection:`fieldpolicysuggestions`,fields:[{name:`objectRef`,type:`text`,required:!0,default:``},{name:`fieldName`,type:`text`,required:!0,default:``},{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`kind`,type:`text`,required:!0,default:`promote`,enum:[`promote`,`default`]},{name:`proposedValue`,type:`text`,required:!1},{name:`evidence`,type:`text`,required:!1},{name:`status`,type:`text`,required:!0,default:`pending`,enum:[`pending`,`accepted`,`dismissed`]},{name:`activeKey`,type:`text`,required:!0},{name:`cooldownUntil`,type:`datetime`,required:!1},{name:`decidedBy`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`decidedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/fieldpolicysuggestions/pending`},{method:`POST`,path:`/fieldpolicysuggestions/accept`},{method:`POST`,path:`/fieldpolicysuggestions/dismiss`}],mcp:[],cli:[],methods:[{name:`acceptSuggestion`,async:!0,parameters:[`options?: object`],returnType:`Promise<AcceptFieldPolicySuggestionResult>`,aiCallable:!1},{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`dismissSuggestion`,async:!0,parameters:[`options?: object`],returnType:`Promise<DismissFieldPolicySuggestionResult>`,aiCallable:!1},{name:`getEvidence`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getProposedValue`,async:!1,parameters:[],returnType:`unknown`,aiCallable:!1},{name:`pendingSuggestions`,async:!0,parameters:[`options?: object`],returnType:`Promise<PendingFieldPolicySuggestionsResult>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setEvidence`,async:!1,parameters:[`evidence: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`toSuggestionData`,async:!1,parameters:[],returnType:`FieldPolicySuggestionData`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-fields:FieldUsageCounter`,name:`FieldUsageCounter`,collection:`fieldusagecounters`,fields:[{name:`objectRef`,type:`text`,required:!0,default:``},{name:`fieldName`,type:`text`,required:!0,default:``},{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`period`,type:`text`,required:!0,default:``},{name:`submissionCount`,type:`integer`,required:!1},{name:`setCount`,type:`integer`,required:!1},{name:`distinctUserCount`,type:`integer`,required:!1},{name:`distinctUserIds`,type:`text`,required:!1},{name:`distinctUsersOverflowed`,type:`boolean`,required:!1},{name:`valueHistogram`,type:`text`,required:!1},{name:`valueHistogramOverflowed`,type:`boolean`,required:!1}],rest:[{method:`POST`,path:`/fieldusagecounters/report`}],mcp:[],cli:[],methods:[{name:`addDistinctUser`,async:!1,parameters:[`userId: string`],returnType:`void`,aiCallable:!1},{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getDistinctUserIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getValueHistogram`,async:!1,parameters:[],returnType:`Record<string, number>`,aiCallable:!1},{name:`isLegacyBucket`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`listWindow`,async:!0,parameters:[`options: object`],returnType:`Promise<FieldUsageCounter[]>`,aiCallable:!1},{name:`recordHistogramSample`,async:!1,parameters:[`key: string`],returnType:`void`,aiCallable:!1},{name:`reportUsage`,async:!0,parameters:[`options?: object`],returnType:`Promise<FieldUsageReportResult>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-fields:FieldUsageReportReceipt`,name:`FieldUsageReportReceipt`,collection:`fieldusagereportreceipts`,description:`Durable daily receipt for one member's contribution to one field.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`userId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`objectRef`,type:`text`,required:!0,default:``},{name:`fieldName`,type:`text`,required:!0,default:``},{name:`period`,type:`text`,required:!0,default:``}],rest:[],mcp:[],cli:[],methods:[{name:`claim`,async:!0,parameters:[`options: object`],returnType:`Promise<boolean>`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!1}],dependencies:[`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3618`,`#3624`,`#3626`],reason:`imports core utils/import-workspace-module (node:url, node:fs, node:path)`,via:[`@happyvertical/smrt-profiles`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]},recipes:[{id:`fields.form-customization`,label:`Form customization`,summary:`Choose what your forms ask for: defaults, labels, hints and which fields are shown.`,synonyms:[`form defaults`,`field defaults`,`customize forms`,`hide fields`,`field visibility`,`field labels`],models:[`@happyvertical/smrt-fields:FieldPolicy`,`@happyvertical/smrt-fields:FieldPolicySuggestion`,`@happyvertical/smrt-fields:FieldUsageCounter`,`@happyvertical/smrt-fields:FieldUsageReportReceipt`],nav:[],requires:[],help:{markdown:`## Overview
494
+
495
+ Form customization lets you decide what the forms in your app ask for. For any
496
+ field you can change the name people see, the hint beside it, the value a new
497
+ record starts with, where it sits on the form, and whether it is always shown,
498
+ tucked under "advanced", or hidden. You can also lock a field so that people
499
+ cannot change it for themselves.
500
+
501
+ Changes layer. The app starts with sensible settings, your organization can
502
+ change them for everyone in it, and each person can then adjust their own view
503
+ unless you locked the field. Resetting a field removes your change and brings
504
+ back whatever sits underneath.
505
+
506
+ ## Tasks
507
+
508
+ ### Change what a field is called
509
+
510
+ 1. Open **Form defaults** from your settings and find the form you want.
511
+ 2. Choose the field and type a new **{field:label}**.
512
+ 3. Save. The new name appears on the form.
513
+
514
+ ### Give people a hint
515
+
516
+ 1. Choose the field in **Form defaults**.
517
+ 2. Write the **{field:help}**, one short sentence that says what to enter.
518
+ 3. Save. The hint now shows beside the field.
519
+
520
+ ### Pre-fill a value
521
+
522
+ 1. Choose the field in **Form defaults**.
523
+ 2. Enter the **{field:defaultValue}** a new record should start with.
524
+ 3. Save. People can still type over it unless the field is locked.
525
+
526
+ ### Tidy a long form
527
+
528
+ 1. Choose a field that most people never need.
529
+ 2. Set its **{field:visibility}** to advanced to tuck it away, or to hidden to
530
+ remove it.
531
+ 3. Save. A field that must always be filled in stays shown unless it also has a
532
+ default value.
533
+
534
+ ### Put fields in a better order
535
+
536
+ 1. Choose a field.
537
+ 2. Set its **{field:displayOrder}**. Lower numbers come first.
538
+ 3. Save, then check the form.
539
+
540
+ ### Keep everyone on the same setting
541
+
542
+ 1. Choose the field in **Form defaults**.
543
+ 2. Turn on **{field:locked}**.
544
+ 3. Save. People can no longer change that field for themselves.
545
+
546
+ ### Undo a change
547
+
548
+ Choose **Reset** on a field to remove your change. Settings from the layers
549
+ below, such as the app's own, come back. Resetting asks you to confirm first.
550
+
551
+ ### Review suggestions
552
+
553
+ When enough people fill in the same value, or keep opening the same advanced
554
+ field, the app suggests a change. Open the suggestions list in **Form defaults**
555
+ and accept or dismiss each one. Nothing changes until you accept.
556
+ `,fieldRefs:[`defaultValue`,`displayOrder`,`help`,`label`,`locked`,`visibility`]},surfaces:[{kind:`settings-panel`,export:`@happyvertical/smrt-fields/svelte#FieldPolicyControlPanel`,label:`Form defaults`}],runtime:`server`,demo:{mode:`server`,reasons:[`The recipe declares runtime "server".`,`Needs a server because its package does not build for a browser: imports core utils/import-workspace-module (node:url, node:fs, node:path); and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3617, #3618, #3624, #3626).`]}}]},{id:`human-resources`,packageName:`@happyvertical/smrt-human-resources`,version:`0.55.11`,description:`HR records for the SMRT framework: who works for an organization, as what, and with what standing — employment with dated terms, and qualifications with expiry`,models:[{id:`@happyvertical/smrt-human-resources:Employment`,name:`Employment`,collection:`employments`,description:`One person's employment with a tenant: the stable record applications and payroll key on. There is one per tenant and profile; a rehire adds an EmploymentTerm to the same row.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`userId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`employerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`employeeNumber`,type:`text`,required:!1},{name:`workerType`,type:`text`,required:!1},{name:`position`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`active`,`on-leave`,`ended`]}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-users:User`],exposed:!1},{id:`@happyvertical/smrt-human-resources:EmploymentChange`,name:`EmploymentChange`,collection:`employmentchanges`,description:`Append-only dated change to an employment, attributed to an actor.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`employmentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:Employment`},{name:`kind`,type:`text`,required:!1,enum:[`hired`,`ended`,`rehired`,`position-changed`,`worker-type-changed`,`leave-started`,`leave-ended`,`login-linked`,`login-unlinked`]},{name:`effectiveOn`,type:`text`,required:!1},{name:`fromValue`,type:`text`,required:!1},{name:`toValue`,type:`text`,required:!1},{name:`note`,type:`text`,required:!1},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-human-resources:Employment`,`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-human-resources:EmploymentTerm`,name:`EmploymentTerm`,collection:`employmentterms`,description:`One continuous period of employment. endedOn is the last day employed (inclusive); null means the term is open. "Employed on a date" is answered from terms, never from Employment.status.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`employmentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:Employment`},{name:`startedOn`,type:`text`,required:!1},{name:`endedOn`,type:`text`,required:!1},{name:`endReason`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-human-resources:Employment`],exposed:!1},{id:`@happyvertical/smrt-human-resources:HeldQualification`,name:`HeldQualification`,collection:`heldqualifications`,description:`A person holds a qualification. employmentId is set when the definition's scope is employment; such a row is revoked when that employment ends.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`qualificationId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:Qualification`},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`employmentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:Employment`},{name:`issuedOn`,type:`text`,required:!1},{name:`expiresOn`,type:`text`,required:!1},{name:`certificateNumber`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`valid`,`expired`,`suspended`,`revoked`]},{name:`verifiedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`verifiedAt`,type:`datetime`,required:!1},{name:`documentAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`renewalOfId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:HeldQualification`}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-human-resources:Employment`,`@happyvertical/smrt-human-resources:HeldQualification`,`@happyvertical/smrt-human-resources:Qualification`,`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-human-resources:HeldQualificationChange`,name:`HeldQualificationChange`,collection:`heldqualificationchanges`,description:`Append-only dated change to a held qualification, attributed to an actor.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`heldQualificationId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-human-resources:HeldQualification`},{name:`kind`,type:`text`,required:!1,enum:[`granted`,`renewed`,`suspended`,`reinstated`,`revoked`,`expired`]},{name:`effectiveOn`,type:`text`,required:!1},{name:`reason`,type:`text`,required:!1},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-human-resources:HeldQualification`,`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-human-resources:Qualification`,name:`Qualification`,collection:`qualifications`,description:`A qualification definition: a managed list per tenant. Other packages gate work by referencing its id (@happyvertical/smrt-human-resources:Qualification).`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`key`,type:`text`,required:!1},{name:`name`,type:`text`,required:!1},{name:`kind`,type:`text`,required:!1,enum:[`ticket`,`certification`,`authorization`,`training`,`restriction`]},{name:`issuingBody`,type:`text`,required:!1},{name:`expires`,type:`boolean`,required:!0,default:!1},{name:`validityMonths`,type:`integer`,required:!1},{name:`scope`,type:`text`,required:!1,enum:[`person`,`employment`]},{name:`isActive`,type:`boolean`,required:!0,default:!0}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[],exposed:!1}],dependencies:[`assets`,`profiles`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`images`,packageName:`@happyvertical/smrt-images`,version:`0.55.11`,description:`Image asset management with AI-powered categorization, search, editing, and metadata extraction for SMRT framework`,models:[{id:`@happyvertical/smrt-images:Image`,name:`Image`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`width`,type:`integer`,required:!1,default:0},{name:`height`,type:`integer`,required:!1,default:0},{name:`alt`,type:`text`,required:!1,default:``}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`},{method:`POST`,path:`/assets/findByTenant`},{method:`POST`,path:`/assets/findGlobal`},{method:`POST`,path:`/assets/findWithGlobals`},{method:`POST`,path:`/assets/getByMinDimensions`},{method:`POST`,path:`/assets/getByMaxDimensions`},{method:`POST`,path:`/assets/getLandscape`},{method:`POST`,path:`/assets/getPortrait`},{method:`POST`,path:`/assets/getSquare`},{method:`POST`,path:`/assets/getMissingAltText`},{method:`POST`,path:`/assets/getHighResolution`},{method:`POST`,path:`/assets/getByAspectRatio`}],mcp:[{operation:`create`,name:`image_create`},{operation:`generateAltText`,name:`image_generatealttext`},{operation:`get`,name:`image_get`},{operation:`list`,name:`image_list`},{operation:`update`,name:`image_update`},{operation:`findByTenant`,name:`imagecollection_findbytenant`},{operation:`findGlobal`,name:`imagecollection_findglobal`},{operation:`findWithGlobals`,name:`imagecollection_findwithglobals`},{operation:`getByAspectRatio`,name:`imagecollection_getbyaspectratio`},{operation:`getByMaxDimensions`,name:`imagecollection_getbymaxdimensions`},{operation:`getByMinDimensions`,name:`imagecollection_getbymindimensions`},{operation:`getHighResolution`,name:`imagecollection_gethighresolution`},{operation:`getLandscape`,name:`imagecollection_getlandscape`},{operation:`getMissingAltText`,name:`imagecollection_getmissingalttext`},{operation:`getPortrait`,name:`imagecollection_getportrait`},{operation:`getSquare`,name:`imagecollection_getsquare`}],cli:[{operation:`associateWith`,name:`image_associateWith`},{operation:`create`,name:`image_create`},{operation:`delete`,name:`image_delete`},{operation:`generateAltText`,name:`image_generateAltText`},{operation:`get`,name:`image_get`},{operation:`getAssociations`,name:`image_getAssociations`},{operation:`getBySlug`,name:`image_getBySlug`},{operation:`getDerivatives`,name:`image_getDerivatives`},{operation:`getExternalRef`,name:`image_getExternalRef`},{operation:`getExternalRefs`,name:`image_getExternalRefs`},{operation:`getMetadata`,name:`image_getMetadata`},{operation:`getSource`,name:`image_getSource`},{operation:`getStatus`,name:`image_getStatus`},{operation:`getTags`,name:`image_getTags`},{operation:`getType`,name:`image_getType`},{operation:`hasTag`,name:`image_hasTag`},{operation:`isHighResolution`,name:`image_isHighResolution`},{operation:`isValidImageFormat`,name:`image_isValidImageFormat`},{operation:`list`,name:`image_list`},{operation:`mergeMetadata`,name:`image_mergeMetadata`},{operation:`setExternalRef`,name:`image_setExternalRef`},{operation:`setMetadata`,name:`image_setMetadata`},{operation:`update`,name:`image_update`},{operation:`findByTenant`,name:`imagecollection_findByTenant`},{operation:`findGlobal`,name:`imagecollection_findGlobal`},{operation:`findWithGlobals`,name:`imagecollection_findWithGlobals`},{operation:`getByAspectRatio`,name:`imagecollection_getByAspectRatio`},{operation:`getByMaxDimensions`,name:`imagecollection_getByMaxDimensions`},{operation:`getByMinDimensions`,name:`imagecollection_getByMinDimensions`},{operation:`getHighResolution`,name:`imagecollection_getHighResolution`},{operation:`getLandscape`,name:`imagecollection_getLandscape`},{operation:`getMissingAltText`,name:`imagecollection_getMissingAltText`},{operation:`getPortrait`,name:`imagecollection_getPortrait`},{operation:`getSquare`,name:`imagecollection_getSquare`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`generateAltText`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getByAspectRatio`,async:!0,parameters:[`minRatio: number`,`maxRatio: number`],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getByMaxDimensions`,async:!0,parameters:[`maxWidth: number`,`maxHeight: number`],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getByMinDimensions`,async:!0,parameters:[`minWidth: number`,`minHeight: number`],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getHighResolution`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getLandscape`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getMissingAltText`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getPortrait`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getSquare`,async:!0,parameters:[],returnType:`Promise<Image[]>`,aiCallable:!0},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isHighResolution`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isValidImageFormat`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`Asset`,`Folder`],exposed:!0}],dependencies:[`assets`,`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`,`#3628`],reason:`sharp, node:fs/promises, node:crypto, resvg native addon`,via:[`@happyvertical/smrt-tenancy`]}},{id:`inventory`,packageName:`@happyvertical/smrt-inventory`,version:`0.55.11`,description:`Multi-location stock tracking for the SMRT framework — Sku, InventoryLocation, StockLevel, StockMovement, and a stock-mutation service`,models:[{id:`@happyvertical/smrt-inventory:InventoryLocation`,name:`InventoryLocation`,collection:`inventorylocations`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`code`,type:`text`,required:!0,default:``,description:`A short code for the place stock is kept, for example MAIN.`},{name:`name`,type:`text`,required:!1,default:``,description:`What you call the place, for example Main warehouse.`},{name:`kind`,type:`text`,required:!1,default:`warehouse`,description:`What sort of place it is, for example a warehouse or a shop floor.`},{name:`placeId`,type:`text`,required:!1,default:``},{name:`active`,type:`boolean`,required:!1,default:!0}],rest:[{method:`POST`,path:`/inventorylocations/findByCode`},{method:`POST`,path:`/inventorylocations/findByKind`},{method:`POST`,path:`/inventorylocations/findByPlace`},{method:`POST`,path:`/inventorylocations/findActive`},{method:`GET`,path:`/inventorylocations`},{method:`GET`,path:`/inventorylocations/[id]`},{method:`POST`,path:`/inventorylocations`},{method:`PATCH`,path:`/inventorylocations/[id]`}],mcp:[{operation:`get`,name:`inventorylocation_get`},{operation:`list`,name:`inventorylocation_list`},{operation:`findActive`,name:`inventorylocationcollection_findactive`},{operation:`findByCode`,name:`inventorylocationcollection_findbycode`},{operation:`findByKind`,name:`inventorylocationcollection_findbykind`},{operation:`findByPlace`,name:`inventorylocationcollection_findbyplace`}],cli:[{operation:`create`,name:`inventorylocation_create`},{operation:`delete`,name:`inventorylocation_delete`},{operation:`get`,name:`inventorylocation_get`},{operation:`list`,name:`inventorylocation_list`},{operation:`update`,name:`inventorylocation_update`},{operation:`findActive`,name:`inventorylocationcollection_findActive`},{operation:`findByCode`,name:`inventorylocationcollection_findByCode`},{operation:`findByKind`,name:`inventorylocationcollection_findByKind`},{operation:`findByPlace`,name:`inventorylocationcollection_findByPlace`}],methods:[{name:`findActive`,async:!0,parameters:[`kind?: InventoryLocationKind`],returnType:`Promise<InventoryLocation[]>`,aiCallable:!0},{name:`findByCode`,async:!0,parameters:[`code: string`],returnType:`Promise<InventoryLocation | null>`,aiCallable:!0},{name:`findByKind`,async:!0,parameters:[`kind: InventoryLocationKind`],returnType:`Promise<InventoryLocation[]>`,aiCallable:!0},{name:`findByPlace`,async:!0,parameters:[`placeId: string`],returnType:`Promise<InventoryLocation[]>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-inventory:StockLevel`,name:`StockLevel`,collection:`stocklevels`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`skuId`,type:`text`,required:!0,default:``,description:`The item being counted.`},{name:`locationId`,type:`text`,required:!0,default:``,description:`Where the stock is kept.`},{name:`state`,type:`text`,required:!0,default:`available`,enum:[`available`,`allocated`,`wip`,`qc_hold`,`damaged`],description:`The state of this stock: available, allocated, wip, qc_hold or damaged.`},{name:`qty`,type:`decimal`,required:!1,description:`How many are on hand.`},{name:`reorderPoint`,type:`decimal`,required:!1},{name:`reorderQuantity`,type:`decimal`,required:!1}],rest:[{method:`POST`,path:`/stocklevels/getLevel`},{method:`POST`,path:`/stocklevels/findBySku`},{method:`POST`,path:`/stocklevels/findByLocation`},{method:`POST`,path:`/stocklevels/findBelowReorderPoint`},{method:`POST`,path:`/stocklevels/totalForSku`},{method:`POST`,path:`/stocklevels/totalForLocation`},{method:`GET`,path:`/stocklevels`},{method:`GET`,path:`/stocklevels/[id]`}],mcp:[{operation:`get`,name:`stocklevel_get`},{operation:`list`,name:`stocklevel_list`},{operation:`findBelowReorderPoint`,name:`stocklevelcollection_findbelowreorderpoint`},{operation:`findByLocation`,name:`stocklevelcollection_findbylocation`},{operation:`findBySku`,name:`stocklevelcollection_findbysku`},{operation:`getLevel`,name:`stocklevelcollection_getlevel`},{operation:`totalForLocation`,name:`stocklevelcollection_totalforlocation`},{operation:`totalForSku`,name:`stocklevelcollection_totalforsku`}],cli:[{operation:`get`,name:`stocklevel_get`},{operation:`list`,name:`stocklevel_list`},{operation:`findBelowReorderPoint`,name:`stocklevelcollection_findBelowReorderPoint`},{operation:`findByLocation`,name:`stocklevelcollection_findByLocation`},{operation:`findBySku`,name:`stocklevelcollection_findBySku`},{operation:`getLevel`,name:`stocklevelcollection_getLevel`},{operation:`totalForLocation`,name:`stocklevelcollection_totalForLocation`},{operation:`totalForSku`,name:`stocklevelcollection_totalForSku`}],methods:[{name:`findBelowReorderPoint`,async:!0,parameters:[`locationId?: string`],returnType:`Promise<StockLevel[]>`,aiCallable:!0},{name:`findByLocation`,async:!0,parameters:[`locationId: string`],returnType:`Promise<StockLevel[]>`,aiCallable:!0},{name:`findBySku`,async:!0,parameters:[`skuId: string`],returnType:`Promise<StockLevel[]>`,aiCallable:!0},{name:`getLevel`,async:!0,parameters:[`skuId: string`,`locationId: string`,`state?: StockState`],returnType:`Promise<StockLevel | null>`,aiCallable:!0},{name:`totalForLocation`,async:!0,parameters:[`locationId: string`,`state?: StockState`],returnType:`Promise<number>`,aiCallable:!0},{name:`totalForSku`,async:!0,parameters:[`skuId: string`,`state?: StockState`],returnType:`Promise<number>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-inventory:StockMovement`,name:`StockMovement`,collection:`stockmovements`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`skuId`,type:`text`,required:!0,default:``,description:`The item that moved.`},{name:`locationId`,type:`text`,required:!0,default:``,description:`The place it moved at.`},{name:`fromState`,type:`text`,required:!1,enum:[`available`,`allocated`,`wip`,`qc_hold`,`damaged`],description:`What it was before, for example available or damaged.`},{name:`toState`,type:`text`,required:!1,enum:[`available`,`allocated`,`wip`,`qc_hold`,`damaged`],description:`What it became.`},{name:`qty`,type:`decimal`,required:!1,description:`How many moved.`},{name:`reasonCode`,type:`text`,required:!0,default:`adjustment`,description:`Why it moved, for example adjustment, sale or return.`},{name:`sourceType`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`note`,type:`text`,required:!1,default:``,description:`Anything worth remembering about this movement.`},{name:`occurredAt`,type:`datetime`,required:!1,description:`When it happened.`}],rest:[{method:`POST`,path:`/stockmovements/findBySku`},{method:`POST`,path:`/stockmovements/findByLocation`},{method:`POST`,path:`/stockmovements/findBySource`},{method:`POST`,path:`/stockmovements/findByReason`},{method:`GET`,path:`/stockmovements`},{method:`GET`,path:`/stockmovements/[id]`}],mcp:[{operation:`get`,name:`stockmovement_get`},{operation:`list`,name:`stockmovement_list`},{operation:`findByLocation`,name:`stockmovementcollection_findbylocation`},{operation:`findByReason`,name:`stockmovementcollection_findbyreason`},{operation:`findBySku`,name:`stockmovementcollection_findbysku`},{operation:`findBySource`,name:`stockmovementcollection_findbysource`}],cli:[{operation:`get`,name:`stockmovement_get`},{operation:`list`,name:`stockmovement_list`},{operation:`findByLocation`,name:`stockmovementcollection_findByLocation`},{operation:`findByReason`,name:`stockmovementcollection_findByReason`},{operation:`findBySku`,name:`stockmovementcollection_findBySku`},{operation:`findBySource`,name:`stockmovementcollection_findBySource`}],methods:[{name:`findByLocation`,async:!0,parameters:[`locationId: string`],returnType:`Promise<StockMovement[]>`,aiCallable:!0},{name:`findByReason`,async:!0,parameters:[`reasonCode: StockMovementReason`],returnType:`Promise<StockMovement[]>`,aiCallable:!0},{name:`findBySku`,async:!0,parameters:[`skuId: string`],returnType:`Promise<StockMovement[]>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceType: string`,`sourceId: string`],returnType:`Promise<StockMovement[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0}],dependencies:[`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`inventory.stock`,label:`Inventory`,summary:`Keep count of how many of each product you have.`,synonyms:[`stock`,`quantity`,`on hand`],models:[`@happyvertical/smrt-inventory:StockLevel`,`@happyvertical/smrt-inventory:InventoryLocation`,`@happyvertical/smrt-inventory:StockMovement`],nav:[{label:`Stock levels`,model:`@happyvertical/smrt-inventory:StockLevel`,icon:`archive`,description:`How much of each item you have on hand right now.`,noun:`stock entry`},{label:`Locations`,model:`@happyvertical/smrt-inventory:InventoryLocation`,icon:`home`,description:`The places you keep stock, like shelves, rooms or vans.`},{label:`Stock movements`,model:`@happyvertical/smrt-inventory:StockMovement`,icon:`truck`,description:`Every time stock came in, went out or moved.`}],requires:[],requiresAny:[[`products.simple`,`products.clothing`]],section:{id:`catalog`,label:`Catalog`,icon:`package`,description:`Products, ingredients and the stock you hold.`},options:{"@happyvertical/smrt-inventory:StockLevel":{fields:{reorderPoint:{visibility:`hidden`},reorderQuantity:{visibility:`hidden`}}},"@happyvertical/smrt-inventory:InventoryLocation":{fields:{placeId:{visibility:`hidden`},active:{visibility:`hidden`}}},"@happyvertical/smrt-inventory:StockMovement":{fields:{sourceType:{visibility:`hidden`},sourceId:{visibility:`hidden`},actorProfileId:{visibility:`hidden`}}}},help:{markdown:`## Overview
557
+
558
+ Inventory keeps count of how many of each product you have. Each count is a
559
+ stock level: an item, the place it is kept and how many are on hand. Stock can
560
+ sit in more than one place, and every change is recorded as a stock movement so
561
+ there is a trail.
562
+
563
+ ## Tasks
564
+
565
+ ### Count what you have
566
+
567
+ 1. Create a stock level for the item and the place it is kept.
568
+ 2. Set **{field:qty}** to how many you have on hand.
569
+ 3. Set **{field:state}** if the stock is not available to sell, for example
570
+ allocated or on quality hold.
571
+
572
+ ### Correct a count
573
+
574
+ 1. Find the stock level for the item.
575
+ 2. Set **{field:qty}** to what you really have. Record why as a stock movement.
576
+
577
+ ### Keep stock in more than one place
578
+
579
+ 1. Add a location with a **{field:code}** and a **{field:name}**, and say what
580
+ sort it is in **{field:kind}**.
581
+ 2. Create stock levels against that location.
582
+ `,fieldRefs:[`code`,`kind`,`name`,`qty`,`state`]},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`,`Needs products.simple, which is server.`]}}]},{id:`ledgers`,packageName:`@happyvertical/smrt-ledgers`,version:`0.55.11`,description:`Double-entry accounting ledger for the SMRT framework`,models:[{id:`@happyvertical/smrt-ledgers:Account`,name:`Account`,collection:`accounts`,display:{label:`name`},fields:[{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ledgers:Account`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`number`,type:`text`,required:!1,default:``,description:`The account number in your chart of accounts.`},{name:`name`,type:`text`,required:!1,default:``,description:`What the account is called.`},{name:`description`,type:`text`,required:!1,default:``,description:`What the account is used for.`},{name:`type`,type:`text`,required:!1,default:`asset`,enum:[`asset`,`liability`,`equity`,`revenue`,`expense`],description:`asset, liability, equity, revenue or expense.`},{name:`active`,type:`boolean`,required:!1,default:!0,description:`Whether the account is in use; deactivate it instead of deleting it.`},{name:`metadata`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/accounts/findByNumber`},{method:`POST`,path:`/accounts/findByType`},{method:`POST`,path:`/accounts/findActive`},{method:`POST`,path:`/accounts/findTopLevel`},{method:`POST`,path:`/accounts/findChildren`},{method:`POST`,path:`/accounts/getTree`},{method:`POST`,path:`/accounts/getOrCreateByNumber`},{method:`POST`,path:`/accounts/groupByType`},{method:`POST`,path:`/accounts/getDescendants`},{method:`POST`,path:`/accounts/findByTenant`},{method:`POST`,path:`/accounts/findGlobal`},{method:`POST`,path:`/accounts/findWithGlobals`},{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`},{method:`POST`,path:`/accounts`},{method:`PATCH`,path:`/accounts/[id]`},{method:`DELETE`,path:`/accounts/[id]`}],mcp:[{operation:`create`,name:`account_create`},{operation:`get`,name:`account_get`},{operation:`list`,name:`account_list`},{operation:`findActive`,name:`accountcollection_findactive`},{operation:`findByNumber`,name:`accountcollection_findbynumber`},{operation:`findByTenant`,name:`accountcollection_findbytenant`},{operation:`findByType`,name:`accountcollection_findbytype`},{operation:`findChildren`,name:`accountcollection_findchildren`},{operation:`findGlobal`,name:`accountcollection_findglobal`},{operation:`findTopLevel`,name:`accountcollection_findtoplevel`},{operation:`findWithGlobals`,name:`accountcollection_findwithglobals`},{operation:`getDescendants`,name:`accountcollection_getdescendants`},{operation:`getOrCreateByNumber`,name:`accountcollection_getorcreatebynumber`},{operation:`getTree`,name:`accountcollection_gettree`},{operation:`groupByType`,name:`accountcollection_groupbytype`}],cli:[{operation:`create`,name:`account_create`},{operation:`createChild`,name:`account_createChild`},{operation:`delete`,name:`account_delete`},{operation:`get`,name:`account_get`},{operation:`getAncestors`,name:`account_getAncestors`},{operation:`getBalance`,name:`account_getBalance`},{operation:`getChildren`,name:`account_getChildren`},{operation:`getDescendants`,name:`account_getDescendants`},{operation:`getFullPath`,name:`account_getFullPath`},{operation:`getHierarchy`,name:`account_getHierarchy`},{operation:`getParent`,name:`account_getParent`},{operation:`isCreditNormal`,name:`account_isCreditNormal`},{operation:`isDebitNormal`,name:`account_isDebitNormal`},{operation:`isTopLevel`,name:`account_isTopLevel`},{operation:`list`,name:`account_list`},{operation:`moveTo`,name:`account_moveTo`},{operation:`toTreeNode`,name:`account_toTreeNode`},{operation:`update`,name:`account_update`},{operation:`findActive`,name:`accountcollection_findActive`},{operation:`findByNumber`,name:`accountcollection_findByNumber`},{operation:`findByTenant`,name:`accountcollection_findByTenant`},{operation:`findByType`,name:`accountcollection_findByType`},{operation:`findChildren`,name:`accountcollection_findChildren`},{operation:`findGlobal`,name:`accountcollection_findGlobal`},{operation:`findTopLevel`,name:`accountcollection_findTopLevel`},{operation:`findWithGlobals`,name:`accountcollection_findWithGlobals`},{operation:`getDescendants`,name:`accountcollection_getDescendants`},{operation:`getOrCreateByNumber`,name:`accountcollection_getOrCreateByNumber`},{operation:`getTree`,name:`accountcollection_getTree`},{operation:`groupByType`,name:`accountcollection_groupByType`}],methods:[{name:`createChild`,async:!0,parameters:[`options: Omit<AccountOptions, 'parentId' | 'type'>`],returnType:`Promise<Account>`,aiCallable:!1},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findByNumber`,async:!0,parameters:[`number: string`],returnType:`Promise<Account | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`type: AccountType`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findChildren`,async:!0,parameters:[`parentId: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findTopLevel`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getBalance`,async:!0,parameters:[`asOfDate?: Date`],returnType:`Promise<number>`,aiCallable:!1},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!0},{name:`getFullPath`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!1},{name:`getOrCreateByNumber`,async:!0,parameters:[`number: string`,`defaults?: Partial<object>`],returnType:`Promise<Account>`,aiCallable:!0},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getTree`,async:!0,parameters:[],returnType:`Promise<AccountTree>`,aiCallable:!0},{name:`groupByType`,async:!0,parameters:[],returnType:`Promise<Record<AccountType, Account[]>>`,aiCallable:!0},{name:`isCreditNormal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDebitNormal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTopLevel`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`toTreeNode`,async:!0,parameters:[],returnType:`Promise<AccountTreeNode>`,aiCallable:!1}],references:[`@happyvertical/smrt-ledgers:Account`],exposed:!0},{id:`@happyvertical/smrt-ledgers:Journal`,name:`Journal`,collection:`journals`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`number`,type:`text`,required:!1,default:``,description:`The journal's reference number.`},{name:`date`,type:`datetime`,required:!1,description:`The date of the transaction.`},{name:`description`,type:`text`,required:!1,default:``,description:`What the transaction was.`},{name:`sourceModule`,type:`text`,required:!1,default:``},{name:`sourceRef`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`posted`,`voided`],description:`draft until final, then posted, or voided.`},{name:`postedAt`,type:`datetime`,required:!1,description:`When it was posted.`},{name:`voidedAt`,type:`datetime`,required:!1},{name:`voidReason`,type:`text`,required:!1},{name:`metadata`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/journals/findByNumber`},{method:`POST`,path:`/journals/findByDateRange`},{method:`POST`,path:`/journals/findBySource`},{method:`POST`,path:`/journals/findByStatus`},{method:`POST`,path:`/journals/findDrafts`},{method:`POST`,path:`/journals/findPosted`},{method:`POST`,path:`/journals/createWithEntries`},{method:`POST`,path:`/journals/post`},{method:`POST`,path:`/journals/void`},{method:`POST`,path:`/journals/findBySourceRef`},{method:`POST`,path:`/journals/findByMonth`},{method:`POST`,path:`/journals/findByTenant`},{method:`POST`,path:`/journals/findGlobal`},{method:`POST`,path:`/journals/findWithGlobals`},{method:`GET`,path:`/journals`},{method:`GET`,path:`/journals/[id]`},{method:`POST`,path:`/journals`}],mcp:[{operation:`create`,name:`journal_create`},{operation:`get`,name:`journal_get`},{operation:`list`,name:`journal_list`},{operation:`createWithEntries`,name:`journalcollection_createwithentries`},{operation:`findByDateRange`,name:`journalcollection_findbydaterange`},{operation:`findByMonth`,name:`journalcollection_findbymonth`},{operation:`findByNumber`,name:`journalcollection_findbynumber`},{operation:`findBySource`,name:`journalcollection_findbysource`},{operation:`findBySourceRef`,name:`journalcollection_findbysourceref`},{operation:`findByStatus`,name:`journalcollection_findbystatus`},{operation:`findByTenant`,name:`journalcollection_findbytenant`},{operation:`findDrafts`,name:`journalcollection_finddrafts`},{operation:`findGlobal`,name:`journalcollection_findglobal`},{operation:`findPosted`,name:`journalcollection_findposted`},{operation:`findWithGlobals`,name:`journalcollection_findwithglobals`},{operation:`post`,name:`journalcollection_post`},{operation:`void`,name:`journalcollection_void`}],cli:[{operation:`addEntry`,name:`journal_addEntry`},{operation:`create`,name:`journal_create`},{operation:`delete`,name:`journal_delete`},{operation:`get`,name:`journal_get`},{operation:`getEntries`,name:`journal_getEntries`},{operation:`getTotalCredits`,name:`journal_getTotalCredits`},{operation:`getTotalDebits`,name:`journal_getTotalDebits`},{operation:`isBalanced`,name:`journal_isBalanced`},{operation:`isDraft`,name:`journal_isDraft`},{operation:`isEditable`,name:`journal_isEditable`},{operation:`isPosted`,name:`journal_isPosted`},{operation:`isVoided`,name:`journal_isVoided`},{operation:`list`,name:`journal_list`},{operation:`post`,name:`journal_post`},{operation:`summarize`,name:`journal_summarize`},{operation:`update`,name:`journal_update`},{operation:`void`,name:`journal_void`},{operation:`createWithEntries`,name:`journalcollection_createWithEntries`},{operation:`findByDateRange`,name:`journalcollection_findByDateRange`},{operation:`findByMonth`,name:`journalcollection_findByMonth`},{operation:`findByNumber`,name:`journalcollection_findByNumber`},{operation:`findBySource`,name:`journalcollection_findBySource`},{operation:`findBySourceRef`,name:`journalcollection_findBySourceRef`},{operation:`findByStatus`,name:`journalcollection_findByStatus`},{operation:`findByTenant`,name:`journalcollection_findByTenant`},{operation:`findDrafts`,name:`journalcollection_findDrafts`},{operation:`findGlobal`,name:`journalcollection_findGlobal`},{operation:`findPosted`,name:`journalcollection_findPosted`},{operation:`findWithGlobals`,name:`journalcollection_findWithGlobals`},{operation:`post`,name:`journalcollection_post`},{operation:`void`,name:`journalcollection_void`}],methods:[{name:`addEntry`,async:!0,parameters:[`data: JournalEntryData`],returnType:`Promise<void>`,aiCallable:!1},{name:`createWithEntries`,async:!0,parameters:[`data: CreateJournalData`],returnType:`Promise<Journal>`,aiCallable:!0},{name:`findByDateRange`,async:!0,parameters:[`start: Date`,`end: Date`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findByMonth`,async:!0,parameters:[`year: number`,`month: number`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findByNumber`,async:!0,parameters:[`number: string`],returnType:`Promise<Journal | null>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceModule: string`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findBySourceRef`,async:!0,parameters:[`sourceRef: string`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: JournalStatus`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findPosted`,async:!0,parameters:[],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Journal[]>`,aiCallable:!0},{name:`getEntries`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getTotalCredits`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!1},{name:`getTotalDebits`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!1},{name:`isBalanced`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isEditable`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPosted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isVoided`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`post`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`summarize`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`void`,async:!0,parameters:[`reason: string`],returnType:`Promise<void>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-ledgers:JournalEntry`,name:`JournalEntry`,collection:`journalentries`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`journalId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ledgers:Journal`,description:`The journal this entry belongs to.`},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-ledgers:Account`,description:`The account this entry changes.`},{name:`debit`,type:`decimal`,required:!1,default:0,description:`The amount debited. Zero on a credit entry.`},{name:`credit`,type:`decimal`,required:!1,default:0,description:`The amount credited. Zero on a debit entry.`},{name:`currency`,type:`text`,required:!1,default:`USD`,description:`The currency of the amounts.`},{name:`exchangeRate`,type:`decimal`,required:!1,default:1},{name:`memo`,type:`text`,required:!1,default:``,description:`A note on this entry.`},{name:`metadata`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/journalentries/findByJournal`},{method:`POST`,path:`/journalentries/findByAccount`},{method:`POST`,path:`/journalentries/getAccountBalance`},{method:`POST`,path:`/journalentries/getTrialBalance`},{method:`POST`,path:`/journalentries/getTotalsForDateRange`},{method:`POST`,path:`/journalentries/findByAccounts`},{method:`POST`,path:`/journalentries/getAccountLedger`},{method:`POST`,path:`/journalentries/findByTenant`},{method:`POST`,path:`/journalentries/findGlobal`},{method:`POST`,path:`/journalentries/findWithGlobals`},{method:`GET`,path:`/journalentries`},{method:`GET`,path:`/journalentries/[id]`}],mcp:[{operation:`get`,name:`journalentry_get`},{operation:`list`,name:`journalentry_list`},{operation:`findByAccount`,name:`journalentrycollection_findbyaccount`},{operation:`findByAccounts`,name:`journalentrycollection_findbyaccounts`},{operation:`findByJournal`,name:`journalentrycollection_findbyjournal`},{operation:`findByTenant`,name:`journalentrycollection_findbytenant`},{operation:`findGlobal`,name:`journalentrycollection_findglobal`},{operation:`findWithGlobals`,name:`journalentrycollection_findwithglobals`},{operation:`getAccountBalance`,name:`journalentrycollection_getaccountbalance`},{operation:`getAccountLedger`,name:`journalentrycollection_getaccountledger`},{operation:`getTotalsForDateRange`,name:`journalentrycollection_gettotalsfordaterange`},{operation:`getTrialBalance`,name:`journalentrycollection_gettrialbalance`}],cli:[{operation:`create`,name:`journalentry_create`},{operation:`delete`,name:`journalentry_delete`},{operation:`get`,name:`journalentry_get`},{operation:`getAccount`,name:`journalentry_getAccount`},{operation:`getAmount`,name:`journalentry_getAmount`},{operation:`getBaseAmount`,name:`journalentry_getBaseAmount`},{operation:`getDescription`,name:`journalentry_getDescription`},{operation:`getJournal`,name:`journalentry_getJournal`},{operation:`isCredit`,name:`journalentry_isCredit`},{operation:`isDebit`,name:`journalentry_isDebit`},{operation:`list`,name:`journalentry_list`},{operation:`update`,name:`journalentry_update`},{operation:`findByAccount`,name:`journalentrycollection_findByAccount`},{operation:`findByAccounts`,name:`journalentrycollection_findByAccounts`},{operation:`findByJournal`,name:`journalentrycollection_findByJournal`},{operation:`findByTenant`,name:`journalentrycollection_findByTenant`},{operation:`findGlobal`,name:`journalentrycollection_findGlobal`},{operation:`findWithGlobals`,name:`journalentrycollection_findWithGlobals`},{operation:`getAccountBalance`,name:`journalentrycollection_getAccountBalance`},{operation:`getAccountLedger`,name:`journalentrycollection_getAccountLedger`},{operation:`getTotalsForDateRange`,name:`journalentrycollection_getTotalsForDateRange`},{operation:`getTrialBalance`,name:`journalentrycollection_getTrialBalance`}],methods:[{name:`findByAccount`,async:!0,parameters:[`accountId: string`],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`findByAccounts`,async:!0,parameters:[`accountIds: string[]`],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`findByJournal`,async:!0,parameters:[`journalId: string`],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<JournalEntry[]>`,aiCallable:!0},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAccountBalance`,async:!0,parameters:[`accountId: string`,`asOfDate?: Date`],returnType:`Promise<number>`,aiCallable:!0},{name:`getAccountLedger`,async:!0,parameters:[`accountId: string`],returnType:`Promise<Array<object>>`,aiCallable:!0},{name:`getAmount`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getBaseAmount`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getDescription`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`getJournal`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getTotalsForDateRange`,async:!0,parameters:[`start: Date`,`end: Date`],returnType:`Promise<object>`,aiCallable:!0},{name:`getTrialBalance`,async:!0,parameters:[`asOfDate?: Date`],returnType:`Promise<TrialBalanceRow[]>`,aiCallable:!0},{name:`isCredit`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDebit`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-ledgers:Account`,`@happyvertical/smrt-ledgers:Journal`],exposed:!0}],dependencies:[],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`,`#3626`],reason:`core migrations (node:os, node:crypto)`,via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`ledgers.bookkeeping`,label:`Bookkeeping`,summary:`Keep your books: a chart of accounts and double-entry journals.`,synonyms:[`accounting`,`ledger`,`general ledger`,`journals`,`chart of accounts`],models:[`@happyvertical/smrt-ledgers:Account`,`@happyvertical/smrt-ledgers:Journal`,`@happyvertical/smrt-ledgers:JournalEntry`],nav:[{label:`Accounts`,model:`@happyvertical/smrt-ledgers:Account`,icon:`bank`,description:`The accounts your books are kept in, like sales, rent and bank.`},{label:`Journals`,model:`@happyvertical/smrt-ledgers:Journal`,icon:`book`,description:`The entries behind your accounts, so every dollar has a trail.`}],requires:[],section:{id:`accounting`,label:`Accounting`,icon:`bank`,description:`Your books: accounts, journals and balances.`},options:{"@happyvertical/smrt-ledgers:Account":{fields:{metadata:{visibility:`hidden`},parentId:{visibility:`hidden`}}},"@happyvertical/smrt-ledgers:Journal":{fields:{sourceModule:{visibility:`hidden`},sourceRef:{visibility:`hidden`},voidedAt:{visibility:`hidden`},voidReason:{visibility:`hidden`},metadata:{visibility:`hidden`}}},"@happyvertical/smrt-ledgers:JournalEntry":{fields:{exchangeRate:{visibility:`hidden`},metadata:{visibility:`hidden`}}}},help:{markdown:`## Overview
583
+
584
+ Bookkeeping keeps your accounts. You list the accounts you use (your chart of
585
+ accounts) and record each transaction as a journal whose entries debit and
586
+ credit those accounts.
587
+
588
+ ## Tasks
589
+
590
+ ### Set up your accounts
591
+
592
+ 1. Create a new account.
593
+ 2. Give it a **{field:number}** and a **{field:name}**.
594
+ 3. Choose its **{field:type}**: asset, liability, equity, revenue or expense.
595
+
596
+ ### Record a transaction
597
+
598
+ 1. Create a new journal and add a **{field:description}**.
599
+ 2. Add entries: pick the account on each and enter a **{field:debit}** or a
600
+ **{field:credit}**. They must add up to the same total.
601
+ 3. Set the journal's **{field:status}** to posted when it is final. A posted
602
+ journal is voided, not edited.
603
+ `,fieldRefs:[`credit`,`debit`,`description`,`name`,`number`,`status`,`type`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: core migrations (node:os, node:crypto); and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624, #3626).`]}}]},{id:`manufacturing`,packageName:`@happyvertical/smrt-manufacturing`,version:`0.55.11`,description:`Bills of materials, cost rollup, and production-order operations for the SMRT framework — strictly industry-neutral`,models:[{id:`@happyvertical/smrt-manufacturing:Assembly`,name:`Assembly`,collection:`products`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productType`,type:`json`,required:!1},{name:`name`,type:`text`,required:!1,description:`The product name, as customers see it.`},{name:`description`,type:`text`,required:!1,description:`A few words on what the product is and who it is for.`},{name:`category`,type:`text`,required:!1},{name:`manufacturer`,type:`text`,required:!1},{name:`model`,type:`text`,required:!1},{name:`price`,type:`integer`,required:!0,default:0,description:`The price in minor units (cents), for example 1999 for 19.99.`},{name:`inStock`,type:`boolean`,required:!0,default:!0},{name:`specifications`,type:`json`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`estimatedLabourMinutes`,type:`integer`,required:!1,default:0},{name:`defaultOperationId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-manufacturing:Operation`},{name:`partReference`,type:`text`,required:!1,default:``}],rest:[{method:`GET`,path:`/products`},{method:`GET`,path:`/products/[id]`},{method:`POST`,path:`/products`},{method:`PATCH`,path:`/products/[id]`}],mcp:[{operation:`get`,name:`assembly_get`},{operation:`list`,name:`assembly_list`}],cli:[{operation:`addAsset`,name:`assembly_addAsset`},{operation:`create`,name:`assembly_create`},{operation:`delete`,name:`assembly_delete`},{operation:`get`,name:`assembly_get`},{operation:`getAssets`,name:`assembly_getAssets`},{operation:`getSpecification`,name:`assembly_getSpecification`},{operation:`list`,name:`assembly_list`},{operation:`removeAsset`,name:`assembly_removeAsset`},{operation:`update`,name:`assembly_update`},{operation:`updateSpecification`,name:`assembly_updateSpecification`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getSpecification`,async:!0,parameters:[`key: string`],returnType:`Promise<unknown>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`updateSpecification`,async:!0,parameters:[`key: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-manufacturing:Operation`],exposed:!0},{id:`@happyvertical/smrt-manufacturing:BillOfMaterials`,name:`BillOfMaterials`,collection:`billofmaterialses`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productId`,type:`text`,required:!0,default:``},{name:`version`,type:`integer`,required:!0,default:1},{name:`effectiveDate`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!0,default:`draft`,enum:[`draft`,`active`,`superseded`]},{name:`notes`,type:`text`,required:!1,default:``},{name:`currency`,type:`text`,required:!1,default:`USD`}],rest:[{method:`POST`,path:`/billofmaterialses/findByProduct`},{method:`POST`,path:`/billofmaterialses/findActiveForProduct`},{method:`POST`,path:`/billofmaterialses/findByStatus`},{method:`GET`,path:`/billofmaterialses`},{method:`GET`,path:`/billofmaterialses/[id]`},{method:`POST`,path:`/billofmaterialses`},{method:`PATCH`,path:`/billofmaterialses/[id]`}],mcp:[{operation:`get`,name:`billofmaterials_get`},{operation:`list`,name:`billofmaterials_list`},{operation:`findActiveForProduct`,name:`billofmaterialscollection_findactiveforproduct`},{operation:`findByProduct`,name:`billofmaterialscollection_findbyproduct`},{operation:`findByStatus`,name:`billofmaterialscollection_findbystatus`}],cli:[{operation:`create`,name:`billofmaterials_create`},{operation:`delete`,name:`billofmaterials_delete`},{operation:`get`,name:`billofmaterials_get`},{operation:`list`,name:`billofmaterials_list`},{operation:`update`,name:`billofmaterials_update`},{operation:`findActiveForProduct`,name:`billofmaterialscollection_findActiveForProduct`},{operation:`findByProduct`,name:`billofmaterialscollection_findByProduct`},{operation:`findByStatus`,name:`billofmaterialscollection_findByStatus`}],methods:[{name:`findActiveForProduct`,async:!0,parameters:[`productId: string`],returnType:`Promise<BillOfMaterials | null>`,aiCallable:!0},{name:`findByProduct`,async:!0,parameters:[`productId: string`],returnType:`Promise<BillOfMaterials[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: BomStatus`],returnType:`Promise<BillOfMaterials[]>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-manufacturing:BomLine`,name:`BomLine`,collection:`bomlines`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`bomId`,type:`text`,required:!0,default:``},{name:`componentSkuId`,type:`text`,required:!0,default:``},{name:`qtyPerUnit`,type:`decimal`,required:!1},{name:`uom`,type:`text`,required:!1,default:`each`},{name:`wastePercent`,type:`decimal`,required:!1},{name:`notes`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/bomlines/findByBom`},{method:`POST`,path:`/bomlines/findByComponent`},{method:`GET`,path:`/bomlines`},{method:`GET`,path:`/bomlines/[id]`},{method:`POST`,path:`/bomlines`},{method:`PATCH`,path:`/bomlines/[id]`}],mcp:[{operation:`get`,name:`bomline_get`},{operation:`list`,name:`bomline_list`},{operation:`findByBom`,name:`bomlinecollection_findbybom`},{operation:`findByComponent`,name:`bomlinecollection_findbycomponent`}],cli:[{operation:`create`,name:`bomline_create`},{operation:`delete`,name:`bomline_delete`},{operation:`effectiveQtyPerUnit`,name:`bomline_effectiveQtyPerUnit`},{operation:`get`,name:`bomline_get`},{operation:`list`,name:`bomline_list`},{operation:`update`,name:`bomline_update`},{operation:`findByBom`,name:`bomlinecollection_findByBom`},{operation:`findByComponent`,name:`bomlinecollection_findByComponent`}],methods:[{name:`effectiveQtyPerUnit`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`findByBom`,async:!0,parameters:[`bomId: string`],returnType:`Promise<BomLine[]>`,aiCallable:!0},{name:`findByComponent`,async:!0,parameters:[`componentSkuId: string`],returnType:`Promise<BomLine[]>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-manufacturing:Operation`,name:`Operation`,collection:`operations`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`code`,type:`text`,required:!0,default:``},{name:`name`,type:`text`,required:!0,default:``},{name:`category`,type:`text`,required:!1,default:``},{name:`isActive`,type:`boolean`,required:!1,default:!0},{name:`requiredQualificationId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-human-resources:Qualification`}],rest:[{method:`POST`,path:`/operations/findByCode`},{method:`POST`,path:`/operations/listOperations`},{method:`GET`,path:`/operations`},{method:`GET`,path:`/operations/[id]`}],mcp:[{operation:`get`,name:`operation_get`},{operation:`list`,name:`operation_list`},{operation:`findByCode`,name:`operationcollection_findbycode`},{operation:`listOperations`,name:`operationcollection_listoperations`}],cli:[{operation:`get`,name:`operation_get`},{operation:`list`,name:`operation_list`},{operation:`findByCode`,name:`operationcollection_findByCode`},{operation:`listOperations`,name:`operationcollection_listOperations`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findByCode`,async:!0,parameters:[`code: string`],returnType:`Promise<Operation | null>`,aiCallable:!0},{name:`listOperations`,async:!0,parameters:[`options?: object`],returnType:`Promise<Operation[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-human-resources:Qualification`],exposed:!0},{id:`@happyvertical/smrt-manufacturing:ProductionRun`,name:`ProductionRun`,collection:`productionruns`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`bomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-manufacturing:BillOfMaterials`},{name:`targetQty`,type:`decimal`,required:!1},{name:`completedQty`,type:`decimal`,required:!1},{name:`status`,type:`text`,required:!0,default:`planned`,enum:[`planned`,`in_progress`,`done`,`cancelled`]}],rest:[{method:`POST`,path:`/productionruns/findByBom`},{method:`POST`,path:`/productionruns/findByStatus`},{method:`GET`,path:`/productionruns`},{method:`GET`,path:`/productionruns/[id]`}],mcp:[{operation:`get`,name:`productionrun_get`},{operation:`list`,name:`productionrun_list`},{operation:`findByBom`,name:`productionruncollection_findbybom`},{operation:`findByStatus`,name:`productionruncollection_findbystatus`}],cli:[{operation:`get`,name:`productionrun_get`},{operation:`list`,name:`productionrun_list`},{operation:`findByBom`,name:`productionruncollection_findByBom`},{operation:`findByStatus`,name:`productionruncollection_findByStatus`}],methods:[{name:`findByBom`,async:!0,parameters:[`bomId: string`],returnType:`Promise<ProductionRun[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ProductionRunStatus`],returnType:`Promise<ProductionRun[]>`,aiCallable:!0},{name:`remainingQty`,async:!1,parameters:[],returnType:`number`,aiCallable:!1}],references:[`@happyvertical/smrt-manufacturing:BillOfMaterials`],exposed:!0},{id:`@happyvertical/smrt-manufacturing:ProductionRunCompletion`,name:`ProductionRunCompletion`,collection:`productionruncompletions`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`runId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-manufacturing:ProductionRun`},{name:`qty`,type:`decimal`,required:!1},{name:`completedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/productionruncompletions/findByRun`},{method:`GET`,path:`/productionruncompletions`},{method:`GET`,path:`/productionruncompletions/[id]`}],mcp:[{operation:`get`,name:`productionruncompletion_get`},{operation:`list`,name:`productionruncompletion_list`},{operation:`findByRun`,name:`productionruncompletioncollection_findbyrun`}],cli:[{operation:`get`,name:`productionruncompletion_get`},{operation:`list`,name:`productionruncompletion_list`},{operation:`findByRun`,name:`productionruncompletioncollection_findByRun`}],methods:[{name:`findByRun`,async:!0,parameters:[`runId: string`],returnType:`Promise<ProductionRunCompletion[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-manufacturing:ProductionRun`],exposed:!0},{id:`@happyvertical/smrt-manufacturing:RoutingStep`,name:`RoutingStep`,collection:`routingsteps`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`bomId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-manufacturing:BillOfMaterials`},{name:`operationId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-manufacturing:Operation`},{name:`sequence`,type:`integer`,required:!0,default:1},{name:`estimatedMinutes`,type:`decimal`,required:!1},{name:`notes`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/routingsteps/findByBom`},{method:`POST`,path:`/routingsteps/findByOperation`},{method:`GET`,path:`/routingsteps`},{method:`GET`,path:`/routingsteps/[id]`}],mcp:[{operation:`get`,name:`routingstep_get`},{operation:`list`,name:`routingstep_list`},{operation:`findByBom`,name:`routingstepcollection_findbybom`},{operation:`findByOperation`,name:`routingstepcollection_findbyoperation`}],cli:[{operation:`create`,name:`routingstep_create`},{operation:`delete`,name:`routingstep_delete`},{operation:`get`,name:`routingstep_get`},{operation:`list`,name:`routingstep_list`},{operation:`update`,name:`routingstep_update`},{operation:`findByBom`,name:`routingstepcollection_findByBom`},{operation:`findByOperation`,name:`routingstepcollection_findByOperation`}],methods:[{name:`findByBom`,async:!0,parameters:[`bomId: string`],returnType:`Promise<RoutingStep[]>`,aiCallable:!0},{name:`findByOperation`,async:!0,parameters:[`operationId: string`],returnType:`Promise<RoutingStep[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-manufacturing:BillOfMaterials`,`@happyvertical/smrt-manufacturing:Operation`],exposed:!0}],dependencies:[`human-resources`,`inventory`,`products`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3616`,`#3624`,`#3626`],via:[`@happyvertical/smrt-products`,`@happyvertical/smrt-tenancy`]}},{id:`marketing`,packageName:`@happyvertical/smrt-marketing`,version:`0.55.11`,description:`Cross-channel campaign coordination, immutable performance evidence, budget pacing, and reusable Svelte marketing surfaces for SMRT`,models:[{id:`@happyvertical/smrt-marketing:Campaign`,name:`Campaign`,collection:`campaigns`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`customerId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:Customer`},{name:`campaignKey`,type:`text`,required:!0,default:``},{name:`name`,type:`text`,required:!0,default:``},{name:`objective`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`draft`},{name:`startAt`,type:`datetime`,required:!1},{name:`endAt`,type:`datetime`,required:!1},{name:`budgetCents`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/campaigns/findByCampaignKey`},{method:`POST`,path:`/campaigns/findByStatus`},{method:`POST`,path:`/campaigns/listByCustomer`},{method:`POST`,path:`/campaigns/listReportingByCustomer`},{method:`POST`,path:`/campaigns/summarizeByCustomers`},{method:`GET`,path:`/campaigns`},{method:`GET`,path:`/campaigns/[id]`},{method:`POST`,path:`/campaigns`},{method:`PATCH`,path:`/campaigns/[id]`}],mcp:[{operation:`create`,name:`campaign_create`},{operation:`get`,name:`campaign_get`},{operation:`list`,name:`campaign_list`},{operation:`update`,name:`campaign_update`},{operation:`findByCampaignKey`,name:`campaigncollection_findbycampaignkey`},{operation:`findByStatus`,name:`campaigncollection_findbystatus`},{operation:`listByCustomer`,name:`campaigncollection_listbycustomer`},{operation:`listReportingByCustomer`,name:`campaigncollection_listreportingbycustomer`},{operation:`summarizeByCustomers`,name:`campaigncollection_summarizebycustomers`}],cli:[{operation:`create`,name:`campaign_create`},{operation:`get`,name:`campaign_get`},{operation:`list`,name:`campaign_list`},{operation:`update`,name:`campaign_update`},{operation:`findByCampaignKey`,name:`campaigncollection_findByCampaignKey`},{operation:`findByStatus`,name:`campaigncollection_findByStatus`},{operation:`listByCustomer`,name:`campaigncollection_listByCustomer`},{operation:`listReportingByCustomer`,name:`campaigncollection_listReportingByCustomer`},{operation:`summarizeByCustomers`,name:`campaigncollection_summarizeByCustomers`}],methods:[{name:`findByCampaignKey`,async:!0,parameters:[`campaignKey: string`,`tenantId?: string | null`],returnType:`Promise<Campaign | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: CampaignStatus`],returnType:`Promise<Campaign[]>`,aiCallable:!0},{name:`get`,async:!0,parameters:[`filter: string | SmrtWhereClause<Campaign>`,`options?: object`],returnType:`Promise<Campaign | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`list`,async:!0,parameters:[`options?: SmrtListOptions<Campaign>`],returnType:`Promise<Campaign[] | Record<string, unknown>[]>`,aiCallable:!0},{name:`listByCustomer`,async:!0,parameters:[`tenantId: string | null`,`customerId: string`,`options?: ListCampaignsByCustomerOptions`],returnType:`Promise<CampaignCustomerPage>`,aiCallable:!0},{name:`listReportingByCustomer`,async:!0,parameters:[`tenantId: string | null`,`customerId: string`,`options?: ListCampaignReportingByCustomerOptions`],returnType:`Promise<CampaignReportingPage>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`summarizeByCustomers`,async:!0,parameters:[`tenantId: string | null`,`customerIds: string[]`],returnType:`Promise<CampaignCustomerSummary[]>`,aiCallable:!0},{name:`transitionTo`,async:!1,parameters:[`next: CampaignStatus`],returnType:`this`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Customer`],exposed:!0},{id:`@happyvertical/smrt-marketing:CampaignChannel`,name:`CampaignChannel`,collection:`campaignchannels`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`campaignId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-marketing:Campaign`},{name:`channelKind`,type:`text`,required:!0,default:``},{name:`channelRef`,type:`text`,required:!0,default:``},{name:`allocatedBudgetCents`,type:`integer`,required:!1,default:0},{name:`startAt`,type:`datetime`,required:!1},{name:`endAt`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1,default:`planned`}],rest:[{method:`POST`,path:`/campaignchannels/findByCampaign`},{method:`POST`,path:`/campaignchannels/findByExecutionRef`},{method:`GET`,path:`/campaignchannels`},{method:`GET`,path:`/campaignchannels/[id]`},{method:`POST`,path:`/campaignchannels`},{method:`PATCH`,path:`/campaignchannels/[id]`},{method:`DELETE`,path:`/campaignchannels/[id]`}],mcp:[{operation:`create`,name:`campaignchannel_create`},{operation:`get`,name:`campaignchannel_get`},{operation:`list`,name:`campaignchannel_list`},{operation:`update`,name:`campaignchannel_update`},{operation:`findByCampaign`,name:`campaignchannelcollection_findbycampaign`},{operation:`findByExecutionRef`,name:`campaignchannelcollection_findbyexecutionref`}],cli:[{operation:`create`,name:`campaignchannel_create`},{operation:`delete`,name:`campaignchannel_delete`},{operation:`get`,name:`campaignchannel_get`},{operation:`list`,name:`campaignchannel_list`},{operation:`update`,name:`campaignchannel_update`},{operation:`findByCampaign`,name:`campaignchannelcollection_findByCampaign`},{operation:`findByExecutionRef`,name:`campaignchannelcollection_findByExecutionRef`}],methods:[{name:`findByCampaign`,async:!0,parameters:[`campaignId: string`],returnType:`Promise<CampaignChannel[]>`,aiCallable:!0},{name:`findByExecutionRef`,async:!0,parameters:[`channelKind: string`,`channelRef: string`],returnType:`Promise<CampaignChannel[]>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-marketing:Campaign`],exposed:!0},{id:`@happyvertical/smrt-marketing:CampaignMetricSnapshot`,name:`CampaignMetricSnapshot`,collection:`campaignmetricsnapshots`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`campaignId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-marketing:Campaign`},{name:`campaignChannelId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-marketing:CampaignChannel`},{name:`periodStart`,type:`datetime`,required:!0},{name:`periodEnd`,type:`datetime`,required:!0},{name:`spendCents`,type:`integer`,required:!1,default:0},{name:`impressions`,type:`integer`,required:!1,default:0},{name:`clicks`,type:`integer`,required:!1,default:0},{name:`conversions`,type:`integer`,required:!1,default:0},{name:`leads`,type:`integer`,required:!1,default:0},{name:`revenueCents`,type:`integer`,required:!1},{name:`source`,type:`text`,required:!0,default:``},{name:`dedupeKey`,type:`text`,required:!0,default:``}],rest:[{method:`POST`,path:`/campaignmetricsnapshots/findByDedupeKey`},{method:`POST`,path:`/campaignmetricsnapshots/getOrCreateByDedupeKey`},{method:`POST`,path:`/campaignmetricsnapshots/findByCampaign`},{method:`POST`,path:`/campaignmetricsnapshots/findByChannel`},{method:`GET`,path:`/campaignmetricsnapshots`},{method:`GET`,path:`/campaignmetricsnapshots/[id]`},{method:`POST`,path:`/campaignmetricsnapshots`}],mcp:[{operation:`create`,name:`campaignmetricsnapshot_create`},{operation:`get`,name:`campaignmetricsnapshot_get`},{operation:`list`,name:`campaignmetricsnapshot_list`},{operation:`findByCampaign`,name:`campaignmetricsnapshotcollection_findbycampaign`},{operation:`findByChannel`,name:`campaignmetricsnapshotcollection_findbychannel`},{operation:`findByDedupeKey`,name:`campaignmetricsnapshotcollection_findbydedupekey`},{operation:`getOrCreateByDedupeKey`,name:`campaignmetricsnapshotcollection_getorcreatebydedupekey`}],cli:[{operation:`create`,name:`campaignmetricsnapshot_create`},{operation:`get`,name:`campaignmetricsnapshot_get`},{operation:`list`,name:`campaignmetricsnapshot_list`},{operation:`findByCampaign`,name:`campaignmetricsnapshotcollection_findByCampaign`},{operation:`findByChannel`,name:`campaignmetricsnapshotcollection_findByChannel`},{operation:`findByDedupeKey`,name:`campaignmetricsnapshotcollection_findByDedupeKey`},{operation:`getOrCreateByDedupeKey`,name:`campaignmetricsnapshotcollection_getOrCreateByDedupeKey`}],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findByCampaign`,async:!0,parameters:[`campaignId: string`],returnType:`Promise<CampaignMetricSnapshot[]>`,aiCallable:!0},{name:`findByChannel`,async:!0,parameters:[`campaignChannelId: string`],returnType:`Promise<CampaignMetricSnapshot[]>`,aiCallable:!0},{name:`findByDedupeKey`,async:!0,parameters:[`dedupeKey: string`],returnType:`Promise<CampaignMetricSnapshot | null>`,aiCallable:!0},{name:`getOrCreateByDedupeKey`,async:!0,parameters:[`options: CampaignMetricSnapshotOptions`],returnType:`Promise<object>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-marketing:Campaign`,`@happyvertical/smrt-marketing:CampaignChannel`],exposed:!0}],dependencies:[`commerce`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`messages`,packageName:`@happyvertical/smrt-messages`,version:`0.55.11`,description:`Unified multi-channel messaging with STI-based hierarchies`,models:[{id:`@happyvertical/smrt-messages:Account`,name:`Account`,collection:`accounts`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/accounts/getActive`},{method:`POST`,path:`/accounts/getInactive`},{method:`POST`,path:`/accounts/getByProviderType`},{method:`POST`,path:`/accounts/getByType`},{method:`POST`,path:`/accounts/search`},{method:`POST`,path:`/accounts/getStats`},{method:`POST`,path:`/accounts/findByTenant`},{method:`POST`,path:`/accounts/findGlobal`},{method:`POST`,path:`/accounts/findWithGlobals`},{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`account_get`},{operation:`list`,name:`account_list`},{operation:`findByTenant`,name:`accountcollection_findbytenant`},{operation:`findGlobal`,name:`accountcollection_findglobal`},{operation:`findWithGlobals`,name:`accountcollection_findwithglobals`},{operation:`getActive`,name:`accountcollection_getactive`},{operation:`getByProviderType`,name:`accountcollection_getbyprovidertype`},{operation:`getByType`,name:`accountcollection_getbytype`},{operation:`getInactive`,name:`accountcollection_getinactive`},{operation:`getStats`,name:`accountcollection_getstats`},{operation:`search`,name:`accountcollection_search`}],cli:[{operation:`get`,name:`account_get`},{operation:`list`,name:`account_list`},{operation:`findByTenant`,name:`accountcollection_findByTenant`},{operation:`findGlobal`,name:`accountcollection_findGlobal`},{operation:`findWithGlobals`,name:`accountcollection_findWithGlobals`},{operation:`getActive`,name:`accountcollection_getActive`},{operation:`getByProviderType`,name:`accountcollection_getByProviderType`},{operation:`getByType`,name:`accountcollection_getByType`},{operation:`getInactive`,name:`accountcollection_getInactive`},{operation:`getStats`,name:`accountcollection_getStats`},{operation:`search`,name:`accountcollection_search`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getActive`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getByProviderType`,async:!0,parameters:[`providerType: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`accountType: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getInactive`,async:!0,parameters:[],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getStats`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!0},{name:`search`,async:!0,parameters:[`query: string`,`filters?: AccountSearchFilters`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:Attachment`,name:`Attachment`,collection:`attachments`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`messageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`filename`,type:`text`,required:!1},{name:`contentType`,type:`text`,required:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`contentId`,type:`text`,required:!1},{name:`contentDisposition`,type:`text`,required:!1,default:`attachment`,enum:[`attachment`,`inline`]},{name:`filePath`,type:`text`,required:!1},{name:`sourceUrl`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/attachments/getByMessage`},{method:`POST`,path:`/attachments/getByContentType`},{method:`POST`,path:`/attachments/getImages`},{method:`POST`,path:`/attachments/getPdfs`},{method:`POST`,path:`/attachments/getInline`},{method:`POST`,path:`/attachments/getRegular`},{method:`POST`,path:`/attachments/getWithExternalFiles`},{method:`POST`,path:`/attachments/getTotalSize`},{method:`POST`,path:`/attachments/getLargest`},{method:`POST`,path:`/attachments/searchByFilename`},{method:`POST`,path:`/attachments/getByExtension`},{method:`POST`,path:`/attachments/getStats`},{method:`POST`,path:`/attachments/deleteByMessage`},{method:`POST`,path:`/attachments/findByTenant`},{method:`POST`,path:`/attachments/findGlobal`},{method:`POST`,path:`/attachments/findWithGlobals`},{method:`GET`,path:`/attachments`},{method:`GET`,path:`/attachments/[id]`},{method:`POST`,path:`/attachments`},{method:`DELETE`,path:`/attachments/[id]`}],mcp:[{operation:`get`,name:`attachment_get`},{operation:`list`,name:`attachment_list`},{operation:`deleteByMessage`,name:`attachmentcollection_deletebymessage`},{operation:`findByTenant`,name:`attachmentcollection_findbytenant`},{operation:`findGlobal`,name:`attachmentcollection_findglobal`},{operation:`findWithGlobals`,name:`attachmentcollection_findwithglobals`},{operation:`getByContentType`,name:`attachmentcollection_getbycontenttype`},{operation:`getByExtension`,name:`attachmentcollection_getbyextension`},{operation:`getByMessage`,name:`attachmentcollection_getbymessage`},{operation:`getImages`,name:`attachmentcollection_getimages`},{operation:`getInline`,name:`attachmentcollection_getinline`},{operation:`getLargest`,name:`attachmentcollection_getlargest`},{operation:`getPdfs`,name:`attachmentcollection_getpdfs`},{operation:`getRegular`,name:`attachmentcollection_getregular`},{operation:`getStats`,name:`attachmentcollection_getstats`},{operation:`getTotalSize`,name:`attachmentcollection_gettotalsize`},{operation:`getWithExternalFiles`,name:`attachmentcollection_getwithexternalfiles`},{operation:`searchByFilename`,name:`attachmentcollection_searchbyfilename`}],cli:[{operation:`create`,name:`attachment_create`},{operation:`delete`,name:`attachment_delete`},{operation:`get`,name:`attachment_get`},{operation:`getExtension`,name:`attachment_getExtension`},{operation:`getFormattedSize`,name:`attachment_getFormattedSize`},{operation:`getMessage`,name:`attachment_getMessage`},{operation:`hasExternalFile`,name:`attachment_hasExternalFile`},{operation:`isImage`,name:`attachment_isImage`},{operation:`isInline`,name:`attachment_isInline`},{operation:`isPdf`,name:`attachment_isPdf`},{operation:`list`,name:`attachment_list`},{operation:`readContent`,name:`attachment_readContent`},{operation:`update`,name:`attachment_update`},{operation:`deleteByMessage`,name:`attachmentcollection_deleteByMessage`},{operation:`findByTenant`,name:`attachmentcollection_findByTenant`},{operation:`findGlobal`,name:`attachmentcollection_findGlobal`},{operation:`findWithGlobals`,name:`attachmentcollection_findWithGlobals`},{operation:`getByContentType`,name:`attachmentcollection_getByContentType`},{operation:`getByExtension`,name:`attachmentcollection_getByExtension`},{operation:`getByMessage`,name:`attachmentcollection_getByMessage`},{operation:`getImages`,name:`attachmentcollection_getImages`},{operation:`getInline`,name:`attachmentcollection_getInline`},{operation:`getLargest`,name:`attachmentcollection_getLargest`},{operation:`getPdfs`,name:`attachmentcollection_getPdfs`},{operation:`getRegular`,name:`attachmentcollection_getRegular`},{operation:`getStats`,name:`attachmentcollection_getStats`},{operation:`getTotalSize`,name:`attachmentcollection_getTotalSize`},{operation:`getWithExternalFiles`,name:`attachmentcollection_getWithExternalFiles`},{operation:`searchByFilename`,name:`attachmentcollection_searchByFilename`}],methods:[{name:`deleteByMessage`,async:!0,parameters:[`messageId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getByContentType`,async:!0,parameters:[`contentType: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getByExtension`,async:!0,parameters:[`extension: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getByMessage`,async:!0,parameters:[`messageId: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getExtension`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`getFormattedSize`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`getImages`,async:!0,parameters:[`messageId?: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getInline`,async:!0,parameters:[`messageId: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getLargest`,async:!0,parameters:[`limit?: any`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getMessage`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPdfs`,async:!0,parameters:[`messageId?: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getRegular`,async:!0,parameters:[`messageId: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`getStats`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!0},{name:`getTotalSize`,async:!0,parameters:[`messageId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getWithExternalFiles`,async:!0,parameters:[],returnType:`Promise<Attachment[]>`,aiCallable:!0},{name:`hasExternalFile`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isImage`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInline`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPdf`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`readContent`,async:!0,parameters:[],returnType:`Promise<Buffer | null>`,aiCallable:!1},{name:`searchByFilename`,async:!0,parameters:[`query: string`],returnType:`Promise<Attachment[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-messages:Message`],exposed:!0},{id:`@happyvertical/smrt-messages:Blacklist`,name:`Blacklist`,collection:`blacklists`,description:`Block entries for email filtering`,fields:[{name:`pattern`,type:`text`,required:!1,default:``},{name:`type`,type:`text`,required:!1,default:`email`,enum:[`email`,`domain`,`regex`]},{name:`reason`,type:`text`,required:!1,default:``},{name:`autoArchive`,type:`boolean`,required:!1,default:!0},{name:`tenantId`,type:`text`,required:!0,system:!0}],rest:[{method:`POST`,path:`/blacklists/isBlacklisted`},{method:`POST`,path:`/blacklists/getMatchingEntry`},{method:`GET`,path:`/blacklists`},{method:`GET`,path:`/blacklists/[id]`},{method:`POST`,path:`/blacklists`},{method:`PATCH`,path:`/blacklists/[id]`},{method:`DELETE`,path:`/blacklists/[id]`}],mcp:[{operation:`create`,name:`blacklist_create`},{operation:`delete`,name:`blacklist_delete`},{operation:`get`,name:`blacklist_get`},{operation:`list`,name:`blacklist_list`},{operation:`matches`,name:`blacklist_matches`},{operation:`update`,name:`blacklist_update`},{operation:`getMatchingEntry`,name:`blacklistcollection_getmatchingentry`},{operation:`isBlacklisted`,name:`blacklistcollection_isblacklisted`}],cli:[{operation:`create`,name:`blacklist_create`},{operation:`delete`,name:`blacklist_delete`},{operation:`get`,name:`blacklist_get`},{operation:`list`,name:`blacklist_list`},{operation:`matches`,name:`blacklist_matches`},{operation:`update`,name:`blacklist_update`},{operation:`getMatchingEntry`,name:`blacklistcollection_getMatchingEntry`},{operation:`isBlacklisted`,name:`blacklistcollection_isBlacklisted`}],methods:[{name:`getMatchingEntry`,async:!0,parameters:[`email: string`],returnType:`Promise<Blacklist | null>`,aiCallable:!0},{name:`isBlacklisted`,async:!0,parameters:[`email: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`matches`,async:!1,parameters:[`email: string`],returnType:`boolean`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:Email`,name:`Email`,collection:`messages`,extends:`@happyvertical/smrt-messages:Message`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Account`},{name:`personaId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`endpointId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:MessagingEndpoint`},{name:`correlationId`,type:`text`,required:!1},{name:`threadId`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`fromAddress`,type:`text`,required:!1},{name:`fromName`,type:`text`,required:!1},{name:`toAddresses`,type:`text`,required:!1},{name:`date`,type:`datetime`,required:!1},{name:`isRead`,type:`boolean`,required:!0,default:!1},{name:`isFlagged`,type:`boolean`,required:!0,default:!1},{name:`hasAttachments`,type:`boolean`,required:!0,default:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`metadata`,type:`text`,required:!1},{name:`sendStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`pending`,`sending`,`sent`,`failed`,`scheduled`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`sendError`,type:`text`,required:!1},{name:`retryCount`,type:`integer`,required:!0,default:0},{name:`maxRetries`,type:`integer`,required:!0,default:3},{name:`scheduledSendAt`,type:`datetime`,required:!1},{name:`inReplyToMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`messageId`,type:`text`,required:!1},{name:`inReplyTo`,type:`text`,required:!1},{name:`ccAddresses`,type:`text`,required:!1},{name:`bccAddresses`,type:`text`,required:!1},{name:`replyToAddress`,type:`text`,required:!1},{name:`replyToName`,type:`text`,required:!1},{name:`textBody`,type:`text`,required:!1},{name:`htmlBody`,type:`text`,required:!1},{name:`folderId`,type:`text`,required:!1},{name:`folderPath`,type:`text`,required:!1},{name:`labels`,type:`text`,required:!1},{name:`flags`,type:`text`,required:!1},{name:`isAnswered`,type:`boolean`,required:!0,default:!1},{name:`isDraft`,type:`boolean`,required:!0,default:!1},{name:`rawMessage`,type:`text`,required:!1},{name:`headers`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/messages/search`},{method:`POST`,path:`/messages/getByAccounts`},{method:`POST`,path:`/messages/getByType`},{method:`POST`,path:`/messages/getUnread`},{method:`POST`,path:`/messages/getFlagged`},{method:`POST`,path:`/messages/getRecent`},{method:`POST`,path:`/messages/getByThread`},{method:`POST`,path:`/messages/markAllRead`},{method:`POST`,path:`/messages/getAccountStats`},{method:`POST`,path:`/messages/getDrafts`},{method:`POST`,path:`/messages/getSent`},{method:`POST`,path:`/messages/getScheduled`},{method:`POST`,path:`/messages/getFailedSends`},{method:`POST`,path:`/messages/getOutbox`},{method:`POST`,path:`/messages/findByTenant`},{method:`POST`,path:`/messages/findGlobal`},{method:`POST`,path:`/messages/findWithGlobals`},{method:`POST`,path:`/messages/getByMessageId`},{method:`POST`,path:`/messages/getByAccount`},{method:`POST`,path:`/messages/getByFolder`},{method:`POST`,path:`/messages/getWithAttachments`},{method:`POST`,path:`/messages/countByFolder`},{method:`POST`,path:`/messages/countUnreadByFolder`},{method:`POST`,path:`/messages/countUnreadByAccount`},{method:`POST`,path:`/messages/searchEmails`},{method:`POST`,path:`/messages/markFolderRead`},{method:`POST`,path:`/messages/deleteByFolder`},{method:`GET`,path:`/messages`},{method:`GET`,path:`/messages/[id]`},{method:`POST`,path:`/messages`},{method:`PATCH`,path:`/messages/[id]`},{method:`DELETE`,path:`/messages/[id]`}],mcp:[{operation:`get`,name:`email_get`},{operation:`list`,name:`email_list`},{operation:`countByFolder`,name:`emailcollection_countbyfolder`},{operation:`countUnreadByAccount`,name:`emailcollection_countunreadbyaccount`},{operation:`countUnreadByFolder`,name:`emailcollection_countunreadbyfolder`},{operation:`deleteByFolder`,name:`emailcollection_deletebyfolder`},{operation:`findByTenant`,name:`emailcollection_findbytenant`},{operation:`findGlobal`,name:`emailcollection_findglobal`},{operation:`findWithGlobals`,name:`emailcollection_findwithglobals`},{operation:`getAccountStats`,name:`emailcollection_getaccountstats`},{operation:`getByAccount`,name:`emailcollection_getbyaccount`},{operation:`getByAccounts`,name:`emailcollection_getbyaccounts`},{operation:`getByFolder`,name:`emailcollection_getbyfolder`},{operation:`getByMessageId`,name:`emailcollection_getbymessageid`},{operation:`getByThread`,name:`emailcollection_getbythread`},{operation:`getByType`,name:`emailcollection_getbytype`},{operation:`getDrafts`,name:`emailcollection_getdrafts`},{operation:`getFailedSends`,name:`emailcollection_getfailedsends`},{operation:`getFlagged`,name:`emailcollection_getflagged`},{operation:`getOutbox`,name:`emailcollection_getoutbox`},{operation:`getRecent`,name:`emailcollection_getrecent`},{operation:`getScheduled`,name:`emailcollection_getscheduled`},{operation:`getSent`,name:`emailcollection_getsent`},{operation:`getUnread`,name:`emailcollection_getunread`},{operation:`getWithAttachments`,name:`emailcollection_getwithattachments`},{operation:`markAllRead`,name:`emailcollection_markallread`},{operation:`markFolderRead`,name:`emailcollection_markfolderread`},{operation:`search`,name:`emailcollection_search`},{operation:`searchEmails`,name:`emailcollection_searchemails`}],cli:[{operation:`create`,name:`email_create`},{operation:`createForward`,name:`email_createForward`},{operation:`createReply`,name:`email_createReply`},{operation:`delete`,name:`email_delete`},{operation:`get`,name:`email_get`},{operation:`getAccount`,name:`email_getAccount`},{operation:`getAttachments`,name:`email_getAttachments`},{operation:`getBccAddresses`,name:`email_getBccAddresses`},{operation:`getCcAddresses`,name:`email_getCcAddresses`},{operation:`getEndpoint`,name:`email_getEndpoint`},{operation:`getFlags`,name:`email_getFlags`},{operation:`getFolder`,name:`email_getFolder`},{operation:`getHeaders`,name:`email_getHeaders`},{operation:`getLabels`,name:`email_getLabels`},{operation:`getMetadata`,name:`email_getMetadata`},{operation:`getPreview`,name:`email_getPreview`},{operation:`getReferences`,name:`email_getReferences`},{operation:`getThreadEmails`,name:`email_getThreadEmails`},{operation:`getThreadMessages`,name:`email_getThreadMessages`},{operation:`getToAddresses`,name:`email_getToAddresses`},{operation:`isUnread`,name:`email_isUnread`},{operation:`list`,name:`email_list`},{operation:`markRead`,name:`email_markRead`},{operation:`markUnread`,name:`email_markUnread`},{operation:`retrySend`,name:`email_retrySend`},{operation:`send`,name:`email_send`},{operation:`setFlags`,name:`email_setFlags`},{operation:`setHeaders`,name:`email_setHeaders`},{operation:`setLabels`,name:`email_setLabels`},{operation:`setMetadata`,name:`email_setMetadata`},{operation:`setToAddresses`,name:`email_setToAddresses`},{operation:`toggleFlagged`,name:`email_toggleFlagged`},{operation:`update`,name:`email_update`},{operation:`countByFolder`,name:`emailcollection_countByFolder`},{operation:`countUnreadByAccount`,name:`emailcollection_countUnreadByAccount`},{operation:`countUnreadByFolder`,name:`emailcollection_countUnreadByFolder`},{operation:`deleteByFolder`,name:`emailcollection_deleteByFolder`},{operation:`findByTenant`,name:`emailcollection_findByTenant`},{operation:`findGlobal`,name:`emailcollection_findGlobal`},{operation:`findWithGlobals`,name:`emailcollection_findWithGlobals`},{operation:`getAccountStats`,name:`emailcollection_getAccountStats`},{operation:`getByAccount`,name:`emailcollection_getByAccount`},{operation:`getByAccounts`,name:`emailcollection_getByAccounts`},{operation:`getByFolder`,name:`emailcollection_getByFolder`},{operation:`getByMessageId`,name:`emailcollection_getByMessageId`},{operation:`getByThread`,name:`emailcollection_getByThread`},{operation:`getByType`,name:`emailcollection_getByType`},{operation:`getDrafts`,name:`emailcollection_getDrafts`},{operation:`getFailedSends`,name:`emailcollection_getFailedSends`},{operation:`getFlagged`,name:`emailcollection_getFlagged`},{operation:`getOutbox`,name:`emailcollection_getOutbox`},{operation:`getRecent`,name:`emailcollection_getRecent`},{operation:`getScheduled`,name:`emailcollection_getScheduled`},{operation:`getSent`,name:`emailcollection_getSent`},{operation:`getUnread`,name:`emailcollection_getUnread`},{operation:`getWithAttachments`,name:`emailcollection_getWithAttachments`},{operation:`markAllRead`,name:`emailcollection_markAllRead`},{operation:`markFolderRead`,name:`emailcollection_markFolderRead`},{operation:`search`,name:`emailcollection_search`},{operation:`searchEmails`,name:`emailcollection_searchEmails`}],methods:[{name:`countByFolder`,async:!0,parameters:[`folderId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`countUnreadByAccount`,async:!0,parameters:[`accountId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`countUnreadByFolder`,async:!0,parameters:[`folderId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`createForward`,async:!1,parameters:[],returnType:`Email`,aiCallable:!1},{name:`createReply`,async:!1,parameters:[`options?: object`],returnType:`Email`,aiCallable:!1},{name:`deleteByFolder`,async:!0,parameters:[`folderId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAccountStats`,async:!0,parameters:[`accountId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getAttachments`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getBccAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getByAccount`,async:!0,parameters:[`accountId: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getByAccounts`,async:!0,parameters:[`accountIds: string[]`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getByFolder`,async:!0,parameters:[`folderId: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getByMessageId`,async:!0,parameters:[`accountId: string`,`messageId: string`],returnType:`Promise<Email | null>`,aiCallable:!0},{name:`getByThread`,async:!0,parameters:[`threadId: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`messageType: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getCcAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getDrafts`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getEndpoint`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFailedSends`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getFlagged`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getFlags`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getFolder`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getHeaders`,async:!1,parameters:[],returnType:`Record<string, string | string[]>`,aiCallable:!1},{name:`getLabels`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getOutbox`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getPreview`,async:!1,parameters:[`maxLength?: any`],returnType:`string`,aiCallable:!1},{name:`getRecent`,async:!0,parameters:[`limit?: any`,`accountId?: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getReferences`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getScheduled`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getSent`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getThreadEmails`,async:!0,parameters:[],returnType:`Promise<Email[]>`,aiCallable:!1},{name:`getThreadMessages`,async:!0,parameters:[],returnType:`Promise<Message[]>`,aiCallable:!1},{name:`getToAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getUnread`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`getWithAttachments`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`isUnread`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markAllRead`,async:!0,parameters:[`messageIds: string[]`],returnType:`Promise<void>`,aiCallable:!0},{name:`markFolderRead`,async:!0,parameters:[`folderId: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`markRead`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`markUnread`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`retrySend`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`filters?: EmailSearchFilters`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`searchEmails`,async:!0,parameters:[`query: string`,`filters?: EmailSearchFilters`],returnType:`Promise<Email[]>`,aiCallable:!0},{name:`send`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`setFlags`,async:!1,parameters:[`flags: string[]`],returnType:`void`,aiCallable:!1},{name:`setHeaders`,async:!1,parameters:[`headers: Record<string, string | string[]>`],returnType:`void`,aiCallable:!1},{name:`setLabels`,async:!1,parameters:[`labels: string[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setToAddresses`,async:!1,parameters:[`addresses: Array<object>`],returnType:`void`,aiCallable:!1},{name:`toggleFlagged`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-messages:Account`,`@happyvertical/smrt-messages:Message`,`@happyvertical/smrt-messages:MessagingEndpoint`,`@happyvertical/smrt-personas:AgentPersona`],exposed:!0},{id:`@happyvertical/smrt-messages:EmailAccount`,name:`EmailAccount`,collection:`accounts`,extends:`@happyvertical/smrt-messages:Account`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`email`,type:`text`,required:!1},{name:`syncIntervalMinutes`,type:`integer`,required:!0,default:60}],rest:[{method:`POST`,path:`/accounts/getActive`},{method:`POST`,path:`/accounts/getInactive`},{method:`POST`,path:`/accounts/getByProviderType`},{method:`POST`,path:`/accounts/getByType`},{method:`POST`,path:`/accounts/search`},{method:`POST`,path:`/accounts/getStats`},{method:`POST`,path:`/accounts/findByTenant`},{method:`POST`,path:`/accounts/findGlobal`},{method:`POST`,path:`/accounts/findWithGlobals`},{method:`POST`,path:`/accounts/getByEmail`},{method:`POST`,path:`/accounts/getByEmailProviderType`},{method:`POST`,path:`/accounts/getNeedingSync`},{method:`POST`,path:`/accounts/searchEmailAccounts`},{method:`POST`,path:`/accounts/syncAll`},{method:`POST`,path:`/accounts/getTotalUnreadCount`},{method:`POST`,path:`/accounts/getEmailStats`},{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`emailaccount_get`},{operation:`list`,name:`emailaccount_list`},{operation:`findByTenant`,name:`emailaccountcollection_findbytenant`},{operation:`findGlobal`,name:`emailaccountcollection_findglobal`},{operation:`findWithGlobals`,name:`emailaccountcollection_findwithglobals`},{operation:`getActive`,name:`emailaccountcollection_getactive`},{operation:`getByEmail`,name:`emailaccountcollection_getbyemail`},{operation:`getByEmailProviderType`,name:`emailaccountcollection_getbyemailprovidertype`},{operation:`getByProviderType`,name:`emailaccountcollection_getbyprovidertype`},{operation:`getByType`,name:`emailaccountcollection_getbytype`},{operation:`getEmailStats`,name:`emailaccountcollection_getemailstats`},{operation:`getInactive`,name:`emailaccountcollection_getinactive`},{operation:`getNeedingSync`,name:`emailaccountcollection_getneedingsync`},{operation:`getStats`,name:`emailaccountcollection_getstats`},{operation:`getTotalUnreadCount`,name:`emailaccountcollection_gettotalunreadcount`},{operation:`search`,name:`emailaccountcollection_search`},{operation:`searchEmailAccounts`,name:`emailaccountcollection_searchemailaccounts`},{operation:`syncAll`,name:`emailaccountcollection_syncall`}],cli:[{operation:`get`,name:`emailaccount_get`},{operation:`list`,name:`emailaccount_list`},{operation:`findByTenant`,name:`emailaccountcollection_findByTenant`},{operation:`findGlobal`,name:`emailaccountcollection_findGlobal`},{operation:`findWithGlobals`,name:`emailaccountcollection_findWithGlobals`},{operation:`getActive`,name:`emailaccountcollection_getActive`},{operation:`getByEmail`,name:`emailaccountcollection_getByEmail`},{operation:`getByEmailProviderType`,name:`emailaccountcollection_getByEmailProviderType`},{operation:`getByProviderType`,name:`emailaccountcollection_getByProviderType`},{operation:`getByType`,name:`emailaccountcollection_getByType`},{operation:`getEmailStats`,name:`emailaccountcollection_getEmailStats`},{operation:`getInactive`,name:`emailaccountcollection_getInactive`},{operation:`getNeedingSync`,name:`emailaccountcollection_getNeedingSync`},{operation:`getStats`,name:`emailaccountcollection_getStats`},{operation:`getTotalUnreadCount`,name:`emailaccountcollection_getTotalUnreadCount`},{operation:`search`,name:`emailaccountcollection_search`},{operation:`searchEmailAccounts`,name:`emailaccountcollection_searchEmailAccounts`},{operation:`syncAll`,name:`emailaccountcollection_syncAll`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createClient`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getActive`,async:!0,parameters:[],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<EmailAccount | null>`,aiCallable:!0},{name:`getByEmailProviderType`,async:!0,parameters:[`providerType: ProviderType`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getByProviderType`,async:!0,parameters:[`providerType: string`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`accountType: string`],returnType:`Promise<Account[]>`,aiCallable:!0},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getEmailStats`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!0},{name:`getEmails`,async:!0,parameters:[`limit?: number`],returnType:`any`,aiCallable:!1},{name:`getFolders`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getInactive`,async:!0,parameters:[],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getNeedingSync`,async:!0,parameters:[`maxAgeMinutes?: any`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getStats`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!0},{name:`getTotalUnreadCount`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!0},{name:`getUnreadCount`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!1},{name:`migrateToSecrets`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`readIntakeMessage`,async:!0,parameters:[`locator: string`,`maxBytes: number`,`imapIdentity?: object`],returnType:`any`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`filters?: EmailAccountSearchFilters`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`searchEmailAccounts`,async:!0,parameters:[`query: string`,`filters?: EmailAccountSearchFilters`],returnType:`Promise<EmailAccount[]>`,aiCallable:!0},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`syncAll`,async:!0,parameters:[`args?: Record<string, unknown>`],returnType:`Promise<Map<string, object>>`,aiCallable:!0},{name:`syncFrom`,async:!0,parameters:[`options?: SyncOptions`],returnType:`Promise<SyncResult>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:EmailFolder`,name:`EmailFolder`,collection:`emailfolders`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Account`},{name:`name`,type:`text`,required:!1},{name:`path`,type:`text`,required:!1},{name:`delimiter`,type:`text`,required:!1},{name:`specialUse`,type:`text`,required:!1},{name:`messageCount`,type:`integer`,required:!0,default:0},{name:`unreadCount`,type:`integer`,required:!0,default:0},{name:`subscribed`,type:`boolean`,required:!0,default:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/emailfolders/getByPath`},{method:`POST`,path:`/emailfolders/getByAccount`},{method:`POST`,path:`/emailfolders/getInbox`},{method:`POST`,path:`/emailfolders/getSent`},{method:`POST`,path:`/emailfolders/getDrafts`},{method:`POST`,path:`/emailfolders/getTrash`},{method:`POST`,path:`/emailfolders/getSpam`},{method:`POST`,path:`/emailfolders/getSystemFolders`},{method:`POST`,path:`/emailfolders/getUserFolders`},{method:`POST`,path:`/emailfolders/getSubscribed`},{method:`POST`,path:`/emailfolders/getWithUnread`},{method:`POST`,path:`/emailfolders/search`},{method:`POST`,path:`/emailfolders/refreshAllCounts`},{method:`POST`,path:`/emailfolders/getAccountStats`},{method:`POST`,path:`/emailfolders/createSystemFolders`},{method:`POST`,path:`/emailfolders/findByTenant`},{method:`POST`,path:`/emailfolders/findGlobal`},{method:`POST`,path:`/emailfolders/findWithGlobals`},{method:`GET`,path:`/emailfolders`},{method:`GET`,path:`/emailfolders/[id]`},{method:`POST`,path:`/emailfolders`},{method:`PATCH`,path:`/emailfolders/[id]`},{method:`DELETE`,path:`/emailfolders/[id]`}],mcp:[{operation:`get`,name:`emailfolder_get`},{operation:`list`,name:`emailfolder_list`},{operation:`createSystemFolders`,name:`emailfoldercollection_createsystemfolders`},{operation:`findByTenant`,name:`emailfoldercollection_findbytenant`},{operation:`findGlobal`,name:`emailfoldercollection_findglobal`},{operation:`findWithGlobals`,name:`emailfoldercollection_findwithglobals`},{operation:`getAccountStats`,name:`emailfoldercollection_getaccountstats`},{operation:`getByAccount`,name:`emailfoldercollection_getbyaccount`},{operation:`getByPath`,name:`emailfoldercollection_getbypath`},{operation:`getDrafts`,name:`emailfoldercollection_getdrafts`},{operation:`getInbox`,name:`emailfoldercollection_getinbox`},{operation:`getSent`,name:`emailfoldercollection_getsent`},{operation:`getSpam`,name:`emailfoldercollection_getspam`},{operation:`getSubscribed`,name:`emailfoldercollection_getsubscribed`},{operation:`getSystemFolders`,name:`emailfoldercollection_getsystemfolders`},{operation:`getTrash`,name:`emailfoldercollection_gettrash`},{operation:`getUserFolders`,name:`emailfoldercollection_getuserfolders`},{operation:`getWithUnread`,name:`emailfoldercollection_getwithunread`},{operation:`refreshAllCounts`,name:`emailfoldercollection_refreshallcounts`},{operation:`search`,name:`emailfoldercollection_search`}],cli:[{operation:`create`,name:`emailfolder_create`},{operation:`delete`,name:`emailfolder_delete`},{operation:`get`,name:`emailfolder_get`},{operation:`getAccount`,name:`emailfolder_getAccount`},{operation:`getEmails`,name:`emailfolder_getEmails`},{operation:`getUnreadEmails`,name:`emailfolder_getUnreadEmails`},{operation:`isDrafts`,name:`emailfolder_isDrafts`},{operation:`isInbox`,name:`emailfolder_isInbox`},{operation:`isSent`,name:`emailfolder_isSent`},{operation:`isSpam`,name:`emailfolder_isSpam`},{operation:`isSystemFolder`,name:`emailfolder_isSystemFolder`},{operation:`isTrash`,name:`emailfolder_isTrash`},{operation:`list`,name:`emailfolder_list`},{operation:`refreshCounts`,name:`emailfolder_refreshCounts`},{operation:`subscribe`,name:`emailfolder_subscribe`},{operation:`unsubscribe`,name:`emailfolder_unsubscribe`},{operation:`update`,name:`emailfolder_update`},{operation:`createSystemFolders`,name:`emailfoldercollection_createSystemFolders`},{operation:`findByTenant`,name:`emailfoldercollection_findByTenant`},{operation:`findGlobal`,name:`emailfoldercollection_findGlobal`},{operation:`findWithGlobals`,name:`emailfoldercollection_findWithGlobals`},{operation:`getAccountStats`,name:`emailfoldercollection_getAccountStats`},{operation:`getByAccount`,name:`emailfoldercollection_getByAccount`},{operation:`getByPath`,name:`emailfoldercollection_getByPath`},{operation:`getDrafts`,name:`emailfoldercollection_getDrafts`},{operation:`getInbox`,name:`emailfoldercollection_getInbox`},{operation:`getSent`,name:`emailfoldercollection_getSent`},{operation:`getSpam`,name:`emailfoldercollection_getSpam`},{operation:`getSubscribed`,name:`emailfoldercollection_getSubscribed`},{operation:`getSystemFolders`,name:`emailfoldercollection_getSystemFolders`},{operation:`getTrash`,name:`emailfoldercollection_getTrash`},{operation:`getUserFolders`,name:`emailfoldercollection_getUserFolders`},{operation:`getWithUnread`,name:`emailfoldercollection_getWithUnread`},{operation:`refreshAllCounts`,name:`emailfoldercollection_refreshAllCounts`},{operation:`search`,name:`emailfoldercollection_search`}],methods:[{name:`createSystemFolders`,async:!0,parameters:[`accountId: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAccountStats`,async:!0,parameters:[`accountId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getByAccount`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`getByPath`,async:!0,parameters:[`accountId: string`,`path: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getDrafts`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getEmails`,async:!0,parameters:[`limit?: number`],returnType:`any`,aiCallable:!1},{name:`getInbox`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getSent`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getSpam`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getSubscribed`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`getSystemFolders`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`getTrash`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder | null>`,aiCallable:!0},{name:`getUnreadEmails`,async:!0,parameters:[`limit?: number`],returnType:`any`,aiCallable:!1},{name:`getUserFolders`,async:!0,parameters:[`accountId: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`getWithUnread`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`isDrafts`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInbox`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSent`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSpam`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSystemFolder`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTrash`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`refreshAllCounts`,async:!0,parameters:[`accountId: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`refreshCounts`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`filters?: EmailFolderSearchFilters`],returnType:`Promise<EmailFolder[]>`,aiCallable:!0},{name:`subscribe`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`unsubscribe`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-messages:Account`],exposed:!0},{id:`@happyvertical/smrt-messages:Message`,name:`Message`,collection:`messages`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Account`},{name:`personaId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`endpointId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:MessagingEndpoint`},{name:`correlationId`,type:`text`,required:!1},{name:`threadId`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`fromAddress`,type:`text`,required:!1},{name:`fromName`,type:`text`,required:!1},{name:`toAddresses`,type:`text`,required:!1},{name:`date`,type:`datetime`,required:!1},{name:`isRead`,type:`boolean`,required:!0,default:!1},{name:`isFlagged`,type:`boolean`,required:!0,default:!1},{name:`hasAttachments`,type:`boolean`,required:!0,default:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`metadata`,type:`text`,required:!1},{name:`sendStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`pending`,`sending`,`sent`,`failed`,`scheduled`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`sendError`,type:`text`,required:!1},{name:`retryCount`,type:`integer`,required:!0,default:0},{name:`maxRetries`,type:`integer`,required:!0,default:3},{name:`scheduledSendAt`,type:`datetime`,required:!1},{name:`inReplyToMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/messages/search`},{method:`POST`,path:`/messages/getByAccounts`},{method:`POST`,path:`/messages/getByType`},{method:`POST`,path:`/messages/getUnread`},{method:`POST`,path:`/messages/getFlagged`},{method:`POST`,path:`/messages/getRecent`},{method:`POST`,path:`/messages/getByThread`},{method:`POST`,path:`/messages/markAllRead`},{method:`POST`,path:`/messages/getAccountStats`},{method:`POST`,path:`/messages/getDrafts`},{method:`POST`,path:`/messages/getSent`},{method:`POST`,path:`/messages/getScheduled`},{method:`POST`,path:`/messages/getFailedSends`},{method:`POST`,path:`/messages/getOutbox`},{method:`POST`,path:`/messages/findByTenant`},{method:`POST`,path:`/messages/findGlobal`},{method:`POST`,path:`/messages/findWithGlobals`},{method:`GET`,path:`/messages`},{method:`GET`,path:`/messages/[id]`}],mcp:[{operation:`get`,name:`message_get`},{operation:`list`,name:`message_list`},{operation:`findByTenant`,name:`messagecollection_findbytenant`},{operation:`findGlobal`,name:`messagecollection_findglobal`},{operation:`findWithGlobals`,name:`messagecollection_findwithglobals`},{operation:`getAccountStats`,name:`messagecollection_getaccountstats`},{operation:`getByAccounts`,name:`messagecollection_getbyaccounts`},{operation:`getByThread`,name:`messagecollection_getbythread`},{operation:`getByType`,name:`messagecollection_getbytype`},{operation:`getDrafts`,name:`messagecollection_getdrafts`},{operation:`getFailedSends`,name:`messagecollection_getfailedsends`},{operation:`getFlagged`,name:`messagecollection_getflagged`},{operation:`getOutbox`,name:`messagecollection_getoutbox`},{operation:`getRecent`,name:`messagecollection_getrecent`},{operation:`getScheduled`,name:`messagecollection_getscheduled`},{operation:`getSent`,name:`messagecollection_getsent`},{operation:`getUnread`,name:`messagecollection_getunread`},{operation:`markAllRead`,name:`messagecollection_markallread`},{operation:`search`,name:`messagecollection_search`}],cli:[{operation:`create`,name:`message_create`},{operation:`createForward`,name:`message_createForward`},{operation:`createReply`,name:`message_createReply`},{operation:`delete`,name:`message_delete`},{operation:`get`,name:`message_get`},{operation:`getAccount`,name:`message_getAccount`},{operation:`getAttachments`,name:`message_getAttachments`},{operation:`getEndpoint`,name:`message_getEndpoint`},{operation:`getMetadata`,name:`message_getMetadata`},{operation:`getPreview`,name:`message_getPreview`},{operation:`getThreadMessages`,name:`message_getThreadMessages`},{operation:`getToAddresses`,name:`message_getToAddresses`},{operation:`isUnread`,name:`message_isUnread`},{operation:`list`,name:`message_list`},{operation:`markRead`,name:`message_markRead`},{operation:`markUnread`,name:`message_markUnread`},{operation:`retrySend`,name:`message_retrySend`},{operation:`send`,name:`message_send`},{operation:`setMetadata`,name:`message_setMetadata`},{operation:`setToAddresses`,name:`message_setToAddresses`},{operation:`toggleFlagged`,name:`message_toggleFlagged`},{operation:`update`,name:`message_update`},{operation:`findByTenant`,name:`messagecollection_findByTenant`},{operation:`findGlobal`,name:`messagecollection_findGlobal`},{operation:`findWithGlobals`,name:`messagecollection_findWithGlobals`},{operation:`getAccountStats`,name:`messagecollection_getAccountStats`},{operation:`getByAccounts`,name:`messagecollection_getByAccounts`},{operation:`getByThread`,name:`messagecollection_getByThread`},{operation:`getByType`,name:`messagecollection_getByType`},{operation:`getDrafts`,name:`messagecollection_getDrafts`},{operation:`getFailedSends`,name:`messagecollection_getFailedSends`},{operation:`getFlagged`,name:`messagecollection_getFlagged`},{operation:`getOutbox`,name:`messagecollection_getOutbox`},{operation:`getRecent`,name:`messagecollection_getRecent`},{operation:`getScheduled`,name:`messagecollection_getScheduled`},{operation:`getSent`,name:`messagecollection_getSent`},{operation:`getUnread`,name:`messagecollection_getUnread`},{operation:`markAllRead`,name:`messagecollection_markAllRead`},{operation:`search`,name:`messagecollection_search`}],methods:[{name:`createForward`,async:!1,parameters:[],returnType:`Message`,aiCallable:!1},{name:`createReply`,async:!1,parameters:[`_options?: object`],returnType:`Message`,aiCallable:!1},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAccountStats`,async:!0,parameters:[`accountId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getAttachments`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getByAccounts`,async:!0,parameters:[`accountIds: string[]`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getByThread`,async:!0,parameters:[`threadId: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`messageType: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getDrafts`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getEndpoint`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFailedSends`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getFlagged`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getOutbox`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getPreview`,async:!1,parameters:[`maxLength?: any`],returnType:`string`,aiCallable:!1},{name:`getRecent`,async:!0,parameters:[`limit?: any`,`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getScheduled`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getSent`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`getThreadMessages`,async:!0,parameters:[],returnType:`Promise<Message[]>`,aiCallable:!1},{name:`getToAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getUnread`,async:!0,parameters:[`accountId?: string`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`isUnread`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markAllRead`,async:!0,parameters:[`messageIds: string[]`],returnType:`Promise<void>`,aiCallable:!0},{name:`markRead`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`markUnread`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`retrySend`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`search`,async:!0,parameters:[`query: string`,`filters?: MessageSearchFilters`],returnType:`Promise<Message[]>`,aiCallable:!0},{name:`send`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setToAddresses`,async:!1,parameters:[`addresses: Array<object>`],returnType:`void`,aiCallable:!1},{name:`toggleFlagged`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-messages:Account`,`@happyvertical/smrt-messages:Message`,`@happyvertical/smrt-messages:MessagingEndpoint`,`@happyvertical/smrt-personas:AgentPersona`],exposed:!0},{id:`@happyvertical/smrt-messages:MessagingEndpoint`,name:`MessagingEndpoint`,collection:`messagingendpoints`,display:{label:`label`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`label`,type:`text`,required:!0},{name:`channel`,type:`text`,required:!0,default:`email`},{name:`address`,type:`text`,required:!0},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`verifiedAt`,type:`datetime`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/messagingendpoints`},{method:`GET`,path:`/messagingendpoints/[id]`}],mcp:[{operation:`get`,name:`messagingendpoint_get`},{operation:`list`,name:`messagingendpoint_list`}],cli:[{operation:`get`,name:`messagingendpoint_get`},{operation:`list`,name:`messagingendpoint_list`}],methods:[{name:`getAddress`,async:!1,parameters:[],returnType:`T`,aiCallable:!1},{name:`getMaskedAddress`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`setAddress`,async:!1,parameters:[`address: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-messages:PersonaMessageRoute`,name:`PersonaMessageRoute`,collection:`personamessageroutes`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`personaId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`accountId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-messages:Account`},{name:`endpointId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-messages:MessagingEndpoint`},{name:`purpose`,type:`text`,required:!0},{name:`priority`,type:`integer`,required:!0,default:0},{name:`enabled`,type:`boolean`,required:!0,default:!0},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/personamessageroutes/forPersona`},{method:`GET`,path:`/personamessageroutes`},{method:`GET`,path:`/personamessageroutes/[id]`}],mcp:[{operation:`get`,name:`personamessageroute_get`},{operation:`list`,name:`personamessageroute_list`},{operation:`forPersona`,name:`personamessageroutecollection_forpersona`}],cli:[{operation:`get`,name:`personamessageroute_get`},{operation:`list`,name:`personamessageroute_list`},{operation:`forPersona`,name:`personamessageroutecollection_forPersona`}],methods:[{name:`forPersona`,async:!0,parameters:[`personaId: string`],returnType:`Promise<PersonaMessageRoute[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-messages:Account`,`@happyvertical/smrt-messages:MessagingEndpoint`,`@happyvertical/smrt-personas:AgentPersona`],exposed:!0},{id:`@happyvertical/smrt-messages:SlackAccount`,name:`SlackAccount`,collection:`accounts`,extends:`@happyvertical/smrt-messages:Account`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`workspaceId`,type:`text`,required:!1},{name:`workspaceName`,type:`text`,required:!1},{name:`botUserId`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`slackaccount_get`},{operation:`list`,name:`slackaccount_list`}],cli:[{operation:`get`,name:`slackaccount_get`},{operation:`list`,name:`slackaccount_list`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:SlackMessage`,name:`SlackMessage`,collection:`messages`,extends:`@happyvertical/smrt-messages:Message`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Account`},{name:`personaId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`endpointId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:MessagingEndpoint`},{name:`correlationId`,type:`text`,required:!1},{name:`threadId`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`fromAddress`,type:`text`,required:!1},{name:`fromName`,type:`text`,required:!1},{name:`toAddresses`,type:`text`,required:!1},{name:`date`,type:`datetime`,required:!1},{name:`isRead`,type:`boolean`,required:!0,default:!1},{name:`isFlagged`,type:`boolean`,required:!0,default:!1},{name:`hasAttachments`,type:`boolean`,required:!0,default:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`metadata`,type:`text`,required:!1},{name:`sendStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`pending`,`sending`,`sent`,`failed`,`scheduled`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`sendError`,type:`text`,required:!1},{name:`retryCount`,type:`integer`,required:!0,default:0},{name:`maxRetries`,type:`integer`,required:!0,default:3},{name:`scheduledSendAt`,type:`datetime`,required:!1},{name:`inReplyToMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`channelId`,type:`text`,required:!1},{name:`channelName`,type:`text`,required:!1},{name:`slackTs`,type:`text`,required:!1},{name:`slackThreadTs`,type:`text`,required:!1},{name:`reactions`,type:`text`,required:!1},{name:`isEdited`,type:`boolean`,required:!0,default:!1},{name:`messageType`,type:`text`,required:!1},{name:`blocks`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/messages`},{method:`GET`,path:`/messages/[id]`},{method:`POST`,path:`/messages`}],mcp:[{operation:`get`,name:`slackmessage_get`},{operation:`list`,name:`slackmessage_list`}],cli:[{operation:`create`,name:`slackmessage_create`},{operation:`createForward`,name:`slackmessage_createForward`},{operation:`createReply`,name:`slackmessage_createReply`},{operation:`delete`,name:`slackmessage_delete`},{operation:`get`,name:`slackmessage_get`},{operation:`getAccount`,name:`slackmessage_getAccount`},{operation:`getAttachments`,name:`slackmessage_getAttachments`},{operation:`getBlocks`,name:`slackmessage_getBlocks`},{operation:`getEndpoint`,name:`slackmessage_getEndpoint`},{operation:`getMetadata`,name:`slackmessage_getMetadata`},{operation:`getPreview`,name:`slackmessage_getPreview`},{operation:`getReactions`,name:`slackmessage_getReactions`},{operation:`getThreadMessages`,name:`slackmessage_getThreadMessages`},{operation:`getToAddresses`,name:`slackmessage_getToAddresses`},{operation:`getTotalReactions`,name:`slackmessage_getTotalReactions`},{operation:`isInThread`,name:`slackmessage_isInThread`},{operation:`isUnread`,name:`slackmessage_isUnread`},{operation:`list`,name:`slackmessage_list`},{operation:`markRead`,name:`slackmessage_markRead`},{operation:`markUnread`,name:`slackmessage_markUnread`},{operation:`retrySend`,name:`slackmessage_retrySend`},{operation:`send`,name:`slackmessage_send`},{operation:`setMetadata`,name:`slackmessage_setMetadata`},{operation:`setToAddresses`,name:`slackmessage_setToAddresses`},{operation:`toggleFlagged`,name:`slackmessage_toggleFlagged`},{operation:`update`,name:`slackmessage_update`}],methods:[{name:`createForward`,async:!1,parameters:[],returnType:`Message`,aiCallable:!1},{name:`createReply`,async:!1,parameters:[`_options?: object`],returnType:`Message`,aiCallable:!1},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAttachments`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getBlocks`,async:!1,parameters:[],returnType:`Record<string, unknown>[]`,aiCallable:!1},{name:`getEndpoint`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPreview`,async:!1,parameters:[`maxLength?: any`],returnType:`string`,aiCallable:!1},{name:`getReactions`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getThreadMessages`,async:!0,parameters:[],returnType:`Promise<Message[]>`,aiCallable:!1},{name:`getToAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`getTotalReactions`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`isInThread`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isUnread`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markRead`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`markUnread`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`retrySend`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`send`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setToAddresses`,async:!1,parameters:[`addresses: Array<object>`],returnType:`void`,aiCallable:!1},{name:`toggleFlagged`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-messages:Account`,`@happyvertical/smrt-messages:Message`,`@happyvertical/smrt-messages:MessagingEndpoint`,`@happyvertical/smrt-personas:AgentPersona`],exposed:!0},{id:`@happyvertical/smrt-messages:TelegramAccount`,name:`TelegramAccount`,collection:`accounts`,extends:`@happyvertical/smrt-messages:Account`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`telegramaccount_get`},{operation:`list`,name:`telegramaccount_list`}],cli:[{operation:`get`,name:`telegramaccount_get`},{operation:`list`,name:`telegramaccount_list`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:Tweet`,name:`Tweet`,collection:`messages`,extends:`@happyvertical/smrt-messages:Message`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`accountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Account`},{name:`personaId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-personas:AgentPersona`},{name:`endpointId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:MessagingEndpoint`},{name:`correlationId`,type:`text`,required:!1},{name:`threadId`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`fromAddress`,type:`text`,required:!1},{name:`fromName`,type:`text`,required:!1},{name:`toAddresses`,type:`text`,required:!1},{name:`date`,type:`datetime`,required:!1},{name:`isRead`,type:`boolean`,required:!0,default:!1},{name:`isFlagged`,type:`boolean`,required:!0,default:!1},{name:`hasAttachments`,type:`boolean`,required:!0,default:!1},{name:`size`,type:`integer`,required:!0,default:0},{name:`metadata`,type:`text`,required:!1},{name:`sendStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`pending`,`sending`,`sent`,`failed`,`scheduled`]},{name:`sentAt`,type:`datetime`,required:!1},{name:`sendError`,type:`text`,required:!1},{name:`retryCount`,type:`integer`,required:!0,default:0},{name:`maxRetries`,type:`integer`,required:!0,default:3},{name:`scheduledSendAt`,type:`datetime`,required:!1},{name:`inReplyToMessageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-messages:Message`},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`tweetId`,type:`text`,required:!1},{name:`retweetCount`,type:`integer`,required:!0,default:0},{name:`likeCount`,type:`integer`,required:!0,default:0},{name:`replyCount`,type:`integer`,required:!0,default:0},{name:`isRetweet`,type:`boolean`,required:!0,default:!1},{name:`isReply`,type:`boolean`,required:!0,default:!1},{name:`mediaUrls`,type:`text`,required:!1},{name:`hashtags`,type:`text`,required:!1},{name:`mentions`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/messages`},{method:`GET`,path:`/messages/[id]`},{method:`POST`,path:`/messages`}],mcp:[{operation:`get`,name:`tweet_get`},{operation:`list`,name:`tweet_list`}],cli:[{operation:`create`,name:`tweet_create`},{operation:`createForward`,name:`tweet_createForward`},{operation:`createReply`,name:`tweet_createReply`},{operation:`delete`,name:`tweet_delete`},{operation:`get`,name:`tweet_get`},{operation:`getAccount`,name:`tweet_getAccount`},{operation:`getAttachments`,name:`tweet_getAttachments`},{operation:`getEndpoint`,name:`tweet_getEndpoint`},{operation:`getEngagement`,name:`tweet_getEngagement`},{operation:`getHashtags`,name:`tweet_getHashtags`},{operation:`getMediaUrls`,name:`tweet_getMediaUrls`},{operation:`getMentions`,name:`tweet_getMentions`},{operation:`getMetadata`,name:`tweet_getMetadata`},{operation:`getPreview`,name:`tweet_getPreview`},{operation:`getThreadMessages`,name:`tweet_getThreadMessages`},{operation:`getToAddresses`,name:`tweet_getToAddresses`},{operation:`isUnread`,name:`tweet_isUnread`},{operation:`list`,name:`tweet_list`},{operation:`markRead`,name:`tweet_markRead`},{operation:`markUnread`,name:`tweet_markUnread`},{operation:`retrySend`,name:`tweet_retrySend`},{operation:`send`,name:`tweet_send`},{operation:`setMetadata`,name:`tweet_setMetadata`},{operation:`setToAddresses`,name:`tweet_setToAddresses`},{operation:`toggleFlagged`,name:`tweet_toggleFlagged`},{operation:`update`,name:`tweet_update`}],methods:[{name:`createForward`,async:!1,parameters:[],returnType:`Message`,aiCallable:!1},{name:`createReply`,async:!1,parameters:[`_options?: object`],returnType:`Message`,aiCallable:!1},{name:`getAccount`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getAttachments`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getEndpoint`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getEngagement`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getHashtags`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMediaUrls`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMentions`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPreview`,async:!1,parameters:[`maxLength?: any`],returnType:`string`,aiCallable:!1},{name:`getThreadMessages`,async:!0,parameters:[],returnType:`Promise<Message[]>`,aiCallable:!1},{name:`getToAddresses`,async:!1,parameters:[],returnType:`Array<object>`,aiCallable:!1},{name:`isUnread`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markRead`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`markUnread`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`retrySend`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`send`,async:!0,parameters:[`options?: SendMessageOptions`],returnType:`Promise<MessageSendResult>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setToAddresses`,async:!1,parameters:[`addresses: Array<object>`],returnType:`void`,aiCallable:!1},{name:`toggleFlagged`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-messages:Account`,`@happyvertical/smrt-messages:Message`,`@happyvertical/smrt-messages:MessagingEndpoint`,`@happyvertical/smrt-personas:AgentPersona`],exposed:!0},{id:`@happyvertical/smrt-messages:TwitterAccount`,name:`TwitterAccount`,collection:`accounts`,extends:`@happyvertical/smrt-messages:Account`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`handle`,type:`text`,required:!1},{name:`twitterUserId`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`twitteraccount_get`},{operation:`list`,name:`twitteraccount_list`}],cli:[{operation:`get`,name:`twitteraccount_get`},{operation:`list`,name:`twitteraccount_list`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:UserNotification`,name:`UserNotification`,collection:`usernotifications`,description:`One in-app notification for one person, with its own read state.`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`recipientUserId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`kind`,type:`text`,required:!0},{name:`title`,type:`text`,required:!0},{name:`body`,type:`text`,required:!1},{name:`href`,type:`text`,required:!1},{name:`severity`,type:`text`,required:!1,default:`info`,enum:[`info`,`success`,`warning`,`error`]},{name:`sourceRef`,type:`text`,required:!0},{name:`occurredAt`,type:`text`,required:!1},{name:`readAt`,type:`datetime`,required:!1},{name:`dismissedAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-users:User`],exposed:!1},{id:`@happyvertical/smrt-messages:Whitelist`,name:`Whitelist`,collection:`whitelists`,description:`Allow-only entries for email filtering`,fields:[{name:`pattern`,type:`text`,required:!1,default:``},{name:`type`,type:`text`,required:!1,default:`email`,enum:[`email`,`domain`,`regex`]},{name:`category`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1,default:``},{name:`tenantId`,type:`text`,required:!0,system:!0}],rest:[{method:`POST`,path:`/whitelists/isWhitelisted`},{method:`POST`,path:`/whitelists/getMatchingEntry`},{method:`POST`,path:`/whitelists/getByCategory`},{method:`GET`,path:`/whitelists`},{method:`GET`,path:`/whitelists/[id]`},{method:`POST`,path:`/whitelists`},{method:`PATCH`,path:`/whitelists/[id]`},{method:`DELETE`,path:`/whitelists/[id]`}],mcp:[{operation:`create`,name:`whitelist_create`},{operation:`delete`,name:`whitelist_delete`},{operation:`get`,name:`whitelist_get`},{operation:`list`,name:`whitelist_list`},{operation:`matches`,name:`whitelist_matches`},{operation:`update`,name:`whitelist_update`},{operation:`getByCategory`,name:`whitelistcollection_getbycategory`},{operation:`getMatchingEntry`,name:`whitelistcollection_getmatchingentry`},{operation:`isWhitelisted`,name:`whitelistcollection_iswhitelisted`}],cli:[{operation:`create`,name:`whitelist_create`},{operation:`delete`,name:`whitelist_delete`},{operation:`get`,name:`whitelist_get`},{operation:`list`,name:`whitelist_list`},{operation:`matches`,name:`whitelist_matches`},{operation:`update`,name:`whitelist_update`},{operation:`getByCategory`,name:`whitelistcollection_getByCategory`},{operation:`getMatchingEntry`,name:`whitelistcollection_getMatchingEntry`},{operation:`isWhitelisted`,name:`whitelistcollection_isWhitelisted`}],methods:[{name:`getByCategory`,async:!0,parameters:[`category: string`],returnType:`Promise<Whitelist[]>`,aiCallable:!0},{name:`getMatchingEntry`,async:!0,parameters:[`email: string`],returnType:`Promise<Whitelist | null>`,aiCallable:!0},{name:`isWhitelisted`,async:!0,parameters:[`email: string`,`category?: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`matches`,async:!1,parameters:[`email: string`],returnType:`boolean`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-messages:ZulipAccount`,name:`ZulipAccount`,collection:`accounts`,extends:`@happyvertical/smrt-messages:Account`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`providerType`,type:`text`,required:!1},{name:`channelType`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`isActive`,type:`boolean`,required:!0,default:!0},{name:`lastSyncAt`,type:`datetime`,required:!1},{name:`settings`,type:`text`,required:!1},{name:`configuration`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`GET`,path:`/accounts`},{method:`GET`,path:`/accounts/[id]`}],mcp:[{operation:`get`,name:`zulipaccount_get`},{operation:`list`,name:`zulipaccount_list`}],cli:[{operation:`get`,name:`zulipaccount_get`},{operation:`list`,name:`zulipaccount_list`}],methods:[{name:`activate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`createSender`,async:!0,parameters:[],returnType:`Promise<MessageSenderInterface>`,aiCallable:!1},{name:`deactivate`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getConfiguration`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getSettings`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setConfiguration`,async:!1,parameters:[`configuration: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`setSettings`,async:!1,parameters:[`settings: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0}],dependencies:[`ledgers`,`profiles`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`,`#3627`],via:[`@happyvertical/smrt-profiles`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]},recipes:[{id:`messages.mailbox`,label:`Mailbox`,summary:`Read and compose email from your connected accounts.`,synonyms:[`email`,`inbox`,`mail`],models:[`@happyvertical/smrt-messages:Email`,`@happyvertical/smrt-messages:EmailAccount`],nav:[{label:`Mailbox`,model:`@happyvertical/smrt-messages:Email`,icon:`folder`,description:`Read email from your connected accounts.`,key:`mailbox`,noun:`email`},{label:`Failed sends`,model:`@happyvertical/smrt-messages:Email`,icon:`fileText`,description:`Review email whose last send attempt failed.`,key:`failed-sends`,noun:`email`,filter:{field:`sendStatus`,value:`failed`}}],requires:[],group:{id:`messages`,label:`Messaging`,summary:`Choose email and personal updates independently.`},section:{id:`messages`,label:`Messaging`,icon:`folder`,description:`Read email and keep up with updates addressed to you.`},help:{markdown:`## Your mailbox
604
+ Read messages, open a conversation, or compose an email using a connected account.
605
+ Choose the sender account, add recipients, and check the subject and message before sending.
606
+
607
+ ## Failed sends
608
+ Use Failed sends to review email whose last send attempt failed. Returning to the mailbox shows all email again.
609
+ Check the failure and sender connection before retrying through your application. This view does not resend email automatically.
610
+
611
+ ## Preview
612
+ The playground uses fictional messages. Sending and saving are mocked and never contact a mail server.
613
+
614
+ ## Connect an account
615
+ Your application administrator connects an authorized email provider on the server. Real sending and mailbox synchronization require that connection; a preview does not verify delivery.
616
+ `,fieldRefs:[]},surfaces:[{kind:`route`,path:`/messages/mailbox`,export:`@happyvertical/smrt-messages/svelte#MessageList`,label:`Mailbox`},{kind:`playground`,export:`@happyvertical/smrt-messages/svelte#MailboxDemo`,label:`Mailbox with mocked sending`}],providers:[{id:`email-inbox`,kind:`email`,options:[`imap`,`pop3`,`gmail`],required:!0},{id:`email-send`,kind:`email`,options:[`smtp`,`gmail`],required:!1}],runtime:`both`,demoSeed:{data:{accounts:[{id:`demo-account`,name:`Demo Inbox`,providerType:`email`,email:`you@example.com`,isActive:!0}],messages:[{id:`demo-welcome`,type:`email`,accountId:`demo-account`,subject:`Welcome to your mailbox`,body:`Fictional mail. Sending is mocked; nothing leaves this browser.`,senderName:`Demo colleague`,senderAddress:`colleague@example.com`,recipientAddresses:[{address:`you@example.com`}],date:`2026-01-01T12:00:00Z`,isRead:!1,isFlagged:!1,hasAttachments:!1}]}},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3617, #3624, #3626, #3627).`]}},{id:`messages.notifications`,label:`Notifications`,summary:`See updates addressed to you and mark them read.`,synonyms:[`alerts`,`notification bell`],models:[`@happyvertical/smrt-messages:UserNotification`],nav:[],requires:[],group:{id:`messages`,label:`Messaging`,summary:`Choose email and personal updates independently.`},section:{id:`messages`,label:`Messaging`,icon:`folder`,description:`Read email and keep up with updates addressed to you.`},help:{markdown:`## Notifications
617
+ Open the notification bell to see updates addressed to you. Unread updates have a visible marker.
618
+ Choose Mark read for one update or Mark all read for every unread update in your authorized accounts.
619
+ Follow a notification link to open its related record when one is available.
620
+
621
+ ## Availability
622
+ Notifications are scoped to the signed-in person. Your application connects the notification provider and may enable live updates. If loading fails, try again after the connection returns.
623
+ `,fieldRefs:[]},surfaces:[{kind:`shell-widget`,slot:`header.end`,export:`@happyvertical/smrt-svelte/notifications#NotificationBell`,label:`Notifications`}],providers:[{id:`notifications`,kind:`notifications`,options:[`user-notification-service`],required:!0}],runtime:`both`,demoSeed:{data:{items:[{id:`demo-notification`,title:`You were mentioned`,body:`A fictional update for the demo user.`,occurredAt:`2026-01-01T12:00:00Z`,severity:`info`,readAt:null}]}},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3617, #3624, #3626, #3627).`]}}]},{id:`places`,packageName:`@happyvertical/smrt-places`,version:`0.55.11`,description:`Hierarchical place management with geo integration and SMRT framework support`,models:[{id:`@happyvertical/smrt-places:Place`,name:`Place`,collection:`places`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-places:Place`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`typeId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-places:PlaceType`},{name:`name`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`latitude`,type:`decimal`,required:!1},{name:`longitude`,type:`decimal`,required:!1},{name:`streetNumber`,type:`text`,required:!1},{name:`streetName`,type:`text`,required:!1},{name:`city`,type:`text`,required:!1},{name:`region`,type:`text`,required:!1},{name:`country`,type:`text`,required:!1},{name:`postalCode`,type:`text`,required:!1},{name:`countryCode`,type:`text`,required:!1},{name:`timezone`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/places/lookupOrCreate`},{method:`POST`,path:`/places/discoverNearby`},{method:`POST`,path:`/places/resolveTrackPlaces`},{method:`POST`,path:`/places/getChildren`},{method:`POST`,path:`/places/getRootPlaces`},{method:`POST`,path:`/places/getByType`},{method:`POST`,path:`/places/getHierarchy`},{method:`POST`,path:`/places/getAssets`},{method:`POST`,path:`/places/addAsset`},{method:`POST`,path:`/places/removeAsset`},{method:`POST`,path:`/places/searchByProximity`},{method:`POST`,path:`/places/findByTenant`},{method:`POST`,path:`/places/findGlobal`},{method:`POST`,path:`/places/findWithGlobals`},{method:`GET`,path:`/places`},{method:`GET`,path:`/places/[id]`},{method:`POST`,path:`/places`},{method:`PATCH`,path:`/places/[id]`},{method:`DELETE`,path:`/places/[id]`}],mcp:[{operation:`create`,name:`place_create`},{operation:`get`,name:`place_get`},{operation:`list`,name:`place_list`},{operation:`update`,name:`place_update`},{operation:`addAsset`,name:`placecollection_addasset`},{operation:`discoverNearby`,name:`placecollection_discovernearby`},{operation:`findByTenant`,name:`placecollection_findbytenant`},{operation:`findGlobal`,name:`placecollection_findglobal`},{operation:`findWithGlobals`,name:`placecollection_findwithglobals`},{operation:`getAssets`,name:`placecollection_getassets`},{operation:`getByType`,name:`placecollection_getbytype`},{operation:`getChildren`,name:`placecollection_getchildren`},{operation:`getHierarchy`,name:`placecollection_gethierarchy`},{operation:`getRootPlaces`,name:`placecollection_getrootplaces`},{operation:`lookupOrCreate`,name:`placecollection_lookuporcreate`},{operation:`removeAsset`,name:`placecollection_removeasset`},{operation:`resolveTrackPlaces`,name:`placecollection_resolvetrackplaces`},{operation:`searchByProximity`,name:`placecollection_searchbyproximity`}],cli:[{operation:`addAsset`,name:`place_addAsset`},{operation:`create`,name:`place_create`},{operation:`delete`,name:`place_delete`},{operation:`get`,name:`place_get`},{operation:`getAncestors`,name:`place_getAncestors`},{operation:`getAssets`,name:`place_getAssets`},{operation:`getChildren`,name:`place_getChildren`},{operation:`getDescendants`,name:`place_getDescendants`},{operation:`getGeoData`,name:`place_getGeoData`},{operation:`getHierarchy`,name:`place_getHierarchy`},{operation:`getMainAsset`,name:`place_getMainAsset`},{operation:`getMetadata`,name:`place_getMetadata`},{operation:`getParent`,name:`place_getParent`},{operation:`getType`,name:`place_getType`},{operation:`hasCoordinates`,name:`place_hasCoordinates`},{operation:`list`,name:`place_list`},{operation:`moveTo`,name:`place_moveTo`},{operation:`removeAsset`,name:`place_removeAsset`},{operation:`setMainAsset`,name:`place_setMainAsset`},{operation:`setMetadata`,name:`place_setMetadata`},{operation:`update`,name:`place_update`},{operation:`updateMetadata`,name:`place_updateMetadata`},{operation:`addAsset`,name:`placecollection_addAsset`},{operation:`discoverNearby`,name:`placecollection_discoverNearby`},{operation:`findByTenant`,name:`placecollection_findByTenant`},{operation:`findGlobal`,name:`placecollection_findGlobal`},{operation:`findWithGlobals`,name:`placecollection_findWithGlobals`},{operation:`getAssets`,name:`placecollection_getAssets`},{operation:`getByType`,name:`placecollection_getByType`},{operation:`getChildren`,name:`placecollection_getChildren`},{operation:`getHierarchy`,name:`placecollection_getHierarchy`},{operation:`getRootPlaces`,name:`placecollection_getRootPlaces`},{operation:`lookupOrCreate`,name:`placecollection_lookupOrCreate`},{operation:`removeAsset`,name:`placecollection_removeAsset`},{operation:`resolveTrackPlaces`,name:`placecollection_resolveTrackPlaces`},{operation:`searchByProximity`,name:`placecollection_searchByProximity`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`discoverNearby`,async:!0,parameters:[`latitude: number`,`longitude: number`,`radiusMeters: number`,`options?: DiscoverNearbyOptions`],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getByType`,async:!0,parameters:[`typeSlug: string`],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!0},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getGeoData`,async:!1,parameters:[],returnType:`GeoData`,aiCallable:!1},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!0},{name:`getMainAsset`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getRootPlaces`,async:!0,parameters:[],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`getType`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`hasCoordinates`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`lookupOrCreate`,async:!0,parameters:[`query: string`,`options?: LookupOrCreateOptions`],returnType:`Promise<Place | null>`,aiCallable:!0},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`resolveTrackPlaces`,async:!0,parameters:[`points: ReadonlyArray<TrackPoint>`,`options?: ResolveTrackPlacesOptions`],returnType:`Promise<TrackPlacesResult>`,aiCallable:!0},{name:`searchByProximity`,async:!0,parameters:[`latitude: number`,`longitude: number`,`radiusKm?: number`],returnType:`Promise<Place[]>`,aiCallable:!0},{name:`setMainAsset`,async:!0,parameters:[`asset: Asset | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-places:Place`,`@happyvertical/smrt-places:PlaceType`],exposed:!0},{id:`@happyvertical/smrt-places:PlaceAsset`,name:`PlaceAsset`,collection:`placeassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`placeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-places:Place`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`relationship`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`placeId: string`,`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`placeId: string`,`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`placeId: string`,`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-places:Place`],exposed:!1},{id:`@happyvertical/smrt-places:PlaceType`,name:`PlaceType`,collection:`placetypes`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0}],rest:[{method:`POST`,path:`/placetypes/getOrCreate`},{method:`POST`,path:`/placetypes/getBySlug`},{method:`POST`,path:`/placetypes/initializeDefaults`},{method:`GET`,path:`/placetypes`},{method:`GET`,path:`/placetypes/[id]`},{method:`POST`,path:`/placetypes`},{method:`PATCH`,path:`/placetypes/[id]`},{method:`DELETE`,path:`/placetypes/[id]`}],mcp:[{operation:`create`,name:`placetype_create`},{operation:`get`,name:`placetype_get`},{operation:`list`,name:`placetype_list`},{operation:`getBySlug`,name:`placetypecollection_getbyslug`},{operation:`getOrCreate`,name:`placetypecollection_getorcreate`},{operation:`initializeDefaults`,name:`placetypecollection_initializedefaults`}],cli:[{operation:`create`,name:`placetype_create`},{operation:`delete`,name:`placetype_delete`},{operation:`get`,name:`placetype_get`},{operation:`getBySlug`,name:`placetype_getBySlug`},{operation:`list`,name:`placetype_list`},{operation:`update`,name:`placetype_update`},{operation:`getBySlug`,name:`placetypecollection_getBySlug`},{operation:`getOrCreate`,name:`placetypecollection_getOrCreate`},{operation:`initializeDefaults`,name:`placetypecollection_initializeDefaults`}],methods:[{name:`getBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<PlaceType | null>`,aiCallable:!0},{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`name?: string`],returnType:`Promise<PlaceType>`,aiCallable:!0},{name:`initializeDefaults`,async:!0,parameters:[],returnType:`Promise<PlaceType[]>`,aiCallable:!0}],references:[],exposed:!0}],dependencies:[`assets`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`,`#3627`],reason:`geo -> cache -> redis, node:zlib; url-signature node:crypto`,via:[`@happyvertical/smrt-tenancy`]}},{id:`preferences`,packageName:`@happyvertical/smrt-preferences`,version:`0.55.11`,description:`Tenant defaults and per-user overrides for user-interface preferences (overview layouts, shell layout), validated per registered kind`,models:[{id:`@happyvertical/smrt-preferences:UiPreferenceRecord`,name:`UiPreferenceRecord`,collection:`uipreferencerecords`,description:`One stored user-interface preference (#3727): the canonical payload of a registered preference kind (overview, shell-layout, ...) for one surface at one tier of one tenant.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`kind`,type:`text`,required:!0,default:``},{name:`surfaceId`,type:`text`,required:!0,default:``},{name:`scopeType`,type:`text`,required:!0,default:`tenant`},{name:`userId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`scopeKey`,type:`text`,required:!0},{name:`payloadJson`,type:`text`,required:!0},{name:`formatVersion`,type:`integer`,required:!1},{name:`updatedBy`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`}],rest:[{method:`POST`,path:`/uipreferencerecords/findTier`}],mcp:[{operation:`findTier`,name:`uipreferencerecordcollection_findtier`}],cli:[],methods:[{name:`delete`,async:!0,parameters:[`options?: DeleteOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`findTier`,async:!0,parameters:[`tenantId: string`,`kind: string`,`surfaceId: string`,`scope: PreferenceScope`,`userId?: string`],returnType:`Promise<UiPreferenceRecord | null>`,aiCallable:!0},{name:`getPayload`,async:!1,parameters:[],returnType:`unknown`,aiCallable:!1},{name:`loadFromId`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`loadFromSlug`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SaveOptions`],returnType:`Promise<this>`,aiCallable:!1},{name:`setPayload`,async:!1,parameters:[`value: unknown`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!0}],dependencies:[`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`],via:[`@happyvertical/smrt-profiles`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]}},{id:`products`,packageName:`@happyvertical/smrt-products`,version:`0.55.11`,description:`SMRT products module: triple-purpose microservice template for standalone apps, federated modules, and NPM libraries`,models:[{id:`@happyvertical/smrt-products:Category`,name:`Category`,collection:`categories`,description:`Product knowledge base category for organizing product information.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-products:Category`},{name:`level`,type:`integer`,required:!0,default:0},{name:`productCount`,type:`integer`,required:!0,default:0},{name:`active`,type:`boolean`,required:!0,default:!0}],rest:[{method:`POST`,path:`/categories/getRootCategories`},{method:`GET`,path:`/categories`},{method:`GET`,path:`/categories/[id]`},{method:`POST`,path:`/categories`},{method:`PATCH`,path:`/categories/[id]`}],mcp:[{operation:`get`,name:`category_get`},{operation:`list`,name:`category_list`},{operation:`getRootCategories`,name:`categorycollection_getrootcategories`}],cli:[{operation:`create`,name:`category_create`},{operation:`delete`,name:`category_delete`},{operation:`get`,name:`category_get`},{operation:`list`,name:`category_list`},{operation:`update`,name:`category_update`},{operation:`getRootCategories`,name:`categorycollection_getRootCategories`}],methods:[{name:`getRootCategories`,async:!0,parameters:[],returnType:`Promise<Category[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-products:Category`],exposed:!0},{id:`@happyvertical/smrt-products:Material`,name:`Material`,collection:`products`,extends:`@happyvertical/smrt-products:Product`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productType`,type:`text`,required:!1,enum:[`product`,`material`,`assembly`]},{name:`name`,type:`text`,required:!1,description:`The product name, as customers see it.`},{name:`description`,type:`text`,required:!1,description:`A few words on what the product is and who it is for.`},{name:`category`,type:`text`,required:!1},{name:`manufacturer`,type:`text`,required:!1},{name:`model`,type:`text`,required:!1},{name:`price`,type:`integer`,required:!0,default:0,description:`The price in minor units (cents), for example 1999 for 19.99.`},{name:`inStock`,type:`boolean`,required:!0,default:!0},{name:`specifications`,type:`json`,required:!1},{name:`tags`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/products/findByManufacturer`},{method:`POST`,path:`/products/findInStock`},{method:`POST`,path:`/products/getAssets`},{method:`POST`,path:`/products/addAsset`},{method:`POST`,path:`/products/removeAsset`},{method:`POST`,path:`/products/findByKind`},{method:`GET`,path:`/products`},{method:`GET`,path:`/products/[id]`},{method:`POST`,path:`/products`},{method:`PATCH`,path:`/products/[id]`}],mcp:[{operation:`get`,name:`material_get`},{operation:`list`,name:`material_list`},{operation:`addAsset`,name:`materialcollection_addasset`},{operation:`findByKind`,name:`materialcollection_findbykind`},{operation:`findByManufacturer`,name:`materialcollection_findbymanufacturer`},{operation:`findInStock`,name:`materialcollection_findinstock`},{operation:`getAssets`,name:`materialcollection_getassets`},{operation:`removeAsset`,name:`materialcollection_removeasset`}],cli:[{operation:`addAsset`,name:`material_addAsset`},{operation:`create`,name:`material_create`},{operation:`delete`,name:`material_delete`},{operation:`get`,name:`material_get`},{operation:`getAssets`,name:`material_getAssets`},{operation:`getSpecification`,name:`material_getSpecification`},{operation:`list`,name:`material_list`},{operation:`removeAsset`,name:`material_removeAsset`},{operation:`update`,name:`material_update`},{operation:`updateSpecification`,name:`material_updateSpecification`},{operation:`addAsset`,name:`materialcollection_addAsset`},{operation:`findByKind`,name:`materialcollection_findByKind`},{operation:`findByManufacturer`,name:`materialcollection_findByManufacturer`},{operation:`findInStock`,name:`materialcollection_findInStock`},{operation:`getAssets`,name:`materialcollection_getAssets`},{operation:`removeAsset`,name:`materialcollection_removeAsset`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByKind`,async:!0,parameters:[`materialKind: MaterialKind`],returnType:`Promise<Material[]>`,aiCallable:!0},{name:`findByManufacturer`,async:!0,parameters:[`manufacturer: string`],returnType:`Promise<Product[]>`,aiCallable:!0},{name:`findInStock`,async:!0,parameters:[],returnType:`Promise<Product[]>`,aiCallable:!0},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getSpecification`,async:!0,parameters:[`key: string`],returnType:`Promise<unknown>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateSpecification`,async:!0,parameters:[`key: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-products:Product`,name:`Product`,collection:`products`,description:`Product information for knowledge base queries.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productType`,type:`text`,required:!1,enum:[`product`,`material`,`assembly`]},{name:`name`,type:`text`,required:!1,description:`The product name, as customers see it.`},{name:`description`,type:`text`,required:!1,description:`A few words on what the product is and who it is for.`},{name:`category`,type:`text`,required:!1},{name:`manufacturer`,type:`text`,required:!1},{name:`model`,type:`text`,required:!1},{name:`price`,type:`integer`,required:!0,default:0,description:`The price in minor units (cents), for example 1999 for 19.99.`},{name:`inStock`,type:`boolean`,required:!0,default:!0},{name:`specifications`,type:`json`,required:!1},{name:`tags`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/products/findByManufacturer`},{method:`POST`,path:`/products/findInStock`},{method:`POST`,path:`/products/getAssets`},{method:`POST`,path:`/products/addAsset`},{method:`POST`,path:`/products/removeAsset`},{method:`GET`,path:`/products`},{method:`GET`,path:`/products/[id]`},{method:`POST`,path:`/products`},{method:`PATCH`,path:`/products/[id]`}],mcp:[{operation:`get`,name:`product_get`},{operation:`list`,name:`product_list`},{operation:`addAsset`,name:`productcollection_addasset`},{operation:`findByManufacturer`,name:`productcollection_findbymanufacturer`},{operation:`findInStock`,name:`productcollection_findinstock`},{operation:`getAssets`,name:`productcollection_getassets`},{operation:`removeAsset`,name:`productcollection_removeasset`}],cli:[{operation:`addAsset`,name:`product_addAsset`},{operation:`create`,name:`product_create`},{operation:`delete`,name:`product_delete`},{operation:`get`,name:`product_get`},{operation:`getAssets`,name:`product_getAssets`},{operation:`getSpecification`,name:`product_getSpecification`},{operation:`list`,name:`product_list`},{operation:`removeAsset`,name:`product_removeAsset`},{operation:`update`,name:`product_update`},{operation:`updateSpecification`,name:`product_updateSpecification`},{operation:`addAsset`,name:`productcollection_addAsset`},{operation:`findByManufacturer`,name:`productcollection_findByManufacturer`},{operation:`findInStock`,name:`productcollection_findInStock`},{operation:`getAssets`,name:`productcollection_getAssets`},{operation:`removeAsset`,name:`productcollection_removeAsset`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByManufacturer`,async:!0,parameters:[`manufacturer: string`],returnType:`Promise<Product[]>`,aiCallable:!0},{name:`findInStock`,async:!0,parameters:[],returnType:`Promise<Product[]>`,aiCallable:!0},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getSpecification`,async:!0,parameters:[`key: string`],returnType:`Promise<unknown>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateSpecification`,async:!0,parameters:[`key: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-products:ProductAsset`,name:`ProductAsset`,collection:`productassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-products:Product`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`relationship`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`productId: string`,`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`productId: string`,`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`productId: string`,`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-products:Product`],exposed:!1},{id:`@happyvertical/smrt-products:ProductVariant`,name:`ProductVariant`,collection:`productvariants`,display:{label:`label`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productId`,type:`text`,required:!0,default:``,description:`The product this choice belongs to.`},{name:`axisName`,type:`text`,required:!0,default:``,description:`What the product varies by, for example size or color.`},{name:`label`,type:`text`,required:!1,default:``},{name:`allowedValues`,type:`text`,required:!1,default:`[]`,description:`The values on offer, for example S, M and L, stored as a JSON list.`},{name:`sortOrder`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/productvariants/findForProduct`},{method:`POST`,path:`/productvariants/findAxis`},{method:`GET`,path:`/productvariants`},{method:`GET`,path:`/productvariants/[id]`},{method:`POST`,path:`/productvariants`},{method:`PATCH`,path:`/productvariants/[id]`}],mcp:[{operation:`get`,name:`productvariant_get`},{operation:`list`,name:`productvariant_list`},{operation:`findAxis`,name:`productvariantcollection_findaxis`},{operation:`findForProduct`,name:`productvariantcollection_findforproduct`}],cli:[{operation:`create`,name:`productvariant_create`},{operation:`delete`,name:`productvariant_delete`},{operation:`get`,name:`productvariant_get`},{operation:`getValues`,name:`productvariant_getValues`},{operation:`list`,name:`productvariant_list`},{operation:`setValues`,name:`productvariant_setValues`},{operation:`update`,name:`productvariant_update`},{operation:`findAxis`,name:`productvariantcollection_findAxis`},{operation:`findForProduct`,name:`productvariantcollection_findForProduct`}],methods:[{name:`findAxis`,async:!0,parameters:[`productId: string`,`axisName: string`],returnType:`Promise<ProductVariant | null>`,aiCallable:!0},{name:`findForProduct`,async:!0,parameters:[`productId: string`],returnType:`Promise<ProductVariant[]>`,aiCallable:!0},{name:`getValues`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`setValues`,async:!1,parameters:[`value: string[] | string`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-products:Sku`,name:`Sku`,collection:`skus`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`productId`,type:`text`,required:!0,default:``,description:`The product this item is a version of.`},{name:`code`,type:`text`,required:!0,default:``,description:`The short code that identifies this exact item, such as a UPC or part number.`},{name:`barcode`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`attributes`,type:`text`,required:!1,default:`{}`,description:`Which attribute values, such as size and color, this item has, stored as JSON.`},{name:`weightGrams`,type:`decimal`,required:!1},{name:`parentSkuId`,type:`text`,required:!1,default:``},{name:`active`,type:`boolean`,required:!1,default:!0}],rest:[{method:`POST`,path:`/skus/findByCode`},{method:`POST`,path:`/skus/findByBarcode`},{method:`POST`,path:`/skus/findByProduct`},{method:`POST`,path:`/skus/findByParent`},{method:`POST`,path:`/skus/findActive`},{method:`GET`,path:`/skus`},{method:`GET`,path:`/skus/[id]`},{method:`POST`,path:`/skus`},{method:`PATCH`,path:`/skus/[id]`}],mcp:[{operation:`get`,name:`sku_get`},{operation:`list`,name:`sku_list`},{operation:`findActive`,name:`skucollection_findactive`},{operation:`findByBarcode`,name:`skucollection_findbybarcode`},{operation:`findByCode`,name:`skucollection_findbycode`},{operation:`findByParent`,name:`skucollection_findbyparent`},{operation:`findByProduct`,name:`skucollection_findbyproduct`}],cli:[{operation:`create`,name:`sku_create`},{operation:`delete`,name:`sku_delete`},{operation:`get`,name:`sku_get`},{operation:`getAttributes`,name:`sku_getAttributes`},{operation:`list`,name:`sku_list`},{operation:`setAttributes`,name:`sku_setAttributes`},{operation:`update`,name:`sku_update`},{operation:`findActive`,name:`skucollection_findActive`},{operation:`findByBarcode`,name:`skucollection_findByBarcode`},{operation:`findByCode`,name:`skucollection_findByCode`},{operation:`findByParent`,name:`skucollection_findByParent`},{operation:`findByProduct`,name:`skucollection_findByProduct`}],methods:[{name:`findActive`,async:!0,parameters:[`productId?: string`],returnType:`Promise<Sku[]>`,aiCallable:!0},{name:`findByBarcode`,async:!0,parameters:[`barcode: string`],returnType:`Promise<Sku | null>`,aiCallable:!0},{name:`findByCode`,async:!0,parameters:[`code: string`],returnType:`Promise<Sku | null>`,aiCallable:!0},{name:`findByParent`,async:!0,parameters:[`parentSkuId: string`],returnType:`Promise<Sku[]>`,aiCallable:!0},{name:`findByProduct`,async:!0,parameters:[`productId: string`],returnType:`Promise<Sku[]>`,aiCallable:!0},{name:`getAttributes`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setAttributes`,async:!1,parameters:[`value: Record<string, unknown> | string`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0}],dependencies:[`assets`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3616`,`#3624`,`#3626`],reason:`server bootstrap (startRestServer, express/cors), core generators/mcp`,via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`products.clothing`,label:`Clothing`,summary:`Products that come in sizes and colors, with a stock-keeping unit for each combination.`,synonyms:[`apparel`,`garments`,`sizes`,`variants`],models:[`@happyvertical/smrt-products:Product`,`@happyvertical/smrt-products:ProductVariant`,`@happyvertical/smrt-products:Sku`],nav:[{label:`Products`,model:`@happyvertical/smrt-products:Product`,icon:`package`,description:`What you sell, with prices and details.`}],requires:[],group:{id:`products`,label:`Products`,summary:`Sell goods: simple items, or clothing that comes in sizes and colors.`},section:{id:`catalog`,label:`Catalog`,icon:`package`,description:`Products, ingredients and the stock you hold.`},options:{"@happyvertical/smrt-products:Product":{fields:{productType:{visibility:`hidden`},category:{visibility:`hidden`},manufacturer:{visibility:`hidden`},model:{visibility:`hidden`},inStock:{visibility:`hidden`},specifications:{visibility:`hidden`},tags:{visibility:`hidden`},description:{visibility:`hidden`}}},"@happyvertical/smrt-products:ProductVariant":{fields:{label:{visibility:`hidden`},sortOrder:{visibility:`hidden`}}},"@happyvertical/smrt-products:Sku":{fields:{barcode:{visibility:`hidden`},name:{visibility:`hidden`},weightGrams:{visibility:`hidden`},parentSkuId:{visibility:`hidden`},active:{visibility:`hidden`}}}},help:{markdown:`## Overview
624
+
625
+ Clothing is for products that come in sizes and colors. You describe the product
626
+ once, say which sizes and colors you offer, and each combination becomes its own
627
+ item you can sell and count separately: a shirt in three sizes and two colors is
628
+ six items.
629
+
630
+ ## Tasks
631
+
632
+ ### Add a clothing item
633
+
634
+ 1. Create a product with a **{field:name}** and a **{field:price}**.
635
+ 2. Add a variant axis for sizes and list the values you offer, for example XS to
636
+ XL. Leave out the ones you do not make.
637
+ 3. Add a variant axis for colors the same way.
638
+ 4. Create an item (SKU) for each size and color combination, with its own code
639
+ and its size and color attributes.
640
+
641
+ ### Add a size or a color later
642
+
643
+ 1. Add the new value to the size or color axis of the product.
644
+ 2. Create items for the new combinations. Items you already had keep their
645
+ codes.
646
+
647
+ ### Stop selling a size
648
+
649
+ 1. Remove the size from the product's size axis.
650
+ 2. Remove the items for that size.
651
+ `,fieldRefs:[`name`,`price`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).`]}},{id:`products.ingredients`,label:`Ingredients`,summary:`Things you buy in to make what you sell, kept as products of the material kind with their own list.`,synonyms:[`materials`,`raw materials`,`supplies`,`stock items`],models:[`@happyvertical/smrt-products:Product`],nav:[{label:`Ingredients`,model:`@happyvertical/smrt-products:Product`,icon:`package`,description:`What you buy to make what you sell, with what each costs.`,key:`ingredients`,noun:`ingredient`,filter:{field:`productType`,value:`material`}}],requires:[`products.simple`],group:{id:`products`,label:`Products`,summary:`Sell goods: simple items, or clothing that comes in sizes and colors.`},section:{id:`catalog`,label:`Catalog`,icon:`package`,description:`Products, ingredients and the stock you hold.`},options:{"@happyvertical/smrt-products:Product":{fields:{productType:{visibility:`hidden`},category:{visibility:`hidden`},manufacturer:{visibility:`hidden`},model:{visibility:`hidden`},inStock:{visibility:`hidden`},specifications:{visibility:`hidden`},tags:{visibility:`hidden`}}}},help:{markdown:`## Overview
652
+
653
+ Ingredients are the things you buy in to make what you sell: flour, butter,
654
+ steel, fabric. They are products of the material kind, so they have the same
655
+ name, price and description as anything you sell, and they are listed apart from
656
+ the products you sell. Count them with inventory like any other item.
657
+
658
+ ## Tasks
659
+
660
+ ### Add an ingredient
661
+
662
+ 1. Create a new ingredient.
663
+ 2. Give it a **{field:name}** that includes the pack size, for example "Bread flour, 25 kg".
664
+ 3. Enter what you pay in the **{field:price}**, in minor units (cents).
665
+ 4. Add a **{field:description}** such as the brand or grade.
666
+ 5. Save. It appears in the ingredients list, not in the products you sell.
667
+
668
+ ### Update what you pay
669
+
670
+ 1. Find the ingredient.
671
+ 2. Change the **{field:price}** and save.
672
+ `,fieldRefs:[`description`,`name`,`price`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).`]},effectiveDemo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).`,`Needs products.simple, which is server.`]}},{id:`products.simple`,label:`Simple products`,summary:`Items with a name, a price and a description.`,synonyms:[`items`,`goods`,`catalog`],models:[`@happyvertical/smrt-products:Product`],nav:[{label:`Products`,model:`@happyvertical/smrt-products:Product`,icon:`package`,description:`What you sell, with prices and details.`}],requires:[],group:{id:`products`,label:`Products`,summary:`Sell goods: simple items, or clothing that comes in sizes and colors.`},section:{id:`catalog`,label:`Catalog`,icon:`package`,description:`Products, ingredients and the stock you hold.`},options:{"@happyvertical/smrt-products:Product":{fields:{productType:{visibility:`hidden`},category:{visibility:`hidden`},manufacturer:{visibility:`hidden`},model:{visibility:`hidden`},inStock:{visibility:`hidden`},specifications:{visibility:`hidden`},tags:{visibility:`hidden`}}}},help:{markdown:`## Overview
673
+
674
+ Simple products are things you sell that come in one form: one name, one price,
675
+ one description. Keep a record for each so you can see everything you offer in
676
+ one list, with the price next to it, and change it whenever it moves.
677
+
678
+ ## Tasks
679
+
680
+ ### Add a simple product
681
+
682
+ 1. Create a new product.
683
+ 2. Give it a **{field:name}**, for example "Ceramic mug".
684
+ 3. Enter the **{field:price}** in minor units (cents).
685
+ 4. Add a **{field:description}** so anyone reading the list knows what it is.
686
+ 5. Save. The product is now on your list.
687
+
688
+ ### Change a price
689
+
690
+ 1. Find the product.
691
+ 2. Change the **{field:price}** and save.
692
+ `,fieldRefs:[`description`,`name`,`price`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: server bootstrap (startRestServer, express/cors), core generators/mcp; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).`]}}]},{id:`profiles`,packageName:`@happyvertical/smrt-profiles`,version:`0.55.11`,description:`Profile management system with relationships, metadata, and reciprocal associations for SMRT framework`,models:[{id:`@happyvertical/smrt-profiles:ApiKey`,name:`ApiKey`,collection:`apikeys`,display:{label:`name`},fields:[{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`keyHash`,type:`text`,required:!1,default:``},{name:`keyPrefix`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`scopes`,type:`json`,required:!1},{name:`lastUsedAt`,type:`datetime`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`revokedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/apikeys/findByProfile`},{method:`POST`,path:`/apikeys/findActiveByProfile`},{method:`POST`,path:`/apikeys/findByHash`},{method:`POST`,path:`/apikeys/verify`},{method:`POST`,path:`/apikeys/revokeAllForProfile`},{method:`POST`,path:`/apikeys/revokeByPrefix`},{method:`POST`,path:`/apikeys/cleanupExpired`},{method:`GET`,path:`/apikeys`},{method:`GET`,path:`/apikeys/[id]`}],mcp:[{operation:`get`,name:`apikey_get`},{operation:`list`,name:`apikey_list`},{operation:`cleanupExpired`,name:`apikeycollection_cleanupexpired`},{operation:`findActiveByProfile`,name:`apikeycollection_findactivebyprofile`},{operation:`findByHash`,name:`apikeycollection_findbyhash`},{operation:`findByProfile`,name:`apikeycollection_findbyprofile`},{operation:`generateForProfile`,name:`apikeycollection_generateforprofile`},{operation:`revokeAllForProfile`,name:`apikeycollection_revokeallforprofile`},{operation:`revokeByPrefix`,name:`apikeycollection_revokebyprefix`},{operation:`verify`,name:`apikeycollection_verify`}],cli:[{operation:`create`,name:`apikey_create`},{operation:`get`,name:`apikey_get`},{operation:`list`,name:`apikey_list`},{operation:`revoke`,name:`apikey_revoke`},{operation:`cleanupExpired`,name:`apikeycollection_cleanupExpired`},{operation:`findActiveByProfile`,name:`apikeycollection_findActiveByProfile`},{operation:`findByHash`,name:`apikeycollection_findByHash`},{operation:`findByProfile`,name:`apikeycollection_findByProfile`},{operation:`generateForProfile`,name:`apikeycollection_generateForProfile`},{operation:`revokeAllForProfile`,name:`apikeycollection_revokeAllForProfile`},{operation:`revokeByPrefix`,name:`apikeycollection_revokeByPrefix`},{operation:`verify`,name:`apikeycollection_verify`}],methods:[{name:`cleanupExpired`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!0},{name:`findActiveByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`findByHash`,async:!0,parameters:[`keyHash: string`],returnType:`Promise<ApiKey | null>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`generateForProfile`,async:!0,parameters:[`profile: Profile`,`options: object`],returnType:`Promise<GenerateKeyResult>`,aiCallable:!0},{name:`getProfile`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`hasScope`,async:!1,parameters:[`scope: string`],returnType:`boolean`,aiCallable:!1},{name:`isValid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recordUsage`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`revoke`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`revokeAllForProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`revokeByPrefix`,async:!0,parameters:[`keyPrefix: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`verify`,async:!0,parameters:[`key: string`],returnType:`Promise<ApiKey | null>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-profiles:AuditLog`,name:`AuditLog`,collection:`auditlogs`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`action`,type:`text`,required:!1,default:``},{name:`reason`,type:`text`,required:!1,default:``},{name:`changes`,type:`json`,required:!1},{name:`resourceType`,type:`text`,required:!1,default:``},{name:`resourceId`,type:`text`,required:!1,default:``},{name:`occurredAt`,type:`datetime`,required:!1,default:`current_timestamp`},{name:`source`,type:`text`,required:!1,default:`web`,enum:[`web`,`cli`,`ci`,`webhook`,`mcp`]},{name:`metadata`,type:`json`,required:!1},{name:`onBehalfOfId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[],mcp:[],cli:[],methods:[{name:`findByAction`,async:!0,parameters:[`action: string`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`findByResource`,async:!0,parameters:[`resourceType: string`,`resourceId: string`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`findBySource`,async:!0,parameters:[`source: AuditSource`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`findOnBehalfOf`,async:!0,parameters:[`profileId: string`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`getEffectiveActor`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`getOnBehalfOf`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`getProfile`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`getRecentActivity`,async:!0,parameters:[`profileId: string`,`limit?: number`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`getResourceTimeline`,async:!0,parameters:[`resourceType: string`,`resourceId: string`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`record`,async:!0,parameters:[`options: object`],returnType:`Promise<AuditLog>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-profiles:Bot`,name:`Bot`,collection:`profiles`,extends:`@happyvertical/smrt-profiles:Profile`,description:`Bot profile type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`typeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileType`},{name:`email`,type:`text`,required:!1},{name:`emailKey`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`isPublic`,type:`boolean`,required:!1,default:!1}],rest:[{method:`GET`,path:`/profiles`},{method:`GET`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles`},{method:`PATCH`,path:`/profiles/[id]`},{method:`DELETE`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles/[id]/getTypeSlug`},{method:`POST`,path:`/profiles/[id]/setTypeBySlug`},{method:`POST`,path:`/profiles/[id]/addMetadata`},{method:`POST`,path:`/profiles/[id]/getMetadata`},{method:`POST`,path:`/profiles/[id]/updateMetadata`},{method:`POST`,path:`/profiles/[id]/removeMetadata`},{method:`POST`,path:`/profiles/[id]/getLinks`},{method:`POST`,path:`/profiles/[id]/getAssets`},{method:`POST`,path:`/profiles/[id]/addAsset`},{method:`POST`,path:`/profiles/[id]/removeAsset`},{method:`POST`,path:`/profiles/[id]/getRelationships`},{method:`POST`,path:`/profiles/[id]/getRelatedProfiles`},{method:`POST`,path:`/profiles/[id]/generateBio`},{method:`POST`,path:`/profiles/[id]/matches`},{method:`POST`,path:`/profiles/findByMetadata`},{method:`POST`,path:`/profiles/findByType`},{method:`POST`,path:`/profiles/findRelated`},{method:`POST`,path:`/profiles/searchByEmail`},{method:`POST`,path:`/profiles/[id]/getApiKeys`},{method:`POST`,path:`/profiles/[id]/getActiveApiKeys`},{method:`POST`,path:`/profiles/[id]/getOidcIdentities`},{method:`POST`,path:`/profiles/[id]/linkOidcIdentity`},{method:`POST`,path:`/profiles/[id]/getNostrIdentities`},{method:`POST`,path:`/profiles/[id]/linkNostrIdentity`},{method:`POST`,path:`/profiles/[id]/getAuditLogs`}],mcp:[{operation:`addAsset`,name:`bot_addasset`},{operation:`addMetadata`,name:`bot_addmetadata`},{operation:`addRelationship`,name:`bot_addrelationship`},{operation:`create`,name:`bot_create`},{operation:`delete`,name:`bot_delete`},{operation:`findByMetadata`,name:`bot_findbymetadata`},{operation:`findByType`,name:`bot_findbytype`},{operation:`findRelated`,name:`bot_findrelated`},{operation:`generateApiKey`,name:`bot_generateapikey`},{operation:`generateBio`,name:`bot_generatebio`},{operation:`get`,name:`bot_get`},{operation:`getActiveApiKeys`,name:`bot_getactiveapikeys`},{operation:`getApiKeys`,name:`bot_getapikeys`},{operation:`getAssets`,name:`bot_getassets`},{operation:`getAuditLogs`,name:`bot_getauditlogs`},{operation:`getLinks`,name:`bot_getlinks`},{operation:`getMetadata`,name:`bot_getmetadata`},{operation:`getNostrIdentities`,name:`bot_getnostridentities`},{operation:`getOidcIdentities`,name:`bot_getoidcidentities`},{operation:`getRelatedProfiles`,name:`bot_getrelatedprofiles`},{operation:`getRelationships`,name:`bot_getrelationships`},{operation:`getTypeSlug`,name:`bot_gettypeslug`},{operation:`linkNostrIdentity`,name:`bot_linknostridentity`},{operation:`linkOidcIdentity`,name:`bot_linkoidcidentity`},{operation:`list`,name:`bot_list`},{operation:`matches`,name:`bot_matches`},{operation:`recordAction`,name:`bot_recordaction`},{operation:`removeAsset`,name:`bot_removeasset`},{operation:`removeMetadata`,name:`bot_removemetadata`},{operation:`removeRelationship`,name:`bot_removerelationship`},{operation:`searchByEmail`,name:`bot_searchbyemail`},{operation:`setLinks`,name:`bot_setlinks`},{operation:`setTypeBySlug`,name:`bot_settypebyslug`},{operation:`update`,name:`bot_update`},{operation:`updateMetadata`,name:`bot_updatemetadata`}],cli:[{operation:`addAsset`,name:`bot_addAsset`},{operation:`addMetadata`,name:`bot_addMetadata`},{operation:`addRelationship`,name:`bot_addRelationship`},{operation:`create`,name:`bot_create`},{operation:`delete`,name:`bot_delete`},{operation:`findByMetadata`,name:`bot_findByMetadata`},{operation:`findByType`,name:`bot_findByType`},{operation:`findRelated`,name:`bot_findRelated`},{operation:`generateApiKey`,name:`bot_generateApiKey`},{operation:`generateBio`,name:`bot_generateBio`},{operation:`get`,name:`bot_get`},{operation:`getActiveApiKeys`,name:`bot_getActiveApiKeys`},{operation:`getApiKeys`,name:`bot_getApiKeys`},{operation:`getAssets`,name:`bot_getAssets`},{operation:`getAuditLogs`,name:`bot_getAuditLogs`},{operation:`getLinks`,name:`bot_getLinks`},{operation:`getMetadata`,name:`bot_getMetadata`},{operation:`getNostrIdentities`,name:`bot_getNostrIdentities`},{operation:`getOidcIdentities`,name:`bot_getOidcIdentities`},{operation:`getRelatedProfiles`,name:`bot_getRelatedProfiles`},{operation:`getRelationships`,name:`bot_getRelationships`},{operation:`getTypeSlug`,name:`bot_getTypeSlug`},{operation:`linkNostrIdentity`,name:`bot_linkNostrIdentity`},{operation:`linkOidcIdentity`,name:`bot_linkOidcIdentity`},{operation:`list`,name:`bot_list`},{operation:`matches`,name:`bot_matches`},{operation:`recordAction`,name:`bot_recordAction`},{operation:`removeAsset`,name:`bot_removeAsset`},{operation:`removeMetadata`,name:`bot_removeMetadata`},{operation:`removeRelationship`,name:`bot_removeRelationship`},{operation:`searchByEmail`,name:`bot_searchByEmail`},{operation:`setLinks`,name:`bot_setLinks`},{operation:`setTypeBySlug`,name:`bot_setTypeBySlug`},{operation:`update`,name:`bot_update`},{operation:`updateMetadata`,name:`bot_updateMetadata`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`addMetadata`,async:!0,parameters:[`metafieldSlug: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!0},{name:`addRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`,`contextProfile?: Profile`],returnType:`Promise<void>`,aiCallable:!0},{name:`generateApiKey`,async:!0,parameters:[`options: object`],returnType:`Promise<GenerateKeyResult>`,aiCallable:!0},{name:`generateBio`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`getActiveApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getAuditLogs`,async:!0,parameters:[`limit?: number`],returnType:`Promise<AuditLog[]>`,aiCallable:!0},{name:`getLinks`,async:!0,parameters:[],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`getMetadata`,async:!0,parameters:[],returnType:`Promise<Record<string, string>>`,aiCallable:!0},{name:`getNostrIdentities`,async:!0,parameters:[],returnType:`Promise<NostrIdentity[]>`,aiCallable:!0},{name:`getOidcIdentities`,async:!0,parameters:[],returnType:`Promise<OidcIdentity[]>`,aiCallable:!0},{name:`getRelatedProfiles`,async:!0,parameters:[`relationshipSlug?: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`getRelationships`,async:!0,parameters:[`options?: object`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getTypeSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`linkNostrIdentity`,async:!0,parameters:[`nostrData: object`],returnType:`Promise<NostrIdentity>`,aiCallable:!0},{name:`linkOidcIdentity`,async:!0,parameters:[`oidcData: object`],returnType:`Promise<OidcIdentity>`,aiCallable:!0},{name:`matches`,async:!0,parameters:[`criteria: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`recordAction`,async:!0,parameters:[`options: object`],returnType:`Promise<AuditLog>`,aiCallable:!0},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeMetadata`,async:!0,parameters:[`metafieldSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`links: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`setTypeBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateMetadata`,async:!0,parameters:[`metadata: Record<string, unknown>`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:ProfileType`],exposed:!0},{id:`@happyvertical/smrt-profiles:MagicLinkToken`,name:`MagicLinkToken`,collection:`magiclinktokens`,fields:[{name:`nostrIdentityId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:NostrIdentity`},{name:`tokenHash`,type:`text`,required:!1,default:``},{name:`email`,type:`text`,required:!1,default:``},{name:`expiresAt`,type:`datetime`,required:!1},{name:`usedAt`,type:`datetime`,required:!1},{name:`requestedFromIp`,type:`text`,required:!1,default:``},{name:`createdAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`POST`,path:`/magiclinktokens/findByTokenHash`},{method:`POST`,path:`/magiclinktokens/findActiveForEmail`},{method:`POST`,path:`/magiclinktokens/findByIdentity`},{method:`POST`,path:`/magiclinktokens/countRecentByEmail`},{method:`POST`,path:`/magiclinktokens/countRecentByIp`},{method:`POST`,path:`/magiclinktokens/verify`},{method:`POST`,path:`/magiclinktokens/cleanupExpired`},{method:`POST`,path:`/magiclinktokens/revokeForIdentity`},{method:`POST`,path:`/magiclinktokens/isRateLimitedByEmail`},{method:`POST`,path:`/magiclinktokens/isRateLimitedByIp`},{method:`GET`,path:`/magiclinktokens`},{method:`GET`,path:`/magiclinktokens/[id]`},{method:`POST`,path:`/magiclinktokens`},{method:`PATCH`,path:`/magiclinktokens/[id]`},{method:`DELETE`,path:`/magiclinktokens/[id]`},{method:`POST`,path:`/magiclinktokens/hashToken`},{method:`POST`,path:`/magiclinktokens/[id]/isValid`},{method:`POST`,path:`/magiclinktokens/[id]/isExpired`},{method:`POST`,path:`/magiclinktokens/[id]/isUsed`},{method:`POST`,path:`/magiclinktokens/[id]/markUsed`},{method:`POST`,path:`/magiclinktokens/[id]/getNostrIdentity`},{method:`POST`,path:`/magiclinktokens/[id]/getTimeRemainingSeconds`}],mcp:[{operation:`create`,name:`magiclinktoken_create`},{operation:`delete`,name:`magiclinktoken_delete`},{operation:`generate`,name:`magiclinktoken_generate`},{operation:`get`,name:`magiclinktoken_get`},{operation:`getNostrIdentity`,name:`magiclinktoken_getnostridentity`},{operation:`getTimeRemainingSeconds`,name:`magiclinktoken_gettimeremainingseconds`},{operation:`hashToken`,name:`magiclinktoken_hashtoken`},{operation:`isExpired`,name:`magiclinktoken_isexpired`},{operation:`isUsed`,name:`magiclinktoken_isused`},{operation:`isValid`,name:`magiclinktoken_isvalid`},{operation:`list`,name:`magiclinktoken_list`},{operation:`markUsed`,name:`magiclinktoken_markused`},{operation:`update`,name:`magiclinktoken_update`},{operation:`verify`,name:`magiclinktoken_verify`},{operation:`cleanupExpired`,name:`magiclinktokencollection_cleanupexpired`},{operation:`countRecentByEmail`,name:`magiclinktokencollection_countrecentbyemail`},{operation:`countRecentByIp`,name:`magiclinktokencollection_countrecentbyip`},{operation:`findActiveForEmail`,name:`magiclinktokencollection_findactiveforemail`},{operation:`findByIdentity`,name:`magiclinktokencollection_findbyidentity`},{operation:`findByTokenHash`,name:`magiclinktokencollection_findbytokenhash`},{operation:`isRateLimitedByEmail`,name:`magiclinktokencollection_isratelimitedbyemail`},{operation:`isRateLimitedByIp`,name:`magiclinktokencollection_isratelimitedbyip`},{operation:`revokeForIdentity`,name:`magiclinktokencollection_revokeforidentity`},{operation:`verify`,name:`magiclinktokencollection_verify`}],cli:[{operation:`list`,name:`magiclinktoken_list`},{operation:`cleanupExpired`,name:`magiclinktokencollection_cleanupExpired`},{operation:`countRecentByEmail`,name:`magiclinktokencollection_countRecentByEmail`},{operation:`countRecentByIp`,name:`magiclinktokencollection_countRecentByIp`},{operation:`findActiveForEmail`,name:`magiclinktokencollection_findActiveForEmail`},{operation:`findByIdentity`,name:`magiclinktokencollection_findByIdentity`},{operation:`findByTokenHash`,name:`magiclinktokencollection_findByTokenHash`},{operation:`isRateLimitedByEmail`,name:`magiclinktokencollection_isRateLimitedByEmail`},{operation:`isRateLimitedByIp`,name:`magiclinktokencollection_isRateLimitedByIp`},{operation:`revokeForIdentity`,name:`magiclinktokencollection_revokeForIdentity`},{operation:`verify`,name:`magiclinktokencollection_verify`}],methods:[{name:`cleanupExpired`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!0},{name:`countRecentByEmail`,async:!0,parameters:[`email: string`,`withinMinutes: number`],returnType:`Promise<number>`,aiCallable:!0},{name:`countRecentByIp`,async:!0,parameters:[`ip: string`,`withinMinutes: number`],returnType:`Promise<number>`,aiCallable:!0},{name:`findActiveForEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<MagicLinkToken[]>`,aiCallable:!0},{name:`findByIdentity`,async:!0,parameters:[`nostrIdentityId: string`],returnType:`Promise<MagicLinkToken[]>`,aiCallable:!0},{name:`findByTokenHash`,async:!0,parameters:[`tokenHash: string`],returnType:`Promise<MagicLinkToken | null>`,aiCallable:!0},{name:`getNostrIdentity`,async:!0,parameters:[],returnType:`Promise<NostrIdentity | null>`,aiCallable:!0},{name:`getTimeRemainingSeconds`,async:!1,parameters:[],returnType:`number`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isRateLimitedByEmail`,async:!0,parameters:[`email: string`,`maxPerHour?: number`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isRateLimitedByIp`,async:!0,parameters:[`ip: string`,`maxPerHour?: number`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isUsed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`isValid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!0},{name:`markUsed`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!0},{name:`revokeForIdentity`,async:!0,parameters:[`nostrIdentityId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`verify`,async:!0,parameters:[`token: string`],returnType:`Promise<MagicLinkToken | null>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:NostrIdentity`],exposed:!0},{id:`@happyvertical/smrt-profiles:NostrIdentity`,name:`NostrIdentity`,collection:`nostridentities`,fields:[{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`pubkey`,type:`text`,required:!1,default:``},{name:`encryptedPrivkey`,type:`text`,required:!1,default:``},{name:`encryptionIv`,type:`text`,required:!1,default:``},{name:`encryptionTag`,type:`text`,required:!1,default:``},{name:`email`,type:`text`,required:!1,default:``},{name:`nip05Username`,type:`text`,required:!1,default:``},{name:`lastUsedAt`,type:`datetime`,required:!1},{name:`verifiedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/nostridentities/findByProfile`},{method:`POST`,path:`/nostridentities/findByPubkey`},{method:`POST`,path:`/nostridentities/findByEmail`},{method:`POST`,path:`/nostridentities/findByNip05`},{method:`POST`,path:`/nostridentities/unlinkFromProfile`},{method:`POST`,path:`/nostridentities/getNip05Response`},{method:`POST`,path:`/nostridentities/isNip05Available`},{method:`GET`,path:`/nostridentities`},{method:`GET`,path:`/nostridentities/[id]`}],mcp:[{operation:`get`,name:`nostridentity_get`},{operation:`list`,name:`nostridentity_list`},{operation:`createForProfile`,name:`nostridentitycollection_createforprofile`},{operation:`findByEmail`,name:`nostridentitycollection_findbyemail`},{operation:`findByNip05`,name:`nostridentitycollection_findbynip05`},{operation:`findByProfile`,name:`nostridentitycollection_findbyprofile`},{operation:`findByPubkey`,name:`nostridentitycollection_findbypubkey`},{operation:`getNip05Response`,name:`nostridentitycollection_getnip05response`},{operation:`isNip05Available`,name:`nostridentitycollection_isnip05available`},{operation:`linkToProfile`,name:`nostridentitycollection_linktoprofile`},{operation:`unlinkFromProfile`,name:`nostridentitycollection_unlinkfromprofile`},{operation:`updateNip05Username`,name:`nostridentitycollection_updatenip05username`}],cli:[{operation:`get`,name:`nostridentity_get`},{operation:`list`,name:`nostridentity_list`},{operation:`createForProfile`,name:`nostridentitycollection_createForProfile`},{operation:`findByEmail`,name:`nostridentitycollection_findByEmail`},{operation:`findByNip05`,name:`nostridentitycollection_findByNip05`},{operation:`findByProfile`,name:`nostridentitycollection_findByProfile`},{operation:`findByPubkey`,name:`nostridentitycollection_findByPubkey`},{operation:`getNip05Response`,name:`nostridentitycollection_getNip05Response`},{operation:`isNip05Available`,name:`nostridentitycollection_isNip05Available`},{operation:`linkToProfile`,name:`nostridentitycollection_linkToProfile`},{operation:`unlinkFromProfile`,name:`nostridentitycollection_unlinkFromProfile`},{operation:`updateNip05Username`,name:`nostridentitycollection_updateNip05Username`}],methods:[{name:`createForProfile`,async:!0,parameters:[`profile: Profile`,`email: string`,`masterSecret: string`,`nip05Username?: string`],returnType:`Promise<NostrIdentity>`,aiCallable:!0},{name:`decryptPrivkey`,async:!1,parameters:[`masterSecret: string`],returnType:`string`,aiCallable:!1},{name:`findByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<NostrIdentity | null>`,aiCallable:!0},{name:`findByNip05`,async:!0,parameters:[`username: string`],returnType:`Promise<NostrIdentity | null>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<NostrIdentity[]>`,aiCallable:!0},{name:`findByPubkey`,async:!0,parameters:[`pubkey: string`],returnType:`Promise<NostrIdentity | null>`,aiCallable:!0},{name:`getKeypair`,async:!1,parameters:[`masterSecret: string`],returnType:`object`,aiCallable:!1},{name:`getNip05Identifier`,async:!1,parameters:[`domain: string`],returnType:`string`,aiCallable:!1},{name:`getNip05Response`,async:!0,parameters:[`username?: string`],returnType:`Promise<Nip05Response>`,aiCallable:!0},{name:`getProfile`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`isNip05Available`,async:!0,parameters:[`username: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isVerified`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`linkToProfile`,async:!0,parameters:[`profile: Profile`,`nostrData: object`],returnType:`Promise<NostrIdentity>`,aiCallable:!0},{name:`markVerified`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`recordUsage`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`unlinkFromProfile`,async:!0,parameters:[`profileId: string`,`pubkey: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`updateNip05Username`,async:!0,parameters:[`identity: NostrIdentity`,`newUsername: string`],returnType:`Promise<NostrIdentity>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-profiles:OidcIdentity`,name:`OidcIdentity`,collection:`oidcidentities`,fields:[{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`provider`,type:`text`,required:!1},{name:`issuer`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`identityKey`,type:`text`,required:!1},{name:`email`,type:`text`,required:!1},{name:`lastUsedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/oidcidentities/findByProfile`},{method:`POST`,path:`/oidcidentities/findBySubject`},{method:`POST`,path:`/oidcidentities/findByProvider`},{method:`POST`,path:`/oidcidentities/unlinkFromProfile`},{method:`GET`,path:`/oidcidentities`},{method:`GET`,path:`/oidcidentities/[id]`}],mcp:[{operation:`get`,name:`oidcidentity_get`},{operation:`list`,name:`oidcidentity_list`},{operation:`findByProfile`,name:`oidcidentitycollection_findbyprofile`},{operation:`findByProvider`,name:`oidcidentitycollection_findbyprovider`},{operation:`findBySubject`,name:`oidcidentitycollection_findbysubject`},{operation:`linkToProfile`,name:`oidcidentitycollection_linktoprofile`},{operation:`unlinkFromProfile`,name:`oidcidentitycollection_unlinkfromprofile`}],cli:[{operation:`get`,name:`oidcidentity_get`},{operation:`list`,name:`oidcidentity_list`},{operation:`findByProfile`,name:`oidcidentitycollection_findByProfile`},{operation:`findByProvider`,name:`oidcidentitycollection_findByProvider`},{operation:`findBySubject`,name:`oidcidentitycollection_findBySubject`},{operation:`linkToProfile`,name:`oidcidentitycollection_linkToProfile`},{operation:`unlinkFromProfile`,name:`oidcidentitycollection_unlinkFromProfile`}],methods:[{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<OidcIdentity[]>`,aiCallable:!0},{name:`findByProvider`,async:!0,parameters:[`provider: string`],returnType:`Promise<OidcIdentity[]>`,aiCallable:!0},{name:`findBySubject`,async:!0,parameters:[`issuer: string`,`subject: string`],returnType:`Promise<OidcIdentity | null>`,aiCallable:!0},{name:`getProfile`,async:!0,parameters:[],returnType:`Promise<Profile | null>`,aiCallable:!1},{name:`linkToProfile`,async:!0,parameters:[`profile: Profile`,`oidcData: object`],returnType:`Promise<OidcIdentity>`,aiCallable:!0},{name:`recordUsage`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`unlinkFromProfile`,async:!0,parameters:[`profileId: string`,`issuer: string`,`subject: string`],returnType:`Promise<boolean>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-profiles:OidcProfileEmailReservation`,name:`OidcProfileEmailReservation`,collection:`oidcprofileemailreservations`,description:`Private database arbiter for canonical OIDC email provisioning races.`,fields:[{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`emailKey`,type:`text`,required:!0}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-profiles:Organization`,name:`Organization`,collection:`profiles`,extends:`@happyvertical/smrt-profiles:Profile`,description:`Organization profile type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`typeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileType`},{name:`email`,type:`text`,required:!1},{name:`emailKey`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`isPublic`,type:`boolean`,required:!1,default:!1}],rest:[{method:`GET`,path:`/profiles`},{method:`GET`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles`},{method:`PATCH`,path:`/profiles/[id]`},{method:`DELETE`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles/[id]/getTypeSlug`},{method:`POST`,path:`/profiles/[id]/setTypeBySlug`},{method:`POST`,path:`/profiles/[id]/addMetadata`},{method:`POST`,path:`/profiles/[id]/getMetadata`},{method:`POST`,path:`/profiles/[id]/updateMetadata`},{method:`POST`,path:`/profiles/[id]/removeMetadata`},{method:`POST`,path:`/profiles/[id]/getLinks`},{method:`POST`,path:`/profiles/[id]/getAssets`},{method:`POST`,path:`/profiles/[id]/addAsset`},{method:`POST`,path:`/profiles/[id]/removeAsset`},{method:`POST`,path:`/profiles/[id]/getRelationships`},{method:`POST`,path:`/profiles/[id]/getRelatedProfiles`},{method:`POST`,path:`/profiles/[id]/generateBio`},{method:`POST`,path:`/profiles/[id]/matches`},{method:`POST`,path:`/profiles/findByMetadata`},{method:`POST`,path:`/profiles/findByType`},{method:`POST`,path:`/profiles/findRelated`},{method:`POST`,path:`/profiles/searchByEmail`},{method:`POST`,path:`/profiles/[id]/getApiKeys`},{method:`POST`,path:`/profiles/[id]/getActiveApiKeys`},{method:`POST`,path:`/profiles/[id]/getOidcIdentities`},{method:`POST`,path:`/profiles/[id]/linkOidcIdentity`},{method:`POST`,path:`/profiles/[id]/getNostrIdentities`},{method:`POST`,path:`/profiles/[id]/linkNostrIdentity`},{method:`POST`,path:`/profiles/[id]/getAuditLogs`}],mcp:[{operation:`addAsset`,name:`organization_addasset`},{operation:`addMetadata`,name:`organization_addmetadata`},{operation:`addRelationship`,name:`organization_addrelationship`},{operation:`create`,name:`organization_create`},{operation:`delete`,name:`organization_delete`},{operation:`findByMetadata`,name:`organization_findbymetadata`},{operation:`findByType`,name:`organization_findbytype`},{operation:`findRelated`,name:`organization_findrelated`},{operation:`generateApiKey`,name:`organization_generateapikey`},{operation:`generateBio`,name:`organization_generatebio`},{operation:`get`,name:`organization_get`},{operation:`getActiveApiKeys`,name:`organization_getactiveapikeys`},{operation:`getApiKeys`,name:`organization_getapikeys`},{operation:`getAssets`,name:`organization_getassets`},{operation:`getAuditLogs`,name:`organization_getauditlogs`},{operation:`getLinks`,name:`organization_getlinks`},{operation:`getMetadata`,name:`organization_getmetadata`},{operation:`getNostrIdentities`,name:`organization_getnostridentities`},{operation:`getOidcIdentities`,name:`organization_getoidcidentities`},{operation:`getRelatedProfiles`,name:`organization_getrelatedprofiles`},{operation:`getRelationships`,name:`organization_getrelationships`},{operation:`getTypeSlug`,name:`organization_gettypeslug`},{operation:`linkNostrIdentity`,name:`organization_linknostridentity`},{operation:`linkOidcIdentity`,name:`organization_linkoidcidentity`},{operation:`list`,name:`organization_list`},{operation:`matches`,name:`organization_matches`},{operation:`recordAction`,name:`organization_recordaction`},{operation:`removeAsset`,name:`organization_removeasset`},{operation:`removeMetadata`,name:`organization_removemetadata`},{operation:`removeRelationship`,name:`organization_removerelationship`},{operation:`searchByEmail`,name:`organization_searchbyemail`},{operation:`setLinks`,name:`organization_setlinks`},{operation:`setTypeBySlug`,name:`organization_settypebyslug`},{operation:`update`,name:`organization_update`},{operation:`updateMetadata`,name:`organization_updatemetadata`}],cli:[{operation:`addAsset`,name:`organization_addAsset`},{operation:`addMetadata`,name:`organization_addMetadata`},{operation:`addRelationship`,name:`organization_addRelationship`},{operation:`create`,name:`organization_create`},{operation:`delete`,name:`organization_delete`},{operation:`findByMetadata`,name:`organization_findByMetadata`},{operation:`findByType`,name:`organization_findByType`},{operation:`findRelated`,name:`organization_findRelated`},{operation:`generateApiKey`,name:`organization_generateApiKey`},{operation:`generateBio`,name:`organization_generateBio`},{operation:`get`,name:`organization_get`},{operation:`getActiveApiKeys`,name:`organization_getActiveApiKeys`},{operation:`getApiKeys`,name:`organization_getApiKeys`},{operation:`getAssets`,name:`organization_getAssets`},{operation:`getAuditLogs`,name:`organization_getAuditLogs`},{operation:`getLinks`,name:`organization_getLinks`},{operation:`getMetadata`,name:`organization_getMetadata`},{operation:`getNostrIdentities`,name:`organization_getNostrIdentities`},{operation:`getOidcIdentities`,name:`organization_getOidcIdentities`},{operation:`getRelatedProfiles`,name:`organization_getRelatedProfiles`},{operation:`getRelationships`,name:`organization_getRelationships`},{operation:`getTypeSlug`,name:`organization_getTypeSlug`},{operation:`linkNostrIdentity`,name:`organization_linkNostrIdentity`},{operation:`linkOidcIdentity`,name:`organization_linkOidcIdentity`},{operation:`list`,name:`organization_list`},{operation:`matches`,name:`organization_matches`},{operation:`recordAction`,name:`organization_recordAction`},{operation:`removeAsset`,name:`organization_removeAsset`},{operation:`removeMetadata`,name:`organization_removeMetadata`},{operation:`removeRelationship`,name:`organization_removeRelationship`},{operation:`searchByEmail`,name:`organization_searchByEmail`},{operation:`setLinks`,name:`organization_setLinks`},{operation:`setTypeBySlug`,name:`organization_setTypeBySlug`},{operation:`update`,name:`organization_update`},{operation:`updateMetadata`,name:`organization_updateMetadata`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`addMetadata`,async:!0,parameters:[`metafieldSlug: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!0},{name:`addRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`,`contextProfile?: Profile`],returnType:`Promise<void>`,aiCallable:!0},{name:`generateApiKey`,async:!0,parameters:[`options: object`],returnType:`Promise<GenerateKeyResult>`,aiCallable:!0},{name:`generateBio`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`getActiveApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getAuditLogs`,async:!0,parameters:[`limit?: number`],returnType:`Promise<AuditLog[]>`,aiCallable:!0},{name:`getLinks`,async:!0,parameters:[],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`getMetadata`,async:!0,parameters:[],returnType:`Promise<Record<string, string>>`,aiCallable:!0},{name:`getNostrIdentities`,async:!0,parameters:[],returnType:`Promise<NostrIdentity[]>`,aiCallable:!0},{name:`getOidcIdentities`,async:!0,parameters:[],returnType:`Promise<OidcIdentity[]>`,aiCallable:!0},{name:`getRelatedProfiles`,async:!0,parameters:[`relationshipSlug?: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`getRelationships`,async:!0,parameters:[`options?: object`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getTypeSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`linkNostrIdentity`,async:!0,parameters:[`nostrData: object`],returnType:`Promise<NostrIdentity>`,aiCallable:!0},{name:`linkOidcIdentity`,async:!0,parameters:[`oidcData: object`],returnType:`Promise<OidcIdentity>`,aiCallable:!0},{name:`matches`,async:!0,parameters:[`criteria: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`recordAction`,async:!0,parameters:[`options: object`],returnType:`Promise<AuditLog>`,aiCallable:!0},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeMetadata`,async:!0,parameters:[`metafieldSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`links: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`setTypeBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateMetadata`,async:!0,parameters:[`metadata: Record<string, unknown>`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:ProfileType`],exposed:!0},{id:`@happyvertical/smrt-profiles:Person`,name:`Person`,collection:`profiles`,extends:`@happyvertical/smrt-profiles:Profile`,description:`Person profile type`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`typeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileType`},{name:`email`,type:`text`,required:!1},{name:`emailKey`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`isPublic`,type:`boolean`,required:!1,default:!1}],rest:[{method:`GET`,path:`/profiles`},{method:`GET`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles`},{method:`PATCH`,path:`/profiles/[id]`},{method:`DELETE`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles/[id]/getTypeSlug`},{method:`POST`,path:`/profiles/[id]/setTypeBySlug`},{method:`POST`,path:`/profiles/[id]/addMetadata`},{method:`POST`,path:`/profiles/[id]/getMetadata`},{method:`POST`,path:`/profiles/[id]/updateMetadata`},{method:`POST`,path:`/profiles/[id]/removeMetadata`},{method:`POST`,path:`/profiles/[id]/getLinks`},{method:`POST`,path:`/profiles/[id]/getAssets`},{method:`POST`,path:`/profiles/[id]/addAsset`},{method:`POST`,path:`/profiles/[id]/removeAsset`},{method:`POST`,path:`/profiles/[id]/getRelationships`},{method:`POST`,path:`/profiles/[id]/getRelatedProfiles`},{method:`POST`,path:`/profiles/[id]/generateBio`},{method:`POST`,path:`/profiles/[id]/matches`},{method:`POST`,path:`/profiles/findByMetadata`},{method:`POST`,path:`/profiles/findByType`},{method:`POST`,path:`/profiles/findRelated`},{method:`POST`,path:`/profiles/searchByEmail`},{method:`POST`,path:`/profiles/[id]/getApiKeys`},{method:`POST`,path:`/profiles/[id]/getActiveApiKeys`},{method:`POST`,path:`/profiles/[id]/getOidcIdentities`},{method:`POST`,path:`/profiles/[id]/linkOidcIdentity`},{method:`POST`,path:`/profiles/[id]/getNostrIdentities`},{method:`POST`,path:`/profiles/[id]/linkNostrIdentity`},{method:`POST`,path:`/profiles/[id]/getAuditLogs`}],mcp:[{operation:`addAsset`,name:`person_addasset`},{operation:`addMetadata`,name:`person_addmetadata`},{operation:`addRelationship`,name:`person_addrelationship`},{operation:`create`,name:`person_create`},{operation:`delete`,name:`person_delete`},{operation:`findByMetadata`,name:`person_findbymetadata`},{operation:`findByType`,name:`person_findbytype`},{operation:`findRelated`,name:`person_findrelated`},{operation:`generateApiKey`,name:`person_generateapikey`},{operation:`generateBio`,name:`person_generatebio`},{operation:`get`,name:`person_get`},{operation:`getActiveApiKeys`,name:`person_getactiveapikeys`},{operation:`getApiKeys`,name:`person_getapikeys`},{operation:`getAssets`,name:`person_getassets`},{operation:`getAuditLogs`,name:`person_getauditlogs`},{operation:`getLinks`,name:`person_getlinks`},{operation:`getMetadata`,name:`person_getmetadata`},{operation:`getNostrIdentities`,name:`person_getnostridentities`},{operation:`getOidcIdentities`,name:`person_getoidcidentities`},{operation:`getRelatedProfiles`,name:`person_getrelatedprofiles`},{operation:`getRelationships`,name:`person_getrelationships`},{operation:`getTypeSlug`,name:`person_gettypeslug`},{operation:`linkNostrIdentity`,name:`person_linknostridentity`},{operation:`linkOidcIdentity`,name:`person_linkoidcidentity`},{operation:`list`,name:`person_list`},{operation:`matches`,name:`person_matches`},{operation:`recordAction`,name:`person_recordaction`},{operation:`removeAsset`,name:`person_removeasset`},{operation:`removeMetadata`,name:`person_removemetadata`},{operation:`removeRelationship`,name:`person_removerelationship`},{operation:`searchByEmail`,name:`person_searchbyemail`},{operation:`setLinks`,name:`person_setlinks`},{operation:`setTypeBySlug`,name:`person_settypebyslug`},{operation:`update`,name:`person_update`},{operation:`updateMetadata`,name:`person_updatemetadata`}],cli:[{operation:`addAsset`,name:`person_addAsset`},{operation:`addMetadata`,name:`person_addMetadata`},{operation:`addRelationship`,name:`person_addRelationship`},{operation:`create`,name:`person_create`},{operation:`delete`,name:`person_delete`},{operation:`findByMetadata`,name:`person_findByMetadata`},{operation:`findByType`,name:`person_findByType`},{operation:`findRelated`,name:`person_findRelated`},{operation:`generateApiKey`,name:`person_generateApiKey`},{operation:`generateBio`,name:`person_generateBio`},{operation:`get`,name:`person_get`},{operation:`getActiveApiKeys`,name:`person_getActiveApiKeys`},{operation:`getApiKeys`,name:`person_getApiKeys`},{operation:`getAssets`,name:`person_getAssets`},{operation:`getAuditLogs`,name:`person_getAuditLogs`},{operation:`getLinks`,name:`person_getLinks`},{operation:`getMetadata`,name:`person_getMetadata`},{operation:`getNostrIdentities`,name:`person_getNostrIdentities`},{operation:`getOidcIdentities`,name:`person_getOidcIdentities`},{operation:`getRelatedProfiles`,name:`person_getRelatedProfiles`},{operation:`getRelationships`,name:`person_getRelationships`},{operation:`getTypeSlug`,name:`person_getTypeSlug`},{operation:`linkNostrIdentity`,name:`person_linkNostrIdentity`},{operation:`linkOidcIdentity`,name:`person_linkOidcIdentity`},{operation:`list`,name:`person_list`},{operation:`matches`,name:`person_matches`},{operation:`recordAction`,name:`person_recordAction`},{operation:`removeAsset`,name:`person_removeAsset`},{operation:`removeMetadata`,name:`person_removeMetadata`},{operation:`removeRelationship`,name:`person_removeRelationship`},{operation:`searchByEmail`,name:`person_searchByEmail`},{operation:`setLinks`,name:`person_setLinks`},{operation:`setTypeBySlug`,name:`person_setTypeBySlug`},{operation:`update`,name:`person_update`},{operation:`updateMetadata`,name:`person_updateMetadata`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`addMetadata`,async:!0,parameters:[`metafieldSlug: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!0},{name:`addRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`,`contextProfile?: Profile`],returnType:`Promise<void>`,aiCallable:!0},{name:`generateApiKey`,async:!0,parameters:[`options: object`],returnType:`Promise<GenerateKeyResult>`,aiCallable:!0},{name:`generateBio`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`getActiveApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!0},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getAuditLogs`,async:!0,parameters:[`limit?: number`],returnType:`Promise<AuditLog[]>`,aiCallable:!0},{name:`getLinks`,async:!0,parameters:[],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`getMetadata`,async:!0,parameters:[],returnType:`Promise<Record<string, string>>`,aiCallable:!0},{name:`getNostrIdentities`,async:!0,parameters:[],returnType:`Promise<NostrIdentity[]>`,aiCallable:!0},{name:`getOidcIdentities`,async:!0,parameters:[],returnType:`Promise<OidcIdentity[]>`,aiCallable:!0},{name:`getRelatedProfiles`,async:!0,parameters:[`relationshipSlug?: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`getRelationships`,async:!0,parameters:[`options?: object`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getTypeSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`linkNostrIdentity`,async:!0,parameters:[`nostrData: object`],returnType:`Promise<NostrIdentity>`,aiCallable:!0},{name:`linkOidcIdentity`,async:!0,parameters:[`oidcData: object`],returnType:`Promise<OidcIdentity>`,aiCallable:!0},{name:`matches`,async:!0,parameters:[`criteria: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`recordAction`,async:!0,parameters:[`options: object`],returnType:`Promise<AuditLog>`,aiCallable:!0},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeMetadata`,async:!0,parameters:[`metafieldSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`links: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!0},{name:`setTypeBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`updateMetadata`,async:!0,parameters:[`metadata: Record<string, unknown>`],returnType:`Promise<void>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:ProfileType`],exposed:!0},{id:`@happyvertical/smrt-profiles:Profile`,name:`Profile`,collection:`profiles`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`typeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileType`},{name:`email`,type:`text`,required:!1},{name:`emailKey`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`isPublic`,type:`boolean`,required:!1,default:!1}],rest:[{method:`POST`,path:`/profiles/findByEmail`},{method:`POST`,path:`/profiles/findUniqueGlobalPersonByEmail`},{method:`POST`,path:`/profiles/requireCanonicalGlobalPerson`},{method:`POST`,path:`/profiles/reserveCanonicalIdentityEmail`},{method:`POST`,path:`/profiles/findByType`},{method:`POST`,path:`/profiles/batchGetMetadata`},{method:`POST`,path:`/profiles/batchUpdateMetadata`},{method:`POST`,path:`/profiles/findRelated`},{method:`POST`,path:`/profiles/getAssets`},{method:`POST`,path:`/profiles/addAsset`},{method:`POST`,path:`/profiles/removeAsset`},{method:`POST`,path:`/profiles/getRelationshipNetwork`},{method:`POST`,path:`/profiles/findByTenant`},{method:`POST`,path:`/profiles/findGlobal`},{method:`POST`,path:`/profiles/findWithGlobals`},{method:`GET`,path:`/profiles`},{method:`GET`,path:`/profiles/[id]`},{method:`POST`,path:`/profiles`},{method:`PATCH`,path:`/profiles/[id]`},{method:`DELETE`,path:`/profiles/[id]`}],mcp:[{operation:`create`,name:`profile_create`},{operation:`get`,name:`profile_get`},{operation:`list`,name:`profile_list`},{operation:`update`,name:`profile_update`},{operation:`addAsset`,name:`profilecollection_addasset`},{operation:`batchGetMetadata`,name:`profilecollection_batchgetmetadata`},{operation:`batchUpdateMetadata`,name:`profilecollection_batchupdatemetadata`},{operation:`findByEmail`,name:`profilecollection_findbyemail`},{operation:`findByTenant`,name:`profilecollection_findbytenant`},{operation:`findByType`,name:`profilecollection_findbytype`},{operation:`findGlobal`,name:`profilecollection_findglobal`},{operation:`findRelated`,name:`profilecollection_findrelated`},{operation:`findUniqueGlobalPersonByEmail`,name:`profilecollection_finduniqueglobalpersonbyemail`},{operation:`findWithGlobals`,name:`profilecollection_findwithglobals`},{operation:`getAssets`,name:`profilecollection_getassets`},{operation:`getRelationshipNetwork`,name:`profilecollection_getrelationshipnetwork`},{operation:`removeAsset`,name:`profilecollection_removeasset`},{operation:`requireCanonicalGlobalPerson`,name:`profilecollection_requirecanonicalglobalperson`},{operation:`reserveCanonicalIdentityEmail`,name:`profilecollection_reservecanonicalidentityemail`}],cli:[{operation:`addAsset`,name:`profile_addAsset`},{operation:`addMetadata`,name:`profile_addMetadata`},{operation:`addRelationship`,name:`profile_addRelationship`},{operation:`create`,name:`profile_create`},{operation:`delete`,name:`profile_delete`},{operation:`findByMetadata`,name:`profile_findByMetadata`},{operation:`findByType`,name:`profile_findByType`},{operation:`findRelated`,name:`profile_findRelated`},{operation:`generateApiKey`,name:`profile_generateApiKey`},{operation:`generateBio`,name:`profile_generateBio`},{operation:`get`,name:`profile_get`},{operation:`getActiveApiKeys`,name:`profile_getActiveApiKeys`},{operation:`getApiKeys`,name:`profile_getApiKeys`},{operation:`getAssets`,name:`profile_getAssets`},{operation:`getAuditLogs`,name:`profile_getAuditLogs`},{operation:`getLinks`,name:`profile_getLinks`},{operation:`getMetadata`,name:`profile_getMetadata`},{operation:`getNostrIdentities`,name:`profile_getNostrIdentities`},{operation:`getOidcIdentities`,name:`profile_getOidcIdentities`},{operation:`getRelatedProfiles`,name:`profile_getRelatedProfiles`},{operation:`getRelationships`,name:`profile_getRelationships`},{operation:`getTypeSlug`,name:`profile_getTypeSlug`},{operation:`linkNostrIdentity`,name:`profile_linkNostrIdentity`},{operation:`linkOidcIdentity`,name:`profile_linkOidcIdentity`},{operation:`list`,name:`profile_list`},{operation:`matches`,name:`profile_matches`},{operation:`recordAction`,name:`profile_recordAction`},{operation:`removeAsset`,name:`profile_removeAsset`},{operation:`removeMetadata`,name:`profile_removeMetadata`},{operation:`removeRelationship`,name:`profile_removeRelationship`},{operation:`searchByEmail`,name:`profile_searchByEmail`},{operation:`setLinks`,name:`profile_setLinks`},{operation:`setTypeBySlug`,name:`profile_setTypeBySlug`},{operation:`update`,name:`profile_update`},{operation:`updateMetadata`,name:`profile_updateMetadata`},{operation:`addAsset`,name:`profilecollection_addAsset`},{operation:`batchGetMetadata`,name:`profilecollection_batchGetMetadata`},{operation:`batchUpdateMetadata`,name:`profilecollection_batchUpdateMetadata`},{operation:`findByEmail`,name:`profilecollection_findByEmail`},{operation:`findByTenant`,name:`profilecollection_findByTenant`},{operation:`findByType`,name:`profilecollection_findByType`},{operation:`findGlobal`,name:`profilecollection_findGlobal`},{operation:`findRelated`,name:`profilecollection_findRelated`},{operation:`findUniqueGlobalPersonByEmail`,name:`profilecollection_findUniqueGlobalPersonByEmail`},{operation:`findWithGlobals`,name:`profilecollection_findWithGlobals`},{operation:`getAssets`,name:`profilecollection_getAssets`},{operation:`getRelationshipNetwork`,name:`profilecollection_getRelationshipNetwork`},{operation:`removeAsset`,name:`profilecollection_removeAsset`},{operation:`requireCanonicalGlobalPerson`,name:`profilecollection_requireCanonicalGlobalPerson`},{operation:`reserveCanonicalIdentityEmail`,name:`profilecollection_reserveCanonicalIdentityEmail`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!0},{name:`addMetadata`,async:!0,parameters:[`metafieldSlug: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!1},{name:`addRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`,`contextProfile?: Profile`],returnType:`Promise<void>`,aiCallable:!1},{name:`batchGetMetadata`,async:!0,parameters:[`profileIds: string[]`],returnType:`Promise<Map<string, Record<string, string>>>`,aiCallable:!0},{name:`batchUpdateMetadata`,async:!0,parameters:[`updates: Array<object>`],returnType:`Promise<void>`,aiCallable:!0},{name:`findByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<Profile | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`typeSlug: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`findRelated`,async:!0,parameters:[`profileId: string`,`relationshipSlug?: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`findUniqueGlobalPersonByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<Profile | null>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Profile[]>`,aiCallable:!0},{name:`generateApiKey`,async:!0,parameters:[`options: object`],returnType:`Promise<GenerateKeyResult>`,aiCallable:!1},{name:`generateBio`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`getActiveApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!1},{name:`getApiKeys`,async:!0,parameters:[],returnType:`Promise<ApiKey[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!0},{name:`getAuditLogs`,async:!0,parameters:[`limit?: number`],returnType:`Promise<AuditLog[]>`,aiCallable:!1},{name:`getLinks`,async:!0,parameters:[],returnType:`Promise<ProfileLink[]>`,aiCallable:!1},{name:`getMetadata`,async:!0,parameters:[],returnType:`Promise<Record<string, string>>`,aiCallable:!1},{name:`getNostrIdentities`,async:!0,parameters:[],returnType:`Promise<NostrIdentity[]>`,aiCallable:!1},{name:`getOidcIdentities`,async:!0,parameters:[],returnType:`Promise<OidcIdentity[]>`,aiCallable:!1},{name:`getRelatedProfiles`,async:!0,parameters:[`relationshipSlug?: string`],returnType:`Promise<Profile[]>`,aiCallable:!1},{name:`getRelationshipNetwork`,async:!0,parameters:[`profileId: string`,`options?: object`],returnType:`Promise<Map<string, number>>`,aiCallable:!0},{name:`getRelationships`,async:!0,parameters:[`options?: object`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!1},{name:`getTypeSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`linkNostrIdentity`,async:!0,parameters:[`nostrData: object`],returnType:`Promise<NostrIdentity>`,aiCallable:!1},{name:`linkOidcIdentity`,async:!0,parameters:[`oidcData: object`],returnType:`Promise<OidcIdentity>`,aiCallable:!1},{name:`matches`,async:!0,parameters:[`criteria: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`recordAction`,async:!0,parameters:[`options: object`],returnType:`Promise<AuditLog>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`removeMetadata`,async:!0,parameters:[`metafieldSlug: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeRelationship`,async:!0,parameters:[`toProfile: Profile`,`relationshipSlug: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`requireCanonicalGlobalPerson`,async:!0,parameters:[`profileId: string`,`email?: string`],returnType:`Promise<Profile>`,aiCallable:!0},{name:`reserveCanonicalIdentityEmail`,async:!0,parameters:[`profileId: string`,`email?: string`],returnType:`Promise<Profile>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`links: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!1},{name:`setTypeBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`updateMetadata`,async:!0,parameters:[`metadata: Record<string, unknown>`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:ProfileType`],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileAsset`,name:`ProfileAsset`,collection:`profileassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`relationship`,type:`text`,required:!0},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`addAsset`,async:!0,parameters:[`profileId: string`,`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`profileId: string`,`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`profileId: string`,`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-profiles:ProfileLink`,name:`ProfileLink`,collection:`profilelinks`,display:{label:`label`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`platform`,type:`text`,required:!0,default:`website`},{name:`url`,type:`text`,required:!0},{name:`label`,type:`text`,required:!1},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`listForProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ProfileLink[]>`,aiCallable:!1},{name:`reorder`,async:!0,parameters:[`profileId: string`,`linkIds: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!1},{name:`replaceForProfile`,async:!0,parameters:[`profileId: string`,`links: any`],returnType:`Promise<ProfileLink[]>`,aiCallable:!1},{name:`save`,async:!0,parameters:[`...args?: any`],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-profiles:ProfileMetadata`,name:`ProfileMetadata`,collection:`profilemetadatas`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`metafieldId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileMetafield`},{name:`value`,type:`text`,required:!0,default:``}],rest:[{method:`POST`,path:`/profilemetadatas/getByProfile`},{method:`POST`,path:`/profilemetadatas/getMetadataObject`},{method:`POST`,path:`/profilemetadatas/findProfilesByMetadata`},{method:`GET`,path:`/profilemetadatas`},{method:`GET`,path:`/profilemetadatas/[id]`},{method:`POST`,path:`/profilemetadatas`},{method:`PATCH`,path:`/profilemetadatas/[id]`},{method:`DELETE`,path:`/profilemetadatas/[id]`}],mcp:[{operation:`get`,name:`profilemetadata_get`},{operation:`list`,name:`profilemetadata_list`},{operation:`findProfilesByMetadata`,name:`profilemetadatacollection_findprofilesbymetadata`},{operation:`getByProfile`,name:`profilemetadatacollection_getbyprofile`},{operation:`getMetadataObject`,name:`profilemetadatacollection_getmetadataobject`}],cli:[{operation:`create`,name:`profilemetadata_create`},{operation:`delete`,name:`profilemetadata_delete`},{operation:`get`,name:`profilemetadata_get`},{operation:`getMetafieldSlug`,name:`profilemetadata_getMetafieldSlug`},{operation:`list`,name:`profilemetadata_list`},{operation:`update`,name:`profilemetadata_update`},{operation:`validate`,name:`profilemetadata_validate`},{operation:`findProfilesByMetadata`,name:`profilemetadatacollection_findProfilesByMetadata`},{operation:`getByProfile`,name:`profilemetadatacollection_getByProfile`},{operation:`getMetadataObject`,name:`profilemetadatacollection_getMetadataObject`}],methods:[{name:`findProfilesByMetadata`,async:!0,parameters:[`metafieldId: string`,`value: unknown`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<ProfileMetadata[]>`,aiCallable:!0},{name:`getMetadataObject`,async:!0,parameters:[`profileId: string`],returnType:`Promise<Record<string, string>>`,aiCallable:!0},{name:`getMetafieldSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`validate`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-profiles:ProfileMetafield`],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileMetafield`,name:`ProfileMetafield`,collection:`profilemetafields`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1},{name:`validation`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/profilemetafields/getBySlug`},{method:`POST`,path:`/profilemetafields/getOrCreateBySlug`},{method:`GET`,path:`/profilemetafields`},{method:`GET`,path:`/profilemetafields/[id]`},{method:`POST`,path:`/profilemetafields`},{method:`PATCH`,path:`/profilemetafields/[id]`}],mcp:[{operation:`get`,name:`profilemetafield_get`},{operation:`list`,name:`profilemetafield_list`},{operation:`getBySlug`,name:`profilemetafieldcollection_getbyslug`},{operation:`getOrCreateBySlug`,name:`profilemetafieldcollection_getorcreatebyslug`}],cli:[{operation:`create`,name:`profilemetafield_create`},{operation:`delete`,name:`profilemetafield_delete`},{operation:`get`,name:`profilemetafield_get`},{operation:`getBySlug`,name:`profilemetafield_getBySlug`},{operation:`getValidator`,name:`profilemetafield_getValidator`},{operation:`list`,name:`profilemetafield_list`},{operation:`registerValidator`,name:`profilemetafield_registerValidator`},{operation:`update`,name:`profilemetafield_update`},{operation:`validateValue`,name:`profilemetafield_validateValue`},{operation:`getBySlug`,name:`profilemetafieldcollection_getBySlug`},{operation:`getOrCreateBySlug`,name:`profilemetafieldcollection_getOrCreateBySlug`}],methods:[{name:`getBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<ProfileMetafield | null>`,aiCallable:!0},{name:`getOrCreateBySlug`,async:!0,parameters:[`slug: string`,`defaults: object`],returnType:`Promise<ProfileMetafield>`,aiCallable:!0},{name:`validateValue`,async:!0,parameters:[`value: unknown`],returnType:`Promise<boolean>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileRelationship`,name:`ProfileRelationship`,collection:`profilerelationships`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`fromProfileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`toProfileId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`typeId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileRelationshipType`},{name:`contextProfileId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[{method:`POST`,path:`/profilerelationships/getFromProfile`},{method:`POST`,path:`/profilerelationships/getToProfile`},{method:`POST`,path:`/profilerelationships/getForProfile`},{method:`POST`,path:`/profilerelationships/exists`},{method:`GET`,path:`/profilerelationships`},{method:`GET`,path:`/profilerelationships/[id]`},{method:`POST`,path:`/profilerelationships`},{method:`DELETE`,path:`/profilerelationships/[id]`}],mcp:[{operation:`get`,name:`profilerelationship_get`},{operation:`list`,name:`profilerelationship_list`},{operation:`exists`,name:`profilerelationshipcollection_exists`},{operation:`getForProfile`,name:`profilerelationshipcollection_getforprofile`},{operation:`getFromProfile`,name:`profilerelationshipcollection_getfromprofile`},{operation:`getToProfile`,name:`profilerelationshipcollection_gettoprofile`}],cli:[{operation:`addTerm`,name:`profilerelationship_addTerm`},{operation:`create`,name:`profilerelationship_create`},{operation:`delete`,name:`profilerelationship_delete`},{operation:`endCurrentTerm`,name:`profilerelationship_endCurrentTerm`},{operation:`get`,name:`profilerelationship_get`},{operation:`getActiveTerm`,name:`profilerelationship_getActiveTerm`},{operation:`getTerms`,name:`profilerelationship_getTerms`},{operation:`getTypeSlug`,name:`profilerelationship_getTypeSlug`},{operation:`list`,name:`profilerelationship_list`},{operation:`update`,name:`profilerelationship_update`},{operation:`exists`,name:`profilerelationshipcollection_exists`},{operation:`getForProfile`,name:`profilerelationshipcollection_getForProfile`},{operation:`getFromProfile`,name:`profilerelationshipcollection_getFromProfile`},{operation:`getToProfile`,name:`profilerelationshipcollection_getToProfile`}],methods:[{name:`addTerm`,async:!0,parameters:[`startedAt: Date`,`endedAt?: Date`],returnType:`Promise<void>`,aiCallable:!1},{name:`endCurrentTerm`,async:!0,parameters:[`endedAt: Date`],returnType:`Promise<void>`,aiCallable:!1},{name:`exists`,async:!0,parameters:[`fromProfileId: string`,`toProfileId: string`,`typeId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`getActiveTerm`,async:!0,parameters:[],returnType:`Promise<ProfileRelationshipTerm | null>`,aiCallable:!1},{name:`getForProfile`,async:!0,parameters:[`profileId: string`,`typeId?: string`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getFromProfile`,async:!0,parameters:[`fromProfileId: string`,`typeId?: string`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getTerms`,async:!0,parameters:[],returnType:`Promise<ProfileRelationshipTerm[]>`,aiCallable:!1},{name:`getToProfile`,async:!0,parameters:[`toProfileId: string`,`typeId?: string`],returnType:`Promise<ProfileRelationship[]>`,aiCallable:!0},{name:`getTypeSlug`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-profiles:ProfileRelationshipType`],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileRelationshipTerm`,name:`ProfileRelationshipTerm`,collection:`profilerelationshipterms`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`relationshipId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-profiles:ProfileRelationship`},{name:`startedAt`,type:`datetime`,required:!0},{name:`endedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/profilerelationshipterms/getByRelationship`},{method:`POST`,path:`/profilerelationshipterms/getActiveTerm`},{method:`POST`,path:`/profilerelationshipterms/getHistoricalTerms`},{method:`GET`,path:`/profilerelationshipterms`},{method:`GET`,path:`/profilerelationshipterms/[id]`},{method:`POST`,path:`/profilerelationshipterms`},{method:`PATCH`,path:`/profilerelationshipterms/[id]`},{method:`DELETE`,path:`/profilerelationshipterms/[id]`}],mcp:[{operation:`get`,name:`profilerelationshipterm_get`},{operation:`list`,name:`profilerelationshipterm_list`},{operation:`getActiveTerm`,name:`profilerelationshiptermcollection_getactiveterm`},{operation:`getByRelationship`,name:`profilerelationshiptermcollection_getbyrelationship`},{operation:`getHistoricalTerms`,name:`profilerelationshiptermcollection_gethistoricalterms`}],cli:[{operation:`create`,name:`profilerelationshipterm_create`},{operation:`delete`,name:`profilerelationshipterm_delete`},{operation:`end`,name:`profilerelationshipterm_end`},{operation:`get`,name:`profilerelationshipterm_get`},{operation:`getDurationDays`,name:`profilerelationshipterm_getDurationDays`},{operation:`isActive`,name:`profilerelationshipterm_isActive`},{operation:`list`,name:`profilerelationshipterm_list`},{operation:`update`,name:`profilerelationshipterm_update`},{operation:`getActiveTerm`,name:`profilerelationshiptermcollection_getActiveTerm`},{operation:`getByRelationship`,name:`profilerelationshiptermcollection_getByRelationship`},{operation:`getHistoricalTerms`,name:`profilerelationshiptermcollection_getHistoricalTerms`}],methods:[{name:`end`,async:!0,parameters:[`endedAt?: Date`],returnType:`Promise<void>`,aiCallable:!1},{name:`getActiveTerm`,async:!0,parameters:[`relationshipId: string`],returnType:`Promise<ProfileRelationshipTerm | null>`,aiCallable:!0},{name:`getByRelationship`,async:!0,parameters:[`relationshipId: string`],returnType:`Promise<ProfileRelationshipTerm[]>`,aiCallable:!0},{name:`getDurationDays`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`getHistoricalTerms`,async:!0,parameters:[`relationshipId: string`],returnType:`Promise<ProfileRelationshipTerm[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:ProfileRelationship`],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileRelationshipType`,name:`ProfileRelationshipType`,collection:`profilerelationshiptypes`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``},{name:`reciprocal`,type:`boolean`,required:!1,default:!0}],rest:[{method:`POST`,path:`/profilerelationshiptypes/getBySlug`},{method:`POST`,path:`/profilerelationshiptypes/getOrCreateBySlug`},{method:`POST`,path:`/profilerelationshiptypes/getReciprocal`},{method:`POST`,path:`/profilerelationshiptypes/getDirectional`},{method:`GET`,path:`/profilerelationshiptypes`},{method:`GET`,path:`/profilerelationshiptypes/[id]`},{method:`POST`,path:`/profilerelationshiptypes`},{method:`PATCH`,path:`/profilerelationshiptypes/[id]`}],mcp:[{operation:`get`,name:`profilerelationshiptype_get`},{operation:`list`,name:`profilerelationshiptype_list`},{operation:`getBySlug`,name:`profilerelationshiptypecollection_getbyslug`},{operation:`getDirectional`,name:`profilerelationshiptypecollection_getdirectional`},{operation:`getOrCreateBySlug`,name:`profilerelationshiptypecollection_getorcreatebyslug`},{operation:`getReciprocal`,name:`profilerelationshiptypecollection_getreciprocal`}],cli:[{operation:`create`,name:`profilerelationshiptype_create`},{operation:`delete`,name:`profilerelationshiptype_delete`},{operation:`get`,name:`profilerelationshiptype_get`},{operation:`getBySlug`,name:`profilerelationshiptype_getBySlug`},{operation:`getReciprocalHandler`,name:`profilerelationshiptype_getReciprocalHandler`},{operation:`isReciprocal`,name:`profilerelationshiptype_isReciprocal`},{operation:`list`,name:`profilerelationshiptype_list`},{operation:`registerReciprocalHandler`,name:`profilerelationshiptype_registerReciprocalHandler`},{operation:`update`,name:`profilerelationshiptype_update`},{operation:`getBySlug`,name:`profilerelationshiptypecollection_getBySlug`},{operation:`getDirectional`,name:`profilerelationshiptypecollection_getDirectional`},{operation:`getOrCreateBySlug`,name:`profilerelationshiptypecollection_getOrCreateBySlug`},{operation:`getReciprocal`,name:`profilerelationshiptypecollection_getReciprocal`}],methods:[{name:`getBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<ProfileRelationshipType | null>`,aiCallable:!0},{name:`getDirectional`,async:!0,parameters:[],returnType:`Promise<ProfileRelationshipType[]>`,aiCallable:!0},{name:`getOrCreateBySlug`,async:!0,parameters:[`slug: string`,`defaults: object`],returnType:`Promise<ProfileRelationshipType>`,aiCallable:!0},{name:`getReciprocal`,async:!0,parameters:[],returnType:`Promise<ProfileRelationshipType[]>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-profiles:ProfileType`,name:`ProfileType`,collection:`profiletypes`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``},{name:`description`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/profiletypes/getBySlug`},{method:`POST`,path:`/profiletypes/getAvailableById`},{method:`POST`,path:`/profiletypes/getOrCreateBySlug`},{method:`POST`,path:`/profiletypes/getOrCreateGlobalBySlug`},{method:`GET`,path:`/profiletypes`},{method:`GET`,path:`/profiletypes/[id]`},{method:`POST`,path:`/profiletypes`},{method:`PATCH`,path:`/profiletypes/[id]`}],mcp:[{operation:`get`,name:`profiletype_get`},{operation:`list`,name:`profiletype_list`},{operation:`getAvailableById`,name:`profiletypecollection_getavailablebyid`},{operation:`getBySlug`,name:`profiletypecollection_getbyslug`},{operation:`getOrCreateBySlug`,name:`profiletypecollection_getorcreatebyslug`},{operation:`getOrCreateGlobalBySlug`,name:`profiletypecollection_getorcreateglobalbyslug`}],cli:[{operation:`create`,name:`profiletype_create`},{operation:`delete`,name:`profiletype_delete`},{operation:`get`,name:`profiletype_get`},{operation:`getBySlug`,name:`profiletype_getBySlug`},{operation:`list`,name:`profiletype_list`},{operation:`update`,name:`profiletype_update`},{operation:`getAvailableById`,name:`profiletypecollection_getAvailableById`},{operation:`getBySlug`,name:`profiletypecollection_getBySlug`},{operation:`getOrCreateBySlug`,name:`profiletypecollection_getOrCreateBySlug`},{operation:`getOrCreateGlobalBySlug`,name:`profiletypecollection_getOrCreateGlobalBySlug`}],methods:[{name:`getAvailableById`,async:!0,parameters:[`id: string`,`tenantId: string`],returnType:`Promise<ProfileType | null>`,aiCallable:!0},{name:`getBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<ProfileType | null>`,aiCallable:!0},{name:`getOrCreateBySlug`,async:!0,parameters:[`slug: string`,`defaults: object`],returnType:`Promise<ProfileType>`,aiCallable:!0},{name:`getOrCreateGlobalBySlug`,async:!0,parameters:[`slug: string`,`defaults: object`],returnType:`Promise<ProfileType>`,aiCallable:!0}],references:[],exposed:!0}],dependencies:[`assets`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`],reason:`node:crypto in root; core migrations (node:os)`,via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`profiles.audit-log`,label:`Activity log`,summary:`Review who changed a record and when.`,synonyms:[`audit trail`,`record history`,`activity`],models:[`@happyvertical/smrt-profiles:AuditLog`],nav:[],requires:[],group:{id:`activity`,label:`Activity`,summary:`Review authorized record history independently of messaging.`},section:{id:`activity`,label:`Activity`,icon:`book`,description:`See who changed records and why.`},help:{markdown:`## Activity log
693
+ Review changes to records you are authorized to inspect. Each activity shows the actor, action, time, and recorded reason or resource.
694
+ Open the related record when your application provides a link.
695
+
696
+ ## Record history
697
+ The application enables auditing on selected models and authorizes audit reads. Only recorded events appear; enabling auditing does not reconstruct earlier changes.
698
+ Sensitive audit details are available only through the application's authorized history service.
699
+ `,fieldRefs:[]},surfaces:[{kind:`route`,path:`/activity`,export:`@happyvertical/smrt-svelte#ActivityList`,label:`Activity log`}],providers:[{id:`audit-trail`,kind:`activity`,options:[`audit-log`],required:!0}],runtime:`both`,demoSeed:{data:{entries:[{id:`demo-audit`,title:`Demo colleague · updated`,detail:`Approved a fictional record.`,occurredAt:`2026-01-01T12:00:00Z`,href:null}]}},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto in root; core migrations (node:os); and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626).`]}}]},{id:`projects`,packageName:`@happyvertical/smrt-projects`,version:`0.55.11`,description:`Provider-agnostic project management models (Issues, PRs, Repositories, Projects) for SMRT framework`,models:[{id:`@happyvertical/smrt-projects:AssistanceRequest`,name:`AssistanceRequest`,collection:`assistancerequests`,description:`Lossless conversational intake before support/development classification.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`integrationId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:ProjectIntegration`},{name:`requesterId`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`applicationContext`,type:`text`,required:!1},{name:`conversation`,type:`text`,required:!1},{name:`evidence`,type:`text`,required:!1},{name:`classification`,type:`text`,required:!1,enum:[`unclassified`,`support`,`development`,`both`]},{name:`supportCaseId`,type:`text`,required:!1},{name:`developmentRequestId`,type:`text`,required:!1},{name:`deliveryHandoffLinkedAt`,type:`datetime`,required:!1},{name:`createdAt`,type:`datetime`,required:!1,system:!0}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-projects:ProjectIntegration`],exposed:!1},{id:`@happyvertical/smrt-projects:AssistanceRequestEvent`,name:`AssistanceRequestEvent`,collection:`assistancerequestevents`,description:`Append-only explanation of Assistance Request routing decisions.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`assistanceRequestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:AssistanceRequest`},{name:`priorClassification`,type:`text`,required:!1,enum:[`unclassified`,`support`,`development`,`both`]},{name:`resultingClassification`,type:`text`,required:!1,enum:[`unclassified`,`support`,`development`,`both`]},{name:`actorRef`,type:`text`,required:!1},{name:`reason`,type:`text`,required:!1},{name:`resultingLinks`,type:`text`,required:!1},{name:`occurredAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-projects:AssistanceRequest`],exposed:!1},{id:`@happyvertical/smrt-projects:Comment`,name:`Comment`,collection:`comments`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`issueId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Issue`,description:`The issue this comment is on.`},{name:`commentId`,type:`text`,required:!1,default:``},{name:`body`,type:`text`,required:!1,default:``,description:`The comment text.`},{name:`author`,type:`text`,required:!1,default:``,description:`Who wrote it.`},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0},{name:`url`,type:`text`,required:!1,default:``}],rest:[{method:`GET`,path:`/comments`},{method:`GET`,path:`/comments/[id]`}],mcp:[{operation:`get`,name:`comment_get`},{operation:`list`,name:`comment_list`}],cli:[{operation:`get`,name:`comment_get`},{operation:`list`,name:`comment_list`}],methods:[{name:`extractActionItems`,async:!0,parameters:[],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getSentiment`,async:!0,parameters:[],returnType:`Promise<CommentSentiment>`,aiCallable:!1},{name:`isApproval`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isQuestion`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`requestsChanges`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`summarize`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1}],references:[`@happyvertical/smrt-projects:Issue`],exposed:!0},{id:`@happyvertical/smrt-projects:DevelopmentRequest`,name:`DevelopmentRequest`,collection:`developmentrequests`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`projectId`,type:`text`,required:!1,default:``},{name:`integrationId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:ProjectIntegration`},{name:`requesterId`,type:`text`,required:!1,default:``},{name:`participantId`,type:`text`,required:!1,default:``},{name:`type`,type:`text`,required:!1,default:`feature`},{name:`description`,type:`text`,required:!1,default:``},{name:`evidence`,type:`text`,required:!1,default:`[]`},{name:`visibility`,type:`text`,required:!1,default:`requester`,enum:[`requester`,`workspace`,`public`,`project_team`,`internal`]},{name:`origin`,type:`text`,required:!1,default:`managed-app`},{name:`discussion`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`submitted`,enum:[`submitted`,`triaged`,`planned`,`in_progress`,`completed`,`declined`]}],rest:[],mcp:[],cli:[],methods:[{name:`createManaged`,async:!0,parameters:[`input: any`],returnType:`Promise<DevelopmentRequest>`,aiCallable:!1},{name:`getEvidence`,async:!1,parameters:[],returnType:`DevelopmentRequestEvidence[]`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`listByIntegrationRequester`,async:!0,parameters:[`input: object`],returnType:`Promise<DevelopmentRequest[]>`,aiCallable:!1},{name:`listForProject`,async:!0,parameters:[`tenantId: string`,`projectId: string`,`status?: DevelopmentRequestStatus`],returnType:`Promise<DevelopmentRequest[]>`,aiCallable:!1},{name:`setEvidence`,async:!1,parameters:[`value: DevelopmentRequestEvidence[] | string`],returnType:`void`,aiCallable:!1},{name:`transitionStatus`,async:!0,parameters:[`tenantId: string`,`requestId: string`,`transition: DevelopmentRequestTransitionInput`],returnType:`Promise<DevelopmentRequest>`,aiCallable:!1}],references:[`@happyvertical/smrt-projects:ProjectIntegration`],exposed:!1},{id:`@happyvertical/smrt-projects:DevelopmentRequestHistory`,name:`DevelopmentRequestHistory`,collection:`developmentrequesthistories`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`requestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:DevelopmentRequest`},{name:`fromStatus`,type:`text`,required:!1,default:``},{name:`toStatus`,type:`text`,required:!1,default:`submitted`,enum:[`submitted`,`triaged`,`planned`,`in_progress`,`completed`,`declined`]},{name:`actorType`,type:`text`,required:!1,default:`system`,enum:[`integration`,`participant`,`system`]},{name:`actorId`,type:`text`,required:!1,default:``},{name:`note`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`listForRequest`,async:!0,parameters:[`tenantId: string`,`requestId: string`],returnType:`Promise<DevelopmentRequestHistory[]>`,aiCallable:!1}],references:[`@happyvertical/smrt-projects:DevelopmentRequest`],exposed:!1},{id:`@happyvertical/smrt-projects:DevelopmentRequestWorkLink`,name:`DevelopmentRequestWorkLink`,collection:`developmentrequestworklinks`,description:`Provider-neutral connection from a Development Request to canonical work.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`requestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:DevelopmentRequest`},{name:`workItemType`,type:`text`,required:!1},{name:`workItemId`,type:`text`,required:!1},{name:`canonicalStatus`,type:`text`,required:!1},{name:`providerRef`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`lastProjectedAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-projects:DevelopmentRequest`],exposed:!1},{id:`@happyvertical/smrt-projects:Issue`,name:`Issue`,collection:`issues`,display:{label:`title`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`repositoryId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Repository`},{name:`projectId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Project`,description:`The project this issue belongs to.`},{name:`number`,type:`integer`,required:!1,default:0},{name:`nodeId`,type:`text`,required:!1,default:``},{name:`title`,type:`text`,required:!1,default:``,description:`A short summary of the issue.`},{name:`body`,type:`text`,required:!1,default:``,description:`The full description.`},{name:`state`,type:`text`,required:!1,default:`open`,enum:[`open`,`closed`],description:`open or closed.`},{name:`author`,type:`text`,required:!1,default:``,description:`Who raised the issue.`},{name:`labels`,type:`json`,required:!1,description:`The labels attached to the issue.`},{name:`assignees`,type:`json`,required:!1,description:`The people working on it.`},{name:`commentsCount`,type:`integer`,required:!1,default:0},{name:`lastSyncedAt`,type:`datetime`,required:!1},{name:`originalBody`,type:`text`,required:!1,default:``},{name:`synthesisCount`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/issues/findByProject`},{method:`POST`,path:`/issues/findByRepository`},{method:`POST`,path:`/issues/findOpen`},{method:`POST`,path:`/issues/findByLabel`},{method:`POST`,path:`/issues/findByAssignee`},{method:`POST`,path:`/issues/findNeedingReview`},{method:`POST`,path:`/issues/findByNumber`},{method:`POST`,path:`/issues/findWithUnincorporatedFeedback`},{method:`POST`,path:`/issues/findByTenant`},{method:`POST`,path:`/issues/findGlobal`},{method:`POST`,path:`/issues/findWithGlobals`},{method:`GET`,path:`/issues`},{method:`GET`,path:`/issues/[id]`},{method:`POST`,path:`/issues`},{method:`PATCH`,path:`/issues/[id]`}],mcp:[{operation:`get`,name:`issue_get`},{operation:`incorporateFeedback`,name:`issue_incorporatefeedback`},{operation:`list`,name:`issue_list`},{operation:`sync`,name:`issue_sync`},{operation:`batchSync`,name:`issuecollection_batchsync`},{operation:`discover`,name:`issuecollection_discover`},{operation:`findByAssignee`,name:`issuecollection_findbyassignee`},{operation:`findByLabel`,name:`issuecollection_findbylabel`},{operation:`findByNumber`,name:`issuecollection_findbynumber`},{operation:`findByProject`,name:`issuecollection_findbyproject`},{operation:`findByRepository`,name:`issuecollection_findbyrepository`},{operation:`findByTenant`,name:`issuecollection_findbytenant`},{operation:`findGlobal`,name:`issuecollection_findglobal`},{operation:`findNeedingReview`,name:`issuecollection_findneedingreview`},{operation:`findOpen`,name:`issuecollection_findopen`},{operation:`findWithGlobals`,name:`issuecollection_findwithglobals`},{operation:`findWithUnincorporatedFeedback`,name:`issuecollection_findwithunincorporatedfeedback`}],cli:[{operation:`get`,name:`issue_get`},{operation:`incorporateFeedback`,name:`issue_incorporateFeedback`},{operation:`list`,name:`issue_list`},{operation:`rollback`,name:`issue_rollback`},{operation:`sync`,name:`issue_sync`},{operation:`batchSync`,name:`issuecollection_batchSync`},{operation:`discover`,name:`issuecollection_discover`},{operation:`findByAssignee`,name:`issuecollection_findByAssignee`},{operation:`findByLabel`,name:`issuecollection_findByLabel`},{operation:`findByNumber`,name:`issuecollection_findByNumber`},{operation:`findByProject`,name:`issuecollection_findByProject`},{operation:`findByRepository`,name:`issuecollection_findByRepository`},{operation:`findByTenant`,name:`issuecollection_findByTenant`},{operation:`findGlobal`,name:`issuecollection_findGlobal`},{operation:`findNeedingReview`,name:`issuecollection_findNeedingReview`},{operation:`findOpen`,name:`issuecollection_findOpen`},{operation:`findWithGlobals`,name:`issuecollection_findWithGlobals`},{operation:`findWithUnincorporatedFeedback`,name:`issuecollection_findWithUnincorporatedFeedback`}],methods:[{name:`addComment`,async:!0,parameters:[`body: string`],returnType:`Promise<Comment>`,aiCallable:!1},{name:`addLabels`,async:!0,parameters:[`labels: string[]`],returnType:`Promise<void>`,aiCallable:!1},{name:`assign`,async:!0,parameters:[`assignees: string[]`],returnType:`Promise<void>`,aiCallable:!1},{name:`batchSync`,async:!0,parameters:[`repository: Repository`,`options?: object`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`clearCache`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`close`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`discover`,async:!0,parameters:[`options: object`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findByAssignee`,async:!0,parameters:[`assignee: string`,`repositoryId?: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findByLabel`,async:!0,parameters:[`label: string`,`repositoryId?: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findByNumber`,async:!0,parameters:[`repositoryId: string`,`number: number`],returnType:`Promise<Issue | null>`,aiCallable:!0},{name:`findByProject`,async:!0,parameters:[`projectId: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findByRepository`,async:!0,parameters:[`repositoryId: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findNeedingReview`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findOpen`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`findWithUnincorporatedFeedback`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<Issue[]>`,aiCallable:!0},{name:`getClient`,async:!0,parameters:[],returnType:`Promise<IRepository>`,aiCallable:!1},{name:`getComments`,async:!0,parameters:[],returnType:`Promise<Comment[]>`,aiCallable:!1},{name:`getRepository`,async:!0,parameters:[],returnType:`Promise<Repository>`,aiCallable:!1},{name:`getUrl`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`hasRepository`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`incorporateFeedback`,async:!0,parameters:[`options?: IncorporateFeedbackOptions`],returnType:`Promise<IncorporateFeedbackResult>`,aiCallable:!0},{name:`isBugReport`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isFeatureRequest`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`needsReview`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`removeLabel`,async:!0,parameters:[`label: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`rollback`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!1},{name:`suggestLabels`,async:!0,parameters:[`vocabulary?: IssueLabelVocabulary`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`sync`,async:!0,parameters:[`options?: SyncOptions`],returnType:`Promise<this>`,aiCallable:!0}],references:[`@happyvertical/smrt-projects:Project`,`@happyvertical/smrt-projects:Repository`],exposed:!0},{id:`@happyvertical/smrt-projects:Label`,name:`Label`,collection:`labels`,display:{label:`name`},fields:[{name:`repositoryId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Repository`},{name:`projectId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Project`,description:`The project this label belongs to.`},{name:`name`,type:`text`,required:!1,default:``,description:`The label's name, for example bug.`},{name:`color`,type:`text`,required:!1,default:``,description:`The label's colour.`},{name:`description`,type:`text`,required:!1,default:``,description:`What the label means.`}],rest:[{method:`GET`,path:`/labels`},{method:`GET`,path:`/labels/[id]`},{method:`POST`,path:`/labels`},{method:`PATCH`,path:`/labels/[id]`},{method:`DELETE`,path:`/labels/[id]`}],mcp:[{operation:`create`,name:`label_create`},{operation:`get`,name:`label_get`},{operation:`list`,name:`label_list`}],cli:[{operation:`create`,name:`label_create`},{operation:`delete`,name:`label_delete`},{operation:`get`,name:`label_get`},{operation:`list`,name:`label_list`},{operation:`update`,name:`label_update`}],methods:[{name:`createInRepository`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getCategory`,async:!1,parameters:[],returnType:`'type' | 'priority' | 'status' | 'area' | 'other'`,aiCallable:!1},{name:`getHexColor`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`getPriorityLevel`,async:!1,parameters:[],returnType:`number | null`,aiCallable:!1},{name:`isPriorityLabel`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isStatusLabel`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTypeLabel`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`updateInRepository`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-projects:Project`,`@happyvertical/smrt-projects:Repository`],exposed:!0},{id:`@happyvertical/smrt-projects:PreviewApproval`,name:`PreviewApproval`,collection:`previewapprovals`,description:`Client decision state for one preview produced during delivery.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`requestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:DevelopmentRequest`},{name:`previewId`,type:`text`,required:!1},{name:`previewUrl`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`pending`,`approved`,`rejected`,`stale`]},{name:`decidedByRef`,type:`text`,required:!1},{name:`reason`,type:`text`,required:!1},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`decidedAt`,type:`datetime`,required:!1},{name:`staleAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-projects:DevelopmentRequest`],exposed:!1},{id:`@happyvertical/smrt-projects:Project`,name:`Project`,collection:`projects`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`projectId`,type:`text`,required:!1,default:``},{name:`projectNumber`,type:`integer`,required:!1,default:0},{name:`title`,type:`text`,required:!1,default:``,description:`The project's name.`},{name:`description`,type:`text`,required:!1,default:``,description:`What the project is about.`},{name:`owner`,type:`text`,required:!1,default:``,description:`Who owns or runs the project.`},{name:`url`,type:`text`,required:!1,default:``,description:`A link to the project elsewhere.`},{name:`providerType`,type:`text`,required:!1,default:`github`,enum:[`github`,`jira`,`linear`,`zenhub`]},{name:`tokenConfigKey`,type:`text`,required:!1,default:`GITHUB_TOKEN`},{name:`statuses`,type:`json`,required:!1},{name:`fields`,type:`json`,required:!1},{name:`statusFieldId`,type:`text`,required:!1,default:``},{name:`statusOptions`,type:`json`,required:!1},{name:`lastSyncedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/projects/findByTitle`},{method:`POST`,path:`/projects/findByOwner`},{method:`POST`,path:`/projects/findByProvider`},{method:`POST`,path:`/projects/getOrCreate`},{method:`POST`,path:`/projects/syncAll`},{method:`POST`,path:`/projects/findWithItemsInStatus`},{method:`POST`,path:`/projects/getStatistics`},{method:`POST`,path:`/projects/findByTenant`},{method:`POST`,path:`/projects/findGlobal`},{method:`POST`,path:`/projects/findWithGlobals`},{method:`GET`,path:`/projects`},{method:`GET`,path:`/projects/[id]`},{method:`POST`,path:`/projects`},{method:`PATCH`,path:`/projects/[id]`}],mcp:[{operation:`addItem`,name:`project_additem`},{operation:`get`,name:`project_get`},{operation:`list`,name:`project_list`},{operation:`sync`,name:`project_sync`},{operation:`updateItemStatus`,name:`project_updateitemstatus`},{operation:`findByOwner`,name:`projectcollection_findbyowner`},{operation:`findByProvider`,name:`projectcollection_findbyprovider`},{operation:`findByTenant`,name:`projectcollection_findbytenant`},{operation:`findByTitle`,name:`projectcollection_findbytitle`},{operation:`findGlobal`,name:`projectcollection_findglobal`},{operation:`findWithGlobals`,name:`projectcollection_findwithglobals`},{operation:`findWithItemsInStatus`,name:`projectcollection_findwithitemsinstatus`},{operation:`getOrCreate`,name:`projectcollection_getorcreate`},{operation:`getStatistics`,name:`projectcollection_getstatistics`},{operation:`syncAll`,name:`projectcollection_syncall`}],cli:[{operation:`addItem`,name:`project_addItem`},{operation:`get`,name:`project_get`},{operation:`list`,name:`project_list`},{operation:`listItems`,name:`project_listItems`},{operation:`sync`,name:`project_sync`},{operation:`updateItemStatus`,name:`project_updateItemStatus`},{operation:`findByOwner`,name:`projectcollection_findByOwner`},{operation:`findByProvider`,name:`projectcollection_findByProvider`},{operation:`findByTenant`,name:`projectcollection_findByTenant`},{operation:`findByTitle`,name:`projectcollection_findByTitle`},{operation:`findGlobal`,name:`projectcollection_findGlobal`},{operation:`findWithGlobals`,name:`projectcollection_findWithGlobals`},{operation:`findWithItemsInStatus`,name:`projectcollection_findWithItemsInStatus`},{operation:`getOrCreate`,name:`projectcollection_getOrCreate`},{operation:`getStatistics`,name:`projectcollection_getStatistics`},{operation:`syncAll`,name:`projectcollection_syncAll`}],methods:[{name:`addItem`,async:!0,parameters:[`item: Issue | PullRequest`],returnType:`Promise<ProjectItem>`,aiCallable:!0},{name:`analyzeHealth`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`clearClient`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByOwner`,async:!0,parameters:[`owner: string`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`findByProvider`,async:!0,parameters:[`providerType: ProjectProviderType`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`findByTitle`,async:!0,parameters:[`title: string`],returnType:`Promise<Project | null>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`findWithItemsInStatus`,async:!0,parameters:[`status: string`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`getClient`,async:!0,parameters:[],returnType:`Promise<IProject>`,aiCallable:!1},{name:`getFields`,async:!0,parameters:[],returnType:`Promise<ProjectField[]>`,aiCallable:!1},{name:`getItem`,async:!0,parameters:[`itemId: string`],returnType:`Promise<ProjectItem | null>`,aiCallable:!1},{name:`getItemsByStatus`,async:!0,parameters:[`status: string`],returnType:`Promise<ProjectItem[]>`,aiCallable:!1},{name:`getOrCreate`,async:!0,parameters:[`projectId: string`,`options?: object`],returnType:`Promise<Project>`,aiCallable:!0},{name:`getStatistics`,async:!0,parameters:[`projectId: string`],returnType:`Promise<object>`,aiCallable:!0},{name:`getStatuses`,async:!0,parameters:[],returnType:`Promise<ProjectStatus[]>`,aiCallable:!1},{name:`listItems`,async:!0,parameters:[`filters?: ItemFilters`],returnType:`Promise<ProjectItem[]>`,aiCallable:!1},{name:`moveItem`,async:!0,parameters:[`item: Issue | PullRequest`,`status: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeItem`,async:!0,parameters:[`itemId: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`sync`,async:!0,parameters:[`options?: SyncOptions`],returnType:`Promise<this>`,aiCallable:!0},{name:`syncAll`,async:!0,parameters:[`options?: object`],returnType:`Promise<Project[]>`,aiCallable:!0},{name:`updateItemField`,async:!0,parameters:[`itemId: string`,`fieldId: string`,`value: unknown`],returnType:`Promise<void>`,aiCallable:!1},{name:`updateItemStatus`,async:!0,parameters:[`itemId: string`,`status: string`],returnType:`Promise<void>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-projects:ProjectDeliveryEvent`,name:`ProjectDeliveryEvent`,collection:`projectdeliveryevents`,description:`Ordered, idempotent delivery update emitted by the control plane.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`integrationId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:ProjectIntegration`},{name:`requestId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:DevelopmentRequest`},{name:`idempotencyKey`,type:`text`,required:!1},{name:`sequence`,type:`integer`,required:!1,default:0},{name:`type`,type:`text`,required:!1,enum:[`work_linked`,`branch`,`pull_request`,`ci`,`preview`,`approval`,`deployment`,`completed`,`rejected`]},{name:`payload`,type:`text`,required:!1},{name:`occurredAt`,type:`datetime`,required:!1},{name:`deliveredAt`,type:`datetime`,required:!1},{name:`deliveryAttempts`,type:`integer`,required:!1,default:0},{name:`lastDeliveryError`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-projects:DevelopmentRequest`,`@happyvertical/smrt-projects:ProjectIntegration`],exposed:!1},{id:`@happyvertical/smrt-projects:ProjectIntegration`,name:`ProjectIntegration`,collection:`projectintegrations`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`projectId`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`credentialHash`,type:`text`,required:!1,default:``},{name:`capabilities`,type:`json`,required:!1},{name:`status`,type:`text`,required:!1,default:`active`,enum:[`active`,`revoked`]},{name:`revokedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/projectintegrations/provision`},{method:`POST`,path:`/projectintegrations/rotate`},{method:`POST`,path:`/projectintegrations/revoke`},{method:`POST`,path:`/projectintegrations/authenticate`},{method:`POST`,path:`/projectintegrations/listForProject`},{method:`POST`,path:`/projectintegrations/findActive`},{method:`GET`,path:`/projectintegrations`},{method:`GET`,path:`/projectintegrations/[id]`}],mcp:[{operation:`get`,name:`projectintegration_get`},{operation:`list`,name:`projectintegration_list`},{operation:`authenticate`,name:`projectintegrationcollection_authenticate`},{operation:`findActive`,name:`projectintegrationcollection_findactive`},{operation:`listForProject`,name:`projectintegrationcollection_listforproject`},{operation:`provision`,name:`projectintegrationcollection_provision`},{operation:`revoke`,name:`projectintegrationcollection_revoke`},{operation:`rotate`,name:`projectintegrationcollection_rotate`}],cli:[{operation:`get`,name:`projectintegration_get`},{operation:`list`,name:`projectintegration_list`},{operation:`authenticate`,name:`projectintegrationcollection_authenticate`},{operation:`findActive`,name:`projectintegrationcollection_findActive`},{operation:`listForProject`,name:`projectintegrationcollection_listForProject`},{operation:`provision`,name:`projectintegrationcollection_provision`},{operation:`revoke`,name:`projectintegrationcollection_revoke`},{operation:`rotate`,name:`projectintegrationcollection_rotate`}],methods:[{name:`authenticate`,async:!0,parameters:[`credential: string`],returnType:`Promise<ProjectIntegration | null>`,aiCallable:!0},{name:`findActive`,async:!0,parameters:[`tenantId: string`,`integrationId: string`],returnType:`Promise<ProjectIntegration | null>`,aiCallable:!0},{name:`hasCapability`,async:!1,parameters:[`capability: ProjectIntegrationCapability`],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`listForProject`,async:!0,parameters:[`tenantId: string`,`projectId: string`],returnType:`Promise<ProjectIntegration[]>`,aiCallable:!0},{name:`provision`,async:!0,parameters:[`input: object`],returnType:`Promise<object>`,aiCallable:!0},{name:`revoke`,async:!0,parameters:[`tenantId: string`,`integrationId: string`],returnType:`Promise<ProjectIntegration>`,aiCallable:!0},{name:`rotate`,async:!0,parameters:[`tenantId: string`,`integrationId: string`],returnType:`Promise<object>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-projects:ProjectIntegrationAudit`,name:`ProjectIntegrationAudit`,collection:`projectintegrationaudits`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`integrationId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-projects:ProjectIntegration`},{name:`action`,type:`text`,required:!1,default:`created`,enum:[`created`,`rotated`,`revoked`]},{name:`note`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`listForIntegration`,async:!0,parameters:[`tenantId: string`,`integrationId: string`],returnType:`Promise<ProjectIntegrationAudit[]>`,aiCallable:!1}],references:[`@happyvertical/smrt-projects:ProjectIntegration`],exposed:!1},{id:`@happyvertical/smrt-projects:PullRequest`,name:`PullRequest`,collection:`issues`,extends:`@happyvertical/smrt-projects:Issue`,display:{label:`title`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`repositoryId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Repository`},{name:`projectId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-projects:Project`,description:`The project this issue belongs to.`},{name:`number`,type:`integer`,required:!1,default:0},{name:`nodeId`,type:`text`,required:!1,default:``},{name:`title`,type:`text`,required:!1,default:``,description:`A short summary of the issue.`},{name:`body`,type:`text`,required:!1,default:``,description:`The full description.`},{name:`state`,type:`text`,required:!1,default:`open`,enum:[`open`,`closed`],description:`open or closed.`},{name:`author`,type:`text`,required:!1,default:``,description:`Who raised the issue.`},{name:`labels`,type:`json`,required:!1,description:`The labels attached to the issue.`},{name:`assignees`,type:`json`,required:!1,description:`The people working on it.`},{name:`commentsCount`,type:`integer`,required:!1,default:0},{name:`lastSyncedAt`,type:`datetime`,required:!1},{name:`originalBody`,type:`text`,required:!1,default:``},{name:`synthesisCount`,type:`integer`,required:!1,default:0},{name:`headRef`,type:`text`,required:!1,default:``},{name:`baseRef`,type:`text`,required:!1,default:``},{name:`merged`,type:`boolean`,required:!1,default:!1},{name:`mergedAt`,type:`datetime`,required:!1},{name:`mergeable`,type:`boolean`,required:!1,default:!0},{name:`draft`,type:`boolean`,required:!1,default:!1},{name:`additions`,type:`integer`,required:!1,default:0},{name:`deletions`,type:`integer`,required:!1,default:0},{name:`changedFiles`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/issues/findByRepository`},{method:`POST`,path:`/issues/findOpen`},{method:`POST`,path:`/issues/findDrafts`},{method:`POST`,path:`/issues/findReadyToMerge`},{method:`POST`,path:`/issues/findByBranch`},{method:`POST`,path:`/issues/findByNumber`},{method:`POST`,path:`/issues/findAIReadyToMerge`},{method:`POST`,path:`/issues/findBySize`},{method:`POST`,path:`/issues/findByTenant`},{method:`POST`,path:`/issues/findGlobal`},{method:`POST`,path:`/issues/findWithGlobals`},{method:`GET`,path:`/issues`},{method:`GET`,path:`/issues/[id]`},{method:`POST`,path:`/issues`},{method:`PATCH`,path:`/issues/[id]`}],mcp:[{operation:`get`,name:`pullrequest_get`},{operation:`list`,name:`pullrequest_list`},{operation:`merge`,name:`pullrequest_merge`},{operation:`summarize`,name:`pullrequest_summarize`},{operation:`sync`,name:`pullrequest_sync`},{operation:`batchSync`,name:`pullrequestcollection_batchsync`},{operation:`discover`,name:`pullrequestcollection_discover`},{operation:`findAIReadyToMerge`,name:`pullrequestcollection_findaireadytomerge`},{operation:`findByBranch`,name:`pullrequestcollection_findbybranch`},{operation:`findByNumber`,name:`pullrequestcollection_findbynumber`},{operation:`findByRepository`,name:`pullrequestcollection_findbyrepository`},{operation:`findBySize`,name:`pullrequestcollection_findbysize`},{operation:`findByTenant`,name:`pullrequestcollection_findbytenant`},{operation:`findDrafts`,name:`pullrequestcollection_finddrafts`},{operation:`findGlobal`,name:`pullrequestcollection_findglobal`},{operation:`findOpen`,name:`pullrequestcollection_findopen`},{operation:`findReadyToMerge`,name:`pullrequestcollection_findreadytomerge`},{operation:`findWithGlobals`,name:`pullrequestcollection_findwithglobals`}],cli:[{operation:`get`,name:`pullrequest_get`},{operation:`list`,name:`pullrequest_list`},{operation:`markReady`,name:`pullrequest_markReady`},{operation:`merge`,name:`pullrequest_merge`},{operation:`summarize`,name:`pullrequest_summarize`},{operation:`sync`,name:`pullrequest_sync`},{operation:`batchSync`,name:`pullrequestcollection_batchSync`},{operation:`discover`,name:`pullrequestcollection_discover`},{operation:`findAIReadyToMerge`,name:`pullrequestcollection_findAIReadyToMerge`},{operation:`findByBranch`,name:`pullrequestcollection_findByBranch`},{operation:`findByNumber`,name:`pullrequestcollection_findByNumber`},{operation:`findByRepository`,name:`pullrequestcollection_findByRepository`},{operation:`findBySize`,name:`pullrequestcollection_findBySize`},{operation:`findByTenant`,name:`pullrequestcollection_findByTenant`},{operation:`findDrafts`,name:`pullrequestcollection_findDrafts`},{operation:`findGlobal`,name:`pullrequestcollection_findGlobal`},{operation:`findOpen`,name:`pullrequestcollection_findOpen`},{operation:`findReadyToMerge`,name:`pullrequestcollection_findReadyToMerge`},{operation:`findWithGlobals`,name:`pullrequestcollection_findWithGlobals`}],methods:[{name:`addComment`,async:!0,parameters:[`body: string`],returnType:`Promise<Comment>`,aiCallable:!1},{name:`addLabels`,async:!0,parameters:[`labels: string[]`],returnType:`Promise<void>`,aiCallable:!1},{name:`assign`,async:!0,parameters:[`assignees: string[]`],returnType:`Promise<void>`,aiCallable:!1},{name:`batchSync`,async:!0,parameters:[`repository: Repository`,`options?: object`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`clearCache`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`close`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`convertToDraft`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`discover`,async:!0,parameters:[`options: object`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findAIReadyToMerge`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findByBranch`,async:!0,parameters:[`branch: string`,`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findByNumber`,async:!0,parameters:[`repositoryId: string`,`number: number`],returnType:`Promise<PullRequest | null>`,aiCallable:!0},{name:`findByRepository`,async:!0,parameters:[`repositoryId: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findBySize`,async:!0,parameters:[`size: 'xs' | 's' | 'm' | 'l' | 'xl'`,`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findDrafts`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findLinkedIssue`,async:!0,parameters:[],returnType:`Promise<Issue | null>`,aiCallable:!1},{name:`findOpen`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findReadyToMerge`,async:!0,parameters:[`repositoryId?: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<PullRequest[]>`,aiCallable:!0},{name:`getChangeSize`,async:!1,parameters:[],returnType:`'xs' | 's' | 'm' | 'l' | 'xl'`,aiCallable:!1},{name:`getClient`,async:!0,parameters:[],returnType:`Promise<IRepository>`,aiCallable:!1},{name:`getComments`,async:!0,parameters:[],returnType:`Promise<Comment[]>`,aiCallable:!1},{name:`getRepository`,async:!0,parameters:[],returnType:`Promise<Repository>`,aiCallable:!1},{name:`getUrl`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`hasRepository`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`incorporateFeedback`,async:!0,parameters:[`options?: IncorporateFeedbackOptions`],returnType:`Promise<IncorporateFeedbackResult>`,aiCallable:!1},{name:`isBugReport`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isFeatureRequest`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`isReadyToMerge`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`markReady`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`merge`,async:!0,parameters:[`method?: MergeMethod`],returnType:`Promise<void>`,aiCallable:!0},{name:`needsReview`,async:!0,parameters:[],returnType:`Promise<boolean>`,aiCallable:!1},{name:`removeLabel`,async:!0,parameters:[`label: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`requestReviewers`,async:!0,parameters:[`reviewers: string[]`],returnType:`Promise<void>`,aiCallable:!1},{name:`rollback`,async:!0,parameters:[],returnType:`Promise<object>`,aiCallable:!1},{name:`suggestLabels`,async:!0,parameters:[`vocabulary?: IssueLabelVocabulary`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`suggestReviewers`,async:!0,parameters:[],returnType:`Promise<string[]>`,aiCallable:!1},{name:`summarize`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!0},{name:`sync`,async:!0,parameters:[`options?: SyncOptions`],returnType:`Promise<this>`,aiCallable:!0}],references:[`@happyvertical/smrt-projects:Project`,`@happyvertical/smrt-projects:Repository`],exposed:!0},{id:`@happyvertical/smrt-projects:Repository`,name:`Repository`,collection:`repositories`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`owner`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`fullName`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`defaultBranch`,type:`text`,required:!1,default:`main`},{name:`isPrivate`,type:`boolean`,required:!1,default:!1},{name:`providerType`,type:`text`,required:!1,default:`github`,enum:[`github`,`gitlab`,`bitbucket`,`azure`]},{name:`baseUrl`,type:`text`,required:!1,default:``},{name:`tokenConfigKey`,type:`text`,required:!1,default:`GITHUB_TOKEN`},{name:`lastSyncedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/repositories/findByFullName`},{method:`POST`,path:`/repositories/findByOwner`},{method:`POST`,path:`/repositories/findByProvider`},{method:`POST`,path:`/repositories/getOrCreate`},{method:`POST`,path:`/repositories/syncAll`},{method:`POST`,path:`/repositories/findWithOpenIssues`},{method:`POST`,path:`/repositories/findByTenant`},{method:`POST`,path:`/repositories/findGlobal`},{method:`POST`,path:`/repositories/findWithGlobals`},{method:`GET`,path:`/repositories`},{method:`GET`,path:`/repositories/[id]`},{method:`POST`,path:`/repositories`},{method:`PATCH`,path:`/repositories/[id]`}],mcp:[{operation:`get`,name:`repository_get`},{operation:`list`,name:`repository_list`},{operation:`sync`,name:`repository_sync`},{operation:`findByFullName`,name:`repositorycollection_findbyfullname`},{operation:`findByOwner`,name:`repositorycollection_findbyowner`},{operation:`findByProvider`,name:`repositorycollection_findbyprovider`},{operation:`findByTenant`,name:`repositorycollection_findbytenant`},{operation:`findGlobal`,name:`repositorycollection_findglobal`},{operation:`findWithGlobals`,name:`repositorycollection_findwithglobals`},{operation:`findWithOpenIssues`,name:`repositorycollection_findwithopenissues`},{operation:`getOrCreate`,name:`repositorycollection_getorcreate`},{operation:`syncAll`,name:`repositorycollection_syncall`}],cli:[{operation:`create`,name:`repository_create`},{operation:`get`,name:`repository_get`},{operation:`list`,name:`repository_list`},{operation:`sync`,name:`repository_sync`},{operation:`findByFullName`,name:`repositorycollection_findByFullName`},{operation:`findByOwner`,name:`repositorycollection_findByOwner`},{operation:`findByProvider`,name:`repositorycollection_findByProvider`},{operation:`findByTenant`,name:`repositorycollection_findByTenant`},{operation:`findGlobal`,name:`repositorycollection_findGlobal`},{operation:`findWithGlobals`,name:`repositorycollection_findWithGlobals`},{operation:`findWithOpenIssues`,name:`repositorycollection_findWithOpenIssues`},{operation:`getOrCreate`,name:`repositorycollection_getOrCreate`},{operation:`syncAll`,name:`repositorycollection_syncAll`}],methods:[{name:`clearClient`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`createIssue`,async:!0,parameters:[`data: CreateIssueInput`],returnType:`Promise<Issue>`,aiCallable:!1},{name:`createPullRequest`,async:!0,parameters:[`data: CreatePRInput`],returnType:`Promise<PullRequest>`,aiCallable:!1},{name:`findByFullName`,async:!0,parameters:[`owner: string`,`name: string`],returnType:`Promise<Repository | null>`,aiCallable:!0},{name:`findByOwner`,async:!0,parameters:[`owner: string`],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`findByProvider`,async:!0,parameters:[`providerType: RepositoryProviderType`],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`findWithOpenIssues`,async:!0,parameters:[],returnType:`Promise<Repository[]>`,aiCallable:!0},{name:`getClient`,async:!0,parameters:[],returnType:`Promise<IRepository>`,aiCallable:!1},{name:`getIssues`,async:!0,parameters:[`filters?: SearchFilters`],returnType:`Promise<Issue[]>`,aiCallable:!1},{name:`getOrCreate`,async:!0,parameters:[`owner: string`,`name: string`,`options?: object`],returnType:`Promise<Repository>`,aiCallable:!0},{name:`getPullRequests`,async:!0,parameters:[`filters?: SearchFilters`],returnType:`Promise<PullRequest[]>`,aiCallable:!1},{name:`hasOpenIssuesMatching`,async:!0,parameters:[`criteria: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`summarizeActivity`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`sync`,async:!0,parameters:[`options?: SyncOptions`],returnType:`Promise<this>`,aiCallable:!0},{name:`syncAll`,async:!0,parameters:[`options?: object`],returnType:`Promise<Repository[]>`,aiCallable:!0}],references:[],exposed:!0}],dependencies:[`subscriptions`,`timesheets`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`,`#3626`,`#3627`],reason:`node:crypto/async_hooks; core migrations; repos and ai SDKs`,via:[`@happyvertical/smrt-subscriptions`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-timesheets`]},recipes:[{id:`projects.tracker`,label:`Projects`,summary:`Track projects and the issues, labels and comments inside them.`,synonyms:[`issues`,`tasks`,`tickets`,`bugs`,`kanban`],models:[`@happyvertical/smrt-projects:Project`,`@happyvertical/smrt-projects:Issue`,`@happyvertical/smrt-projects:Label`,`@happyvertical/smrt-projects:Comment`],nav:[{label:`Projects`,model:`@happyvertical/smrt-projects:Project`,icon:`folder`,description:`Bigger jobs broken into steps you can follow.`},{label:`Issues`,model:`@happyvertical/smrt-projects:Issue`,icon:`wrench`,description:`Problems and to-dos to track until they are done.`},{label:`Labels`,model:`@happyvertical/smrt-projects:Label`,icon:`tag`,description:`Tags to sort your projects and issues your way.`}],requires:[],section:{id:`projects`,label:`Projects`,icon:`briefcase`,description:`Projects, their issues, labels and comments.`},options:{"@happyvertical/smrt-projects:Project":{fields:{projectId:{visibility:`hidden`},projectNumber:{visibility:`hidden`},providerType:{visibility:`hidden`},tokenConfigKey:{visibility:`hidden`},statuses:{visibility:`hidden`},fields:{visibility:`hidden`},statusFieldId:{visibility:`hidden`},statusOptions:{visibility:`hidden`},lastSyncedAt:{visibility:`hidden`}}},"@happyvertical/smrt-projects:Issue":{fields:{nodeId:{visibility:`hidden`},originalBody:{visibility:`hidden`},synthesisCount:{visibility:`hidden`},lastSyncedAt:{visibility:`hidden`},commentsCount:{visibility:`hidden`},repositoryId:{visibility:`hidden`},number:{visibility:`hidden`}}},"@happyvertical/smrt-projects:Comment":{fields:{commentId:{visibility:`hidden`},url:{visibility:`hidden`}}},"@happyvertical/smrt-projects:Label":{fields:{repositoryId:{visibility:`hidden`}}}},help:{markdown:`## Overview
700
+
701
+ Projects tracks the work you are planning: projects, the issues in them, and
702
+ the labels and comments that organise them.
703
+
704
+ ## Tasks
705
+
706
+ ### Start a project
707
+
708
+ 1. Create a new project.
709
+ 2. Give it a **{field:title}** and a **{field:description}**.
710
+
711
+ ### Log an issue
712
+
713
+ 1. Create a new issue and pick the **{field:projectId}**.
714
+ 2. Write a **{field:title}** and a **{field:body}**.
715
+ 3. Close it by setting **{field:state}** to closed. Comments are attached to the
716
+ issue.
717
+ `,fieldRefs:[`body`,`description`,`projectId`,`state`,`title`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; repos and ai SDKs; and its package depends on @happyvertical/smrt-subscriptions, @happyvertical/smrt-tenancy, @happyvertical/smrt-timesheets, which do not build for a browser (#3624, #3626, #3627).`]}}]},{id:`properties`,packageName:`@happyvertical/smrt-properties`,version:`0.55.11`,description:`Digital property and zone management models for SMRT framework`,models:[{id:`@happyvertical/smrt-properties:Property`,name:`Property`,collection:`properties`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`domain`,type:`text`,required:!1,default:``},{name:`url`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`repositoryId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-projects:Repository`},{name:`ownerId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`status`,type:`text`,required:!1,default:`active`,enum:[`active`,`inactive`,`pending`]},{name:`metadata`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/properties/findByDomain`},{method:`POST`,path:`/properties/findByRepository`},{method:`POST`,path:`/properties/findByOwner`},{method:`POST`,path:`/properties/findActive`},{method:`POST`,path:`/properties/findByStatus`},{method:`POST`,path:`/properties/getOrCreateByDomain`},{method:`POST`,path:`/properties/countByStatus`},{method:`POST`,path:`/properties/findByTenant`},{method:`POST`,path:`/properties/findGlobal`},{method:`POST`,path:`/properties/findWithGlobals`},{method:`GET`,path:`/properties`},{method:`GET`,path:`/properties/[id]`},{method:`POST`,path:`/properties`},{method:`PATCH`,path:`/properties/[id]`},{method:`DELETE`,path:`/properties/[id]`}],mcp:[{operation:`create`,name:`property_create`},{operation:`get`,name:`property_get`},{operation:`list`,name:`property_list`},{operation:`countByStatus`,name:`propertycollection_countbystatus`},{operation:`findActive`,name:`propertycollection_findactive`},{operation:`findByDomain`,name:`propertycollection_findbydomain`},{operation:`findByOwner`,name:`propertycollection_findbyowner`},{operation:`findByRepository`,name:`propertycollection_findbyrepository`},{operation:`findByStatus`,name:`propertycollection_findbystatus`},{operation:`findByTenant`,name:`propertycollection_findbytenant`},{operation:`findGlobal`,name:`propertycollection_findglobal`},{operation:`findWithGlobals`,name:`propertycollection_findwithglobals`},{operation:`getOrCreateByDomain`,name:`propertycollection_getorcreatebydomain`}],cli:[{operation:`create`,name:`property_create`},{operation:`createZone`,name:`property_createZone`},{operation:`delete`,name:`property_delete`},{operation:`get`,name:`property_get`},{operation:`getZoneTree`,name:`property_getZoneTree`},{operation:`getZones`,name:`property_getZones`},{operation:`isActive`,name:`property_isActive`},{operation:`list`,name:`property_list`},{operation:`summarize`,name:`property_summarize`},{operation:`update`,name:`property_update`},{operation:`countByStatus`,name:`propertycollection_countByStatus`},{operation:`findActive`,name:`propertycollection_findActive`},{operation:`findByDomain`,name:`propertycollection_findByDomain`},{operation:`findByOwner`,name:`propertycollection_findByOwner`},{operation:`findByRepository`,name:`propertycollection_findByRepository`},{operation:`findByStatus`,name:`propertycollection_findByStatus`},{operation:`findByTenant`,name:`propertycollection_findByTenant`},{operation:`findGlobal`,name:`propertycollection_findGlobal`},{operation:`findWithGlobals`,name:`propertycollection_findWithGlobals`},{operation:`getOrCreateByDomain`,name:`propertycollection_getOrCreateByDomain`}],methods:[{name:`countByStatus`,async:!0,parameters:[],returnType:`Promise<Record<PropertyStatus, number>>`,aiCallable:!0},{name:`createZone`,async:!0,parameters:[`options: any`],returnType:`any`,aiCallable:!1},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findByDomain`,async:!0,parameters:[`domain: string`],returnType:`Promise<Property | null>`,aiCallable:!0},{name:`findByOwner`,async:!0,parameters:[`ownerId: string`],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findByRepository`,async:!0,parameters:[`repositoryId: string`],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: PropertyStatus`],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Property[]>`,aiCallable:!0},{name:`getOrCreateByDomain`,async:!0,parameters:[`domain: string`,`defaults?: object`],returnType:`Promise<Property>`,aiCallable:!0},{name:`getZoneTree`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getZones`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`summarize`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-projects:Repository`],exposed:!0},{id:`@happyvertical/smrt-properties:Zone`,name:`Zone`,collection:`zones`,display:{label:`name`},fields:[{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-properties:Zone`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`propertyId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-properties:Property`},{name:`name`,type:`text`,required:!1,default:``},{name:`type`,type:`text`,required:!1,default:``},{name:`path`,type:`text`,required:!1,default:``},{name:`selector`,type:`text`,required:!1,default:``},{name:`position`,type:`text`,required:!1,default:``},{name:`width`,type:`integer`,required:!1},{name:`height`,type:`integer`,required:!1},{name:`allowedFormats`,type:`json`,required:!1},{name:`defaultContentId`,type:`text`,required:!1},{name:`metadata`,type:`json`,required:!1}],rest:[{method:`POST`,path:`/zones/findByProperty`},{method:`POST`,path:`/zones/findTopLevel`},{method:`POST`,path:`/zones/findChildren`},{method:`POST`,path:`/zones/findByPath`},{method:`POST`,path:`/zones/findByType`},{method:`POST`,path:`/zones/getTree`},{method:`POST`,path:`/zones/getAncestors`},{method:`POST`,path:`/zones/getDescendants`},{method:`POST`,path:`/zones/getMaxDepth`},{method:`POST`,path:`/zones/findByDimensions`},{method:`POST`,path:`/zones/findByAllowedFormat`},{method:`POST`,path:`/zones/moveZone`},{method:`POST`,path:`/zones/deleteZone`},{method:`POST`,path:`/zones/findByTenant`},{method:`POST`,path:`/zones/findGlobal`},{method:`POST`,path:`/zones/findWithGlobals`},{method:`GET`,path:`/zones`},{method:`GET`,path:`/zones/[id]`},{method:`POST`,path:`/zones`},{method:`PATCH`,path:`/zones/[id]`},{method:`DELETE`,path:`/zones/[id]`}],mcp:[{operation:`create`,name:`zone_create`},{operation:`get`,name:`zone_get`},{operation:`list`,name:`zone_list`},{operation:`deleteZone`,name:`zonecollection_deletezone`},{operation:`findByAllowedFormat`,name:`zonecollection_findbyallowedformat`},{operation:`findByDimensions`,name:`zonecollection_findbydimensions`},{operation:`findByPath`,name:`zonecollection_findbypath`},{operation:`findByProperty`,name:`zonecollection_findbyproperty`},{operation:`findByTenant`,name:`zonecollection_findbytenant`},{operation:`findByType`,name:`zonecollection_findbytype`},{operation:`findChildren`,name:`zonecollection_findchildren`},{operation:`findGlobal`,name:`zonecollection_findglobal`},{operation:`findTopLevel`,name:`zonecollection_findtoplevel`},{operation:`findWithGlobals`,name:`zonecollection_findwithglobals`},{operation:`getAncestors`,name:`zonecollection_getancestors`},{operation:`getDescendants`,name:`zonecollection_getdescendants`},{operation:`getMaxDepth`,name:`zonecollection_getmaxdepth`},{operation:`getTree`,name:`zonecollection_gettree`},{operation:`moveZone`,name:`zonecollection_movezone`}],cli:[{operation:`create`,name:`zone_create`},{operation:`createChild`,name:`zone_createChild`},{operation:`delete`,name:`zone_delete`},{operation:`get`,name:`zone_get`},{operation:`getAncestors`,name:`zone_getAncestors`},{operation:`getChildren`,name:`zone_getChildren`},{operation:`getDepth`,name:`zone_getDepth`},{operation:`getDescendants`,name:`zone_getDescendants`},{operation:`getDimensionString`,name:`zone_getDimensionString`},{operation:`getFullPath`,name:`zone_getFullPath`},{operation:`getHierarchy`,name:`zone_getHierarchy`},{operation:`getParent`,name:`zone_getParent`},{operation:`getProperty`,name:`zone_getProperty`},{operation:`hasDimensions`,name:`zone_hasDimensions`},{operation:`isFormatAllowed`,name:`zone_isFormatAllowed`},{operation:`isTopLevel`,name:`zone_isTopLevel`},{operation:`list`,name:`zone_list`},{operation:`moveTo`,name:`zone_moveTo`},{operation:`toTreeNode`,name:`zone_toTreeNode`},{operation:`update`,name:`zone_update`},{operation:`deleteZone`,name:`zonecollection_deleteZone`},{operation:`findByAllowedFormat`,name:`zonecollection_findByAllowedFormat`},{operation:`findByDimensions`,name:`zonecollection_findByDimensions`},{operation:`findByPath`,name:`zonecollection_findByPath`},{operation:`findByProperty`,name:`zonecollection_findByProperty`},{operation:`findByTenant`,name:`zonecollection_findByTenant`},{operation:`findByType`,name:`zonecollection_findByType`},{operation:`findChildren`,name:`zonecollection_findChildren`},{operation:`findGlobal`,name:`zonecollection_findGlobal`},{operation:`findTopLevel`,name:`zonecollection_findTopLevel`},{operation:`findWithGlobals`,name:`zonecollection_findWithGlobals`},{operation:`getAncestors`,name:`zonecollection_getAncestors`},{operation:`getDescendants`,name:`zonecollection_getDescendants`},{operation:`getMaxDepth`,name:`zonecollection_getMaxDepth`},{operation:`getTree`,name:`zonecollection_getTree`},{operation:`moveZone`,name:`zonecollection_moveZone`}],methods:[{name:`createChild`,async:!0,parameters:[`options: Omit<ZoneOptions, 'propertyId' | 'parentId'>`],returnType:`Promise<Zone>`,aiCallable:!1},{name:`deleteZone`,async:!0,parameters:[`zoneId: string`,`cascade?: boolean`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByAllowedFormat`,async:!0,parameters:[`propertyId: string`,`format: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findByDimensions`,async:!0,parameters:[`propertyId: string`,`width: number`,`height: number`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findByPath`,async:!0,parameters:[`propertyId: string`,`path: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findByProperty`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findByType`,async:!0,parameters:[`propertyId: string`,`type: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findChildren`,async:!0,parameters:[`parentId: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findTopLevel`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Zone[]>`,aiCallable:!0},{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!0},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getDepth`,async:!0,parameters:[],returnType:`Promise<number>`,aiCallable:!1},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!0},{name:`getDimensionString`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getFullPath`,async:!0,parameters:[],returnType:`Promise<string>`,aiCallable:!1},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!1},{name:`getMaxDepth`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getProperty`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getTree`,async:!0,parameters:[`propertyId: string`],returnType:`Promise<ZoneTree<Zone>>`,aiCallable:!0},{name:`hasDimensions`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isFormatAllowed`,async:!1,parameters:[`format: string`],returnType:`boolean`,aiCallable:!1},{name:`isTopLevel`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`moveZone`,async:!0,parameters:[`zoneId: string`,`newParentId: string | null`],returnType:`Promise<Zone | null>`,aiCallable:!0},{name:`toTreeNode`,async:!0,parameters:[],returnType:`Promise<ZoneTreeNode<Zone>>`,aiCallable:!1}],references:[`@happyvertical/smrt-properties:Property`,`@happyvertical/smrt-properties:Zone`],exposed:!0}],dependencies:[`profiles`,`projects`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`reports`,packageName:`@happyvertical/smrt-reports`,version:`0.55.11`,description:`Materialized aggregate report models for SMRT`,models:[{id:`@happyvertical/smrt-reports:RuntimeReport`,name:`RuntimeReport`,collection:`runtimereports`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`sourceId`,type:`text`,required:!1},{name:`spec`,type:`text`,required:!0},{name:`specHash`,type:`text`,required:!1},{name:`status`,type:`text`,required:!0,enum:[`active`,`archived`]},{name:`createdByUserId`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/runtimereports`},{method:`GET`,path:`/runtimereports/[id]`},{method:`POST`,path:`/runtimereports`}],mcp:[{operation:`get`,name:`runtimereport_get`},{operation:`list`,name:`runtimereport_list`}],cli:[{operation:`get`,name:`runtimereport_get`},{operation:`list`,name:`runtimereport_list`}],methods:[{name:`getSpec`,async:!1,parameters:[],returnType:`RuntimeReportSpec`,aiCallable:!1},{name:`setSpec`,async:!1,parameters:[`spec: RuntimeReportSpec`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtPrincipalReportRefreshTask`,name:`SmrtPrincipalReportRefreshTask`,collection:`smrtprincipalreportrefreshtasks`,extends:`@happyvertical/smrt-reports:SmrtReportRefreshTask`,description:`Worker target whose authority requirement cannot be downgraded by job args.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtprincipalreportrefreshtask_get`},{operation:`list`,name:`smrtprincipalreportrefreshtask_list`}],methods:[{name:`run`,async:!0,parameters:[`args?: ReportRefreshJobArgs`,`context?: JobExecutionContext`],returnType:`Promise<unknown>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtReport`,name:`SmrtReport`,collection:`smrtreports`,fields:[{name:`refreshedAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`isStale`,async:!1,parameters:[`ttlMs?: number`],returnType:`boolean`,aiCallable:!1},{name:`refresh`,async:!0,parameters:[`options?: Omit<ReportRefreshOptions, 'db'>`],returnType:`Promise<ReportRefreshResult>`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-reports:SmrtReportLock`,name:`SmrtReportLock`,collection:`smrtreportlocks`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`scopeKey`,type:`text`,required:!0},{name:`reportClass`,type:`text`,required:!0},{name:`ownerId`,type:`text`,required:!1},{name:`acquiredAt`,type:`datetime`,required:!1},{name:`heartbeatAt`,type:`datetime`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtreportlock_get`},{operation:`list`,name:`smrtreportlock_list`}],methods:[],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtReportRefreshTask`,name:`SmrtReportRefreshTask`,collection:`smrtreportrefreshtasks`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`reportClass`,type:`text`,required:!0},{name:`mode`,type:`text`,required:!0,enum:[`rebuild`,`incremental`]},{name:`trigger`,type:`text`,required:!0,enum:[`manual`,`schedule`,`change`,`ttl`,`job`]},{name:`args`,type:`json`,required:!1}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtreportrefreshtask_get`},{operation:`list`,name:`smrtreportrefreshtask_list`}],methods:[{name:`run`,async:!0,parameters:[`args?: ReportRefreshJobArgs`,`context?: JobExecutionContext`],returnType:`Promise<unknown>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtReportRun`,name:`SmrtReportRun`,collection:`smrtreportruns`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`scopeKey`,type:`text`,required:!0},{name:`reportClass`,type:`text`,required:!0},{name:`sourceClass`,type:`text`,required:!0},{name:`mode`,type:`text`,required:!0,enum:[`rebuild`,`incremental`]},{name:`trigger`,type:`text`,required:!0,enum:[`manual`,`schedule`,`change`,`ttl`,`job`]},{name:`status`,type:`text`,required:!0,enum:[`running`,`success`,`failed`,`skipped`],description:`Whether the refresh is running, finished, failed or was skipped.`},{name:`startedAt`,type:`datetime`,required:!0,description:`When the refresh began.`},{name:`completedAt`,type:`datetime`,required:!1,description:`When the refresh finished. Empty while it is still running.`},{name:`rowCount`,type:`integer`,required:!0,description:`How many rows the report held after the refresh.`},{name:`changedGroupCount`,type:`integer`,required:!0},{name:`watermarkBefore`,type:`text`,required:!1},{name:`watermarkAfter`,type:`text`,required:!1},{name:`error`,type:`text`,required:!1,description:`Why the refresh failed. Empty when it worked.`},{name:`metadata`,type:`json`,required:!1}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtreportrun_get`},{operation:`list`,name:`smrtreportrun_list`}],methods:[],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtReportSchedule`,name:`SmrtReportSchedule`,collection:`smrtreportschedules`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`scopeKey`,type:`text`,required:!0},{name:`reportClass`,type:`text`,required:!0},{name:`cron`,type:`text`,required:!0,description:`When the report refreshes, as a cron schedule such as 0 6 * * * for 6 am daily.`},{name:`trigger`,type:`text`,required:!0,enum:[`manual`,`schedule`,`change`,`ttl`,`job`]},{name:`mode`,type:`text`,required:!0,enum:[`rebuild`,`incremental`],description:`Rebuild recomputes the whole report. Incremental updates only what changed.`},{name:`enabled`,type:`boolean`,required:!0,description:`Turn off to stop refreshing without deleting the schedule.`},{name:`status`,type:`text`,required:!0,enum:[`active`,`paused`,`disabled`,`error`],description:`Whether the schedule is active, paused, disabled or in error.`},{name:`nextRun`,type:`datetime`,required:!1,description:`When the report is next due to refresh.`},{name:`lastRun`,type:`datetime`,required:!1,description:`When the report last started a scheduled refresh.`},{name:`lastStatus`,type:`text`,required:!1,enum:[`success`,`failed`],description:`Whether the last scheduled refresh worked or failed.`},{name:`lastError`,type:`text`,required:!1,description:`Why the last scheduled refresh failed. Empty when it worked.`},{name:`runCount`,type:`integer`,required:!0},{name:`successCount`,type:`integer`,required:!0},{name:`failureCount`,type:`integer`,required:!0},{name:`runningCount`,type:`integer`,required:!0},{name:`maxConcurrent`,type:`integer`,required:!0},{name:`queue`,type:`text`,required:!0},{name:`priority`,type:`integer`,required:!0},{name:`timeout`,type:`integer`,required:!0}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtreportschedule_get`},{operation:`list`,name:`smrtreportschedule_list`}],methods:[],references:[],exposed:!0},{id:`@happyvertical/smrt-reports:SmrtReportWatermark`,name:`SmrtReportWatermark`,collection:`smrtreportwatermarks`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`scopeKey`,type:`text`,required:!0},{name:`reportClass`,type:`text`,required:!0},{name:`sourceClass`,type:`text`,required:!0},{name:`watermarkColumn`,type:`text`,required:!0},{name:`watermarkValue`,type:`text`,required:!1},{name:`lastRunId`,type:`text`,required:!1}],rest:[],mcp:[],cli:[{operation:`get`,name:`smrtreportwatermark_get`},{operation:`list`,name:`smrtreportwatermark_list`}],methods:[],references:[],exposed:!0}],dependencies:[],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3624`,`#3625`,`#3627`],reason:`node:crypto/events; @happyvertical/sql root: the sync query builders it needs (validateColumnName, buildWhere, buildAggregate, bucketExpr, tableExists) have no browser-safe SDK entry`,via:[`@happyvertical/smrt-jobs`,`@happyvertical/smrt-tenancy`]},recipes:[{id:`reports.materialized`,label:`Reports`,summary:`Keep totals and trends ready to read, refreshed on a schedule and open to the assistant.`,synonyms:[`reports`,`totals`,`summaries`,`rollups`,`kpis`,`trends`,`dashboards`],models:[`@happyvertical/smrt-reports:SmrtReportRun`,`@happyvertical/smrt-reports:SmrtReportWatermark`,`@happyvertical/smrt-reports:SmrtReportLock`,`@happyvertical/smrt-reports:SmrtReportSchedule`,`@happyvertical/smrt-reports:SmrtReportRefreshTask`,`@happyvertical/smrt-reports:SmrtPrincipalReportRefreshTask`],nav:[],requires:[],help:{markdown:`## Overview
718
+
719
+ Reports keep totals and trends, such as revenue by month or signups by week,
720
+ worked out ahead of time so they open instantly. Someone on your team sets up
721
+ each report once. This feature then records when each report was last
722
+ refreshed, how that went, and when it runs next.
723
+
724
+ Reports are calculated on your server, never in the browser, so this feature
725
+ needs your app's database.
726
+
727
+ ## Tasks
728
+
729
+ ### Ask the assistant about a report
730
+
731
+ 1. Ask in plain words, for example "what was revenue last month?".
732
+ 2. The assistant looks up the reports your account may see
733
+ (\`data.discover\`, \`data.inspect\`), then reads rows with \`reports.query\`.
734
+ It only ever sees the columns and the customer data you are allowed to see.
735
+ 3. If the numbers look old, ask how fresh the report is. The answer says when
736
+ it was last refreshed.
737
+ 4. Ask the assistant to refresh a stale report. It previews the refresh with
738
+ \`reports.refresh\` and your app decides who may apply it.
739
+
740
+ The assistant offers these tools only when your app has switched them on.
741
+
742
+ ### Ask a question no report covers
743
+
744
+ 1. Describe what you want to see, for example "orders by status this quarter".
745
+ 2. The assistant checks what it may report on (\`reports.runtime.sources\`) and
746
+ shows a preview of the report it would save (\`reports.runtime.define\`).
747
+ 3. Nothing is saved until you confirm that exact report.
748
+ 4. Open it again later with \`reports.runtime.list\` and \`reports.runtime.run\`.
749
+
750
+ These reports are worked out live each time and their rows are never stored.
751
+ They are not refreshed in the background. A report that people open every day
752
+ is worth asking your team to set up as a refreshed report instead.
753
+
754
+ ### Keep a report fresh
755
+
756
+ 1. Ask your team how the report refreshes: by hand, on a schedule, after the
757
+ data changes, or when it goes out of date.
758
+ 2. A scheduled report repeats on its **{field:SmrtReportSchedule.cron}**, either
759
+ rebuilding everything or updating only what changed, per its
760
+ **{field:SmrtReportSchedule.mode}**.
761
+ 3. Turn **{field:SmrtReportSchedule.enabled}** off to pause a schedule without
762
+ losing it.
763
+ 4. **{field:SmrtReportSchedule.nextRun}** shows when it is next due.
764
+
765
+ ### Check that a refresh worked
766
+
767
+ 1. Look at the latest run for the report. **{field:SmrtReportRun.status}**
768
+ says whether it is running, finished, failed or skipped.
769
+ 2. **{field:SmrtReportRun.completedAt}** and **{field:SmrtReportRun.rowCount}**
770
+ show when it finished and how many rows it holds.
771
+ 3. If it failed, **{field:SmrtReportRun.error}** says why.
772
+ `,fieldRefs:[`SmrtReportRun.completedAt`,`SmrtReportRun.error`,`SmrtReportRun.rowCount`,`SmrtReportRun.status`,`SmrtReportSchedule.cron`,`SmrtReportSchedule.enabled`,`SmrtReportSchedule.mode`,`SmrtReportSchedule.nextRun`]},runtime:`server`,demo:{mode:`server`,reasons:[`The recipe declares runtime "server".`,`Needs a server because its package does not build for a browser: node:crypto/events; @happyvertical/sql root: the sync query builders it needs (validateColumnName, buildWhere, buildAggregate, bucketExpr, tableExists) have no browser-safe SDK entry; and its package depends on @happyvertical/smrt-jobs, @happyvertical/smrt-tenancy, which do not build for a browser (#3615, #3624, #3625, #3627).`]}}]},{id:`sales`,packageName:`@happyvertical/smrt-sales`,version:`0.55.11`,description:`Modular sales for the SMRT framework: agreement execution, CRM, referral intake, neutral commissions, and reusable Svelte surfaces`,models:[{id:`@happyvertical/smrt-sales:AgreementExecution`,name:`AgreementExecution`,collection:`agreementexecutions`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`provider`,type:`text`,required:!0,default:``},{name:`providerAccountRef`,type:`text`,required:!1,default:``},{name:`credentialRef`,type:`text`,required:!1,default:``},{name:`idempotencyKey`,type:`text`,required:!0,default:``},{name:`sourceKind`,type:`text`,required:!0,default:``},{name:`sourceId`,type:`text`,required:!0,default:``},{name:`sourceVersion`,type:`integer`,required:!1,default:1},{name:`sourceAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`sourceSha256`,type:`text`,required:!1,default:``},{name:`sourceSizeBytes`,type:`integer`,required:!1,default:0},{name:`requestIntentSha256`,type:`text`,required:!1,default:``},{name:`title`,type:`text`,required:!1,default:``},{name:`signerIntent`,type:`text`,required:!1,default:`[]`},{name:`providerRequestId`,type:`text`,required:!1,default:``},{name:`providerRequestKey`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`prepared`},{name:`expiresAt`,type:`datetime`,required:!1},{name:`cancellationReason`,type:`text`,required:!1,default:``},{name:`lastProviderEventAt`,type:`datetime`,required:!1},{name:`lastReconciledAt`,type:`datetime`,required:!1},{name:`completedAt`,type:`datetime`,required:!1},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`supersedesExecutedAgreementId`,type:`text`,required:!1,default:``},{name:`signedDocumentAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`signedDocumentSha256`,type:`text`,required:!1,default:``},{name:`signedDocumentSizeBytes`,type:`integer`,required:!1,default:0},{name:`signedDocumentMediaType`,type:`text`,required:!1,default:``},{name:`signedDocumentFilename`,type:`text`,required:!1,default:``},{name:`auditTrailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`auditTrailSha256`,type:`text`,required:!1,default:``},{name:`auditTrailSizeBytes`,type:`integer`,required:!1,default:0},{name:`auditTrailMediaType`,type:`text`,required:!1,default:``},{name:`auditTrailFilename`,type:`text`,required:!1,default:``},{name:`attemptCount`,type:`integer`,required:!1,default:0},{name:`createLeaseId`,type:`text`,required:!1,default:``},{name:`createLeaseExpiresAt`,type:`datetime`,required:!1},{name:`lastError`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[],mcp:[],cli:[],methods:[{name:`bindEvidenceArtifact`,async:!0,parameters:[`input: BindAgreementEvidenceArtifactInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`bindProviderRequest`,async:!0,parameters:[`input: BindAgreementProviderRequestInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`claimCreateAttempt`,async:!0,parameters:[`input: ClaimAgreementCreateAttemptInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`compareAndSetLifecycle`,async:!0,parameters:[`input: CompareAndSetAgreementLifecycleInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`completeCreateAttempt`,async:!0,parameters:[`input: CompleteAgreementCreateAttemptInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`failCreateAttempt`,async:!0,parameters:[`input: FailAgreementCreateAttemptInput`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`findByIdempotencyKey`,async:!0,parameters:[`idempotencyKey: string`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`findByProviderRequest`,async:!0,parameters:[`provider: string`,`providerRequestId: string`],returnType:`Promise<AgreementExecution | null>`,aiCallable:!1},{name:`findBySource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`],returnType:`Promise<AgreementExecution[]>`,aiCallable:!1},{name:`getSignerIntent`,async:!1,parameters:[],returnType:`AgreementSignerIntent[]`,aiCallable:!1},{name:`incrementAttemptCount`,async:!0,parameters:[`tenantId: string`,`executionId: string`],returnType:`Promise<AgreementExecution>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`updateLastError`,async:!0,parameters:[`input: UpdateAgreementExecutionErrorInput`],returnType:`Promise<AgreementExecution>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!1},{id:`@happyvertical/smrt-sales:AgreementExecutionEvent`,name:`AgreementExecutionEvent`,collection:`agreementexecutionevents`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`executionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:AgreementExecution`},{name:`provider`,type:`text`,required:!1,default:``},{name:`providerEventId`,type:`text`,required:!1,default:``},{name:`eventOrigin`,type:`text`,required:!1,default:`provider_webhook`},{name:`operationId`,type:`text`,required:!1,default:``},{name:`dedupeKey`,type:`text`,required:!0,default:``},{name:`orderingKey`,type:`text`,required:!1,default:``},{name:`eventType`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`prepared`},{name:`occurredAt`,type:`datetime`,required:!1},{name:`receivedAt`,type:`datetime`,required:!1},{name:`payloadSha256`,type:`text`,required:!1,default:``},{name:`signerEvidence`,type:`text`,required:!1,default:`[]`},{name:`payload`,type:`text`,required:!1,default:`{}`}],rest:[],mcp:[],cli:[],methods:[{name:`findByDedupeKey`,async:!0,parameters:[`dedupeKey: string`],returnType:`Promise<AgreementExecutionEvent | null>`,aiCallable:!1},{name:`findByExecution`,async:!0,parameters:[`executionId: string`],returnType:`Promise<AgreementExecutionEvent[]>`,aiCallable:!1},{name:`findProviderEventsByExecution`,async:!0,parameters:[`executionId: string`],returnType:`Promise<AgreementExecutionEvent[]>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`recordVerified`,async:!0,parameters:[`options: VerifiedAgreementExecutionEventOptions`],returnType:`Promise<object>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:AgreementExecution`],exposed:!1},{id:`@happyvertical/smrt-sales:AttributionException`,name:`AttributionException`,collection:`attributionexceptions`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`targetKind`,type:`text`,required:!0,default:``},{name:`targetId`,type:`text`,required:!0,default:``},{name:`programId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ReferralProgram`},{name:`status`,type:`text`,required:!1,default:`open`},{name:`conflictReason`,type:`text`,required:!1,default:``},{name:`candidates`,type:`text`,required:!1,default:`[]`},{name:`resolutionMode`,type:`text`,required:!1,default:``},{name:`resolutionReason`,type:`text`,required:!1,default:``},{name:`resolvedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`resolvedReferralIds`,type:`text`,required:!1,default:`[]`},{name:`resolvedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/attributionexceptions/findOpen`},{method:`POST`,path:`/attributionexceptions/findOpenByTarget`},{method:`POST`,path:`/attributionexceptions/findByTarget`},{method:`GET`,path:`/attributionexceptions`},{method:`GET`,path:`/attributionexceptions/[id]`}],mcp:[{operation:`get`,name:`attributionexception_get`},{operation:`list`,name:`attributionexception_list`},{operation:`findByTarget`,name:`attributionexceptioncollection_findbytarget`},{operation:`findOpen`,name:`attributionexceptioncollection_findopen`},{operation:`findOpenByTarget`,name:`attributionexceptioncollection_findopenbytarget`}],cli:[],methods:[{name:`findByTarget`,async:!0,parameters:[`targetKind: string`,`targetId: string`],returnType:`Promise<AttributionException[]>`,aiCallable:!0},{name:`findOpen`,async:!0,parameters:[],returnType:`Promise<AttributionException[]>`,aiCallable:!0},{name:`findOpenByTarget`,async:!0,parameters:[`targetKind: string`,`targetId: string`,`programId: string`],returnType:`Promise<AttributionException | null>`,aiCallable:!0},{name:`getCandidates`,async:!1,parameters:[],returnType:`AttributionExceptionCandidate[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getResolvedReferralIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isOpen`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markResolved`,async:!1,parameters:[`input: object`],returnType:`void`,aiCallable:!1},{name:`setCandidates`,async:!1,parameters:[`candidates: AttributionExceptionCandidate[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setResolvedReferralIds`,async:!1,parameters:[`ids: string[]`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-sales:ReferralProgram`],exposed:!0},{id:`@happyvertical/smrt-sales:AttributionPolicy`,name:`AttributionPolicy`,collection:`attributionpolicies`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`policyKey`,type:`text`,required:!0,default:``},{name:`version`,type:`integer`,required:!1,default:1},{name:`status`,type:`text`,required:!1,default:`draft`},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`windowDays`,type:`integer`,required:!1,default:30},{name:`creditMode`,type:`text`,required:!1,default:`first_touch`},{name:`conflictBehavior`,type:`text`,required:!1,default:`auto`},{name:`allowSelfReferral`,type:`boolean`,required:!1,default:!1},{name:`allowExistingClients`,type:`boolean`,required:!1,default:!1},{name:`eligibleServices`,type:`text`,required:!1,default:`[]`},{name:`eligibleCampaigns`,type:`text`,required:!1,default:`[]`},{name:`eligibleRegions`,type:`text`,required:!1,default:`[]`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/attributionpolicies/findByPolicyKey`},{method:`POST`,path:`/attributionpolicies/findByStatus`},{method:`POST`,path:`/attributionpolicies/latestActiveByKey`},{method:`POST`,path:`/attributionpolicies/createAmendment`},{method:`GET`,path:`/attributionpolicies`},{method:`GET`,path:`/attributionpolicies/[id]`},{method:`POST`,path:`/attributionpolicies`}],mcp:[{operation:`get`,name:`attributionpolicy_get`},{operation:`list`,name:`attributionpolicy_list`},{operation:`createAmendment`,name:`attributionpolicycollection_createamendment`},{operation:`findByPolicyKey`,name:`attributionpolicycollection_findbypolicykey`},{operation:`findByStatus`,name:`attributionpolicycollection_findbystatus`},{operation:`latestActiveByKey`,name:`attributionpolicycollection_latestactivebykey`}],cli:[{operation:`activate`,name:`attributionpolicy_activate`},{operation:`create`,name:`attributionpolicy_create`},{operation:`delete`,name:`attributionpolicy_delete`},{operation:`get`,name:`attributionpolicy_get`},{operation:`getEligibleCampaigns`,name:`attributionpolicy_getEligibleCampaigns`},{operation:`getEligibleRegions`,name:`attributionpolicy_getEligibleRegions`},{operation:`getEligibleServices`,name:`attributionpolicy_getEligibleServices`},{operation:`getMetadata`,name:`attributionpolicy_getMetadata`},{operation:`isActive`,name:`attributionpolicy_isActive`},{operation:`isDraft`,name:`attributionpolicy_isDraft`},{operation:`list`,name:`attributionpolicy_list`},{operation:`retire`,name:`attributionpolicy_retire`},{operation:`setEligibleCampaigns`,name:`attributionpolicy_setEligibleCampaigns`},{operation:`setEligibleRegions`,name:`attributionpolicy_setEligibleRegions`},{operation:`setEligibleServices`,name:`attributionpolicy_setEligibleServices`},{operation:`setMetadata`,name:`attributionpolicy_setMetadata`},{operation:`supersede`,name:`attributionpolicy_supersede`},{operation:`update`,name:`attributionpolicy_update`},{operation:`createAmendment`,name:`attributionpolicycollection_createAmendment`},{operation:`findByPolicyKey`,name:`attributionpolicycollection_findByPolicyKey`},{operation:`findByStatus`,name:`attributionpolicycollection_findByStatus`},{operation:`latestActiveByKey`,name:`attributionpolicycollection_latestActiveByKey`}],methods:[{name:`activate`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`createAmendment`,async:!0,parameters:[`policyKey: string`,`changes?: AttributionPolicyAmendmentChanges`],returnType:`Promise<AttributionPolicy>`,aiCallable:!0},{name:`findByPolicyKey`,async:!0,parameters:[`policyKey: string`],returnType:`Promise<AttributionPolicy[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: AttributionPolicyStatus`],returnType:`Promise<AttributionPolicy[]>`,aiCallable:!0},{name:`getEligibleCampaigns`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getEligibleRegions`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getEligibleServices`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`latestActiveByKey`,async:!0,parameters:[`policyKey: string`,`at?: Date`,`tenantId?: string | null`],returnType:`Promise<AttributionPolicy | null>`,aiCallable:!0},{name:`retire`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setEligibleCampaigns`,async:!1,parameters:[`campaigns: string[]`],returnType:`void`,aiCallable:!1},{name:`setEligibleRegions`,async:!1,parameters:[`regions: string[]`],returnType:`void`,aiCallable:!1},{name:`setEligibleServices`,async:!1,parameters:[`services: string[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`supersede`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sales:Commission`,name:`Commission`,collection:`commissions`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`earnerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Earner`},{name:`earningEventId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:EarningEvent`},{name:`planKey`,type:`text`,required:!1,default:``},{name:`planVersion`,type:`integer`,required:!1,default:0},{name:`componentKey`,type:`text`,required:!1,default:``},{name:`termsSnapshotKind`,type:`text`,required:!1,default:``},{name:`termsSnapshotId`,type:`text`,required:!1,default:``},{name:`basis`,type:`text`,required:!1,default:`gross`},{name:`baseAmountCents`,type:`integer`,required:!1,default:0},{name:`rate`,type:`decimal`,required:!1,default:0},{name:`shareFraction`,type:`decimal`,required:!1,default:1},{name:`splitGroupId`,type:`text`,required:!1,default:``},{name:`amountCents`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`status`,type:`text`,required:!1,default:`pending`},{name:`clearingEndsAt`,type:`datetime`,required:!1},{name:`earnedAt`,type:`datetime`,required:!1},{name:`approvedAt`,type:`datetime`,required:!1},{name:`payableAt`,type:`datetime`,required:!1},{name:`paidAt`,type:`datetime`,required:!1},{name:`payoutId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:CommissionPayout`},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`calculationTrace`,type:`text`,required:!1,default:`{}`},{name:`dedupeKey`,type:`text`,required:!0,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/commissions/findByEarner`},{method:`POST`,path:`/commissions/findByEvent`},{method:`POST`,path:`/commissions/findByStatus`},{method:`POST`,path:`/commissions/findByDedupeKey`},{method:`POST`,path:`/commissions/findPayableUnsettled`},{method:`POST`,path:`/commissions/sumPayableByEarner`},{method:`POST`,path:`/commissions/findByPayout`},{method:`POST`,path:`/commissions/findByPayouts`},{method:`POST`,path:`/commissions/claimForPayout`},{method:`GET`,path:`/commissions`},{method:`GET`,path:`/commissions/[id]`},{method:`POST`,path:`/commissions`}],mcp:[{operation:`get`,name:`commission_get`},{operation:`list`,name:`commission_list`},{operation:`claimForPayout`,name:`commissioncollection_claimforpayout`},{operation:`findByDedupeKey`,name:`commissioncollection_findbydedupekey`},{operation:`findByEarner`,name:`commissioncollection_findbyearner`},{operation:`findByEvent`,name:`commissioncollection_findbyevent`},{operation:`findByPayout`,name:`commissioncollection_findbypayout`},{operation:`findByPayouts`,name:`commissioncollection_findbypayouts`},{operation:`findByStatus`,name:`commissioncollection_findbystatus`},{operation:`findPayableUnsettled`,name:`commissioncollection_findpayableunsettled`},{operation:`sumPayableByEarner`,name:`commissioncollection_sumpayablebyearner`}],cli:[],methods:[{name:`approve`,async:!1,parameters:[`now?: Date`],returnType:`void`,aiCallable:!1},{name:`claimForPayout`,async:!0,parameters:[`commissionIds: string[]`,`payoutId: string`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findByDedupeKey`,async:!0,parameters:[`dedupeKey: string`],returnType:`Promise<Commission | null>`,aiCallable:!0},{name:`findByEarner`,async:!0,parameters:[`earnerId: string`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findByEvent`,async:!0,parameters:[`earningEventId: string`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findByPayout`,async:!0,parameters:[`payoutId: string`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findByPayouts`,async:!0,parameters:[`payoutIds: string[]`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: CommissionStatus`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`findPayableUnsettled`,async:!0,parameters:[`earnerId: string`,`currency: string`,`scope?: object`],returnType:`Promise<Commission[]>`,aiCallable:!0},{name:`getCalculationTrace`,async:!1,parameters:[],returnType:`CommissionCalculationTrace | null`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isApproved`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isEarned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPaid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPayable`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSettled`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markEarned`,async:!1,parameters:[`now?: Date`],returnType:`void`,aiCallable:!1},{name:`markPaid`,async:!1,parameters:[`now?: Date`],returnType:`void`,aiCallable:!1},{name:`markPayable`,async:!1,parameters:[`now?: Date`],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setCalculationTrace`,async:!1,parameters:[`trace: CommissionCalculationTrace`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`sumPayableByEarner`,async:!0,parameters:[`earnerId: string`,`currency: string`],returnType:`Promise<number>`,aiCallable:!0}],references:[`@happyvertical/smrt-sales:CommissionPayout`,`@happyvertical/smrt-sales:Earner`,`@happyvertical/smrt-sales:EarningEvent`],exposed:!0},{id:`@happyvertical/smrt-sales:CommissionAdjustment`,name:`CommissionAdjustment`,collection:`commissionadjustments`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`commissionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Commission`},{name:`earnerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Earner`},{name:`adjustmentKind`,type:`text`,required:!1,default:`correction`},{name:`amountCents`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`reason`,type:`text`,required:!0,default:``},{name:`createdByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`payoutId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:CommissionPayout`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/commissionadjustments/findByCommission`},{method:`POST`,path:`/commissionadjustments/findUnsettledByEarner`},{method:`POST`,path:`/commissionadjustments/sumUnsettledByEarner`},{method:`POST`,path:`/commissionadjustments/findByPayout`},{method:`POST`,path:`/commissionadjustments/findByPayouts`},{method:`POST`,path:`/commissionadjustments/claimForPayout`},{method:`GET`,path:`/commissionadjustments`},{method:`GET`,path:`/commissionadjustments/[id]`},{method:`POST`,path:`/commissionadjustments`}],mcp:[{operation:`create`,name:`commissionadjustment_create`},{operation:`list`,name:`commissionadjustment_list`},{operation:`claimForPayout`,name:`commissionadjustmentcollection_claimforpayout`},{operation:`findByCommission`,name:`commissionadjustmentcollection_findbycommission`},{operation:`findByPayout`,name:`commissionadjustmentcollection_findbypayout`},{operation:`findByPayouts`,name:`commissionadjustmentcollection_findbypayouts`},{operation:`findUnsettledByEarner`,name:`commissionadjustmentcollection_findunsettledbyearner`},{operation:`sumUnsettledByEarner`,name:`commissionadjustmentcollection_sumunsettledbyearner`}],cli:[],methods:[{name:`claimForPayout`,async:!0,parameters:[`adjustmentIds: string[]`,`payoutId: string`],returnType:`Promise<CommissionAdjustment[]>`,aiCallable:!0},{name:`findByCommission`,async:!0,parameters:[`commissionId: string`],returnType:`Promise<CommissionAdjustment[]>`,aiCallable:!0},{name:`findByPayout`,async:!0,parameters:[`payoutId: string`],returnType:`Promise<CommissionAdjustment[]>`,aiCallable:!0},{name:`findByPayouts`,async:!0,parameters:[`payoutIds: string[]`],returnType:`Promise<CommissionAdjustment[]>`,aiCallable:!0},{name:`findUnsettledByEarner`,async:!0,parameters:[`earnerId: string`,`currency: string`],returnType:`Promise<CommissionAdjustment[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isSettled`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`sumUnsettledByEarner`,async:!0,parameters:[`earnerId: string`,`currency: string`],returnType:`Promise<number>`,aiCallable:!0}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-sales:Commission`,`@happyvertical/smrt-sales:CommissionPayout`,`@happyvertical/smrt-sales:Earner`],exposed:!0},{id:`@happyvertical/smrt-sales:CommissionAdjustmentOperation`,name:`CommissionAdjustmentOperation`,collection:`commissionadjustmentoperations`,description:`One globally unique adjustment operation UUID mapped to its adjustment.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`adjustmentId`,type:`text`,required:!0}],rest:[],mcp:[],cli:[],methods:[{name:`claim`,async:!0,parameters:[`input: ClaimCommissionAdjustmentOperationInput`],returnType:`Promise<ClaimCommissionAdjustmentOperationResult>`,aiCallable:!1},{name:`findByOperationId`,async:!0,parameters:[`operationId: string`],returnType:`Promise<CommissionAdjustmentOperation | null>`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-sales:CommissionPayout`,name:`CommissionPayout`,collection:`commissionpayouts`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`earnerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Earner`},{name:`periodStart`,type:`datetime`,required:!1},{name:`periodEnd`,type:`datetime`,required:!1},{name:`commissionTotalCents`,type:`integer`,required:!1,default:0},{name:`adjustmentTotalCents`,type:`integer`,required:!1,default:0},{name:`totalAmountCents`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`payoutMethod`,type:`text`,required:!1,default:`bank_transfer`},{name:`status`,type:`text`,required:!1,default:`pending`},{name:`paymentReference`,type:`text`,required:!1,default:``},{name:`providerRef`,type:`text`,required:!1,default:``},{name:`paidAt`,type:`datetime`,required:!1},{name:`invoiceId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-commerce:Invoice`},{name:`notes`,type:`text`,required:!1,default:``},{name:`idempotencyKey`,type:`text`,required:!0,default:``},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/commissionpayouts/findByEarner`},{method:`POST`,path:`/commissionpayouts/findByStatus`},{method:`POST`,path:`/commissionpayouts/findByIdempotencyKey`},{method:`POST`,path:`/commissionpayouts/findBySource`},{method:`POST`,path:`/commissionpayouts/sumPaidByEarner`},{method:`GET`,path:`/commissionpayouts`},{method:`GET`,path:`/commissionpayouts/[id]`}],mcp:[{operation:`get`,name:`commissionpayout_get`},{operation:`list`,name:`commissionpayout_list`},{operation:`findByEarner`,name:`commissionpayoutcollection_findbyearner`},{operation:`findByIdempotencyKey`,name:`commissionpayoutcollection_findbyidempotencykey`},{operation:`findBySource`,name:`commissionpayoutcollection_findbysource`},{operation:`findByStatus`,name:`commissionpayoutcollection_findbystatus`},{operation:`sumPaidByEarner`,name:`commissionpayoutcollection_sumpaidbyearner`}],cli:[{operation:`get`,name:`commissionpayout_get`},{operation:`list`,name:`commissionpayout_list`},{operation:`findByEarner`,name:`commissionpayoutcollection_findByEarner`},{operation:`findByIdempotencyKey`,name:`commissionpayoutcollection_findByIdempotencyKey`},{operation:`findBySource`,name:`commissionpayoutcollection_findBySource`},{operation:`findByStatus`,name:`commissionpayoutcollection_findByStatus`},{operation:`sumPaidByEarner`,name:`commissionpayoutcollection_sumPaidByEarner`}],methods:[{name:`approve`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`complete`,async:!1,parameters:[`paymentReference: string`,`now?: Date`],returnType:`void`,aiCallable:!1},{name:`fail`,async:!1,parameters:[`reason: string`],returnType:`void`,aiCallable:!1},{name:`findByEarner`,async:!0,parameters:[`earnerId: string`],returnType:`Promise<CommissionPayout[]>`,aiCallable:!0},{name:`findByIdempotencyKey`,async:!0,parameters:[`idempotencyKey: string`],returnType:`Promise<CommissionPayout | null>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`,`page: object`],returnType:`Promise<CommissionPayout[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: CommissionPayoutStatus`],returnType:`Promise<CommissionPayout[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isApproved`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isCompleted`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isFailed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isProcessing`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRejected`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markProcessing`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`reject`,async:!1,parameters:[`reason: string`],returnType:`void`,aiCallable:!1},{name:`resetFromFailed`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`sumPaidByEarner`,async:!0,parameters:[`earnerId: string`,`currency: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`validateTotals`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-commerce:Invoice`,`@happyvertical/smrt-sales:Earner`],exposed:!0},{id:`@happyvertical/smrt-sales:CommissionPlan`,name:`CommissionPlan`,collection:`commissionplans`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`planKey`,type:`text`,required:!0,default:``},{name:`version`,type:`integer`,required:!1,default:1},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`draft`},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`components`,type:`text`,required:!1,default:`[]`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/commissionplans/findByPlanKey`},{method:`POST`,path:`/commissionplans/findByStatus`},{method:`POST`,path:`/commissionplans/latestActiveByKey`},{method:`POST`,path:`/commissionplans/createAmendment`},{method:`GET`,path:`/commissionplans`},{method:`GET`,path:`/commissionplans/[id]`},{method:`POST`,path:`/commissionplans`}],mcp:[{operation:`get`,name:`commissionplan_get`},{operation:`list`,name:`commissionplan_list`},{operation:`createAmendment`,name:`commissionplancollection_createamendment`},{operation:`findByPlanKey`,name:`commissionplancollection_findbyplankey`},{operation:`findByStatus`,name:`commissionplancollection_findbystatus`},{operation:`latestActiveByKey`,name:`commissionplancollection_latestactivebykey`}],cli:[{operation:`activate`,name:`commissionplan_activate`},{operation:`create`,name:`commissionplan_create`},{operation:`delete`,name:`commissionplan_delete`},{operation:`get`,name:`commissionplan_get`},{operation:`getComponents`,name:`commissionplan_getComponents`},{operation:`getMetadata`,name:`commissionplan_getMetadata`},{operation:`isActive`,name:`commissionplan_isActive`},{operation:`isDraft`,name:`commissionplan_isDraft`},{operation:`list`,name:`commissionplan_list`},{operation:`retire`,name:`commissionplan_retire`},{operation:`setComponents`,name:`commissionplan_setComponents`},{operation:`setMetadata`,name:`commissionplan_setMetadata`},{operation:`supersede`,name:`commissionplan_supersede`},{operation:`update`,name:`commissionplan_update`},{operation:`createAmendment`,name:`commissionplancollection_createAmendment`},{operation:`findByPlanKey`,name:`commissionplancollection_findByPlanKey`},{operation:`findByStatus`,name:`commissionplancollection_findByStatus`},{operation:`latestActiveByKey`,name:`commissionplancollection_latestActiveByKey`}],methods:[{name:`activate`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`createAmendment`,async:!0,parameters:[`planKey: string`,`changes?: CommissionPlanAmendmentChanges`],returnType:`Promise<CommissionPlan>`,aiCallable:!0},{name:`findByPlanKey`,async:!0,parameters:[`planKey: string`],returnType:`Promise<CommissionPlan[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: CommissionPlanStatus`],returnType:`Promise<CommissionPlan[]>`,aiCallable:!0},{name:`getComponents`,async:!1,parameters:[],returnType:`CommissionPlanComponent[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`latestActiveByKey`,async:!0,parameters:[`planKey: string`,`at?: Date`,`tenantId?: string | null`],returnType:`Promise<CommissionPlan | null>`,aiCallable:!0},{name:`retire`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setComponents`,async:!1,parameters:[`components: CommissionPlanComponent[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`supersede`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sales:Earner`,name:`Earner`,collection:`earners`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`displayName`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`pending`},{name:`payoutMethod`,type:`text`,required:!1,default:`bank_transfer`},{name:`payoutThresholdCents`,type:`integer`,required:!1,default:5e3},{name:`payoutScheduleKey`,type:`text`,required:!1,default:`manual`},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/earners/findByProfile`},{method:`POST`,path:`/earners/findByStatus`},{method:`POST`,path:`/earners/findActive`},{method:`GET`,path:`/earners`},{method:`GET`,path:`/earners/[id]`},{method:`POST`,path:`/earners`},{method:`PATCH`,path:`/earners/[id]`}],mcp:[{operation:`create`,name:`earner_create`},{operation:`get`,name:`earner_get`},{operation:`list`,name:`earner_list`},{operation:`findActive`,name:`earnercollection_findactive`},{operation:`findByProfile`,name:`earnercollection_findbyprofile`},{operation:`findByStatus`,name:`earnercollection_findbystatus`}],cli:[{operation:`create`,name:`earner_create`},{operation:`delete`,name:`earner_delete`},{operation:`get`,name:`earner_get`},{operation:`getMetadata`,name:`earner_getMetadata`},{operation:`isActive`,name:`earner_isActive`},{operation:`isPending`,name:`earner_isPending`},{operation:`isSuspended`,name:`earner_isSuspended`},{operation:`list`,name:`earner_list`},{operation:`setMetadata`,name:`earner_setMetadata`},{operation:`update`,name:`earner_update`},{operation:`findActive`,name:`earnercollection_findActive`},{operation:`findByProfile`,name:`earnercollection_findByProfile`},{operation:`findByStatus`,name:`earnercollection_findByStatus`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Earner[]>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<Earner[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: EarnerStatus`],returnType:`Promise<Earner[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSuspended`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-sales:EarnerSourceAttribution`,name:`EarnerSourceAttribution`,collection:`earnersourceattributions`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`earnerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Earner`},{name:`sourceKind`,type:`text`,required:!0,default:``},{name:`sourceId`,type:`text`,required:!0,default:``},{name:`status`,type:`text`,required:!1,default:`active`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/earnersourceattributions/findBySource`},{method:`POST`,path:`/earnersourceattributions/findBySources`},{method:`POST`,path:`/earnersourceattributions/findByEarner`},{method:`GET`,path:`/earnersourceattributions`},{method:`GET`,path:`/earnersourceattributions/[id]`},{method:`POST`,path:`/earnersourceattributions`},{method:`PATCH`,path:`/earnersourceattributions/[id]`}],mcp:[{operation:`create`,name:`earnersourceattribution_create`},{operation:`get`,name:`earnersourceattribution_get`},{operation:`list`,name:`earnersourceattribution_list`},{operation:`findByEarner`,name:`earnersourceattributioncollection_findbyearner`},{operation:`findBySource`,name:`earnersourceattributioncollection_findbysource`},{operation:`findBySources`,name:`earnersourceattributioncollection_findbysources`}],cli:[{operation:`create`,name:`earnersourceattribution_create`},{operation:`get`,name:`earnersourceattribution_get`},{operation:`list`,name:`earnersourceattribution_list`},{operation:`update`,name:`earnersourceattribution_update`},{operation:`findByEarner`,name:`earnersourceattributioncollection_findByEarner`},{operation:`findBySource`,name:`earnersourceattributioncollection_findBySource`},{operation:`findBySources`,name:`earnersourceattributioncollection_findBySources`}],methods:[{name:`findByEarner`,async:!0,parameters:[`earnerId: string`],returnType:`Promise<EarnerSourceAttribution[]>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`],returnType:`Promise<EarnerSourceAttribution[]>`,aiCallable:!0},{name:`findBySources`,async:!0,parameters:[`sourceKind: string`,`sourceIds: string[]`],returnType:`Promise<EarnerSourceAttribution[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:Earner`],exposed:!0},{id:`@happyvertical/smrt-sales:EarningEvent`,name:`EarningEvent`,collection:`earningevents`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`eventKind`,type:`text`,required:!0,default:``},{name:`occurredAt`,type:`datetime`,required:!1},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`grossAmountCents`,type:`integer`,required:!1,default:0},{name:`netAmountCents`,type:`integer`,required:!1},{name:`marginCents`,type:`integer`,required:!1},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`customBases`,type:`text`,required:!1,default:`{}`},{name:`dedupeKey`,type:`text`,required:!0,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/earningevents/findByDedupeKey`},{method:`POST`,path:`/earningevents/getOrCreateByDedupeKey`},{method:`POST`,path:`/earningevents/findBySource`},{method:`POST`,path:`/earningevents/findByKind`},{method:`GET`,path:`/earningevents`},{method:`GET`,path:`/earningevents/[id]`},{method:`POST`,path:`/earningevents`}],mcp:[{operation:`create`,name:`earningevent_create`},{operation:`list`,name:`earningevent_list`},{operation:`findByDedupeKey`,name:`earningeventcollection_findbydedupekey`},{operation:`findByKind`,name:`earningeventcollection_findbykind`},{operation:`findBySource`,name:`earningeventcollection_findbysource`},{operation:`getOrCreateByDedupeKey`,name:`earningeventcollection_getorcreatebydedupekey`}],cli:[],methods:[{name:`findByDedupeKey`,async:!0,parameters:[`dedupeKey: string`],returnType:`Promise<EarningEvent | null>`,aiCallable:!0},{name:`findByKind`,async:!0,parameters:[`eventKind: string`],returnType:`Promise<EarningEvent[]>`,aiCallable:!0},{name:`findBySource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`],returnType:`Promise<EarningEvent[]>`,aiCallable:!0},{name:`getCustomBases`,async:!1,parameters:[],returnType:`Record<string, number>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getOrCreateByDedupeKey`,async:!0,parameters:[`options: EarningEventOptions`],returnType:`Promise<object>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setCustomBases`,async:!1,parameters:[`bases: Record<string, number>`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sales:ExecutedAgreement`,name:`ExecutedAgreement`,collection:`executedagreements`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`executionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:AgreementExecution`},{name:`sourceKind`,type:`text`,required:!0,default:``},{name:`sourceId`,type:`text`,required:!0,default:``},{name:`sourceVersion`,type:`integer`,required:!1,default:1},{name:`sourceAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`sourceSha256`,type:`text`,required:!1,default:``},{name:`sourceSizeBytes`,type:`integer`,required:!1,default:0},{name:`signedDocumentAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`signedDocumentSha256`,type:`text`,required:!1,default:``},{name:`signedDocumentSizeBytes`,type:`integer`,required:!1,default:0},{name:`signedDocumentMediaType`,type:`text`,required:!1,default:``},{name:`signedDocumentFilename`,type:`text`,required:!1,default:``},{name:`auditTrailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`auditTrailSha256`,type:`text`,required:!1,default:``},{name:`auditTrailSizeBytes`,type:`integer`,required:!1,default:0},{name:`auditTrailMediaType`,type:`text`,required:!1,default:``},{name:`auditTrailFilename`,type:`text`,required:!1,default:``},{name:`signerEvidence`,type:`text`,required:!1,default:`[]`},{name:`acceptedAt`,type:`datetime`,required:!1},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`supersedesExecutedAgreementId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ExecutedAgreement`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/executedagreements/findByExecution`},{method:`POST`,path:`/executedagreements/createImmutable`},{method:`POST`,path:`/executedagreements/findVersionsBySource`},{method:`POST`,path:`/executedagreements/effectiveForSource`},{method:`GET`,path:`/executedagreements`},{method:`GET`,path:`/executedagreements/[id]`}],mcp:[{operation:`get`,name:`executedagreement_get`},{operation:`list`,name:`executedagreement_list`},{operation:`createImmutable`,name:`executedagreementcollection_createimmutable`},{operation:`effectiveForSource`,name:`executedagreementcollection_effectiveforsource`},{operation:`findByExecution`,name:`executedagreementcollection_findbyexecution`},{operation:`findVersionsBySource`,name:`executedagreementcollection_findversionsbysource`}],cli:[],methods:[{name:`createImmutable`,async:!0,parameters:[`options: ExecutedAgreementOptions`],returnType:`Promise<object>`,aiCallable:!0},{name:`effectiveForSource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`,`at?: Date`],returnType:`Promise<ExecutedAgreement | null>`,aiCallable:!0},{name:`findByExecution`,async:!0,parameters:[`executionId: string`],returnType:`Promise<ExecutedAgreement | null>`,aiCallable:!0},{name:`findVersionsBySource`,async:!0,parameters:[`sourceKind: string`,`sourceId: string`],returnType:`Promise<ExecutedAgreement[]>`,aiCallable:!0},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isEffectiveAt`,async:!1,parameters:[`at: Date`],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-sales:AgreementExecution`,`@happyvertical/smrt-sales:ExecutedAgreement`],exposed:!0},{id:`@happyvertical/smrt-sales:Lead`,name:`Lead`,collection:`leads`,description:`Lead is an identified prospect: a person/organization that showed intent but has not yet been qualified into an Opportunity.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``,description:`What you call this lead.`},{name:`contactName`,type:`text`,required:!1,default:``,description:`The person to talk to.`},{name:`email`,type:`text`,required:!1,default:``,description:`Their email address.`},{name:`phone`,type:`text`,required:!1,default:``,description:`Their phone number.`},{name:`organizationName`,type:`text`,required:!1,default:``,description:`The company they are with.`},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`ownerRepId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:SalesRepresentative`,description:`The sales representative who owns this lead.`},{name:`status`,type:`text`,required:!1,default:`new`,description:`Where the lead stands, for example new or qualified.`},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`acquisitionContext`,type:`text`,required:!1,default:`{}`},{name:`intakeRef`,type:`text`,required:!1,default:``},{name:`mergedIntoId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:Lead`},{name:`qualifiedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/leads/findByStatus`},{method:`POST`,path:`/leads/findByOwner`},{method:`POST`,path:`/leads/listInbox`},{method:`POST`,path:`/leads/qualify`},{method:`POST`,path:`/leads/mergeLeads`},{method:`POST`,path:`/leads/activitiesIncludingMerged`},{method:`GET`,path:`/leads`},{method:`GET`,path:`/leads/[id]`},{method:`POST`,path:`/leads`},{method:`PATCH`,path:`/leads/[id]`}],mcp:[{operation:`create`,name:`lead_create`},{operation:`get`,name:`lead_get`},{operation:`list`,name:`lead_list`},{operation:`activitiesIncludingMerged`,name:`leadcollection_activitiesincludingmerged`},{operation:`findByOwner`,name:`leadcollection_findbyowner`},{operation:`findByStatus`,name:`leadcollection_findbystatus`},{operation:`listInbox`,name:`leadcollection_listinbox`},{operation:`mergeLeads`,name:`leadcollection_mergeleads`},{operation:`qualify`,name:`leadcollection_qualify`}],cli:[{operation:`create`,name:`lead_create`},{operation:`delete`,name:`lead_delete`},{operation:`get`,name:`lead_get`},{operation:`getAcquisitionContext`,name:`lead_getAcquisitionContext`},{operation:`getMetadata`,name:`lead_getMetadata`},{operation:`isMerged`,name:`lead_isMerged`},{operation:`isQualified`,name:`lead_isQualified`},{operation:`list`,name:`lead_list`},{operation:`setAcquisitionContext`,name:`lead_setAcquisitionContext`},{operation:`setMetadata`,name:`lead_setMetadata`},{operation:`update`,name:`lead_update`},{operation:`activitiesIncludingMerged`,name:`leadcollection_activitiesIncludingMerged`},{operation:`findByOwner`,name:`leadcollection_findByOwner`},{operation:`findByStatus`,name:`leadcollection_findByStatus`},{operation:`listInbox`,name:`leadcollection_listInbox`},{operation:`mergeLeads`,name:`leadcollection_mergeLeads`},{operation:`qualify`,name:`leadcollection_qualify`}],methods:[{name:`activitiesIncludingMerged`,async:!0,parameters:[`leadId: string`],returnType:`Promise<SalesActivity[]>`,aiCallable:!0},{name:`findByOwner`,async:!0,parameters:[`ownerRepId: string`],returnType:`Promise<Lead[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: LeadStatus`],returnType:`Promise<Lead[]>`,aiCallable:!0},{name:`getAcquisitionContext`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isMerged`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isQualified`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`listInbox`,async:!0,parameters:[`options: LeadInboxOptions`],returnType:`Promise<LeadInboxResult>`,aiCallable:!0},{name:`mergeLeads`,async:!0,parameters:[`params: MergeLeadsParams`],returnType:`Promise<MergeLeadsResult>`,aiCallable:!0},{name:`qualify`,async:!0,parameters:[`params: QualifyLeadParams`],returnType:`Promise<Opportunity>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setAcquisitionContext`,async:!1,parameters:[`context: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-sales:Lead`,`@happyvertical/smrt-sales:SalesRepresentative`],exposed:!0},{id:`@happyvertical/smrt-sales:Opportunity`,name:`Opportunity`,collection:`opportunities`,description:`Opportunity is a qualified engagement: a deal with an expected value moving through the stages of a PipelineDefinition.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!0,default:``,description:`What you call this deal.`},{name:`leadId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:Lead`,description:`The lead it came from.`},{name:`ownerRepId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:SalesRepresentative`,description:`The sales representative who owns this deal.`},{name:`pipelineId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:PipelineDefinition`,description:`The pipeline it moves through.`},{name:`stageId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:PipelineStage`,description:`The stage it is at now.`},{name:`expectedValueCents`,type:`integer`,required:!1,default:0,description:`What you expect the deal to be worth, in cents.`},{name:`currency`,type:`text`,required:!1,default:`USD`,description:`The currency of that value.`},{name:`probability`,type:`decimal`,required:!1,default:0,description:`How likely it is to close, as a decimal (0.5 is 50%).`},{name:`expectedCloseAt`,type:`datetime`,required:!1,description:`When you expect it to close.`},{name:`status`,type:`text`,required:!1,default:`open`,description:`open, won or lost.`},{name:`outcomeReason`,type:`text`,required:!1,default:``},{name:`wonAt`,type:`datetime`,required:!1},{name:`lostAt`,type:`datetime`,required:!1},{name:`sourceKind`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/opportunities/findByLead`},{method:`POST`,path:`/opportunities/findOpen`},{method:`POST`,path:`/opportunities/moveToStage`},{method:`GET`,path:`/opportunities`},{method:`GET`,path:`/opportunities/[id]`},{method:`POST`,path:`/opportunities`},{method:`PATCH`,path:`/opportunities/[id]`}],mcp:[{operation:`get`,name:`opportunity_get`},{operation:`list`,name:`opportunity_list`},{operation:`findByLead`,name:`opportunitycollection_findbylead`},{operation:`findOpen`,name:`opportunitycollection_findopen`},{operation:`moveToStage`,name:`opportunitycollection_movetostage`}],cli:[{operation:`create`,name:`opportunity_create`},{operation:`delete`,name:`opportunity_delete`},{operation:`get`,name:`opportunity_get`},{operation:`getMetadata`,name:`opportunity_getMetadata`},{operation:`isClosed`,name:`opportunity_isClosed`},{operation:`isOpen`,name:`opportunity_isOpen`},{operation:`list`,name:`opportunity_list`},{operation:`setMetadata`,name:`opportunity_setMetadata`},{operation:`update`,name:`opportunity_update`},{operation:`findByLead`,name:`opportunitycollection_findByLead`},{operation:`findOpen`,name:`opportunitycollection_findOpen`},{operation:`moveToStage`,name:`opportunitycollection_moveToStage`}],methods:[{name:`findByLead`,async:!0,parameters:[`leadId: string`],returnType:`Promise<Opportunity[]>`,aiCallable:!0},{name:`findOpen`,async:!0,parameters:[`pipelineId?: string`],returnType:`Promise<Opportunity[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isClosed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOpen`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`moveToStage`,async:!0,parameters:[`params: MoveToStageParams`],returnType:`Promise<Opportunity>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:Lead`,`@happyvertical/smrt-sales:PipelineDefinition`,`@happyvertical/smrt-sales:PipelineStage`,`@happyvertical/smrt-sales:SalesRepresentative`],exposed:!0},{id:`@happyvertical/smrt-sales:OpportunityConversion`,name:`OpportunityConversion`,collection:`opportunityconversions`,description:`OpportunityConversion records that a WON opportunity materialized into a downstream record — a client, project, contract, subscription, or any caller-defined kind.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`opportunityId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Opportunity`},{name:`targetKind`,type:`text`,required:!0,default:``},{name:`targetId`,type:`text`,required:!0,default:``},{name:`note`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/opportunityconversions/findByOpportunity`},{method:`POST`,path:`/opportunityconversions/recordConversion`},{method:`GET`,path:`/opportunityconversions`},{method:`GET`,path:`/opportunityconversions/[id]`},{method:`POST`,path:`/opportunityconversions`}],mcp:[{operation:`get`,name:`opportunityconversion_get`},{operation:`list`,name:`opportunityconversion_list`},{operation:`findByOpportunity`,name:`opportunityconversioncollection_findbyopportunity`},{operation:`recordConversion`,name:`opportunityconversioncollection_recordconversion`}],cli:[],methods:[{name:`findByOpportunity`,async:!0,parameters:[`opportunityId: string`],returnType:`Promise<OpportunityConversion[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`recordConversion`,async:!0,parameters:[`params: RecordConversionParams`],returnType:`Promise<RecordConversionResult>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:Opportunity`],exposed:!0},{id:`@happyvertical/smrt-sales:PipelineDefinition`,name:`PipelineDefinition`,collection:`pipelinedefinitions`,description:`PipelineDefinition names an ordered set of stages that opportunities move through. Pipelines are configuration rows, not code: tenants can run several (e.g.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`key`,type:`text`,required:!0,default:``,description:`A short code for the pipeline.`},{name:`name`,type:`text`,required:!1,default:``,description:`What the pipeline is called.`},{name:`isDefault`,type:`boolean`,required:!1,default:!1,description:`Whether this is the default pipeline for new deals.`},{name:`status`,type:`text`,required:!1,default:`active`,description:`Whether the pipeline is active (accepts new deals) or archived.`},{name:`metadata`,type:`text`,required:!1,default:`{}`,description:`Extra details kept with the pipeline.`}],rest:[{method:`POST`,path:`/pipelinedefinitions/findByKey`},{method:`POST`,path:`/pipelinedefinitions/findDefault`},{method:`POST`,path:`/pipelinedefinitions/getStages`},{method:`POST`,path:`/pipelinedefinitions/ensureDefaultPipeline`},{method:`GET`,path:`/pipelinedefinitions`},{method:`GET`,path:`/pipelinedefinitions/[id]`},{method:`POST`,path:`/pipelinedefinitions`},{method:`PATCH`,path:`/pipelinedefinitions/[id]`}],mcp:[{operation:`get`,name:`pipelinedefinition_get`},{operation:`list`,name:`pipelinedefinition_list`},{operation:`ensureDefaultPipeline`,name:`pipelinedefinitioncollection_ensuredefaultpipeline`},{operation:`findByKey`,name:`pipelinedefinitioncollection_findbykey`},{operation:`findDefault`,name:`pipelinedefinitioncollection_finddefault`},{operation:`getStages`,name:`pipelinedefinitioncollection_getstages`}],cli:[{operation:`create`,name:`pipelinedefinition_create`},{operation:`delete`,name:`pipelinedefinition_delete`},{operation:`get`,name:`pipelinedefinition_get`},{operation:`getMetadata`,name:`pipelinedefinition_getMetadata`},{operation:`isActive`,name:`pipelinedefinition_isActive`},{operation:`list`,name:`pipelinedefinition_list`},{operation:`setMetadata`,name:`pipelinedefinition_setMetadata`},{operation:`update`,name:`pipelinedefinition_update`},{operation:`ensureDefaultPipeline`,name:`pipelinedefinitioncollection_ensureDefaultPipeline`},{operation:`findByKey`,name:`pipelinedefinitioncollection_findByKey`},{operation:`findDefault`,name:`pipelinedefinitioncollection_findDefault`},{operation:`getStages`,name:`pipelinedefinitioncollection_getStages`}],methods:[{name:`ensureDefaultPipeline`,async:!0,parameters:[`params?: EnsureDefaultPipelineParams`],returnType:`Promise<EnsureDefaultPipelineResult>`,aiCallable:!0},{name:`findByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<PipelineDefinition | null>`,aiCallable:!0},{name:`findDefault`,async:!0,parameters:[],returnType:`Promise<PipelineDefinition | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getStages`,async:!0,parameters:[`pipelineId: string`],returnType:`Promise<PipelineStage[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sales:PipelineStage`,name:`PipelineStage`,collection:`pipelinestages`,description:`PipelineStage is a configurable step within a pipeline.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`pipelineId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:PipelineDefinition`,description:`The pipeline this stage belongs to.`},{name:`key`,type:`text`,required:!0,default:``,description:`A short code for the stage.`},{name:`name`,type:`text`,required:!1,default:``,description:`What the stage is called.`},{name:`sortOrder`,type:`integer`,required:!1,default:0,description:`Where it comes in the pipeline.`},{name:`probability`,type:`decimal`,required:!1,default:0,description:`How likely a deal at this stage is to close, as a decimal.`},{name:`isWon`,type:`boolean`,required:!1,default:!1,description:`Whether reaching this stage closes the deal as won.`},{name:`isLost`,type:`boolean`,required:!1,default:!1,description:`Whether reaching this stage closes the deal as lost.`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/pipelinestages/findByPipeline`},{method:`POST`,path:`/pipelinestages/findByKey`},{method:`GET`,path:`/pipelinestages`},{method:`GET`,path:`/pipelinestages/[id]`},{method:`POST`,path:`/pipelinestages`},{method:`PATCH`,path:`/pipelinestages/[id]`}],mcp:[{operation:`get`,name:`pipelinestage_get`},{operation:`list`,name:`pipelinestage_list`},{operation:`findByKey`,name:`pipelinestagecollection_findbykey`},{operation:`findByPipeline`,name:`pipelinestagecollection_findbypipeline`}],cli:[],methods:[{name:`findByKey`,async:!0,parameters:[`pipelineId: string`,`key: string`],returnType:`Promise<PipelineStage | null>`,aiCallable:!0},{name:`findByPipeline`,async:!0,parameters:[`pipelineId: string`],returnType:`Promise<PipelineStage[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isTerminal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:PipelineDefinition`],exposed:!0},{id:`@happyvertical/smrt-sales:Referral`,name:`Referral`,collection:`referrals`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`referrerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Referrer`},{name:`programId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:ReferralProgram`},{name:`policyKey`,type:`text`,required:!1,default:``},{name:`policyVersion`,type:`integer`,required:!1,default:0},{name:`status`,type:`text`,required:!1,default:`pending`},{name:`targetKind`,type:`text`,required:!1,default:``},{name:`targetId`,type:`text`,required:!1,default:``},{name:`creditFraction`,type:`decimal`,required:!1,default:1},{name:`splitGroupId`,type:`text`,required:!1,default:``},{name:`primaryTouchId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ReferralTouch`},{name:`attributedAt`,type:`datetime`,required:!1},{name:`qualifiedAt`,type:`datetime`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`snapshotId`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referrals/findByReferrer`},{method:`POST`,path:`/referrals/findByTarget`},{method:`POST`,path:`/referrals/findQualifiedByTarget`},{method:`POST`,path:`/referrals/sweepExpired`},{method:`GET`,path:`/referrals`},{method:`GET`,path:`/referrals/[id]`},{method:`POST`,path:`/referrals`}],mcp:[{operation:`get`,name:`referral_get`},{operation:`list`,name:`referral_list`},{operation:`findByReferrer`,name:`referralcollection_findbyreferrer`},{operation:`findByTarget`,name:`referralcollection_findbytarget`},{operation:`findQualifiedByTarget`,name:`referralcollection_findqualifiedbytarget`},{operation:`sweepExpired`,name:`referralcollection_sweepexpired`}],cli:[{operation:`create`,name:`referral_create`},{operation:`delete`,name:`referral_delete`},{operation:`disqualify`,name:`referral_disqualify`},{operation:`get`,name:`referral_get`},{operation:`getMetadata`,name:`referral_getMetadata`},{operation:`isAttributed`,name:`referral_isAttributed`},{operation:`isQualified`,name:`referral_isQualified`},{operation:`isTerminal`,name:`referral_isTerminal`},{operation:`list`,name:`referral_list`},{operation:`markAttributed`,name:`referral_markAttributed`},{operation:`markExpired`,name:`referral_markExpired`},{operation:`markQualified`,name:`referral_markQualified`},{operation:`markUnderReview`,name:`referral_markUnderReview`},{operation:`setMetadata`,name:`referral_setMetadata`},{operation:`update`,name:`referral_update`},{operation:`findByReferrer`,name:`referralcollection_findByReferrer`},{operation:`findByTarget`,name:`referralcollection_findByTarget`},{operation:`findQualifiedByTarget`,name:`referralcollection_findQualifiedByTarget`},{operation:`sweepExpired`,name:`referralcollection_sweepExpired`}],methods:[{name:`disqualify`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`findByReferrer`,async:!0,parameters:[`referrerId: string`],returnType:`Promise<Referral[]>`,aiCallable:!0},{name:`findByTarget`,async:!0,parameters:[`targetKind: string`,`targetId: string`],returnType:`Promise<Referral[]>`,aiCallable:!0},{name:`findQualifiedByTarget`,async:!0,parameters:[`targetKind: string`,`targetId: string`],returnType:`Promise<Referral[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isAttributed`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isQualified`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTerminal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markAttributed`,async:!1,parameters:[`at?: Date`],returnType:`void`,aiCallable:!1},{name:`markExpired`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`markQualified`,async:!1,parameters:[`at?: Date`],returnType:`void`,aiCallable:!1},{name:`markUnderReview`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`sweepExpired`,async:!0,parameters:[`now?: Date`],returnType:`Promise<Referral[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-sales:ReferralProgram`,`@happyvertical/smrt-sales:ReferralTouch`,`@happyvertical/smrt-sales:Referrer`],exposed:!0},{id:`@happyvertical/smrt-sales:ReferralAgreement`,name:`ReferralAgreement`,collection:`referralagreements`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`referrerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Referrer`},{name:`programId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:ReferralProgram`},{name:`version`,type:`integer`,required:!1,default:1},{name:`status`,type:`text`,required:!1,default:`draft`},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`commissionPlanKey`,type:`text`,required:!1,default:``},{name:`commissionPlanVersion`,type:`integer`,required:!1,default:0},{name:`clearingDays`,type:`integer`,required:!1,default:0},{name:`approvalMode`,type:`text`,required:!1,default:`manual`},{name:`executionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:AgreementExecution`},{name:`executedAgreementId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ExecutedAgreement`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referralagreements/findByReferrerAndProgram`},{method:`POST`,path:`/referralagreements/activeFor`},{method:`POST`,path:`/referralagreements/createAmendment`},{method:`GET`,path:`/referralagreements`},{method:`GET`,path:`/referralagreements/[id]`},{method:`POST`,path:`/referralagreements`}],mcp:[{operation:`get`,name:`referralagreement_get`},{operation:`list`,name:`referralagreement_list`},{operation:`activeFor`,name:`referralagreementcollection_activefor`},{operation:`createAmendment`,name:`referralagreementcollection_createamendment`},{operation:`findByReferrerAndProgram`,name:`referralagreementcollection_findbyreferrerandprogram`}],cli:[{operation:`activate`,name:`referralagreement_activate`},{operation:`bindExecutedAgreement`,name:`referralagreement_bindExecutedAgreement`},{operation:`bindExecution`,name:`referralagreement_bindExecution`},{operation:`create`,name:`referralagreement_create`},{operation:`delete`,name:`referralagreement_delete`},{operation:`get`,name:`referralagreement_get`},{operation:`getMetadata`,name:`referralagreement_getMetadata`},{operation:`isActive`,name:`referralagreement_isActive`},{operation:`isDraft`,name:`referralagreement_isDraft`},{operation:`isEffectiveAt`,name:`referralagreement_isEffectiveAt`},{operation:`list`,name:`referralagreement_list`},{operation:`setMetadata`,name:`referralagreement_setMetadata`},{operation:`supersede`,name:`referralagreement_supersede`},{operation:`terminate`,name:`referralagreement_terminate`},{operation:`update`,name:`referralagreement_update`},{operation:`activeFor`,name:`referralagreementcollection_activeFor`},{operation:`createAmendment`,name:`referralagreementcollection_createAmendment`},{operation:`findByReferrerAndProgram`,name:`referralagreementcollection_findByReferrerAndProgram`}],methods:[{name:`activate`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`activeFor`,async:!0,parameters:[`referrerId: string`,`programId: string`,`at?: Date`],returnType:`Promise<ReferralAgreement | null>`,aiCallable:!0},{name:`bindExecutedAgreement`,async:!1,parameters:[`executedAgreementId: string`],returnType:`void`,aiCallable:!1},{name:`bindExecution`,async:!1,parameters:[`executionId: string`],returnType:`void`,aiCallable:!1},{name:`createAmendment`,async:!0,parameters:[`referrerId: string`,`programId: string`,`changes?: ReferralAgreementAmendmentChanges`],returnType:`Promise<ReferralAgreement>`,aiCallable:!0},{name:`findByReferrerAndProgram`,async:!0,parameters:[`referrerId: string`,`programId: string`],returnType:`Promise<ReferralAgreement[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isDraft`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isEffectiveAt`,async:!1,parameters:[`at: Date`],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`supersede`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`terminate`,async:!1,parameters:[],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:AgreementExecution`,`@happyvertical/smrt-sales:ExecutedAgreement`,`@happyvertical/smrt-sales:ReferralProgram`,`@happyvertical/smrt-sales:Referrer`],exposed:!0},{id:`@happyvertical/smrt-sales:ReferralClickOperation`,name:`ReferralClickOperation`,collection:`referralclickoperations`,description:`One globally unique caller replay key mapped to its immutable click touch.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`keyHash`,type:`text`,required:!0},{name:`linkId`,type:`text`,required:!0},{name:`touchId`,type:`text`,required:!0},{name:`intentHash`,type:`text`,required:!0},{name:`callerEvidenceHash`,type:`text`,required:!0},{name:`requestedOccurredAt`,type:`text`,required:!0}],rest:[],mcp:[],cli:[],methods:[{name:`claim`,async:!0,parameters:[`input: ClaimReferralClickOperationInput`],returnType:`Promise<ClaimReferralClickOperationResult>`,aiCallable:!1},{name:`findByOperationId`,async:!0,parameters:[`operationId: string`],returnType:`Promise<ReferralClickOperation | null>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-sales:ReferralLink`,name:`ReferralLink`,collection:`referrallinks`,description:`A ReferralLink is the shareable artifact a Referrer distributes: a globally unique code (natural key ['code'] — codes resolve without knowing the tenant/program) plus an optional destination…`,display:{label:`label`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`referrerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Referrer`},{name:`programId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:ReferralProgram`},{name:`code`,type:`text`,required:!0,default:``},{name:`targetUrl`,type:`text`,required:!1,default:``},{name:`label`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`active`},{name:`clickCount`,type:`integer`,required:!1,default:0},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referrallinks/findByReferrer`},{method:`POST`,path:`/referrallinks/findByCode`},{method:`POST`,path:`/referrallinks/createWithUniqueCode`},{method:`POST`,path:`/referrallinks/recordClick`},{method:`GET`,path:`/referrallinks`},{method:`GET`,path:`/referrallinks/[id]`},{method:`POST`,path:`/referrallinks`},{method:`PATCH`,path:`/referrallinks/[id]`}],mcp:[{operation:`create`,name:`referrallink_create`},{operation:`get`,name:`referrallink_get`},{operation:`list`,name:`referrallink_list`},{operation:`createWithUniqueCode`,name:`referrallinkcollection_createwithuniquecode`},{operation:`findByCode`,name:`referrallinkcollection_findbycode`},{operation:`findByReferrer`,name:`referrallinkcollection_findbyreferrer`},{operation:`recordClick`,name:`referrallinkcollection_recordclick`}],cli:[{operation:`create`,name:`referrallink_create`},{operation:`delete`,name:`referrallink_delete`},{operation:`get`,name:`referrallink_get`},{operation:`getMetadata`,name:`referrallink_getMetadata`},{operation:`isActive`,name:`referrallink_isActive`},{operation:`list`,name:`referrallink_list`},{operation:`setMetadata`,name:`referrallink_setMetadata`},{operation:`update`,name:`referrallink_update`},{operation:`createWithUniqueCode`,name:`referrallinkcollection_createWithUniqueCode`},{operation:`findByCode`,name:`referrallinkcollection_findByCode`},{operation:`findByReferrer`,name:`referrallinkcollection_findByReferrer`},{operation:`recordClick`,name:`referrallinkcollection_recordClick`}],methods:[{name:`createWithUniqueCode`,async:!0,parameters:[`input: CreateReferralLinkInput`],returnType:`Promise<ReferralLink>`,aiCallable:!0},{name:`findByCode`,async:!0,parameters:[`code: string`],returnType:`Promise<ReferralLink | null>`,aiCallable:!0},{name:`findByReferrer`,async:!0,parameters:[`referrerId: string`],returnType:`Promise<ReferralLink[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recordClick`,async:!0,parameters:[`input: RecordClickInput`],returnType:`Promise<RecordClickResult>`,aiCallable:!0},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:ReferralProgram`,`@happyvertical/smrt-sales:Referrer`],exposed:!0},{id:`@happyvertical/smrt-sales:ReferralProgram`,name:`ReferralProgram`,collection:`referralprograms`,description:`A ReferralProgram anchors links, touches, referrals, agreements, and exceptions, and carries the program-level DEFAULTS:`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`key`,type:`text`,required:!0,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`draft`},{name:`defaultCommissionPlanKey`,type:`text`,required:!1,default:``},{name:`defaultAttributionPolicyKey`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referralprograms/findByKey`},{method:`POST`,path:`/referralprograms/findByStatus`},{method:`POST`,path:`/referralprograms/findActive`},{method:`GET`,path:`/referralprograms`},{method:`GET`,path:`/referralprograms/[id]`},{method:`POST`,path:`/referralprograms`},{method:`PATCH`,path:`/referralprograms/[id]`}],mcp:[{operation:`get`,name:`referralprogram_get`},{operation:`list`,name:`referralprogram_list`},{operation:`findActive`,name:`referralprogramcollection_findactive`},{operation:`findByKey`,name:`referralprogramcollection_findbykey`},{operation:`findByStatus`,name:`referralprogramcollection_findbystatus`}],cli:[{operation:`create`,name:`referralprogram_create`},{operation:`delete`,name:`referralprogram_delete`},{operation:`get`,name:`referralprogram_get`},{operation:`getMetadata`,name:`referralprogram_getMetadata`},{operation:`isActive`,name:`referralprogram_isActive`},{operation:`list`,name:`referralprogram_list`},{operation:`setMetadata`,name:`referralprogram_setMetadata`},{operation:`update`,name:`referralprogram_update`},{operation:`findActive`,name:`referralprogramcollection_findActive`},{operation:`findByKey`,name:`referralprogramcollection_findByKey`},{operation:`findByStatus`,name:`referralprogramcollection_findByStatus`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<ReferralProgram[]>`,aiCallable:!0},{name:`findByKey`,async:!0,parameters:[`key: string`],returnType:`Promise<ReferralProgram | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ReferralProgramStatus`],returnType:`Promise<ReferralProgram[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sales:ReferralTermSnapshot`,name:`ReferralTermSnapshot`,collection:`referraltermsnapshots`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`referralId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Referral`},{name:`agreementId`,type:`text`,required:!1,default:``},{name:`agreementVersion`,type:`integer`,required:!1,default:0},{name:`planKey`,type:`text`,required:!1,default:``},{name:`planVersion`,type:`integer`,required:!1,default:0},{name:`policyKey`,type:`text`,required:!1,default:``},{name:`policyVersion`,type:`integer`,required:!1,default:0},{name:`components`,type:`text`,required:!1,default:`[]`},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`clearingDays`,type:`integer`,required:!1,default:0},{name:`approvalMode`,type:`text`,required:!1,default:`manual`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referraltermsnapshots/findByReferral`},{method:`GET`,path:`/referraltermsnapshots`},{method:`GET`,path:`/referraltermsnapshots/[id]`}],mcp:[{operation:`get`,name:`referraltermsnapshot_get`},{operation:`list`,name:`referraltermsnapshot_list`},{operation:`findByReferral`,name:`referraltermsnapshotcollection_findbyreferral`}],cli:[],methods:[{name:`findByReferral`,async:!0,parameters:[`referralId: string`],returnType:`Promise<ReferralTermSnapshot[]>`,aiCallable:!0},{name:`getComponents`,async:!1,parameters:[],returnType:`CommissionPlanComponent[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:Referral`],exposed:!0},{id:`@happyvertical/smrt-sales:ReferralTouch`,name:`ReferralTouch`,collection:`referraltouches`,display:{label:`code`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`linkId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ReferralLink`},{name:`code`,type:`text`,required:!1,default:``},{name:`referrerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-sales:Referrer`},{name:`programId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:ReferralProgram`},{name:`kind`,type:`text`,required:!1,default:`click`},{name:`subjectKind`,type:`text`,required:!1,default:``},{name:`subjectId`,type:`text`,required:!1,default:``},{name:`occurredAt`,type:`datetime`,required:!1},{name:`evidence`,type:`text`,required:!1,default:`{}`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referraltouches/findByReferrer`},{method:`POST`,path:`/referraltouches/findBySubject`},{method:`POST`,path:`/referraltouches/findByTargetWindow`},{method:`GET`,path:`/referraltouches`},{method:`GET`,path:`/referraltouches/[id]`},{method:`POST`,path:`/referraltouches`}],mcp:[{operation:`create`,name:`referraltouch_create`},{operation:`list`,name:`referraltouch_list`},{operation:`findByReferrer`,name:`referraltouchcollection_findbyreferrer`},{operation:`findBySubject`,name:`referraltouchcollection_findbysubject`},{operation:`findByTargetWindow`,name:`referraltouchcollection_findbytargetwindow`}],cli:[],methods:[{name:`findByReferrer`,async:!0,parameters:[`referrerId: string`],returnType:`Promise<ReferralTouch[]>`,aiCallable:!0},{name:`findBySubject`,async:!0,parameters:[`subjectKind: string`,`subjectId: string`],returnType:`Promise<ReferralTouch[]>`,aiCallable:!0},{name:`findByTargetWindow`,async:!0,parameters:[`query: TouchWindowQuery`],returnType:`Promise<ReferralTouch[]>`,aiCallable:!0},{name:`getEvidence`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setEvidence`,async:!1,parameters:[`evidence: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-sales:ReferralLink`,`@happyvertical/smrt-sales:ReferralProgram`,`@happyvertical/smrt-sales:Referrer`],exposed:!0},{id:`@happyvertical/smrt-sales:Referrer`,name:`Referrer`,collection:`referrers`,description:`Referrer is a ROLE model: it links an identity (smrt-profiles Profile) to referral activity (ReferralLinks, ReferralTouches, and Referrals reference referrerId).`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`earnerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:Earner`},{name:`displayName`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`pending`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/referrers/findByProfile`},{method:`POST`,path:`/referrers/findByStatus`},{method:`POST`,path:`/referrers/findActive`},{method:`GET`,path:`/referrers`},{method:`GET`,path:`/referrers/[id]`},{method:`POST`,path:`/referrers`},{method:`PATCH`,path:`/referrers/[id]`}],mcp:[{operation:`create`,name:`referrer_create`},{operation:`get`,name:`referrer_get`},{operation:`list`,name:`referrer_list`},{operation:`findActive`,name:`referrercollection_findactive`},{operation:`findByProfile`,name:`referrercollection_findbyprofile`},{operation:`findByStatus`,name:`referrercollection_findbystatus`}],cli:[{operation:`create`,name:`referrer_create`},{operation:`delete`,name:`referrer_delete`},{operation:`get`,name:`referrer_get`},{operation:`getMetadata`,name:`referrer_getMetadata`},{operation:`isActive`,name:`referrer_isActive`},{operation:`isPending`,name:`referrer_isPending`},{operation:`isSuspended`,name:`referrer_isSuspended`},{operation:`list`,name:`referrer_list`},{operation:`setMetadata`,name:`referrer_setMetadata`},{operation:`update`,name:`referrer_update`},{operation:`findActive`,name:`referrercollection_findActive`},{operation:`findByProfile`,name:`referrercollection_findByProfile`},{operation:`findByStatus`,name:`referrercollection_findByStatus`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Referrer[]>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<Referrer[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: ReferrerStatus`],returnType:`Promise<Referrer[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSuspended`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-sales:Earner`],exposed:!0},{id:`@happyvertical/smrt-sales:SalesActivity`,name:`SalesActivity`,collection:`salesactivities`,description:`SalesActivity is the shared trail for Leads and Opportunities: human touchpoints (note, call, email, meeting), next actions (task with dueAt/completedAt), and framework-written audit rows…`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`subjectKind`,type:`text`,required:!1,default:`lead`,description:`What the activity is about: a lead or an opportunity.`},{name:`subjectId`,type:`text`,required:!0,default:``,description:`The lead or opportunity it is about.`},{name:`activityKind`,type:`text`,required:!1,default:`note`,description:`The kind of activity, for example call, note or email.`},{name:`summary`,type:`text`,required:!1,default:``,description:`What happened or what needs doing.`},{name:`dueAt`,type:`datetime`,required:!1,description:`When it is due.`},{name:`completedAt`,type:`datetime`,required:!1,description:`When it was done.`},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/salesactivities/findBySubject`},{method:`POST`,path:`/salesactivities/findOpenTasks`},{method:`GET`,path:`/salesactivities`},{method:`GET`,path:`/salesactivities/[id]`},{method:`POST`,path:`/salesactivities`}],mcp:[{operation:`create`,name:`salesactivity_create`},{operation:`list`,name:`salesactivity_list`},{operation:`findBySubject`,name:`salesactivitycollection_findbysubject`},{operation:`findOpenTasks`,name:`salesactivitycollection_findopentasks`}],cli:[],methods:[{name:`findBySubject`,async:!0,parameters:[`subjectKind: SalesActivitySubjectKind`,`subjectId: string`],returnType:`Promise<SalesActivity[]>`,aiCallable:!0},{name:`findOpenTasks`,async:!0,parameters:[`subjectKind: SalesActivitySubjectKind`,`subjectId: string`],returnType:`Promise<SalesActivity[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isOpenTask`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-sales:SalesRepresentative`,name:`SalesRepresentative`,collection:`salesrepresentatives`,description:`SalesRepresentative is a ROLE model: it links an identity (smrt-profiles Profile) to sales ownership (Leads/Opportunities reference ownerRepId).`,display:{label:`title`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`earnerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sales:Earner`},{name:`status`,type:`text`,required:!1,default:`active`},{name:`title`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/salesrepresentatives/findByProfile`},{method:`POST`,path:`/salesrepresentatives/findActive`},{method:`GET`,path:`/salesrepresentatives`},{method:`GET`,path:`/salesrepresentatives/[id]`},{method:`POST`,path:`/salesrepresentatives`},{method:`PATCH`,path:`/salesrepresentatives/[id]`}],mcp:[{operation:`get`,name:`salesrepresentative_get`},{operation:`list`,name:`salesrepresentative_list`},{operation:`findActive`,name:`salesrepresentativecollection_findactive`},{operation:`findByProfile`,name:`salesrepresentativecollection_findbyprofile`}],cli:[{operation:`create`,name:`salesrepresentative_create`},{operation:`delete`,name:`salesrepresentative_delete`},{operation:`get`,name:`salesrepresentative_get`},{operation:`getMetadata`,name:`salesrepresentative_getMetadata`},{operation:`isActive`,name:`salesrepresentative_isActive`},{operation:`list`,name:`salesrepresentative_list`},{operation:`setMetadata`,name:`salesrepresentative_setMetadata`},{operation:`update`,name:`salesrepresentative_update`},{operation:`findActive`,name:`salesrepresentativecollection_findActive`},{operation:`findByProfile`,name:`salesrepresentativecollection_findByProfile`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<SalesRepresentative[]>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<SalesRepresentative[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-sales:Earner`],exposed:!0}],dependencies:[`assets`,`commerce`,`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],reason:`node:crypto`,via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`sales.pipeline`,label:`Leads & pipeline`,summary:`Capture leads and move them through your sales stages.`,synonyms:[`crm`,`prospects`,`opportunities`,`deals`,`funnel`],models:[`@happyvertical/smrt-sales:Lead`,`@happyvertical/smrt-sales:Opportunity`,`@happyvertical/smrt-sales:PipelineDefinition`,`@happyvertical/smrt-sales:PipelineStage`,`@happyvertical/smrt-sales:SalesActivity`],nav:[{label:`Leads`,model:`@happyvertical/smrt-sales:Lead`,icon:`users`,description:`People who might become customers, and where each one stands.`},{label:`Opportunities`,model:`@happyvertical/smrt-sales:Opportunity`,icon:`briefcase`,description:`Deals in progress, with their value and next step.`},{label:`Pipelines`,model:`@happyvertical/smrt-sales:PipelineDefinition`,icon:`layers`,description:`The stages a deal moves through on its way to a sale.`}],requires:[],section:{id:`sales`,label:`Sales`,icon:`shoppingBag`,description:`Customers, orders and quotes: everything you sell.`},options:{"@happyvertical/smrt-sales:Lead":{fields:{profileId:{visibility:`hidden`},mergedIntoId:{visibility:`hidden`},sourceKind:{visibility:`hidden`},sourceId:{visibility:`hidden`},acquisitionContext:{visibility:`hidden`},intakeRef:{visibility:`hidden`},metadata:{visibility:`hidden`},qualifiedAt:{visibility:`hidden`}}},"@happyvertical/smrt-sales:Opportunity":{fields:{sourceKind:{visibility:`hidden`},sourceId:{visibility:`hidden`},metadata:{visibility:`hidden`},outcomeReason:{visibility:`hidden`},wonAt:{visibility:`hidden`},lostAt:{visibility:`hidden`}}},"@happyvertical/smrt-sales:PipelineStage":{fields:{metadata:{visibility:`hidden`}}},"@happyvertical/smrt-sales:SalesActivity":{fields:{metadata:{visibility:`hidden`},actorProfileId:{visibility:`hidden`}}}},help:{markdown:`## Overview
773
+
774
+ Leads and pipeline is a light CRM. You capture leads, turn the promising ones
775
+ into opportunities, and move each through the stages of a pipeline. Activities
776
+ record calls, notes and follow-ups.
777
+
778
+ ## Tasks
779
+
780
+ ### Capture a lead
781
+
782
+ 1. Create a new lead.
783
+ 2. Enter the **{field:name}**, **{field:email}** and **{field:phone}**.
784
+ 3. Keep **{field:status}** up to date as you qualify them.
785
+
786
+ ### Work an opportunity
787
+
788
+ 1. Create a pipeline, then add its stages in order.
789
+ 2. Create a new opportunity and pick the **{field:leadId}**.
790
+ 3. Choose the **{field:pipelineId}** and **{field:stageId}**, and enter the
791
+ **{field:expectedValueCents}** and **{field:expectedCloseAt}**.
792
+ 4. Move the **{field:stageId}** along as the deal progresses.
793
+ `,fieldRefs:[`email`,`expectedCloseAt`,`expectedValueCents`,`leadId`,`name`,`phone`,`pipelineId`,`stageId`,`status`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto; and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]}}]},{id:`sites`,packageName:`@happyvertical/smrt-sites`,version:`0.55.11`,description:`Site lifecycle management for multi-tenant SMRT networks`,models:[{id:`@happyvertical/smrt-sites:Site`,name:`Site`,collection:`sites`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`domain`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`active`,`suspended`,`archived`]},{name:`tier`,type:`text`,required:!1,default:`free`,enum:[`free`,`standard`,`premium`]},{name:`databaseUrl`,type:`text`,required:!1,default:``},{name:`databaseType`,type:`text`,required:!1,default:``},{name:`portalConfig`,type:`text`,required:!1,default:``},{name:`repositoryUrl`,type:`text`,required:!1,default:``},{name:`templateName`,type:`text`,required:!1,default:``},{name:`provisioningStatus`,type:`text`,required:!1,default:``,enum:[`pending`,`provisioning`,`ready`,`failed`,``]},{name:`provisionedAt`,type:`datetime`,required:!1},{name:`provisioningError`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:``},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`POST`,path:`/sites/findByDomain`},{method:`POST`,path:`/sites/findByTenant`},{method:`POST`,path:`/sites/findByStatus`},{method:`POST`,path:`/sites/findActive`},{method:`GET`,path:`/sites`},{method:`GET`,path:`/sites/[id]`},{method:`POST`,path:`/sites`},{method:`PATCH`,path:`/sites/[id]`},{method:`DELETE`,path:`/sites/[id]`}],mcp:[{operation:`create`,name:`site_create`},{operation:`get`,name:`site_get`},{operation:`list`,name:`site_list`},{operation:`update`,name:`site_update`},{operation:`findActive`,name:`sitecollection_findactive`},{operation:`findByDomain`,name:`sitecollection_findbydomain`},{operation:`findByStatus`,name:`sitecollection_findbystatus`},{operation:`findByTenant`,name:`sitecollection_findbytenant`}],cli:[{operation:`create`,name:`site_create`},{operation:`delete`,name:`site_delete`},{operation:`get`,name:`site_get`},{operation:`getMetadata`,name:`site_getMetadata`},{operation:`getPortalConfig`,name:`site_getPortalConfig`},{operation:`isActive`,name:`site_isActive`},{operation:`isReady`,name:`site_isReady`},{operation:`list`,name:`site_list`},{operation:`setMetadata`,name:`site_setMetadata`},{operation:`setPortalConfig`,name:`site_setPortalConfig`},{operation:`update`,name:`site_update`},{operation:`updateMetadata`,name:`site_updateMetadata`},{operation:`findActive`,name:`sitecollection_findActive`},{operation:`findByDomain`,name:`sitecollection_findByDomain`},{operation:`findByStatus`,name:`sitecollection_findByStatus`},{operation:`findByTenant`,name:`sitecollection_findByTenant`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Site[]>`,aiCallable:!0},{name:`findByDomain`,async:!0,parameters:[`domain: string`],returnType:`Promise<Site | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: SiteStatus`],returnType:`Promise<Site[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Site[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPortalConfig`,async:!1,parameters:[],returnType:`SitePortalConfig`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isReady`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setPortalConfig`,async:!1,parameters:[`config: SitePortalConfig`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-sites:SiteAgentBinding`,name:`SiteAgentBinding`,collection:`siteagentbindings`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`siteId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-sites:Site`},{name:`agentClass`,type:`text`,required:!1,default:``},{name:`enabled`,type:`boolean`,required:!1,default:!0},{name:`config`,type:`json`,required:!1},{name:`priority`,type:`integer`,required:!1,default:0}],rest:[{method:`POST`,path:`/siteagentbindings/findBySite`},{method:`POST`,path:`/siteagentbindings/findByAgent`},{method:`POST`,path:`/siteagentbindings/findEnabled`},{method:`POST`,path:`/siteagentbindings/findBySiteAndAgent`},{method:`GET`,path:`/siteagentbindings`},{method:`GET`,path:`/siteagentbindings/[id]`},{method:`POST`,path:`/siteagentbindings`},{method:`PATCH`,path:`/siteagentbindings/[id]`},{method:`DELETE`,path:`/siteagentbindings/[id]`}],mcp:[{operation:`get`,name:`siteagentbinding_get`},{operation:`list`,name:`siteagentbinding_list`},{operation:`findByAgent`,name:`siteagentbindingcollection_findbyagent`},{operation:`findBySite`,name:`siteagentbindingcollection_findbysite`},{operation:`findBySiteAndAgent`,name:`siteagentbindingcollection_findbysiteandagent`},{operation:`findEnabled`,name:`siteagentbindingcollection_findenabled`}],cli:[{operation:`get`,name:`siteagentbinding_get`},{operation:`list`,name:`siteagentbinding_list`},{operation:`findByAgent`,name:`siteagentbindingcollection_findByAgent`},{operation:`findBySite`,name:`siteagentbindingcollection_findBySite`},{operation:`findBySiteAndAgent`,name:`siteagentbindingcollection_findBySiteAndAgent`},{operation:`findEnabled`,name:`siteagentbindingcollection_findEnabled`}],methods:[{name:`findByAgent`,async:!0,parameters:[`agentClass: string`],returnType:`Promise<SiteAgentBinding[]>`,aiCallable:!0},{name:`findBySite`,async:!0,parameters:[`siteId: string`],returnType:`Promise<SiteAgentBinding[]>`,aiCallable:!0},{name:`findBySiteAndAgent`,async:!0,parameters:[`siteId: string`,`agentClass: string`],returnType:`Promise<SiteAgentBinding | null>`,aiCallable:!0},{name:`findEnabled`,async:!0,parameters:[`siteId: string`],returnType:`Promise<SiteAgentBinding[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-sites:Site`],exposed:!0}],dependencies:[],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]}},{id:`social`,packageName:`@happyvertical/smrt-social`,version:`0.55.11`,description:`Social media account management for multi-platform publishing in the SMRT ecosystem`,models:[{id:`@happyvertical/smrt-social:OAuthState`,name:`OAuthState`,collection:`oauthstates`,description:`Temporary OAuth state for social account connection`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`platform`,type:`text`,required:!1,default:`youtube`,enum:[`youtube`,`threads`,`x`,`bluesky`,`facebook`]},{name:`state`,type:`text`,required:!1,default:``},{name:`codeVerifier`,type:`text`,required:!1},{name:`redirectUri`,type:`text`,required:!1,default:``},{name:`scopes`,type:`json`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`createdByUserId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`returnTo`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/oauthstates`},{method:`GET`,path:`/oauthstates/[id]`},{method:`POST`,path:`/oauthstates`},{method:`DELETE`,path:`/oauthstates/[id]`},{method:`POST`,path:`/oauthstates/findByState`},{method:`POST`,path:`/oauthstates/findExpired`},{method:`POST`,path:`/oauthstates/deleteExpired`}],mcp:[],cli:[{operation:`create`,name:`oauthstate_create`},{operation:`delete`,name:`oauthstate_delete`},{operation:`generateCodeChallenge`,name:`oauthstate_generateCodeChallenge`},{operation:`generateCodeVerifier`,name:`oauthstate_generateCodeVerifier`},{operation:`generateState`,name:`oauthstate_generateState`},{operation:`get`,name:`oauthstate_get`},{operation:`list`,name:`oauthstate_list`},{operation:`update`,name:`oauthstate_update`},{operation:`verifyState`,name:`oauthstate_verifyState`},{operation:`consume`,name:`oauthstatecollection_consume`},{operation:`deleteExpired`,name:`oauthstatecollection_deleteExpired`},{operation:`findByState`,name:`oauthstatecollection_findByState`},{operation:`findExpired`,name:`oauthstatecollection_findExpired`}],methods:[{name:`consume`,async:!0,parameters:[`state: OAuthState`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`deleteExpired`,async:!0,parameters:[`now?: Date`],returnType:`Promise<number>`,aiCallable:!1},{name:`findByState`,async:!0,parameters:[`state: string`],returnType:`Promise<OAuthState | null>`,aiCallable:!1},{name:`findExpired`,async:!0,parameters:[`now?: Date`],returnType:`Promise<OAuthState[]>`,aiCallable:!1},{name:`verifyState`,async:!1,parameters:[`callbackState: string`],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-social:SocialAccount`,name:`SocialAccount`,collection:`socialaccounts`,description:`Connected social media account for publishing`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`platform`,type:`text`,required:!1,default:`youtube`,enum:[`youtube`,`threads`,`x`,`bluesky`,`facebook`]},{name:`platformUserId`,type:`text`,required:!1},{name:`platformUsername`,type:`text`,required:!1},{name:`platformUrl`,type:`text`,required:!1},{name:`accessToken`,type:`text`,required:!1},{name:`refreshToken`,type:`text`,required:!1},{name:`credentialSecretId`,type:`text`,required:!1},{name:`accessTokenSecretName`,type:`text`,required:!1},{name:`refreshTokenSecretName`,type:`text`,required:!1},{name:`tokenExpiresAt`,type:`datetime`,required:!1},{name:`isActive`,type:`boolean`,required:!1,default:!0},{name:`defaultHashtags`,type:`json`,required:!1},{name:`scopes`,type:`json`,required:!1},{name:`missingPermissions`,type:`json`,required:!1},{name:`linkBehavior`,type:`text`,required:!1,default:`description`,enum:[`description`,`inline`,`attachment`,`reply`,`none`]},{name:`publishMode`,type:`text`,required:!1,default:`dry_run`,enum:[`dry_run`,`stage_remote`,`private_or_scheduled`,`public`]},{name:`publicPublishingAllowed`,type:`boolean`,required:!1,default:!1},{name:`status`,type:`text`,required:!1,default:`connected`,enum:[`connected`,`disconnected`,`expired`,`missing_permissions`,`error`]},{name:`errorMessage`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/socialaccounts`},{method:`GET`,path:`/socialaccounts/[id]`},{method:`POST`,path:`/socialaccounts`},{method:`PATCH`,path:`/socialaccounts/[id]`},{method:`DELETE`,path:`/socialaccounts/[id]`},{method:`POST`,path:`/socialaccounts/findActive`},{method:`POST`,path:`/socialaccounts/findReady`},{method:`POST`,path:`/socialaccounts/findNeedsAttention`}],mcp:[{operation:`get`,name:`socialaccount_get`},{operation:`list`,name:`socialaccount_list`},{operation:`findActive`,name:`socialaccountcollection_findactive`},{operation:`findNeedsAttention`,name:`socialaccountcollection_findneedsattention`},{operation:`findReady`,name:`socialaccountcollection_findready`}],cli:[{operation:`create`,name:`socialaccount_create`},{operation:`delete`,name:`socialaccount_delete`},{operation:`get`,name:`socialaccount_get`},{operation:`getCredentials`,name:`socialaccount_getCredentials`},{operation:`list`,name:`socialaccount_list`},{operation:`setCredentials`,name:`socialaccount_setCredentials`},{operation:`update`,name:`socialaccount_update`},{operation:`findActive`,name:`socialaccountcollection_findActive`},{operation:`findNeedsAttention`,name:`socialaccountcollection_findNeedsAttention`},{operation:`findReady`,name:`socialaccountcollection_findReady`}],methods:[{name:`findActive`,async:!0,parameters:[`platform?: SocialPlatformType`],returnType:`Promise<SocialAccount[]>`,aiCallable:!0},{name:`findNeedsAttention`,async:!0,parameters:[],returnType:`Promise<SocialAccount[]>`,aiCallable:!0},{name:`findReady`,async:!0,parameters:[`platform?: SocialPlatformType`],returnType:`Promise<SocialAccount[]>`,aiCallable:!0},{name:`getCredentials`,async:!0,parameters:[],returnType:`Promise<Record<string, unknown> | null>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`setCredentials`,async:!0,parameters:[`credentials: Record<string, unknown>`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-social:SocialPost`,name:`SocialPost`,collection:`socialposts`,description:`Social media post for multi-platform publishing`,display:{label:`title`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`socialAccountId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-social:SocialAccount`},{name:`createdByUserId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`videoContentId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-video:VideoContent`},{name:`contentId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-content:Content`},{name:`postType`,type:`text`,required:!1,default:`text`,enum:[`text`,`link`,`image`,`video`]},{name:`mediaUrl`,type:`text`,required:!1},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1,default:``},{name:`hashtags`,type:`json`,required:!1},{name:`linkUrl`,type:`text`,required:!1},{name:`platformPostId`,type:`text`,required:!1},{name:`platformUrl`,type:`text`,required:!1},{name:`scheduledAt`,type:`datetime`,required:!1},{name:`publishedAt`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`pending_approval`,`approved`,`scheduled`,`publishing`,`dry_run`,`staged`,`published`,`failed`,`cancelled`]},{name:`errorMessage`,type:`text`,required:!1},{name:`analytics`,type:`json`,required:!1},{name:`analyticsLastSyncedAt`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/socialposts`},{method:`GET`,path:`/socialposts/[id]`},{method:`POST`,path:`/socialposts`},{method:`PATCH`,path:`/socialposts/[id]`},{method:`DELETE`,path:`/socialposts/[id]`},{method:`POST`,path:`/socialposts/createDraft`},{method:`POST`,path:`/socialposts/findByStatus`},{method:`POST`,path:`/socialposts/findForAccount`},{method:`POST`,path:`/socialposts/findDueForPublish`}],mcp:[{operation:`get`,name:`socialpost_get`},{operation:`list`,name:`socialpost_list`},{operation:`createDraft`,name:`socialpostcollection_createdraft`},{operation:`findByStatus`,name:`socialpostcollection_findbystatus`},{operation:`findDueForPublish`,name:`socialpostcollection_finddueforpublish`},{operation:`findForAccount`,name:`socialpostcollection_findforaccount`},{operation:`recordPublishFailure`,name:`socialpostcollection_recordpublishfailure`},{operation:`recordPublishSuccess`,name:`socialpostcollection_recordpublishsuccess`},{operation:`updateLatestAnalytics`,name:`socialpostcollection_updatelatestanalytics`}],cli:[{operation:`create`,name:`socialpost_create`},{operation:`delete`,name:`socialpost_delete`},{operation:`get`,name:`socialpost_get`},{operation:`list`,name:`socialpost_list`},{operation:`update`,name:`socialpost_update`},{operation:`createDraft`,name:`socialpostcollection_createDraft`},{operation:`findByStatus`,name:`socialpostcollection_findByStatus`},{operation:`findDueForPublish`,name:`socialpostcollection_findDueForPublish`},{operation:`findForAccount`,name:`socialpostcollection_findForAccount`},{operation:`recordPublishFailure`,name:`socialpostcollection_recordPublishFailure`},{operation:`recordPublishSuccess`,name:`socialpostcollection_recordPublishSuccess`},{operation:`updateLatestAnalytics`,name:`socialpostcollection_updateLatestAnalytics`}],methods:[{name:`createDraft`,async:!0,parameters:[`options: CreateSocialPostDraftOptions`],returnType:`Promise<SocialPost>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: PostStatus`],returnType:`Promise<SocialPost[]>`,aiCallable:!0},{name:`findDueForPublish`,async:!0,parameters:[`now?: Date`],returnType:`Promise<SocialPost[]>`,aiCallable:!0},{name:`findForAccount`,async:!0,parameters:[`socialAccountId: string`],returnType:`Promise<SocialPost[]>`,aiCallable:!0},{name:`recordPublishFailure`,async:!0,parameters:[`post: SocialPost`,`error: Error | string`],returnType:`Promise<SocialPost>`,aiCallable:!0},{name:`recordPublishSuccess`,async:!0,parameters:[`post: SocialPost`,`data: PublishSuccessData`],returnType:`Promise<SocialPost>`,aiCallable:!0},{name:`updateLatestAnalytics`,async:!0,parameters:[`post: SocialPost`,`analytics: PostAnalytics`,`syncedAt?: Date`],returnType:`Promise<SocialPost>`,aiCallable:!0}],references:[`@happyvertical/smrt-content:Content`,`@happyvertical/smrt-social:SocialAccount`,`@happyvertical/smrt-users:User`,`@happyvertical/smrt-video:VideoContent`],exposed:!0},{id:`@happyvertical/smrt-social:SocialPostAnalyticsSnapshot`,name:`SocialPostAnalyticsSnapshot`,collection:`socialpostanalyticssnapshots`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`socialPostId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-social:SocialPost`},{name:`platform`,type:`text`,required:!0,enum:[`youtube`,`threads`,`x`,`bluesky`,`facebook`]},{name:`analytics`,type:`json`,required:!1},{name:`raw`,type:`json`,required:!1},{name:`capturedAt`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/socialpostanalyticssnapshots`},{method:`GET`,path:`/socialpostanalyticssnapshots/[id]`},{method:`POST`,path:`/socialpostanalyticssnapshots`},{method:`DELETE`,path:`/socialpostanalyticssnapshots/[id]`},{method:`POST`,path:`/socialpostanalyticssnapshots/findForPost`},{method:`POST`,path:`/socialpostanalyticssnapshots/findLatestForPost`}],mcp:[{operation:`get`,name:`socialpostanalyticssnapshot_get`},{operation:`list`,name:`socialpostanalyticssnapshot_list`},{operation:`findForPost`,name:`socialpostanalyticssnapshotcollection_findforpost`},{operation:`findLatestForPost`,name:`socialpostanalyticssnapshotcollection_findlatestforpost`},{operation:`recordSnapshot`,name:`socialpostanalyticssnapshotcollection_recordsnapshot`}],cli:[{operation:`create`,name:`socialpostanalyticssnapshot_create`},{operation:`delete`,name:`socialpostanalyticssnapshot_delete`},{operation:`get`,name:`socialpostanalyticssnapshot_get`},{operation:`list`,name:`socialpostanalyticssnapshot_list`},{operation:`update`,name:`socialpostanalyticssnapshot_update`},{operation:`findForPost`,name:`socialpostanalyticssnapshotcollection_findForPost`},{operation:`findLatestForPost`,name:`socialpostanalyticssnapshotcollection_findLatestForPost`},{operation:`recordSnapshot`,name:`socialpostanalyticssnapshotcollection_recordSnapshot`}],methods:[{name:`findForPost`,async:!0,parameters:[`socialPostId: string`],returnType:`Promise<SocialPostAnalyticsSnapshot[]>`,aiCallable:!0},{name:`findLatestForPost`,async:!0,parameters:[`socialPostId: string`],returnType:`Promise<SocialPostAnalyticsSnapshot | null>`,aiCallable:!0},{name:`recordSnapshot`,async:!0,parameters:[`options: object`],returnType:`Promise<SocialPostAnalyticsSnapshot>`,aiCallable:!0}],references:[`@happyvertical/smrt-social:SocialPost`],exposed:!0}],dependencies:[`content`,`users`,`video`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`node:crypto`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-chat`,`@happyvertical/smrt-content`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`,`@happyvertical/smrt-video`,`@happyvertical/smrt-voice`]}},{id:`subscriptions`,packageName:`@happyvertical/smrt-subscriptions`,version:`0.55.11`,description:`Tenant subscriptions, entitlement resolution, usage thresholds, and subscription UI for SMRT`,models:[{id:`@happyvertical/smrt-subscriptions:BillingAdjustment`,name:`BillingAdjustment`,collection:`billingadjustments`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`clientChargeId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:ClientCharge`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`reason`,type:`text`,required:!1,default:``},{name:`source`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`createdBy`,type:`text`,required:!1,default:``}],rest:[{method:`GET`,path:`/billingadjustments`},{method:`GET`,path:`/billingadjustments/[id]`}],mcp:[{operation:`get`,name:`billingadjustment_get`},{operation:`list`,name:`billingadjustment_list`}],cli:[{operation:`get`,name:`billingadjustment_get`},{operation:`list`,name:`billingadjustment_list`}],methods:[],references:[`@happyvertical/smrt-subscriptions:ClientCharge`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:ClientCharge`,name:`ClientCharge`,collection:`clientcharges`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`usageEventId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:TenantUsageMetric`},{name:`usageTenantId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:Tenant`},{name:`subscriberKind`,type:`text`,required:!1,default:`tenant`},{name:`subscriberExternalId`,type:`text`,required:!1,default:``},{name:`projectId`,type:`text`,required:!1,default:``},{name:`workRefType`,type:`text`,required:!1,default:``},{name:`workRefId`,type:`text`,required:!1,default:``},{name:`provider`,type:`text`,required:!1,default:``},{name:`serviceKey`,type:`text`,required:!1,default:``},{name:`metricKey`,type:`text`,required:!1,default:``},{name:`quantity`,type:`decimal`,required:!1,default:0},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`pricingRuleId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PricingRule`},{name:`priceBookId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PriceBook`},{name:`pricingSnapshot`,type:`text`,required:!1,default:`{}`},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`approved`,`adjusted`]},{name:`approvedAt`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/clientcharges`},{method:`GET`,path:`/clientcharges/[id]`}],mcp:[{operation:`get`,name:`clientcharge_get`},{operation:`list`,name:`clientcharge_list`}],cli:[{operation:`get`,name:`clientcharge_get`},{operation:`list`,name:`clientcharge_list`}],methods:[{name:`getPricingSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-subscriptions:PriceBook`,`@happyvertical/smrt-subscriptions:PricingRule`,`@happyvertical/smrt-subscriptions:TenantUsageMetric`,`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:CreditGrant`,name:`CreditGrant`,collection:`creditgrants`,description:`An append-only credit on a prepaid (period: 'balance') spending policy. Positive amounts add credit; a negative amount reverses an earlier grant.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`spendingPolicyId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:SpendingPolicy`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`reason`,type:`text`,required:!1,default:``},{name:`source`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`grantedByTenantId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:Tenant`}],rest:[{method:`GET`,path:`/creditgrants`},{method:`GET`,path:`/creditgrants/[id]`}],mcp:[{operation:`get`,name:`creditgrant_get`},{operation:`list`,name:`creditgrant_list`}],cli:[{operation:`get`,name:`creditgrant_get`},{operation:`list`,name:`creditgrant_list`}],methods:[],references:[`@happyvertical/smrt-subscriptions:SpendingPolicy`,`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:PriceBook`,name:`PriceBook`,collection:`pricebooks`,description:`A named set of prices published by one seller tenant. Its prices are ordinary PricingRule rows that carry this book's id and the same tenant; one rule per currency gives a price in several currencies.`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`bookKey`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`kind`,type:`text`,required:!1,default:`retail`,enum:[`wholesale`,`retail`]},{name:`active`,type:`boolean`,required:!1,default:!0}],rest:[],mcp:[],cli:[],methods:[],references:[],exposed:!1},{id:`@happyvertical/smrt-subscriptions:PriceBookAssignment`,name:`PriceBookAssignment`,collection:`pricebookassignments`,description:`Which price books rate one child tenant's usage, keyed like the tenancy billing relationship it belongs to (one row per child).`,fields:[{name:`childTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`resellerTenantId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-users:Tenant`},{name:`wholesalePriceBookId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PriceBook`},{name:`wholesaleCurrency`,type:`text`,required:!1,default:``},{name:`retailPriceBookId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PriceBook`},{name:`retailCurrency`,type:`text`,required:!1,default:``}],rest:[],mcp:[],cli:[],methods:[],references:[`@happyvertical/smrt-subscriptions:PriceBook`,`@happyvertical/smrt-users:Tenant`],exposed:!1},{id:`@happyvertical/smrt-subscriptions:PricingRule`,name:`PricingRule`,collection:`pricingrules`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`ruleKey`,type:`text`,required:!1,default:``},{name:`metricKey`,type:`text`,required:!1,default:``},{name:`serviceKey`,type:`text`,required:!1,default:``},{name:`strategy`,type:`text`,required:!1,default:`fixed_unit`,enum:[`fixed_unit`,`cost_plus`,`multiplier`,`tiered`,`included_overage`,`flat`,`custom`]},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`priority`,type:`integer`,required:!1,default:0},{name:`terms`,type:`text`,required:!1,default:`{}`},{name:`active`,type:`boolean`,required:!1,default:!0},{name:`priceBookId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PriceBook`}],rest:[{method:`GET`,path:`/pricingrules`},{method:`GET`,path:`/pricingrules/[id]`},{method:`POST`,path:`/pricingrules`},{method:`PATCH`,path:`/pricingrules/[id]`},{method:`DELETE`,path:`/pricingrules/[id]`},{method:`POST`,path:`/pricingrules/[id]/getTerms`},{method:`POST`,path:`/pricingrules/[id]/setTerms`}],mcp:[{operation:`create`,name:`pricingrule_create`},{operation:`delete`,name:`pricingrule_delete`},{operation:`get`,name:`pricingrule_get`},{operation:`getTerms`,name:`pricingrule_getterms`},{operation:`list`,name:`pricingrule_list`},{operation:`setTerms`,name:`pricingrule_setterms`},{operation:`update`,name:`pricingrule_update`}],cli:[{operation:`create`,name:`pricingrule_create`},{operation:`delete`,name:`pricingrule_delete`},{operation:`get`,name:`pricingrule_get`},{operation:`getTerms`,name:`pricingrule_getTerms`},{operation:`list`,name:`pricingrule_list`},{operation:`setTerms`,name:`pricingrule_setTerms`},{operation:`update`,name:`pricingrule_update`}],methods:[{name:`getTerms`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!0},{name:`setTerms`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!0}],references:[`@happyvertical/smrt-subscriptions:PriceBook`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:RetailCharge`,name:`RetailCharge`,collection:`retailcharges`,description:`What a reseller charges one child for one usage event, priced from the reseller's retail book.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`resellerTenantId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:Tenant`},{name:`usageEventId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:TenantUsageMetric`},{name:`clientChargeId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:ClientCharge`},{name:`subscriberKind`,type:`text`,required:!1,default:`tenant`},{name:`subscriberExternalId`,type:`text`,required:!1,default:``},{name:`projectId`,type:`text`,required:!1,default:``},{name:`workRefType`,type:`text`,required:!1,default:``},{name:`workRefId`,type:`text`,required:!1,default:``},{name:`provider`,type:`text`,required:!1,default:``},{name:`serviceKey`,type:`text`,required:!1,default:``},{name:`metricKey`,type:`text`,required:!1,default:``},{name:`quantity`,type:`decimal`,required:!1,default:0},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`priceBookId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PriceBook`},{name:`pricingRuleId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:PricingRule`},{name:`pricingSnapshot`,type:`text`,required:!1,default:`{}`},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`approved`]},{name:`approvedAt`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/retailcharges`},{method:`GET`,path:`/retailcharges/[id]`}],mcp:[{operation:`get`,name:`retailcharge_get`},{operation:`list`,name:`retailcharge_list`}],cli:[{operation:`get`,name:`retailcharge_get`},{operation:`list`,name:`retailcharge_list`}],methods:[{name:`getPricingSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-subscriptions:ClientCharge`,`@happyvertical/smrt-subscriptions:PriceBook`,`@happyvertical/smrt-subscriptions:PricingRule`,`@happyvertical/smrt-subscriptions:TenantUsageMetric`,`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:SpendingPolicy`,name:`SpendingPolicy`,collection:`spendingpolicies`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`subscriberKind`,type:`text`,required:!1,default:``},{name:`subscriberExternalId`,type:`text`,required:!1,default:``},{name:`projectId`,type:`text`,required:!1,default:``},{name:`serviceKey`,type:`text`,required:!1,default:``},{name:`metricKey`,type:`text`,required:!1,default:``},{name:`period`,type:`text`,required:!1,default:`month`,enum:[`day`,`week`,`month`,`year`,`rolling`,`balance`]},{name:`rollingSeconds`,type:`integer`,required:!1,default:0},{name:`limitAmount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`behavior`,type:`text`,required:!1,default:`observe`,enum:[`observe`,`warn`,`block`,`approval_required`]},{name:`priority`,type:`integer`,required:!1,default:0},{name:`active`,type:`boolean`,required:!1,default:!0},{name:`basis`,type:`text`,required:!1,default:`billed`,enum:[`billed`,`retail`,`wholesale`]},{name:`setByTenantId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-users:Tenant`},{name:`balanceFrom`,type:`datetime`,required:!1}],rest:[{method:`GET`,path:`/spendingpolicies`},{method:`GET`,path:`/spendingpolicies/[id]`},{method:`POST`,path:`/spendingpolicies`},{method:`PATCH`,path:`/spendingpolicies/[id]`},{method:`DELETE`,path:`/spendingpolicies/[id]`}],mcp:[{operation:`create`,name:`spendingpolicy_create`},{operation:`delete`,name:`spendingpolicy_delete`},{operation:`get`,name:`spendingpolicy_get`},{operation:`list`,name:`spendingpolicy_list`},{operation:`update`,name:`spendingpolicy_update`}],cli:[{operation:`create`,name:`spendingpolicy_create`},{operation:`delete`,name:`spendingpolicy_delete`},{operation:`get`,name:`spendingpolicy_get`},{operation:`list`,name:`spendingpolicy_list`},{operation:`update`,name:`spendingpolicy_update`}],methods:[],references:[`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:SubscriptionPlan`,name:`SubscriptionPlan`,collection:`subscriptionplans`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`planKey`,type:`text`,required:!1,default:``},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1,default:`active`,enum:[`active`,`archived`,`draft`]},{name:`sortOrder`,type:`integer`,required:!1,default:0},{name:`priceAmount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1,default:`USD`},{name:`billingInterval`,type:`text`,required:!1,default:`month`,enum:[`day`,`week`,`month`,`year`]},{name:`externalProvider`,type:`text`,required:!1,default:`stripe`},{name:`stripeProductId`,type:`text`,required:!1,default:``},{name:`stripePriceId`,type:`text`,required:!1,default:``},{name:`features`,type:`text`,required:!1,default:`[]`},{name:`thresholds`,type:`text`,required:!1,default:`[]`},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/subscriptionplans/findByPlanKey`},{method:`POST`,path:`/subscriptionplans/findActive`},{method:`POST`,path:`/subscriptionplans/findByStripePriceId`},{method:`GET`,path:`/subscriptionplans`},{method:`GET`,path:`/subscriptionplans/[id]`},{method:`POST`,path:`/subscriptionplans`},{method:`PATCH`,path:`/subscriptionplans/[id]`}],mcp:[{operation:`get`,name:`subscriptionplan_get`},{operation:`list`,name:`subscriptionplan_list`},{operation:`findActive`,name:`subscriptionplancollection_findactive`},{operation:`findByPlanKey`,name:`subscriptionplancollection_findbyplankey`},{operation:`findByStripePriceId`,name:`subscriptionplancollection_findbystripepriceid`}],cli:[{operation:`create`,name:`subscriptionplan_create`},{operation:`delete`,name:`subscriptionplan_delete`},{operation:`get`,name:`subscriptionplan_get`},{operation:`getFeatureGrants`,name:`subscriptionplan_getFeatureGrants`},{operation:`getFeatureKeys`,name:`subscriptionplan_getFeatureKeys`},{operation:`getMetadata`,name:`subscriptionplan_getMetadata`},{operation:`getThresholds`,name:`subscriptionplan_getThresholds`},{operation:`isActive`,name:`subscriptionplan_isActive`},{operation:`list`,name:`subscriptionplan_list`},{operation:`setFeatureGrants`,name:`subscriptionplan_setFeatureGrants`},{operation:`setMetadata`,name:`subscriptionplan_setMetadata`},{operation:`setThresholds`,name:`subscriptionplan_setThresholds`},{operation:`update`,name:`subscriptionplan_update`},{operation:`findActive`,name:`subscriptionplancollection_findActive`},{operation:`findByPlanKey`,name:`subscriptionplancollection_findByPlanKey`},{operation:`findByStripePriceId`,name:`subscriptionplancollection_findByStripePriceId`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<SubscriptionPlan[]>`,aiCallable:!0},{name:`findByPlanKey`,async:!0,parameters:[`planKey: string`],returnType:`Promise<SubscriptionPlan | null>`,aiCallable:!0},{name:`findByStripePriceId`,async:!0,parameters:[`stripePriceId: string`],returnType:`Promise<SubscriptionPlan | null>`,aiCallable:!0},{name:`getFeatureGrants`,async:!1,parameters:[],returnType:`PlanFeatureGrant[]`,aiCallable:!1},{name:`getFeatureKeys`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`JsonObject`,aiCallable:!1},{name:`getThresholds`,async:!1,parameters:[],returnType:`PlanThreshold[]`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setFeatureGrants`,async:!1,parameters:[`grants: Array<string | PlanFeatureGrant>`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: JsonObject`],returnType:`void`,aiCallable:!1},{name:`setThresholds`,async:!1,parameters:[`thresholds: PlanThreshold[]`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-subscriptions:TenantSubscription`,name:`TenantSubscription`,collection:`tenantsubscriptions`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`subscriberKind`,type:`text`,required:!1,default:`tenant`,enum:[`tenant`,`external`]},{name:`subscriberExternalId`,type:`text`,required:!1,default:``},{name:`planId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-subscriptions:SubscriptionPlan`},{name:`status`,type:`text`,required:!1,default:`incomplete`,enum:[`active`,`canceled`,`incomplete`,`past_due`,`trialing`,`unpaid`]},{name:`startedAt`,type:`datetime`,required:!1},{name:`currentPeriodStart`,type:`datetime`,required:!1},{name:`currentPeriodEnd`,type:`datetime`,required:!1},{name:`trialEndsAt`,type:`datetime`,required:!1},{name:`cancelAtPeriodEnd`,type:`boolean`,required:!1,default:!1},{name:`canceledAt`,type:`datetime`,required:!1},{name:`externalProvider`,type:`text`,required:!1,default:`stripe`},{name:`stripeCustomerId`,type:`text`,required:!1,default:``},{name:`stripeSubscriptionId`,type:`text`,required:!1,default:``},{name:`stripeCheckoutSessionId`,type:`text`,required:!1,default:``},{name:`metadata`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/tenantsubscriptions/findByTenant`},{method:`POST`,path:`/tenantsubscriptions/findCurrentForTenant`},{method:`POST`,path:`/tenantsubscriptions/findCurrentForSubscriber`},{method:`POST`,path:`/tenantsubscriptions/findByStripeSubscriptionId`},{method:`GET`,path:`/tenantsubscriptions`},{method:`GET`,path:`/tenantsubscriptions/[id]`},{method:`POST`,path:`/tenantsubscriptions`},{method:`PATCH`,path:`/tenantsubscriptions/[id]`}],mcp:[{operation:`get`,name:`tenantsubscription_get`},{operation:`list`,name:`tenantsubscription_list`},{operation:`findByStripeSubscriptionId`,name:`tenantsubscriptioncollection_findbystripesubscriptionid`},{operation:`findByTenant`,name:`tenantsubscriptioncollection_findbytenant`},{operation:`findCurrentForSubscriber`,name:`tenantsubscriptioncollection_findcurrentforsubscriber`},{operation:`findCurrentForTenant`,name:`tenantsubscriptioncollection_findcurrentfortenant`}],cli:[{operation:`create`,name:`tenantsubscription_create`},{operation:`delete`,name:`tenantsubscription_delete`},{operation:`get`,name:`tenantsubscription_get`},{operation:`getMetadata`,name:`tenantsubscription_getMetadata`},{operation:`getSubscriber`,name:`tenantsubscription_getSubscriber`},{operation:`isEntitled`,name:`tenantsubscription_isEntitled`},{operation:`list`,name:`tenantsubscription_list`},{operation:`setMetadata`,name:`tenantsubscription_setMetadata`},{operation:`update`,name:`tenantsubscription_update`},{operation:`findByStripeSubscriptionId`,name:`tenantsubscriptioncollection_findByStripeSubscriptionId`},{operation:`findByTenant`,name:`tenantsubscriptioncollection_findByTenant`},{operation:`findCurrentForSubscriber`,name:`tenantsubscriptioncollection_findCurrentForSubscriber`},{operation:`findCurrentForTenant`,name:`tenantsubscriptioncollection_findCurrentForTenant`}],methods:[{name:`findByStripeSubscriptionId`,async:!0,parameters:[`stripeSubscriptionId: string`],returnType:`Promise<TenantSubscription | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantSubscription[]>`,aiCallable:!0},{name:`findCurrentForSubscriber`,async:!0,parameters:[`subscriber: Subscriber`,`now?: any`],returnType:`Promise<TenantSubscription | null>`,aiCallable:!0},{name:`findCurrentForTenant`,async:!0,parameters:[`tenantId: string`,`now?: any`],returnType:`Promise<TenantSubscription | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`JsonObject`,aiCallable:!1},{name:`getSubscriber`,async:!1,parameters:[],returnType:`Subscriber | null`,aiCallable:!1},{name:`isEntitled`,async:!1,parameters:[`now?: any`],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: JsonObject`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-subscriptions:SubscriptionPlan`],exposed:!0},{id:`@happyvertical/smrt-subscriptions:TenantUsageMetric`,name:`TenantUsageMetric`,collection:`tenantusagemetrics`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`subscriberKind`,type:`text`,required:!1,default:`tenant`,enum:[`tenant`,`external`]},{name:`subscriberExternalId`,type:`text`,required:!1,default:``},{name:`metricKey`,type:`text`,required:!1,default:``},{name:`quantity`,type:`decimal`,required:!1,default:0},{name:`windowStart`,type:`datetime`,required:!1},{name:`windowEnd`,type:`datetime`,required:!1},{name:`source`,type:`text`,required:!1,default:``},{name:`sourceId`,type:`text`,required:!1,default:``},{name:`projectId`,type:`text`,required:!1,default:``},{name:`workRefType`,type:`text`,required:!1,default:``},{name:`workRefId`,type:`text`,required:!1,default:``},{name:`provider`,type:`text`,required:!1,default:``},{name:`dimensions`,type:`text`,required:!1,default:`{}`}],rest:[{method:`POST`,path:`/tenantusagemetrics/recordUsage`},{method:`POST`,path:`/tenantusagemetrics/findByTenantAndMetric`},{method:`POST`,path:`/tenantusagemetrics/summarizeUsage`},{method:`POST`,path:`/tenantusagemetrics/summarizeUsageBatch`},{method:`POST`,path:`/tenantusagemetrics/summarizeTenantAiUsage`},{method:`GET`,path:`/tenantusagemetrics`},{method:`GET`,path:`/tenantusagemetrics/[id]`},{method:`POST`,path:`/tenantusagemetrics`}],mcp:[{operation:`get`,name:`tenantusagemetric_get`},{operation:`list`,name:`tenantusagemetric_list`},{operation:`findByTenantAndMetric`,name:`tenantusagemetriccollection_findbytenantandmetric`},{operation:`recordUsage`,name:`tenantusagemetriccollection_recordusage`},{operation:`summarizeTenantAiUsage`,name:`tenantusagemetriccollection_summarizetenantaiusage`},{operation:`summarizeUsage`,name:`tenantusagemetriccollection_summarizeusage`},{operation:`summarizeUsageBatch`,name:`tenantusagemetriccollection_summarizeusagebatch`}],cli:[{operation:`create`,name:`tenantusagemetric_create`},{operation:`get`,name:`tenantusagemetric_get`},{operation:`list`,name:`tenantusagemetric_list`},{operation:`findByTenantAndMetric`,name:`tenantusagemetriccollection_findByTenantAndMetric`},{operation:`recordUsage`,name:`tenantusagemetriccollection_recordUsage`},{operation:`summarizeTenantAiUsage`,name:`tenantusagemetriccollection_summarizeTenantAiUsage`},{operation:`summarizeUsage`,name:`tenantusagemetriccollection_summarizeUsage`},{operation:`summarizeUsageBatch`,name:`tenantusagemetriccollection_summarizeUsageBatch`}],methods:[{name:`findByTenantAndMetric`,async:!0,parameters:[`tenantId: string`,`metricKey: string`],returnType:`Promise<TenantUsageMetric[]>`,aiCallable:!0},{name:`getDimensions`,async:!1,parameters:[],returnType:`JsonObject`,aiCallable:!1},{name:`getSubscriber`,async:!1,parameters:[],returnType:`Subscriber | null`,aiCallable:!1},{name:`recordUsage`,async:!0,parameters:[`options: RecordUsageOptions`],returnType:`Promise<TenantUsageMetric>`,aiCallable:!0},{name:`setDimensions`,async:!1,parameters:[`dimensions: JsonObject`],returnType:`void`,aiCallable:!1},{name:`summarizeTenantAiUsage`,async:!0,parameters:[`options: SummarizeAiUsageOptions`],returnType:`Promise<AiUsageSummary>`,aiCallable:!0},{name:`summarizeUsage`,async:!0,parameters:[`options: SummarizeUsageOptions`],returnType:`Promise<UsageSummary>`,aiCallable:!0},{name:`summarizeUsageBatch`,async:!0,parameters:[`options: SummarizeUsageBatchOptions`],returnType:`Promise<UsageSummary[]>`,aiCallable:!0}],references:[],exposed:!0}],dependencies:[`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`,`#3626`],reason:`core migrations (node:crypto, node:os)`,via:[`@happyvertical/smrt-tenancy`]}},{id:`support`,packageName:`@happyvertical/smrt-support`,version:`0.55.11`,description:`AI-first Support Cases: channel-neutral intake, lifecycle, routing, service targets, and service time for the SMRT framework`,models:[{id:`@happyvertical/smrt-support:ServiceTimeEntry`,name:`ServiceTimeEntry`,collection:`servicetimeentries`,extends:`@happyvertical/smrt-support:ServiceTimeEntry`,description:`Support subtype over the shared service_time_entries table: the shared entry plus caseId (a SupportCase) and specialistId (a SupportSpecialist).`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportCase`},{name:`workRefType`,type:`text`,required:!1},{name:`workRefId`,type:`text`,required:!1},{name:`specialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`participantKind`,type:`text`,required:!1},{name:`participantProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`agentRef`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`startedAt`,type:`datetime`,required:!1},{name:`endedAt`,type:`datetime`,required:!1},{name:`durationSeconds`,type:`integer`,required:!1},{name:`evidence`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`submittedAt`,type:`datetime`,required:!1},{name:`submittedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`approvedAt`,type:`datetime`,required:!1},{name:`approvedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`approvalPath`,type:`text`,required:!1},{name:`rejectedAt`,type:`datetime`,required:!1},{name:`rejectedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`rejectionReason`,type:`text`,required:!1},{name:`correctionOfId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:ServiceTimeEntry`},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/servicetimeentries`},{method:`GET`,path:`/servicetimeentries/[id]`},{method:`POST`,path:`/servicetimeentries/forCase`},{method:`POST`,path:`/servicetimeentries/forSpecialist`},{method:`POST`,path:`/servicetimeentries/pendingApproval`}],mcp:[{operation:`get`,name:`servicetimeentry_get`},{operation:`list`,name:`servicetimeentry_list`},{operation:`forCase`,name:`servicetimeentrycollection_forcase`},{operation:`forSpecialist`,name:`servicetimeentrycollection_forspecialist`},{operation:`pendingApproval`,name:`servicetimeentrycollection_pendingapproval`}],cli:[{operation:`get`,name:`servicetimeentry_get`},{operation:`list`,name:`servicetimeentry_list`},{operation:`forCase`,name:`servicetimeentrycollection_forCase`},{operation:`forSpecialist`,name:`servicetimeentrycollection_forSpecialist`},{operation:`pendingApproval`,name:`servicetimeentrycollection_pendingApproval`}],methods:[{name:`durationHours`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`durationHoursExact`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<ServiceTimeEntry[]>`,aiCallable:!0},{name:`forSpecialist`,async:!0,parameters:[`specialistId: string`],returnType:`Promise<ServiceTimeEntry[]>`,aiCallable:!0},{name:`getEvidence`,async:!1,parameters:[],returnType:`ServiceEvidence[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`pendingApproval`,async:!0,parameters:[],returnType:`Promise<ServiceTimeEntry[]>`,aiCallable:!0},{name:`requireDurationSeconds`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setEvidence`,async:!1,parameters:[`value: ServiceEvidence[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:ServiceTimeEntry`,`@happyvertical/smrt-support:SupportCase`,`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportAiRun`,name:`SupportAiRun`,collection:`supportairuns`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`interactionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportInteraction`},{name:`phase`,type:`text`,required:!1,enum:[`acknowledge`,`classify`,`answer`,`troubleshoot`,`resolve`]},{name:`outcome`,type:`text`,required:!1,enum:[`completed`,`skipped`,`failed`,`handed_off`]},{name:`confidence`,type:`decimal`,required:!1},{name:`classification`,type:`text`,required:!1},{name:`responseInteractionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportInteraction`},{name:`knowledgeRefs`,type:`text`,required:!1},{name:`toolCalls`,type:`text`,required:!1},{name:`error`,type:`text`,required:!1},{name:`correlationId`,type:`text`,required:!1},{name:`model`,type:`text`,required:!1},{name:`startedAt`,type:`datetime`,required:!1},{name:`completedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportairuns`},{method:`GET`,path:`/supportairuns/[id]`},{method:`POST`,path:`/supportairuns/forCase`}],mcp:[{operation:`get`,name:`supportairun_get`},{operation:`list`,name:`supportairun_list`},{operation:`forCase`,name:`supportairuncollection_forcase`}],cli:[{operation:`get`,name:`supportairun_get`},{operation:`list`,name:`supportairun_list`},{operation:`forCase`,name:`supportairuncollection_forCase`}],methods:[{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportAiRun[]>`,aiCallable:!0},{name:`getClassification`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getKnowledgeRefs`,async:!1,parameters:[],returnType:`Array<Record<string, unknown>>`,aiCallable:!1},{name:`getToolCalls`,async:!1,parameters:[],returnType:`Array<Record<string, unknown>>`,aiCallable:!1},{name:`setClassification`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setKnowledgeRefs`,async:!1,parameters:[`refs: Array<Record<string, unknown>>`],returnType:`void`,aiCallable:!1},{name:`setToolCalls`,async:!1,parameters:[`calls: Array<Record<string, unknown>>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportCase`,`@happyvertical/smrt-support:SupportInteraction`],exposed:!0},{id:`@happyvertical/smrt-support:SupportAvailability`,name:`SupportAvailability`,collection:`supportavailabilities`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`specialistId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`kind`,type:`text`,required:!1,enum:[`weekly`,`on_call`,`time_off`]},{name:`weekday`,type:`integer`,required:!1},{name:`startMinute`,type:`integer`,required:!1,default:0},{name:`endMinute`,type:`integer`,required:!1,default:0},{name:`startsAt`,type:`datetime`,required:!1},{name:`endsAt`,type:`datetime`,required:!1},{name:`notes`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportavailabilities`},{method:`GET`,path:`/supportavailabilities/[id]`},{method:`POST`,path:`/supportavailabilities`},{method:`PATCH`,path:`/supportavailabilities/[id]`},{method:`DELETE`,path:`/supportavailabilities/[id]`},{method:`POST`,path:`/supportavailabilities/forSpecialist`}],mcp:[{operation:`get`,name:`supportavailability_get`},{operation:`list`,name:`supportavailability_list`},{operation:`forSpecialist`,name:`supportavailabilitycollection_forspecialist`}],cli:[{operation:`get`,name:`supportavailability_get`},{operation:`list`,name:`supportavailability_list`},{operation:`forSpecialist`,name:`supportavailabilitycollection_forSpecialist`}],methods:[{name:`forSpecialist`,async:!0,parameters:[`specialistId: string`],returnType:`Promise<SupportAvailability[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportCase`,name:`SupportCase`,collection:`supportcases`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseNumber`,type:`text`,required:!1},{name:`subject`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`new`,`triaged`,`assigned`,`in_progress`,`waiting_on_client`,`escalated`,`resolved`,`closed`]},{name:`priority`,type:`text`,required:!1},{name:`severity`,type:`text`,required:!1},{name:`category`,type:`text`,required:!1},{name:`sensitive`,type:`boolean`,required:!1},{name:`channelKind`,type:`text`,required:!1},{name:`clientProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`openedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`projectId`,type:`text`,required:!1},{name:`bindingId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportChannelBinding`},{name:`threadKey`,type:`text`,required:!1},{name:`planId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportPlan`},{name:`planSnapshot`,type:`text`,required:!1},{name:`assignedSpecialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`assignedAt`,type:`datetime`,required:!1},{name:`preferredSpecialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`escalationLevel`,type:`integer`,required:!1,default:0},{name:`escalatedAt`,type:`datetime`,required:!1},{name:`acknowledgedAt`,type:`datetime`,required:!1},{name:`firstRespondedAt`,type:`datetime`,required:!1},{name:`humanRequestedAt`,type:`datetime`,required:!1},{name:`resolvedAt`,type:`datetime`,required:!1},{name:`resolvedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`resolutionKind`,type:`text`,required:!1},{name:`resolutionSummary`,type:`text`,required:!1},{name:`closedAt`,type:`datetime`,required:!1},{name:`reopenCount`,type:`integer`,required:!1,default:0},{name:`lastReopenedAt`,type:`datetime`,required:!1},{name:`aiEnabled`,type:`boolean`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportcases`},{method:`GET`,path:`/supportcases/[id]`},{method:`POST`,path:`/supportcases/findOpenByThreadKey`},{method:`POST`,path:`/supportcases/findQueue`}],mcp:[{operation:`get`,name:`supportcase_get`},{operation:`list`,name:`supportcase_list`},{operation:`findOpenByThreadKey`,name:`supportcasecollection_findopenbythreadkey`},{operation:`findQueue`,name:`supportcasecollection_findqueue`}],cli:[{operation:`get`,name:`supportcase_get`},{operation:`list`,name:`supportcase_list`},{operation:`findOpenByThreadKey`,name:`supportcasecollection_findOpenByThreadKey`},{operation:`findQueue`,name:`supportcasecollection_findQueue`}],methods:[{name:`attemptTriageDecision`,async:!0,parameters:[`request: DecisionRequest`],returnType:`Promise<DecisionResult | undefined>`,aiCallable:!1},{name:`findOpenByThreadKey`,async:!0,parameters:[`threadKey: string`,`options?: object`],returnType:`Promise<SupportCase | null>`,aiCallable:!0},{name:`findQueue`,async:!0,parameters:[`options?: object`],returnType:`Promise<SupportCase[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPlanSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isOpen`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setPlanSnapshot`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:SupportChannelBinding`,`@happyvertical/smrt-support:SupportPlan`,`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportCaseEvent`,name:`SupportCaseEvent`,collection:`supportcaseevents`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`eventType`,type:`text`,required:!1,enum:[`created`,`interaction`,`transition`,`assignment`,`ai_run`,`handoff`,`human_requested`,`escalation`,`target_scheduled`,`target_satisfied`,`target_breached`,`target_paused`,`target_resumed`,`work_linked`,`reopened`,`plan_applied`,`time_recorded`,`note`]},{name:`actorKind`,type:`text`,required:!1,enum:[`client`,`specialist`,`agent`,`system`]},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`occurredAt`,type:`datetime`,required:!1},{name:`summary`,type:`text`,required:!1},{name:`payload`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportcaseevents`},{method:`GET`,path:`/supportcaseevents/[id]`},{method:`POST`,path:`/supportcaseevents/forCase`}],mcp:[{operation:`get`,name:`supportcaseevent_get`},{operation:`list`,name:`supportcaseevent_list`},{operation:`forCase`,name:`supportcaseeventcollection_forcase`}],cli:[{operation:`get`,name:`supportcaseevent_get`},{operation:`list`,name:`supportcaseevent_list`},{operation:`forCase`,name:`supportcaseeventcollection_forCase`}],methods:[{name:`forCase`,async:!0,parameters:[`caseId: string`,`options?: object`],returnType:`Promise<SupportCaseEvent[]>`,aiCallable:!0},{name:`getPayload`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setPayload`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:SupportCase`],exposed:!0},{id:`@happyvertical/smrt-support:SupportChannelBinding`,name:`SupportChannelBinding`,collection:`supportchannelbindings`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`bindingKind`,type:`text`,required:!1,enum:[`chat_room`,`email_account`]},{name:`channelKind`,type:`text`,required:!1,enum:[`chat`,`email`,`phone`,`voice`,`web`,`api`]},{name:`targetType`,type:`text`,required:!1},{name:`targetId`,type:`text`,required:!1},{name:`clientProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`projectId`,type:`text`,required:!1},{name:`planId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportPlan`},{name:`enabled`,type:`boolean`,required:!1},{name:`selfAddresses`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportchannelbindings`},{method:`GET`,path:`/supportchannelbindings/[id]`},{method:`POST`,path:`/supportchannelbindings`},{method:`PATCH`,path:`/supportchannelbindings/[id]`},{method:`DELETE`,path:`/supportchannelbindings/[id]`},{method:`POST`,path:`/supportchannelbindings/findForTarget`}],mcp:[{operation:`get`,name:`supportchannelbinding_get`},{operation:`list`,name:`supportchannelbinding_list`},{operation:`findForTarget`,name:`supportchannelbindingcollection_findfortarget`}],cli:[{operation:`get`,name:`supportchannelbinding_get`},{operation:`list`,name:`supportchannelbinding_list`},{operation:`findForTarget`,name:`supportchannelbindingcollection_findForTarget`}],methods:[{name:`findForTarget`,async:!0,parameters:[`targetType: string`,`targetId: string`],returnType:`Promise<SupportChannelBinding | null>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSelfAddresses`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setSelfAddresses`,async:!1,parameters:[`addresses: string[]`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:SupportPlan`],exposed:!0},{id:`@happyvertical/smrt-support:SupportCharge`,name:`SupportCharge`,collection:`supportcharges`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`timeEntryId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:ServiceTimeEntry`},{name:`caseId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportCase`},{name:`planId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportPlan`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`billableSeconds`,type:`integer`,required:!1,default:0},{name:`includedSecondsApplied`,type:`integer`,required:!1,default:0},{name:`rateSnapshot`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`pending`,`final`,`corrected`,`voided`]},{name:`finalizedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportcharges`},{method:`GET`,path:`/supportcharges/[id]`},{method:`POST`,path:`/supportcharges/forTimeEntry`},{method:`POST`,path:`/supportcharges/forCase`}],mcp:[{operation:`get`,name:`supportcharge_get`},{operation:`list`,name:`supportcharge_list`},{operation:`forCase`,name:`supportchargecollection_forcase`},{operation:`forTimeEntry`,name:`supportchargecollection_fortimeentry`}],cli:[{operation:`get`,name:`supportcharge_get`},{operation:`list`,name:`supportcharge_list`},{operation:`forCase`,name:`supportchargecollection_forCase`},{operation:`forTimeEntry`,name:`supportchargecollection_forTimeEntry`}],methods:[{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportCharge[]>`,aiCallable:!0},{name:`forTimeEntry`,async:!0,parameters:[`timeEntryId: string`],returnType:`Promise<SupportCharge | null>`,aiCallable:!0},{name:`getRateSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setRateSnapshot`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:ServiceTimeEntry`,`@happyvertical/smrt-support:SupportCase`,`@happyvertical/smrt-support:SupportPlan`],exposed:!0},{id:`@happyvertical/smrt-support:SupportCompensation`,name:`SupportCompensation`,collection:`supportcompensations`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`timeEntryId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:ServiceTimeEntry`},{name:`specialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`compensationPlanId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportCompensationPlan`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`payableSeconds`,type:`integer`,required:!1,default:0},{name:`rateSnapshot`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`pending`,`final`,`corrected`,`voided`]},{name:`finalizedAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportcompensations`},{method:`GET`,path:`/supportcompensations/[id]`},{method:`POST`,path:`/supportcompensations/forTimeEntry`},{method:`POST`,path:`/supportcompensations/forSpecialist`}],mcp:[{operation:`get`,name:`supportcompensation_get`},{operation:`list`,name:`supportcompensation_list`},{operation:`forSpecialist`,name:`supportcompensationcollection_forspecialist`},{operation:`forTimeEntry`,name:`supportcompensationcollection_fortimeentry`}],cli:[{operation:`get`,name:`supportcompensation_get`},{operation:`list`,name:`supportcompensation_list`},{operation:`forSpecialist`,name:`supportcompensationcollection_forSpecialist`},{operation:`forTimeEntry`,name:`supportcompensationcollection_forTimeEntry`}],methods:[{name:`forSpecialist`,async:!0,parameters:[`specialistId: string`],returnType:`Promise<SupportCompensation[]>`,aiCallable:!0},{name:`forTimeEntry`,async:!0,parameters:[`timeEntryId: string`],returnType:`Promise<SupportCompensation | null>`,aiCallable:!0},{name:`getRateSnapshot`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setRateSnapshot`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:ServiceTimeEntry`,`@happyvertical/smrt-support:SupportCompensationPlan`,`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportCompensationPlan`,name:`SupportCompensationPlan`,collection:`supportcompensationplans`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`specialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`name`,type:`text`,required:!1,default:``},{name:`hourlyRate`,type:`decimal`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1},{name:`terms`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportcompensationplans`},{method:`GET`,path:`/supportcompensationplans/[id]`},{method:`POST`,path:`/supportcompensationplans/resolveForSpecialist`}],mcp:[{operation:`get`,name:`supportcompensationplan_get`},{operation:`list`,name:`supportcompensationplan_list`},{operation:`resolveForSpecialist`,name:`supportcompensationplancollection_resolveforspecialist`}],cli:[{operation:`get`,name:`supportcompensationplan_get`},{operation:`list`,name:`supportcompensationplan_list`},{operation:`resolveForSpecialist`,name:`supportcompensationplancollection_resolveForSpecialist`}],methods:[{name:`getTerms`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isEffectiveAt`,async:!1,parameters:[`at?: Date`],returnType:`boolean`,aiCallable:!1},{name:`resolveForSpecialist`,async:!0,parameters:[`specialistId: string`,`at?: Date`,`options?: object`],returnType:`Promise<SupportCompensationPlan | null>`,aiCallable:!0},{name:`setTerms`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportEscalation`,name:`SupportEscalation`,collection:`supportescalations`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`level`,type:`integer`,required:!1,default:1},{name:`reason`,type:`text`,required:!1,enum:[`target_breach`,`target_risk`,`manual`,`ai_trigger`]},{name:`targetId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportServiceTarget`},{name:`targetType`,type:`text`,required:!1},{name:`action`,type:`text`,required:!1},{name:`fromSpecialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`toSpecialistId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`notifiedProfileIds`,type:`text`,required:!1},{name:`occurredAt`,type:`datetime`,required:!1},{name:`note`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportescalations`},{method:`GET`,path:`/supportescalations/[id]`},{method:`POST`,path:`/supportescalations/forCase`}],mcp:[{operation:`get`,name:`supportescalation_get`},{operation:`list`,name:`supportescalation_list`},{operation:`forCase`,name:`supportescalationcollection_forcase`}],cli:[{operation:`get`,name:`supportescalation_get`},{operation:`list`,name:`supportescalation_list`},{operation:`forCase`,name:`supportescalationcollection_forCase`}],methods:[{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportEscalation[]>`,aiCallable:!0},{name:`getNotifiedProfileIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`setNotifiedProfileIds`,async:!1,parameters:[`ids: string[]`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportCase`,`@happyvertical/smrt-support:SupportServiceTarget`,`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportInteraction`,name:`SupportInteraction`,collection:`supportinteractions`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`direction`,type:`text`,required:!1,enum:[`inbound`,`outbound`,`internal`]},{name:`channelKind`,type:`text`,required:!1,enum:[`chat`,`email`,`phone`,`voice`,`web`,`api`]},{name:`actorKind`,type:`text`,required:!1,enum:[`client`,`specialist`,`agent`,`system`]},{name:`authorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`occurredAt`,type:`datetime`,required:!1},{name:`body`,type:`text`,required:!1},{name:`sourceType`,type:`text`,required:!1},{name:`sourceId`,type:`text`,required:!1},{name:`sourceKey`,type:`text`,required:!1},{name:`rfcMessageId`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportinteractions`},{method:`GET`,path:`/supportinteractions/[id]`},{method:`POST`,path:`/supportinteractions/forCase`},{method:`POST`,path:`/supportinteractions/bySourceKey`},{method:`POST`,path:`/supportinteractions/byRfcMessageId`}],mcp:[{operation:`get`,name:`supportinteraction_get`},{operation:`list`,name:`supportinteraction_list`},{operation:`byRfcMessageId`,name:`supportinteractioncollection_byrfcmessageid`},{operation:`bySourceKey`,name:`supportinteractioncollection_bysourcekey`},{operation:`forCase`,name:`supportinteractioncollection_forcase`}],cli:[{operation:`get`,name:`supportinteraction_get`},{operation:`list`,name:`supportinteraction_list`},{operation:`byRfcMessageId`,name:`supportinteractioncollection_byRfcMessageId`},{operation:`bySourceKey`,name:`supportinteractioncollection_bySourceKey`},{operation:`forCase`,name:`supportinteractioncollection_forCase`}],methods:[{name:`byRfcMessageId`,async:!0,parameters:[`rfcMessageId: string`],returnType:`Promise<SupportInteraction | null>`,aiCallable:!0},{name:`bySourceKey`,async:!0,parameters:[`sourceKey: string`],returnType:`Promise<SupportInteraction | null>`,aiCallable:!0},{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportInteraction[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:SupportCase`],exposed:!0},{id:`@happyvertical/smrt-support:SupportPlan`,name:`SupportPlan`,collection:`supportplans`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`planKey`,type:`text`,required:!1},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`channels`,type:`text`,required:!1},{name:`timezone`,type:`text`,required:!1},{name:`coverage`,type:`text`,required:!1},{name:`holidays`,type:`text`,required:!1},{name:`severityDefinitions`,type:`text`,required:!1},{name:`targets`,type:`text`,required:!1},{name:`pauseStatuses`,type:`text`,required:!1},{name:`escalationPolicy`,type:`text`,required:!1},{name:`availabilityFeeAmount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`includedMinutes`,type:`integer`,required:!1,default:0},{name:`overageHourlyRate`,type:`decimal`,required:!1,default:0},{name:`onCallHourlyRate`,type:`decimal`,required:!1,default:0},{name:`timeApprovalPolicy`,type:`text`,required:!1},{name:`subscriptionPlanKey`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportplans`},{method:`GET`,path:`/supportplans/[id]`},{method:`POST`,path:`/supportplans/byPlanKey`}],mcp:[{operation:`get`,name:`supportplan_get`},{operation:`list`,name:`supportplan_list`},{operation:`byPlanKey`,name:`supportplancollection_byplankey`}],cli:[{operation:`get`,name:`supportplan_get`},{operation:`list`,name:`supportplan_list`},{operation:`byPlanKey`,name:`supportplancollection_byPlanKey`}],methods:[{name:`byPlanKey`,async:!0,parameters:[`planKey: string`],returnType:`Promise<SupportPlan | null>`,aiCallable:!0},{name:`getChannels`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCoverage`,async:!1,parameters:[],returnType:`CoverageWindow[]`,aiCallable:!1},{name:`getEscalationPolicy`,async:!1,parameters:[],returnType:`EscalationStep[]`,aiCallable:!1},{name:`getHolidays`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getPauseStatuses`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getSeverityDefinitions`,async:!1,parameters:[],returnType:`Record<string, SeverityDefinition>`,aiCallable:!1},{name:`getTargets`,async:!1,parameters:[],returnType:`Record<string, Partial<ServiceTargetMinutes>>`,aiCallable:!1},{name:`getTimeApprovalPolicy`,async:!1,parameters:[],returnType:`TimeApprovalPolicy`,aiCallable:!1},{name:`setChannels`,async:!1,parameters:[`channels: string[]`],returnType:`void`,aiCallable:!1},{name:`setCoverage`,async:!1,parameters:[`windows: CoverageWindow[]`],returnType:`void`,aiCallable:!1},{name:`setEscalationPolicy`,async:!1,parameters:[`steps: EscalationStep[]`],returnType:`void`,aiCallable:!1},{name:`setHolidays`,async:!1,parameters:[`dates: string[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setPauseStatuses`,async:!1,parameters:[`statuses: string[]`],returnType:`void`,aiCallable:!1},{name:`setSeverityDefinitions`,async:!1,parameters:[`defs: Record<string, SeverityDefinition>`],returnType:`void`,aiCallable:!1},{name:`setTargets`,async:!1,parameters:[`targets: Record<string, Partial<ServiceTargetMinutes>>`],returnType:`void`,aiCallable:!1},{name:`setTimeApprovalPolicy`,async:!1,parameters:[`policy: TimeApprovalPolicy`],returnType:`void`,aiCallable:!1},{name:`snapshotTerms`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`targetsForSeverity`,async:!1,parameters:[`severity: string`],returnType:`ServiceTargetMinutes`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-support:SupportPolicy`,name:`SupportPolicy`,collection:`supportpolicies`,display:{label:`name`},fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`planId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-support:SupportPlan`},{name:`projectId`,type:`text`,required:!1},{name:`enabled`,type:`boolean`,required:!1},{name:`autoAcknowledge`,type:`boolean`,required:!1},{name:`autoClassify`,type:`boolean`,required:!1},{name:`autoAnswer`,type:`boolean`,required:!1},{name:`autoTroubleshoot`,type:`boolean`,required:!1},{name:`autoResolve`,type:`boolean`,required:!1},{name:`autoResolveMaxSeverity`,type:`text`,required:!1},{name:`confidenceThreshold`,type:`decimal`,required:!1,default:.7},{name:`maxAutoAttempts`,type:`integer`,required:!1,default:1},{name:`autoSendEmailReplies`,type:`boolean`,required:!1},{name:`sensitiveCategories`,type:`text`,required:!1},{name:`allowedCategories`,type:`text`,required:!1},{name:`allowedTools`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportpolicies`},{method:`GET`,path:`/supportpolicies/[id]`},{method:`POST`,path:`/supportpolicies`},{method:`PATCH`,path:`/supportpolicies/[id]`},{method:`DELETE`,path:`/supportpolicies/[id]`},{method:`POST`,path:`/supportpolicies/resolveForScope`}],mcp:[{operation:`get`,name:`supportpolicy_get`},{operation:`list`,name:`supportpolicy_list`},{operation:`resolveForScope`,name:`supportpolicycollection_resolveforscope`}],cli:[{operation:`get`,name:`supportpolicy_get`},{operation:`list`,name:`supportpolicy_list`},{operation:`resolveForScope`,name:`supportpolicycollection_resolveForScope`}],methods:[{name:`getAllowedCategories`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAllowedTools`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSensitiveCategories`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`resolveForScope`,async:!0,parameters:[`options: object`],returnType:`Promise<SupportPolicy | null>`,aiCallable:!0},{name:`scopeRank`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`setAllowedCategories`,async:!1,parameters:[`categories: string[]`],returnType:`void`,aiCallable:!1},{name:`setAllowedTools`,async:!1,parameters:[`tools: string[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setSensitiveCategories`,async:!1,parameters:[`categories: string[]`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportPlan`],exposed:!0},{id:`@happyvertical/smrt-support:SupportQualification`,name:`SupportQualification`,collection:`supportqualifications`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`specialistId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportSpecialist`},{name:`projectId`,type:`text`,required:!1},{name:`level`,type:`text`,required:!1,enum:[`trainee`,`qualified`,`expert`]},{name:`effectiveFrom`,type:`datetime`,required:!1},{name:`effectiveTo`,type:`datetime`,required:!1},{name:`grantedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`notes`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportqualifications`},{method:`GET`,path:`/supportqualifications/[id]`},{method:`POST`,path:`/supportqualifications`},{method:`PATCH`,path:`/supportqualifications/[id]`},{method:`DELETE`,path:`/supportqualifications/[id]`},{method:`POST`,path:`/supportqualifications/forSpecialist`},{method:`POST`,path:`/supportqualifications/forProject`}],mcp:[{operation:`get`,name:`supportqualification_get`},{operation:`list`,name:`supportqualification_list`},{operation:`forProject`,name:`supportqualificationcollection_forproject`},{operation:`forSpecialist`,name:`supportqualificationcollection_forspecialist`}],cli:[{operation:`get`,name:`supportqualification_get`},{operation:`list`,name:`supportqualification_list`},{operation:`forProject`,name:`supportqualificationcollection_forProject`},{operation:`forSpecialist`,name:`supportqualificationcollection_forSpecialist`}],methods:[{name:`forProject`,async:!0,parameters:[`projectId: string`],returnType:`Promise<SupportQualification[]>`,aiCallable:!0},{name:`forSpecialist`,async:!0,parameters:[`specialistId: string`],returnType:`Promise<SupportQualification[]>`,aiCallable:!0},{name:`isEffectiveAt`,async:!1,parameters:[`at?: Date`],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-support:SupportSpecialist`],exposed:!0},{id:`@happyvertical/smrt-support:SupportServiceTarget`,name:`SupportServiceTarget`,collection:`supportservicetargets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`targetType`,type:`text`,required:!1,enum:[`acknowledgement`,`response`,`update`,`resolution`]},{name:`cycle`,type:`integer`,required:!1,default:0},{name:`severity`,type:`text`,required:!1},{name:`baseMinutes`,type:`integer`,required:!1,default:0},{name:`startedAt`,type:`datetime`,required:!1},{name:`dueAt`,type:`datetime`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`pending`,`paused`,`satisfied`,`breached`,`cancelled`]},{name:`pausedAt`,type:`datetime`,required:!1},{name:`pausedTotalSeconds`,type:`integer`,required:!1,default:0},{name:`satisfiedAt`,type:`datetime`,required:!1},{name:`breachedAt`,type:`datetime`,required:!1},{name:`cancelledAt`,type:`datetime`,required:!1},{name:`escalationJobId`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportservicetargets`},{method:`GET`,path:`/supportservicetargets/[id]`},{method:`POST`,path:`/supportservicetargets/forCase`},{method:`POST`,path:`/supportservicetargets/activeTarget`}],mcp:[{operation:`get`,name:`supportservicetarget_get`},{operation:`list`,name:`supportservicetarget_list`},{operation:`activeTarget`,name:`supportservicetargetcollection_activetarget`},{operation:`forCase`,name:`supportservicetargetcollection_forcase`}],cli:[{operation:`get`,name:`supportservicetarget_get`},{operation:`list`,name:`supportservicetarget_list`},{operation:`activeTarget`,name:`supportservicetargetcollection_activeTarget`},{operation:`forCase`,name:`supportservicetargetcollection_forCase`}],methods:[{name:`activeTarget`,async:!0,parameters:[`caseId: string`,`targetType: ServiceTargetType`],returnType:`Promise<SupportServiceTarget | null>`,aiCallable:!0},{name:`checkAndEscalate`,async:!0,parameters:[`args?: Record<string, unknown>`,`_context?: unknown`],returnType:`Promise<CheckAndEscalateResult>`,aiCallable:!1},{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportServiceTarget[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isRunning`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportCase`],exposed:!0},{id:`@happyvertical/smrt-support:SupportSpecialist`,name:`SupportSpecialist`,collection:`supportspecialists`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-profiles:Profile`},{name:`displayName`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`active`,`inactive`]},{name:`languages`,type:`text`,required:!1},{name:`timezone`,type:`text`,required:!1},{name:`maxConcurrentCases`,type:`integer`,required:!1,default:10},{name:`onCallPriority`,type:`integer`,required:!1,default:0},{name:`notes`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportspecialists`},{method:`GET`,path:`/supportspecialists/[id]`},{method:`POST`,path:`/supportspecialists`},{method:`PATCH`,path:`/supportspecialists/[id]`},{method:`DELETE`,path:`/supportspecialists/[id]`},{method:`POST`,path:`/supportspecialists/findActive`},{method:`POST`,path:`/supportspecialists/byProfile`}],mcp:[{operation:`get`,name:`supportspecialist_get`},{operation:`list`,name:`supportspecialist_list`},{operation:`byProfile`,name:`supportspecialistcollection_byprofile`},{operation:`findActive`,name:`supportspecialistcollection_findactive`}],cli:[{operation:`get`,name:`supportspecialist_get`},{operation:`list`,name:`supportspecialist_list`},{operation:`byProfile`,name:`supportspecialistcollection_byProfile`},{operation:`findActive`,name:`supportspecialistcollection_findActive`}],methods:[{name:`byProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<SupportSpecialist | null>`,aiCallable:!0},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<SupportSpecialist[]>`,aiCallable:!0},{name:`getLanguages`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setLanguages`,async:!1,parameters:[`languages: string[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-support:SupportWorkLink`,name:`SupportWorkLink`,collection:`supportworklinks`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`caseId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-support:SupportCase`},{name:`linkKind`,type:`text`,required:!1,enum:[`support_work_item`,`development_work_item`]},{name:`targetType`,type:`text`,required:!1},{name:`targetId`,type:`text`,required:!1},{name:`targetLabel`,type:`text`,required:!1},{name:`externalUrl`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`lastStatusAt`,type:`datetime`,required:!1},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/supportworklinks`},{method:`GET`,path:`/supportworklinks/[id]`},{method:`POST`,path:`/supportworklinks/forCase`}],mcp:[{operation:`get`,name:`supportworklink_get`},{operation:`list`,name:`supportworklink_list`},{operation:`forCase`,name:`supportworklinkcollection_forcase`}],cli:[{operation:`get`,name:`supportworklink_get`},{operation:`list`,name:`supportworklink_list`},{operation:`forCase`,name:`supportworklinkcollection_forCase`}],methods:[{name:`forCase`,async:!0,parameters:[`caseId: string`],returnType:`Promise<SupportWorkLink[]>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-support:SupportCase`],exposed:!0}],dependencies:[`chat`,`messages`,`profiles`,`projects`,`timesheets`,`users`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`core migrations (node:os)`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-chat`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-projects`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-subscriptions`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-timesheets`,`@happyvertical/smrt-users`]}},{id:`tags`,packageName:`@happyvertical/smrt-tags`,version:`0.55.11`,description:`Reusable tagging system with hierarchies, contexts, and multi-language support for SMRT framework`,models:[{id:`@happyvertical/smrt-tags:Tag`,name:`Tag`,collection:`tags`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`parentId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-tags:Tag`},{name:`name`,type:`text`,required:!0,default:``,description:`The name people see when they pick or browse tags.`},{name:`level`,type:`integer`,required:!1,default:0},{name:`description`,type:`text`,required:!1,default:``,description:`A short note on what belongs under this tag.`},{name:`metadata`,type:`text`,required:!1,default:``,description:`Extra details about the tag, saved as named items.`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0},{name:`updatedAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/tags`},{method:`GET`,path:`/tags/[id]`},{method:`POST`,path:`/tags`},{method:`PATCH`,path:`/tags/[id]`},{method:`DELETE`,path:`/tags/[id]`},{method:`POST`,path:`/tags/getOrCreate`},{method:`POST`,path:`/tags/listByContext`},{method:`POST`,path:`/tags/getRootTags`},{method:`POST`,path:`/tags/getChildren`},{method:`POST`,path:`/tags/getHierarchy`},{method:`POST`,path:`/tags/moveTag`},{method:`POST`,path:`/tags/mergeTag`},{method:`POST`,path:`/tags/cleanupUnused`},{method:`POST`,path:`/tags/calculateLevel`},{method:`POST`,path:`/tags/findByTenant`},{method:`POST`,path:`/tags/findGlobal`},{method:`POST`,path:`/tags/findWithGlobals`}],mcp:[{operation:`create`,name:`tag_create`},{operation:`get`,name:`tag_get`},{operation:`list`,name:`tag_list`},{operation:`update`,name:`tag_update`},{operation:`calculateLevel`,name:`tagcollection_calculatelevel`},{operation:`cleanupUnused`,name:`tagcollection_cleanupunused`},{operation:`findByTenant`,name:`tagcollection_findbytenant`},{operation:`findGlobal`,name:`tagcollection_findglobal`},{operation:`findWithGlobals`,name:`tagcollection_findwithglobals`},{operation:`getChildren`,name:`tagcollection_getchildren`},{operation:`getHierarchy`,name:`tagcollection_gethierarchy`},{operation:`getOrCreate`,name:`tagcollection_getorcreate`},{operation:`getRootTags`,name:`tagcollection_getroottags`},{operation:`listByContext`,name:`tagcollection_listbycontext`},{operation:`mergeTag`,name:`tagcollection_mergetag`},{operation:`moveTag`,name:`tagcollection_movetag`}],cli:[{operation:`create`,name:`tag_create`},{operation:`delete`,name:`tag_delete`},{operation:`get`,name:`tag_get`},{operation:`getAncestors`,name:`tag_getAncestors`},{operation:`getBySlug`,name:`tag_getBySlug`},{operation:`getChildren`,name:`tag_getChildren`},{operation:`getDescendants`,name:`tag_getDescendants`},{operation:`getHierarchy`,name:`tag_getHierarchy`},{operation:`getMetadata`,name:`tag_getMetadata`},{operation:`getParent`,name:`tag_getParent`},{operation:`getRootTags`,name:`tag_getRootTags`},{operation:`list`,name:`tag_list`},{operation:`moveTo`,name:`tag_moveTo`},{operation:`setMetadata`,name:`tag_setMetadata`},{operation:`update`,name:`tag_update`},{operation:`updateMetadata`,name:`tag_updateMetadata`},{operation:`calculateLevel`,name:`tagcollection_calculateLevel`},{operation:`cleanupUnused`,name:`tagcollection_cleanupUnused`},{operation:`findByTenant`,name:`tagcollection_findByTenant`},{operation:`findGlobal`,name:`tagcollection_findGlobal`},{operation:`findWithGlobals`,name:`tagcollection_findWithGlobals`},{operation:`getChildren`,name:`tagcollection_getChildren`},{operation:`getHierarchy`,name:`tagcollection_getHierarchy`},{operation:`getOrCreate`,name:`tagcollection_getOrCreate`},{operation:`getRootTags`,name:`tagcollection_getRootTags`},{operation:`listByContext`,name:`tagcollection_listByContext`},{operation:`mergeTag`,name:`tagcollection_mergeTag`},{operation:`moveTag`,name:`tagcollection_moveTag`}],methods:[{name:`calculateLevel`,async:!0,parameters:[`parentSlug: string | null`,`context?: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`cleanupUnused`,async:!0,parameters:[`context?: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tag[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tag[]>`,aiCallable:!0},{name:`getAncestors`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getChildren`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!0},{name:`getDescendants`,async:!0,parameters:[],returnType:`Promise<this[]>`,aiCallable:!1},{name:`getHierarchy`,async:!0,parameters:[],returnType:`Promise<HierarchyView<this>>`,aiCallable:!0},{name:`getMetadata`,async:!1,parameters:[],returnType:`TagMetadata`,aiCallable:!1},{name:`getOrCreate`,async:!0,parameters:[`slug: string`,`context?: string`],returnType:`Promise<Tag>`,aiCallable:!0},{name:`getParent`,async:!0,parameters:[],returnType:`Promise<this | null>`,aiCallable:!1},{name:`getRootTags`,async:!0,parameters:[`context?: string`],returnType:`Promise<Tag[]>`,aiCallable:!0},{name:`listByContext`,async:!0,parameters:[`context: string`,`parentSlug?: string | null`],returnType:`Promise<Tag[]>`,aiCallable:!0},{name:`mergeTag`,async:!0,parameters:[`fromSlug: string`,`toSlug: string`,`context?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`moveTag`,async:!0,parameters:[`slug: string`,`newParentSlug: string | null`,`context?: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`moveTo`,async:!0,parameters:[`newParent: this | string | null`],returnType:`Promise<void>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`data: TagMetadata`],returnType:`void`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`updates: Partial<TagMetadata>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-tags:Tag`],exposed:!0},{id:`@happyvertical/smrt-tags:TagAlias`,name:`TagAlias`,collection:`tagaliases`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tagSlug`,type:`text`,required:!1,default:``,description:`The tag this alternative name points to.`},{name:`alias`,type:`text`,required:!0,default:``,description:`Another name or a translation people may use for the tag.`},{name:`language`,type:`text`,required:!1,default:``,description:`The two-letter language code of the alternative name.`},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`createdAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/tagaliases`},{method:`GET`,path:`/tagaliases/[id]`},{method:`POST`,path:`/tagaliases`},{method:`PATCH`,path:`/tagaliases/[id]`},{method:`DELETE`,path:`/tagaliases/[id]`},{method:`POST`,path:`/tagaliases/addAlias`},{method:`POST`,path:`/tagaliases/searchByAlias`},{method:`POST`,path:`/tagaliases/getAliasesForTag`},{method:`POST`,path:`/tagaliases/removeAlias`},{method:`POST`,path:`/tagaliases/bulkAddAliases`},{method:`POST`,path:`/tagaliases/getAliasesByLanguage`},{method:`POST`,path:`/tagaliases/findMatchingAliases`},{method:`POST`,path:`/tagaliases/findByTenant`},{method:`POST`,path:`/tagaliases/findGlobal`},{method:`POST`,path:`/tagaliases/findWithGlobals`}],mcp:[{operation:`create`,name:`tagalias_create`},{operation:`get`,name:`tagalias_get`},{operation:`list`,name:`tagalias_list`},{operation:`addAlias`,name:`tagaliascollection_addalias`},{operation:`bulkAddAliases`,name:`tagaliascollection_bulkaddaliases`},{operation:`findByTenant`,name:`tagaliascollection_findbytenant`},{operation:`findGlobal`,name:`tagaliascollection_findglobal`},{operation:`findMatchingAliases`,name:`tagaliascollection_findmatchingaliases`},{operation:`findWithGlobals`,name:`tagaliascollection_findwithglobals`},{operation:`getAliasesByLanguage`,name:`tagaliascollection_getaliasesbylanguage`},{operation:`getAliasesForTag`,name:`tagaliascollection_getaliasesfortag`},{operation:`removeAlias`,name:`tagaliascollection_removealias`},{operation:`searchByAlias`,name:`tagaliascollection_searchbyalias`}],cli:[{operation:`create`,name:`tagalias_create`},{operation:`delete`,name:`tagalias_delete`},{operation:`get`,name:`tagalias_get`},{operation:`getAliasesForTag`,name:`tagalias_getAliasesForTag`},{operation:`getTag`,name:`tagalias_getTag`},{operation:`list`,name:`tagalias_list`},{operation:`searchByAlias`,name:`tagalias_searchByAlias`},{operation:`update`,name:`tagalias_update`},{operation:`addAlias`,name:`tagaliascollection_addAlias`},{operation:`bulkAddAliases`,name:`tagaliascollection_bulkAddAliases`},{operation:`findByTenant`,name:`tagaliascollection_findByTenant`},{operation:`findGlobal`,name:`tagaliascollection_findGlobal`},{operation:`findMatchingAliases`,name:`tagaliascollection_findMatchingAliases`},{operation:`findWithGlobals`,name:`tagaliascollection_findWithGlobals`},{operation:`getAliasesByLanguage`,name:`tagaliascollection_getAliasesByLanguage`},{operation:`getAliasesForTag`,name:`tagaliascollection_getAliasesForTag`},{operation:`removeAlias`,name:`tagaliascollection_removeAlias`},{operation:`searchByAlias`,name:`tagaliascollection_searchByAlias`}],methods:[{name:`addAlias`,async:!0,parameters:[`tagSlug: string`,`alias: string`,`language?: string`,`context?: string`],returnType:`Promise<TagAlias>`,aiCallable:!0},{name:`bulkAddAliases`,async:!0,parameters:[`tagSlug: string`,`aliases: Array<object>`],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`findMatchingAliases`,async:!0,parameters:[`query: string`,`language?: string`],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`findWithGlobals`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`getAliasesByLanguage`,async:!0,parameters:[`tagSlug: string`],returnType:`Promise<Map<string, string[]>>`,aiCallable:!0},{name:`getAliasesForTag`,async:!0,parameters:[`tagSlug: string`,`language?: string`],returnType:`Promise<TagAlias[]>`,aiCallable:!0},{name:`getTag`,async:!0,parameters:[],returnType:`Promise<Tag | null>`,aiCallable:!1},{name:`removeAlias`,async:!0,parameters:[`aliasId: string`],returnType:`Promise<void>`,aiCallable:!0},{name:`searchByAlias`,async:!0,parameters:[`alias: string`,`language?: string`],returnType:`Promise<Tag[]>`,aiCallable:!0}],references:[],exposed:!0}],dependencies:[],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],via:[`@happyvertical/smrt-tenancy`]},recipes:[{id:`tags.taxonomy`,label:`Taxonomy`,summary:`Organise anything with a shared set of nested tags and alternative names.`,synonyms:[`tags`,`tagging`,`categories`,`labels`,`topics`],models:[`@happyvertical/smrt-tags:Tag`,`@happyvertical/smrt-tags:TagAlias`],nav:[{label:`Tags`,model:`@happyvertical/smrt-tags:Tag`,icon:`tag`,description:`The shared set of tags, including tags inside other tags.`},{label:`Alternative names`,model:`@happyvertical/smrt-tags:TagAlias`,icon:`book`,description:`Other names and translations that lead people to the same tag.`}],requires:[],section:{id:`taxonomy`,label:`Taxonomy`,icon:`tag`,description:`The tags people use to sort and find things.`},options:{"@happyvertical/smrt-tags:Tag":{fields:{name:{order:1},parentId:{label:`Parent tag`,help:`The broader tag this one sits under. Leave it empty for a top-level tag.`,order:2},description:{order:3},level:{visibility:`hidden`,locked:!0},metadata:{visibility:`advanced`}}},"@happyvertical/smrt-tags:TagAlias":{fields:{alias:{label:`Alternative name`,order:1},tagSlug:{label:`Tag`,order:2},language:{order:3}}}},help:{markdown:`## Overview
794
+
795
+ Taxonomy is a shared list of tags you can use to organise anything in your app.
796
+ Tags can sit inside other tags, so a broad tag such as "Events" can hold
797
+ narrower ones such as "Concerts" and "Workshops". A tag can also have
798
+ alternative names, including translations, so people find it by whichever word
799
+ they know.
800
+
801
+ ## Tasks
802
+
803
+ ### Add a tag
804
+
805
+ 1. Choose the **New** button above the list of tags.
806
+ 2. Give the tag a **{field:name}** people will recognise.
807
+ 3. Add a **{field:description}** that says what belongs under it.
808
+ 4. Save. The tag is now ready to use.
809
+
810
+ ### Put a tag inside another tag
811
+
812
+ 1. Open the tag from the list and choose Edit.
813
+ 2. Pick the **{field:parentId}**, the broader tag it belongs under.
814
+ 3. Leave it empty to make the tag a top-level tag.
815
+ 4. Save. Moving a tag moves everything under it too.
816
+
817
+ ### Add another name for a tag
818
+
819
+ 1. Open the list of alternative names and choose **New**.
820
+ 2. Pick the **{field:tagSlug}** the new name belongs to.
821
+ 3. Type the **{field:alias}**, for example a common nickname or a translation.
822
+ 4. Set the **{field:language}** if the name is in a specific language.
823
+ 5. Save. The alternative name is now on file for that tag.
824
+
825
+ ### Keep the list tidy
826
+
827
+ Keep one tag for each idea. If two tags mean the same thing, record the second
828
+ as an alternative name instead of keeping both.
829
+ `,fieldRefs:[`alias`,`description`,`language`,`name`,`parentId`,`tagSlug`]},demo:{mode:`server`,reasons:[`Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).`]}}]},{id:`timesheets`,packageName:`@happyvertical/smrt-timesheets`,version:`0.55.11`,description:`Shared time entries for the SMRT framework: who worked how long on what, approval and correction, with immutable charge and compensation snapshots`,models:[{id:`@happyvertical/smrt-timesheets:AttendanceBreak`,name:`AttendanceBreak`,collection:`attendancebreaks`,description:`A paid or unpaid break inside one attendance punch.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`punchId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-timesheets:AttendancePunch`},{name:`startedAt`,type:`datetime`,required:!1},{name:`endedAt`,type:`datetime`,required:!1},{name:`paid`,type:`boolean`,required:!0,default:!1},{name:`openSlot`,type:`text`,required:!0}],rest:[{method:`GET`,path:`/attendancebreaks`},{method:`GET`,path:`/attendancebreaks/[id]`}],mcp:[{operation:`get`,name:`attendancebreak_get`},{operation:`list`,name:`attendancebreak_list`}],cli:[{operation:`get`,name:`attendancebreak_get`},{operation:`list`,name:`attendancebreak_list`}],methods:[{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-timesheets:AttendancePunch`],exposed:!0},{id:`@happyvertical/smrt-timesheets:AttendancePunch`,name:`AttendancePunch`,collection:`attendancepunches`,description:`A tenant-scoped interval of attendance, independent of billable work.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`startedAt`,type:`datetime`,required:!1},{name:`endedAt`,type:`datetime`,required:!1},{name:`durationSeconds`,type:`integer`,required:!0,default:0},{name:`unpaidBreakSeconds`,type:`integer`,required:!0,default:0},{name:`reviewRequired`,type:`boolean`,required:!0,default:!1},{name:`recordedOffline`,type:`boolean`,required:!0,default:!1},{name:`serviceTimeEntryId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-timesheets:ServiceTimeEntry`},{name:`openSlot`,type:`text`,required:!0}],rest:[{method:`GET`,path:`/attendancepunches`},{method:`GET`,path:`/attendancepunches/[id]`}],mcp:[{operation:`get`,name:`attendancepunch_get`},{operation:`list`,name:`attendancepunch_list`}],cli:[{operation:`get`,name:`attendancepunch_get`},{operation:`list`,name:`attendancepunch_list`}],methods:[{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-timesheets:ServiceTimeEntry`],exposed:!0},{id:`@happyvertical/smrt-timesheets:AttendanceReplay`,name:`AttendanceReplay`,collection:`attendancereplays`,description:`Durable offline-tap outcome; never exposed through generated operations.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`replayKey`,type:`text`,required:!0},{name:`content`,type:`text`,required:!1},{name:`outcome`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`getOutcome`,async:!1,parameters:[],returnType:`AttendanceReplayOutcome`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setOutcome`,async:!1,parameters:[`value: AttendanceReplayOutcome`],returnType:`void`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-timesheets:PeriodTimecard`,name:`PeriodTimecard`,collection:`periodtimecards`,description:`One person's immutable-on-confirmation period snapshot, in integer seconds.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`startsAt`,type:`datetime`,required:!1},{name:`endsAt`,type:`datetime`,required:!1},{name:`timezone`,type:`text`,required:!1},{name:`rulesVersion`,type:`text`,required:!1},{name:`rulesSnapshot`,type:`text`,required:!1},{name:`sourceSnapshot`,type:`text`,required:!1},{name:`regularSeconds`,type:`integer`,required:!0,default:0},{name:`overtimeSeconds`,type:`integer`,required:!0,default:0},{name:`totalSeconds`,type:`integer`,required:!0,default:0},{name:`status`,type:`text`,required:!1,enum:[`open`,`confirmed`]},{name:`confirmedAt`,type:`datetime`,required:!1},{name:`confirmedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`getRules`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSources`,async:!1,parameters:[],returnType:`TimecardSource[]`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!1},{id:`@happyvertical/smrt-timesheets:ServiceChargeSnapshot`,name:`ServiceChargeSnapshot`,collection:`servicechargesnapshots`,description:`Immutable client-charge snapshot for one approved time entry. Money is integer minor units, consistent with smrt-commerce (#2401).`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`timeEntryId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-timesheets:ServiceTimeEntry`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`pricingVersion`,type:`text`,required:!1},{name:`strategy`,type:`text`,required:!1},{name:`rateSnapshot`,type:`text`,required:!1},{name:`sourceChargeRef`,type:`text`,required:!1},{name:`createdAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/servicechargesnapshots`},{method:`GET`,path:`/servicechargesnapshots/[id]`}],mcp:[{operation:`get`,name:`servicechargesnapshot_get`},{operation:`list`,name:`servicechargesnapshot_list`}],cli:[{operation:`get`,name:`servicechargesnapshot_get`},{operation:`list`,name:`servicechargesnapshot_list`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-timesheets:ServiceTimeEntry`],exposed:!0},{id:`@happyvertical/smrt-timesheets:ServiceCompensationSnapshot`,name:`ServiceCompensationSnapshot`,collection:`servicecompensationsnapshots`,description:`Immutable provider-compensation snapshot for one approved time entry, kept separate from the client charge so the margin is charge - compensation.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`timeEntryId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-timesheets:ServiceTimeEntry`},{name:`amount`,type:`integer`,required:!1,default:0},{name:`currency`,type:`text`,required:!1},{name:`termsVersion`,type:`text`,required:!1},{name:`rateSnapshot`,type:`text`,required:!1},{name:`createdAt`,type:`datetime`,required:!1,system:!0}],rest:[{method:`GET`,path:`/servicecompensationsnapshots`},{method:`GET`,path:`/servicecompensationsnapshots/[id]`}],mcp:[{operation:`get`,name:`servicecompensationsnapshot_get`},{operation:`list`,name:`servicecompensationsnapshot_list`}],cli:[{operation:`get`,name:`servicecompensationsnapshot_get`},{operation:`list`,name:`servicecompensationsnapshot_list`}],methods:[{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-timesheets:ServiceTimeEntry`],exposed:!0},{id:`@happyvertical/smrt-timesheets:ServiceTimeEntry`,name:`ServiceTimeEntry`,collection:`servicetimeentries`,description:`A person or agent worked this long on this thing, and someone approved it.`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`workRefType`,type:`text`,required:!1},{name:`workRefId`,type:`text`,required:!1},{name:`participantKind`,type:`text`,required:!1,enum:[`human`,`agent`]},{name:`participantProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`agentRef`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1,enum:[`timer`,`manual`,`import`,`agent`]},{name:`description`,type:`text`,required:!1},{name:`startedAt`,type:`datetime`,required:!1},{name:`endedAt`,type:`datetime`,required:!1},{name:`durationSeconds`,type:`integer`,required:!1},{name:`evidence`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,enum:[`draft`,`submitted`,`approved`,`rejected`,`corrected`]},{name:`submittedAt`,type:`datetime`,required:!1},{name:`submittedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`approvedAt`,type:`datetime`,required:!1},{name:`approvedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`approvalPath`,type:`text`,required:!1},{name:`rejectedAt`,type:`datetime`,required:!1},{name:`rejectedByProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`rejectionReason`,type:`text`,required:!1},{name:`correctionOfId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-timesheets:ServiceTimeEntry`},{name:`metadata`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/servicetimeentries`},{method:`GET`,path:`/servicetimeentries/[id]`},{method:`POST`,path:`/servicetimeentries/forWork`},{method:`POST`,path:`/servicetimeentries/pendingApproval`}],mcp:[{operation:`get`,name:`servicetimeentry_get`},{operation:`list`,name:`servicetimeentry_list`},{operation:`forWork`,name:`servicetimeentrycollection_forwork`},{operation:`pendingApproval`,name:`servicetimeentrycollection_pendingapproval`}],cli:[{operation:`get`,name:`servicetimeentry_get`},{operation:`list`,name:`servicetimeentry_list`},{operation:`forWork`,name:`servicetimeentrycollection_forWork`},{operation:`pendingApproval`,name:`servicetimeentrycollection_pendingApproval`}],methods:[{name:`durationHours`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`durationHoursExact`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`forWork`,async:!0,parameters:[`workRefType: string`,`workRefId: string`],returnType:`Promise<ServiceTimeEntry[]>`,aiCallable:!0},{name:`getEvidence`,async:!1,parameters:[],returnType:`ServiceEvidence[]`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`pendingApproval`,async:!0,parameters:[],returnType:`Promise<ServiceTimeEntry[]>`,aiCallable:!0},{name:`requireDurationSeconds`,async:!1,parameters:[],returnType:`number`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`setEvidence`,async:!1,parameters:[`value: ServiceEvidence[]`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-timesheets:ServiceTimeEntry`],exposed:!0},{id:`@happyvertical/smrt-timesheets:TimecardAdjustment`,name:`TimecardAdjustment`,collection:`timecardadjustments`,description:`Attributed append-only signed seconds; the confirmed base card never changes.`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`timecardId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-timesheets:PeriodTimecard`},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`actorProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`operationId`,type:`text`,required:!1},{name:`regularSeconds`,type:`integer`,required:!0,default:0},{name:`overtimeSeconds`,type:`integer`,required:!0,default:0},{name:`reason`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-timesheets:PeriodTimecard`],exposed:!1}],dependencies:[`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3624`],reason:`node:crypto`,via:[`@happyvertical/smrt-tenancy`]}},{id:`users`,packageName:`@happyvertical/smrt-users`,version:`0.55.11`,description:`Multi-tenant user management for the SMRT framework - users, tenants, roles, permissions, groups`,models:[{id:`@happyvertical/smrt-users:AccessRequest`,name:`AccessRequest`,collection:`accessrequests`,description:`A prospective user's request for access, captured before they become a User.`,display:{label:`name`},fields:[{name:`email`,type:`text`,required:!0,default:``},{name:`name`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1,default:``},{name:`requestContext`,type:`text`,required:!1,default:`{}`},{name:`note`,type:`text`,required:!1},{name:`requestedAt`,type:`datetime`,required:!1},{name:`decidedAt`,type:`datetime`,required:!1},{name:`decidedBy`,type:`text`,required:!1},{name:`resultingUserId`,type:`text`,required:!1},{name:`tenantHint`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/accessrequests/findByEmail`},{method:`POST`,path:`/accessrequests/findOpenByEmail`},{method:`POST`,path:`/accessrequests/findByStatus`},{method:`POST`,path:`/accessrequests/findOpen`}],mcp:[{operation:`findByEmail`,name:`accessrequestcollection_findbyemail`},{operation:`findByStatus`,name:`accessrequestcollection_findbystatus`},{operation:`findOpen`,name:`accessrequestcollection_findopen`},{operation:`findOpenByEmail`,name:`accessrequestcollection_findopenbyemail`}],cli:[{operation:`findByEmail`,name:`accessrequestcollection_findByEmail`},{operation:`findByStatus`,name:`accessrequestcollection_findByStatus`},{operation:`findOpen`,name:`accessrequestcollection_findOpen`},{operation:`findOpenByEmail`,name:`accessrequestcollection_findOpenByEmail`}],methods:[{name:`findByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<AccessRequest[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: AccessRequestStatus`],returnType:`Promise<AccessRequest[]>`,aiCallable:!0},{name:`findOpen`,async:!0,parameters:[],returnType:`Promise<AccessRequest[]>`,aiCallable:!0},{name:`findOpenByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<AccessRequest | null>`,aiCallable:!0},{name:`getRequestContext`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getTenantHint`,async:!1,parameters:[],returnType:`Record<string, unknown> | null`,aiCallable:!1},{name:`isApproved`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isOpen`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTerminal`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`setRequestContext`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setTenantHint`,async:!1,parameters:[`value: Record<string, unknown> | null`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-users:Group`,name:`Group`,collection:`groups`,description:`Group represents a team or department within a tenant.`,display:{label:`name`},fields:[{name:`tenantId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/groups/findByTenant`},{method:`POST`,path:`/groups/findBySlug`},{method:`GET`,path:`/groups`},{method:`GET`,path:`/groups/[id]`}],mcp:[{operation:`get`,name:`group_get`},{operation:`list`,name:`group_list`},{operation:`findBySlug`,name:`groupcollection_findbyslug`},{operation:`findByTenant`,name:`groupcollection_findbytenant`}],cli:[{operation:`create`,name:`group_create`},{operation:`delete`,name:`group_delete`},{operation:`get`,name:`group_get`},{operation:`list`,name:`group_list`},{operation:`update`,name:`group_update`},{operation:`findBySlug`,name:`groupcollection_findBySlug`},{operation:`findByTenant`,name:`groupcollection_findByTenant`}],methods:[{name:`findBySlug`,async:!0,parameters:[`slug: string`,`tenantId: string`],returnType:`Promise<Group | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Group[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-users:GroupMember`,name:`GroupMember`,collection:`groupmembers`,description:`GroupMember is a join table linking Users to Groups.`,fields:[{name:`groupId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Group`},{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`}],rest:[{method:`POST`,path:`/groupmembers/findByGroup`},{method:`POST`,path:`/groupmembers/findByUser`},{method:`POST`,path:`/groupmembers/isMember`},{method:`POST`,path:`/groupmembers/addMember`},{method:`POST`,path:`/groupmembers/removeMember`},{method:`POST`,path:`/groupmembers/getGroupIds`},{method:`POST`,path:`/groupmembers/getGroupIdsForTenant`},{method:`POST`,path:`/groupmembers/getUserIds`},{method:`GET`,path:`/groupmembers`},{method:`GET`,path:`/groupmembers/[id]`}],mcp:[{operation:`get`,name:`groupmember_get`},{operation:`list`,name:`groupmember_list`},{operation:`addMember`,name:`groupmembercollection_addmember`},{operation:`findByGroup`,name:`groupmembercollection_findbygroup`},{operation:`findByUser`,name:`groupmembercollection_findbyuser`},{operation:`getGroupIds`,name:`groupmembercollection_getgroupids`},{operation:`getGroupIdsForTenant`,name:`groupmembercollection_getgroupidsfortenant`},{operation:`getUserIds`,name:`groupmembercollection_getuserids`},{operation:`isMember`,name:`groupmembercollection_ismember`},{operation:`removeMember`,name:`groupmembercollection_removemember`}],cli:[{operation:`create`,name:`groupmember_create`},{operation:`delete`,name:`groupmember_delete`},{operation:`get`,name:`groupmember_get`},{operation:`list`,name:`groupmember_list`},{operation:`update`,name:`groupmember_update`},{operation:`addMember`,name:`groupmembercollection_addMember`},{operation:`findByGroup`,name:`groupmembercollection_findByGroup`},{operation:`findByUser`,name:`groupmembercollection_findByUser`},{operation:`getGroupIds`,name:`groupmembercollection_getGroupIds`},{operation:`getGroupIdsForTenant`,name:`groupmembercollection_getGroupIdsForTenant`},{operation:`getUserIds`,name:`groupmembercollection_getUserIds`},{operation:`isMember`,name:`groupmembercollection_isMember`},{operation:`removeMember`,name:`groupmembercollection_removeMember`}],methods:[{name:`addMember`,async:!0,parameters:[`groupId: string`,`userId: string`],returnType:`Promise<GroupMember>`,aiCallable:!0},{name:`findByGroup`,async:!0,parameters:[`groupId: string`],returnType:`Promise<GroupMember[]>`,aiCallable:!0},{name:`findByUser`,async:!0,parameters:[`userId: string`],returnType:`Promise<GroupMember[]>`,aiCallable:!0},{name:`getGroupIds`,async:!0,parameters:[`userId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getGroupIdsForTenant`,async:!0,parameters:[`userId: string`,`tenantId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getUserIds`,async:!0,parameters:[`groupId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`isMember`,async:!0,parameters:[`groupId: string`,`userId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`removeMember`,async:!0,parameters:[`groupId: string`,`userId: string`],returnType:`Promise<boolean>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Group`,`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-users:GroupRole`,name:`GroupRole`,collection:`grouproles`,description:`GroupRole is a join table linking Groups to Roles.`,fields:[{name:`groupId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Group`},{name:`roleId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Role`}],rest:[{method:`POST`,path:`/grouproles/findByGroup`},{method:`POST`,path:`/grouproles/findByRole`},{method:`POST`,path:`/grouproles/hasRole`},{method:`POST`,path:`/grouproles/addRole`},{method:`POST`,path:`/grouproles/removeRole`},{method:`POST`,path:`/grouproles/getRoleIds`},{method:`GET`,path:`/grouproles`},{method:`GET`,path:`/grouproles/[id]`}],mcp:[{operation:`get`,name:`grouprole_get`},{operation:`list`,name:`grouprole_list`},{operation:`addRole`,name:`grouprolecollection_addrole`},{operation:`findByGroup`,name:`grouprolecollection_findbygroup`},{operation:`findByRole`,name:`grouprolecollection_findbyrole`},{operation:`getRoleIds`,name:`grouprolecollection_getroleids`},{operation:`hasRole`,name:`grouprolecollection_hasrole`},{operation:`removeRole`,name:`grouprolecollection_removerole`}],cli:[{operation:`create`,name:`grouprole_create`},{operation:`delete`,name:`grouprole_delete`},{operation:`get`,name:`grouprole_get`},{operation:`list`,name:`grouprole_list`},{operation:`update`,name:`grouprole_update`},{operation:`addRole`,name:`grouprolecollection_addRole`},{operation:`findByGroup`,name:`grouprolecollection_findByGroup`},{operation:`findByRole`,name:`grouprolecollection_findByRole`},{operation:`getRoleIds`,name:`grouprolecollection_getRoleIds`},{operation:`hasRole`,name:`grouprolecollection_hasRole`},{operation:`removeRole`,name:`grouprolecollection_removeRole`}],methods:[{name:`addRole`,async:!0,parameters:[`groupId: string`,`roleId: string`],returnType:`Promise<GroupRole>`,aiCallable:!0},{name:`findByGroup`,async:!0,parameters:[`groupId: string`],returnType:`Promise<GroupRole[]>`,aiCallable:!0},{name:`findByRole`,async:!0,parameters:[`roleId: string`],returnType:`Promise<GroupRole[]>`,aiCallable:!0},{name:`getRoleIds`,async:!0,parameters:[`groupId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`hasRole`,async:!0,parameters:[`groupId: string`,`roleId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`removeRole`,async:!0,parameters:[`groupId: string`,`roleId: string`],returnType:`Promise<boolean>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Group`,`@happyvertical/smrt-users:Role`],exposed:!0},{id:`@happyvertical/smrt-users:Membership`,name:`Membership`,collection:`memberships`,description:`Membership represents a user's membership in a tenant with an assigned role.`,fields:[{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`tenantId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`roleId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Role`},{name:`status`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/memberships/findByUser`},{method:`POST`,path:`/memberships/findActiveByUser`},{method:`POST`,path:`/memberships/findByTenant`},{method:`POST`,path:`/memberships/findActiveByTenant`},{method:`POST`,path:`/memberships/findByUserAndTenant`},{method:`POST`,path:`/memberships/findByRole`},{method:`POST`,path:`/memberships/findByStatus`},{method:`GET`,path:`/memberships`},{method:`GET`,path:`/memberships/[id]`}],mcp:[{operation:`get`,name:`membership_get`},{operation:`list`,name:`membership_list`},{operation:`findActiveByTenant`,name:`membershipcollection_findactivebytenant`},{operation:`findActiveByUser`,name:`membershipcollection_findactivebyuser`},{operation:`findByRole`,name:`membershipcollection_findbyrole`},{operation:`findByStatus`,name:`membershipcollection_findbystatus`},{operation:`findByTenant`,name:`membershipcollection_findbytenant`},{operation:`findByUser`,name:`membershipcollection_findbyuser`},{operation:`findByUserAndTenant`,name:`membershipcollection_findbyuserandtenant`}],cli:[{operation:`create`,name:`membership_create`},{operation:`delete`,name:`membership_delete`},{operation:`get`,name:`membership_get`},{operation:`isActive`,name:`membership_isActive`},{operation:`isPending`,name:`membership_isPending`},{operation:`list`,name:`membership_list`},{operation:`update`,name:`membership_update`},{operation:`findActiveByTenant`,name:`membershipcollection_findActiveByTenant`},{operation:`findActiveByUser`,name:`membershipcollection_findActiveByUser`},{operation:`findByRole`,name:`membershipcollection_findByRole`},{operation:`findByStatus`,name:`membershipcollection_findByStatus`},{operation:`findByTenant`,name:`membershipcollection_findByTenant`},{operation:`findByUser`,name:`membershipcollection_findByUser`},{operation:`findByUserAndTenant`,name:`membershipcollection_findByUserAndTenant`}],methods:[{name:`findActiveByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findActiveByUser`,async:!0,parameters:[`userId: string`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findByRole`,async:!0,parameters:[`roleId: string`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: MembershipStatus`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findByUser`,async:!0,parameters:[`userId: string`],returnType:`Promise<Membership[]>`,aiCallable:!0},{name:`findByUserAndTenant`,async:!0,parameters:[`userId: string`,`tenantId: string`],returnType:`Promise<Membership | null>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-users:Role`,`@happyvertical/smrt-users:Tenant`,`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-users:MembershipOverride`,name:`MembershipOverride`,collection:`membershipoverrides`,description:`MembershipOverride allows granting or denying specific permissions to a user beyond what their role and groups provide.`,fields:[{name:`membershipId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Membership`},{name:`permissionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Permission`},{name:`effect`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/membershipoverrides/findByMembership`},{method:`POST`,path:`/membershipoverrides/findGrants`},{method:`POST`,path:`/membershipoverrides/findDenies`},{method:`POST`,path:`/membershipoverrides/getGrantedPermissionIds`},{method:`POST`,path:`/membershipoverrides/getDeniedPermissionIds`},{method:`POST`,path:`/membershipoverrides/setOverride`},{method:`POST`,path:`/membershipoverrides/removeOverride`},{method:`POST`,path:`/membershipoverrides/grantPermission`},{method:`POST`,path:`/membershipoverrides/denyPermission`},{method:`GET`,path:`/membershipoverrides`},{method:`GET`,path:`/membershipoverrides/[id]`}],mcp:[{operation:`get`,name:`membershipoverride_get`},{operation:`list`,name:`membershipoverride_list`},{operation:`denyPermission`,name:`membershipoverridecollection_denypermission`},{operation:`findByMembership`,name:`membershipoverridecollection_findbymembership`},{operation:`findDenies`,name:`membershipoverridecollection_finddenies`},{operation:`findGrants`,name:`membershipoverridecollection_findgrants`},{operation:`getDeniedPermissionIds`,name:`membershipoverridecollection_getdeniedpermissionids`},{operation:`getGrantedPermissionIds`,name:`membershipoverridecollection_getgrantedpermissionids`},{operation:`grantPermission`,name:`membershipoverridecollection_grantpermission`},{operation:`removeOverride`,name:`membershipoverridecollection_removeoverride`},{operation:`setOverride`,name:`membershipoverridecollection_setoverride`}],cli:[{operation:`create`,name:`membershipoverride_create`},{operation:`delete`,name:`membershipoverride_delete`},{operation:`get`,name:`membershipoverride_get`},{operation:`isDeny`,name:`membershipoverride_isDeny`},{operation:`isGrant`,name:`membershipoverride_isGrant`},{operation:`list`,name:`membershipoverride_list`},{operation:`update`,name:`membershipoverride_update`},{operation:`denyPermission`,name:`membershipoverridecollection_denyPermission`},{operation:`findByMembership`,name:`membershipoverridecollection_findByMembership`},{operation:`findDenies`,name:`membershipoverridecollection_findDenies`},{operation:`findGrants`,name:`membershipoverridecollection_findGrants`},{operation:`getDeniedPermissionIds`,name:`membershipoverridecollection_getDeniedPermissionIds`},{operation:`getGrantedPermissionIds`,name:`membershipoverridecollection_getGrantedPermissionIds`},{operation:`grantPermission`,name:`membershipoverridecollection_grantPermission`},{operation:`removeOverride`,name:`membershipoverridecollection_removeOverride`},{operation:`setOverride`,name:`membershipoverridecollection_setOverride`}],methods:[{name:`denyPermission`,async:!0,parameters:[`membershipId: string`,`permissionId: string`],returnType:`Promise<MembershipOverride>`,aiCallable:!0},{name:`findByMembership`,async:!0,parameters:[`membershipId: string`],returnType:`Promise<MembershipOverride[]>`,aiCallable:!0},{name:`findDenies`,async:!0,parameters:[`membershipId: string`],returnType:`Promise<MembershipOverride[]>`,aiCallable:!0},{name:`findGrants`,async:!0,parameters:[`membershipId: string`],returnType:`Promise<MembershipOverride[]>`,aiCallable:!0},{name:`getDeniedPermissionIds`,async:!0,parameters:[`membershipId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getGrantedPermissionIds`,async:!0,parameters:[`membershipId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`grantPermission`,async:!0,parameters:[`membershipId: string`,`permissionId: string`],returnType:`Promise<MembershipOverride>`,aiCallable:!0},{name:`isDeny`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isGrant`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`removeOverride`,async:!0,parameters:[`membershipId: string`,`permissionId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`setOverride`,async:!0,parameters:[`membershipId: string`,`permissionId: string`,`effect: OverrideEffect`],returnType:`Promise<MembershipOverride>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Membership`,`@happyvertical/smrt-users:Permission`],exposed:!0},{id:`@happyvertical/smrt-users:Permission`,name:`Permission`,collection:`permissions`,description:`Permission represents a named capability in the system.`,display:{label:`name`},fields:[{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`category`,type:`text`,required:!1,default:``}],rest:[{method:`POST`,path:`/permissions/findByCategory`},{method:`POST`,path:`/permissions/findBySlug`},{method:`POST`,path:`/permissions/findByIds`},{method:`POST`,path:`/permissions/getCategories`},{method:`POST`,path:`/permissions/findOrCreate`},{method:`GET`,path:`/permissions`},{method:`GET`,path:`/permissions/[id]`}],mcp:[{operation:`get`,name:`permission_get`},{operation:`list`,name:`permission_list`},{operation:`findByCategory`,name:`permissioncollection_findbycategory`},{operation:`findByIds`,name:`permissioncollection_findbyids`},{operation:`findBySlug`,name:`permissioncollection_findbyslug`},{operation:`findOrCreate`,name:`permissioncollection_findorcreate`},{operation:`getCategories`,name:`permissioncollection_getcategories`}],cli:[{operation:`create`,name:`permission_create`},{operation:`delete`,name:`permission_delete`},{operation:`get`,name:`permission_get`},{operation:`getAction`,name:`permission_getAction`},{operation:`getResource`,name:`permission_getResource`},{operation:`isValidSlug`,name:`permission_isValidSlug`},{operation:`list`,name:`permission_list`},{operation:`parseSlug`,name:`permission_parseSlug`},{operation:`update`,name:`permission_update`},{operation:`findByCategory`,name:`permissioncollection_findByCategory`},{operation:`findByIds`,name:`permissioncollection_findByIds`},{operation:`findBySlug`,name:`permissioncollection_findBySlug`},{operation:`findOrCreate`,name:`permissioncollection_findOrCreate`},{operation:`getCategories`,name:`permissioncollection_getCategories`}],methods:[{name:`findByCategory`,async:!0,parameters:[`category: string`],returnType:`Promise<Permission[]>`,aiCallable:!0},{name:`findByIds`,async:!0,parameters:[`ids: string[]`],returnType:`Promise<Map<string, Permission>>`,aiCallable:!0},{name:`findBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<Permission | null>`,aiCallable:!0},{name:`findOrCreate`,async:!0,parameters:[`slug: string`,`defaults?: Partial<object>`],returnType:`Promise<Permission>`,aiCallable:!0},{name:`getAction`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`getCategories`,async:!0,parameters:[],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getResource`,async:!1,parameters:[],returnType:`string`,aiCallable:!1},{name:`isValidSlug`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`parseSlug`,async:!1,parameters:[],returnType:`ParsedPermissionSlug`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-users:ResourceGrant`,name:`ResourceGrant`,collection:`resourcegrants`,description:`An exact tenant/resource/user/permission decision. This deliberately does not replace tenant RBAC: ResourceGrantResolver only allows after the normal operation guard has allowed the same permission.`,fields:[{name:`tenantId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`resourceType`,type:`text`,required:!1},{name:`resourceId`,type:`text`,required:!1},{name:`permission`,type:`text`,required:!1},{name:`effect`,type:`text`,required:!1,enum:[`grant`,`deny`]},{name:`canDelegate`,type:`boolean`,required:!1,default:!1},{name:`parentGrantId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:ResourceGrant`},{name:`revokedAt`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/resourcegrants/findExact`},{method:`POST`,path:`/resourcegrants/findChildren`}],mcp:[{operation:`findChildren`,name:`resourcegrantcollection_findchildren`},{operation:`findExact`,name:`resourcegrantcollection_findexact`}],cli:[{operation:`create`,name:`resourcegrant_create`},{operation:`delete`,name:`resourcegrant_delete`},{operation:`get`,name:`resourcegrant_get`},{operation:`isActive`,name:`resourcegrant_isActive`},{operation:`list`,name:`resourcegrant_list`},{operation:`update`,name:`resourcegrant_update`},{operation:`findChildren`,name:`resourcegrantcollection_findChildren`},{operation:`findExact`,name:`resourcegrantcollection_findExact`}],methods:[{name:`findChildren`,async:!0,parameters:[`parentGrantId: string`],returnType:`Promise<ResourceGrant[]>`,aiCallable:!0},{name:`findExact`,async:!0,parameters:[`tenantId: string`,`userId: string`,`resourceType: string`,`resourceId: string`,`permission: string`],returnType:`Promise<ResourceGrant[]>`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1}],references:[`@happyvertical/smrt-users:ResourceGrant`,`@happyvertical/smrt-users:Tenant`,`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-users:Role`,name:`Role`,collection:`roles`,description:`Role represents a permission template that can be assigned to users.`,display:{label:`name`},fields:[{name:`tenantId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1,default:``},{name:`isSystem`,type:`boolean`,required:!1,default:!1},{name:`inheritsToDescendants`,type:`boolean`,required:!1,default:!1}],rest:[{method:`POST`,path:`/roles/findSystemRoles`},{method:`POST`,path:`/roles/findByTenant`},{method:`POST`,path:`/roles/findTenantRoles`},{method:`POST`,path:`/roles/findBySlug`},{method:`POST`,path:`/roles/findSystemRoleBySlug`},{method:`POST`,path:`/roles/seedSystemRoles`},{method:`GET`,path:`/roles`},{method:`GET`,path:`/roles/[id]`}],mcp:[{operation:`get`,name:`role_get`},{operation:`list`,name:`role_list`},{operation:`findBySlug`,name:`rolecollection_findbyslug`},{operation:`findByTenant`,name:`rolecollection_findbytenant`},{operation:`findSystemRoleBySlug`,name:`rolecollection_findsystemrolebyslug`},{operation:`findSystemRoles`,name:`rolecollection_findsystemroles`},{operation:`findTenantRoles`,name:`rolecollection_findtenantroles`},{operation:`seedSystemRoles`,name:`rolecollection_seedsystemroles`}],cli:[{operation:`canDelete`,name:`role_canDelete`},{operation:`create`,name:`role_create`},{operation:`delete`,name:`role_delete`},{operation:`get`,name:`role_get`},{operation:`isSystemRole`,name:`role_isSystemRole`},{operation:`isTenantRole`,name:`role_isTenantRole`},{operation:`list`,name:`role_list`},{operation:`update`,name:`role_update`},{operation:`findBySlug`,name:`rolecollection_findBySlug`},{operation:`findByTenant`,name:`rolecollection_findByTenant`},{operation:`findSystemRoleBySlug`,name:`rolecollection_findSystemRoleBySlug`},{operation:`findSystemRoles`,name:`rolecollection_findSystemRoles`},{operation:`findTenantRoles`,name:`rolecollection_findTenantRoles`},{operation:`seedSystemRoles`,name:`rolecollection_seedSystemRoles`}],methods:[{name:`canDelete`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`delete`,async:!0,parameters:[],returnType:`Promise<void>`,aiCallable:!1},{name:`findBySlug`,async:!0,parameters:[`slug: string`,`tenantId?: string`],returnType:`Promise<Role | null>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Role[]>`,aiCallable:!0},{name:`findSystemRoleBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<Role | null>`,aiCallable:!0},{name:`findSystemRoles`,async:!0,parameters:[],returnType:`Promise<Role[]>`,aiCallable:!0},{name:`findTenantRoles`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Role[]>`,aiCallable:!0},{name:`isSystemRole`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isTenantRole`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`seedSystemRoles`,async:!0,parameters:[`options?: SeedSystemRolesOptions`],returnType:`Promise<Role[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-users:RolePermission`,name:`RolePermission`,collection:`rolepermissions`,description:`RolePermission is a join table linking Roles to Permissions.`,fields:[{name:`roleId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Role`},{name:`permissionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Permission`}],rest:[{method:`POST`,path:`/rolepermissions/findByRole`},{method:`POST`,path:`/rolepermissions/findByPermission`},{method:`POST`,path:`/rolepermissions/hasPermission`},{method:`POST`,path:`/rolepermissions/addPermission`},{method:`POST`,path:`/rolepermissions/removePermission`},{method:`POST`,path:`/rolepermissions/getPermissionIds`},{method:`POST`,path:`/rolepermissions/seedRolePermissions`},{method:`POST`,path:`/rolepermissions/seedDefaultRolePersonalizationPermissions`},{method:`GET`,path:`/rolepermissions`},{method:`GET`,path:`/rolepermissions/[id]`}],mcp:[{operation:`get`,name:`rolepermission_get`},{operation:`list`,name:`rolepermission_list`},{operation:`addPermission`,name:`rolepermissioncollection_addpermission`},{operation:`findByPermission`,name:`rolepermissioncollection_findbypermission`},{operation:`findByRole`,name:`rolepermissioncollection_findbyrole`},{operation:`getPermissionIds`,name:`rolepermissioncollection_getpermissionids`},{operation:`hasPermission`,name:`rolepermissioncollection_haspermission`},{operation:`removePermission`,name:`rolepermissioncollection_removepermission`},{operation:`seedDefaultRolePersonalizationPermissions`,name:`rolepermissioncollection_seeddefaultrolepersonalizationpermissions`},{operation:`seedRolePermissions`,name:`rolepermissioncollection_seedrolepermissions`}],cli:[{operation:`create`,name:`rolepermission_create`},{operation:`delete`,name:`rolepermission_delete`},{operation:`get`,name:`rolepermission_get`},{operation:`list`,name:`rolepermission_list`},{operation:`update`,name:`rolepermission_update`},{operation:`addPermission`,name:`rolepermissioncollection_addPermission`},{operation:`findByPermission`,name:`rolepermissioncollection_findByPermission`},{operation:`findByRole`,name:`rolepermissioncollection_findByRole`},{operation:`getPermissionIds`,name:`rolepermissioncollection_getPermissionIds`},{operation:`hasPermission`,name:`rolepermissioncollection_hasPermission`},{operation:`removePermission`,name:`rolepermissioncollection_removePermission`},{operation:`seedDefaultRolePersonalizationPermissions`,name:`rolepermissioncollection_seedDefaultRolePersonalizationPermissions`},{operation:`seedRolePermissions`,name:`rolepermissioncollection_seedRolePermissions`}],methods:[{name:`addPermission`,async:!0,parameters:[`roleId: string`,`permissionId: string`],returnType:`Promise<RolePermission>`,aiCallable:!0},{name:`findByPermission`,async:!0,parameters:[`permissionId: string`],returnType:`Promise<RolePermission[]>`,aiCallable:!0},{name:`findByRole`,async:!0,parameters:[`roleId: string`],returnType:`Promise<RolePermission[]>`,aiCallable:!0},{name:`getPermissionIds`,async:!0,parameters:[`roleId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`hasPermission`,async:!0,parameters:[`roleId: string`,`permissionId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`removePermission`,async:!0,parameters:[`roleId: string`,`permissionId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`seedDefaultRolePersonalizationPermissions`,async:!0,parameters:[`options?: Omit<SeedRolePermissionsOptions, 'prune'>`],returnType:`Promise<SeedRolePermissionsResult>`,aiCallable:!0},{name:`seedRolePermissions`,async:!0,parameters:[`matrix?: RolePermissionPatternMatrix`,`options?: SeedRolePermissionsOptions`],returnType:`Promise<SeedRolePermissionsResult>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Permission`,`@happyvertical/smrt-users:Role`],exposed:!0},{id:`@happyvertical/smrt-users:Session`,name:`Session`,collection:`sessions`,description:`Session represents an authenticated user session.`,fields:[{name:`userId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`tenantId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`status`,type:`text`,required:!1},{name:`expiresAt`,type:`datetime`,required:!1},{name:`userAgent`,type:`text`,required:!1,default:``},{name:`ipAddress`,type:`text`,required:!1,default:``},{name:`lastAccessedAt`,type:`datetime`,required:!1},{name:`data`,type:`json`,required:!1},{name:`authMethod`,type:`text`,required:!1},{name:`parentSessionId`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/sessions/createSession`},{method:`POST`,path:`/sessions/findChildren`},{method:`POST`,path:`/sessions/revokeChildren`},{method:`POST`,path:`/sessions/revokeUserSessionsByAuthMethod`},{method:`POST`,path:`/sessions/findValidSession`},{method:`POST`,path:`/sessions/touch`},{method:`POST`,path:`/sessions/findByUser`},{method:`POST`,path:`/sessions/deleteUserSessions`},{method:`POST`,path:`/sessions/revokeUserSessions`},{method:`POST`,path:`/sessions/revokeSession`},{method:`POST`,path:`/sessions/deleteExpired`},{method:`POST`,path:`/sessions/countUserSessions`},{method:`POST`,path:`/sessions/setSessionTenant`},{method:`POST`,path:`/sessions/setSessionData`},{method:`POST`,path:`/sessions/getSessionData`},{method:`GET`,path:`/sessions/[id]`},{method:`DELETE`,path:`/sessions/[id]`}],mcp:[{operation:`countUserSessions`,name:`sessioncollection_countusersessions`},{operation:`createSession`,name:`sessioncollection_createsession`},{operation:`deleteExpired`,name:`sessioncollection_deleteexpired`},{operation:`deleteUserSessions`,name:`sessioncollection_deleteusersessions`},{operation:`findByUser`,name:`sessioncollection_findbyuser`},{operation:`findChildren`,name:`sessioncollection_findchildren`},{operation:`findValidSession`,name:`sessioncollection_findvalidsession`},{operation:`getSessionData`,name:`sessioncollection_getsessiondata`},{operation:`revokeChildren`,name:`sessioncollection_revokechildren`},{operation:`revokeSession`,name:`sessioncollection_revokesession`},{operation:`revokeUserSessions`,name:`sessioncollection_revokeusersessions`},{operation:`revokeUserSessionsByAuthMethod`,name:`sessioncollection_revokeusersessionsbyauthmethod`},{operation:`setSessionData`,name:`sessioncollection_setsessiondata`},{operation:`setSessionTenant`,name:`sessioncollection_setsessiontenant`},{operation:`touch`,name:`sessioncollection_touch`}],cli:[{operation:`create`,name:`session_create`},{operation:`delete`,name:`session_delete`},{operation:`extend`,name:`session_extend`},{operation:`get`,name:`session_get`},{operation:`getAbsoluteExpiry`,name:`session_getAbsoluteExpiry`},{operation:`getData`,name:`session_getData`},{operation:`getIdleSeconds`,name:`session_getIdleSeconds`},{operation:`getPermissionCeiling`,name:`session_getPermissionCeiling`},{operation:`isExpired`,name:`session_isExpired`},{operation:`isLayered`,name:`session_isLayered`},{operation:`isRevoked`,name:`session_isRevoked`},{operation:`isValid`,name:`session_isValid`},{operation:`list`,name:`session_list`},{operation:`recordActivity`,name:`session_recordActivity`},{operation:`removeData`,name:`session_removeData`},{operation:`revoke`,name:`session_revoke`},{operation:`setData`,name:`session_setData`},{operation:`setTenant`,name:`session_setTenant`},{operation:`touch`,name:`session_touch`},{operation:`update`,name:`session_update`},{operation:`countUserSessions`,name:`sessioncollection_countUserSessions`},{operation:`createSession`,name:`sessioncollection_createSession`},{operation:`deleteExpired`,name:`sessioncollection_deleteExpired`},{operation:`deleteUserSessions`,name:`sessioncollection_deleteUserSessions`},{operation:`findByUser`,name:`sessioncollection_findByUser`},{operation:`findChildren`,name:`sessioncollection_findChildren`},{operation:`findValidSession`,name:`sessioncollection_findValidSession`},{operation:`getSessionData`,name:`sessioncollection_getSessionData`},{operation:`revokeChildren`,name:`sessioncollection_revokeChildren`},{operation:`revokeSession`,name:`sessioncollection_revokeSession`},{operation:`revokeUserSessions`,name:`sessioncollection_revokeUserSessions`},{operation:`revokeUserSessionsByAuthMethod`,name:`sessioncollection_revokeUserSessionsByAuthMethod`},{operation:`setSessionData`,name:`sessioncollection_setSessionData`},{operation:`setSessionTenant`,name:`sessioncollection_setSessionTenant`},{operation:`touch`,name:`sessioncollection_touch`}],methods:[{name:`countUserSessions`,async:!0,parameters:[`userId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`createSession`,async:!0,parameters:[`options: CreateSessionOptions`],returnType:`Promise<Session>`,aiCallable:!0},{name:`deleteExpired`,async:!0,parameters:[`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`deleteUserSessions`,async:!0,parameters:[`userId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`extend`,async:!1,parameters:[`ttlSeconds?: number`],returnType:`void`,aiCallable:!1},{name:`findByUser`,async:!0,parameters:[`userId: string`],returnType:`Promise<Session[]>`,aiCallable:!0},{name:`findChildren`,async:!0,parameters:[`parentSessionId: string`],returnType:`Promise<Session[]>`,aiCallable:!0},{name:`findValidSession`,async:!0,parameters:[`sessionId: string`],returnType:`Promise<Session | null>`,aiCallable:!0},{name:`getAbsoluteExpiry`,async:!1,parameters:[],returnType:`Date | null`,aiCallable:!1},{name:`getData`,async:!1,parameters:[`key: string`],returnType:`T | undefined`,aiCallable:!1},{name:`getIdleSeconds`,async:!1,parameters:[],returnType:`number | null`,aiCallable:!1},{name:`getPermissionCeiling`,async:!1,parameters:[],returnType:`string[] | null`,aiCallable:!1},{name:`getSessionData`,async:!0,parameters:[`sessionId: string`,`key: string`],returnType:`Promise<T | undefined>`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isLayered`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isRevoked`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isValid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recordActivity`,async:!0,parameters:[`extendTtl?: any`,`ttlSeconds?: number`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`removeData`,async:!1,parameters:[`key: string`],returnType:`void`,aiCallable:!1},{name:`revoke`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`revokeChildren`,async:!0,parameters:[`parentSessionId: string`,`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`revokeSession`,async:!0,parameters:[`sessionId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`revokeUserSessions`,async:!0,parameters:[`userId: string`,`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`revokeUserSessionsByAuthMethod`,async:!0,parameters:[`userId: string`,`authMethod: SessionAuthMethod`,`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`setData`,async:!1,parameters:[`key: string`,`value: unknown`],returnType:`void`,aiCallable:!1},{name:`setSessionData`,async:!0,parameters:[`sessionId: string`,`key: string`,`value: unknown`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`setSessionTenant`,async:!0,parameters:[`sessionId: string`,`tenantId: string | null`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`setTenant`,async:!1,parameters:[`tenantId: string | null`],returnType:`void`,aiCallable:!1},{name:`touch`,async:!1,parameters:[],returnType:`void`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Tenant`,`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-users:Tenant`,name:`Tenant`,collection:`tenants`,description:`Tenant represents an organizational boundary in the multi-tenant system.`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`status`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1,default:``},{name:`parentTenantId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:Tenant`},{name:`hierarchyLevel`,type:`integer`,required:!1,default:0},{name:`hierarchyPath`,type:`text`,required:!1,default:``},{name:`cascadePermissions`,type:`boolean`,required:!1,default:!0},{name:`inheritPermissions`,type:`boolean`,required:!1,default:!0}],rest:[{method:`POST`,path:`/tenants/findByStatus`},{method:`POST`,path:`/tenants/findActive`},{method:`POST`,path:`/tenants/findBySlug`},{method:`POST`,path:`/tenants/findRoots`},{method:`POST`,path:`/tenants/findChildren`},{method:`POST`,path:`/tenants/findParent`},{method:`POST`,path:`/tenants/getAncestors`},{method:`POST`,path:`/tenants/getAncestorsFromRoot`},{method:`POST`,path:`/tenants/getDescendants`},{method:`POST`,path:`/tenants/getSiblings`},{method:`POST`,path:`/tenants/isAncestorOf`},{method:`POST`,path:`/tenants/isDescendantOf`},{method:`POST`,path:`/tenants/createChild`},{method:`POST`,path:`/tenants/moveToParent`},{method:`POST`,path:`/tenants/makeRoot`},{method:`POST`,path:`/tenants/validateHierarchy`},{method:`POST`,path:`/tenants/getTree`},{method:`GET`,path:`/tenants`},{method:`GET`,path:`/tenants/[id]`}],mcp:[{operation:`get`,name:`tenant_get`},{operation:`list`,name:`tenant_list`},{operation:`createChild`,name:`tenantcollection_createchild`},{operation:`findActive`,name:`tenantcollection_findactive`},{operation:`findBySlug`,name:`tenantcollection_findbyslug`},{operation:`findByStatus`,name:`tenantcollection_findbystatus`},{operation:`findChildren`,name:`tenantcollection_findchildren`},{operation:`findParent`,name:`tenantcollection_findparent`},{operation:`findRoots`,name:`tenantcollection_findroots`},{operation:`getAncestors`,name:`tenantcollection_getancestors`},{operation:`getAncestorsFromRoot`,name:`tenantcollection_getancestorsfromroot`},{operation:`getDescendants`,name:`tenantcollection_getdescendants`},{operation:`getSiblings`,name:`tenantcollection_getsiblings`},{operation:`getTree`,name:`tenantcollection_gettree`},{operation:`isAncestorOf`,name:`tenantcollection_isancestorof`},{operation:`isDescendantOf`,name:`tenantcollection_isdescendantof`},{operation:`makeRoot`,name:`tenantcollection_makeroot`},{operation:`moveToParent`,name:`tenantcollection_movetoparent`},{operation:`validateHierarchy`,name:`tenantcollection_validatehierarchy`}],cli:[{operation:`acceptsInheritance`,name:`tenant_acceptsInheritance`},{operation:`canCascadeToChildren`,name:`tenant_canCascadeToChildren`},{operation:`create`,name:`tenant_create`},{operation:`delete`,name:`tenant_delete`},{operation:`get`,name:`tenant_get`},{operation:`getAncestorIds`,name:`tenant_getAncestorIds`},{operation:`isActive`,name:`tenant_isActive`},{operation:`isRoot`,name:`tenant_isRoot`},{operation:`isSuspended`,name:`tenant_isSuspended`},{operation:`list`,name:`tenant_list`},{operation:`update`,name:`tenant_update`},{operation:`createChild`,name:`tenantcollection_createChild`},{operation:`findActive`,name:`tenantcollection_findActive`},{operation:`findBySlug`,name:`tenantcollection_findBySlug`},{operation:`findByStatus`,name:`tenantcollection_findByStatus`},{operation:`findChildren`,name:`tenantcollection_findChildren`},{operation:`findParent`,name:`tenantcollection_findParent`},{operation:`findRoots`,name:`tenantcollection_findRoots`},{operation:`getAncestors`,name:`tenantcollection_getAncestors`},{operation:`getAncestorsFromRoot`,name:`tenantcollection_getAncestorsFromRoot`},{operation:`getDescendants`,name:`tenantcollection_getDescendants`},{operation:`getSiblings`,name:`tenantcollection_getSiblings`},{operation:`getTree`,name:`tenantcollection_getTree`},{operation:`isAncestorOf`,name:`tenantcollection_isAncestorOf`},{operation:`isDescendantOf`,name:`tenantcollection_isDescendantOf`},{operation:`makeRoot`,name:`tenantcollection_makeRoot`},{operation:`moveToParent`,name:`tenantcollection_moveToParent`},{operation:`validateHierarchy`,name:`tenantcollection_validateHierarchy`}],methods:[{name:`acceptsInheritance`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`canCascadeToChildren`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`createChild`,async:!0,parameters:[`parentTenantId: string`,`options: CreateChildTenantOptions`],returnType:`Promise<Tenant>`,aiCallable:!0},{name:`findActive`,async:!0,parameters:[],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`findBySlug`,async:!0,parameters:[`slug: string`],returnType:`Promise<Tenant | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: TenantStatus`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`findChildren`,async:!0,parameters:[`parentTenantId: string`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`findParent`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant | null>`,aiCallable:!0},{name:`findRoots`,async:!0,parameters:[],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`getAncestorIds`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAncestors`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`getAncestorsFromRoot`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`getDescendants`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`getSiblings`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant[]>`,aiCallable:!0},{name:`getTree`,async:!0,parameters:[`rootTenantId?: string`],returnType:`any`,aiCallable:!0},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isAncestorOf`,async:!0,parameters:[`potentialAncestorId: string`,`tenantId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isDescendantOf`,async:!0,parameters:[`potentialDescendantId: string`,`tenantId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`isRoot`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSuspended`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`makeRoot`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Tenant>`,aiCallable:!0},{name:`moveToParent`,async:!0,parameters:[`tenantId: string`,`newParentId: string | null`],returnType:`Promise<Tenant>`,aiCallable:!0},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`Promise<this>`,aiCallable:!1},{name:`validateHierarchy`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<string[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-users:TenantIntegration`,name:`TenantIntegration`,collection:`tenantintegrations`,fields:[{name:`tenantId`,type:`text`,required:!0,system:!0},{name:`provider`,type:`text`,required:!1,default:`aws`},{name:`externalIds`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`unprovisioned`,enum:[`unprovisioned`,`provisioning`,`active`,`drifted`,`failed`]},{name:`lastCheckedAt`,type:`datetime`,required:!1},{name:`lastCheckSummary`,type:`text`,required:!1},{name:`lastError`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/tenantintegrations/listForTenant`},{method:`POST`,path:`/tenantintegrations/findFor`},{method:`POST`,path:`/tenantintegrations/findOrInit`},{method:`GET`,path:`/tenantintegrations`},{method:`GET`,path:`/tenantintegrations/[id]`}],mcp:[{operation:`get`,name:`tenantintegration_get`},{operation:`list`,name:`tenantintegration_list`},{operation:`findFor`,name:`tenantintegrationcollection_findfor`},{operation:`findOrInit`,name:`tenantintegrationcollection_findorinit`},{operation:`listForTenant`,name:`tenantintegrationcollection_listfortenant`}],cli:[{operation:`create`,name:`tenantintegration_create`},{operation:`delete`,name:`tenantintegration_delete`},{operation:`get`,name:`tenantintegration_get`},{operation:`getExternalId`,name:`tenantintegration_getExternalId`},{operation:`getExternalIds`,name:`tenantintegration_getExternalIds`},{operation:`getLastCheckSummary`,name:`tenantintegration_getLastCheckSummary`},{operation:`list`,name:`tenantintegration_list`},{operation:`recordDoctorRun`,name:`tenantintegration_recordDoctorRun`},{operation:`setExternalId`,name:`tenantintegration_setExternalId`},{operation:`setExternalIds`,name:`tenantintegration_setExternalIds`},{operation:`setLastCheckSummary`,name:`tenantintegration_setLastCheckSummary`},{operation:`update`,name:`tenantintegration_update`},{operation:`findFor`,name:`tenantintegrationcollection_findFor`},{operation:`findOrInit`,name:`tenantintegrationcollection_findOrInit`},{operation:`listForTenant`,name:`tenantintegrationcollection_listForTenant`}],methods:[{name:`findFor`,async:!0,parameters:[`tenantId: string`,`provider: TenantIntegrationProvider`],returnType:`Promise<TenantIntegration | null>`,aiCallable:!0},{name:`findOrInit`,async:!0,parameters:[`tenantId: string`,`provider: TenantIntegrationProvider`],returnType:`Promise<TenantIntegration>`,aiCallable:!0},{name:`getExternalId`,async:!1,parameters:[`key: string`],returnType:`string | undefined`,aiCallable:!1},{name:`getExternalIds`,async:!1,parameters:[],returnType:`Record<string, string>`,aiCallable:!1},{name:`getLastCheckSummary`,async:!1,parameters:[],returnType:`TenantIntegrationCheckSummary[]`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`listForTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantIntegration[]>`,aiCallable:!0},{name:`recordDoctorRun`,async:!1,parameters:[`outcome: object`],returnType:`void`,aiCallable:!1},{name:`setExternalId`,async:!1,parameters:[`key: string`,`value: string | undefined`],returnType:`void`,aiCallable:!1},{name:`setExternalIds`,async:!1,parameters:[`externalIds: Record<string, string> | string`],returnType:`void`,aiCallable:!1},{name:`setLastCheckSummary`,async:!1,parameters:[`summary: TenantIntegrationCheckSummary[] | string`],returnType:`void`,aiCallable:!1}],references:[],exposed:!0},{id:`@happyvertical/smrt-users:TenantPermissionOverride`,name:`TenantPermissionOverride`,collection:`tenantpermissionoverrides`,description:`TenantPermissionOverride allows setting explicit permission values at the tenant level.`,fields:[{name:`tenantId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`permissionId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:Permission`},{name:`effect`,type:`text`,required:!1}],rest:[{method:`POST`,path:`/tenantpermissionoverrides/findByTenant`},{method:`POST`,path:`/tenantpermissionoverrides/findGrants`},{method:`POST`,path:`/tenantpermissionoverrides/findDenies`},{method:`POST`,path:`/tenantpermissionoverrides/findInherits`},{method:`POST`,path:`/tenantpermissionoverrides/getGrantedPermissionIds`},{method:`POST`,path:`/tenantpermissionoverrides/getDeniedPermissionIds`},{method:`POST`,path:`/tenantpermissionoverrides/getOverridesByEffect`},{method:`POST`,path:`/tenantpermissionoverrides/getOverridesByEffectBatch`},{method:`POST`,path:`/tenantpermissionoverrides/setOverride`},{method:`POST`,path:`/tenantpermissionoverrides/removeOverride`},{method:`POST`,path:`/tenantpermissionoverrides/removeAllOverrides`},{method:`POST`,path:`/tenantpermissionoverrides/grantPermission`},{method:`POST`,path:`/tenantpermissionoverrides/denyPermission`},{method:`POST`,path:`/tenantpermissionoverrides/inheritPermission`},{method:`POST`,path:`/tenantpermissionoverrides/bulkSetOverrides`},{method:`POST`,path:`/tenantpermissionoverrides/copyOverrides`},{method:`GET`,path:`/tenantpermissionoverrides`},{method:`GET`,path:`/tenantpermissionoverrides/[id]`}],mcp:[{operation:`get`,name:`tenantpermissionoverride_get`},{operation:`list`,name:`tenantpermissionoverride_list`},{operation:`bulkSetOverrides`,name:`tenantpermissionoverridecollection_bulksetoverrides`},{operation:`copyOverrides`,name:`tenantpermissionoverridecollection_copyoverrides`},{operation:`denyPermission`,name:`tenantpermissionoverridecollection_denypermission`},{operation:`findByTenant`,name:`tenantpermissionoverridecollection_findbytenant`},{operation:`findDenies`,name:`tenantpermissionoverridecollection_finddenies`},{operation:`findGrants`,name:`tenantpermissionoverridecollection_findgrants`},{operation:`findInherits`,name:`tenantpermissionoverridecollection_findinherits`},{operation:`getDeniedPermissionIds`,name:`tenantpermissionoverridecollection_getdeniedpermissionids`},{operation:`getGrantedPermissionIds`,name:`tenantpermissionoverridecollection_getgrantedpermissionids`},{operation:`getOverridesByEffect`,name:`tenantpermissionoverridecollection_getoverridesbyeffect`},{operation:`getOverridesByEffectBatch`,name:`tenantpermissionoverridecollection_getoverridesbyeffectbatch`},{operation:`grantPermission`,name:`tenantpermissionoverridecollection_grantpermission`},{operation:`inheritPermission`,name:`tenantpermissionoverridecollection_inheritpermission`},{operation:`removeAllOverrides`,name:`tenantpermissionoverridecollection_removealloverrides`},{operation:`removeOverride`,name:`tenantpermissionoverridecollection_removeoverride`},{operation:`setOverride`,name:`tenantpermissionoverridecollection_setoverride`}],cli:[{operation:`create`,name:`tenantpermissionoverride_create`},{operation:`delete`,name:`tenantpermissionoverride_delete`},{operation:`get`,name:`tenantpermissionoverride_get`},{operation:`hasExplicitEffect`,name:`tenantpermissionoverride_hasExplicitEffect`},{operation:`isDeny`,name:`tenantpermissionoverride_isDeny`},{operation:`isGrant`,name:`tenantpermissionoverride_isGrant`},{operation:`isInherit`,name:`tenantpermissionoverride_isInherit`},{operation:`list`,name:`tenantpermissionoverride_list`},{operation:`update`,name:`tenantpermissionoverride_update`},{operation:`bulkSetOverrides`,name:`tenantpermissionoverridecollection_bulkSetOverrides`},{operation:`copyOverrides`,name:`tenantpermissionoverridecollection_copyOverrides`},{operation:`denyPermission`,name:`tenantpermissionoverridecollection_denyPermission`},{operation:`findByTenant`,name:`tenantpermissionoverridecollection_findByTenant`},{operation:`findDenies`,name:`tenantpermissionoverridecollection_findDenies`},{operation:`findGrants`,name:`tenantpermissionoverridecollection_findGrants`},{operation:`findInherits`,name:`tenantpermissionoverridecollection_findInherits`},{operation:`getDeniedPermissionIds`,name:`tenantpermissionoverridecollection_getDeniedPermissionIds`},{operation:`getGrantedPermissionIds`,name:`tenantpermissionoverridecollection_getGrantedPermissionIds`},{operation:`getOverridesByEffect`,name:`tenantpermissionoverridecollection_getOverridesByEffect`},{operation:`getOverridesByEffectBatch`,name:`tenantpermissionoverridecollection_getOverridesByEffectBatch`},{operation:`grantPermission`,name:`tenantpermissionoverridecollection_grantPermission`},{operation:`inheritPermission`,name:`tenantpermissionoverridecollection_inheritPermission`},{operation:`removeAllOverrides`,name:`tenantpermissionoverridecollection_removeAllOverrides`},{operation:`removeOverride`,name:`tenantpermissionoverridecollection_removeOverride`},{operation:`setOverride`,name:`tenantpermissionoverridecollection_setOverride`}],methods:[{name:`bulkSetOverrides`,async:!0,parameters:[`tenantId: string`,`overrides: Array<object>`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`copyOverrides`,async:!0,parameters:[`fromTenantId: string`,`toTenantId: string`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`denyPermission`,async:!0,parameters:[`tenantId: string`,`permissionId: string`],returnType:`Promise<TenantPermissionOverride>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`findDenies`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`findGrants`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`findInherits`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantPermissionOverride[]>`,aiCallable:!0},{name:`getDeniedPermissionIds`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getGrantedPermissionIds`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<string[]>`,aiCallable:!0},{name:`getOverridesByEffect`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<TenantPermissionOverrideResult>`,aiCallable:!0},{name:`getOverridesByEffectBatch`,async:!0,parameters:[`tenantIds: string[]`],returnType:`Promise<Map<string, TenantPermissionOverrideResult>>`,aiCallable:!0},{name:`grantPermission`,async:!0,parameters:[`tenantId: string`,`permissionId: string`],returnType:`Promise<TenantPermissionOverride>`,aiCallable:!0},{name:`hasExplicitEffect`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`inheritPermission`,async:!0,parameters:[`tenantId: string`,`permissionId: string`],returnType:`Promise<TenantPermissionOverride>`,aiCallable:!0},{name:`isDeny`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isGrant`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInherit`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`removeAllOverrides`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<number>`,aiCallable:!0},{name:`removeOverride`,async:!0,parameters:[`tenantId: string`,`permissionId: string`],returnType:`Promise<boolean>`,aiCallable:!0},{name:`setOverride`,async:!0,parameters:[`tenantId: string`,`permissionId: string`,`effect: TenantPermissionEffect`],returnType:`Promise<TenantPermissionOverride>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Permission`,`@happyvertical/smrt-users:Tenant`],exposed:!0},{id:`@happyvertical/smrt-users:User`,name:`User`,collection:`users`,description:`User represents an authenticated identity in the system.`,fields:[{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`email`,type:`text`,required:!1,default:``},{name:`emailKey`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1},{name:`lastLoginAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/users/findByEmail`},{method:`POST`,path:`/users/findByProfile`},{method:`POST`,path:`/users/findByStatus`},{method:`POST`,path:`/users/findActive`},{method:`POST`,path:`/users/findPending`},{method:`POST`,path:`/users/getOrCreateForProfile`},{method:`POST`,path:`/users/getOrCreateFromOidc`},{method:`GET`,path:`/users`},{method:`GET`,path:`/users/[id]`}],mcp:[{operation:`get`,name:`user_get`},{operation:`list`,name:`user_list`},{operation:`findActive`,name:`usercollection_findactive`},{operation:`findByEmail`,name:`usercollection_findbyemail`},{operation:`findByProfile`,name:`usercollection_findbyprofile`},{operation:`findByStatus`,name:`usercollection_findbystatus`},{operation:`findPending`,name:`usercollection_findpending`},{operation:`getOrCreateForProfile`,name:`usercollection_getorcreateforprofile`},{operation:`getOrCreateFromOidc`,name:`usercollection_getorcreatefromoidc`}],cli:[{operation:`create`,name:`user_create`},{operation:`delete`,name:`user_delete`},{operation:`get`,name:`user_get`},{operation:`hasValidEmail`,name:`user_hasValidEmail`},{operation:`isActive`,name:`user_isActive`},{operation:`isPending`,name:`user_isPending`},{operation:`isSuspended`,name:`user_isSuspended`},{operation:`list`,name:`user_list`},{operation:`recordLogin`,name:`user_recordLogin`},{operation:`update`,name:`user_update`},{operation:`findActive`,name:`usercollection_findActive`},{operation:`findByEmail`,name:`usercollection_findByEmail`},{operation:`findByProfile`,name:`usercollection_findByProfile`},{operation:`findByStatus`,name:`usercollection_findByStatus`},{operation:`findPending`,name:`usercollection_findPending`},{operation:`getOrCreateForProfile`,name:`usercollection_getOrCreateForProfile`},{operation:`getOrCreateFromOidc`,name:`usercollection_getOrCreateFromOidc`}],methods:[{name:`findActive`,async:!0,parameters:[],returnType:`Promise<User[]>`,aiCallable:!0},{name:`findByEmail`,async:!0,parameters:[`email: string`],returnType:`Promise<User | null>`,aiCallable:!0},{name:`findByProfile`,async:!0,parameters:[`profileId: string`],returnType:`Promise<User | null>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`status: UserStatus`],returnType:`Promise<User[]>`,aiCallable:!0},{name:`findPending`,async:!0,parameters:[],returnType:`Promise<User[]>`,aiCallable:!0},{name:`getOrCreateForProfile`,async:!0,parameters:[`profileId: string`,`email: string`,`defaults?: Partial<object>`],returnType:`Promise<User>`,aiCallable:!0},{name:`getOrCreateFromOidc`,async:!0,parameters:[`claims: OidcClaims`,`provider: string`,`options?: GetOrCreateFromOidcOptions`],returnType:`Promise<OidcIdentityResult>`,aiCallable:!0},{name:`hasValidEmail`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isActive`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isPending`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isSuspended`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`recordLogin`,async:!1,parameters:[],returnType:`void`,aiCallable:!1},{name:`save`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`],exposed:!0},{id:`@happyvertical/smrt-users:UsersCliAuthApproveLimit`,name:`UsersCliAuthApproveLimit`,collection:`userscliauthapprovelimits`,description:`Private database arbiter shared by every terminal-auth process.`,fields:[{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`attemptCount`,type:`integer`,required:!0,default:0},{name:`windowStartedAt`,type:`datetime`,required:!0}],rest:[],mcp:[],cli:[],methods:[{name:`releaseAttempt`,async:!0,parameters:[`userId: string`,`windowStartedAt: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`reserveAttempt`,async:!0,parameters:[`input: object`],returnType:`Promise<CliAuthApproveReservation>`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!1},{id:`@happyvertical/smrt-users:UsersCliAuthRequest`,name:`UsersCliAuthRequest`,collection:`userscliauthrequests`,fields:[{name:`userCode`,type:`text`,required:!0},{name:`deviceCodeHash`,type:`text`,required:!0},{name:`status`,type:`text`,required:!1,enum:[`pending`,`approved`,`consumed`,`expired`]},{name:`userId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:User`},{name:`tenantId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:Tenant`,system:!0},{name:`sessionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-users:Session`},{name:`expiresAt`,type:`datetime`,required:!1},{name:`approvedAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/userscliauthrequests/approvePendingRequest`},{method:`POST`,path:`/userscliauthrequests/consumeApprovedSession`},{method:`POST`,path:`/userscliauthrequests/findByUserCode`},{method:`POST`,path:`/userscliauthrequests/findByDeviceCodeHash`},{method:`POST`,path:`/userscliauthrequests/deleteExpired`}],mcp:[{operation:`approvePendingRequest`,name:`userscliauthrequestcollection_approvependingrequest`},{operation:`consumeApprovedSession`,name:`userscliauthrequestcollection_consumeapprovedsession`},{operation:`deleteExpired`,name:`userscliauthrequestcollection_deleteexpired`},{operation:`findByDeviceCodeHash`,name:`userscliauthrequestcollection_findbydevicecodehash`},{operation:`findByUserCode`,name:`userscliauthrequestcollection_findbyusercode`}],cli:[{operation:`approvePendingRequest`,name:`userscliauthrequestcollection_approvePendingRequest`},{operation:`consumeApprovedSession`,name:`userscliauthrequestcollection_consumeApprovedSession`},{operation:`deleteExpired`,name:`userscliauthrequestcollection_deleteExpired`},{operation:`findByDeviceCodeHash`,name:`userscliauthrequestcollection_findByDeviceCodeHash`},{operation:`findByUserCode`,name:`userscliauthrequestcollection_findByUserCode`}],methods:[{name:`approvePendingRequest`,async:!0,parameters:[`input: ApprovePendingCliAuthRequestInput`],returnType:`Promise<ApprovedCliAuthRequestSnapshot | null>`,aiCallable:!0},{name:`consumeApprovedSession`,async:!0,parameters:[`deviceCodeHash: string`],returnType:`Promise<string | null>`,aiCallable:!0},{name:`deleteExpired`,async:!0,parameters:[`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByDeviceCodeHash`,async:!0,parameters:[`deviceCodeHash: string`],returnType:`Promise<UsersCliAuthRequest | null>`,aiCallable:!0},{name:`findByUserCode`,async:!0,parameters:[`userCode: string`],returnType:`Promise<UsersCliAuthRequest | null>`,aiCallable:!0}],references:[`@happyvertical/smrt-users:Session`,`@happyvertical/smrt-users:Tenant`,`@happyvertical/smrt-users:User`],exposed:!0},{id:`@happyvertical/smrt-users:UsersLoginAttempt`,name:`UsersLoginAttempt`,collection:`usersloginattempts`,description:`Private database arbiter shared by every process that authenticates.`,fields:[{name:`limiterKey`,type:`text`,required:!0},{name:`scope`,type:`text`,required:!0,enum:[`subject`,`source`]},{name:`attemptCount`,type:`integer`,required:!0,default:0},{name:`windowStartedAt`,type:`datetime`,required:!0},{name:`failureStreak`,type:`integer`,required:!0,default:0},{name:`lockedUntil`,type:`datetime`,required:!1},{name:`lastFailedAt`,type:`datetime`,required:!1},{name:`retainUntil`,type:`datetime`,required:!0}],rest:[],mcp:[],cli:[],methods:[{name:`deleteIdle`,async:!0,parameters:[`options?: object`],returnType:`Promise<number>`,aiCallable:!1},{name:`recordFailure`,async:!0,parameters:[`input: RecordLoginFailureInput`],returnType:`Promise<RecordedLoginFailure>`,aiCallable:!1},{name:`releaseAttempt`,async:!0,parameters:[`limiterKey: string`,`windowStartedAt: string`,`options?: object`],returnType:`Promise<void>`,aiCallable:!1},{name:`reserveAttempt`,async:!0,parameters:[`input: ReserveLoginAttemptInput`],returnType:`Promise<LoginAttemptReservation>`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-users:UsersLoginAuditEvent`,name:`UsersLoginAuditEvent`,collection:`usersloginauditevents`,fields:[{name:`kind`,type:`text`,required:!0},{name:`outcome`,type:`text`,required:!0,enum:[`denied`,`failed`,`succeeded`,`locked`,`managed`]},{name:`subjectKeyHash`,type:`text`,required:!1},{name:`sourceKeyHash`,type:`text`,required:!1},{name:`retryAfterSeconds`,type:`integer`,required:!1},{name:`occurredAt`,type:`datetime`,required:!0},{name:`metadata`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`deleteOlderThan`,async:!0,parameters:[`maxAgeMs: number`,`options?: object`],returnType:`Promise<number>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`value: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[],exposed:!1},{id:`@happyvertical/smrt-users:UsersMagicLinkToken`,name:`UsersMagicLinkToken`,collection:`usersmagiclinktokens`,fields:[{name:`nonce`,type:`text`,required:!0,default:``},{name:`email`,type:`text`,required:!1,default:``},{name:`used`,type:`boolean`,required:!1,default:!1},{name:`expiresAt`,type:`datetime`,required:!1}],rest:[{method:`POST`,path:`/usersmagiclinktokens/findByNonce`},{method:`POST`,path:`/usersmagiclinktokens/markUsed`},{method:`POST`,path:`/usersmagiclinktokens/deleteExpired`}],mcp:[{operation:`deleteExpired`,name:`usersmagiclinktokencollection_deleteexpired`},{operation:`findByNonce`,name:`usersmagiclinktokencollection_findbynonce`},{operation:`markUsed`,name:`usersmagiclinktokencollection_markused`}],cli:[{operation:`create`,name:`usersmagiclinktoken_create`},{operation:`delete`,name:`usersmagiclinktoken_delete`},{operation:`get`,name:`usersmagiclinktoken_get`},{operation:`isExpired`,name:`usersmagiclinktoken_isExpired`},{operation:`isValid`,name:`usersmagiclinktoken_isValid`},{operation:`list`,name:`usersmagiclinktoken_list`},{operation:`update`,name:`usersmagiclinktoken_update`},{operation:`deleteExpired`,name:`usersmagiclinktokencollection_deleteExpired`},{operation:`findByNonce`,name:`usersmagiclinktokencollection_findByNonce`},{operation:`markUsed`,name:`usersmagiclinktokencollection_markUsed`}],methods:[{name:`deleteExpired`,async:!0,parameters:[`options?: object`],returnType:`Promise<number>`,aiCallable:!0},{name:`findByNonce`,async:!0,parameters:[`nonce: string`],returnType:`Promise<UsersMagicLinkToken | null>`,aiCallable:!0},{name:`isExpired`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isValid`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`markUsed`,async:!0,parameters:[`nonce: string`],returnType:`Promise<boolean>`,aiCallable:!0}],references:[],exposed:!0},{id:`@happyvertical/smrt-users:UsersPasswordCredential`,name:`UsersPasswordCredential`,collection:`userspasswordcredentials`,fields:[{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`passwordHash`,type:`text`,required:!0},{name:`version`,type:`integer`,required:!0,default:1},{name:`mustChange`,type:`boolean`,required:!0,default:!1},{name:`rotatedAt`,type:`datetime`,required:!1},{name:`rotatedBy`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`deleteByUserId`,async:!0,parameters:[`userId: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`deleteIfCurrent`,async:!0,parameters:[`expected: UsersPasswordCredential`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`findByUserId`,async:!0,parameters:[`userId: string`],returnType:`Promise<UsersPasswordCredential | null>`,aiCallable:!1},{name:`insertIfAbsent`,async:!0,parameters:[`userId: string`,`write: PasswordCredentialWrite`],returnType:`Promise<UsersPasswordCredential | null>`,aiCallable:!1},{name:`replaceHashIfUnchanged`,async:!0,parameters:[`userId: string`,`expectedHash: string`,`upgradedHash: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`replaceIfCurrent`,async:!0,parameters:[`expected: UsersPasswordCredential`,`write: Omit<PasswordCredentialWrite, 'mustChange'>`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`upsertForUser`,async:!0,parameters:[`userId: string`,`write: PasswordCredentialWrite`],returnType:`Promise<UsersPasswordCredential>`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!1},{id:`@happyvertical/smrt-users:UsersPinCredential`,name:`UsersPinCredential`,collection:`userspincredentials`,fields:[{name:`userId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-users:User`},{name:`pinHash`,type:`text`,required:!0},{name:`version`,type:`integer`,required:!0,default:1},{name:`mustReset`,type:`boolean`,required:!0,default:!1},{name:`rotatedAt`,type:`datetime`,required:!1},{name:`rotatedBy`,type:`text`,required:!1}],rest:[],mcp:[],cli:[],methods:[{name:`deleteByUserId`,async:!0,parameters:[`userId: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`findByUserId`,async:!0,parameters:[`userId: string`],returnType:`Promise<UsersPinCredential | null>`,aiCallable:!1},{name:`upsertForUser`,async:!0,parameters:[`userId: string`,`write: PinCredentialWrite`],returnType:`Promise<UsersPinCredential>`,aiCallable:!1}],references:[`@happyvertical/smrt-users:User`],exposed:!1}],dependencies:[`profiles`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3617`,`#3624`,`#3626`],reason:`node:crypto/async_hooks; core migrations`,via:[`@happyvertical/smrt-profiles`,`@happyvertical/smrt-tenancy`]},recipes:[{id:`users.roles-and-permissions`,label:`Roles and permissions`,summary:`Manage tenant roles, memberships, permissions, and controlled sharing.`,synonyms:[`access control`,`rbac`,`sharing`],models:[`@happyvertical/smrt-users:Role`,`@happyvertical/smrt-users:Permission`,`@happyvertical/smrt-users:Membership`,`@happyvertical/smrt-users:ResourceGrant`],nav:[{label:`Roles`,model:`@happyvertical/smrt-users:Role`,icon:`users`,description:`Define tenant permission bundles.`,noun:`role`},{label:`Permissions`,model:`@happyvertical/smrt-users:Permission`,icon:`settings`,description:`Review operations available to roles.`,noun:`permission`}],requires:[],group:{id:`account-access`,label:`Account access`,summary:`Sign in and manage account sessions.`},section:{id:`access-control`,label:`Access control`,icon:`users`,description:`Manage tenant roles, permissions, and reviewed sharing.`},options:{"@happyvertical/smrt-users:ResourceGrant":{exposure:{api:!1,mcp:!1,cli:!1}}},help:{markdown:`## Overview
830
+
831
+ Roles and permissions control tenant access. Denies take precedence, and role changes should be reviewed before they are applied.
832
+
833
+ ## Tasks
834
+
835
+ - Create a role and assign only the permissions required for its work.
836
+ - Add a member to the correct tenant through {field:Membership.tenantId} and assign a role through {field:Membership.roleId}.
837
+ - Use a resource grant only when a record needs a reviewed exception to its ordinary role rules.
838
+ `,fieldRefs:[`Membership.roleId`,`Membership.tenantId`]},demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626).`]}},{id:`users.sign-in`,label:`Sign in`,summary:`Access an account through an application-authorized sign-in flow.`,synonyms:[`log in`,`authentication`,`single sign-on`],models:[`@happyvertical/smrt-users:User`,`@happyvertical/smrt-users:Session`],nav:[{label:`Security sessions`,model:`@happyvertical/smrt-users:Session`,icon:`settings`,description:`Review active sessions and sign out unrecognized devices.`,noun:`security session`}],requires:[],group:{id:`account-access`,label:`Account access`,summary:`Sign in and manage account sessions.`},section:{id:`account-security`,label:`Account security`,icon:`settings`,description:`Review account access and active sessions.`},options:{"@happyvertical/smrt-users:Session":{exposure:{api:!1,mcp:!1,cli:!1}}},help:{markdown:`## Overview
839
+
840
+ Use your organization’s approved sign-in method. Sessions are managed on the server and are never shared through API or MCP tools.
841
+
842
+ ## Tasks
843
+
844
+ - Review active sign-in sessions from your account security page and end sessions you no longer recognize.
845
+ - Ask an administrator for recovery help if you lose access to every available credential.
846
+ `,fieldRefs:[]},surfaces:[{kind:`settings-panel`,export:`@happyvertical/smrt-users/svelte#AccountSecurityPanel`,label:`Account security`}],providers:[{id:`oidc`,kind:`oauth`,options:[`oidc`],required:!1}],demo:{mode:`server`,reasons:[`Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626).`]}}]},{id:`video`,packageName:`@happyvertical/smrt-video`,version:`0.55.11`,description:`Video content management for AI-powered video production in the SMRT ecosystem`,models:[{id:`@happyvertical/smrt-video:Character`,name:`Character`,collection:`characters`,description:`Virtual character for AI-powered video production`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`imageAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`baseMotionAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`voiceProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-voice:VoiceProfile`},{name:`brandingKit`,type:`json`,required:!1},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`ready`]},{name:`performerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Performer`},{name:`defaultSceneId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Scene`},{name:`sceneConfigs`,type:`json`,required:!1},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[{method:`GET`,path:`/characters`},{method:`GET`,path:`/characters/[id]`},{method:`POST`,path:`/characters`},{method:`PATCH`,path:`/characters/[id]`},{method:`DELETE`,path:`/characters/[id]`},{method:`POST`,path:`/characters/findByTenant`},{method:`POST`,path:`/characters/findGlobal`},{method:`POST`,path:`/characters/findByPerformer`},{method:`POST`,path:`/characters/findReady`}],mcp:[{operation:`get`,name:`character_get`},{operation:`list`,name:`character_list`},{operation:`findByPerformer`,name:`charactercollection_findbyperformer`},{operation:`findByTenant`,name:`charactercollection_findbytenant`},{operation:`findGlobal`,name:`charactercollection_findglobal`},{operation:`findReady`,name:`charactercollection_findready`}],cli:[{operation:`addAsset`,name:`character_addAsset`},{operation:`create`,name:`character_create`},{operation:`delete`,name:`character_delete`},{operation:`get`,name:`character_get`},{operation:`getAssetByRole`,name:`character_getAssetByRole`},{operation:`getAssets`,name:`character_getAssets`},{operation:`list`,name:`character_list`},{operation:`removeAsset`,name:`character_removeAsset`},{operation:`update`,name:`character_update`},{operation:`findByPerformer`,name:`charactercollection_findByPerformer`},{operation:`findByTenant`,name:`charactercollection_findByTenant`},{operation:`findGlobal`,name:`charactercollection_findGlobal`},{operation:`findReady`,name:`charactercollection_findReady`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`role?: CharacterAssetRole`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`findByPerformer`,async:!0,parameters:[`performerId: string`],returnType:`Promise<Character[]>`,aiCallable:!0},{name:`findByTenant`,async:!0,parameters:[`tenantId: string`],returnType:`Promise<Character[]>`,aiCallable:!0},{name:`findGlobal`,async:!0,parameters:[],returnType:`Promise<Character[]>`,aiCallable:!0},{name:`findReady`,async:!0,parameters:[],returnType:`Promise<Character[]>`,aiCallable:!0},{name:`getAssetByRole`,async:!0,parameters:[`role: CharacterAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`role?: CharacterAssetRole`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`role?: CharacterAssetRole`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:Performer`,`@happyvertical/smrt-video:Scene`,`@happyvertical/smrt-voice:VoiceProfile`],exposed:!0},{id:`@happyvertical/smrt-video:CharacterAsset`,name:`CharacterAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`characterId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Character`},{name:`role`,type:`text`,required:!1,default:`seed-image`,enum:[`seed-image`,`base-motion`,`logo`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`characterasset_get`},{operation:`list`,name:`characterasset_list`}],cli:[{operation:`associateWith`,name:`characterasset_associateWith`},{operation:`create`,name:`characterasset_create`},{operation:`delete`,name:`characterasset_delete`},{operation:`get`,name:`characterasset_get`},{operation:`getAssociations`,name:`characterasset_getAssociations`},{operation:`getBySlug`,name:`characterasset_getBySlug`},{operation:`getDerivatives`,name:`characterasset_getDerivatives`},{operation:`getExternalRef`,name:`characterasset_getExternalRef`},{operation:`getExternalRefs`,name:`characterasset_getExternalRefs`},{operation:`getMetadata`,name:`characterasset_getMetadata`},{operation:`getSource`,name:`characterasset_getSource`},{operation:`getStatus`,name:`characterasset_getStatus`},{operation:`getTags`,name:`characterasset_getTags`},{operation:`getType`,name:`characterasset_getType`},{operation:`hasTag`,name:`characterasset_hasTag`},{operation:`list`,name:`characterasset_list`},{operation:`mergeMetadata`,name:`characterasset_mergeMetadata`},{operation:`setExternalRef`,name:`characterasset_setExternalRef`},{operation:`setMetadata`,name:`characterasset_setMetadata`},{operation:`update`,name:`characterasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:Character`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:CharacterOwnedAsset`,name:`CharacterOwnedAsset`,collection:`characterownedassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`characterId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-video:Character`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`role`,type:`text`,required:!0,default:`seed-image`,enum:[`seed-image`,`base-motion`,`logo`]},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:Character`],exposed:!1},{id:`@happyvertical/smrt-video:CompositeJob`,name:`CompositeJob`,collection:`compositejobs`,description:`Composite job for tracking virtual production compositing`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`characterVideoAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`sceneId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Scene`},{name:`viewpointId`,type:`text`,required:!1},{name:`anchorPointId`,type:`text`,required:!1},{name:`scale`,type:`decimal`,required:!1,default:1},{name:`position`,type:`json`,required:!1},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`removing_bg`,`analyzing_light`,`compositing`,`complete`,`failed`]},{name:`progress`,type:`integer`,required:!1,default:0},{name:`outputAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`errorMessage`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/compositejobs`},{method:`GET`,path:`/compositejobs/[id]`},{method:`POST`,path:`/compositejobs`},{method:`PATCH`,path:`/compositejobs/[id]`}],mcp:[{operation:`get`,name:`compositejob_get`},{operation:`list`,name:`compositejob_list`}],cli:[{operation:`create`,name:`compositejob_create`},{operation:`delete`,name:`compositejob_delete`},{operation:`get`,name:`compositejob_get`},{operation:`list`,name:`compositejob_list`},{operation:`update`,name:`compositejob_update`}],methods:[],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:Scene`],exposed:!0},{id:`@happyvertical/smrt-video:Performer`,name:`Performer`,collection:`performers`,description:`The physical likeness/face DNA`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`dna`,type:`json`,required:!1},{name:`referenceAssetIds`,type:`json`,required:!1},{name:`seedImageAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`voiceProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-voice:VoiceProfile`},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`ready`]},{name:`profileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`}],rest:[{method:`GET`,path:`/performers`},{method:`GET`,path:`/performers/[id]`},{method:`POST`,path:`/performers`},{method:`PATCH`,path:`/performers/[id]`},{method:`DELETE`,path:`/performers/[id]`}],mcp:[{operation:`get`,name:`performer_get`},{operation:`list`,name:`performer_list`}],cli:[{operation:`addAsset`,name:`performer_addAsset`},{operation:`create`,name:`performer_create`},{operation:`delete`,name:`performer_delete`},{operation:`get`,name:`performer_get`},{operation:`getAssetByRole`,name:`performer_getAssetByRole`},{operation:`getAssets`,name:`performer_getAssets`},{operation:`list`,name:`performer_list`},{operation:`removeAsset`,name:`performer_removeAsset`},{operation:`update`,name:`performer_update`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`role?: PerformerAssetRole`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssetByRole`,async:!0,parameters:[`role: PerformerAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`role?: PerformerAssetRole`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`role?: PerformerAssetRole`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-voice:VoiceProfile`],exposed:!0},{id:`@happyvertical/smrt-video:PerformerAsset`,name:`PerformerAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`performerId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Performer`},{name:`role`,type:`text`,required:!1,default:`reference`,enum:[`reference`,`seed`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`performerasset_get`},{operation:`list`,name:`performerasset_list`}],cli:[{operation:`associateWith`,name:`performerasset_associateWith`},{operation:`create`,name:`performerasset_create`},{operation:`delete`,name:`performerasset_delete`},{operation:`get`,name:`performerasset_get`},{operation:`getAssociations`,name:`performerasset_getAssociations`},{operation:`getBySlug`,name:`performerasset_getBySlug`},{operation:`getDerivatives`,name:`performerasset_getDerivatives`},{operation:`getExternalRef`,name:`performerasset_getExternalRef`},{operation:`getExternalRefs`,name:`performerasset_getExternalRefs`},{operation:`getMetadata`,name:`performerasset_getMetadata`},{operation:`getSource`,name:`performerasset_getSource`},{operation:`getStatus`,name:`performerasset_getStatus`},{operation:`getTags`,name:`performerasset_getTags`},{operation:`getType`,name:`performerasset_getType`},{operation:`hasTag`,name:`performerasset_hasTag`},{operation:`list`,name:`performerasset_list`},{operation:`mergeMetadata`,name:`performerasset_mergeMetadata`},{operation:`setExternalRef`,name:`performerasset_setExternalRef`},{operation:`setMetadata`,name:`performerasset_setMetadata`},{operation:`update`,name:`performerasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:Performer`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:PerformerOwnedAsset`,name:`PerformerOwnedAsset`,collection:`performerownedassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`performerId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-video:Performer`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`role`,type:`text`,required:!0,default:`reference`,enum:[`reference`,`seed`]},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:Performer`],exposed:!1},{id:`@happyvertical/smrt-video:Scene`,name:`Scene`,collection:`scenes`,description:`Scene for virtual production compositing`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`sourceAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`sourceType`,type:`text`,required:!1,default:`image`,enum:[`image`,`video`,`panorama_360`,`panorama_180`]},{name:`projection`,type:`text`,required:!1,enum:[`equirectangular`,`cubemap`]},{name:`viewpoints`,type:`json`,required:!1},{name:`lightingProfile`,type:`json`,required:!1},{name:`location`,type:`json`,required:!1},{name:`anchorPoints`,type:`json`,required:!1},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`processing`,`ready`,`failed`]}],rest:[{method:`GET`,path:`/scenes`},{method:`GET`,path:`/scenes/[id]`},{method:`POST`,path:`/scenes`},{method:`PATCH`,path:`/scenes/[id]`},{method:`DELETE`,path:`/scenes/[id]`}],mcp:[{operation:`get`,name:`scene_get`},{operation:`list`,name:`scene_list`}],cli:[{operation:`addAsset`,name:`scene_addAsset`},{operation:`create`,name:`scene_create`},{operation:`delete`,name:`scene_delete`},{operation:`get`,name:`scene_get`},{operation:`getAssetByRole`,name:`scene_getAssetByRole`},{operation:`getAssets`,name:`scene_getAssets`},{operation:`list`,name:`scene_list`},{operation:`removeAsset`,name:`scene_removeAsset`},{operation:`update`,name:`scene_update`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`role?: SceneAssetRole`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`getAssetByRole`,async:!0,parameters:[`role: SceneAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`role?: SceneAssetRole`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`role?: SceneAssetRole`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!0},{id:`@happyvertical/smrt-video:SceneAsset`,name:`SceneAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`sceneId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Scene`},{name:`role`,type:`text`,required:!1,default:`source`,enum:[`source`,`viewpoint-extract`,`env-map`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`sceneasset_get`},{operation:`list`,name:`sceneasset_list`}],cli:[{operation:`associateWith`,name:`sceneasset_associateWith`},{operation:`create`,name:`sceneasset_create`},{operation:`delete`,name:`sceneasset_delete`},{operation:`get`,name:`sceneasset_get`},{operation:`getAssociations`,name:`sceneasset_getAssociations`},{operation:`getBySlug`,name:`sceneasset_getBySlug`},{operation:`getDerivatives`,name:`sceneasset_getDerivatives`},{operation:`getExternalRef`,name:`sceneasset_getExternalRef`},{operation:`getExternalRefs`,name:`sceneasset_getExternalRefs`},{operation:`getMetadata`,name:`sceneasset_getMetadata`},{operation:`getSource`,name:`sceneasset_getSource`},{operation:`getStatus`,name:`sceneasset_getStatus`},{operation:`getTags`,name:`sceneasset_getTags`},{operation:`getType`,name:`sceneasset_getType`},{operation:`hasTag`,name:`sceneasset_hasTag`},{operation:`list`,name:`sceneasset_list`},{operation:`mergeMetadata`,name:`sceneasset_mergeMetadata`},{operation:`setExternalRef`,name:`sceneasset_setExternalRef`},{operation:`setMetadata`,name:`sceneasset_setMetadata`},{operation:`update`,name:`sceneasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:Scene`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:SceneOwnedAsset`,name:`SceneOwnedAsset`,collection:`sceneownedassets`,fields:[{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`sceneId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-video:Scene`},{name:`assetId`,type:`crossPackageRef`,required:!0,related:`@happyvertical/smrt-assets:Asset`},{name:`role`,type:`text`,required:!0,default:`source`,enum:[`source`,`viewpoint-extract`,`env-map`]},{name:`sortOrder`,type:`integer`,required:!0,default:0}],rest:[],mcp:[],cli:[],methods:[{name:`attach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionAttachOptions`],returnType:`Promise<TItem>`,aiCallable:!1},{name:`byLeft`,async:!0,parameters:[`leftId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`byRight`,async:!0,parameters:[`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<TItem[]>`,aiCallable:!1},{name:`detach`,async:!0,parameters:[`leftId: string`,`rightId: string`,`opts?: JunctionFilterOptions`],returnType:`Promise<void>`,aiCallable:!1},{name:`setLinks`,async:!0,parameters:[`leftId: string`,`rightIds: string[]`,`opts?: JunctionAttachOptions`],returnType:`Promise<void>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:Scene`],exposed:!1},{id:`@happyvertical/smrt-video:VideoComposition`,name:`VideoComposition`,collection:`contents`,description:`Publishable video composition`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`fps`,type:`integer`,required:!1,default:30},{name:`width`,type:`integer`,required:!1,default:1920},{name:`height`,type:`integer`,required:!1,default:1080},{name:`durationInFrames`,type:`integer`,required:!1,default:0},{name:`renderStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`rendering`,`ready`,`failed`]},{name:`renderProgress`,type:`integer`,required:!1,default:0}],rest:[{method:`GET`,path:`/contents`},{method:`GET`,path:`/contents/[id]`},{method:`POST`,path:`/contents`},{method:`PATCH`,path:`/contents/[id]`},{method:`DELETE`,path:`/contents/[id]`},{method:`POST`,path:`/contents/findByRenderStatus`},{method:`POST`,path:`/contents/findReady`}],mcp:[{operation:`get`,name:`videocomposition_get`},{operation:`list`,name:`videocomposition_list`},{operation:`findByRenderStatus`,name:`videocompositioncollection_findbyrenderstatus`},{operation:`findReady`,name:`videocompositioncollection_findready`}],cli:[{operation:`addAsset`,name:`videocomposition_addAsset`},{operation:`addFact`,name:`videocomposition_addFact`},{operation:`addReference`,name:`videocomposition_addReference`},{operation:`browseFacts`,name:`videocomposition_browseFacts`},{operation:`create`,name:`videocomposition_create`},{operation:`createVersion`,name:`videocomposition_createVersion`},{operation:`delete`,name:`videocomposition_delete`},{operation:`evaluateReviewProfile`,name:`videocomposition_evaluateReviewProfile`},{operation:`evaluateReviewProfileAction`,name:`videocomposition_evaluateReviewProfileAction`},{operation:`generateThumbnail`,name:`videocomposition_generateThumbnail`},{operation:`get`,name:`videocomposition_get`},{operation:`getAncestorPaths`,name:`videocomposition_getAncestorPaths`},{operation:`getAssetByRole`,name:`videocomposition_getAssetByRole`},{operation:`getAssetIds`,name:`videocomposition_getAssetIds`},{operation:`getAssets`,name:`videocomposition_getAssets`},{operation:`getCategorySegments`,name:`videocomposition_getCategorySegments`},{operation:`getCorrections`,name:`videocomposition_getCorrections`},{operation:`getFactAuditState`,name:`videocomposition_getFactAuditState`},{operation:`getFactAuditStateAction`,name:`videocomposition_getFactAuditStateAction`},{operation:`getFactLinks`,name:`videocomposition_getFactLinks`},{operation:`getFacts`,name:`videocomposition_getFacts`},{operation:`getFactsState`,name:`videocomposition_getFactsState`},{operation:`getGovernanceState`,name:`videocomposition_getGovernanceState`},{operation:`getGovernanceStateAction`,name:`videocomposition_getGovernanceStateAction`},{operation:`getMetadata`,name:`videocomposition_getMetadata`},{operation:`getParentCategory`,name:`videocomposition_getParentCategory`},{operation:`getPublishedTransparency`,name:`videocomposition_getPublishedTransparency`},{operation:`getPublishedTransparencyAction`,name:`videocomposition_getPublishedTransparencyAction`},{operation:`getReferenceDrift`,name:`videocomposition_getReferenceDrift`},{operation:`getReferenceEdges`,name:`videocomposition_getReferenceEdges`},{operation:`getReferences`,name:`videocomposition_getReferences`},{operation:`getReviewRequirements`,name:`videocomposition_getReviewRequirements`},{operation:`getReviews`,name:`videocomposition_getReviews`},{operation:`getRootCategory`,name:`videocomposition_getRootCategory`},{operation:`getThumbnail`,name:`videocomposition_getThumbnail`},{operation:`getVersions`,name:`videocomposition_getVersions`},{operation:`isGoverned`,name:`videocomposition_isGoverned`},{operation:`isInCategory`,name:`videocomposition_isInCategory`},{operation:`isReadyForReviewProfile`,name:`videocomposition_isReadyForReviewProfile`},{operation:`issueCorrection`,name:`videocomposition_issueCorrection`},{operation:`issueCorrectionAction`,name:`videocomposition_issueCorrectionAction`},{operation:`list`,name:`videocomposition_list`},{operation:`listCorrections`,name:`videocomposition_listCorrections`},{operation:`listReviewProfilesAction`,name:`videocomposition_listReviewProfilesAction`},{operation:`listReviews`,name:`videocomposition_listReviews`},{operation:`listVersions`,name:`videocomposition_listVersions`},{operation:`loadReferences`,name:`videocomposition_loadReferences`},{operation:`mutateVersionAction`,name:`videocomposition_mutateVersionAction`},{operation:`previewTransparency`,name:`videocomposition_previewTransparency`},{operation:`previewTransparencyAction`,name:`videocomposition_previewTransparencyAction`},{operation:`recheckFactClaims`,name:`videocomposition_recheckFactClaims`},{operation:`recheckFactClaimsAction`,name:`videocomposition_recheckFactClaimsAction`},{operation:`removeAsset`,name:`videocomposition_removeAsset`},{operation:`removeFact`,name:`videocomposition_removeFact`},{operation:`removeReference`,name:`videocomposition_removeReference`},{operation:`repairFactAudit`,name:`videocomposition_repairFactAudit`},{operation:`repairFactAuditAction`,name:`videocomposition_repairFactAuditAction`},{operation:`repairFactEvidence`,name:`videocomposition_repairFactEvidence`},{operation:`repairFactEvidenceAction`,name:`videocomposition_repairFactEvidenceAction`},{operation:`resolveGovernance`,name:`videocomposition_resolveGovernance`},{operation:`restoreFromVersion`,name:`videocomposition_restoreFromVersion`},{operation:`reviewFacts`,name:`videocomposition_reviewFacts`},{operation:`reviewSafety`,name:`videocomposition_reviewSafety`},{operation:`runReview`,name:`videocomposition_runReview`},{operation:`runReviewAction`,name:`videocomposition_runReviewAction`},{operation:`setMetadata`,name:`videocomposition_setMetadata`},{operation:`setThumbnail`,name:`videocomposition_setThumbnail`},{operation:`syncFacts`,name:`videocomposition_syncFacts`},{operation:`syncFactsState`,name:`videocomposition_syncFactsState`},{operation:`update`,name:`videocomposition_update`},{operation:`updateFactEvidenceStatus`,name:`videocomposition_updateFactEvidenceStatus`},{operation:`updateFactEvidenceStatusAction`,name:`videocomposition_updateFactEvidenceStatusAction`},{operation:`updateMetadata`,name:`videocomposition_updateMetadata`},{operation:`findByRenderStatus`,name:`videocompositioncollection_findByRenderStatus`},{operation:`findReady`,name:`videocompositioncollection_findReady`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`findByRenderStatus`,async:!0,parameters:[`renderStatus: RenderStatus`],returnType:`Promise<VideoComposition[]>`,aiCallable:!0},{name:`findReady`,async:!0,parameters:[],returnType:`Promise<VideoComposition[]>`,aiCallable:!0},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetByRole`,async:!0,parameters:[`role: VideoCompositionAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!0},{id:`@happyvertical/smrt-video:VideoCompositionAsset`,name:`VideoCompositionAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`videoCompositionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:VideoComposition`},{name:`role`,type:`text`,required:!1,default:`video`,enum:[`video`,`audio`,`thumbnail`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`videocompositionasset_get`},{operation:`list`,name:`videocompositionasset_list`}],cli:[{operation:`associateWith`,name:`videocompositionasset_associateWith`},{operation:`create`,name:`videocompositionasset_create`},{operation:`delete`,name:`videocompositionasset_delete`},{operation:`get`,name:`videocompositionasset_get`},{operation:`getAssociations`,name:`videocompositionasset_getAssociations`},{operation:`getBySlug`,name:`videocompositionasset_getBySlug`},{operation:`getDerivatives`,name:`videocompositionasset_getDerivatives`},{operation:`getExternalRef`,name:`videocompositionasset_getExternalRef`},{operation:`getExternalRefs`,name:`videocompositionasset_getExternalRefs`},{operation:`getMetadata`,name:`videocompositionasset_getMetadata`},{operation:`getSource`,name:`videocompositionasset_getSource`},{operation:`getStatus`,name:`videocompositionasset_getStatus`},{operation:`getTags`,name:`videocompositionasset_getTags`},{operation:`getType`,name:`videocompositionasset_getType`},{operation:`hasTag`,name:`videocompositionasset_hasTag`},{operation:`list`,name:`videocompositionasset_list`},{operation:`mergeMetadata`,name:`videocompositionasset_mergeMetadata`},{operation:`setExternalRef`,name:`videocompositionasset_setExternalRef`},{operation:`setMetadata`,name:`videocompositionasset_setMetadata`},{operation:`update`,name:`videocompositionasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:VideoComposition`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:VideoSequence`,name:`VideoSequence`,collection:`contents`,description:`Thematic section of a video composition`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`compositionId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:VideoComposition`},{name:`position`,type:`integer`,required:!1,default:0},{name:`durationInFrames`,type:`integer`,required:!1,default:0},{name:`transitionType`,type:`text`,required:!1,default:`none`,enum:[`none`,`fade`,`slide`,`wipe`]},{name:`transitionDurationFrames`,type:`integer`,required:!1,default:0}],rest:[{method:`GET`,path:`/contents`},{method:`GET`,path:`/contents/[id]`},{method:`POST`,path:`/contents`},{method:`PATCH`,path:`/contents/[id]`},{method:`DELETE`,path:`/contents/[id]`},{method:`POST`,path:`/contents/findByComposition`},{method:`POST`,path:`/contents/findStandalone`}],mcp:[{operation:`get`,name:`videosequence_get`},{operation:`list`,name:`videosequence_list`},{operation:`findByComposition`,name:`videosequencecollection_findbycomposition`},{operation:`findStandalone`,name:`videosequencecollection_findstandalone`}],cli:[{operation:`addAsset`,name:`videosequence_addAsset`},{operation:`addFact`,name:`videosequence_addFact`},{operation:`addReference`,name:`videosequence_addReference`},{operation:`browseFacts`,name:`videosequence_browseFacts`},{operation:`create`,name:`videosequence_create`},{operation:`createVersion`,name:`videosequence_createVersion`},{operation:`delete`,name:`videosequence_delete`},{operation:`evaluateReviewProfile`,name:`videosequence_evaluateReviewProfile`},{operation:`evaluateReviewProfileAction`,name:`videosequence_evaluateReviewProfileAction`},{operation:`generateThumbnail`,name:`videosequence_generateThumbnail`},{operation:`get`,name:`videosequence_get`},{operation:`getAncestorPaths`,name:`videosequence_getAncestorPaths`},{operation:`getAssetByRole`,name:`videosequence_getAssetByRole`},{operation:`getAssetIds`,name:`videosequence_getAssetIds`},{operation:`getAssets`,name:`videosequence_getAssets`},{operation:`getCategorySegments`,name:`videosequence_getCategorySegments`},{operation:`getCorrections`,name:`videosequence_getCorrections`},{operation:`getFactAuditState`,name:`videosequence_getFactAuditState`},{operation:`getFactAuditStateAction`,name:`videosequence_getFactAuditStateAction`},{operation:`getFactLinks`,name:`videosequence_getFactLinks`},{operation:`getFacts`,name:`videosequence_getFacts`},{operation:`getFactsState`,name:`videosequence_getFactsState`},{operation:`getGovernanceState`,name:`videosequence_getGovernanceState`},{operation:`getGovernanceStateAction`,name:`videosequence_getGovernanceStateAction`},{operation:`getMetadata`,name:`videosequence_getMetadata`},{operation:`getParentCategory`,name:`videosequence_getParentCategory`},{operation:`getPublishedTransparency`,name:`videosequence_getPublishedTransparency`},{operation:`getPublishedTransparencyAction`,name:`videosequence_getPublishedTransparencyAction`},{operation:`getReferenceDrift`,name:`videosequence_getReferenceDrift`},{operation:`getReferenceEdges`,name:`videosequence_getReferenceEdges`},{operation:`getReferences`,name:`videosequence_getReferences`},{operation:`getReviewRequirements`,name:`videosequence_getReviewRequirements`},{operation:`getReviews`,name:`videosequence_getReviews`},{operation:`getRootCategory`,name:`videosequence_getRootCategory`},{operation:`getThumbnail`,name:`videosequence_getThumbnail`},{operation:`getVersions`,name:`videosequence_getVersions`},{operation:`isGoverned`,name:`videosequence_isGoverned`},{operation:`isInCategory`,name:`videosequence_isInCategory`},{operation:`isReadyForReviewProfile`,name:`videosequence_isReadyForReviewProfile`},{operation:`issueCorrection`,name:`videosequence_issueCorrection`},{operation:`issueCorrectionAction`,name:`videosequence_issueCorrectionAction`},{operation:`list`,name:`videosequence_list`},{operation:`listCorrections`,name:`videosequence_listCorrections`},{operation:`listReviewProfilesAction`,name:`videosequence_listReviewProfilesAction`},{operation:`listReviews`,name:`videosequence_listReviews`},{operation:`listVersions`,name:`videosequence_listVersions`},{operation:`loadReferences`,name:`videosequence_loadReferences`},{operation:`mutateVersionAction`,name:`videosequence_mutateVersionAction`},{operation:`previewTransparency`,name:`videosequence_previewTransparency`},{operation:`previewTransparencyAction`,name:`videosequence_previewTransparencyAction`},{operation:`recheckFactClaims`,name:`videosequence_recheckFactClaims`},{operation:`recheckFactClaimsAction`,name:`videosequence_recheckFactClaimsAction`},{operation:`removeAsset`,name:`videosequence_removeAsset`},{operation:`removeFact`,name:`videosequence_removeFact`},{operation:`removeReference`,name:`videosequence_removeReference`},{operation:`repairFactAudit`,name:`videosequence_repairFactAudit`},{operation:`repairFactAuditAction`,name:`videosequence_repairFactAuditAction`},{operation:`repairFactEvidence`,name:`videosequence_repairFactEvidence`},{operation:`repairFactEvidenceAction`,name:`videosequence_repairFactEvidenceAction`},{operation:`resolveGovernance`,name:`videosequence_resolveGovernance`},{operation:`restoreFromVersion`,name:`videosequence_restoreFromVersion`},{operation:`reviewFacts`,name:`videosequence_reviewFacts`},{operation:`reviewSafety`,name:`videosequence_reviewSafety`},{operation:`runReview`,name:`videosequence_runReview`},{operation:`runReviewAction`,name:`videosequence_runReviewAction`},{operation:`setMetadata`,name:`videosequence_setMetadata`},{operation:`setThumbnail`,name:`videosequence_setThumbnail`},{operation:`syncFacts`,name:`videosequence_syncFacts`},{operation:`syncFactsState`,name:`videosequence_syncFactsState`},{operation:`update`,name:`videosequence_update`},{operation:`updateFactEvidenceStatus`,name:`videosequence_updateFactEvidenceStatus`},{operation:`updateFactEvidenceStatusAction`,name:`videosequence_updateFactEvidenceStatusAction`},{operation:`updateMetadata`,name:`videosequence_updateMetadata`},{operation:`findByComposition`,name:`videosequencecollection_findByComposition`},{operation:`findStandalone`,name:`videosequencecollection_findStandalone`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`findByComposition`,async:!0,parameters:[`compositionId: string`],returnType:`Promise<VideoSequence[]>`,aiCallable:!0},{name:`findStandalone`,async:!0,parameters:[],returnType:`Promise<VideoSequence[]>`,aiCallable:!0},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetByRole`,async:!0,parameters:[`role: VideoSequenceAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:VideoComposition`],exposed:!0},{id:`@happyvertical/smrt-video:VideoSequenceAsset`,name:`VideoSequenceAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`videoSequenceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:VideoSequence`},{name:`role`,type:`text`,required:!1,default:`video`,enum:[`video`,`audio`,`thumbnail`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`videosequenceasset_get`},{operation:`list`,name:`videosequenceasset_list`}],cli:[{operation:`associateWith`,name:`videosequenceasset_associateWith`},{operation:`create`,name:`videosequenceasset_create`},{operation:`delete`,name:`videosequenceasset_delete`},{operation:`get`,name:`videosequenceasset_get`},{operation:`getAssociations`,name:`videosequenceasset_getAssociations`},{operation:`getBySlug`,name:`videosequenceasset_getBySlug`},{operation:`getDerivatives`,name:`videosequenceasset_getDerivatives`},{operation:`getExternalRef`,name:`videosequenceasset_getExternalRef`},{operation:`getExternalRefs`,name:`videosequenceasset_getExternalRefs`},{operation:`getMetadata`,name:`videosequenceasset_getMetadata`},{operation:`getSource`,name:`videosequenceasset_getSource`},{operation:`getStatus`,name:`videosequenceasset_getStatus`},{operation:`getTags`,name:`videosequenceasset_getTags`},{operation:`getType`,name:`videosequenceasset_getType`},{operation:`hasTag`,name:`videosequenceasset_hasTag`},{operation:`list`,name:`videosequenceasset_list`},{operation:`mergeMetadata`,name:`videosequenceasset_mergeMetadata`},{operation:`setExternalRef`,name:`videosequenceasset_setExternalRef`},{operation:`setMetadata`,name:`videosequenceasset_setMetadata`},{operation:`update`,name:`videosequenceasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:VideoSequence`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:VideoShot`,name:`VideoShot`,collection:`contents`,description:`Atomic video generation unit`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`sequenceId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:VideoSequence`},{name:`sceneId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:Scene`},{name:`position`,type:`integer`,required:!1,default:0},{name:`durationInFrames`,type:`integer`,required:!1,default:0},{name:`trimBeforeFrames`,type:`integer`,required:!1,default:0},{name:`trimAfterFrames`,type:`integer`,required:!1,default:0},{name:`scriptText`,type:`text`,required:!1,default:``},{name:`scriptWordCount`,type:`integer`,required:!1,default:0},{name:`targetDuration`,type:`integer`,required:!1,default:30},{name:`shotStatus`,type:`text`,required:!1,default:`draft`,enum:[`draft`,`queued`,`processing`,`ready`,`failed`,`published`]},{name:`progress`,type:`integer`,required:!1,default:0},{name:`errorMessage`,type:`text`,required:!1},{name:`statusMessage`,type:`text`,required:!1},{name:`videoMetadata`,type:`json`,required:!1}],rest:[{method:`GET`,path:`/contents`},{method:`GET`,path:`/contents/[id]`},{method:`POST`,path:`/contents`},{method:`PATCH`,path:`/contents/[id]`},{method:`DELETE`,path:`/contents/[id]`},{method:`POST`,path:`/contents/findBySequence`},{method:`POST`,path:`/contents/findByStatus`},{method:`POST`,path:`/contents/findStandalone`}],mcp:[{operation:`get`,name:`videoshot_get`},{operation:`list`,name:`videoshot_list`},{operation:`findBySequence`,name:`videoshotcollection_findbysequence`},{operation:`findByStatus`,name:`videoshotcollection_findbystatus`},{operation:`findStandalone`,name:`videoshotcollection_findstandalone`}],cli:[{operation:`addAsset`,name:`videoshot_addAsset`},{operation:`addFact`,name:`videoshot_addFact`},{operation:`addReference`,name:`videoshot_addReference`},{operation:`browseFacts`,name:`videoshot_browseFacts`},{operation:`create`,name:`videoshot_create`},{operation:`createVersion`,name:`videoshot_createVersion`},{operation:`delete`,name:`videoshot_delete`},{operation:`evaluateReviewProfile`,name:`videoshot_evaluateReviewProfile`},{operation:`evaluateReviewProfileAction`,name:`videoshot_evaluateReviewProfileAction`},{operation:`generateThumbnail`,name:`videoshot_generateThumbnail`},{operation:`get`,name:`videoshot_get`},{operation:`getAncestorPaths`,name:`videoshot_getAncestorPaths`},{operation:`getAssetByRole`,name:`videoshot_getAssetByRole`},{operation:`getAssetIds`,name:`videoshot_getAssetIds`},{operation:`getAssets`,name:`videoshot_getAssets`},{operation:`getCategorySegments`,name:`videoshot_getCategorySegments`},{operation:`getCorrections`,name:`videoshot_getCorrections`},{operation:`getFactAuditState`,name:`videoshot_getFactAuditState`},{operation:`getFactAuditStateAction`,name:`videoshot_getFactAuditStateAction`},{operation:`getFactLinks`,name:`videoshot_getFactLinks`},{operation:`getFacts`,name:`videoshot_getFacts`},{operation:`getFactsState`,name:`videoshot_getFactsState`},{operation:`getGovernanceState`,name:`videoshot_getGovernanceState`},{operation:`getGovernanceStateAction`,name:`videoshot_getGovernanceStateAction`},{operation:`getMetadata`,name:`videoshot_getMetadata`},{operation:`getParentCategory`,name:`videoshot_getParentCategory`},{operation:`getPublishedTransparency`,name:`videoshot_getPublishedTransparency`},{operation:`getPublishedTransparencyAction`,name:`videoshot_getPublishedTransparencyAction`},{operation:`getReferenceDrift`,name:`videoshot_getReferenceDrift`},{operation:`getReferenceEdges`,name:`videoshot_getReferenceEdges`},{operation:`getReferences`,name:`videoshot_getReferences`},{operation:`getReviewRequirements`,name:`videoshot_getReviewRequirements`},{operation:`getReviews`,name:`videoshot_getReviews`},{operation:`getRootCategory`,name:`videoshot_getRootCategory`},{operation:`getThumbnail`,name:`videoshot_getThumbnail`},{operation:`getVersions`,name:`videoshot_getVersions`},{operation:`isGoverned`,name:`videoshot_isGoverned`},{operation:`isInCategory`,name:`videoshot_isInCategory`},{operation:`isReadyForReviewProfile`,name:`videoshot_isReadyForReviewProfile`},{operation:`issueCorrection`,name:`videoshot_issueCorrection`},{operation:`issueCorrectionAction`,name:`videoshot_issueCorrectionAction`},{operation:`list`,name:`videoshot_list`},{operation:`listCorrections`,name:`videoshot_listCorrections`},{operation:`listReviewProfilesAction`,name:`videoshot_listReviewProfilesAction`},{operation:`listReviews`,name:`videoshot_listReviews`},{operation:`listVersions`,name:`videoshot_listVersions`},{operation:`loadReferences`,name:`videoshot_loadReferences`},{operation:`mutateVersionAction`,name:`videoshot_mutateVersionAction`},{operation:`previewTransparency`,name:`videoshot_previewTransparency`},{operation:`previewTransparencyAction`,name:`videoshot_previewTransparencyAction`},{operation:`recheckFactClaims`,name:`videoshot_recheckFactClaims`},{operation:`recheckFactClaimsAction`,name:`videoshot_recheckFactClaimsAction`},{operation:`removeAsset`,name:`videoshot_removeAsset`},{operation:`removeFact`,name:`videoshot_removeFact`},{operation:`removeReference`,name:`videoshot_removeReference`},{operation:`repairFactAudit`,name:`videoshot_repairFactAudit`},{operation:`repairFactAuditAction`,name:`videoshot_repairFactAuditAction`},{operation:`repairFactEvidence`,name:`videoshot_repairFactEvidence`},{operation:`repairFactEvidenceAction`,name:`videoshot_repairFactEvidenceAction`},{operation:`resolveGovernance`,name:`videoshot_resolveGovernance`},{operation:`restoreFromVersion`,name:`videoshot_restoreFromVersion`},{operation:`reviewFacts`,name:`videoshot_reviewFacts`},{operation:`reviewSafety`,name:`videoshot_reviewSafety`},{operation:`runReview`,name:`videoshot_runReview`},{operation:`runReviewAction`,name:`videoshot_runReviewAction`},{operation:`setMetadata`,name:`videoshot_setMetadata`},{operation:`setScript`,name:`videoshot_setScript`},{operation:`setThumbnail`,name:`videoshot_setThumbnail`},{operation:`syncFacts`,name:`videoshot_syncFacts`},{operation:`syncFactsState`,name:`videoshot_syncFactsState`},{operation:`update`,name:`videoshot_update`},{operation:`updateFactEvidenceStatus`,name:`videoshot_updateFactEvidenceStatus`},{operation:`updateFactEvidenceStatusAction`,name:`videoshot_updateFactEvidenceStatusAction`},{operation:`updateMetadata`,name:`videoshot_updateMetadata`},{operation:`findBySequence`,name:`videoshotcollection_findBySequence`},{operation:`findByStatus`,name:`videoshotcollection_findByStatus`},{operation:`findStandalone`,name:`videoshotcollection_findStandalone`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`findBySequence`,async:!0,parameters:[`sequenceId: string`],returnType:`Promise<VideoShot[]>`,aiCallable:!0},{name:`findByStatus`,async:!0,parameters:[`shotStatus: VideoShotStatus`],returnType:`Promise<VideoShot[]>`,aiCallable:!0},{name:`findStandalone`,async:!0,parameters:[],returnType:`Promise<VideoShot[]>`,aiCallable:!0},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetByRole`,async:!0,parameters:[`role: VideoShotAssetRole`],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setScript`,async:!1,parameters:[`text: string`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-video:Scene`,`@happyvertical/smrt-video:VideoSequence`],exposed:!0},{id:`@happyvertical/smrt-video:VideoShotAsset`,name:`VideoShotAsset`,collection:`assets`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1},{name:`sourceUri`,type:`text`,required:!1},{name:`mimeType`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`metadata`,type:`text`,required:!1},{name:`version`,type:`integer`,required:!0,default:1},{name:`primaryVersionId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`typeSlug`,type:`text`,required:!1},{name:`statusSlug`,type:`text`,required:!1},{name:`ownerProfileId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-profiles:Profile`},{name:`sourceAssetId`,type:`foreignKey`,required:!1,related:`Asset`},{name:`folderId`,type:`foreignKey`,required:!1,related:`Folder`},{name:`sourceType`,type:`text`,required:!1},{name:`externalId`,type:`text`,required:!1},{name:`externalRefs`,type:`text`,required:!1},{name:`createdAt`,type:`text`,required:!1,system:!0},{name:`updatedAt`,type:`text`,required:!1,system:!0},{name:`videoShotId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-video:VideoShot`},{name:`role`,type:`text`,required:!1,default:`video`,enum:[`video`,`audio`,`thumbnail`]}],rest:[{method:`GET`,path:`/assets`},{method:`GET`,path:`/assets/[id]`},{method:`POST`,path:`/assets`},{method:`PATCH`,path:`/assets/[id]`},{method:`DELETE`,path:`/assets/[id]`}],mcp:[{operation:`get`,name:`videoshotasset_get`},{operation:`list`,name:`videoshotasset_list`}],cli:[{operation:`associateWith`,name:`videoshotasset_associateWith`},{operation:`create`,name:`videoshotasset_create`},{operation:`delete`,name:`videoshotasset_delete`},{operation:`get`,name:`videoshotasset_get`},{operation:`getAssociations`,name:`videoshotasset_getAssociations`},{operation:`getBySlug`,name:`videoshotasset_getBySlug`},{operation:`getDerivatives`,name:`videoshotasset_getDerivatives`},{operation:`getExternalRef`,name:`videoshotasset_getExternalRef`},{operation:`getExternalRefs`,name:`videoshotasset_getExternalRefs`},{operation:`getMetadata`,name:`videoshotasset_getMetadata`},{operation:`getSource`,name:`videoshotasset_getSource`},{operation:`getStatus`,name:`videoshotasset_getStatus`},{operation:`getTags`,name:`videoshotasset_getTags`},{operation:`getType`,name:`videoshotasset_getType`},{operation:`hasTag`,name:`videoshotasset_hasTag`},{operation:`list`,name:`videoshotasset_list`},{operation:`mergeMetadata`,name:`videoshotasset_mergeMetadata`},{operation:`setExternalRef`,name:`videoshotasset_setExternalRef`},{operation:`setMetadata`,name:`videoshotasset_setMetadata`},{operation:`update`,name:`videoshotasset_update`}],methods:[{name:`associateWith`,async:!0,parameters:[`metaType: string`,`metaId: string`,`role?: any`],returnType:`Promise<AssetAssociation>`,aiCallable:!1},{name:`getAssociations`,async:!0,parameters:[],returnType:`Promise<AssetAssociation[]>`,aiCallable:!1},{name:`getDerivatives`,async:!0,parameters:[],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getExternalRef`,async:!1,parameters:[`provider: string`],returnType:`AssetExternalReference | null`,aiCallable:!1},{name:`getExternalRefs`,async:!1,parameters:[],returnType:`Record<string, AssetExternalReference>`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getSlug`,async:!0,parameters:[],returnType:`Promise<string | null | undefined>`,aiCallable:!1},{name:`getSource`,async:!0,parameters:[],returnType:`Promise<Asset | null>`,aiCallable:!1},{name:`getStatus`,async:!0,parameters:[],returnType:`Promise<AssetStatus | null>`,aiCallable:!1},{name:`getTags`,async:!0,parameters:[],returnType:`Promise<Tag[]>`,aiCallable:!1},{name:`getType`,async:!0,parameters:[],returnType:`Promise<AssetType | null>`,aiCallable:!1},{name:`hasTag`,async:!0,parameters:[`tagSlug: string`,`context?: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`mergeMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1},{name:`setExternalRef`,async:!1,parameters:[`provider: string`,`reference: any`],returnType:`void`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown>`],returnType:`void`,aiCallable:!1}],references:[`@happyvertical/smrt-profiles:Profile`,`@happyvertical/smrt-video:VideoShot`,`Asset`,`Folder`],exposed:!0},{id:`@happyvertical/smrt-video:VideoShotCharacter`,name:`VideoShotCharacter`,collection:`videoshotcharacters`,description:`Join model linking a VideoShot to a Character`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`videoShotId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-video:VideoShot`},{name:`characterId`,type:`foreignKey`,required:!0,related:`@happyvertical/smrt-video:Character`},{name:`role`,type:`text`,required:!1,default:`primary`,enum:[`primary`,`secondary`,`background`]},{name:`position`,type:`integer`,required:!1,default:0}],rest:[{method:`GET`,path:`/videoshotcharacters`},{method:`GET`,path:`/videoshotcharacters/[id]`},{method:`POST`,path:`/videoshotcharacters`},{method:`DELETE`,path:`/videoshotcharacters/[id]`},{method:`POST`,path:`/videoshotcharacters/findByShot`},{method:`POST`,path:`/videoshotcharacters/findByCharacter`}],mcp:[{operation:`get`,name:`videoshotcharacter_get`},{operation:`list`,name:`videoshotcharacter_list`},{operation:`findByCharacter`,name:`videoshotcharactercollection_findbycharacter`},{operation:`findByShot`,name:`videoshotcharactercollection_findbyshot`}],cli:[{operation:`create`,name:`videoshotcharacter_create`},{operation:`delete`,name:`videoshotcharacter_delete`},{operation:`get`,name:`videoshotcharacter_get`},{operation:`list`,name:`videoshotcharacter_list`},{operation:`update`,name:`videoshotcharacter_update`},{operation:`findByCharacter`,name:`videoshotcharactercollection_findByCharacter`},{operation:`findByShot`,name:`videoshotcharactercollection_findByShot`}],methods:[{name:`findByCharacter`,async:!0,parameters:[`characterId: string`],returnType:`Promise<VideoShotCharacter[]>`,aiCallable:!0},{name:`findByShot`,async:!0,parameters:[`videoShotId: string`],returnType:`Promise<VideoShotCharacter[]>`,aiCallable:!0}],references:[`@happyvertical/smrt-video:Character`,`@happyvertical/smrt-video:VideoShot`],exposed:!0},{id:`@happyvertical/smrt-video:VideoWorkflow`,name:`VideoWorkflow`,collection:`videoworkflows`,description:`ComfyUI workflow template for video generation`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`workflowType`,type:`text`,required:!1,default:`custom`,enum:[`prebake`,`broadcast`,`lipsync`,`postprod`,`custom`]},{name:`workflowJson`,type:`text`,required:!1},{name:`nodeMapping`,type:`json`,required:!1},{name:`estimatedTime`,type:`integer`,required:!1,default:300},{name:`isActive`,type:`boolean`,required:!1,default:!0},{name:`requiredModels`,type:`json`,required:!1}],rest:[{method:`GET`,path:`/videoworkflows`},{method:`GET`,path:`/videoworkflows/[id]`},{method:`POST`,path:`/videoworkflows`},{method:`PATCH`,path:`/videoworkflows/[id]`}],mcp:[{operation:`get`,name:`videoworkflow_get`},{operation:`list`,name:`videoworkflow_list`}],cli:[{operation:`create`,name:`videoworkflow_create`},{operation:`delete`,name:`videoworkflow_delete`},{operation:`get`,name:`videoworkflow_get`},{operation:`injectParameters`,name:`videoworkflow_injectParameters`},{operation:`list`,name:`videoworkflow_list`},{operation:`update`,name:`videoworkflow_update`}],methods:[{name:`injectParameters`,async:!1,parameters:[`params: Record<string, unknown>`],returnType:`any`,aiCallable:!1}],references:[],exposed:!0}],dependencies:[`assets`,`content`,`profiles`,`voice`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`documents/spider SDK graph; CJS parse error`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-chat`,`@happyvertical/smrt-content`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`,`@happyvertical/smrt-voice`]}},{id:`voice`,packageName:`@happyvertical/smrt-voice`,version:`0.55.11`,description:`Voice profile management for AI-powered voice synthesis and cloning in the SMRT ecosystem`,models:[{id:`@happyvertical/smrt-voice:VoiceOutput`,name:`VoiceOutput`,collection:`contents`,description:`Generated audio output from text-to-speech synthesis`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`type`,type:`text`,required:!1},{name:`variant`,type:`text`,required:!1},{name:`fileKey`,type:`text`,required:!1},{name:`author`,type:`text`,required:!1},{name:`name`,type:`text`,required:!0,default:``},{name:`title`,type:`text`,required:!1},{name:`description`,type:`text`,required:!1},{name:`body`,type:`text`,required:!1},{name:`bodyFormat`,type:`text`,required:!1,enum:[`markdown`,`html`]},{name:`publish_date`,type:`datetime`,required:!1},{name:`url`,type:`text`,required:!1},{name:`source`,type:`text`,required:!1},{name:`original_url`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1},{name:`tags`,type:`json`,required:!1},{name:`category`,type:`text`,required:!1},{name:`status`,type:`text`,required:!1,default:`draft`,enum:[`published`,`draft`,`review`,`archived`,`deleted`]},{name:`state`,type:`text`,required:!1,default:`active`,enum:[`deprecated`,`active`,`highlighted`]},{name:`metadata`,type:`json`,required:!1},{name:`thumbnailAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`voiceProfileId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-voice:VoiceProfile`},{name:`sourceText`,type:`text`,required:!1,default:``},{name:`audioAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`duration`,type:`integer`,required:!1,default:0},{name:`wordTimings`,type:`json`,required:!1},{name:`audioMetadata`,type:`json`,required:!1}],rest:[{method:`GET`,path:`/contents`},{method:`GET`,path:`/contents/[id]`},{method:`POST`,path:`/contents`},{method:`DELETE`,path:`/contents/[id]`}],mcp:[{operation:`get`,name:`voiceoutput_get`},{operation:`list`,name:`voiceoutput_list`}],cli:[{operation:`addAsset`,name:`voiceoutput_addAsset`},{operation:`addFact`,name:`voiceoutput_addFact`},{operation:`addReference`,name:`voiceoutput_addReference`},{operation:`browseFacts`,name:`voiceoutput_browseFacts`},{operation:`create`,name:`voiceoutput_create`},{operation:`createVersion`,name:`voiceoutput_createVersion`},{operation:`delete`,name:`voiceoutput_delete`},{operation:`evaluateReviewProfile`,name:`voiceoutput_evaluateReviewProfile`},{operation:`evaluateReviewProfileAction`,name:`voiceoutput_evaluateReviewProfileAction`},{operation:`fromSynthesizedSpeech`,name:`voiceoutput_fromSynthesizedSpeech`},{operation:`generateThumbnail`,name:`voiceoutput_generateThumbnail`},{operation:`get`,name:`voiceoutput_get`},{operation:`getAncestorPaths`,name:`voiceoutput_getAncestorPaths`},{operation:`getAssetIds`,name:`voiceoutput_getAssetIds`},{operation:`getAssets`,name:`voiceoutput_getAssets`},{operation:`getCategorySegments`,name:`voiceoutput_getCategorySegments`},{operation:`getCorrections`,name:`voiceoutput_getCorrections`},{operation:`getFactAuditState`,name:`voiceoutput_getFactAuditState`},{operation:`getFactAuditStateAction`,name:`voiceoutput_getFactAuditStateAction`},{operation:`getFactLinks`,name:`voiceoutput_getFactLinks`},{operation:`getFacts`,name:`voiceoutput_getFacts`},{operation:`getFactsState`,name:`voiceoutput_getFactsState`},{operation:`getGovernanceState`,name:`voiceoutput_getGovernanceState`},{operation:`getGovernanceStateAction`,name:`voiceoutput_getGovernanceStateAction`},{operation:`getMetadata`,name:`voiceoutput_getMetadata`},{operation:`getParentCategory`,name:`voiceoutput_getParentCategory`},{operation:`getPublishedTransparency`,name:`voiceoutput_getPublishedTransparency`},{operation:`getPublishedTransparencyAction`,name:`voiceoutput_getPublishedTransparencyAction`},{operation:`getReferenceDrift`,name:`voiceoutput_getReferenceDrift`},{operation:`getReferenceEdges`,name:`voiceoutput_getReferenceEdges`},{operation:`getReferences`,name:`voiceoutput_getReferences`},{operation:`getReviewRequirements`,name:`voiceoutput_getReviewRequirements`},{operation:`getReviews`,name:`voiceoutput_getReviews`},{operation:`getRootCategory`,name:`voiceoutput_getRootCategory`},{operation:`getThumbnail`,name:`voiceoutput_getThumbnail`},{operation:`getVersions`,name:`voiceoutput_getVersions`},{operation:`getWordAtTime`,name:`voiceoutput_getWordAtTime`},{operation:`isGoverned`,name:`voiceoutput_isGoverned`},{operation:`isInCategory`,name:`voiceoutput_isInCategory`},{operation:`isReadyForReviewProfile`,name:`voiceoutput_isReadyForReviewProfile`},{operation:`issueCorrection`,name:`voiceoutput_issueCorrection`},{operation:`issueCorrectionAction`,name:`voiceoutput_issueCorrectionAction`},{operation:`list`,name:`voiceoutput_list`},{operation:`listCorrections`,name:`voiceoutput_listCorrections`},{operation:`listReviewProfilesAction`,name:`voiceoutput_listReviewProfilesAction`},{operation:`listReviews`,name:`voiceoutput_listReviews`},{operation:`listVersions`,name:`voiceoutput_listVersions`},{operation:`loadReferences`,name:`voiceoutput_loadReferences`},{operation:`mutateVersionAction`,name:`voiceoutput_mutateVersionAction`},{operation:`previewTransparency`,name:`voiceoutput_previewTransparency`},{operation:`previewTransparencyAction`,name:`voiceoutput_previewTransparencyAction`},{operation:`recheckFactClaims`,name:`voiceoutput_recheckFactClaims`},{operation:`recheckFactClaimsAction`,name:`voiceoutput_recheckFactClaimsAction`},{operation:`removeAsset`,name:`voiceoutput_removeAsset`},{operation:`removeFact`,name:`voiceoutput_removeFact`},{operation:`removeReference`,name:`voiceoutput_removeReference`},{operation:`repairFactAudit`,name:`voiceoutput_repairFactAudit`},{operation:`repairFactAuditAction`,name:`voiceoutput_repairFactAuditAction`},{operation:`repairFactEvidence`,name:`voiceoutput_repairFactEvidence`},{operation:`repairFactEvidenceAction`,name:`voiceoutput_repairFactEvidenceAction`},{operation:`resolveGovernance`,name:`voiceoutput_resolveGovernance`},{operation:`restoreFromVersion`,name:`voiceoutput_restoreFromVersion`},{operation:`reviewFacts`,name:`voiceoutput_reviewFacts`},{operation:`reviewSafety`,name:`voiceoutput_reviewSafety`},{operation:`runReview`,name:`voiceoutput_runReview`},{operation:`runReviewAction`,name:`voiceoutput_runReviewAction`},{operation:`setMetadata`,name:`voiceoutput_setMetadata`},{operation:`setThumbnail`,name:`voiceoutput_setThumbnail`},{operation:`syncFacts`,name:`voiceoutput_syncFacts`},{operation:`syncFactsState`,name:`voiceoutput_syncFactsState`},{operation:`update`,name:`voiceoutput_update`},{operation:`updateFactEvidenceStatus`,name:`voiceoutput_updateFactEvidenceStatus`},{operation:`updateFactEvidenceStatusAction`,name:`voiceoutput_updateFactEvidenceStatusAction`},{operation:`updateMetadata`,name:`voiceoutput_updateMetadata`}],methods:[{name:`addAsset`,async:!0,parameters:[`asset: Asset`,`relationship?: any`,`sortOrder?: any`],returnType:`Promise<void>`,aiCallable:!1},{name:`addFact`,async:!0,parameters:[`fact: Fact | string`,`relationship?: FactContentRelationship`,`metadata?: Record<string, unknown>`],returnType:`any`,aiCallable:!1},{name:`addReference`,async:!0,parameters:[`content: Content | string`,`options?: object`],returnType:`any`,aiCallable:!1},{name:`browseFacts`,async:!0,parameters:[`query?: any`,`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`createVersion`,async:!0,parameters:[`options?: CreateContentVersionOptions`],returnType:`any`,aiCallable:!1},{name:`evaluateReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<ContentReviewProfileEvaluation>`,aiCallable:!1},{name:`evaluateReviewProfileAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`generateThumbnail`,async:!0,parameters:[`options: ThumbnailOptions`],returnType:`Promise<Image>`,aiCallable:!1},{name:`getAncestorPaths`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getAssetIds`,async:!0,parameters:[`relationship?: string`],returnType:`Promise<string[]>`,aiCallable:!1},{name:`getAssets`,async:!0,parameters:[`relationship?: string`,`options?: object`],returnType:`Promise<Asset[]>`,aiCallable:!1},{name:`getCategorySegments`,async:!1,parameters:[],returnType:`string[]`,aiCallable:!1},{name:`getCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactAuditState`,async:!0,parameters:[],returnType:`Promise<FactAuditState>`,aiCallable:!1},{name:`getFactAuditStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getFactLinks`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getFacts`,async:!0,parameters:[`options?: object`],returnType:`Promise<Fact[]>`,aiCallable:!1},{name:`getFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`getGovernanceState`,async:!0,parameters:[],returnType:`Promise<ContentGovernanceState>`,aiCallable:!1},{name:`getGovernanceStateAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getMetadata`,async:!1,parameters:[],returnType:`Record<string, unknown>`,aiCallable:!1},{name:`getParentCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getPublishedTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getPublishedTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReferenceDrift`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferenceEdges`,async:!0,parameters:[],returnType:`Promise<Array<object>>`,aiCallable:!1},{name:`getReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getReviewRequirements`,async:!0,parameters:[`profileKey: string`,`governance?: ResolvedContentGovernance`],returnType:`any`,aiCallable:!1},{name:`getReviews`,async:!0,parameters:[`kind?: any`],returnType:`any`,aiCallable:!1},{name:`getRootCategory`,async:!1,parameters:[],returnType:`string | null`,aiCallable:!1},{name:`getThumbnail`,async:!0,parameters:[],returnType:`Promise<Image | null>`,aiCallable:!1},{name:`getVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`getWordAtTime`,async:!1,parameters:[`seconds: number`],returnType:`WordTiming | null`,aiCallable:!1},{name:`initialize`,async:!0,parameters:[],returnType:`Promise<this>`,aiCallable:!1},{name:`isGoverned`,async:!1,parameters:[],returnType:`boolean`,aiCallable:!1},{name:`isInCategory`,async:!1,parameters:[`categoryPath: string`,`includeChildren?: any`],returnType:`boolean`,aiCallable:!1},{name:`isReadyForReviewProfile`,async:!0,parameters:[`profileKey: string`],returnType:`Promise<boolean>`,aiCallable:!1},{name:`issueCorrection`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`issueCorrectionAction`,async:!0,parameters:[`options: IssueContentCorrectionOptions`],returnType:`any`,aiCallable:!1},{name:`listCorrections`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviewProfilesAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`listReviews`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`listVersions`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`loadReferences`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`mutateVersionAction`,async:!0,parameters:[`options?: any`],returnType:`any`,aiCallable:!1},{name:`previewTransparency`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`previewTransparencyAction`,async:!0,parameters:[],returnType:`any`,aiCallable:!1},{name:`recheckFactClaims`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`recheckFactClaimsAction`,async:!0,parameters:[`options?: FactAuditClaimRecheckOptions`],returnType:`any`,aiCallable:!1},{name:`removeAsset`,async:!0,parameters:[`assetId: string`,`relationship?: string`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeFact`,async:!0,parameters:[`factId: string`,`relationship?: FactContentRelationship`],returnType:`Promise<void>`,aiCallable:!1},{name:`removeReference`,async:!0,parameters:[`targetId: string`],returnType:`any`,aiCallable:!1},{name:`repairFactAudit`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactAuditAction`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidence`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`repairFactEvidenceAction`,async:!0,parameters:[`options?: FactAuditResourceRepairOptions`],returnType:`any`,aiCallable:!1},{name:`resolveGovernance`,async:!0,parameters:[],returnType:`Promise<ResolvedContentGovernance>`,aiCallable:!1},{name:`restoreFromVersion`,async:!0,parameters:[`versionNumber: number`],returnType:`any`,aiCallable:!1},{name:`reviewFacts`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`reviewSafety`,async:!0,parameters:[`options?: Omit<RunContentReviewOptions, 'kind'>`],returnType:`any`,aiCallable:!1},{name:`runReview`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`runReviewAction`,async:!0,parameters:[`options?: RunContentReviewOptions`],returnType:`any`,aiCallable:!1},{name:`save`,async:!0,parameters:[`options?: SmrtSaveOptions`],returnType:`any`,aiCallable:!1},{name:`setMetadata`,async:!1,parameters:[`metadata: Record<string, unknown> | null | undefined`],returnType:`void`,aiCallable:!1},{name:`setThumbnail`,async:!0,parameters:[`image: Image`],returnType:`Promise<void>`,aiCallable:!1},{name:`syncFacts`,async:!0,parameters:[`factIds: string[]`,`relationship?: FactContentRelationship`],returnType:`Promise<object>`,aiCallable:!1},{name:`syncFactsState`,async:!0,parameters:[`options?: object`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatus`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateFactEvidenceStatusAction`,async:!0,parameters:[`options?: FactEvidenceStatusUpdateOptions`],returnType:`any`,aiCallable:!1},{name:`updateMetadata`,async:!1,parameters:[`patch: Partial<Record<string, unknown>>`],returnType:`Record<string, unknown>`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-voice:VoiceProfile`],exposed:!0},{id:`@happyvertical/smrt-voice:VoiceProfile`,name:`VoiceProfile`,collection:`voiceprofiles`,description:`Voice profile for AI-powered speech synthesis`,display:{label:`name`},fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`name`,type:`text`,required:!1,default:``},{name:`description`,type:`text`,required:!1},{name:`language`,type:`text`,required:!1,default:`en-US`},{name:`gender`,type:`text`,required:!1,default:`neutral`,enum:[`male`,`female`,`neutral`]},{name:`designPrompt`,type:`text`,required:!1},{name:`sampleAssetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`voiceData`,type:`json`,required:!1},{name:`defaultSpeed`,type:`decimal`,required:!1,default:1},{name:`defaultPitch`,type:`integer`,required:!1,default:0},{name:`status`,type:`text`,required:!1,default:`pending`,enum:[`pending`,`processing`,`ready`,`failed`]},{name:`provider`,type:`text`,required:!1,default:`qwen3-tts`},{name:`errorMessage`,type:`text`,required:!1}],rest:[{method:`GET`,path:`/voiceprofiles`},{method:`GET`,path:`/voiceprofiles/[id]`},{method:`POST`,path:`/voiceprofiles`},{method:`PATCH`,path:`/voiceprofiles/[id]`},{method:`DELETE`,path:`/voiceprofiles/[id]`}],mcp:[{operation:`get`,name:`voiceprofile_get`},{operation:`list`,name:`voiceprofile_list`}],cli:[{operation:`create`,name:`voiceprofile_create`},{operation:`delete`,name:`voiceprofile_delete`},{operation:`get`,name:`voiceprofile_get`},{operation:`list`,name:`voiceprofile_list`},{operation:`toSpeechVoice`,name:`voiceprofile_toSpeechVoice`},{operation:`update`,name:`voiceprofile_update`}],methods:[{name:`toSpeechVoice`,async:!1,parameters:[],returnType:`SpeechVoice`,aiCallable:!1}],references:[`@happyvertical/smrt-assets:Asset`],exposed:!0},{id:`@happyvertical/smrt-voice:VoiceSample`,name:`VoiceSample`,collection:`voicesamples`,description:`Audio sample for voice cloning`,fields:[{name:`created_at`,type:`datetime`,required:!1,system:!0},{name:`updated_at`,type:`datetime`,required:!1,system:!0},{name:`tenantId`,type:`text`,required:!1,system:!0},{name:`voiceProfileId`,type:`foreignKey`,required:!1,related:`@happyvertical/smrt-voice:VoiceProfile`},{name:`assetId`,type:`crossPackageRef`,required:!1,related:`@happyvertical/smrt-assets:Asset`},{name:`duration`,type:`integer`,required:!1,default:0},{name:`transcription`,type:`text`,required:!1},{name:`quality`,type:`text`,required:!1,default:`medium`,enum:[`low`,`medium`,`high`]},{name:`sampleRate`,type:`integer`,required:!1},{name:`channels`,type:`integer`,required:!1},{name:`format`,type:`text`,required:!1},{name:`isPrimary`,type:`boolean`,required:!1,default:!1}],rest:[{method:`GET`,path:`/voicesamples`},{method:`GET`,path:`/voicesamples/[id]`},{method:`POST`,path:`/voicesamples`},{method:`DELETE`,path:`/voicesamples/[id]`}],mcp:[{operation:`get`,name:`voicesample_get`},{operation:`list`,name:`voicesample_list`}],cli:[{operation:`create`,name:`voicesample_create`},{operation:`delete`,name:`voicesample_delete`},{operation:`get`,name:`voicesample_get`},{operation:`list`,name:`voicesample_list`},{operation:`update`,name:`voicesample_update`}],methods:[],references:[`@happyvertical/smrt-assets:Asset`,`@happyvertical/smrt-voice:VoiceProfile`],exposed:!0}],dependencies:[`assets`,`content`],surfaceSource:`knowledge`,browser:{status:`server-only`,issues:[`#3615`,`#3617`,`#3624`,`#3625`,`#3626`,`#3627`,`#3628`],reason:`documents/spider SDK graph; CJS parse error`,via:[`@happyvertical/smrt-agents`,`@happyvertical/smrt-chat`,`@happyvertical/smrt-content`,`@happyvertical/smrt-images`,`@happyvertical/smrt-jobs`,`@happyvertical/smrt-profiles`,`@happyvertical/smrt-reports`,`@happyvertical/smrt-secrets`,`@happyvertical/smrt-tenancy`,`@happyvertical/smrt-users`]}}]}),d=new Map(u.packages.map(e=>[e.id,e]));function ie(e){return d.get(e)}function ae(e,t){return d.get(e)?.models.find(e=>e.name===t)}function oe(e){let t=e.lastIndexOf(`:`);if(t<0)return;let n=e.slice(0,t),r=u.packages.find(e=>e.packageName===n),i=r?.models.find(t=>t.id===e);return r&&i?{pkg:r,model:i}:void 0}function se(e){return e.models.filter(e=>e.exposed)}function ce(e,t){let n=t.toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(e=>{let t=[e.id,e.description,...e.models.flatMap(e=>[e.name,e.collection,...e.fields.map(e=>e.name)])].join(` `).toLowerCase();return n.every(e=>t.includes(e))})}function le(e){return e.models.reduce((e,t)=>e+t.rest.length+t.mcp.length+t.cli.length,0)}var f=e=>{let t=Number(e??0);return Number.isFinite(t)?t:0},p=(e,t)=>e.fields.some(e=>e.name===t);function m(e){return[`quantity`,`unitPrice`,`amount`].every(t=>p(e,t))}function h(e){let t=Math.round(f(e.quantity)*f(e.unitPrice))-f(e.discount),n=Math.round(t*f(e.taxRate));return{subtotal:t,tax:n,amount:t+n}}function ue(e){return{...e,amount:h(e).amount}}function de(e){let t=0,n=0;for(let r of e){let e=h(r);t+=e.subtotal,n+=e.tax}return{subtotal:t,taxAmount:n,totalAmount:t+n}}var g=[`subtotal`,`taxAmount`,`totalAmount`];function fe(e,t,n){let r=de(n),i={...t};for(let t of g)p(e,t)&&(i[t]=r[t]);return i}function _(e){return[`totalAmount`,`amountPaid`,`status`].every(t=>p(e,t))}var v=e=>e.type===`foreignKey`||e.type===`crossPackageRef`;function y(e){return e.fields.find(e=>v(e)&&/^payment/i.test(e.name))}function b(e){return e.fields.find(e=>v(e)&&/^invoice/i.test(e.name))}function pe(e){return p(e,`amount`)&&!!y(e)&&!!b(e)}var me=`completed`;function he(e,t,n){let r=t.reduce((e,t)=>e+f(t.amount),0),i=f(e.totalAmount),a=String(e.status??`draft`),o=i>0&&r>=i,s=a;if(o)s=`paid`;else if(a!==`draft`&&a!==`cancelled`){let t=Date.parse(String(e.dueDate??``));s=Number.isFinite(t)&&t<n?`overdue`:a===`viewed`?`viewed`:`sent`}let c=t.map(e=>e.at).sort().at(-1);return{amountPaid:r,status:s,paidDate:o?c??String(e.issueDate??``):null}}function ge(e,t,n=!1){let r=new Set;if(m(e)&&r.add(`amount`),t)for(let t of g)p(e,t)&&r.add(t);if(n&&_(e))for(let t of[`amountPaid`,`paidDate`])p(e,t)&&r.add(t);return r}function _e(e){return v(e)&&(e.related?.endsWith(`:Product`)===!0||/^product(Id)?$/i.test(e.name))}function ve(e,t){let n={};return t?(p(e,`description`)&&typeof t.name==`string`&&t.name&&(n.description=t.name),p(e,`unitPrice`)&&typeof t.price==`number`&&(n.unitPrice=t.price),n):n}var x={id:`generic`,products:[{name:`Canvas tote`,price:2400},{name:`Ceramic mug`,price:1800},{name:`Linen apron`,price:3600},{name:`Beeswax candle`,price:1500},{name:`Walnut cutting board`,price:5800},{name:`Wool throw blanket`,price:8900},{name:`Enamel camp cup`,price:1200},{name:`Leather notebook`,price:2900}],locations:[{code:`MAIN`,name:`Main floor`,kind:`store`},{code:`STORE`,name:`Storage room`,kind:`warehouse`}]},S={id:`bakery`,taxRate:0,products:[{name:`Sourdough loaf`,price:850,category:`Bread`,productType:`product`,description:`Slow-fermented, baked daily.`,at:0},{name:`Baguette`,price:450,category:`Bread`,productType:`product`,description:`Crisp crust, soft crumb.`,at:0},{name:`Butter croissant`,price:400,category:`Pastry`,productType:`product`,description:`Laminated with cultured butter.`,at:0},{name:`Pain au chocolat`,price:450,category:`Pastry`,productType:`product`,description:`Two bars of dark chocolate.`,at:0},{name:`Cinnamon bun`,price:475,category:`Pastry`,productType:`product`,description:`Cream cheese glaze.`,at:0},{name:`Chocolate layer cake`,price:4800,category:`Cake`,productType:`product`,description:`Serves eight. Order a day ahead.`,at:1},{name:`Carrot cake slice`,price:650,category:`Cake`,productType:`product`,description:`Walnuts and cream cheese frosting.`,at:1},{name:`Flat white`,price:450,category:`Coffee`,productType:`product`,description:`Double shot, steamed milk.`,at:0},{name:`Bread flour, 25 kg`,price:3200,category:`Ingredient`,productType:`material`,description:`High-protein stone-milled flour.`,at:2},{name:`Unsalted butter, 5 kg`,price:5400,category:`Ingredient`,productType:`material`,description:`European-style, 82% fat.`,at:1},{name:`Cane sugar, 10 kg`,description:`Fine granulated cane sugar.`,price:1900,category:`Ingredient`,productType:`material`,at:2},{name:`Instant yeast, 500 g`,description:`Fast-acting, no proofing needed.`,price:1100,category:`Ingredient`,productType:`material`,at:2},{name:`Free-range eggs, tray of 30`,description:`Free-range, graded large.`,price:1300,category:`Ingredient`,productType:`material`,at:1},{name:`Dark chocolate, 2 kg`,description:`Couverture, 64% cacao.`,price:3800,category:`Ingredient`,productType:`material`,at:2}],customers:[`Corner Café`,`Maple Street Deli`,`Sunrise Diner`,`Willow Bistro`,`Harbor Coffee Roasters`,`Anna Petrov`,`Marcus Lee`,`Priya Shah`],vendors:[`Stonemill Flour Co.`,`Valley Creamery`,`Heritage Grain Mill`,`Meadowbrook Dairy`,`Cascade Packaging`],notes:[`Deliver before 6 a.m.`,`Standing order; confirm each week.`,`No nuts, please. Allergy on file.`,`Extra baguettes for the weekend.`,`Pickup at the front counter.`],terms:[`Net 15`,`Due on receipt`,`Net 30`],customerNotes:[`Standing order every Friday.`,`No nuts, please. Allergy on file.`,`Prefers pickup at the front counter.`,`Orders extra for the weekend.`,`Pays on the first of the month.`],vendorNotes:[`Delivers before 5 a.m.`,`Invoice arrives with the delivery.`,`Call ahead for holiday orders.`,`Minimum order of ten bags.`,`Credit note owed for a short delivery.`],lineQuantity:[1,6],locations:[{code:`FRONT`,name:`Front counter`,kind:`store`},{code:`COOLER`,name:`Walk-in cooler`,kind:`cooler`},{code:`DRY`,name:`Dry store`,kind:`warehouse`}],rowCounts:{"@happyvertical/smrt-products:Product":14},weights:{"Order.status":{completed:6,accepted:2,sent:1,draft:1},"WholesaleOrder.status":{completed:5,accepted:3,sent:1,draft:1}}},C={id:`mechanic`,taxRate:.0825,products:[{name:`Brake pads, front set`,description:`Ceramic pads with hardware kit.`,price:8900,category:`Brakes`,productType:`product`},{name:`Oil filter`,description:`Spin-on filter for most cars.`,price:1400,category:`Filters`,productType:`product`},{name:`Spark plugs, set of 4`,description:`Iridium plugs, pre-gapped.`,price:3600,category:`Ignition`,productType:`product`},{name:`Synthetic engine oil, 5 L`,description:`Full synthetic, 5W-30.`,price:4200,category:`Fluids`,productType:`product`},{name:`Air filter`,description:`Pleated paper element.`,price:2200,category:`Filters`,productType:`product`},{name:`Wiper blades, pair`,description:`Beam blades, all weather.`,price:2400,category:`Body`,productType:`product`},{name:`Brake rotor, front`,description:`Vented, coated against rust.`,price:11500,category:`Brakes`,productType:`product`},{name:`Car battery, 12 V`,description:`Maintenance-free, 3-year warranty.`,price:14900,category:`Electrical`,productType:`product`}],lines:[{description:`Labour: oil and filter change`,price:6500,quantity:[1,3]},{description:`Labour: brake service, per axle`,price:12e3,quantity:[1,2]},{description:`Front brake pads`,price:8900,quantity:[1,4]},{description:`Diagnostic inspection`,price:9500,quantity:[1,3]},{description:`Spark plug replacement`,price:3600,quantity:[1,4]},{description:`Tire rotation and balance`,price:4500,quantity:[1,2]},{description:`Synthetic oil, 5 L`,price:4200,quantity:[1,4]},{description:`Battery test and replacement`,price:14900,quantity:[1,1]}],customers:[`Dana Whitfield`,`Luis Moreno`,`Hannah Brooks`,`Tom Okafor`,`Sofia Reyes`,`Greg Patel`,`Maya Chen`,`Riverside Delivery Co.`],vendors:[`Northside Auto Parts`,`Acme Brake & Supply`,`Pacific Filter Distributors`,`GearHead Wholesale`,`Lubricant Direct`],notes:[`Customer is waiting.`,`Check for open recalls before release.`,`Approved by phone.`,`Return the old parts to the customer.`,`Warning light on since last week.`],terms:[`Due on receipt`,`Net 15`,`Net 30`],customerNotes:[`Prefers a call over a text.`,`Drives a company van; invoice the fleet account.`,`Usually waits at the shop during service.`,`Pick-up after 5 p.m. only.`,`Keeps the service history in the glovebox.`],vendorNotes:[`Same-day delivery before 10 a.m.`,`Core charge refunded on return.`,`Account number is on the packing slip.`,`Backordered items ship free.`,`Minimum order for free freight.`],instructors:[`Ray Delgado`,`Kim Nakamura`,`Owen Pryce`],descriptions:{Event:[`Drain, new filter and fresh oil, with a fluid top-up.`,`Pads, rotors and fluid checked and replaced as needed.`,`Full safety inspection with a written report.`,`Rotate all four tires and check pressure and tread.`,`Scan the codes and trace the warning light.`,`Drain, new filter and fresh oil, with a fluid top-up.`,`Pads, rotors and fluid checked and replaced as needed.`,`Full safety inspection with a written report.`],EventType:[`Routine oil and filter change.`,`Inspect and replace brake components.`,`Annual safety and emissions inspection.`,`Rotate and balance the tires.`,`Trace faults with the scan tool.`,`Test and replace the battery.`,`Set toe, camber and caster.`,`Anything else the shop agrees to take on.`],EventSeries:[`Regular service on the manufacturer schedule.`,`Winter and summer tire swaps.`,`Recurring work for company vehicles.`,`Repairs covered by the manufacturer.`,`Condition check before a used car is bought.`],Place:[`Lift bay for general repairs.`,`Second lift bay.`,`Alignment rack with laser targets.`,`Where finished cars wait for their owners.`,`Where parts are sold and picked up.`]},eventNames:[`Oil change`,`Brake service`,`Annual inspection`,`Tire rotation`,`Diagnostics`,`Oil change`,`Brake service`,`Annual inspection`],eventTypes:[`Oil change`,`Brake service`,`Inspection`,`Tire rotation`,`Diagnostics`,`Battery service`,`Alignment`,`Other`],seriesNames:[`Scheduled maintenance`,`Seasonal tire change`,`Fleet contracts`,`Warranty work`,`Pre-purchase checks`],placeNames:[`Service bay 1`,`Service bay 2`,`Alignment rack`,`Customer pickup lot`,`Parts counter`],placeTypes:[`Service bay`,`Rack`,`Lot`,`Counter`],locations:[{code:`PARTS`,name:`Parts counter`,kind:`store`},{code:`BAYS`,name:`Bay storage`,kind:`warehouse`}],weights:{"Order.status":{completed:5,accepted:3,sent:1,draft:1},"Estimate.status":{sent:3,accepted:3,declined:1,draft:1},"Event.status":{scheduled:5,completed:4,cancelled:1},"Customer.customerType":{retail:1}}},w={id:`welder`,taxRate:0,products:[{name:`Flat bar 50 x 6 mm, 6 m`,description:`Mild steel, cut to length on request.`,price:4800,category:`Steel stock`,productType:`material`},{name:`Square tube 40 x 40 mm, 6 m`,description:`Mild steel hollow section.`,price:9200,category:`Steel stock`,productType:`material`},{name:`Steel plate 6 mm, 4 x 8 ft`,description:`Hot-rolled mild steel sheet.`,price:21500,category:`Steel stock`,productType:`material`},{name:`Angle iron 50 x 50 mm, 6 m`,description:`Equal-leg mild steel angle.`,price:7400,category:`Steel stock`,productType:`material`},{name:`Round bar 20 mm, 3 m`,description:`Hot-rolled mild steel round.`,price:3900,category:`Steel stock`,productType:`material`},{name:`Argon/CO2 shielding gas cylinder`,description:`Argon and CO2 mix for MIG welding.`,price:6800,category:`Gas`,productType:`material`,at:1},{name:`MIG wire ER70S-6, 15 kg spool`,description:`Copper-coated solid MIG wire.`,price:7900,category:`Consumables`,productType:`material`,at:1},{name:`Welding rods E7018, 5 kg`,description:`Low-hydrogen stick electrodes.`,price:3400,category:`Consumables`,productType:`material`,at:1}],lines:[{description:`Swing gate, fabricated and installed`,price:185e3,quantity:[1,1]},{description:`Stair railing, 3 m run`,price:94e3,quantity:[1,2]},{description:`Trailer frame repair`,price:62e3,quantity:[1,1]},{description:`Custom bracket set (4)`,price:18e3,quantity:[1,3]},{description:`Site welding, per hour`,price:9500,quantity:[2,8]},{description:`Powder coat finish`,price:32e3,quantity:[1,1]},{description:`Delivery and site setup`,price:8500,quantity:[1,1]},{description:`Fence post replacement, each`,price:14e3,quantity:[2,6]}],customers:[`Ridgeline Construction`,`Harbor Builders`,`Summit Roofing`,`Oakdale Farms`,`Granite Peak Contracting`,`Nolan Excavation`,`Bluewater Marine`,`Hartley Property Group`],vendors:[`Continental Steel Supply`,`Western Metals Depot`,`Pro Weld Gas & Gear`,`Ironworks Wholesale`,`Allied Fasteners`],notes:[`Measure on site before cutting.`,`Customer supplies the gate posts.`,`Hot work permit required.`,`Galvanise after fabrication.`,`Access through the rear lane only.`],terms:[`50% deposit, balance on completion`,`Net 30`,`Due on completion`],customerNotes:[`Site foreman is the contact for access.`,`Pays by cheque, thirty days.`,`Prefers quotes by email.`,`Repeat customer; same crew each time.`,`Needs a purchase order number on invoices.`],vendorNotes:[`Cut lengths ready next morning.`,`Mill certificates come with each order.`,`Cylinder rental is billed monthly.`,`Delivers Tuesdays and Fridays.`,`Minimum order for free delivery.`],instructors:[`Frank Dillard`,`Rosa Quintero`,`Jed Harlan`],descriptions:{Event:[`Measure the opening and check the access on site.`,`Walk the job with the customer and agree the scope.`,`Crew delivers, fits and finishes the work.`,`Return to repair the fault under the original quote.`,`Walk the finished job with the customer.`,`Measure the opening and check the access on site.`,`Walk the job with the customer and agree the scope.`,`Crew delivers, fits and finishes the work.`],EventType:[`Measure up before a quote.`,`Walk through a quote with the customer.`,`Fit finished work on site.`,`Return to fix a fault.`,`Sign-off with the customer.`,`Drop finished work at the customer.`,`Customer collects from the shop.`,`Anything else the shop agrees to take on.`],EventSeries:[`Site visits that lead to a written quote.`,`Crews booked for fitting days.`,`Return visits for repairs.`,`Sign-off walks at the end of a job.`,`Scheduled trips with finished work.`],Place:[`Wherever the work is to be fitted.`,`Where work is cut, welded and finished.`,`Outdoor space for loading and staging.`,`Where stock is collected from the supplier.`,`Cabin for paperwork on large jobs.`]},eventNames:[`Site measure`,`Quote walk-through`,`Install day`,`Repair call-out`,`Final inspection`,`Site measure`,`Quote walk-through`,`Install day`],eventTypes:[`Site measure`,`Quote walk-through`,`Install`,`Repair call-out`,`Final inspection`,`Delivery`,`Pickup`,`Other`],seriesNames:[`Estimates and site measures`,`Install crews`,`Repair call-outs`,`Final inspections`,`Delivery runs`],placeNames:[`Customer site`,`Fabrication shop`,`Yard and loading dock`,`Supplier pickup`,`Job site office`],placeTypes:[`Job site`,`Workshop`,`Yard`,`Supplier`],locations:[{code:`RACK`,name:`Steel rack`,kind:`warehouse`},{code:`GAS`,name:`Gas cage`,kind:`cage`}],weights:{"Order.status":{completed:4,accepted:3,sent:1,draft:1},"Estimate.status":{sent:3,accepted:3,declined:1,draft:1},"Event.status":{scheduled:5,completed:4,cancelled:1}}},T={id:`yoga-studio`,taxRate:0,products:[{name:`Cork yoga mat`,description:`Natural cork, non-slip.`,price:7800,category:`Mats`,productType:`product`},{name:`Yoga blocks, pair`,description:`Dense foam, light and firm.`,price:2400,category:`Props`,productType:`product`},{name:`Cotton yoga strap`,description:`Adjustable D-ring strap.`,price:1500,category:`Props`,productType:`product`},{name:`Insulated water bottle`,description:`Keeps water cold all class.`,price:3200,category:`Bottles`,productType:`product`},{name:`Bolster`,description:`Firm support for restorative poses.`,price:6400,category:`Props`,productType:`product`},{name:`Lavender eye pillow`,description:`Weighted, with flax and lavender.`,price:1800,category:`Wellness`,productType:`product`},{name:`Meditation cushion`,description:`Buckwheat-filled zafu.`,price:5200,category:`Wellness`,productType:`product`},{name:`Studio tote bag`,description:`Roomy canvas tote.`,price:2800,category:`Apparel`,productType:`product`}],lines:[{description:`Monthly unlimited membership`,price:12900,quantity:[1,1]},{description:`10-class pack`,price:17e3,quantity:[1,1]},{description:`Drop-in class`,price:2200,quantity:[1,3]},{description:`Private session, 60 min`,price:9e3,quantity:[1,2]},{description:`6-week beginners series`,price:14400,quantity:[1,1]},{description:`Workshop ticket`,price:4500,quantity:[1,2]},{description:`Mat rental`,price:300,quantity:[1,3]},{description:`Teacher training deposit`,price:5e4,quantity:[1,1]}],customers:[`Emma Larsen`,`Noah Fischer`,`Ava Mehta`,`Liam O’Connor`,`Sofia Rinaldi`,`Ethan Park`,`Mia Tanaka`,`Olivia Brandt`],vendors:[`Lotus Yoga Supply`,`Evergreen Mats`,`Pure Tea Co.`,`Sunrise Apparel`,`Calm Candle Works`],notes:[`Paid at the front desk.`,`Includes mat rental.`,`Renews on the first of the month.`,`Class pass applied.`,`Booked as a gift.`],terms:[`Due on receipt`,`Net 15`,`Monthly, auto-renewing`],customerNotes:[`Prefers the back row near the window.`,`Recovering from a knee injury; offer modifications.`,`Joined through the summer promotion.`,`Pays by card on the first of the month.`,`Interested in the teacher training.`],vendorNotes:[`Free shipping over $500.`,`Allow two weeks for custom colours.`,`Net 30 after delivery.`,`Samples sent on request.`,`Reorders by email on the first of the month.`],instructors:[`Priya Raman`,`Daniel Okoye`,`Hana Sato`,`Marco Bellini`],descriptions:{Event:[`Flowing breath-led practice that builds heat steadily.`,`Slow, grounding practice with long holds.`,`Heated room, steady pace, plenty of water.`,`Gentle, alignment-focused classical postures.`,`Supported poses and long rests to unwind.`,`Strong, athletic flow for experienced students.`,`Longer yin holds for the hips and spine.`,`Sixty minutes in the heat, a little faster.`],EventType:[`Linked movement and breath.`,`Passive floor poses held for minutes.`,`Practice in a heated room.`,`Slower, classical postures.`,`Props and rest to restore.`,`Safe, supported practice for expecting mothers.`,`Seated stillness and guided breath.`,`A longer session on a single theme.`],EventSeries:[`Six weeks of foundations for new students.`,`Eight mornings of steady flow.`,`A slow Sunday class, week after week.`,`A weekend of practice around the longest day.`,`The 200-hour course for future teachers.`],Place:[`Our main room with sprung floors.`,`Smaller room for workshops and private lessons.`,`Open-air deck for summer classes.`,`Tea, books and a place to wait.`,`Large hall for retreats and trainings.`]},lineQuantity:[1,2],eventNames:[`Vinyasa Flow`,`Yin Yoga`,`Hot Yoga`,`Gentle Hatha`,`Restorative Evening`,`Power Vinyasa`,`Deep Yin`,`Hot Yoga 60`],eventTypes:[`Vinyasa`,`Yin`,`Hot yoga`,`Hatha`,`Restorative`,`Prenatal`,`Meditation`,`Workshop`],seriesNames:[`6-week beginners`,`Morning flow, 8 weeks`,`Restorative Sundays`,`Summer solstice weekend`,`Teacher training, 200 h`],placeNames:[`Studio A`,`Studio B`,`Garden terrace`,`Lobby lounge`,`Retreat hall`],placeTypes:[`Studio`,`Outdoor`,`Lounge`,`Hall`],locations:[{code:`DESK`,name:`Front desk`,kind:`store`},{code:`CLOSET`,name:`Storage closet`,kind:`warehouse`}],weights:{"Event.status":{scheduled:6,completed:3,cancelled:1},"Customer.customerType":{retail:1},"Agreement.status":{accepted:6,sent:1,completed:2,cancelled:1}}},ye={[S.id]:S,[C.id]:C,[w.id]:w,[T.id]:T},E=x;function D(){return E}function be(e){return E=(e?ye[e]:void 0)??x,E}var O;function xe(e){O=e}function Se(){return O??E.taxRate}function k(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}function A(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}var Ce=/(price|amount|cost|total|balance|fee|tax|revenue|budget|salary|wage|subtotal|discount|spend|payout|commission|credit|debit|charge|refund|fare|rent)/i,we=/(count|quantity|qty|percent|ratio|level)/i;function j(e){return e.type===`integer`&&Ce.test(e.name)&&!we.test(e.name)}var M=[`Harbor`,`Maple`,`Summit`,`Cedar`,`Willow`,`Copper`,`Juniper`,`Atlas`,`Meadow`,`Granite`,`Lantern`,`Orchard`,`Saffron`,`Timber`,`Velvet`,`Beacon`],Te=[`Goods`,`Supply`,`Studio`,`Works`,`Market`,`Collective`,`Trading`,`Labs`];x.products;var N=[`Ada`,`Grace`,`Alan`,`Linus`,`Mae`,`Jun`,`Priya`,`Omar`],P=[`Nguyen`,`Garcia`,`Okafor`,`Silva`,`Kim`,`Haddad`,`Rossi`],F=[`Reviewed and approved by the team.`,`Waiting on a reply from the customer.`,`Imported from the previous system.`,`Scheduled for the next cycle.`,`Flagged for follow-up next week.`],I=Date.UTC(2026,0,1),L=31536e6;function R(e,t){return t[Math.floor(e()*t.length)]}function Ee(e,t,n){let r=t.reduce((e,t)=>e+(n[t]??0),0);if(r<=0)return R(e,t);let i=e()*r;for(let e of t)if(i-=n[e]??0,i<0)return e;return t[t.length-1]}function z(e){let t=k(A(e)),n=e=>Array.from({length:e},()=>Math.floor(t()*16).toString(16)).join(``);return`${n(8)}-${n(4)}-4${n(3)}-a${n(3)}-${n(12)}`}var De=[`Net 30`,`Net 15`,`Net 60`,`Due on receipt`,`50% deposit, balance on delivery`],Oe=[`web`,`retail`,`phone`,`marketplace`,`wholesale`],ke=[`monthly`,`quarterly`,`annual`],Ae=[0,.05,.0825,.13,.2];function je(e,t,n=``){let r=e.name.toLowerCase();if(/terms/.test(r))return R(t,D().terms??De);if(/channel/.test(r))return R(t,Oe);if(/period/.test(r))return R(t,ke);if(/^(unit|uom)$/.test(r))return R(t,[`each`,`hour`,`box`]);if(/email/.test(r))return`${R(t,N).toLowerCase()}@example.com`;if(/(^|_)(url|link|website|href)/.test(r)||/url$/.test(r))return`https://example.com/${R(t,M).toLowerCase()}`;if(/phone/.test(r))return`+1-555-01${Math.floor(t()*90+10)}`;if(/(notes?|comment|message)/.test(r)){let e=D();return R(t,(n===`Customer`?e.customerNotes:n===`Vendor`?e.vendorNotes:void 0)??e.notes??F)}return/(description|summary|body|content|bio)/.test(r)?R(t,D().descriptions?.[n]??F):/(firstname|first_name)/.test(r)?R(t,N):/(lastname|last_name|surname)/.test(r)?R(t,P):/(tax_?id|vat|^ein$|abn|gst|registration)/.test(r)?`${Math.floor(t()*90+10)}-${Math.floor(t()*9e6+1e6)}`:/(code|sku|barcode|number|reference)/.test(r)?`${R(t,M).slice(0,3).toUpperCase()}-${Math.floor(t()*9e3+1e3)}`:/(status|state|stage)/.test(r)?R(t,[`active`,`pending`,`archived`,`draft`]):/(currency)/.test(r)?`USD`:/(person|owner|author|contact|assignee|worker)/.test(r)?`${R(t,N)} ${R(t,P)}`:`${R(t,M)} ${R(t,Te)}`}var B=`@happyvertical/smrt-profiles:Profile`,V={"@happyvertical/smrt-profiles:Profile":13,"@happyvertical/smrt-commerce:Vendor":5};function Me(e,t){return e===B?(D().rowCounts?.[e]??V[e]??t)+(D().instructors?.length??0):D().rowCounts?.[e]??V[e]??t}function Ne(e,t){let n=D().instructors;return e.name===`organizerId`&&n?.length?13+t.index%n.length:e.name===`profileId`?t.modelId.endsWith(`:Vendor`)?8+t.index%5:t.modelId.endsWith(`:Customer`)?t.index:t.index%8:t.index%5}function Pe(e,t,n){if(e.enum&&e.enum.length>0){let r=D().weights?.[`${n.modelId.split(`:`).pop()}.${e.name}`];return r?Ee(t,e.enum,r):R(t,e.enum)}switch(e.type){case`boolean`:return t()<.7;case`integer`:return j(e)?(Math.floor(t()*4950)+50)*10:/(quantity|qty|count|stock|on_?hand)/i.test(e.name)?Math.floor(t()*200):/(level|sortorder|position|order)/i.test(e.name)?Math.floor(t()*5):Math.floor(t()*100);case`decimal`:return/taxrate|vatrate/i.test(e.name)?Se()??R(t,Ae):/discountrate/i.test(e.name)?R(t,[0,.05,.1]):/(quantity|qty)/i.test(e.name)?1+Math.floor(t()*5):Math.round(t()*1e4)/100;case`datetime`:return new Date(I-Math.floor(t()*L)).toISOString();case`json`:return Array.isArray(e.default)?[]:{};case`foreignKey`:case`crossPackageRef`:return z(`${e.related??e.name}:${Ne(e,n)}`);default:return je(e,t,n.modelId.split(`:`).pop())}}function Fe(e){return e.fields.filter(e=>!e.system)}var H=864e5;function Ie(e){let t=e.toLowerCase();return/^last/.test(t)?null:/(expir|enddate|endat|endsat|endedat|ends|until|closed|cancel|periodend|effectiveto|windowend|trialends|void|revoked)/.test(t)?`end`:/(due|deadline|schedul|renew|nextrun|estimated|expected|payable)/.test(t)?`due`:/(updated|modified|paid|ship|deliver|settled|resolved|completed|approved|confirmed|received|accepted|reviewed|verified|published|posted|viewed|decided|finalized)/.test(t)?`event`:/(issue|startdate|startat|startsat|startedat|periodstart|effectivedate|effectivefrom|windowstart|sentat|occurredat|requestedat|submittedat|^date$|^timestamp$|publish_date|balancefrom)/.test(t)?`start`:null}function Le(e,t,n){let r=e.fields.filter(e=>!e.system&&e.type===`datetime`&&!e.enum).flatMap(e=>{let t=Ie(e.name);return t?[{field:e,stage:t}]:[]});if(r.length===0)return;let i=r.find(e=>e.stage===`start`),a=i?Date.parse(String(t[i.field.name])):I-Math.floor(n()*L),o=Math.min(a+(1+Math.floor(n()*20))*H,I),s=Math.max(o,a)+(14+Math.floor(n()*32))*H,c={start:a,event:o,due:s,end:s+(30+Math.floor(n()*150))*H};for(let{field:e,stage:n}of r)t[e.name]=new Date(c[n]).toISOString()}var U=(e,t)=>e.fields.some(e=>e.name===t);function Re(e,t,n,r){let i=e.fields.find(e=>e.name===`status`);e.id.endsWith(`:Payment`)&&i?.enum?.includes(`completed`)&&r()<.6&&(t.status=`completed`);let a=D();ze(e,t,n,a);let o=a.products[n%a.products.length];if(o){if(/:(Product|Sku)$/.test(e.id)){if(U(e,`name`)&&(t.name=o.name),U(e,`price`)&&(t.price=o.price),e.id.endsWith(`:Product`)){if(U(e,`description`)){let e=a.id===x.id?`${o.name}, made in small batches.`:o.name;t.description=o.description??e}o.category&&U(e,`category`)&&(t.category=o.category),o.productType&&U(e,`productType`)&&(t.productType=o.productType)}return}if(m(e)&&U(e,`description`)){let e=a.lines??a.products.map(e=>({description:e.name})),n=e[Math.floor(r()*e.length)];n&&(t.description=n.description)}}}function ze(e,t,n,r){let i=(e,t)=>e?.length?e[t%e.length]:void 0;if(e.id.endsWith(`:Profile`)&&U(e,`name`)){let a=n<8?i(r.customers,n):n<13?i(r.vendors,n-8):i(r.instructors,n-13);a&&(t.name=a,U(e,`email`)&&(t.email=`${a.toLowerCase().replace(/[^a-z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}@example.com`));return}let a=e.id.split(`:`).pop()??``;if(a===`EventParticipant`){let i=r.instructors,a=!!i?.length&&n%5==0;U(e,`profileId`)&&(t.profileId=z(`${B}:${a&&i?13+Math.floor(n/5)%i.length:n%8}`)),U(e,`role`)&&(t.role=a?`instructor`:`attendee`);return}if(U(e,`allDay`)&&typeof t.startDate==`string`){let r=Date.parse(t.startDate)-Date.parse(t.startDate)%H+(6+n%15)*60*60*1e3;t.startDate=new Date(r).toISOString(),U(e,`endDate`)&&(t.endDate=new Date(r+36e5).toISOString())}let o={Event:r.eventNames,EventType:r.eventTypes,EventSeries:r.seriesNames,Place:r.placeNames,PlaceType:r.placeTypes}[a],s=i(o,n);s&&U(e,`name`)&&(t.name=s);let c=i(r.descriptions?.[a],n);c&&o&&U(e,`description`)&&(t.description=c)}function Be(e){let t=D().lines;return t?.length?t[e%t.length]:void 0}function W(e,t,n){let r=k(A(`${n}:${e.id}:${t}`)),i={id:z(`${e.id}:${t}`)};for(let n of e.fields)n.system||(i[n.name]=Pe(n,r,{modelId:e.id,index:t}));return Le(e,i,k(A(`${n}:${e.id}:${t}:dates`))),Re(e,i,t,r),i}function Ve(e,t,n=1){return Array.from({length:t},(t,r)=>W(e,r,n))}var He=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`});function G(e){return He.format(e/100)}var K=(e,t)=>`${e}:${String(t)}`;function Ue(e,t,n){if(t==null||t===``)return``;if(j(e)&&typeof t==`number`)return G(t);if(e.enum?.includes(String(t)))return Y(String(t));if(J(e)&&typeof t==`number`)return Xe(t);switch(e.type){case`boolean`:return t?`Yes`:`No`;case`datetime`:return e.showTime?String(t).slice(0,16).replace(`T`,` `):String(t).slice(0,10);case`foreignKey`:case`crossPackageRef`:return e.related&&n?.get(K(e.related,t))||String(t).slice(0,8);case`json`:return JSON.stringify(t);default:return String(t)}}function q(e){let t=e.replace(/_/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function We(e){return/[^aeiou]y$/i.test(e)?`${e.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/i.test(e)?`${e}es`:`${e}s`}function Ge(e){return/(series|species)$/i.test(e)?e:/[^aeiou]ies$/i.test(e)?`${e.slice(0,-3)}y`:/(ss|x|z|ch|sh)es$/i.test(e)?e.slice(0,-2):/[^s]s$/i.test(e)?e.slice(0,-1):e}function Ke(e,t){return(t?.trim()||Ge(e)).toLowerCase()}function qe(e,t,n){return n&&t?.trim()?t.trim():e.toLowerCase()}function Je(e){return`${e} ${e===1?`record`:`records`}`}function Ye(e){return q((e.type===`foreignKey`||e.type===`crossPackageRef`)&&/[a-z]Id$/.test(e.name)?e.name.slice(0,-2):e.name)}function Xe(e){return`${Number((e*100).toFixed(2))}%`}var J=e=>e.type===`decimal`&&/^(tax|discount|vat)Rate$/.test(e.name);function Y(e){return/^[a-z]{1,3}$/.test(e)?e.toUpperCase():q(e)}function Ze(e,t){return X((new URLSearchParams(e).get(`p`)??``).split(`,`).filter(e=>t.has(e)))}function X(e){return[...new Set(e)].sort()}function Z(e,t){let n=new Set,r=e=>{let i=t.get(e);if(i&&!n.has(e)){n.add(e);for(let e of i.dependencies)r(e)}};for(let t of e)r(t);return X(n)}function Qe(e,t,n){return t.filter(t=>t!==e&&n.get(t)?.dependencies.includes(e))}function $e(e){return e.packages.length?`?p=${[...e.packages].sort().join(`,`)}`:``}function et(e){return new URLSearchParams(e).has(`p`)}function tt(e,t){let n=new URLSearchParams(e);t===`recipes`?n.delete(`tab`):n.set(`tab`,t);let r=n.toString().replace(/%2C/gi,`,`);return r?`?${r}`:``}var Q=new Map(u.packages.map(e=>[e.id,e])),nt=new Set(Q.keys()),rt=new class{#e=r(n([]));get ids(){return e(this.#e)}set ids(e){t(this.#e,e,!0)}has(e){return this.ids.includes(e)}requiredBy(e){return Qe(e,this.ids,Q)}fromSearch(e){this.ids=Z(Ze(e,nt),Q)}add(...e){this.ids=Z([...this.ids,...e],Q)}remove(...e){let t=new Set(e),n=this.ids.filter(e=>!t.has(e));n=Z(n,Q),this.ids=X(n)}toggle(e){this.has(e)?this.remove(e):this.add(e)}apply(e){this.add(...(e.add??[]).filter(e=>nt.has(e))),this.remove(...e.remove??[])}clear(){this.ids=[]}},it=``;function at(e){it=e.replace(/\/+$/,``)}function $(){return $e({packages:rt.ids})}function ot(e){return`${it}${e}${$()}`}export{ee as $,be as A,h as B,W as C,Be as D,j as E,y as F,fe as G,he as H,ge as I,ae as J,u as K,pe as L,me as M,g as N,Me as O,b as P,le as Q,m as R,z as S,A as T,ue as U,ve as V,_ as W,ie as X,oe as Y,ce as Z,Je as _,et as a,k as b,Y as c,Ue as d,q as f,We as g,Ke as h,rt as i,xe as j,D as k,Ye as l,K as m,$ as n,tt as o,J as p,se as q,at as r,qe as s,ot as t,G as u,H as v,Ve as w,Fe as x,I as y,_e as z};