@happyvertical/smrt-planner 0.57.34 → 0.57.36

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 (534) hide show
  1. package/app/404.html +18 -18
  2. package/app/_app/immutable/chunks/{-ISFFgRZ.js → B2A9b31n.js} +1 -1
  3. package/app/_app/immutable/chunks/B83TYSQr.js +1 -0
  4. package/app/_app/immutable/chunks/{CBiGoewq.js → B92tYBti.js} +210 -22
  5. package/app/_app/immutable/chunks/{CzEZR3zk.js → BAHEs8x1.js} +1 -1
  6. package/app/_app/immutable/chunks/{CU4a_rKX.js → BBvaKpiH.js} +1 -1
  7. package/app/_app/immutable/chunks/{hZxLaVFg.js → BDLGOUjG.js} +1 -1
  8. package/app/_app/immutable/chunks/{CNPCEIe2.js → BK4Q9r-p.js} +2 -2
  9. package/app/_app/immutable/chunks/BWxuiUUQ.js +1 -0
  10. package/app/_app/immutable/chunks/{C4pQNjCl.js → Bam1tGzV.js} +1 -1
  11. package/app/_app/immutable/chunks/{z9_H8vtF.js → BzQwpCNL.js} +1 -1
  12. package/app/_app/immutable/chunks/{CSCLK1LQ.js → CQOSiWJT.js} +1 -1
  13. package/app/_app/immutable/chunks/{BQTYU0bG.js → CXKHVUl8.js} +3 -3
  14. package/app/_app/immutable/chunks/{D7lLDELj.js → CZZHy8wH.js} +1 -1
  15. package/app/_app/immutable/chunks/{Dy9Yriiq.js → Cah7KbJX.js} +1 -1
  16. package/app/_app/immutable/chunks/{EetkBuD2.js → CbqEev_D.js} +1 -1
  17. package/app/_app/immutable/chunks/CebfRLSO.js +2 -0
  18. package/app/_app/immutable/chunks/{DRrQW2LM.js → CoSt1eeS.js} +1 -1
  19. package/app/_app/immutable/chunks/{B8a8qgrX.js → CuXKclJc.js} +1 -1
  20. package/app/_app/immutable/chunks/{RDu9Dr22.js → CvF85a7U.js} +1 -1
  21. package/app/_app/immutable/chunks/{CbL5XGqX.js → DOvS-Q_j.js} +1 -1
  22. package/app/_app/immutable/chunks/{CPTDYg6b.js → DU7bchap.js} +1 -1
  23. package/app/_app/immutable/chunks/{I88OwmoF.js → DculBUrN.js} +1 -1
  24. package/app/_app/immutable/chunks/{INoVtrTs.js → Df-9DvW-.js} +1 -1
  25. package/app/_app/immutable/chunks/{CCRFEm1Z.js → DibzF-dr.js} +1 -1
  26. package/app/_app/immutable/chunks/DmWeaay9.js +10 -0
  27. package/app/_app/immutable/chunks/Dp8fm9zy.js +1 -0
  28. package/app/_app/immutable/chunks/{9cAwBYAv.js → DrlHpmDP.js} +1 -1
  29. package/app/_app/immutable/chunks/{U0yodJsu.js → TEUCK8U3.js} +1 -1
  30. package/app/_app/immutable/chunks/af5-eX5d.js +4 -0
  31. package/app/_app/immutable/entry/{app.BB8kamr7.js → app.D_SGGzg1.js} +2 -2
  32. package/app/_app/immutable/entry/start.DTQDJ3aR.js +1 -0
  33. package/app/_app/immutable/nodes/{0.CxrgFWGB.js → 0.oYkRoqUV.js} +1 -1
  34. package/app/_app/immutable/nodes/{1.B-YEVMRd.js → 1.D8vx-DO_.js} +1 -1
  35. package/app/_app/immutable/nodes/10.BGtDPYpn.js +3 -0
  36. package/app/_app/immutable/nodes/{11.DHuE5aXH.js → 11.CCPO2aO7.js} +1 -1
  37. package/app/_app/immutable/nodes/{12.DABuY5YN.js → 12.BuXye0Pc.js} +1 -1
  38. package/app/_app/immutable/nodes/{13.pSfaAqGR.js → 13.DVjFhD9E.js} +1 -1
  39. package/app/_app/immutable/nodes/{14.CWcnN_Wa.js → 14.JEZlhlfk.js} +1 -1
  40. package/app/_app/immutable/nodes/2.B8118MpH.js +26 -0
  41. package/app/_app/immutable/nodes/{3.Cb1niVXz.js → 3.C1rax0_L.js} +1 -1
  42. package/app/_app/immutable/nodes/{4.uDmI9UhG.js → 4.BJqCAAbG.js} +1 -1
  43. package/app/_app/immutable/nodes/{5.CCHLOr5q.js → 5.Fqu6Iwk4.js} +1 -1
  44. package/app/_app/immutable/nodes/{6.DSmMN1am.js → 6.DS8ylC6l.js} +1 -1
  45. package/app/_app/immutable/nodes/{7.CL8h_2hC.js → 7.BfRJmfq7.js} +1 -1
  46. package/app/_app/immutable/nodes/{8.PuwnQt-2.js → 8.B9ebm59e.js} +1 -1
  47. package/app/_app/immutable/nodes/{9.CtDJNLWL.js → 9.DM0CnRzS.js} +1 -1
  48. package/app/_app/version.json +1 -1
  49. package/app/advanced-styles/index.html +21 -21
  50. package/app/ai/index.html +24 -24
  51. package/app/blueprint/index.html +19 -19
  52. package/app/cookbook/index.html +19 -19
  53. package/app/index.html +34 -34
  54. package/app/m/ads/AdDeliveryTier/index.html +23 -23
  55. package/app/m/ads/AdEvent/index.html +23 -23
  56. package/app/m/ads/AdFormat/index.html +23 -23
  57. package/app/m/ads/AdGroup/index.html +23 -23
  58. package/app/m/ads/AdVariation/index.html +23 -23
  59. package/app/m/analytics/AnalyticsDataStream/index.html +23 -23
  60. package/app/m/analytics/AnalyticsEvent/index.html +23 -23
  61. package/app/m/analytics/AnalyticsProperty/index.html +23 -23
  62. package/app/m/analytics/AnalyticsReport/index.html +23 -23
  63. package/app/m/approvals/ApprovalEvent/index.html +23 -23
  64. package/app/m/approvals/ApprovalPolicy/index.html +23 -23
  65. package/app/m/approvals/ApprovalRequest/index.html +23 -23
  66. package/app/m/assets/Asset/attachments/index.html +24 -24
  67. package/app/m/assets/Asset/index.html +23 -23
  68. package/app/m/assets/AssetAssociation/index.html +23 -23
  69. package/app/m/assets/AssetMetafield/index.html +23 -23
  70. package/app/m/assets/AssetStatus/index.html +23 -23
  71. package/app/m/assets/AssetType/index.html +23 -23
  72. package/app/m/assets/Folder/index.html +23 -23
  73. package/app/m/chat/AgentSession/index.html +23 -23
  74. package/app/m/chat/ChatMessage/index.html +23 -23
  75. package/app/m/chat/ChatParticipant/index.html +23 -23
  76. package/app/m/chat/ChatReaction/index.html +23 -23
  77. package/app/m/chat/ChatRoom/index.html +23 -23
  78. package/app/m/chat/ChatThread/index.html +23 -23
  79. package/app/m/chat/VoiceGatewayTurn/index.html +23 -23
  80. package/app/m/chat/VoiceSession/index.html +23 -23
  81. package/app/m/commerce/Agreement/index.html +23 -23
  82. package/app/m/commerce/Cart/index.html +23 -23
  83. package/app/m/commerce/Contract/index.html +23 -23
  84. package/app/m/commerce/ContractLineItem/index.html +23 -23
  85. package/app/m/commerce/Customer/index.html +23 -23
  86. package/app/m/commerce/DocumentTax/index.html +23 -23
  87. package/app/m/commerce/Estimate/index.html +23 -23
  88. package/app/m/commerce/Fulfillment/index.html +23 -23
  89. package/app/m/commerce/FulfillmentLineItem/index.html +23 -23
  90. package/app/m/commerce/HistoricalCustomerFunds/index.html +23 -23
  91. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +23 -23
  92. package/app/m/commerce/HistoricalSalesLine/index.html +23 -23
  93. package/app/m/commerce/Invoice/index.html +23 -23
  94. package/app/m/commerce/InvoiceLineItem/index.html +23 -23
  95. package/app/m/commerce/Lease/index.html +23 -23
  96. package/app/m/commerce/LicenseSale/index.html +23 -23
  97. package/app/m/commerce/Order/index.html +23 -23
  98. package/app/m/commerce/Payment/index.html +23 -23
  99. package/app/m/commerce/PaymentAllocation/index.html +23 -23
  100. package/app/m/commerce/PaymentInstrument/index.html +23 -23
  101. package/app/m/commerce/PaymentIntent/index.html +23 -23
  102. package/app/m/commerce/Payout/index.html +23 -23
  103. package/app/m/commerce/ProductionOrder/index.html +23 -23
  104. package/app/m/commerce/PurchaseContract/index.html +23 -23
  105. package/app/m/commerce/PurchaseOrder/index.html +23 -23
  106. package/app/m/commerce/SalesContract/index.html +23 -23
  107. package/app/m/commerce/SupplierQuote/index.html +23 -23
  108. package/app/m/commerce/TaxCode/index.html +23 -23
  109. package/app/m/commerce/TaxComponent/index.html +23 -23
  110. package/app/m/commerce/TaxSettings/index.html +23 -23
  111. package/app/m/commerce/TaxSummaryReport/index.html +23 -23
  112. package/app/m/commerce/TenantPaymentAccount/index.html +23 -23
  113. package/app/m/commerce/Vendor/index.html +23 -23
  114. package/app/m/commerce/WholesaleOrder/index.html +23 -23
  115. package/app/m/content/Content/index.html +23 -23
  116. package/app/m/content/ContentContribution/index.html +23 -23
  117. package/app/m/content/ContentContributionAttachment/index.html +23 -23
  118. package/app/m/content/ContentContributionRevision/index.html +23 -23
  119. package/app/m/content/ContentContributionType/index.html +23 -23
  120. package/app/m/content/ContentContributor/index.html +23 -23
  121. package/app/m/content/ContentCorrection/index.html +23 -23
  122. package/app/m/content/ContentFeedSource/index.html +23 -23
  123. package/app/m/content/ContentGovernanceAssignment/index.html +23 -23
  124. package/app/m/content/ContentGovernancePolicy/index.html +23 -23
  125. package/app/m/content/ContentGovernanceProfile/index.html +23 -23
  126. package/app/m/content/ContentReference/index.html +23 -23
  127. package/app/m/content/ContentReview/index.html +23 -23
  128. package/app/m/content/ContentVersion/index.html +23 -23
  129. package/app/m/events/Event/index.html +23 -23
  130. package/app/m/events/EventParticipant/index.html +23 -23
  131. package/app/m/events/EventSeries/index.html +23 -23
  132. package/app/m/events/EventType/index.html +23 -23
  133. package/app/m/expenses/Expense/index.html +23 -23
  134. package/app/m/facts/Fact/index.html +23 -23
  135. package/app/m/facts/FactContent/index.html +23 -23
  136. package/app/m/facts/FactEvidence/index.html +23 -23
  137. package/app/m/facts/FactSource/index.html +23 -23
  138. package/app/m/facts/FactSubject/index.html +23 -23
  139. package/app/m/facts/FactTag/index.html +23 -23
  140. package/app/m/fields/FieldPolicy/index.html +23 -23
  141. package/app/m/fields/FieldPolicySuggestion/index.html +23 -23
  142. package/app/m/fields/FieldUsageCounter/index.html +23 -23
  143. package/app/m/human-resources/Employment/index.html +88 -0
  144. package/app/m/human-resources/EmploymentTerm/index.html +89 -0
  145. package/app/m/human-resources/HeldQualification/index.html +88 -0
  146. package/app/m/human-resources/Qualification/index.html +88 -0
  147. package/app/m/images/Image/index.html +23 -23
  148. package/app/m/inventory/InventoryLocation/index.html +23 -23
  149. package/app/m/inventory/Lot/index.html +23 -23
  150. package/app/m/inventory/LotCorrection/index.html +23 -23
  151. package/app/m/inventory/LotDocument/index.html +23 -23
  152. package/app/m/inventory/LotStockLevel/index.html +23 -23
  153. package/app/m/inventory/LotUsage/index.html +23 -23
  154. package/app/m/inventory/StockLevel/index.html +23 -23
  155. package/app/m/inventory/StockMovement/index.html +23 -23
  156. package/app/m/ledgers/Account/index.html +23 -23
  157. package/app/m/ledgers/Journal/index.html +23 -23
  158. package/app/m/ledgers/JournalEntry/index.html +23 -23
  159. package/app/m/ledgers/Ledger/index.html +23 -23
  160. package/app/m/manufacturing/Assembly/index.html +24 -24
  161. package/app/m/manufacturing/BillOfMaterials/index.html +25 -25
  162. package/app/m/manufacturing/BomLine/index.html +24 -24
  163. package/app/m/manufacturing/Operation/index.html +24 -24
  164. package/app/m/manufacturing/ProductionRun/index.html +24 -24
  165. package/app/m/manufacturing/ProductionRunCompletion/index.html +25 -24
  166. package/app/m/manufacturing/RoutingStep/index.html +25 -24
  167. package/app/m/marketing/Campaign/index.html +23 -23
  168. package/app/m/marketing/CampaignChannel/index.html +23 -23
  169. package/app/m/marketing/CampaignMetricSnapshot/index.html +23 -23
  170. package/app/m/messages/Account/index.html +23 -23
  171. package/app/m/messages/Attachment/index.html +23 -23
  172. package/app/m/messages/Blacklist/index.html +23 -23
  173. package/app/m/messages/Email/failed-sends/index.html +24 -24
  174. package/app/m/messages/Email/index.html +23 -23
  175. package/app/m/messages/Email/mailbox/index.html +24 -24
  176. package/app/m/messages/EmailAccount/index.html +23 -23
  177. package/app/m/messages/EmailAttachment/index.html +23 -23
  178. package/app/m/messages/EmailFolder/index.html +23 -23
  179. package/app/m/messages/Message/index.html +23 -23
  180. package/app/m/messages/MessagingEndpoint/index.html +23 -23
  181. package/app/m/messages/PersonaMessageRoute/index.html +23 -23
  182. package/app/m/messages/SlackAccount/index.html +23 -23
  183. package/app/m/messages/SlackMessage/index.html +23 -23
  184. package/app/m/messages/TelegramAccount/index.html +23 -23
  185. package/app/m/messages/Tweet/index.html +23 -23
  186. package/app/m/messages/TwitterAccount/index.html +23 -23
  187. package/app/m/messages/Whitelist/index.html +23 -23
  188. package/app/m/messages/ZulipAccount/index.html +23 -23
  189. package/app/m/places/Place/index.html +23 -23
  190. package/app/m/places/PlaceType/index.html +23 -23
  191. package/app/m/products/Category/index.html +23 -23
  192. package/app/m/products/Material/index.html +23 -23
  193. package/app/m/products/Product/index.html +23 -23
  194. package/app/m/products/Product/ingredients/index.html +24 -24
  195. package/app/m/products/ProductVariant/index.html +23 -23
  196. package/app/m/products/Sku/index.html +23 -23
  197. package/app/m/profiles/ApiKey/index.html +23 -23
  198. package/app/m/profiles/Bot/index.html +23 -23
  199. package/app/m/profiles/MagicLinkToken/index.html +23 -23
  200. package/app/m/profiles/NostrIdentity/index.html +23 -23
  201. package/app/m/profiles/OidcIdentity/index.html +23 -23
  202. package/app/m/profiles/Organization/index.html +23 -23
  203. package/app/m/profiles/Person/index.html +23 -23
  204. package/app/m/profiles/Profile/index.html +23 -23
  205. package/app/m/profiles/ProfileMetadata/index.html +23 -23
  206. package/app/m/profiles/ProfileMetafield/index.html +23 -23
  207. package/app/m/profiles/ProfileRelationship/index.html +23 -23
  208. package/app/m/profiles/ProfileRelationshipTerm/index.html +23 -23
  209. package/app/m/profiles/ProfileRelationshipType/index.html +23 -23
  210. package/app/m/profiles/ProfileType/index.html +23 -23
  211. package/app/m/projects/Comment/index.html +23 -23
  212. package/app/m/projects/Issue/index.html +23 -23
  213. package/app/m/projects/Label/index.html +23 -23
  214. package/app/m/projects/Project/index.html +23 -23
  215. package/app/m/projects/ProjectIntegration/index.html +23 -23
  216. package/app/m/projects/PullRequest/index.html +23 -23
  217. package/app/m/projects/Repository/index.html +23 -23
  218. package/app/m/properties/Property/index.html +23 -23
  219. package/app/m/properties/Zone/index.html +23 -23
  220. package/app/m/reports/RuntimeReport/index.html +23 -23
  221. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +23 -23
  222. package/app/m/reports/SmrtReportLock/index.html +23 -23
  223. package/app/m/reports/SmrtReportRefreshTask/index.html +23 -23
  224. package/app/m/reports/SmrtReportRun/index.html +23 -23
  225. package/app/m/reports/SmrtReportSchedule/index.html +23 -23
  226. package/app/m/reports/SmrtReportWatermark/index.html +23 -23
  227. package/app/m/sales/Agreement/index.html +23 -23
  228. package/app/m/sales/AttributionException/index.html +23 -23
  229. package/app/m/sales/AttributionPolicy/index.html +23 -23
  230. package/app/m/sales/Commission/index.html +24 -24
  231. package/app/m/sales/CommissionAdjustment/index.html +23 -23
  232. package/app/m/sales/CommissionPayout/index.html +25 -25
  233. package/app/m/sales/CommissionPlan/index.html +23 -23
  234. package/app/m/sales/Earner/index.html +24 -24
  235. package/app/m/sales/EarnerSourceAttribution/index.html +23 -23
  236. package/app/m/sales/EarningEvent/index.html +23 -23
  237. package/app/m/sales/ExecutedAgreement/index.html +23 -23
  238. package/app/m/sales/Lead/index.html +23 -23
  239. package/app/m/sales/Opportunity/index.html +23 -23
  240. package/app/m/sales/OpportunityConversion/index.html +23 -23
  241. package/app/m/sales/PipelineDefinition/index.html +23 -23
  242. package/app/m/sales/PipelineStage/index.html +23 -23
  243. package/app/m/sales/Referral/index.html +24 -24
  244. package/app/m/sales/ReferralAgreement/index.html +23 -23
  245. package/app/m/sales/ReferralLink/index.html +23 -23
  246. package/app/m/sales/ReferralProgram/index.html +25 -25
  247. package/app/m/sales/ReferralTermSnapshot/index.html +23 -23
  248. package/app/m/sales/ReferralTouch/index.html +23 -23
  249. package/app/m/sales/Referrer/index.html +25 -25
  250. package/app/m/sales/SalesActivity/index.html +23 -23
  251. package/app/m/sales/SalesRepresentative/index.html +23 -23
  252. package/app/m/sites/Site/index.html +23 -23
  253. package/app/m/sites/SiteAgentBinding/index.html +23 -23
  254. package/app/m/social/OAuthState/index.html +23 -23
  255. package/app/m/social/SocialAccount/index.html +23 -23
  256. package/app/m/social/SocialPost/index.html +23 -23
  257. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +23 -23
  258. package/app/m/subscriptions/BillingAdjustment/index.html +23 -23
  259. package/app/m/subscriptions/ClientCharge/index.html +23 -23
  260. package/app/m/subscriptions/CreditGrant/index.html +23 -23
  261. package/app/m/subscriptions/PricingRule/index.html +23 -23
  262. package/app/m/subscriptions/RetailCharge/index.html +23 -23
  263. package/app/m/subscriptions/SpendingPolicy/index.html +23 -23
  264. package/app/m/subscriptions/SubscriptionPlan/index.html +23 -23
  265. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +23 -23
  266. package/app/m/subscriptions/TenantSubscription/index.html +23 -23
  267. package/app/m/subscriptions/TenantUsageMetric/index.html +23 -23
  268. package/app/m/support/ServiceTimeEntry/index.html +23 -23
  269. package/app/m/support/SupportAiRun/index.html +23 -23
  270. package/app/m/support/SupportAvailability/index.html +23 -23
  271. package/app/m/support/SupportCase/index.html +25 -25
  272. package/app/m/support/SupportCaseEvent/index.html +23 -23
  273. package/app/m/support/SupportChannelBinding/index.html +23 -23
  274. package/app/m/support/SupportCharge/index.html +23 -23
  275. package/app/m/support/SupportCompensation/index.html +23 -23
  276. package/app/m/support/SupportCompensationPlan/index.html +23 -23
  277. package/app/m/support/SupportEscalation/index.html +23 -23
  278. package/app/m/support/SupportInteraction/index.html +25 -25
  279. package/app/m/support/SupportPlan/index.html +23 -23
  280. package/app/m/support/SupportPolicy/index.html +23 -23
  281. package/app/m/support/SupportQualification/index.html +23 -23
  282. package/app/m/support/SupportServiceTarget/index.html +23 -23
  283. package/app/m/support/SupportSpecialist/index.html +25 -25
  284. package/app/m/support/SupportWorkLink/index.html +23 -23
  285. package/app/m/tags/Tag/index.html +23 -23
  286. package/app/m/tags/TagAlias/index.html +23 -23
  287. package/app/m/timesheets/AttendanceBreak/index.html +23 -23
  288. package/app/m/timesheets/AttendancePunch/index.html +23 -23
  289. package/app/m/timesheets/AttendanceSegment/index.html +23 -23
  290. package/app/m/timesheets/ServiceChargeSnapshot/index.html +23 -23
  291. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +23 -23
  292. package/app/m/timesheets/ServiceTimeEntry/index.html +23 -23
  293. package/app/m/users/Group/index.html +23 -23
  294. package/app/m/users/GroupMember/index.html +23 -23
  295. package/app/m/users/GroupRole/index.html +23 -23
  296. package/app/m/users/Membership/index.html +23 -23
  297. package/app/m/users/MembershipOverride/index.html +23 -23
  298. package/app/m/users/Permission/index.html +23 -23
  299. package/app/m/users/Role/index.html +23 -23
  300. package/app/m/users/RolePermission/index.html +23 -23
  301. package/app/m/users/Session/index.html +23 -23
  302. package/app/m/users/Tenant/index.html +23 -23
  303. package/app/m/users/TenantIntegration/index.html +23 -23
  304. package/app/m/users/TenantPermissionOverride/index.html +23 -23
  305. package/app/m/users/User/index.html +23 -23
  306. package/app/m/video/Character/index.html +23 -23
  307. package/app/m/video/CharacterAsset/index.html +23 -23
  308. package/app/m/video/CompositeJob/index.html +23 -23
  309. package/app/m/video/Performer/index.html +23 -23
  310. package/app/m/video/PerformerAsset/index.html +23 -23
  311. package/app/m/video/Scene/index.html +23 -23
  312. package/app/m/video/SceneAsset/index.html +23 -23
  313. package/app/m/video/VideoComposition/index.html +23 -23
  314. package/app/m/video/VideoCompositionAsset/index.html +23 -23
  315. package/app/m/video/VideoSequence/index.html +23 -23
  316. package/app/m/video/VideoSequenceAsset/index.html +23 -23
  317. package/app/m/video/VideoShot/index.html +23 -23
  318. package/app/m/video/VideoShotAsset/index.html +23 -23
  319. package/app/m/video/VideoShotCharacter/index.html +23 -23
  320. package/app/m/video/VideoWorkflow/index.html +23 -23
  321. package/app/m/voice/VoiceOutput/index.html +23 -23
  322. package/app/m/voice/VoiceProfile/index.html +23 -23
  323. package/app/m/voice/VoiceSample/index.html +23 -23
  324. package/app/mcp.html +2 -2
  325. package/app/packages/ads/index.html +21 -21
  326. package/app/packages/analytics/index.html +21 -21
  327. package/app/packages/approvals/index.html +21 -21
  328. package/app/packages/assets/index.html +21 -21
  329. package/app/packages/chat/index.html +21 -21
  330. package/app/packages/comments/index.html +21 -21
  331. package/app/packages/commerce/index.html +21 -21
  332. package/app/packages/content/index.html +21 -21
  333. package/app/packages/events/index.html +21 -21
  334. package/app/packages/expenses/index.html +21 -21
  335. package/app/packages/facts/index.html +21 -21
  336. package/app/packages/fields/index.html +21 -21
  337. package/app/packages/human-resources/index.html +21 -21
  338. package/app/packages/images/index.html +21 -21
  339. package/app/packages/index.html +21 -21
  340. package/app/packages/ingestion/index.html +21 -21
  341. package/app/packages/inventory/index.html +21 -21
  342. package/app/packages/ledgers/index.html +21 -21
  343. package/app/packages/manufacturing/index.html +21 -21
  344. package/app/packages/marketing/index.html +21 -21
  345. package/app/packages/messages/index.html +21 -21
  346. package/app/packages/places/index.html +21 -21
  347. package/app/packages/preferences/index.html +21 -21
  348. package/app/packages/products/index.html +21 -21
  349. package/app/packages/profiles/index.html +21 -21
  350. package/app/packages/projects/index.html +21 -21
  351. package/app/packages/properties/index.html +21 -21
  352. package/app/packages/reactions/index.html +21 -21
  353. package/app/packages/reports/index.html +21 -21
  354. package/app/packages/sales/index.html +21 -21
  355. package/app/packages/sites/index.html +21 -21
  356. package/app/packages/social/index.html +21 -21
  357. package/app/packages/subscriptions/index.html +21 -21
  358. package/app/packages/support/index.html +21 -21
  359. package/app/packages/tags/index.html +21 -21
  360. package/app/packages/timesheets/index.html +21 -21
  361. package/app/packages/users/index.html +21 -21
  362. package/app/packages/video/index.html +21 -21
  363. package/app/packages/voice/index.html +21 -21
  364. package/app/packages/webhooks/index.html +21 -21
  365. package/app/recipes/account-access/help/index.html +21 -21
  366. package/app/recipes/account-access/index.html +23 -23
  367. package/app/recipes/activity/help/index.html +21 -21
  368. package/app/recipes/activity/index.html +23 -23
  369. package/app/recipes/affiliates.referrals/help/index.html +85 -0
  370. package/app/recipes/affiliates.referrals/index.html +90 -0
  371. package/app/recipes/agreements/help/index.html +21 -21
  372. package/app/recipes/agreements/index.html +23 -23
  373. package/app/recipes/analytics.reports/help/index.html +21 -21
  374. package/app/recipes/analytics.reports/index.html +23 -23
  375. package/app/recipes/assets/help/index.html +21 -21
  376. package/app/recipes/assets/index.html +23 -23
  377. package/app/recipes/billing/help/index.html +21 -21
  378. package/app/recipes/billing/index.html +23 -23
  379. package/app/recipes/chat.assistant/help/index.html +21 -21
  380. package/app/recipes/chat.assistant/index.html +23 -23
  381. package/app/recipes/comments/help/index.html +21 -21
  382. package/app/recipes/comments/index.html +23 -23
  383. package/app/recipes/commerce.customers/help/index.html +21 -21
  384. package/app/recipes/commerce.customers/index.html +23 -23
  385. package/app/recipes/commerce.estimates/help/index.html +21 -21
  386. package/app/recipes/commerce.estimates/index.html +23 -23
  387. package/app/recipes/commerce.purchases/help/index.html +21 -21
  388. package/app/recipes/commerce.purchases/index.html +23 -23
  389. package/app/recipes/commerce.sales/help/index.html +21 -21
  390. package/app/recipes/commerce.sales/index.html +23 -23
  391. package/app/recipes/commerce.vendors/help/index.html +21 -21
  392. package/app/recipes/commerce.vendors/index.html +23 -23
  393. package/app/recipes/commerce.wholesale/help/index.html +21 -21
  394. package/app/recipes/commerce.wholesale/index.html +23 -23
  395. package/app/recipes/events.calendar/help/index.html +21 -21
  396. package/app/recipes/events.calendar/index.html +23 -23
  397. package/app/recipes/expenses.tracking/help/index.html +21 -21
  398. package/app/recipes/expenses.tracking/index.html +23 -23
  399. package/app/recipes/fields.form-customization/help/index.html +21 -21
  400. package/app/recipes/fields.form-customization/index.html +23 -23
  401. package/app/recipes/human-resources.people/help/index.html +85 -0
  402. package/app/recipes/human-resources.people/index.html +90 -0
  403. package/app/recipes/human-resources.qualifications/help/index.html +85 -0
  404. package/app/recipes/human-resources.qualifications/index.html +90 -0
  405. package/app/recipes/ingestion/help/index.html +21 -21
  406. package/app/recipes/ingestion/index.html +23 -23
  407. package/app/recipes/integrations/help/index.html +21 -21
  408. package/app/recipes/integrations/index.html +23 -23
  409. package/app/recipes/inventory.stock/help/index.html +21 -21
  410. package/app/recipes/inventory.stock/index.html +23 -23
  411. package/app/recipes/ledgers.bookkeeping/help/index.html +21 -21
  412. package/app/recipes/ledgers.bookkeeping/index.html +23 -23
  413. package/app/recipes/manufacturing.assemblies/help/index.html +85 -0
  414. package/app/recipes/manufacturing.assemblies/index.html +90 -0
  415. package/app/recipes/manufacturing.production/help/index.html +85 -0
  416. package/app/recipes/manufacturing.production/index.html +90 -0
  417. package/app/recipes/messages/help/index.html +21 -21
  418. package/app/recipes/messages/index.html +23 -23
  419. package/app/recipes/products/help/index.html +21 -21
  420. package/app/recipes/products/index.html +23 -23
  421. package/app/recipes/projects.tracker/help/index.html +21 -21
  422. package/app/recipes/projects.tracker/index.html +23 -23
  423. package/app/recipes/reports.materialized/help/index.html +21 -21
  424. package/app/recipes/reports.materialized/index.html +23 -23
  425. package/app/recipes/reports.runtime/help/index.html +21 -21
  426. package/app/recipes/reports.runtime/index.html +23 -23
  427. package/app/recipes/sales.pipeline/help/index.html +21 -21
  428. package/app/recipes/sales.pipeline/index.html +23 -23
  429. package/app/recipes/support.tickets/help/index.html +85 -0
  430. package/app/recipes/support.tickets/index.html +90 -0
  431. package/app/recipes/tags.taxonomy/help/index.html +21 -21
  432. package/app/recipes/tags.taxonomy/index.html +23 -23
  433. package/app/recipes/team-collaboration/help/index.html +21 -21
  434. package/app/recipes/team-collaboration/index.html +23 -23
  435. package/app/recipes/timesheets.time-entries/help/index.html +21 -21
  436. package/app/recipes/timesheets.time-entries/index.html +23 -23
  437. package/app/s/custom-accounts/index.html +19 -19
  438. package/app/s/custom-appointments/index.html +19 -19
  439. package/app/s/custom-billing/index.html +19 -19
  440. package/app/s/custom-bookings/index.html +19 -19
  441. package/app/s/custom-buying/index.html +19 -19
  442. package/app/s/custom-checkout/index.html +19 -19
  443. package/app/s/custom-classes/index.html +19 -19
  444. package/app/s/custom-clients/index.html +19 -19
  445. package/app/s/custom-events/index.html +19 -19
  446. package/app/s/custom-fleet/index.html +19 -19
  447. package/app/s/custom-gigs/index.html +19 -19
  448. package/app/s/custom-giving/index.html +19 -19
  449. package/app/s/custom-instruments/index.html +19 -19
  450. package/app/s/custom-jobs/index.html +19 -19
  451. package/app/s/custom-kitchen/index.html +19 -19
  452. package/app/s/custom-lessons/index.html +19 -19
  453. package/app/s/custom-material/index.html +19 -19
  454. package/app/s/custom-meetings/index.html +19 -19
  455. package/app/s/custom-members/index.html +19 -19
  456. package/app/s/custom-merch/index.html +19 -19
  457. package/app/s/custom-money/index.html +19 -19
  458. package/app/s/custom-paint/index.html +19 -19
  459. package/app/s/custom-parts/index.html +19 -19
  460. package/app/s/custom-rentals/index.html +19 -19
  461. package/app/s/custom-roastery/index.html +19 -19
  462. package/app/s/custom-schedule/index.html +19 -19
  463. package/app/s/custom-shelf/index.html +19 -19
  464. package/app/s/custom-shop/index.html +19 -19
  465. package/app/s/custom-students/index.html +19 -19
  466. package/app/s/custom-wholesale/index.html +19 -19
  467. package/app/s/custom-work/index.html +19 -19
  468. package/app/s/custom-yard/index.html +19 -19
  469. package/app/s/section-access-control/index.html +19 -19
  470. package/app/s/section-account-security/index.html +19 -19
  471. package/app/s/section-accounting/index.html +19 -19
  472. package/app/s/section-activity/index.html +19 -19
  473. package/app/s/section-agreements/index.html +19 -19
  474. package/app/s/section-analytics/index.html +19 -19
  475. package/app/s/section-assets/index.html +19 -19
  476. package/app/s/section-billing/index.html +19 -19
  477. package/app/s/section-calendar/index.html +19 -19
  478. package/app/s/section-catalog/index.html +19 -19
  479. package/app/s/section-chat.assistant/index.html +19 -19
  480. package/app/s/section-comments/index.html +19 -19
  481. package/app/s/section-fields.form-customization/index.html +19 -19
  482. package/app/s/section-grow/index.html +79 -0
  483. package/app/s/section-ingestion/index.html +19 -19
  484. package/app/s/section-integrations/index.html +19 -19
  485. package/app/s/section-make/index.html +79 -0
  486. package/app/s/section-messages/index.html +19 -19
  487. package/app/s/section-more/index.html +19 -19
  488. package/app/s/section-operations/index.html +19 -19
  489. package/app/s/section-projects/index.html +19 -19
  490. package/app/s/section-purchasing/index.html +19 -19
  491. package/app/s/section-reports.materialized/index.html +19 -19
  492. package/app/s/section-reports.runtime/index.html +19 -19
  493. package/app/s/section-sales/index.html +19 -19
  494. package/app/s/section-staff/index.html +79 -0
  495. package/app/s/section-support/index.html +79 -0
  496. package/app/s/section-taxonomy/index.html +19 -19
  497. package/app/s/section-team/index.html +19 -19
  498. package/app/s/section-work/index.html +19 -19
  499. package/dist/catalog/catalog.json +1539 -123
  500. package/dist/catalog/generate/build.d.ts.map +1 -1
  501. package/dist/catalog/generate/build.js +23 -2
  502. package/dist/catalog/generate/extract.d.ts.map +1 -1
  503. package/dist/catalog/generate/extract.js +1 -0
  504. package/dist/catalog/generate/recipe-metadata.d.ts +1 -1
  505. package/dist/catalog/generate/recipe-metadata.d.ts.map +1 -1
  506. package/dist/catalog/generate/recipe-metadata.js +1 -0
  507. package/dist/catalog/index.d.ts +6 -0
  508. package/dist/catalog/index.d.ts.map +1 -1
  509. package/dist/catalog/index.js +13 -1
  510. package/dist/components/FeatureCard.svelte +4 -0
  511. package/dist/components/FeatureCard.svelte.d.ts.map +1 -1
  512. package/dist/components/RecordView.svelte +3 -2
  513. package/dist/components/RecordView.svelte.d.ts.map +1 -1
  514. package/dist/features/catalogue.d.ts +4 -0
  515. package/dist/features/catalogue.d.ts.map +1 -1
  516. package/dist/features/catalogue.js +7 -0
  517. package/dist/overviews/definitions.js +4 -4
  518. package/dist/planner/tab.svelte.d.ts +1 -1
  519. package/dist/recipes/types.d.ts +7 -0
  520. package/dist/recipes/types.d.ts.map +1 -1
  521. package/dist/screens/relations.d.ts.map +1 -1
  522. package/dist/screens/relations.js +6 -1
  523. package/dist/smrt-version.d.ts +1 -1
  524. package/dist/smrt-version.js +1 -1
  525. package/package.json +57 -57
  526. package/app/_app/immutable/chunks/1YcLpNOc.js +0 -1
  527. package/app/_app/immutable/chunks/BSAulPpp.js +0 -2
  528. package/app/_app/immutable/chunks/BfpExq-S.js +0 -1
  529. package/app/_app/immutable/chunks/CMkhxHXO.js +0 -4
  530. package/app/_app/immutable/chunks/DcgTbNcq.js +0 -1
  531. package/app/_app/immutable/chunks/ImF_qEDB.js +0 -10
  532. package/app/_app/immutable/entry/start.DO3OcZtK.js +0 -1
  533. package/app/_app/immutable/nodes/10.DO4mf8ht.js +0 -3
  534. package/app/_app/immutable/nodes/2.BOAJAsyF.js +0 -26
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "id": "ads",
7
7
  "packageName": "@happyvertical/smrt-ads",
8
- "version": "0.57.34",
8
+ "version": "0.57.36",
9
9
  "description": "Advertising delivery and tracking models for SMRT framework",
10
10
  "models": [
11
11
  {
@@ -1511,7 +1511,7 @@
1511
1511
  {
1512
1512
  "id": "analytics",
1513
1513
  "packageName": "@happyvertical/smrt-analytics",
1514
- "version": "0.57.34",
1514
+ "version": "0.57.36",
1515
1515
  "description": "Analytics integration models for SMRT framework",
1516
1516
  "models": [
1517
1517
  {
@@ -3420,7 +3420,7 @@
3420
3420
  {
3421
3421
  "id": "approvals",
3422
3422
  "packageName": "@happyvertical/smrt-approvals",
3423
- "version": "0.57.34",
3423
+ "version": "0.57.36",
3424
3424
  "description": "Approval decision gate for the SMRT framework: revision-bound, single-use approvals with quorum, expiry, and an append-only event ledger",
3425
3425
  "models": [
3426
3426
  {
@@ -3807,7 +3807,7 @@
3807
3807
  {
3808
3808
  "id": "assets",
3809
3809
  "packageName": "@happyvertical/smrt-assets",
3810
- "version": "0.57.34",
3810
+ "version": "0.57.36",
3811
3811
  "description": "Asset management system with versioning, metadata, and AI-powered operations for SMRT framework",
3812
3812
  "models": [
3813
3813
  {
@@ -5607,7 +5607,7 @@
5607
5607
  {
5608
5608
  "id": "chat",
5609
5609
  "packageName": "@happyvertical/smrt-chat",
5610
- "version": "0.57.34",
5610
+ "version": "0.57.36",
5611
5611
  "description": "Chat rooms, DMs, threads, and agent conversations for the SMRT framework",
5612
5612
  "models": [
5613
5613
  {
@@ -7974,7 +7974,7 @@
7974
7974
  {
7975
7975
  "id": "comments",
7976
7976
  "packageName": "@happyvertical/smrt-comments",
7977
- "version": "0.57.34",
7977
+ "version": "0.57.36",
7978
7978
  "description": "Record comments and mention hooks for SMRT applications",
7979
7979
  "models": [
7980
7980
  {
@@ -8390,7 +8390,7 @@
8390
8390
  {
8391
8391
  "id": "commerce",
8392
8392
  "packageName": "@happyvertical/smrt-commerce",
8393
- "version": "0.57.34",
8393
+ "version": "0.57.36",
8394
8394
  "description": "Commerce models for the SMRT framework - contracts, fulfillments, payments",
8395
8395
  "models": [
8396
8396
  {
@@ -20387,6 +20387,93 @@
20387
20387
  "references": [],
20388
20388
  "exposed": true
20389
20389
  },
20390
+ {
20391
+ "id": "@happyvertical/smrt-commerce:TenantPaymentDispute",
20392
+ "name": "TenantPaymentDispute",
20393
+ "collection": "tenantpaymentdisputes",
20394
+ "description": "One authoritative dispute snapshot and its immutable balance evidence.",
20395
+ "fields": [
20396
+ {
20397
+ "name": "tenantId",
20398
+ "type": "text",
20399
+ "required": true,
20400
+ "system": true
20401
+ },
20402
+ {
20403
+ "name": "backendId",
20404
+ "type": "text",
20405
+ "required": false,
20406
+ "default": ""
20407
+ },
20408
+ {
20409
+ "name": "environment",
20410
+ "type": "text",
20411
+ "required": false,
20412
+ "default": "test",
20413
+ "enum": [
20414
+ "test",
20415
+ "live"
20416
+ ]
20417
+ },
20418
+ {
20419
+ "name": "providerAccountId",
20420
+ "type": "text",
20421
+ "required": false,
20422
+ "default": ""
20423
+ },
20424
+ {
20425
+ "name": "disputeId",
20426
+ "type": "text",
20427
+ "required": false,
20428
+ "default": ""
20429
+ },
20430
+ {
20431
+ "name": "paymentId",
20432
+ "type": "foreignKey",
20433
+ "required": false,
20434
+ "related": "@happyvertical/smrt-commerce:Payment"
20435
+ },
20436
+ {
20437
+ "name": "status",
20438
+ "type": "text",
20439
+ "required": false,
20440
+ "default": "unknown"
20441
+ },
20442
+ {
20443
+ "name": "snapshotJson",
20444
+ "type": "text",
20445
+ "required": false,
20446
+ "system": true
20447
+ }
20448
+ ],
20449
+ "rest": [],
20450
+ "mcp": [],
20451
+ "cli": [],
20452
+ "methods": [
20453
+ {
20454
+ "name": "delete",
20455
+ "async": true,
20456
+ "parameters": [
20457
+ "_options?: SmrtDeleteOptions"
20458
+ ],
20459
+ "returnType": "Promise<void>",
20460
+ "aiCallable": false
20461
+ },
20462
+ {
20463
+ "name": "save",
20464
+ "async": true,
20465
+ "parameters": [
20466
+ "options?: SmrtSaveOptions"
20467
+ ],
20468
+ "returnType": "Promise<this>",
20469
+ "aiCallable": false
20470
+ }
20471
+ ],
20472
+ "references": [
20473
+ "@happyvertical/smrt-commerce:Payment"
20474
+ ],
20475
+ "exposed": false
20476
+ },
20390
20477
  {
20391
20478
  "id": "@happyvertical/smrt-commerce:TenantPaymentWebhookEvent",
20392
20479
  "name": "TenantPaymentWebhookEvent",
@@ -20450,6 +20537,8 @@
20450
20537
  "application_fee",
20451
20538
  "refund_reported",
20452
20539
  "refund_updated",
20540
+ "dispute_updated",
20541
+ "dispute_reported",
20453
20542
  "late_payment",
20454
20543
  "ignored"
20455
20544
  ]
@@ -20460,6 +20549,12 @@
20460
20549
  "required": false,
20461
20550
  "default": ""
20462
20551
  },
20552
+ {
20553
+ "name": "paymentId",
20554
+ "type": "text",
20555
+ "required": false,
20556
+ "default": ""
20557
+ },
20463
20558
  {
20464
20559
  "name": "applicationFeeJson",
20465
20560
  "type": "text",
@@ -22467,7 +22562,7 @@
22467
22562
  {
22468
22563
  "id": "content",
22469
22564
  "packageName": "@happyvertical/smrt-content",
22470
- "version": "0.57.34",
22565
+ "version": "0.57.36",
22471
22566
  "description": "Content processing module for SMRT framework - handles documents, web content, and media",
22472
22567
  "models": [
22473
22568
  {
@@ -29397,7 +29492,7 @@
29397
29492
  {
29398
29493
  "id": "events",
29399
29494
  "packageName": "@happyvertical/smrt-events",
29400
- "version": "0.57.34",
29495
+ "version": "0.57.36",
29401
29496
  "description": "Hierarchical event management with participant tracking and SMRT framework support",
29402
29497
  "models": [
29403
29498
  {
@@ -31401,7 +31496,7 @@
31401
31496
  {
31402
31497
  "id": "expenses",
31403
31498
  "packageName": "@happyvertical/smrt-expenses",
31404
- "version": "0.57.34",
31499
+ "version": "0.57.36",
31405
31500
  "description": "Expense records for the SMRT framework - reviewed costs against a cost object, deduplicated receipts, and commitment drawdown",
31406
31501
  "models": [
31407
31502
  {
@@ -32213,7 +32308,7 @@
32213
32308
  {
32214
32309
  "id": "facts",
32215
32310
  "packageName": "@happyvertical/smrt-facts",
32216
- "version": "0.57.34",
32311
+ "version": "0.57.36",
32217
32312
  "description": "Distributed memory and knowledge management with provenance tracking for SMRT framework",
32218
32313
  "models": [
32219
32314
  {
@@ -34237,7 +34332,7 @@
34237
34332
  {
34238
34333
  "id": "fields",
34239
34334
  "packageName": "@happyvertical/smrt-fields",
34240
- "version": "0.57.34",
34335
+ "version": "0.57.36",
34241
34336
  "description": "Layered field policy store and resolver (defaults, visibility tiers, help text) for SMRT objects",
34242
34337
  "models": [
34243
34338
  {
@@ -34950,7 +35045,7 @@
34950
35045
  {
34951
35046
  "id": "human-resources",
34952
35047
  "packageName": "@happyvertical/smrt-human-resources",
34953
- "version": "0.57.34",
35048
+ "version": "0.57.36",
34954
35049
  "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",
34955
35050
  "models": [
34956
35051
  {
@@ -34969,7 +35064,8 @@
34969
35064
  "name": "profileId",
34970
35065
  "type": "crossPackageRef",
34971
35066
  "required": false,
34972
- "related": "@happyvertical/smrt-profiles:Profile"
35067
+ "related": "@happyvertical/smrt-profiles:Profile",
35068
+ "description": "The person who works for you."
34973
35069
  },
34974
35070
  {
34975
35071
  "name": "userId",
@@ -34986,17 +35082,20 @@
34986
35082
  {
34987
35083
  "name": "employeeNumber",
34988
35084
  "type": "text",
34989
- "required": false
35085
+ "required": false,
35086
+ "description": "Your own reference for this person, such as a staff number."
34990
35087
  },
34991
35088
  {
34992
35089
  "name": "workerType",
34993
35090
  "type": "text",
34994
- "required": false
35091
+ "required": false,
35092
+ "description": "Whether they are an employee, contractor or another kind of worker."
34995
35093
  },
34996
35094
  {
34997
35095
  "name": "position",
34998
35096
  "type": "text",
34999
- "required": false
35097
+ "required": false,
35098
+ "description": "Their role or trade."
35000
35099
  },
35001
35100
  {
35002
35101
  "name": "status",
@@ -35006,7 +35105,8 @@
35006
35105
  "active",
35007
35106
  "on-leave",
35008
35107
  "ended"
35009
- ]
35108
+ ],
35109
+ "description": "Whether they currently work for you."
35010
35110
  }
35011
35111
  ],
35012
35112
  "rest": [],
@@ -35136,22 +35236,26 @@
35136
35236
  "name": "employmentId",
35137
35237
  "type": "foreignKey",
35138
35238
  "required": false,
35139
- "related": "@happyvertical/smrt-human-resources:Employment"
35239
+ "related": "@happyvertical/smrt-human-resources:Employment",
35240
+ "description": "The person this period of work belongs to."
35140
35241
  },
35141
35242
  {
35142
35243
  "name": "startedOn",
35143
35244
  "type": "text",
35144
- "required": false
35245
+ "required": false,
35246
+ "description": "The first day of this period of work."
35145
35247
  },
35146
35248
  {
35147
35249
  "name": "endedOn",
35148
35250
  "type": "text",
35149
- "required": false
35251
+ "required": false,
35252
+ "description": "The last day of this period of work. Empty while it continues."
35150
35253
  },
35151
35254
  {
35152
35255
  "name": "endReason",
35153
35256
  "type": "text",
35154
- "required": false
35257
+ "required": false,
35258
+ "description": "Why the period of work ended."
35155
35259
  }
35156
35260
  ],
35157
35261
  "rest": [],
@@ -35194,13 +35298,15 @@
35194
35298
  "name": "qualificationId",
35195
35299
  "type": "foreignKey",
35196
35300
  "required": false,
35197
- "related": "@happyvertical/smrt-human-resources:Qualification"
35301
+ "related": "@happyvertical/smrt-human-resources:Qualification",
35302
+ "description": "The qualification this person holds."
35198
35303
  },
35199
35304
  {
35200
35305
  "name": "profileId",
35201
35306
  "type": "crossPackageRef",
35202
35307
  "required": false,
35203
- "related": "@happyvertical/smrt-profiles:Profile"
35308
+ "related": "@happyvertical/smrt-profiles:Profile",
35309
+ "description": "The person who holds it."
35204
35310
  },
35205
35311
  {
35206
35312
  "name": "employmentId",
@@ -35211,17 +35317,20 @@
35211
35317
  {
35212
35318
  "name": "issuedOn",
35213
35319
  "type": "text",
35214
- "required": false
35320
+ "required": false,
35321
+ "description": "The day it was given."
35215
35322
  },
35216
35323
  {
35217
35324
  "name": "expiresOn",
35218
35325
  "type": "text",
35219
- "required": false
35326
+ "required": false,
35327
+ "description": "The day it runs out. Empty if it does not."
35220
35328
  },
35221
35329
  {
35222
35330
  "name": "certificateNumber",
35223
35331
  "type": "text",
35224
- "required": false
35332
+ "required": false,
35333
+ "description": "The number printed on the certificate."
35225
35334
  },
35226
35335
  {
35227
35336
  "name": "status",
@@ -35232,7 +35341,8 @@
35232
35341
  "expired",
35233
35342
  "suspended",
35234
35343
  "revoked"
35235
- ]
35344
+ ],
35345
+ "description": "Whether it is valid, expired, suspended or revoked."
35236
35346
  },
35237
35347
  {
35238
35348
  "name": "verifiedByProfileId",
@@ -35382,7 +35492,8 @@
35382
35492
  {
35383
35493
  "name": "name",
35384
35494
  "type": "text",
35385
- "required": false
35495
+ "required": false,
35496
+ "description": "What the qualification is called, such as First aid."
35386
35497
  },
35387
35498
  {
35388
35499
  "name": "kind",
@@ -35394,23 +35505,27 @@
35394
35505
  "authorization",
35395
35506
  "training",
35396
35507
  "restriction"
35397
- ]
35508
+ ],
35509
+ "description": "The sort of qualification, such as a certificate or a licence."
35398
35510
  },
35399
35511
  {
35400
35512
  "name": "issuingBody",
35401
35513
  "type": "text",
35402
- "required": false
35514
+ "required": false,
35515
+ "description": "Who gives it out."
35403
35516
  },
35404
35517
  {
35405
35518
  "name": "expires",
35406
35519
  "type": "boolean",
35407
35520
  "required": true,
35408
- "default": false
35521
+ "default": false,
35522
+ "description": "Whether it has to be renewed."
35409
35523
  },
35410
35524
  {
35411
35525
  "name": "validityMonths",
35412
35526
  "type": "integer",
35413
- "required": false
35527
+ "required": false,
35528
+ "description": "How many months it lasts once given."
35414
35529
  },
35415
35530
  {
35416
35531
  "name": "scope",
@@ -35465,12 +35580,264 @@
35465
35580
  "via": [
35466
35581
  "@happyvertical/smrt-tenancy"
35467
35582
  ]
35468
- }
35583
+ },
35584
+ "recipes": [
35585
+ {
35586
+ "id": "human-resources.people",
35587
+ "label": "Employees",
35588
+ "summary": "Keep a record of who works for you and in what role. Only people can see it; agents cannot read it.",
35589
+ "synonyms": [
35590
+ "hr",
35591
+ "human resources",
35592
+ "staff",
35593
+ "people",
35594
+ "team",
35595
+ "workers"
35596
+ ],
35597
+ "models": [
35598
+ "@happyvertical/smrt-human-resources:Employment",
35599
+ "@happyvertical/smrt-human-resources:EmploymentTerm"
35600
+ ],
35601
+ "nav": [
35602
+ {
35603
+ "label": "Employees",
35604
+ "model": "@happyvertical/smrt-human-resources:Employment",
35605
+ "icon": "users",
35606
+ "description": "Everyone who works for you, with their role and status.",
35607
+ "noun": "employee"
35608
+ }
35609
+ ],
35610
+ "requires": [],
35611
+ "section": {
35612
+ "id": "staff",
35613
+ "label": "Staff",
35614
+ "icon": "users",
35615
+ "description": "The people who work for you."
35616
+ },
35617
+ "options": {
35618
+ "@happyvertical/smrt-human-resources:Employment": {
35619
+ "fields": {
35620
+ "profileId": {
35621
+ "label": "Person",
35622
+ "order": 1
35623
+ },
35624
+ "employeeNumber": {
35625
+ "order": 2
35626
+ },
35627
+ "position": {
35628
+ "order": 3
35629
+ },
35630
+ "workerType": {
35631
+ "order": 4
35632
+ },
35633
+ "status": {
35634
+ "order": 5
35635
+ },
35636
+ "tenantId": {
35637
+ "visibility": "hidden"
35638
+ },
35639
+ "userId": {
35640
+ "visibility": "advanced"
35641
+ },
35642
+ "employerProfileId": {
35643
+ "visibility": "advanced"
35644
+ }
35645
+ }
35646
+ },
35647
+ "@happyvertical/smrt-human-resources:EmploymentTerm": {
35648
+ "fields": {
35649
+ "employmentId": {
35650
+ "label": "Person",
35651
+ "order": 1
35652
+ },
35653
+ "startedOn": {
35654
+ "label": "First day",
35655
+ "order": 2
35656
+ },
35657
+ "endedOn": {
35658
+ "label": "Last day",
35659
+ "order": 3
35660
+ },
35661
+ "endReason": {
35662
+ "order": 4
35663
+ },
35664
+ "tenantId": {
35665
+ "visibility": "hidden"
35666
+ }
35667
+ }
35668
+ }
35669
+ },
35670
+ "help": {
35671
+ "markdown": "## Overview\n\nEmployees is where you keep a record of who works for you. Each person has an\nemployment record with their role, their worker type and whether they are\ncurrently active, plus the dates they started and, if they left, finished.\n\nOnly people using the app can see these records. They are kept closed to\nassistants and other automated tools on purpose, so an agent cannot read them.\n\n## Tasks\n\n### Add an employee\n\n1. Open the list of employees and choose **New**.\n2. Pick the **{field:Employment.profileId}**.\n3. Give them an **{field:Employment.employeeNumber}**, your own reference for them.\n4. Fill in their **{field:Employment.position}** and **{field:Employment.workerType}**.\n5. Save. They now show in your list of employees.\n\n### Record that someone has left\n\n1. Open the person from the list.\n2. Set the **{field:Employment.status}** to show they no longer work for you.\n3. Record their **{field:EmploymentTerm.endedOn}** and the **{field:EmploymentTerm.endReason}**.\n4. Save. Their history stays on file.\n",
35672
+ "fieldRefs": [
35673
+ "Employment.employeeNumber",
35674
+ "Employment.position",
35675
+ "Employment.profileId",
35676
+ "Employment.status",
35677
+ "Employment.workerType",
35678
+ "EmploymentTerm.endReason",
35679
+ "EmploymentTerm.endedOn"
35680
+ ]
35681
+ },
35682
+ "exposure": "ui-only",
35683
+ "demo": {
35684
+ "mode": "server",
35685
+ "reasons": [
35686
+ "Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."
35687
+ ]
35688
+ }
35689
+ },
35690
+ {
35691
+ "id": "human-resources.qualifications",
35692
+ "label": "Qualifications",
35693
+ "summary": "Track the certificates and training your people hold, and when they run out. Only people can see it; agents cannot read it.",
35694
+ "synonyms": [
35695
+ "certifications",
35696
+ "certificates",
35697
+ "licences",
35698
+ "training",
35699
+ "first aid"
35700
+ ],
35701
+ "models": [
35702
+ "@happyvertical/smrt-human-resources:Qualification",
35703
+ "@happyvertical/smrt-human-resources:HeldQualification"
35704
+ ],
35705
+ "nav": [
35706
+ {
35707
+ "label": "Qualifications",
35708
+ "model": "@happyvertical/smrt-human-resources:Qualification",
35709
+ "icon": "book",
35710
+ "description": "The certificates, licences and training your people can hold.",
35711
+ "noun": "qualification"
35712
+ },
35713
+ {
35714
+ "label": "Held qualifications",
35715
+ "model": "@happyvertical/smrt-human-resources:HeldQualification",
35716
+ "icon": "fileText",
35717
+ "description": "Who holds which qualification, and when it runs out.",
35718
+ "noun": "held qualification"
35719
+ }
35720
+ ],
35721
+ "requires": [
35722
+ "human-resources.people"
35723
+ ],
35724
+ "section": {
35725
+ "id": "staff",
35726
+ "label": "Staff",
35727
+ "icon": "users",
35728
+ "description": "The people who work for you."
35729
+ },
35730
+ "options": {
35731
+ "@happyvertical/smrt-human-resources:Qualification": {
35732
+ "fields": {
35733
+ "name": {
35734
+ "order": 1
35735
+ },
35736
+ "kind": {
35737
+ "order": 2
35738
+ },
35739
+ "issuingBody": {
35740
+ "order": 3
35741
+ },
35742
+ "expires": {
35743
+ "order": 4
35744
+ },
35745
+ "validityMonths": {
35746
+ "order": 5
35747
+ },
35748
+ "key": {
35749
+ "visibility": "advanced"
35750
+ },
35751
+ "scope": {
35752
+ "visibility": "advanced"
35753
+ },
35754
+ "isActive": {
35755
+ "visibility": "advanced"
35756
+ },
35757
+ "tenantId": {
35758
+ "visibility": "hidden"
35759
+ }
35760
+ }
35761
+ },
35762
+ "@happyvertical/smrt-human-resources:HeldQualification": {
35763
+ "fields": {
35764
+ "qualificationId": {
35765
+ "label": "Qualification",
35766
+ "order": 1
35767
+ },
35768
+ "profileId": {
35769
+ "label": "Person",
35770
+ "order": 2
35771
+ },
35772
+ "issuedOn": {
35773
+ "order": 3
35774
+ },
35775
+ "expiresOn": {
35776
+ "order": 4
35777
+ },
35778
+ "certificateNumber": {
35779
+ "order": 5
35780
+ },
35781
+ "status": {
35782
+ "order": 6
35783
+ },
35784
+ "tenantId": {
35785
+ "visibility": "hidden"
35786
+ },
35787
+ "employmentId": {
35788
+ "visibility": "advanced"
35789
+ },
35790
+ "verifiedByProfileId": {
35791
+ "visibility": "advanced"
35792
+ },
35793
+ "verifiedAt": {
35794
+ "visibility": "advanced"
35795
+ },
35796
+ "documentAssetId": {
35797
+ "visibility": "advanced"
35798
+ },
35799
+ "renewalOfId": {
35800
+ "visibility": "hidden"
35801
+ }
35802
+ }
35803
+ }
35804
+ },
35805
+ "help": {
35806
+ "markdown": "## Overview\n\nQualifications is where you list the certificates, licences and training your\nwork needs, such as first aid, and record who holds each one and when it runs\nout. It builds on Employees, so switch that on first.\n\nOnly people using the app can see these records. They are kept closed to\nassistants and other automated tools on purpose, so an agent cannot read them.\n\n## Tasks\n\n### Set up a qualification\n\n1. Open the list of qualifications and choose **New**.\n2. Type the **{field:Qualification.name}**, for example \"First aid\".\n3. Say who gives it out in **{field:Qualification.issuingBody}**.\n4. Tick **{field:Qualification.expires}** if it has to be renewed, and set **{field:Qualification.validityMonths}** to how long it lasts.\n5. Save.\n\n### Record who holds a qualification\n\n1. Open the held qualifications and choose **New**.\n2. Pick the **{field:HeldQualification.qualificationId}** and the **{field:HeldQualification.profileId}** who holds it.\n3. Enter the date it was **{field:HeldQualification.issuedOn}** and when it **{field:HeldQualification.expiresOn}**.\n4. Add the **{field:HeldQualification.certificateNumber}** from the certificate.\n5. Set the **{field:HeldQualification.status}** to show whether it is still valid.\n6. Save. You can now see who needs to renew before the date.\n",
35807
+ "fieldRefs": [
35808
+ "HeldQualification.certificateNumber",
35809
+ "HeldQualification.expiresOn",
35810
+ "HeldQualification.issuedOn",
35811
+ "HeldQualification.profileId",
35812
+ "HeldQualification.qualificationId",
35813
+ "HeldQualification.status",
35814
+ "Qualification.expires",
35815
+ "Qualification.issuingBody",
35816
+ "Qualification.name",
35817
+ "Qualification.validityMonths"
35818
+ ]
35819
+ },
35820
+ "exposure": "ui-only",
35821
+ "demo": {
35822
+ "mode": "server",
35823
+ "reasons": [
35824
+ "Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624)."
35825
+ ]
35826
+ },
35827
+ "effectiveDemo": {
35828
+ "mode": "server",
35829
+ "reasons": [
35830
+ "Needs a server because its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3624).",
35831
+ "Needs human-resources.people, which is server."
35832
+ ]
35833
+ }
35834
+ }
35835
+ ]
35469
35836
  },
35470
35837
  {
35471
35838
  "id": "images",
35472
35839
  "packageName": "@happyvertical/smrt-images",
35473
- "version": "0.57.34",
35840
+ "version": "0.57.36",
35474
35841
  "description": "Image asset management with AI-powered categorization, search, editing, and metadata extraction for SMRT framework",
35475
35842
  "models": [
35476
35843
  {
@@ -36080,7 +36447,7 @@
36080
36447
  {
36081
36448
  "id": "ingestion",
36082
36449
  "packageName": "@happyvertical/smrt-ingestion",
36083
- "version": "0.57.34",
36450
+ "version": "0.57.36",
36084
36451
  "description": "Durable tenant-scoped intake and evidence foundations",
36085
36452
  "models": [
36086
36453
  {
@@ -37226,7 +37593,7 @@
37226
37593
  {
37227
37594
  "id": "inventory",
37228
37595
  "packageName": "@happyvertical/smrt-inventory",
37229
- "version": "0.57.34",
37596
+ "version": "0.57.36",
37230
37597
  "description": "Multi-location stock tracking for the SMRT framework — Sku, InventoryLocation, StockLevel, StockMovement, lot and serial tracking, and stock-mutation and lot services",
37231
37598
  "models": [
37232
37599
  {
@@ -38481,7 +38848,7 @@
38481
38848
  {
38482
38849
  "id": "ledgers",
38483
38850
  "packageName": "@happyvertical/smrt-ledgers",
38484
- "version": "0.57.34",
38851
+ "version": "0.57.36",
38485
38852
  "description": "Double-entry accounting ledger for the SMRT framework",
38486
38853
  "models": [
38487
38854
  {
@@ -40030,7 +40397,7 @@
40030
40397
  {
40031
40398
  "id": "manufacturing",
40032
40399
  "packageName": "@happyvertical/smrt-manufacturing",
40033
- "version": "0.57.34",
40400
+ "version": "0.57.36",
40034
40401
  "description": "Bills of materials, cost rollup, and production-order operations for the SMRT framework — strictly industry-neutral",
40035
40402
  "models": [
40036
40403
  {
@@ -40137,19 +40504,22 @@
40137
40504
  "name": "estimatedLabourMinutes",
40138
40505
  "type": "integer",
40139
40506
  "required": false,
40140
- "default": 0
40507
+ "default": 0,
40508
+ "description": "About how many minutes it takes to make one."
40141
40509
  },
40142
40510
  {
40143
40511
  "name": "defaultOperationId",
40144
40512
  "type": "foreignKey",
40145
40513
  "required": false,
40146
- "related": "@happyvertical/smrt-manufacturing:Operation"
40514
+ "related": "@happyvertical/smrt-manufacturing:Operation",
40515
+ "description": "The kind of work usually booked to this assembly."
40147
40516
  },
40148
40517
  {
40149
40518
  "name": "partReference",
40150
40519
  "type": "text",
40151
40520
  "required": false,
40152
- "default": ""
40521
+ "default": "",
40522
+ "description": "Your own drawing or part number for this assembly."
40153
40523
  }
40154
40524
  ],
40155
40525
  "rest": [
@@ -40294,18 +40664,21 @@
40294
40664
  "name": "productId",
40295
40665
  "type": "text",
40296
40666
  "required": true,
40297
- "default": ""
40667
+ "default": "",
40668
+ "description": "The assembly this list of parts is for."
40298
40669
  },
40299
40670
  {
40300
40671
  "name": "version",
40301
40672
  "type": "integer",
40302
40673
  "required": true,
40303
- "default": 1
40674
+ "default": 1,
40675
+ "description": "The revision number, so you can change a list and keep the old one."
40304
40676
  },
40305
40677
  {
40306
40678
  "name": "effectiveDate",
40307
40679
  "type": "datetime",
40308
- "required": false
40680
+ "required": false,
40681
+ "description": "The day this list starts to be used."
40309
40682
  },
40310
40683
  {
40311
40684
  "name": "status",
@@ -40316,13 +40689,15 @@
40316
40689
  "draft",
40317
40690
  "active",
40318
40691
  "superseded"
40319
- ]
40692
+ ],
40693
+ "description": "Whether this list is a draft, in use or retired."
40320
40694
  },
40321
40695
  {
40322
40696
  "name": "notes",
40323
40697
  "type": "text",
40324
40698
  "required": false,
40325
- "default": ""
40699
+ "default": "",
40700
+ "description": "Anything people making it should know."
40326
40701
  },
40327
40702
  {
40328
40703
  "name": "currency",
@@ -40440,24 +40815,28 @@
40440
40815
  "name": "bomId",
40441
40816
  "type": "text",
40442
40817
  "required": true,
40443
- "default": ""
40818
+ "default": "",
40819
+ "description": "The list of parts this line belongs to."
40444
40820
  },
40445
40821
  {
40446
40822
  "name": "componentSkuId",
40447
40823
  "type": "text",
40448
40824
  "required": true,
40449
- "default": ""
40825
+ "default": "",
40826
+ "description": "The part that goes into the assembly."
40450
40827
  },
40451
40828
  {
40452
40829
  "name": "qtyPerUnit",
40453
40830
  "type": "decimal",
40454
- "required": false
40831
+ "required": false,
40832
+ "description": "How much of this part goes into one unit."
40455
40833
  },
40456
40834
  {
40457
40835
  "name": "uom",
40458
40836
  "type": "text",
40459
40837
  "required": false,
40460
- "default": "each"
40838
+ "default": "each",
40839
+ "description": "What the amount is counted in, such as each or kilograms."
40461
40840
  },
40462
40841
  {
40463
40842
  "name": "wastePercent",
@@ -40581,19 +40960,22 @@
40581
40960
  "name": "code",
40582
40961
  "type": "text",
40583
40962
  "required": true,
40584
- "default": ""
40963
+ "default": "",
40964
+ "description": "A short code for this kind of work."
40585
40965
  },
40586
40966
  {
40587
40967
  "name": "name",
40588
40968
  "type": "text",
40589
40969
  "required": true,
40590
- "default": ""
40970
+ "default": "",
40971
+ "description": "What this kind of work is called, such as cutting."
40591
40972
  },
40592
40973
  {
40593
40974
  "name": "category",
40594
40975
  "type": "text",
40595
40976
  "required": false,
40596
- "default": ""
40977
+ "default": "",
40978
+ "description": "A group to sort similar work together."
40597
40979
  },
40598
40980
  {
40599
40981
  "name": "isActive",
@@ -40685,17 +41067,20 @@
40685
41067
  "name": "bomId",
40686
41068
  "type": "foreignKey",
40687
41069
  "required": true,
40688
- "related": "@happyvertical/smrt-manufacturing:BillOfMaterials"
41070
+ "related": "@happyvertical/smrt-manufacturing:BillOfMaterials",
41071
+ "description": "The list of parts this run makes from."
40689
41072
  },
40690
41073
  {
40691
41074
  "name": "targetQty",
40692
41075
  "type": "decimal",
40693
- "required": false
41076
+ "required": false,
41077
+ "description": "How many you plan to make."
40694
41078
  },
40695
41079
  {
40696
41080
  "name": "completedQty",
40697
41081
  "type": "decimal",
40698
- "required": false
41082
+ "required": false,
41083
+ "description": "How many have been finished so far."
40699
41084
  },
40700
41085
  {
40701
41086
  "name": "status",
@@ -40707,7 +41092,8 @@
40707
41092
  "in_progress",
40708
41093
  "done",
40709
41094
  "cancelled"
40710
- ]
41095
+ ],
41096
+ "description": "Whether the run is planned, under way, done or cancelled."
40711
41097
  }
40712
41098
  ],
40713
41099
  "rest": [
@@ -40787,17 +41173,20 @@
40787
41173
  "name": "runId",
40788
41174
  "type": "foreignKey",
40789
41175
  "required": true,
40790
- "related": "@happyvertical/smrt-manufacturing:ProductionRun"
41176
+ "related": "@happyvertical/smrt-manufacturing:ProductionRun",
41177
+ "description": "The production run this batch belongs to."
40791
41178
  },
40792
41179
  {
40793
41180
  "name": "qty",
40794
41181
  "type": "decimal",
40795
- "required": false
41182
+ "required": false,
41183
+ "description": "How many were finished in this batch."
40796
41184
  },
40797
41185
  {
40798
41186
  "name": "completedAt",
40799
41187
  "type": "datetime",
40800
- "required": false
41188
+ "required": false,
41189
+ "description": "When this batch was finished."
40801
41190
  }
40802
41191
  ],
40803
41192
  "rest": [
@@ -40861,24 +41250,28 @@
40861
41250
  "name": "bomId",
40862
41251
  "type": "foreignKey",
40863
41252
  "required": true,
40864
- "related": "@happyvertical/smrt-manufacturing:BillOfMaterials"
41253
+ "related": "@happyvertical/smrt-manufacturing:BillOfMaterials",
41254
+ "description": "The list of parts this step is part of."
40865
41255
  },
40866
41256
  {
40867
41257
  "name": "operationId",
40868
41258
  "type": "foreignKey",
40869
41259
  "required": true,
40870
- "related": "@happyvertical/smrt-manufacturing:Operation"
41260
+ "related": "@happyvertical/smrt-manufacturing:Operation",
41261
+ "description": "The kind of work done in this step."
40871
41262
  },
40872
41263
  {
40873
41264
  "name": "sequence",
40874
41265
  "type": "integer",
40875
41266
  "required": true,
40876
- "default": 1
41267
+ "default": 1,
41268
+ "description": "The order of this step, starting at 1."
40877
41269
  },
40878
41270
  {
40879
41271
  "name": "estimatedMinutes",
40880
41272
  "type": "decimal",
40881
- "required": false
41273
+ "required": false,
41274
+ "description": "About how many minutes this step takes."
40882
41275
  },
40883
41276
  {
40884
41277
  "name": "notes",
@@ -40982,12 +41375,360 @@
40982
41375
  "@happyvertical/smrt-products",
40983
41376
  "@happyvertical/smrt-tenancy"
40984
41377
  ]
40985
- }
41378
+ },
41379
+ "recipes": [
41380
+ {
41381
+ "id": "manufacturing.assemblies",
41382
+ "label": "Assemblies",
41383
+ "summary": "Define what you make, what goes into it and the steps to make it.",
41384
+ "synonyms": [
41385
+ "bill of materials",
41386
+ "bills of materials",
41387
+ "bom",
41388
+ "recipes",
41389
+ "products you make",
41390
+ "routing"
41391
+ ],
41392
+ "models": [
41393
+ "@happyvertical/smrt-manufacturing:Assembly",
41394
+ "@happyvertical/smrt-manufacturing:BillOfMaterials",
41395
+ "@happyvertical/smrt-manufacturing:BomLine",
41396
+ "@happyvertical/smrt-manufacturing:Operation",
41397
+ "@happyvertical/smrt-manufacturing:RoutingStep"
41398
+ ],
41399
+ "nav": [
41400
+ {
41401
+ "label": "Assemblies",
41402
+ "model": "@happyvertical/smrt-manufacturing:Assembly",
41403
+ "icon": "package",
41404
+ "description": "The things you make, each built from parts.",
41405
+ "noun": "assembly"
41406
+ },
41407
+ {
41408
+ "label": "Bills of materials",
41409
+ "model": "@happyvertical/smrt-manufacturing:BillOfMaterials",
41410
+ "icon": "fileText",
41411
+ "description": "The list of parts and amounts that go into each assembly.",
41412
+ "noun": "bill of materials"
41413
+ },
41414
+ {
41415
+ "label": "Operations",
41416
+ "model": "@happyvertical/smrt-manufacturing:Operation",
41417
+ "icon": "wrench",
41418
+ "description": "The kinds of work done to make something, like cutting."
41419
+ }
41420
+ ],
41421
+ "requires": [],
41422
+ "requiresAny": [
41423
+ [
41424
+ "products.simple",
41425
+ "products.clothing"
41426
+ ]
41427
+ ],
41428
+ "section": {
41429
+ "id": "make",
41430
+ "label": "Make",
41431
+ "icon": "wrench",
41432
+ "description": "Make what you sell from the parts you hold."
41433
+ },
41434
+ "options": {
41435
+ "@happyvertical/smrt-manufacturing:Assembly": {
41436
+ "fields": {
41437
+ "name": {
41438
+ "order": 1
41439
+ },
41440
+ "partReference": {
41441
+ "order": 2
41442
+ },
41443
+ "description": {
41444
+ "order": 3
41445
+ },
41446
+ "price": {
41447
+ "order": 4
41448
+ },
41449
+ "estimatedLabourMinutes": {
41450
+ "label": "Minutes to make one",
41451
+ "order": 5
41452
+ },
41453
+ "defaultOperationId": {
41454
+ "label": "Usual operation",
41455
+ "order": 6
41456
+ },
41457
+ "tenantId": {
41458
+ "visibility": "hidden"
41459
+ },
41460
+ "productType": {
41461
+ "visibility": "hidden"
41462
+ },
41463
+ "category": {
41464
+ "visibility": "advanced"
41465
+ },
41466
+ "manufacturer": {
41467
+ "visibility": "hidden"
41468
+ },
41469
+ "model": {
41470
+ "visibility": "hidden"
41471
+ },
41472
+ "inStock": {
41473
+ "visibility": "hidden",
41474
+ "default": true
41475
+ },
41476
+ "specifications": {
41477
+ "visibility": "hidden"
41478
+ },
41479
+ "tags": {
41480
+ "visibility": "advanced"
41481
+ },
41482
+ "defaultSalesTaxCodeId": {
41483
+ "visibility": "hidden"
41484
+ },
41485
+ "defaultPurchaseTaxCodeId": {
41486
+ "visibility": "hidden"
41487
+ }
41488
+ }
41489
+ },
41490
+ "@happyvertical/smrt-manufacturing:BillOfMaterials": {
41491
+ "fields": {
41492
+ "productId": {
41493
+ "label": "Assembly",
41494
+ "order": 1
41495
+ },
41496
+ "version": {
41497
+ "order": 2
41498
+ },
41499
+ "status": {
41500
+ "order": 3
41501
+ },
41502
+ "effectiveDate": {
41503
+ "order": 4
41504
+ },
41505
+ "notes": {
41506
+ "order": 5
41507
+ },
41508
+ "tenantId": {
41509
+ "visibility": "hidden"
41510
+ },
41511
+ "currency": {
41512
+ "visibility": "advanced"
41513
+ }
41514
+ }
41515
+ },
41516
+ "@happyvertical/smrt-manufacturing:BomLine": {
41517
+ "fields": {
41518
+ "bomId": {
41519
+ "label": "Bill of materials",
41520
+ "order": 1
41521
+ },
41522
+ "componentSkuId": {
41523
+ "label": "Part",
41524
+ "order": 2
41525
+ },
41526
+ "qtyPerUnit": {
41527
+ "label": "Amount per unit",
41528
+ "order": 3
41529
+ },
41530
+ "uom": {
41531
+ "label": "Unit of measure",
41532
+ "order": 4
41533
+ },
41534
+ "wastePercent": {
41535
+ "visibility": "advanced"
41536
+ },
41537
+ "notes": {
41538
+ "visibility": "advanced"
41539
+ },
41540
+ "tenantId": {
41541
+ "visibility": "hidden"
41542
+ }
41543
+ }
41544
+ },
41545
+ "@happyvertical/smrt-manufacturing:Operation": {
41546
+ "fields": {
41547
+ "name": {
41548
+ "order": 1
41549
+ },
41550
+ "code": {
41551
+ "order": 2
41552
+ },
41553
+ "category": {
41554
+ "order": 3
41555
+ },
41556
+ "isActive": {
41557
+ "visibility": "advanced"
41558
+ },
41559
+ "requiredQualificationId": {
41560
+ "visibility": "advanced"
41561
+ },
41562
+ "tenantId": {
41563
+ "visibility": "hidden"
41564
+ }
41565
+ }
41566
+ },
41567
+ "@happyvertical/smrt-manufacturing:RoutingStep": {
41568
+ "fields": {
41569
+ "bomId": {
41570
+ "label": "Bill of materials",
41571
+ "order": 1
41572
+ },
41573
+ "operationId": {
41574
+ "label": "Operation",
41575
+ "order": 2
41576
+ },
41577
+ "sequence": {
41578
+ "label": "Step number",
41579
+ "order": 3
41580
+ },
41581
+ "estimatedMinutes": {
41582
+ "order": 4
41583
+ },
41584
+ "notes": {
41585
+ "visibility": "advanced"
41586
+ },
41587
+ "tenantId": {
41588
+ "visibility": "hidden"
41589
+ }
41590
+ }
41591
+ }
41592
+ },
41593
+ "help": {
41594
+ "markdown": "## Overview\n\nAssemblies is where you describe what you make. An assembly is a product built\nfrom parts. Its bill of materials lists those parts and how much of each goes\ninto one unit, and its steps say which operations, such as cutting or painting,\nit passes through and how long each takes.\n\n## Tasks\n\n### Add something you make\n\n1. Open the list of assemblies and choose **New**.\n2. Give it a **{field:Assembly.name}** and your own **{field:Assembly.partReference}**, such as a drawing or part number.\n3. Note roughly how long one takes in **{field:Assembly.estimatedLabourMinutes}**.\n4. Save.\n\n### List what goes into it\n\n1. Open the bills of materials and choose **New**.\n2. Pick the **{field:BillOfMaterials.productId}** the list is for.\n3. Save, then add a line for each part.\n4. For each line pick the **{field:BomLine.componentSkuId}** and set the **{field:BomLine.qtyPerUnit}** that goes into one unit.\n\n### Change how something is made\n\n1. Create a new bill of materials with a higher **{field:BillOfMaterials.version}**.\n2. Set its **{field:BillOfMaterials.status}** to active when it is ready to use.\n3. Set the old version's **{field:BillOfMaterials.status}** to superseded so only one version is in use.\n4. The old version stays on file, so past runs still make sense.\n\n### See the kinds of work\n\nOperations are set up by the manufacturing service, not by hand in the app.\n\n1. Open the operations.\n2. Read each **{field:Operation.name}** and its short **{field:Operation.code}**.\n3. The steps of a bill of materials use these, each with its **{field:RoutingStep.estimatedMinutes}**.\n",
41595
+ "fieldRefs": [
41596
+ "Assembly.estimatedLabourMinutes",
41597
+ "Assembly.name",
41598
+ "Assembly.partReference",
41599
+ "BillOfMaterials.productId",
41600
+ "BillOfMaterials.status",
41601
+ "BillOfMaterials.version",
41602
+ "BomLine.componentSkuId",
41603
+ "BomLine.qtyPerUnit",
41604
+ "Operation.code",
41605
+ "Operation.name",
41606
+ "RoutingStep.estimatedMinutes"
41607
+ ]
41608
+ },
41609
+ "demo": {
41610
+ "mode": "server",
41611
+ "reasons": [
41612
+ "Needs a server because its package depends on @happyvertical/smrt-products, @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626)."
41613
+ ]
41614
+ },
41615
+ "effectiveDemo": {
41616
+ "mode": "server",
41617
+ "reasons": [
41618
+ "Needs a server because its package depends on @happyvertical/smrt-products, @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).",
41619
+ "Needs products.simple, which is server."
41620
+ ]
41621
+ }
41622
+ },
41623
+ {
41624
+ "id": "manufacturing.production",
41625
+ "label": "Production",
41626
+ "summary": "Plan how many to make, record what came out and see each run through to done.",
41627
+ "synonyms": [
41628
+ "production runs",
41629
+ "work orders",
41630
+ "manufacturing",
41631
+ "batches",
41632
+ "build orders"
41633
+ ],
41634
+ "models": [
41635
+ "@happyvertical/smrt-manufacturing:ProductionRun",
41636
+ "@happyvertical/smrt-manufacturing:ProductionRunCompletion"
41637
+ ],
41638
+ "nav": [
41639
+ {
41640
+ "label": "Production runs",
41641
+ "model": "@happyvertical/smrt-manufacturing:ProductionRun",
41642
+ "icon": "layers",
41643
+ "description": "Each batch you plan to make, and how far along it is.",
41644
+ "noun": "production run"
41645
+ }
41646
+ ],
41647
+ "requires": [
41648
+ "manufacturing.assemblies"
41649
+ ],
41650
+ "section": {
41651
+ "id": "make",
41652
+ "label": "Make",
41653
+ "icon": "wrench",
41654
+ "description": "Make what you sell from the parts you hold."
41655
+ },
41656
+ "options": {
41657
+ "@happyvertical/smrt-manufacturing:ProductionRun": {
41658
+ "fields": {
41659
+ "bomId": {
41660
+ "label": "Bill of materials",
41661
+ "order": 1
41662
+ },
41663
+ "targetQty": {
41664
+ "label": "How many to make",
41665
+ "order": 2
41666
+ },
41667
+ "completedQty": {
41668
+ "label": "How many made so far",
41669
+ "locked": true,
41670
+ "order": 3
41671
+ },
41672
+ "status": {
41673
+ "locked": true,
41674
+ "order": 4
41675
+ },
41676
+ "tenantId": {
41677
+ "visibility": "hidden"
41678
+ }
41679
+ }
41680
+ },
41681
+ "@happyvertical/smrt-manufacturing:ProductionRunCompletion": {
41682
+ "fields": {
41683
+ "runId": {
41684
+ "label": "Production run",
41685
+ "order": 1
41686
+ },
41687
+ "qty": {
41688
+ "label": "How many finished",
41689
+ "order": 2
41690
+ },
41691
+ "completedAt": {
41692
+ "label": "Finished on",
41693
+ "order": 3
41694
+ },
41695
+ "tenantId": {
41696
+ "visibility": "hidden"
41697
+ }
41698
+ }
41699
+ }
41700
+ },
41701
+ "help": {
41702
+ "markdown": "## Overview\n\nProduction is where you plan and follow what you make. A production run says\nhow many of an assembly you intend to make, using one of its bills of\nmaterials. As batches come off the line they are recorded against it, and the run\nkeeps count until it is done.\n\n## Tasks\n\nProduction runs and their finished batches are created and updated by the\nproduction service, not by hand in the app. Here you follow them.\n\n### Find a run\n\n1. Open the production runs.\n2. Check the **{field:ProductionRun.bomId}** it makes from and the **{field:ProductionRun.targetQty}** you want.\n\n### See how a run is going\n\nOpen the run and compare **{field:ProductionRun.completedQty}** with\n**{field:ProductionRun.targetQty}**. Its **{field:ProductionRun.status}** shows\nwhether it is planned, under way, finished or cancelled.\n\n### See what was finished\n\n1. Open the run's finished batches.\n2. Each one shows the **{field:ProductionRunCompletion.runId}** it belongs to and **{field:ProductionRunCompletion.qty}**, how many came out.\n",
41703
+ "fieldRefs": [
41704
+ "ProductionRun.bomId",
41705
+ "ProductionRun.completedQty",
41706
+ "ProductionRun.status",
41707
+ "ProductionRun.targetQty",
41708
+ "ProductionRunCompletion.qty",
41709
+ "ProductionRunCompletion.runId"
41710
+ ]
41711
+ },
41712
+ "demo": {
41713
+ "mode": "server",
41714
+ "reasons": [
41715
+ "Needs a server because its package depends on @happyvertical/smrt-products, @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626)."
41716
+ ]
41717
+ },
41718
+ "effectiveDemo": {
41719
+ "mode": "server",
41720
+ "reasons": [
41721
+ "Needs a server because its package depends on @happyvertical/smrt-products, @happyvertical/smrt-tenancy, which do not build for a browser (#3616, #3624, #3626).",
41722
+ "Needs manufacturing.assemblies, which is server."
41723
+ ]
41724
+ }
41725
+ }
41726
+ ]
40986
41727
  },
40987
41728
  {
40988
41729
  "id": "marketing",
40989
41730
  "packageName": "@happyvertical/smrt-marketing",
40990
- "version": "0.57.34",
41731
+ "version": "0.57.36",
40991
41732
  "description": "Cross-channel campaign coordination, immutable performance evidence, budget pacing, and reusable Svelte marketing surfaces for SMRT",
40992
41733
  "models": [
40993
41734
  {
@@ -41593,7 +42334,7 @@
41593
42334
  {
41594
42335
  "id": "messages",
41595
42336
  "packageName": "@happyvertical/smrt-messages",
41596
- "version": "0.57.34",
42337
+ "version": "0.57.36",
41597
42338
  "description": "Unified multi-channel messaging with STI-based hierarchies",
41598
42339
  "models": [
41599
42340
  {
@@ -48048,7 +48789,7 @@
48048
48789
  {
48049
48790
  "id": "places",
48050
48791
  "packageName": "@happyvertical/smrt-places",
48051
- "version": "0.57.34",
48792
+ "version": "0.57.36",
48052
48793
  "description": "Hierarchical place management with geo integration and SMRT framework support",
48053
48794
  "models": [
48054
48795
  {
@@ -48892,7 +49633,7 @@
48892
49633
  {
48893
49634
  "id": "preferences",
48894
49635
  "packageName": "@happyvertical/smrt-preferences",
48895
- "version": "0.57.34",
49636
+ "version": "0.57.36",
48896
49637
  "description": "Tenant defaults and per-user overrides for user-interface preferences (overview layouts, shell layout), validated per registered kind",
48897
49638
  "models": [
48898
49639
  {
@@ -49046,7 +49787,7 @@
49046
49787
  {
49047
49788
  "id": "products",
49048
49789
  "packageName": "@happyvertical/smrt-products",
49049
- "version": "0.57.34",
49790
+ "version": "0.57.36",
49050
49791
  "description": "SMRT products module: triple-purpose microservice template for standalone apps, federated modules, and NPM libraries",
49051
49792
  "models": [
49052
49793
  {
@@ -50529,7 +51270,7 @@
50529
51270
  {
50530
51271
  "id": "profiles",
50531
51272
  "packageName": "@happyvertical/smrt-profiles",
50532
- "version": "0.57.34",
51273
+ "version": "0.57.36",
50533
51274
  "description": "Profile management system with relationships, metadata, and reciprocal associations for SMRT framework",
50534
51275
  "models": [
50535
51276
  {
@@ -55118,7 +55859,7 @@
55118
55859
  {
55119
55860
  "id": "projects",
55120
55861
  "packageName": "@happyvertical/smrt-projects",
55121
- "version": "0.57.34",
55862
+ "version": "0.57.36",
55122
55863
  "description": "Provider-agnostic project management models (Issues, PRs, Repositories, Projects) for SMRT framework",
55123
55864
  "models": [
55124
55865
  {
@@ -58747,7 +59488,7 @@
58747
59488
  {
58748
59489
  "id": "properties",
58749
59490
  "packageName": "@happyvertical/smrt-properties",
58750
- "version": "0.57.34",
59491
+ "version": "0.57.36",
58751
59492
  "description": "Digital property and zone management models for SMRT framework",
58752
59493
  "models": [
58753
59494
  {
@@ -59610,7 +60351,7 @@
59610
60351
  {
59611
60352
  "id": "reactions",
59612
60353
  "packageName": "@happyvertical/smrt-reactions",
59613
- "version": "0.57.34",
60354
+ "version": "0.57.36",
59614
60355
  "description": "Tenant-scoped reactions and lightweight polls with shared participation enforcement",
59615
60356
  "models": [
59616
60357
  {
@@ -59865,7 +60606,7 @@
59865
60606
  {
59866
60607
  "id": "reports",
59867
60608
  "packageName": "@happyvertical/smrt-reports",
59868
- "version": "0.57.34",
60609
+ "version": "0.57.36",
59869
60610
  "description": "Materialized aggregate report models for SMRT",
59870
60611
  "models": [
59871
60612
  {
@@ -60728,7 +61469,7 @@
60728
61469
  {
60729
61470
  "id": "sales",
60730
61471
  "packageName": "@happyvertical/smrt-sales",
60731
- "version": "0.57.34",
61472
+ "version": "0.57.36",
60732
61473
  "description": "Modular sales for the SMRT framework: agreement execution, CRM, referral intake, neutral commissions, and reusable Svelte surfaces",
60733
61474
  "models": [
60734
61475
  {
@@ -62221,7 +62962,8 @@
62221
62962
  "name": "earnerId",
62222
62963
  "type": "foreignKey",
62223
62964
  "required": true,
62224
- "related": "@happyvertical/smrt-sales:Earner"
62965
+ "related": "@happyvertical/smrt-sales:Earner",
62966
+ "description": "The affiliate who earned this commission."
62225
62967
  },
62226
62968
  {
62227
62969
  "name": "earningEventId",
@@ -62293,19 +63035,22 @@
62293
63035
  "name": "amountCents",
62294
63036
  "type": "integer",
62295
63037
  "required": false,
62296
- "default": 0
63038
+ "default": 0,
63039
+ "description": "How much was earned, in the smallest unit of the currency."
62297
63040
  },
62298
63041
  {
62299
63042
  "name": "currency",
62300
63043
  "type": "text",
62301
63044
  "required": false,
62302
- "default": "USD"
63045
+ "default": "USD",
63046
+ "description": "The currency the commission is paid in."
62303
63047
  },
62304
63048
  {
62305
63049
  "name": "status",
62306
63050
  "type": "text",
62307
63051
  "required": false,
62308
- "default": "pending"
63052
+ "default": "pending",
63053
+ "description": "Where the commission stands, from pending to paid."
62309
63054
  },
62310
63055
  {
62311
63056
  "name": "clearingEndsAt",
@@ -62360,7 +63105,8 @@
62360
63105
  "name": "dedupeKey",
62361
63106
  "type": "text",
62362
63107
  "required": true,
62363
- "default": ""
63108
+ "default": "",
63109
+ "description": "A reference that stops the same commission being recorded twice."
62364
63110
  },
62365
63111
  {
62366
63112
  "name": "metadata",
@@ -62866,7 +63612,8 @@
62866
63612
  "name": "earnerId",
62867
63613
  "type": "foreignKey",
62868
63614
  "required": true,
62869
- "related": "@happyvertical/smrt-sales:Earner"
63615
+ "related": "@happyvertical/smrt-sales:Earner",
63616
+ "description": "The affiliate being paid."
62870
63617
  },
62871
63618
  {
62872
63619
  "name": "periodStart",
@@ -62894,13 +63641,15 @@
62894
63641
  "name": "totalAmountCents",
62895
63642
  "type": "integer",
62896
63643
  "required": false,
62897
- "default": 0
63644
+ "default": 0,
63645
+ "description": "The total being paid, in the smallest unit of the currency."
62898
63646
  },
62899
63647
  {
62900
63648
  "name": "currency",
62901
63649
  "type": "text",
62902
63650
  "required": false,
62903
- "default": "USD"
63651
+ "default": "USD",
63652
+ "description": "The currency of the payment."
62904
63653
  },
62905
63654
  {
62906
63655
  "name": "payoutMethod",
@@ -62918,7 +63667,8 @@
62918
63667
  "name": "status",
62919
63668
  "type": "text",
62920
63669
  "required": false,
62921
- "default": "pending"
63670
+ "default": "pending",
63671
+ "description": "Whether the payment is waiting, being sent, completed or failed."
62922
63672
  },
62923
63673
  {
62924
63674
  "name": "paymentReference",
@@ -62935,7 +63685,8 @@
62935
63685
  {
62936
63686
  "name": "paidAt",
62937
63687
  "type": "datetime",
62938
- "required": false
63688
+ "required": false,
63689
+ "description": "When the payment went out."
62939
63690
  },
62940
63691
  {
62941
63692
  "name": "invoiceId",
@@ -62953,7 +63704,8 @@
62953
63704
  "name": "idempotencyKey",
62954
63705
  "type": "text",
62955
63706
  "required": true,
62956
- "default": ""
63707
+ "default": "",
63708
+ "description": "A reference that stops the same payout being made twice."
62957
63709
  },
62958
63710
  {
62959
63711
  "name": "sourceKind",
@@ -63614,13 +64366,15 @@
63614
64366
  "name": "displayName",
63615
64367
  "type": "text",
63616
64368
  "required": false,
63617
- "default": ""
64369
+ "default": "",
64370
+ "description": "The name this payee is paid under."
63618
64371
  },
63619
64372
  {
63620
64373
  "name": "status",
63621
64374
  "type": "text",
63622
64375
  "required": false,
63623
- "default": "pending"
64376
+ "default": "pending",
64377
+ "description": "Whether this payee can be paid."
63624
64378
  },
63625
64379
  {
63626
64380
  "name": "payoutMethod",
@@ -65538,13 +66292,15 @@
65538
66292
  "name": "referrerId",
65539
66293
  "type": "foreignKey",
65540
66294
  "required": true,
65541
- "related": "@happyvertical/smrt-sales:Referrer"
66295
+ "related": "@happyvertical/smrt-sales:Referrer",
66296
+ "description": "The affiliate who sent this person."
65542
66297
  },
65543
66298
  {
65544
66299
  "name": "programId",
65545
66300
  "type": "foreignKey",
65546
66301
  "required": true,
65547
- "related": "@happyvertical/smrt-sales:ReferralProgram"
66302
+ "related": "@happyvertical/smrt-sales:ReferralProgram",
66303
+ "description": "The program this referral counts towards."
65548
66304
  },
65549
66305
  {
65550
66306
  "name": "policyKey",
@@ -65562,7 +66318,8 @@
65562
66318
  "name": "status",
65563
66319
  "type": "text",
65564
66320
  "required": false,
65565
- "default": "pending"
66321
+ "default": "pending",
66322
+ "description": "Whether the referral is waiting, has led to a sale or has lapsed."
65566
66323
  },
65567
66324
  {
65568
66325
  "name": "targetKind",
@@ -66496,19 +67253,22 @@
66496
67253
  "name": "key",
66497
67254
  "type": "text",
66498
67255
  "required": true,
66499
- "default": ""
67256
+ "default": "",
67257
+ "description": "A short name for the program, used in links and reports."
66500
67258
  },
66501
67259
  {
66502
67260
  "name": "name",
66503
67261
  "type": "text",
66504
67262
  "required": false,
66505
- "default": ""
67263
+ "default": "",
67264
+ "description": "What you call this program."
66506
67265
  },
66507
67266
  {
66508
67267
  "name": "status",
66509
67268
  "type": "text",
66510
67269
  "required": false,
66511
- "default": "draft"
67270
+ "default": "draft",
67271
+ "description": "Whether the program is in draft, running or finished."
66512
67272
  },
66513
67273
  {
66514
67274
  "name": "defaultCommissionPlanKey",
@@ -67008,13 +67768,15 @@
67008
67768
  "name": "displayName",
67009
67769
  "type": "text",
67010
67770
  "required": false,
67011
- "default": ""
67771
+ "default": "",
67772
+ "description": "The name you know this affiliate by."
67012
67773
  },
67013
67774
  {
67014
67775
  "name": "status",
67015
67776
  "type": "text",
67016
67777
  "required": false,
67017
- "default": "pending"
67778
+ "default": "pending",
67779
+ "description": "Whether this affiliate is approved to send you referrals."
67018
67780
  },
67019
67781
  {
67020
67782
  "name": "metadata",
@@ -67637,6 +68399,388 @@
67637
68399
  ]
67638
68400
  },
67639
68401
  "recipes": [
68402
+ {
68403
+ "id": "affiliates.referrals",
68404
+ "label": "Affiliates",
68405
+ "summary": "Reward partners for the customers they send you, and pay them what they earn.",
68406
+ "synonyms": [
68407
+ "referrals",
68408
+ "referral program",
68409
+ "partners",
68410
+ "commissions",
68411
+ "payouts",
68412
+ "refer a friend"
68413
+ ],
68414
+ "models": [
68415
+ "@happyvertical/smrt-sales:Referrer",
68416
+ "@happyvertical/smrt-sales:ReferralProgram",
68417
+ "@happyvertical/smrt-sales:Referral",
68418
+ "@happyvertical/smrt-sales:Earner",
68419
+ "@happyvertical/smrt-sales:Commission",
68420
+ "@happyvertical/smrt-sales:CommissionPayout"
68421
+ ],
68422
+ "nav": [
68423
+ {
68424
+ "label": "Affiliates",
68425
+ "model": "@happyvertical/smrt-sales:Referrer",
68426
+ "icon": "users",
68427
+ "description": "The partners and customers who send people your way.",
68428
+ "noun": "affiliate"
68429
+ },
68430
+ {
68431
+ "label": "Programs",
68432
+ "model": "@happyvertical/smrt-sales:ReferralProgram",
68433
+ "icon": "layers",
68434
+ "description": "The offers that decide what a referral earns.",
68435
+ "noun": "program"
68436
+ },
68437
+ {
68438
+ "label": "Referrals",
68439
+ "model": "@happyvertical/smrt-sales:Referral",
68440
+ "icon": "repeat",
68441
+ "description": "Each person sent to you, and whether it led to a sale."
68442
+ },
68443
+ {
68444
+ "label": "Commissions",
68445
+ "model": "@happyvertical/smrt-sales:Commission",
68446
+ "icon": "receipt",
68447
+ "description": "What each affiliate has earned and where it stands."
68448
+ },
68449
+ {
68450
+ "label": "Payouts",
68451
+ "model": "@happyvertical/smrt-sales:CommissionPayout",
68452
+ "icon": "bank",
68453
+ "description": "Payments made to affiliates for what they earned."
68454
+ }
68455
+ ],
68456
+ "requires": [],
68457
+ "section": {
68458
+ "id": "grow",
68459
+ "label": "Grow",
68460
+ "icon": "tag",
68461
+ "description": "Bring in new customers and reward the people who help."
68462
+ },
68463
+ "options": {
68464
+ "@happyvertical/smrt-sales:Referrer": {
68465
+ "fields": {
68466
+ "displayName": {
68467
+ "label": "Name",
68468
+ "order": 1
68469
+ },
68470
+ "status": {
68471
+ "order": 2
68472
+ },
68473
+ "profileId": {
68474
+ "label": "Person",
68475
+ "visibility": "advanced"
68476
+ },
68477
+ "tenantId": {
68478
+ "visibility": "hidden"
68479
+ },
68480
+ "earnerId": {
68481
+ "label": "Payee",
68482
+ "visibility": "advanced"
68483
+ },
68484
+ "metadata": {
68485
+ "visibility": "hidden"
68486
+ }
68487
+ }
68488
+ },
68489
+ "@happyvertical/smrt-sales:ReferralProgram": {
68490
+ "fields": {
68491
+ "name": {
68492
+ "order": 1
68493
+ },
68494
+ "key": {
68495
+ "label": "Short name",
68496
+ "order": 2
68497
+ },
68498
+ "status": {
68499
+ "order": 3
68500
+ },
68501
+ "defaultCommissionPlanKey": {
68502
+ "visibility": "advanced"
68503
+ },
68504
+ "defaultAttributionPolicyKey": {
68505
+ "visibility": "advanced"
68506
+ },
68507
+ "tenantId": {
68508
+ "visibility": "hidden"
68509
+ },
68510
+ "metadata": {
68511
+ "visibility": "hidden"
68512
+ }
68513
+ }
68514
+ },
68515
+ "@happyvertical/smrt-sales:Referral": {
68516
+ "fields": {
68517
+ "referrerId": {
68518
+ "label": "Affiliate",
68519
+ "order": 1
68520
+ },
68521
+ "programId": {
68522
+ "label": "Program",
68523
+ "order": 2
68524
+ },
68525
+ "status": {
68526
+ "order": 3
68527
+ },
68528
+ "tenantId": {
68529
+ "visibility": "hidden"
68530
+ },
68531
+ "policyKey": {
68532
+ "visibility": "hidden"
68533
+ },
68534
+ "policyVersion": {
68535
+ "visibility": "hidden"
68536
+ },
68537
+ "targetKind": {
68538
+ "visibility": "advanced"
68539
+ },
68540
+ "targetId": {
68541
+ "visibility": "advanced"
68542
+ },
68543
+ "creditFraction": {
68544
+ "visibility": "advanced"
68545
+ },
68546
+ "splitGroupId": {
68547
+ "visibility": "hidden"
68548
+ },
68549
+ "primaryTouchId": {
68550
+ "visibility": "hidden"
68551
+ },
68552
+ "attributedAt": {
68553
+ "visibility": "advanced"
68554
+ },
68555
+ "qualifiedAt": {
68556
+ "visibility": "advanced"
68557
+ },
68558
+ "expiresAt": {
68559
+ "visibility": "advanced"
68560
+ },
68561
+ "snapshotId": {
68562
+ "visibility": "hidden"
68563
+ },
68564
+ "metadata": {
68565
+ "visibility": "hidden"
68566
+ }
68567
+ }
68568
+ },
68569
+ "@happyvertical/smrt-sales:Earner": {
68570
+ "fields": {
68571
+ "displayName": {
68572
+ "label": "Name",
68573
+ "order": 1
68574
+ },
68575
+ "status": {
68576
+ "order": 2
68577
+ },
68578
+ "tenantId": {
68579
+ "visibility": "hidden"
68580
+ },
68581
+ "kind": {
68582
+ "visibility": "advanced"
68583
+ },
68584
+ "profileId": {
68585
+ "visibility": "advanced"
68586
+ },
68587
+ "payoutMethod": {
68588
+ "visibility": "advanced"
68589
+ },
68590
+ "payoutDestination": {
68591
+ "visibility": "advanced"
68592
+ },
68593
+ "payoutThresholdCents": {
68594
+ "visibility": "advanced"
68595
+ },
68596
+ "payoutScheduleKey": {
68597
+ "visibility": "advanced"
68598
+ },
68599
+ "currency": {
68600
+ "visibility": "advanced"
68601
+ },
68602
+ "metadata": {
68603
+ "visibility": "hidden"
68604
+ }
68605
+ }
68606
+ },
68607
+ "@happyvertical/smrt-sales:Commission": {
68608
+ "fields": {
68609
+ "earnerId": {
68610
+ "label": "Affiliate",
68611
+ "order": 1
68612
+ },
68613
+ "amountCents": {
68614
+ "label": "Amount",
68615
+ "order": 2
68616
+ },
68617
+ "currency": {
68618
+ "order": 3
68619
+ },
68620
+ "status": {
68621
+ "order": 4
68622
+ },
68623
+ "tenantId": {
68624
+ "visibility": "hidden"
68625
+ },
68626
+ "earningEventId": {
68627
+ "visibility": "hidden"
68628
+ },
68629
+ "planKey": {
68630
+ "visibility": "advanced"
68631
+ },
68632
+ "planVersion": {
68633
+ "visibility": "hidden"
68634
+ },
68635
+ "componentKey": {
68636
+ "visibility": "hidden"
68637
+ },
68638
+ "termsSnapshotKind": {
68639
+ "visibility": "hidden"
68640
+ },
68641
+ "termsSnapshotId": {
68642
+ "visibility": "hidden"
68643
+ },
68644
+ "basis": {
68645
+ "visibility": "advanced"
68646
+ },
68647
+ "baseAmountCents": {
68648
+ "visibility": "advanced"
68649
+ },
68650
+ "rate": {
68651
+ "visibility": "advanced"
68652
+ },
68653
+ "shareFraction": {
68654
+ "visibility": "hidden"
68655
+ },
68656
+ "splitGroupId": {
68657
+ "visibility": "hidden"
68658
+ },
68659
+ "clearingEndsAt": {
68660
+ "visibility": "advanced"
68661
+ },
68662
+ "earnedAt": {
68663
+ "visibility": "advanced"
68664
+ },
68665
+ "approvedAt": {
68666
+ "visibility": "advanced"
68667
+ },
68668
+ "payableAt": {
68669
+ "visibility": "advanced"
68670
+ },
68671
+ "paidAt": {
68672
+ "visibility": "advanced"
68673
+ },
68674
+ "payoutId": {
68675
+ "visibility": "advanced"
68676
+ },
68677
+ "sourceKind": {
68678
+ "visibility": "hidden"
68679
+ },
68680
+ "sourceId": {
68681
+ "visibility": "hidden"
68682
+ },
68683
+ "calculationTrace": {
68684
+ "visibility": "hidden"
68685
+ },
68686
+ "dedupeKey": {
68687
+ "visibility": "hidden"
68688
+ },
68689
+ "metadata": {
68690
+ "visibility": "hidden"
68691
+ }
68692
+ }
68693
+ },
68694
+ "@happyvertical/smrt-sales:CommissionPayout": {
68695
+ "fields": {
68696
+ "earnerId": {
68697
+ "label": "Affiliate",
68698
+ "order": 1
68699
+ },
68700
+ "totalAmountCents": {
68701
+ "label": "Total",
68702
+ "order": 2
68703
+ },
68704
+ "currency": {
68705
+ "order": 3
68706
+ },
68707
+ "status": {
68708
+ "order": 4
68709
+ },
68710
+ "paidAt": {
68711
+ "order": 5
68712
+ },
68713
+ "tenantId": {
68714
+ "visibility": "hidden"
68715
+ },
68716
+ "periodStart": {
68717
+ "visibility": "advanced"
68718
+ },
68719
+ "periodEnd": {
68720
+ "visibility": "advanced"
68721
+ },
68722
+ "commissionTotalCents": {
68723
+ "visibility": "advanced"
68724
+ },
68725
+ "adjustmentTotalCents": {
68726
+ "visibility": "advanced"
68727
+ },
68728
+ "payoutMethod": {
68729
+ "visibility": "advanced"
68730
+ },
68731
+ "payoutDestination": {
68732
+ "visibility": "advanced"
68733
+ },
68734
+ "paymentReference": {
68735
+ "visibility": "advanced"
68736
+ },
68737
+ "providerRef": {
68738
+ "visibility": "hidden"
68739
+ },
68740
+ "invoiceId": {
68741
+ "visibility": "hidden"
68742
+ },
68743
+ "notes": {
68744
+ "visibility": "advanced"
68745
+ },
68746
+ "idempotencyKey": {
68747
+ "visibility": "hidden"
68748
+ },
68749
+ "sourceKind": {
68750
+ "visibility": "hidden"
68751
+ },
68752
+ "sourceId": {
68753
+ "visibility": "hidden"
68754
+ },
68755
+ "metadata": {
68756
+ "visibility": "hidden"
68757
+ }
68758
+ }
68759
+ }
68760
+ },
68761
+ "help": {
68762
+ "markdown": "## Overview\n\nAffiliates lets partners and customers send people your way and earn a reward\nwhen it leads to a sale. You set up a program that says what a referral earns,\nsign up the people who will refer, record each person they send, and see what\neach affiliate has earned and what has been paid out.\n\n## Tasks\n\n### Sign up an affiliate\n\n1. Open the list of affiliates and choose **New**.\n2. Type their **{field:Referrer.displayName}**.\n3. Save. They stay pending until you approve them by setting the **{field:Referrer.status}**.\n\n### Set up a program\n\n1. Open the programs and choose **New**.\n2. Give the program a **{field:ReferralProgram.name}** your affiliates will understand.\n3. Set the **{field:ReferralProgram.status}** to active when you are ready to start.\n4. Save.\n\n### Record a referral\n\n1. Open the referrals and choose **New**.\n2. Pick the **{field:Referral.referrerId}** who sent the person and the **{field:Referral.programId}** it belongs to.\n3. Save. The referral stays pending until it leads to a sale.\n\n### Check what an affiliate has earned\n\n1. Open the commissions and find the affiliate.\n2. Read the **{field:Commission.amountCents}** and the **{field:Commission.status}** of each one.\n3. A commission moves from pending to approved, then payable, then paid as it is worked through.\n\n### Check a payout\n\nPayouts are made by the commission payout service, not by hand in the app. You\ncan see what has been paid.\n\n1. Open the payouts.\n2. Read the **{field:CommissionPayout.earnerId}**, the **{field:CommissionPayout.totalAmountCents}** and the **{field:CommissionPayout.status}**.\n3. A payout is waiting, approved, being sent, then completed. It shows failed or rejected if the money did not go out.\n",
68763
+ "fieldRefs": [
68764
+ "Commission.amountCents",
68765
+ "Commission.status",
68766
+ "CommissionPayout.earnerId",
68767
+ "CommissionPayout.status",
68768
+ "CommissionPayout.totalAmountCents",
68769
+ "Referral.programId",
68770
+ "Referral.referrerId",
68771
+ "ReferralProgram.name",
68772
+ "ReferralProgram.status",
68773
+ "Referrer.displayName",
68774
+ "Referrer.status"
68775
+ ]
68776
+ },
68777
+ "demo": {
68778
+ "mode": "server",
68779
+ "reasons": [
68780
+ "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)."
68781
+ ]
68782
+ }
68783
+ },
67640
68784
  {
67641
68785
  "id": "sales.pipeline",
67642
68786
  "label": "Leads & pipeline",
@@ -67777,7 +68921,7 @@
67777
68921
  {
67778
68922
  "id": "sites",
67779
68923
  "packageName": "@happyvertical/smrt-sites",
67780
- "version": "0.57.34",
68924
+ "version": "0.57.36",
67781
68925
  "description": "Site lifecycle management for multi-tenant SMRT networks",
67782
68926
  "models": [
67783
68927
  {
@@ -68245,7 +69389,7 @@
68245
69389
  {
68246
69390
  "id": "social",
68247
69391
  "packageName": "@happyvertical/smrt-social",
68248
- "version": "0.57.34",
69392
+ "version": "0.57.36",
68249
69393
  "description": "Social media account management for multi-platform publishing in the SMRT ecosystem",
68250
69394
  "models": [
68251
69395
  {
@@ -69232,7 +70376,7 @@
69232
70376
  {
69233
70377
  "id": "subscriptions",
69234
70378
  "packageName": "@happyvertical/smrt-subscriptions",
69235
- "version": "0.57.34",
70379
+ "version": "0.57.36",
69236
70380
  "description": "Tenant subscriptions, entitlement resolution, usage thresholds, and subscription UI for SMRT",
69237
70381
  "models": [
69238
70382
  {
@@ -71425,7 +72569,7 @@
71425
72569
  {
71426
72570
  "id": "support",
71427
72571
  "packageName": "@happyvertical/smrt-support",
71428
- "version": "0.57.34",
72572
+ "version": "0.57.36",
71429
72573
  "description": "AI-first Support Cases: channel-neutral intake, lifecycle, routing, service targets, and service time for the SMRT framework",
71430
72574
  "models": [
71431
72575
  {
@@ -72030,17 +73174,20 @@
72030
73174
  {
72031
73175
  "name": "caseNumber",
72032
73176
  "type": "text",
72033
- "required": false
73177
+ "required": false,
73178
+ "description": "The reference number for this ticket."
72034
73179
  },
72035
73180
  {
72036
73181
  "name": "subject",
72037
73182
  "type": "text",
72038
- "required": false
73183
+ "required": false,
73184
+ "description": "A short summary of what the customer needs."
72039
73185
  },
72040
73186
  {
72041
73187
  "name": "description",
72042
73188
  "type": "text",
72043
- "required": false
73189
+ "required": false,
73190
+ "description": "What the customer asked for, in their words."
72044
73191
  },
72045
73192
  {
72046
73193
  "name": "status",
@@ -72055,12 +73202,14 @@
72055
73202
  "escalated",
72056
73203
  "resolved",
72057
73204
  "closed"
72058
- ]
73205
+ ],
73206
+ "description": "Where the ticket stands, from new to resolved."
72059
73207
  },
72060
73208
  {
72061
73209
  "name": "priority",
72062
73210
  "type": "text",
72063
- "required": false
73211
+ "required": false,
73212
+ "description": "How soon it needs attention: low, normal, high or urgent."
72064
73213
  },
72065
73214
  {
72066
73215
  "name": "severity",
@@ -72086,7 +73235,8 @@
72086
73235
  "name": "clientProfileId",
72087
73236
  "type": "crossPackageRef",
72088
73237
  "required": false,
72089
- "related": "@happyvertical/smrt-profiles:Profile"
73238
+ "related": "@happyvertical/smrt-profiles:Profile",
73239
+ "description": "The customer who asked for help."
72090
73240
  },
72091
73241
  {
72092
73242
  "name": "openedByProfileId",
@@ -72125,7 +73275,8 @@
72125
73275
  "name": "assignedSpecialistId",
72126
73276
  "type": "foreignKey",
72127
73277
  "required": false,
72128
- "related": "@happyvertical/smrt-support:SupportSpecialist"
73278
+ "related": "@happyvertical/smrt-support:SupportSpecialist",
73279
+ "description": "The team member handling this ticket."
72129
73280
  },
72130
73281
  {
72131
73282
  "name": "assignedAt",
@@ -73244,7 +74395,8 @@
73244
74395
  "name": "caseId",
73245
74396
  "type": "foreignKey",
73246
74397
  "required": true,
73247
- "related": "@happyvertical/smrt-support:SupportCase"
74398
+ "related": "@happyvertical/smrt-support:SupportCase",
74399
+ "description": "The ticket this message belongs to."
73248
74400
  },
73249
74401
  {
73250
74402
  "name": "direction",
@@ -73254,7 +74406,8 @@
73254
74406
  "inbound",
73255
74407
  "outbound",
73256
74408
  "internal"
73257
- ]
74409
+ ],
74410
+ "description": "Whether the customer sent it or your team did."
73258
74411
  },
73259
74412
  {
73260
74413
  "name": "channelKind",
@@ -73289,12 +74442,14 @@
73289
74442
  {
73290
74443
  "name": "occurredAt",
73291
74444
  "type": "datetime",
73292
- "required": false
74445
+ "required": false,
74446
+ "description": "When the message was sent."
73293
74447
  },
73294
74448
  {
73295
74449
  "name": "body",
73296
74450
  "type": "text",
73297
- "required": false
74451
+ "required": false,
74452
+ "description": "What the message says."
73298
74453
  },
73299
74454
  {
73300
74455
  "name": "sourceType",
@@ -74299,12 +75454,14 @@
74299
75454
  "name": "profileId",
74300
75455
  "type": "crossPackageRef",
74301
75456
  "required": true,
74302
- "related": "@happyvertical/smrt-profiles:Profile"
75457
+ "related": "@happyvertical/smrt-profiles:Profile",
75458
+ "description": "The profile of the person on your team."
74303
75459
  },
74304
75460
  {
74305
75461
  "name": "displayName",
74306
75462
  "type": "text",
74307
- "required": false
75463
+ "required": false,
75464
+ "description": "The name your team and customers see."
74308
75465
  },
74309
75466
  {
74310
75467
  "name": "status",
@@ -74313,7 +75470,8 @@
74313
75470
  "enum": [
74314
75471
  "active",
74315
75472
  "inactive"
74316
- ]
75473
+ ],
75474
+ "description": "Whether this person is taking tickets right now."
74317
75475
  },
74318
75476
  {
74319
75477
  "name": "languages",
@@ -74612,12 +75770,270 @@
74612
75770
  "@happyvertical/smrt-timesheets",
74613
75771
  "@happyvertical/smrt-users"
74614
75772
  ]
74615
- }
75773
+ },
75774
+ "recipes": [
75775
+ {
75776
+ "id": "support.tickets",
75777
+ "label": "Support",
75778
+ "summary": "Keep every customer request for help in one place until it is solved.",
75779
+ "synonyms": [
75780
+ "support tickets",
75781
+ "tickets",
75782
+ "helpdesk",
75783
+ "help desk",
75784
+ "customer support",
75785
+ "cases"
75786
+ ],
75787
+ "models": [
75788
+ "@happyvertical/smrt-support:SupportCase",
75789
+ "@happyvertical/smrt-support:SupportInteraction",
75790
+ "@happyvertical/smrt-support:SupportSpecialist"
75791
+ ],
75792
+ "nav": [
75793
+ {
75794
+ "label": "Tickets",
75795
+ "model": "@happyvertical/smrt-support:SupportCase",
75796
+ "icon": "fileText",
75797
+ "description": "Every request for help, who is handling it and where it stands.",
75798
+ "noun": "ticket"
75799
+ },
75800
+ {
75801
+ "label": "Messages",
75802
+ "model": "@happyvertical/smrt-support:SupportInteraction",
75803
+ "icon": "book",
75804
+ "description": "What was said on each ticket, by the customer or your team.",
75805
+ "noun": "message"
75806
+ },
75807
+ {
75808
+ "label": "Support team",
75809
+ "model": "@happyvertical/smrt-support:SupportSpecialist",
75810
+ "icon": "users",
75811
+ "description": "The people who answer tickets and when they are available.",
75812
+ "noun": "team member"
75813
+ }
75814
+ ],
75815
+ "requires": [],
75816
+ "section": {
75817
+ "id": "support",
75818
+ "label": "Support",
75819
+ "icon": "users",
75820
+ "description": "Help your customers and keep track of every request."
75821
+ },
75822
+ "options": {
75823
+ "@happyvertical/smrt-support:SupportCase": {
75824
+ "fields": {
75825
+ "caseNumber": {
75826
+ "label": "Ticket number",
75827
+ "order": 1
75828
+ },
75829
+ "subject": {
75830
+ "order": 2
75831
+ },
75832
+ "description": {
75833
+ "order": 3
75834
+ },
75835
+ "status": {
75836
+ "order": 4
75837
+ },
75838
+ "priority": {
75839
+ "order": 5
75840
+ },
75841
+ "clientProfileId": {
75842
+ "label": "Customer",
75843
+ "order": 6
75844
+ },
75845
+ "assignedSpecialistId": {
75846
+ "label": "Assigned to",
75847
+ "order": 7
75848
+ },
75849
+ "tenantId": {
75850
+ "visibility": "hidden"
75851
+ },
75852
+ "assignedAt": {
75853
+ "visibility": "hidden"
75854
+ },
75855
+ "escalatedAt": {
75856
+ "visibility": "hidden"
75857
+ },
75858
+ "acknowledgedAt": {
75859
+ "visibility": "hidden"
75860
+ },
75861
+ "firstRespondedAt": {
75862
+ "visibility": "hidden"
75863
+ },
75864
+ "humanRequestedAt": {
75865
+ "visibility": "hidden"
75866
+ },
75867
+ "resolvedAt": {
75868
+ "visibility": "hidden"
75869
+ },
75870
+ "closedAt": {
75871
+ "visibility": "hidden"
75872
+ },
75873
+ "lastReopenedAt": {
75874
+ "visibility": "hidden"
75875
+ },
75876
+ "severity": {
75877
+ "visibility": "advanced"
75878
+ },
75879
+ "category": {
75880
+ "visibility": "advanced"
75881
+ },
75882
+ "sensitive": {
75883
+ "visibility": "advanced"
75884
+ },
75885
+ "channelKind": {
75886
+ "visibility": "advanced"
75887
+ },
75888
+ "openedByProfileId": {
75889
+ "visibility": "advanced"
75890
+ },
75891
+ "resolutionSummary": {
75892
+ "visibility": "advanced"
75893
+ },
75894
+ "projectId": {
75895
+ "visibility": "hidden"
75896
+ },
75897
+ "bindingId": {
75898
+ "visibility": "hidden"
75899
+ },
75900
+ "threadKey": {
75901
+ "visibility": "hidden"
75902
+ },
75903
+ "planId": {
75904
+ "visibility": "hidden"
75905
+ },
75906
+ "planSnapshot": {
75907
+ "visibility": "hidden"
75908
+ },
75909
+ "preferredSpecialistId": {
75910
+ "visibility": "hidden"
75911
+ },
75912
+ "escalationLevel": {
75913
+ "visibility": "hidden"
75914
+ },
75915
+ "resolvedByProfileId": {
75916
+ "visibility": "hidden"
75917
+ },
75918
+ "resolutionKind": {
75919
+ "visibility": "hidden"
75920
+ },
75921
+ "reopenCount": {
75922
+ "visibility": "hidden"
75923
+ },
75924
+ "aiEnabled": {
75925
+ "visibility": "hidden"
75926
+ },
75927
+ "metadata": {
75928
+ "visibility": "hidden"
75929
+ }
75930
+ }
75931
+ },
75932
+ "@happyvertical/smrt-support:SupportInteraction": {
75933
+ "fields": {
75934
+ "body": {
75935
+ "label": "Message",
75936
+ "order": 1
75937
+ },
75938
+ "caseId": {
75939
+ "label": "Ticket",
75940
+ "order": 2
75941
+ },
75942
+ "direction": {
75943
+ "order": 3
75944
+ },
75945
+ "tenantId": {
75946
+ "visibility": "hidden"
75947
+ },
75948
+ "channelKind": {
75949
+ "visibility": "advanced"
75950
+ },
75951
+ "actorKind": {
75952
+ "visibility": "advanced"
75953
+ },
75954
+ "authorProfileId": {
75955
+ "visibility": "advanced"
75956
+ },
75957
+ "sourceType": {
75958
+ "visibility": "hidden"
75959
+ },
75960
+ "sourceId": {
75961
+ "visibility": "hidden"
75962
+ },
75963
+ "sourceKey": {
75964
+ "visibility": "hidden"
75965
+ },
75966
+ "rfcMessageId": {
75967
+ "visibility": "hidden"
75968
+ },
75969
+ "metadata": {
75970
+ "visibility": "hidden"
75971
+ }
75972
+ }
75973
+ },
75974
+ "@happyvertical/smrt-support:SupportSpecialist": {
75975
+ "fields": {
75976
+ "displayName": {
75977
+ "label": "Name",
75978
+ "order": 1
75979
+ },
75980
+ "status": {
75981
+ "order": 2
75982
+ },
75983
+ "tenantId": {
75984
+ "visibility": "hidden"
75985
+ },
75986
+ "profileId": {
75987
+ "visibility": "advanced"
75988
+ },
75989
+ "languages": {
75990
+ "visibility": "advanced"
75991
+ },
75992
+ "timezone": {
75993
+ "visibility": "advanced"
75994
+ },
75995
+ "maxConcurrentCases": {
75996
+ "label": "Most tickets at once",
75997
+ "visibility": "advanced"
75998
+ },
75999
+ "onCallPriority": {
76000
+ "visibility": "hidden"
76001
+ },
76002
+ "notes": {
76003
+ "visibility": "advanced"
76004
+ },
76005
+ "metadata": {
76006
+ "visibility": "hidden"
76007
+ }
76008
+ }
76009
+ }
76010
+ },
76011
+ "help": {
76012
+ "markdown": "## Overview\n\nSupport keeps every request for help from a customer in one place. Each request\nis a ticket with a number, a subject, who asked, who is handling it and where\nit stands, from new to resolved. Messages back and forth stay on the ticket, so\nanyone on the team can pick it up and see what was said.\n\n## Tasks\n\nTickets and their messages are created by your support channels (email, chat\nand the like) and by the support service, not by hand in the app. Here you\nread them and see where each one stands.\n\n### Find a ticket\n\n1. Open the list of tickets.\n2. Look at the **{field:SupportCase.subject}**, the **{field:SupportCase.status}** and the **{field:SupportCase.priority}** to see what needs attention.\n3. Open a ticket to see who it is **{field:SupportCase.assignedSpecialistId}** and the **{field:SupportCase.description}**.\n\n### Read the history of a ticket\n\n1. Open the list of messages.\n2. Find the **{field:SupportInteraction.caseId}** you are interested in.\n3. Read the **{field:SupportInteraction.body}** of each message, oldest first.\n\n### Add someone to the support team\n\n1. Open the support team and choose **New**.\n2. Type the person's **{field:SupportSpecialist.displayName}**.\n3. Save. They can now be given tickets by the support service.\n",
76013
+ "fieldRefs": [
76014
+ "SupportCase.assignedSpecialistId",
76015
+ "SupportCase.description",
76016
+ "SupportCase.priority",
76017
+ "SupportCase.status",
76018
+ "SupportCase.subject",
76019
+ "SupportInteraction.body",
76020
+ "SupportInteraction.caseId",
76021
+ "SupportSpecialist.displayName"
76022
+ ]
76023
+ },
76024
+ "demo": {
76025
+ "mode": "server",
76026
+ "reasons": [
76027
+ "Needs a server because its package does not build for a browser: core migrations (node:os); and its package depends on @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, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627, #3628)."
76028
+ ]
76029
+ }
76030
+ }
76031
+ ]
74616
76032
  },
74617
76033
  {
74618
76034
  "id": "tags",
74619
76035
  "packageName": "@happyvertical/smrt-tags",
74620
- "version": "0.57.34",
76036
+ "version": "0.57.36",
74621
76037
  "description": "Reusable tagging system with hierarchies, contexts, and multi-language support for SMRT framework",
74622
76038
  "models": [
74623
76039
  {
@@ -75396,7 +76812,7 @@
75396
76812
  {
75397
76813
  "id": "timesheets",
75398
76814
  "packageName": "@happyvertical/smrt-timesheets",
75399
- "version": "0.57.34",
76815
+ "version": "0.57.36",
75400
76816
  "description": "Shared time entries for the SMRT framework: who worked how long on what, approval and correction, with immutable charge and compensation snapshots",
75401
76817
  "models": [
75402
76818
  {
@@ -76928,7 +78344,7 @@
76928
78344
  {
76929
78345
  "id": "users",
76930
78346
  "packageName": "@happyvertical/smrt-users",
76931
- "version": "0.57.34",
78347
+ "version": "0.57.36",
76932
78348
  "description": "Multi-tenant user management for the SMRT framework - users, tenants, roles, permissions, groups",
76933
78349
  "models": [
76934
78350
  {
@@ -81484,7 +82900,7 @@
81484
82900
  {
81485
82901
  "id": "video",
81486
82902
  "packageName": "@happyvertical/smrt-video",
81487
- "version": "0.57.34",
82903
+ "version": "0.57.36",
81488
82904
  "description": "Video content management for AI-powered video production in the SMRT ecosystem",
81489
82905
  "models": [
81490
82906
  {
@@ -88861,7 +90277,7 @@
88861
90277
  {
88862
90278
  "id": "voice",
88863
90279
  "packageName": "@happyvertical/smrt-voice",
88864
- "version": "0.57.34",
90280
+ "version": "0.57.36",
88865
90281
  "description": "Voice profile management for AI-powered voice synthesis and cloning in the SMRT ecosystem",
88866
90282
  "models": [
88867
90283
  {
@@ -90321,7 +91737,7 @@
90321
91737
  {
90322
91738
  "id": "webhooks",
90323
91739
  "packageName": "@happyvertical/smrt-webhooks",
90324
- "version": "0.57.34",
91740
+ "version": "0.57.36",
90325
91741
  "description": "Outbound webhook subscriptions, signed delivery, and durable retries",
90326
91742
  "models": [
90327
91743
  {