@happyvertical/smrt-planner 0.0.2 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. package/README.md +81 -8
  2. package/app/404.html +42 -49
  3. package/app/_app/immutable/assets/0.DUow1OzM.css +1 -0
  4. package/app/_app/immutable/assets/10.CdYxvH4G.css +1 -0
  5. package/app/_app/immutable/assets/11.nOT5Z4Fv.css +1 -0
  6. package/app/_app/immutable/assets/12.F7A7zP4J.css +1 -0
  7. package/app/_app/immutable/assets/13.JoySu8W5.css +1 -0
  8. package/app/_app/immutable/assets/14.nsp62-4b.css +1 -0
  9. package/app/_app/immutable/assets/2.CbPiqdz5.css +1 -0
  10. package/app/_app/immutable/assets/3.D518dbB5.css +1 -0
  11. package/app/_app/immutable/assets/4.B3vt1gMJ.css +1 -0
  12. package/app/_app/immutable/assets/AiSetup.4fXjMpTZ.css +1 -0
  13. package/app/_app/immutable/assets/AppShell.DOvXbUZo.css +1 -0
  14. package/app/_app/immutable/assets/ConnectTools.DTleL8YA.css +1 -0
  15. package/app/_app/immutable/assets/FieldMapForm.C8SZ3t4N.css +1 -0
  16. package/app/_app/immutable/assets/ModelPage.DbXvPbHE.css +1 -0
  17. package/app/_app/immutable/assets/SectionActions.BE1CPmxk.css +1 -0
  18. package/app/_app/immutable/assets/SectionIcons.BGFcFuOf.css +1 -0
  19. package/app/_app/immutable/assets/SegmentedControl.BkyuoCEJ.css +1 -0
  20. package/app/_app/immutable/assets/app.eM0k786r.css +1 -0
  21. package/app/_app/immutable/assets/currency-metadata.DDyu8_ub.css +1 -0
  22. package/app/_app/immutable/assets/data.bGq43K60.css +1 -0
  23. package/app/_app/immutable/assets/feedback.xBpOq9ef.css +1 -0
  24. package/app/_app/immutable/assets/forms.B3_bbIMe.css +1 -0
  25. package/app/_app/immutable/assets/labels.BiuUjqHs.css +1 -0
  26. package/app/_app/immutable/assets/percent.DbwvwMhf.css +1 -0
  27. package/app/_app/immutable/assets/state.CJipYvSU.css +1 -0
  28. package/app/_app/immutable/assets/webmcp-ui-context.BnR-DUfO.css +1 -0
  29. package/app/_app/immutable/assets/workspace.B5Xq-5pJ.css +1 -0
  30. package/app/_app/immutable/chunks/1ElZWh_R.js +10 -0
  31. package/app/_app/immutable/chunks/B-CpwO-j.js +1 -0
  32. package/app/_app/immutable/chunks/{BnRri03M.js → B7KB-rhH.js} +1 -1
  33. package/app/_app/immutable/chunks/BUhghcIm.js +1 -0
  34. package/app/_app/immutable/chunks/BV3NwM01.js +1 -0
  35. package/app/_app/immutable/chunks/BZVZZ6VY.js +1 -0
  36. package/app/_app/immutable/chunks/Ba1g71Sq.js +1 -0
  37. package/app/_app/immutable/chunks/BeJD7_hy.js +1 -0
  38. package/app/_app/immutable/chunks/BiO_bqNH.js +2 -0
  39. package/app/_app/immutable/chunks/{DkR8_Ws6.js → BqBuCJB_.js} +2 -2
  40. package/app/_app/immutable/chunks/BsJoBmTA.js +1 -0
  41. package/app/_app/immutable/chunks/Bxbz6_Mb.js +1 -0
  42. package/app/_app/immutable/chunks/Bz5uCkjV.js +2 -0
  43. package/app/_app/immutable/chunks/BzMfoxBk.js +1 -0
  44. package/app/_app/immutable/chunks/CF6zSg_o.js +2 -0
  45. package/app/_app/immutable/chunks/CFL0B6dk.js +1 -0
  46. package/app/_app/immutable/chunks/CRu55ZTy.js +4 -0
  47. package/app/_app/immutable/chunks/{CyUMm_Wp.js → Cv2EcCr0.js} +1 -1
  48. package/app/_app/immutable/chunks/D-3Ri0zJ.js +1 -0
  49. package/app/_app/immutable/chunks/{BWPhGFHl.js → D0FW0z6R.js} +1 -1
  50. package/app/_app/immutable/chunks/D7d5GssF.js +1 -0
  51. package/app/_app/immutable/chunks/DCsSRJsN.js +1 -0
  52. package/app/_app/immutable/chunks/DGqV6_5v.js +1 -0
  53. package/app/_app/immutable/chunks/DNSRTkf6.js +11 -0
  54. package/app/_app/immutable/chunks/DQNX_XPY.js +1 -0
  55. package/app/_app/immutable/chunks/DSyIMN4M.js +1 -0
  56. package/app/_app/immutable/chunks/DUTtmM1Y.js +1 -0
  57. package/app/_app/immutable/chunks/DYuawOB3.js +980 -0
  58. package/app/_app/immutable/chunks/DfCLzLZc.js +1 -0
  59. package/app/_app/immutable/chunks/Dh5fne6n.js +1 -0
  60. package/app/_app/immutable/chunks/LruoUXGC.js +1 -0
  61. package/app/_app/immutable/chunks/ZLqixH7j.js +9 -0
  62. package/app/_app/immutable/chunks/_pYwB_Eb.js +4 -0
  63. package/app/_app/immutable/chunks/aoU3lIZI.js +1 -0
  64. package/app/_app/immutable/chunks/c57ZlocB.js +24 -0
  65. package/app/_app/immutable/chunks/h8ppmjOm.js +1 -0
  66. package/app/_app/immutable/chunks/jhcy_jeO.js +1 -0
  67. package/app/_app/immutable/chunks/vNEnXNLV.js +3 -0
  68. package/app/_app/immutable/chunks/vwntRvfV.js +1 -0
  69. package/app/_app/immutable/entry/app.D5LoTsNA.js +2 -0
  70. package/app/_app/immutable/entry/start.Sb_s0NGC.js +1 -0
  71. package/app/_app/immutable/nodes/0.Cuo9-RQc.js +9 -0
  72. package/app/_app/immutable/nodes/1.BW8Ar5T3.js +1 -0
  73. package/app/_app/immutable/nodes/10.CpLYjN7r.js +3 -0
  74. package/app/_app/immutable/nodes/11.BMPKD4M3.js +1 -0
  75. package/app/_app/immutable/nodes/12.WYpy0AHE.js +4 -0
  76. package/app/_app/immutable/nodes/13.BYo05X9B.js +1 -0
  77. package/app/_app/immutable/nodes/14.DN0MT3KB.js +1 -0
  78. package/app/_app/immutable/nodes/2.DM6k_pqu.js +24 -0
  79. package/app/_app/immutable/nodes/3.YgEwJ-vF.js +1 -0
  80. package/app/_app/immutable/nodes/4.A3Y6Lax0.js +1 -0
  81. package/app/_app/immutable/nodes/5.D9Vd85hG.js +1 -0
  82. package/app/_app/immutable/nodes/6.C5c56bSW.js +1 -0
  83. package/app/_app/immutable/nodes/7.CDBMbYlD.js +1 -0
  84. package/app/_app/immutable/nodes/8.8olDkDou.js +1 -0
  85. package/app/_app/immutable/nodes/9.CWgx__8Z.js +1 -0
  86. package/app/_app/version.json +1 -1
  87. package/app/advanced-styles/index.html +84 -0
  88. package/app/ai/index.html +60 -52
  89. package/app/blueprint/index.html +46 -53
  90. package/app/cookbook/index.html +46 -53
  91. package/app/index.html +92 -64
  92. package/app/m/ads/AdDeliveryTier/index.html +52 -59
  93. package/app/m/ads/AdEvent/index.html +52 -59
  94. package/app/m/ads/AdFormat/index.html +52 -59
  95. package/app/m/ads/AdGroup/index.html +52 -59
  96. package/app/m/ads/AdVariation/index.html +52 -59
  97. package/app/m/analytics/AnalyticsDataStream/index.html +52 -59
  98. package/app/m/analytics/AnalyticsEvent/index.html +52 -59
  99. package/app/m/analytics/AnalyticsProperty/index.html +52 -59
  100. package/app/m/analytics/AnalyticsReport/index.html +52 -59
  101. package/app/m/approvals/ApprovalEvent/index.html +52 -59
  102. package/app/m/approvals/ApprovalPolicy/index.html +52 -59
  103. package/app/m/approvals/ApprovalRequest/index.html +52 -59
  104. package/app/m/assets/Asset/attachments/index.html +91 -0
  105. package/app/m/assets/Asset/index.html +52 -59
  106. package/app/m/assets/AssetAssociation/index.html +53 -60
  107. package/app/m/assets/AssetMetafield/index.html +52 -59
  108. package/app/m/assets/AssetStatus/index.html +52 -59
  109. package/app/m/assets/AssetType/index.html +52 -59
  110. package/app/m/assets/Folder/index.html +52 -59
  111. package/app/m/chat/AgentSession/index.html +52 -59
  112. package/app/m/chat/ChatMessage/index.html +53 -60
  113. package/app/m/chat/ChatParticipant/index.html +53 -60
  114. package/app/m/chat/ChatReaction/index.html +52 -59
  115. package/app/m/chat/ChatRoom/index.html +52 -59
  116. package/app/m/chat/ChatThread/index.html +53 -60
  117. package/app/m/chat/VoiceGatewayTurn/index.html +52 -59
  118. package/app/m/chat/VoiceSession/index.html +52 -59
  119. package/app/m/commerce/Agreement/index.html +52 -59
  120. package/app/m/commerce/Cart/index.html +52 -59
  121. package/app/m/commerce/Contract/index.html +52 -59
  122. package/app/m/commerce/ContractLineItem/index.html +53 -60
  123. package/app/m/commerce/Customer/index.html +52 -59
  124. package/app/m/commerce/DocumentTax/index.html +89 -0
  125. package/app/m/commerce/Estimate/index.html +52 -59
  126. package/app/m/commerce/Fulfillment/index.html +52 -59
  127. package/app/m/commerce/FulfillmentLineItem/index.html +53 -60
  128. package/app/m/commerce/Invoice/index.html +52 -59
  129. package/app/m/commerce/InvoiceLineItem/index.html +53 -60
  130. package/app/m/commerce/Lease/index.html +52 -59
  131. package/app/m/commerce/LicenseSale/index.html +52 -59
  132. package/app/m/commerce/Order/index.html +52 -59
  133. package/app/m/commerce/Payment/index.html +52 -59
  134. package/app/m/commerce/PaymentAllocation/index.html +53 -60
  135. package/app/m/commerce/PaymentInstrument/index.html +52 -59
  136. package/app/m/commerce/PaymentIntent/index.html +52 -59
  137. package/app/m/commerce/Payout/index.html +52 -59
  138. package/app/m/commerce/ProductionOrder/index.html +52 -59
  139. package/app/m/commerce/PurchaseContract/index.html +89 -0
  140. package/app/m/commerce/PurchaseOrder/index.html +52 -59
  141. package/app/m/commerce/SalesContract/index.html +89 -0
  142. package/app/m/commerce/SupplierQuote/index.html +89 -0
  143. package/app/m/commerce/TaxCode/index.html +89 -0
  144. package/app/m/commerce/TaxComponent/index.html +89 -0
  145. package/app/m/commerce/TaxSettings/index.html +89 -0
  146. package/app/m/commerce/TaxSummaryReport/index.html +89 -0
  147. package/app/m/commerce/Vendor/index.html +52 -59
  148. package/app/m/commerce/WholesaleOrder/index.html +52 -59
  149. package/app/m/content/Content/index.html +52 -59
  150. package/app/m/content/ContentContribution/index.html +52 -59
  151. package/app/m/content/ContentContributionAttachment/index.html +52 -59
  152. package/app/m/content/ContentContributionRevision/index.html +52 -59
  153. package/app/m/content/ContentContributionType/index.html +52 -59
  154. package/app/m/content/ContentContributor/index.html +52 -59
  155. package/app/m/content/ContentCorrection/index.html +52 -59
  156. package/app/m/content/ContentFeedSource/index.html +52 -59
  157. package/app/m/content/ContentGovernanceAssignment/index.html +52 -59
  158. package/app/m/content/ContentGovernancePolicy/index.html +52 -59
  159. package/app/m/content/ContentGovernanceProfile/index.html +52 -59
  160. package/app/m/content/ContentReference/index.html +52 -59
  161. package/app/m/content/ContentReview/index.html +52 -59
  162. package/app/m/content/ContentVersion/index.html +52 -59
  163. package/app/m/events/Event/index.html +52 -59
  164. package/app/m/events/EventParticipant/index.html +53 -60
  165. package/app/m/events/EventSeries/index.html +52 -59
  166. package/app/m/events/EventType/index.html +52 -59
  167. package/app/m/expenses/Expense/index.html +89 -0
  168. package/app/m/facts/Fact/index.html +52 -59
  169. package/app/m/facts/FactContent/index.html +52 -59
  170. package/app/m/facts/FactEvidence/index.html +52 -59
  171. package/app/m/facts/FactSource/index.html +52 -59
  172. package/app/m/facts/FactSubject/index.html +52 -59
  173. package/app/m/facts/FactTag/index.html +52 -59
  174. package/app/m/fields/FieldPolicy/index.html +52 -59
  175. package/app/m/fields/FieldPolicySuggestion/index.html +52 -59
  176. package/app/m/fields/FieldUsageCounter/index.html +52 -59
  177. package/app/m/images/Image/index.html +52 -59
  178. package/app/m/inventory/InventoryLocation/index.html +52 -59
  179. package/app/m/inventory/StockLevel/index.html +52 -59
  180. package/app/m/inventory/StockMovement/index.html +52 -59
  181. package/app/m/ledgers/Account/index.html +52 -59
  182. package/app/m/ledgers/Journal/index.html +52 -59
  183. package/app/m/ledgers/JournalEntry/index.html +53 -60
  184. package/app/m/manufacturing/Assembly/index.html +52 -59
  185. package/app/m/manufacturing/BillOfMaterials/index.html +52 -59
  186. package/app/m/manufacturing/BomLine/index.html +52 -59
  187. package/app/m/manufacturing/Operation/index.html +52 -59
  188. package/app/m/manufacturing/ProductionRun/index.html +52 -59
  189. package/app/m/manufacturing/ProductionRunCompletion/index.html +52 -59
  190. package/app/m/manufacturing/RoutingStep/index.html +52 -59
  191. package/app/m/marketing/Campaign/index.html +52 -59
  192. package/app/m/marketing/CampaignChannel/index.html +52 -59
  193. package/app/m/marketing/CampaignMetricSnapshot/index.html +52 -59
  194. package/app/m/messages/Account/index.html +52 -59
  195. package/app/m/messages/Attachment/index.html +52 -59
  196. package/app/m/messages/Blacklist/index.html +52 -59
  197. package/app/m/messages/Email/failed-sends/index.html +54 -59
  198. package/app/m/messages/Email/index.html +52 -59
  199. package/app/m/messages/Email/mailbox/index.html +54 -59
  200. package/app/m/messages/EmailAccount/index.html +52 -59
  201. package/app/m/messages/EmailAttachment/index.html +89 -0
  202. package/app/m/messages/EmailFolder/index.html +52 -59
  203. package/app/m/messages/Message/index.html +52 -59
  204. package/app/m/messages/MessagingEndpoint/index.html +52 -59
  205. package/app/m/messages/PersonaMessageRoute/index.html +52 -59
  206. package/app/m/messages/SlackAccount/index.html +52 -59
  207. package/app/m/messages/SlackMessage/index.html +52 -59
  208. package/app/m/messages/TelegramAccount/index.html +52 -59
  209. package/app/m/messages/Tweet/index.html +52 -59
  210. package/app/m/messages/TwitterAccount/index.html +52 -59
  211. package/app/m/messages/Whitelist/index.html +52 -59
  212. package/app/m/messages/ZulipAccount/index.html +52 -59
  213. package/app/m/places/Place/index.html +52 -59
  214. package/app/m/places/PlaceType/index.html +52 -59
  215. package/app/m/products/Category/index.html +52 -59
  216. package/app/m/products/Material/index.html +52 -59
  217. package/app/m/products/Product/index.html +52 -59
  218. package/app/m/products/Product/ingredients/index.html +54 -59
  219. package/app/m/products/ProductVariant/index.html +53 -60
  220. package/app/m/products/Sku/index.html +53 -60
  221. package/app/m/profiles/ApiKey/index.html +52 -59
  222. package/app/m/profiles/Bot/index.html +52 -59
  223. package/app/m/profiles/MagicLinkToken/index.html +52 -59
  224. package/app/m/profiles/NostrIdentity/index.html +52 -59
  225. package/app/m/profiles/OidcIdentity/index.html +52 -59
  226. package/app/m/profiles/Organization/index.html +52 -59
  227. package/app/m/profiles/Person/index.html +52 -59
  228. package/app/m/profiles/Profile/index.html +52 -59
  229. package/app/m/profiles/ProfileMetadata/index.html +52 -59
  230. package/app/m/profiles/ProfileMetafield/index.html +52 -59
  231. package/app/m/profiles/ProfileRelationship/index.html +52 -59
  232. package/app/m/profiles/ProfileRelationshipTerm/index.html +52 -59
  233. package/app/m/profiles/ProfileRelationshipType/index.html +52 -59
  234. package/app/m/profiles/ProfileType/index.html +52 -59
  235. package/app/m/projects/Comment/index.html +53 -60
  236. package/app/m/projects/Issue/index.html +52 -59
  237. package/app/m/projects/Label/index.html +52 -59
  238. package/app/m/projects/Project/index.html +52 -59
  239. package/app/m/projects/ProjectIntegration/index.html +52 -59
  240. package/app/m/projects/PullRequest/index.html +52 -59
  241. package/app/m/projects/Repository/index.html +52 -59
  242. package/app/m/properties/Property/index.html +52 -59
  243. package/app/m/properties/Zone/index.html +52 -59
  244. package/app/m/reports/RuntimeReport/index.html +52 -59
  245. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +52 -59
  246. package/app/m/reports/SmrtReportLock/index.html +52 -59
  247. package/app/m/reports/SmrtReportRefreshTask/index.html +52 -59
  248. package/app/m/reports/SmrtReportRun/index.html +52 -59
  249. package/app/m/reports/SmrtReportSchedule/index.html +52 -59
  250. package/app/m/reports/SmrtReportWatermark/index.html +52 -59
  251. package/app/m/sales/AttributionException/index.html +52 -59
  252. package/app/m/sales/AttributionPolicy/index.html +52 -59
  253. package/app/m/sales/Commission/index.html +52 -59
  254. package/app/m/sales/CommissionAdjustment/index.html +52 -59
  255. package/app/m/sales/CommissionPayout/index.html +52 -59
  256. package/app/m/sales/CommissionPlan/index.html +52 -59
  257. package/app/m/sales/Earner/index.html +52 -59
  258. package/app/m/sales/EarnerSourceAttribution/index.html +52 -59
  259. package/app/m/sales/EarningEvent/index.html +52 -59
  260. package/app/m/sales/ExecutedAgreement/index.html +52 -59
  261. package/app/m/sales/Lead/index.html +52 -59
  262. package/app/m/sales/Opportunity/index.html +52 -59
  263. package/app/m/sales/OpportunityConversion/index.html +52 -59
  264. package/app/m/sales/PipelineDefinition/index.html +52 -59
  265. package/app/m/sales/PipelineStage/index.html +53 -60
  266. package/app/m/sales/Referral/index.html +52 -59
  267. package/app/m/sales/ReferralAgreement/index.html +52 -59
  268. package/app/m/sales/ReferralLink/index.html +52 -59
  269. package/app/m/sales/ReferralProgram/index.html +52 -59
  270. package/app/m/sales/ReferralTermSnapshot/index.html +52 -59
  271. package/app/m/sales/ReferralTouch/index.html +52 -59
  272. package/app/m/sales/Referrer/index.html +52 -59
  273. package/app/m/sales/SalesActivity/index.html +52 -59
  274. package/app/m/sales/SalesRepresentative/index.html +52 -59
  275. package/app/m/sites/Site/index.html +52 -59
  276. package/app/m/sites/SiteAgentBinding/index.html +52 -59
  277. package/app/m/social/OAuthState/index.html +52 -59
  278. package/app/m/social/SocialAccount/index.html +52 -59
  279. package/app/m/social/SocialPost/index.html +52 -59
  280. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +52 -59
  281. package/app/m/subscriptions/BillingAdjustment/index.html +52 -59
  282. package/app/m/subscriptions/ClientCharge/index.html +52 -59
  283. package/app/m/subscriptions/CreditGrant/index.html +52 -59
  284. package/app/m/subscriptions/PricingRule/index.html +52 -59
  285. package/app/m/subscriptions/RetailCharge/index.html +52 -59
  286. package/app/m/subscriptions/SpendingPolicy/index.html +52 -59
  287. package/app/m/subscriptions/SubscriptionPlan/index.html +52 -59
  288. package/app/m/subscriptions/TenantSubscription/index.html +52 -59
  289. package/app/m/subscriptions/TenantUsageMetric/index.html +52 -59
  290. package/app/m/support/ServiceTimeEntry/index.html +52 -59
  291. package/app/m/support/SupportAiRun/index.html +52 -59
  292. package/app/m/support/SupportAvailability/index.html +52 -59
  293. package/app/m/support/SupportCase/index.html +52 -59
  294. package/app/m/support/SupportCaseEvent/index.html +52 -59
  295. package/app/m/support/SupportChannelBinding/index.html +52 -59
  296. package/app/m/support/SupportCharge/index.html +52 -59
  297. package/app/m/support/SupportCompensation/index.html +52 -59
  298. package/app/m/support/SupportCompensationPlan/index.html +52 -59
  299. package/app/m/support/SupportEscalation/index.html +52 -59
  300. package/app/m/support/SupportInteraction/index.html +52 -59
  301. package/app/m/support/SupportPlan/index.html +52 -59
  302. package/app/m/support/SupportPolicy/index.html +52 -59
  303. package/app/m/support/SupportQualification/index.html +52 -59
  304. package/app/m/support/SupportServiceTarget/index.html +52 -59
  305. package/app/m/support/SupportSpecialist/index.html +52 -59
  306. package/app/m/support/SupportWorkLink/index.html +52 -59
  307. package/app/m/tags/Tag/index.html +52 -59
  308. package/app/m/tags/TagAlias/index.html +52 -59
  309. package/app/m/timesheets/AttendanceBreak/index.html +52 -59
  310. package/app/m/timesheets/AttendancePunch/index.html +52 -59
  311. package/app/m/timesheets/AttendanceSegment/index.html +89 -0
  312. package/app/m/timesheets/ServiceChargeSnapshot/index.html +52 -59
  313. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +52 -59
  314. package/app/m/timesheets/ServiceTimeEntry/index.html +52 -59
  315. package/app/m/users/Group/index.html +52 -59
  316. package/app/m/users/GroupMember/index.html +52 -59
  317. package/app/m/users/GroupRole/index.html +52 -59
  318. package/app/m/users/Membership/index.html +53 -60
  319. package/app/m/users/MembershipOverride/index.html +52 -59
  320. package/app/m/users/Permission/index.html +52 -59
  321. package/app/m/users/Role/index.html +52 -59
  322. package/app/m/users/RolePermission/index.html +52 -59
  323. package/app/m/users/Session/index.html +52 -59
  324. package/app/m/users/Tenant/index.html +52 -59
  325. package/app/m/users/TenantIntegration/index.html +52 -59
  326. package/app/m/users/TenantPermissionOverride/index.html +52 -59
  327. package/app/m/users/User/index.html +52 -59
  328. package/app/m/video/Character/index.html +52 -59
  329. package/app/m/video/CharacterAsset/index.html +52 -59
  330. package/app/m/video/CompositeJob/index.html +52 -59
  331. package/app/m/video/Performer/index.html +52 -59
  332. package/app/m/video/PerformerAsset/index.html +52 -59
  333. package/app/m/video/Scene/index.html +52 -59
  334. package/app/m/video/SceneAsset/index.html +52 -59
  335. package/app/m/video/VideoComposition/index.html +52 -59
  336. package/app/m/video/VideoCompositionAsset/index.html +52 -59
  337. package/app/m/video/VideoSequence/index.html +52 -59
  338. package/app/m/video/VideoSequenceAsset/index.html +52 -59
  339. package/app/m/video/VideoShot/index.html +52 -59
  340. package/app/m/video/VideoShotAsset/index.html +52 -59
  341. package/app/m/video/VideoShotCharacter/index.html +52 -59
  342. package/app/m/video/VideoWorkflow/index.html +52 -59
  343. package/app/m/voice/VoiceOutput/index.html +52 -59
  344. package/app/m/voice/VoiceProfile/index.html +52 -59
  345. package/app/m/voice/VoiceSample/index.html +52 -59
  346. package/app/packages/ads/index.html +50 -57
  347. package/app/packages/analytics/index.html +50 -57
  348. package/app/packages/approvals/index.html +50 -57
  349. package/app/packages/assets/index.html +50 -57
  350. package/app/packages/chat/index.html +50 -57
  351. package/app/packages/comments/index.html +50 -57
  352. package/app/packages/commerce/index.html +50 -57
  353. package/app/packages/content/index.html +50 -57
  354. package/app/packages/events/index.html +50 -57
  355. package/app/packages/expenses/index.html +50 -57
  356. package/app/packages/facts/index.html +50 -57
  357. package/app/packages/fields/index.html +50 -57
  358. package/app/packages/human-resources/index.html +50 -57
  359. package/app/packages/images/index.html +50 -57
  360. package/app/packages/index.html +49 -55
  361. package/app/packages/ingestion/index.html +85 -0
  362. package/app/packages/inventory/index.html +50 -57
  363. package/app/packages/ledgers/index.html +50 -57
  364. package/app/packages/manufacturing/index.html +50 -57
  365. package/app/packages/marketing/index.html +50 -57
  366. package/app/packages/messages/index.html +50 -57
  367. package/app/packages/places/index.html +50 -57
  368. package/app/packages/preferences/index.html +50 -57
  369. package/app/packages/products/index.html +50 -57
  370. package/app/packages/profiles/index.html +50 -57
  371. package/app/packages/projects/index.html +50 -57
  372. package/app/packages/properties/index.html +50 -57
  373. package/app/packages/reports/index.html +50 -57
  374. package/app/packages/sales/index.html +50 -57
  375. package/app/packages/sites/index.html +50 -57
  376. package/app/packages/social/index.html +50 -57
  377. package/app/packages/subscriptions/index.html +50 -57
  378. package/app/packages/support/index.html +50 -57
  379. package/app/packages/tags/index.html +50 -57
  380. package/app/packages/timesheets/index.html +50 -57
  381. package/app/packages/users/index.html +50 -57
  382. package/app/packages/video/index.html +50 -57
  383. package/app/packages/voice/index.html +50 -57
  384. package/app/packages/webhooks/index.html +85 -0
  385. package/app/recipes/account-access/help/index.html +52 -57
  386. package/app/recipes/account-access/index.html +57 -59
  387. package/app/recipes/activity/help/index.html +52 -57
  388. package/app/recipes/activity/index.html +57 -59
  389. package/app/recipes/agreements/help/index.html +52 -57
  390. package/app/recipes/agreements/index.html +57 -59
  391. package/app/recipes/analytics.reports/help/index.html +52 -57
  392. package/app/recipes/analytics.reports/index.html +57 -59
  393. package/app/recipes/assets/help/index.html +52 -57
  394. package/app/recipes/assets/index.html +57 -59
  395. package/app/recipes/billing/help/index.html +52 -57
  396. package/app/recipes/billing/index.html +57 -59
  397. package/app/recipes/chat.assistant/help/index.html +52 -57
  398. package/app/recipes/chat.assistant/index.html +57 -59
  399. package/app/recipes/comments/help/index.html +52 -57
  400. package/app/recipes/comments/index.html +57 -59
  401. package/app/recipes/commerce.customers/help/index.html +52 -57
  402. package/app/recipes/commerce.customers/index.html +57 -59
  403. package/app/recipes/commerce.estimates/help/index.html +52 -57
  404. package/app/recipes/commerce.estimates/index.html +57 -59
  405. package/app/recipes/commerce.purchases/help/index.html +52 -57
  406. package/app/recipes/commerce.purchases/index.html +57 -59
  407. package/app/recipes/commerce.sales/help/index.html +52 -57
  408. package/app/recipes/commerce.sales/index.html +57 -59
  409. package/app/recipes/commerce.vendors/help/index.html +52 -57
  410. package/app/recipes/commerce.vendors/index.html +57 -59
  411. package/app/recipes/commerce.wholesale/help/index.html +52 -57
  412. package/app/recipes/commerce.wholesale/index.html +57 -59
  413. package/app/recipes/events.calendar/help/index.html +52 -57
  414. package/app/recipes/events.calendar/index.html +57 -59
  415. package/app/recipes/expenses.tracking/help/index.html +88 -0
  416. package/app/recipes/expenses.tracking/index.html +92 -0
  417. package/app/recipes/fields.form-customization/help/index.html +52 -57
  418. package/app/recipes/fields.form-customization/index.html +57 -59
  419. package/app/recipes/ingestion/help/index.html +88 -0
  420. package/app/recipes/ingestion/index.html +93 -0
  421. package/app/recipes/integrations/help/index.html +88 -0
  422. package/app/recipes/integrations/index.html +92 -0
  423. package/app/recipes/inventory.stock/help/index.html +52 -57
  424. package/app/recipes/inventory.stock/index.html +57 -59
  425. package/app/recipes/ledgers.bookkeeping/help/index.html +52 -57
  426. package/app/recipes/ledgers.bookkeeping/index.html +57 -59
  427. package/app/recipes/messages/help/index.html +52 -57
  428. package/app/recipes/messages/index.html +57 -59
  429. package/app/recipes/products/help/index.html +52 -57
  430. package/app/recipes/products/index.html +57 -59
  431. package/app/recipes/projects.tracker/help/index.html +52 -57
  432. package/app/recipes/projects.tracker/index.html +57 -59
  433. package/app/recipes/reports.materialized/help/index.html +52 -57
  434. package/app/recipes/reports.materialized/index.html +57 -59
  435. package/app/recipes/reports.runtime/help/index.html +88 -0
  436. package/app/recipes/reports.runtime/index.html +92 -0
  437. package/app/recipes/sales.pipeline/help/index.html +52 -57
  438. package/app/recipes/sales.pipeline/index.html +57 -59
  439. package/app/recipes/tags.taxonomy/help/index.html +52 -57
  440. package/app/recipes/tags.taxonomy/index.html +57 -59
  441. package/app/recipes/team-collaboration/help/index.html +52 -57
  442. package/app/recipes/team-collaboration/index.html +57 -59
  443. package/app/recipes/timesheets.time-entries/help/index.html +88 -0
  444. package/app/recipes/timesheets.time-entries/index.html +92 -0
  445. package/app/s/custom-accounts/index.html +82 -0
  446. package/app/s/custom-appointments/index.html +82 -0
  447. package/app/s/custom-billing/index.html +47 -54
  448. package/app/s/custom-buying/index.html +47 -54
  449. package/app/s/custom-checkout/index.html +82 -0
  450. package/app/s/custom-classes/index.html +47 -54
  451. package/app/s/custom-clients/index.html +82 -0
  452. package/app/s/custom-events/index.html +82 -0
  453. package/app/s/custom-fleet/index.html +82 -0
  454. package/app/s/custom-giving/index.html +82 -0
  455. package/app/s/custom-jobs/index.html +47 -54
  456. package/app/s/custom-kitchen/index.html +47 -54
  457. package/app/s/custom-material/index.html +47 -54
  458. package/app/s/custom-meetings/index.html +82 -0
  459. package/app/s/custom-members/index.html +47 -54
  460. package/app/s/custom-parts/index.html +47 -54
  461. package/app/s/custom-rentals/index.html +82 -0
  462. package/app/s/custom-roastery/index.html +82 -0
  463. package/app/s/custom-schedule/index.html +47 -54
  464. package/app/s/custom-shelf/index.html +82 -0
  465. package/app/s/custom-shop/index.html +47 -54
  466. package/app/s/custom-wholesale/index.html +47 -54
  467. package/app/s/custom-work/index.html +82 -0
  468. package/app/s/custom-yard/index.html +82 -0
  469. package/app/s/section-access-control/index.html +47 -54
  470. package/app/s/section-account-security/index.html +47 -54
  471. package/app/s/section-accounting/index.html +47 -54
  472. package/app/s/section-activity/index.html +47 -54
  473. package/app/s/section-agreements/index.html +47 -54
  474. package/app/s/section-analytics/index.html +47 -54
  475. package/app/s/section-assets/index.html +47 -54
  476. package/app/s/section-billing/index.html +47 -54
  477. package/app/s/section-calendar/index.html +47 -54
  478. package/app/s/section-catalog/index.html +47 -54
  479. package/app/s/section-chat.assistant/index.html +47 -54
  480. package/app/s/section-comments/index.html +47 -54
  481. package/app/s/section-fields.form-customization/index.html +47 -54
  482. package/app/s/section-ingestion/index.html +82 -0
  483. package/app/s/section-integrations/index.html +82 -0
  484. package/app/s/section-messages/index.html +47 -54
  485. package/app/s/section-more/index.html +47 -54
  486. package/app/s/section-operations/index.html +47 -54
  487. package/app/s/section-projects/index.html +47 -54
  488. package/app/s/section-purchasing/index.html +47 -54
  489. package/app/s/section-reports.materialized/index.html +47 -54
  490. package/app/s/section-reports.runtime/index.html +82 -0
  491. package/app/s/section-sales/index.html +47 -54
  492. package/app/s/section-taxonomy/index.html +47 -54
  493. package/app/s/section-team/index.html +47 -54
  494. package/app/s/section-work/index.html +82 -0
  495. package/dist/ai/state.svelte.d.ts +13 -0
  496. package/dist/ai/state.svelte.js +33 -0
  497. package/dist/assistant/change.d.ts +14 -3
  498. package/dist/assistant/change.js +26 -3
  499. package/dist/assistant/engine.js +5 -1
  500. package/dist/assistant/prompt.js +7 -3
  501. package/dist/catalog/catalog.json +11263 -14455
  502. package/dist/catalog/generate/exclusions.d.ts +2 -0
  503. package/dist/catalog/generate/exclusions.js +14 -0
  504. package/dist/catalog/generate/extract.js +28 -7
  505. package/dist/catalog/types.d.ts +7 -0
  506. package/dist/components/AdvancedStyles.svelte +138 -0
  507. package/dist/components/AdvancedStyles.svelte.d.ts +6 -0
  508. package/dist/components/AiModelsPage.svelte +40 -0
  509. package/dist/components/AiModelsPage.svelte.d.ts +7 -0
  510. package/dist/components/AiSetup.svelte +9 -6
  511. package/dist/components/AiStatusIcons.svelte +8 -5
  512. package/dist/components/AppSettings.svelte +105 -1
  513. package/dist/components/BrowserAssistant.svelte +16 -17
  514. package/dist/components/BrowserAssistant.svelte.d.ts +2 -0
  515. package/dist/components/ChildRecords.svelte +61 -14
  516. package/dist/components/ChildRecords.svelte.d.ts +1 -0
  517. package/dist/components/ConnectTools.svelte +5 -2
  518. package/dist/components/CookbooksPanel.svelte +56 -33
  519. package/dist/components/CopyButton.svelte +65 -0
  520. package/dist/components/CopyButton.svelte.d.ts +24 -0
  521. package/dist/components/ExportPanel.svelte +292 -57
  522. package/dist/components/ExportPanel.svelte.d.ts +10 -1
  523. package/dist/components/FeatureCard.svelte +21 -10
  524. package/dist/components/FeaturesPanel.svelte +4 -1
  525. package/dist/components/FieldInput.svelte +6 -3
  526. package/dist/components/FieldMapForm.svelte +6 -10
  527. package/dist/components/FieldMapForm.svelte.d.ts +1 -0
  528. package/dist/components/FormWorkspace.svelte +80 -9
  529. package/dist/components/FormWorkspace.svelte.d.ts +1 -0
  530. package/dist/components/HeaderIconLink.svelte +86 -0
  531. package/dist/components/HeaderIconLink.svelte.d.ts +14 -0
  532. package/dist/components/HelpView.svelte +3 -0
  533. package/dist/components/ModelOptions.svelte +13 -2
  534. package/dist/components/ModelPage.svelte +33 -5
  535. package/dist/components/ModelPage.svelte.d.ts +4 -0
  536. package/dist/components/ModelWorkspace.svelte +148 -50
  537. package/dist/components/ModelWorkspace.svelte.d.ts +4 -0
  538. package/dist/components/PackagePage.svelte +96 -0
  539. package/dist/components/PackagePage.svelte.d.ts +9 -0
  540. package/dist/components/ProductMedia.svelte +95 -0
  541. package/dist/components/ProductMedia.svelte.d.ts +10 -0
  542. package/dist/components/RecipeCards.svelte +13 -1
  543. package/dist/components/RecipeHelp.svelte +3 -0
  544. package/dist/components/RecipeOptions.svelte +13 -1
  545. package/dist/components/RecordFeatures.svelte +22 -8
  546. package/dist/components/RecordView.svelte +354 -0
  547. package/dist/components/RecordView.svelte.d.ts +14 -0
  548. package/dist/components/RelationField.svelte +5 -2
  549. package/dist/components/SectionActions.svelte +8 -5
  550. package/dist/components/SectionHeading.svelte +63 -0
  551. package/dist/components/SectionHeading.svelte.d.ts +11 -0
  552. package/dist/components/SectionIcons.svelte +15 -3
  553. package/dist/components/SectionOverview.svelte +33 -3
  554. package/dist/components/SectionOverview.svelte.d.ts +4 -0
  555. package/dist/components/SectionPage.svelte +25 -165
  556. package/dist/components/SectionView.svelte +172 -0
  557. package/dist/components/SectionView.svelte.d.ts +18 -0
  558. package/dist/components/SettingsPanel.svelte +3 -9
  559. package/dist/components/SettingsPanel.svelte.d.ts +1 -5
  560. package/dist/components/ThemeBridge.svelte +80 -4
  561. package/dist/components/ThemeBridge.svelte.d.ts +5 -1
  562. package/dist/components/ThemeSection.svelte +208 -117
  563. package/dist/components/ThemeSection.svelte.d.ts +3 -7
  564. package/dist/components/VariantGridForm.svelte +9 -13
  565. package/dist/components/VariantGridForm.svelte.d.ts +1 -0
  566. package/dist/components/VoiceTyping.svelte +3 -0
  567. package/dist/cookbook/describe.d.ts +29 -0
  568. package/dist/cookbook/describe.js +164 -0
  569. package/dist/cookbook/file.d.ts +6 -0
  570. package/dist/cookbook/file.js +18 -4
  571. package/dist/cookbook/prompt.d.ts +49 -0
  572. package/dist/cookbook/prompt.js +96 -0
  573. package/dist/cookbook/store.svelte.d.ts +13 -0
  574. package/dist/cookbook/store.svelte.js +36 -8
  575. package/dist/core/prompt.js +10 -1
  576. package/dist/core/reply.d.ts +6 -1
  577. package/dist/data/children.d.ts +50 -6
  578. package/dist/data/children.js +146 -16
  579. package/dist/data/derived.d.ts +37 -29
  580. package/dist/data/derived.js +49 -30
  581. package/dist/data/display.d.ts +21 -8
  582. package/dist/data/display.js +74 -11
  583. package/dist/data/fakes.d.ts +48 -9
  584. package/dist/data/fakes.js +146 -22
  585. package/dist/data/labels.d.ts +7 -2
  586. package/dist/data/labels.js +12 -2
  587. package/dist/data/list-sort.d.ts +8 -0
  588. package/dist/data/list-sort.js +45 -0
  589. package/dist/data/money.d.ts +225 -0
  590. package/dist/data/money.js +411 -0
  591. package/dist/data/packs.d.ts +13 -0
  592. package/dist/data/packs.js +1224 -0
  593. package/dist/data/planner-source.js +120 -3
  594. package/dist/data/source.d.ts +13 -2
  595. package/dist/data/source.js +274 -40
  596. package/dist/features/palette.d.ts +2 -0
  597. package/dist/features/palette.js +1 -1
  598. package/dist/forms/stock.d.ts +1 -1
  599. package/dist/forms/stock.js +3 -1
  600. package/dist/index.d.ts +7 -2
  601. package/dist/index.js +6 -1
  602. package/dist/kitchen/LiveKitchenBridge.svelte +73 -0
  603. package/dist/kitchen/LiveKitchenBridge.svelte.d.ts +8 -0
  604. package/dist/kitchen/live.d.ts +7 -0
  605. package/dist/kitchen/live.js +51 -0
  606. package/dist/library/icons.js +34 -0
  607. package/dist/library/library.json +1546 -15
  608. package/dist/library/pending.json +5 -0
  609. package/dist/library/types.d.ts +4 -0
  610. package/dist/motion/tokens.d.ts +6 -0
  611. package/dist/motion/tokens.js +32 -0
  612. package/dist/motion/view-transition.d.ts +13 -0
  613. package/dist/motion/view-transition.js +17 -0
  614. package/dist/overviews/definitions.d.ts +41 -2
  615. package/dist/overviews/definitions.js +111 -4
  616. package/dist/overviews/models.d.ts +10 -0
  617. package/dist/overviews/models.js +19 -0
  618. package/dist/overviews/registry.d.ts +92 -5
  619. package/dist/overviews/registry.js +468 -58
  620. package/dist/overviews/validate.js +2 -2
  621. package/dist/planner/Planner.svelte +374 -166
  622. package/dist/planner/PlannerControls.svelte +255 -0
  623. package/dist/planner/PlannerControls.svelte.d.ts +17 -0
  624. package/dist/planner/PlannerLifecycle.svelte +73 -0
  625. package/dist/planner/PlannerLifecycle.svelte.d.ts +9 -0
  626. package/dist/planner/app.svelte.d.ts +12 -2
  627. package/dist/planner/app.svelte.js +13 -3
  628. package/dist/planner/assistant.js +20 -2
  629. package/dist/planner/commands/adapter.js +9 -2
  630. package/dist/planner/commands/types.d.ts +1 -1
  631. package/dist/planner/commands/types.js +1 -0
  632. package/dist/planner/header-icons.d.ts +12 -0
  633. package/dist/planner/header-icons.js +12 -0
  634. package/dist/planner/host/HostPlanner.svelte +70 -0
  635. package/dist/planner/host/HostPlanner.svelte.d.ts +17 -0
  636. package/dist/planner/host/session.svelte.d.ts +28 -0
  637. package/dist/planner/host/session.svelte.js +186 -0
  638. package/dist/planner/routes.d.ts +49 -0
  639. package/dist/planner/routes.js +64 -0
  640. package/dist/planner/shell.d.ts +40 -0
  641. package/dist/planner/shell.js +56 -0
  642. package/dist/planner/tab.svelte.d.ts +6 -3
  643. package/dist/planner/tab.svelte.js +11 -4
  644. package/dist/planner/title.d.ts +15 -0
  645. package/dist/planner/title.js +21 -0
  646. package/dist/planner/title.svelte.d.ts +6 -0
  647. package/dist/planner/title.svelte.js +11 -0
  648. package/dist/planner/types.d.ts +39 -7
  649. package/dist/products/media.d.ts +20 -0
  650. package/dist/products/media.js +65 -0
  651. package/dist/recipes/help/descriptions.json +1 -3
  652. package/dist/recipes/index.d.ts +2 -0
  653. package/dist/recipes/index.js +6 -0
  654. package/dist/recipes/plumbing.d.ts +35 -1
  655. package/dist/recipes/plumbing.js +74 -0
  656. package/dist/screens/definition.d.ts +35 -0
  657. package/dist/screens/definition.js +132 -0
  658. package/dist/screens/relations.d.ts +17 -0
  659. package/dist/screens/relations.js +98 -0
  660. package/dist/screens/totals.d.ts +37 -0
  661. package/dist/screens/totals.js +65 -0
  662. package/dist/sections/info.d.ts +1 -1
  663. package/dist/sections/info.js +2 -2
  664. package/dist/settings/app-settings.d.ts +17 -1
  665. package/dist/settings/app-settings.js +40 -3
  666. package/dist/smrt-version.d.ts +2 -0
  667. package/dist/smrt-version.js +4 -0
  668. package/dist/styles/planner-forms.css +53 -0
  669. package/dist/styles/planner-lists.css +43 -0
  670. package/dist/theme/css-highlight.d.ts +6 -0
  671. package/dist/theme/css-highlight.js +34 -0
  672. package/dist/theme/custom-css.svelte.d.ts +34 -0
  673. package/dist/theme/custom-css.svelte.js +246 -0
  674. package/dist/theme/runtime.js +25 -5
  675. package/dist/theme/theme.d.ts +26 -3
  676. package/dist/theme/theme.js +70 -2
  677. package/dist/upstream/overlay.d.ts +14 -5
  678. package/dist/upstream/overlay.js +20 -2
  679. package/package.json +12 -6
  680. package/app/_app/immutable/assets/0.B5zXkXe_.css +0 -1
  681. package/app/_app/immutable/assets/10.hpcnxvK1.css +0 -1
  682. package/app/_app/immutable/assets/11.D7zoXfVV.css +0 -1
  683. package/app/_app/immutable/assets/12.CPobm1ED.css +0 -1
  684. package/app/_app/immutable/assets/2.CyaWdRdI.css +0 -1
  685. package/app/_app/immutable/assets/3.BlPQOes8.css +0 -1
  686. package/app/_app/immutable/assets/8.2gQeKBp_.css +0 -1
  687. package/app/_app/immutable/assets/9.HOPT4xtg.css +0 -1
  688. package/app/_app/immutable/assets/AiSetup.Cb22AigN.css +0 -1
  689. package/app/_app/immutable/assets/Button.DkP0qkG9.css +0 -1
  690. package/app/_app/immutable/assets/ConnectTools.BgIJOOGW.css +0 -1
  691. package/app/_app/immutable/assets/FieldMapForm.BCU-4pO4.css +0 -1
  692. package/app/_app/immutable/assets/ModelPage.Dd3LcMta.css +0 -1
  693. package/app/_app/immutable/assets/SectionActions.CTkVuNMF.css +0 -1
  694. package/app/_app/immutable/assets/SectionIcons.5Udq9vN-.css +0 -1
  695. package/app/_app/immutable/assets/SegmentedControl.B8SrQacd.css +0 -1
  696. package/app/_app/immutable/assets/dist.C5nHBk_O.css +0 -1
  697. package/app/_app/immutable/assets/feedback.BVKAwFck.css +0 -1
  698. package/app/_app/immutable/assets/forms.BChZ2RWM.css +0 -1
  699. package/app/_app/immutable/assets/percent.LH0z-ozZ.css +0 -1
  700. package/app/_app/immutable/assets/store.CGDwHkkF.css +0 -1
  701. package/app/_app/immutable/assets/ui.B1A1Zl2p.css +0 -1
  702. package/app/_app/immutable/assets/workspace.BIMkuZDb.css +0 -1
  703. package/app/_app/immutable/chunks/1okeBSoq.js +0 -1
  704. package/app/_app/immutable/chunks/2jFBkS1C.js +0 -1
  705. package/app/_app/immutable/chunks/6P9zxrzU.js +0 -1
  706. package/app/_app/immutable/chunks/B32EWqI8.js +0 -9
  707. package/app/_app/immutable/chunks/B4Kevpe0.js +0 -1
  708. package/app/_app/immutable/chunks/BKwRT_1p.js +0 -1
  709. package/app/_app/immutable/chunks/BS4h9ES-.js +0 -1
  710. package/app/_app/immutable/chunks/CMhpRMKg.js +0 -1
  711. package/app/_app/immutable/chunks/CPRHZZeW.js +0 -1
  712. package/app/_app/immutable/chunks/CRQ1Pmzr.js +0 -1
  713. package/app/_app/immutable/chunks/CWtfVMDz.js +0 -1
  714. package/app/_app/immutable/chunks/Chyo8rdT.js +0 -3
  715. package/app/_app/immutable/chunks/Ci0DUht6.js +0 -34
  716. package/app/_app/immutable/chunks/CmmuWmp6.js +0 -2
  717. package/app/_app/immutable/chunks/CrFNLK0f.js +0 -1
  718. package/app/_app/immutable/chunks/CsprTb3f.js +0 -2
  719. package/app/_app/immutable/chunks/CygC84VT.js +0 -2
  720. package/app/_app/immutable/chunks/D0VgZnk1.js +0 -1
  721. package/app/_app/immutable/chunks/DD7gpKb2.js +0 -1
  722. package/app/_app/immutable/chunks/DNRgqfTx.js +0 -1
  723. package/app/_app/immutable/chunks/DVRKjN-E.js +0 -1
  724. package/app/_app/immutable/chunks/D_J_XtJy.js +0 -846
  725. package/app/_app/immutable/chunks/Dp9GVO-9.js +0 -1
  726. package/app/_app/immutable/chunks/DqcD-WtP.js +0 -1
  727. package/app/_app/immutable/chunks/QukgIHDX.js +0 -1
  728. package/app/_app/immutable/chunks/WxSPP8QW.js +0 -4
  729. package/app/_app/immutable/chunks/Xp1g1t4n.js +0 -3
  730. package/app/_app/immutable/chunks/leQCwW2d.js +0 -1
  731. package/app/_app/immutable/chunks/p6bgzXiY.js +0 -1
  732. package/app/_app/immutable/entry/app.IZIJXhgq.js +0 -2
  733. package/app/_app/immutable/entry/start.BuaYHD1N.js +0 -1
  734. package/app/_app/immutable/nodes/0.m_U8WC7E.js +0 -10
  735. package/app/_app/immutable/nodes/1.Crw8ULhB.js +0 -1
  736. package/app/_app/immutable/nodes/10.1nQxyH9H.js +0 -4
  737. package/app/_app/immutable/nodes/11.Cw0JnQF3.js +0 -1
  738. package/app/_app/immutable/nodes/12.BIocA1aI.js +0 -1
  739. package/app/_app/immutable/nodes/2.CR5BwGnt.js +0 -17
  740. package/app/_app/immutable/nodes/3.1B56hgAG.js +0 -1
  741. package/app/_app/immutable/nodes/4.SSIC7sUh.js +0 -1
  742. package/app/_app/immutable/nodes/5.DgdwleDQ.js +0 -1
  743. package/app/_app/immutable/nodes/6.DmD9rqLU.js +0 -1
  744. package/app/_app/immutable/nodes/7.DdngsBmo.js +0 -1
  745. package/app/_app/immutable/nodes/8.D2Mszsua.js +0 -3
  746. package/app/_app/immutable/nodes/9.CLYsywul.js +0 -1
  747. package/app/m/content/Contents/index.html +0 -96
  748. package/app/m/preferences/UiPreferenceRecord/index.html +0 -96
  749. package/app/m/users/AccessRequest/index.html +0 -96
  750. package/app/m/users/ResourceGrant/index.html +0 -96
  751. package/app/m/users/UsersCliAuthRequest/index.html +0 -96
  752. package/app/m/users/UsersMagicLinkToken/index.html +0 -96
@@ -0,0 +1,255 @@
1
+ <script lang="ts">
2
+ import { Provider, tryGetAppStateContext } from '@happyvertical/smrt-svelte';
3
+ import {
4
+ ShellLayoutController,
5
+ ShellLayoutEditor,
6
+ useShellLayout,
7
+ } from '@happyvertical/smrt-svelte/workspace';
8
+ import { Tabs } from '@happyvertical/smrt-ui';
9
+ import { onMount, untrack } from 'svelte';
10
+ import CookbooksPanel from '../components/CookbooksPanel.svelte';
11
+ import ExportPanel from '../components/ExportPanel.svelte';
12
+ import FeaturesPanel from '../components/FeaturesPanel.svelte';
13
+ import RecipeCards from '../components/RecipeCards.svelte';
14
+ import SettingsPanel from '../components/SettingsPanel.svelte';
15
+ import ThemeSection from '../components/ThemeSection.svelte';
16
+ import { cookbookStore } from '../cookbook/store.svelte.js';
17
+ import { provideDataSource, tryUseDataSource } from '../data/context.js';
18
+ import { createPlannerDataSource } from '../data/planner-source.js';
19
+ import { cookbookNavGroups } from '../library/menu.js';
20
+ import { recipeState } from '../recipes/state.svelte.js';
21
+ import { PLANNER_TAB_IDS, type PlannerTabId } from './commands/index.js';
22
+ import { plannerController } from './instance.js';
23
+ import PlannerLifecycle from './PlannerLifecycle.svelte';
24
+ import { plannerTab } from './tab.svelte.js';
25
+ import type { PlannerProps } from './types.js';
26
+
27
+ /**
28
+ * The planner's customization controls alone (Cookbooks, Recipes, Theme,
29
+ * Settings, Export as tabs), for a host that owns the surrounding shell; the
30
+ * complete `Planner` mounts the same inside its own shell.
31
+ */
32
+ interface PlannerControlsProps extends PlannerProps {
33
+ /**
34
+ * `true` when the complete `Planner` renders these: its own lifecycle
35
+ * already configured the controller, persistence and inference, so the
36
+ * controls do not mount a second one.
37
+ */
38
+ managedByParent?: boolean;
39
+ }
40
+
41
+ const DEFAULT_TABS: PlannerTabId[] = [
42
+ 'cookbooks',
43
+ 'recipes',
44
+ 'theme',
45
+ 'settings',
46
+ 'export',
47
+ ];
48
+ const UNLISTED_TABS: PlannerTabId[] = ['features', 'layout'];
49
+
50
+ let {
51
+ controller = plannerController,
52
+ basePath,
53
+ inference,
54
+ layout = 'own',
55
+ persistence = 'self',
56
+ themeControls = false,
57
+ advancedStylesHref,
58
+ tabs = DEFAULT_TABS,
59
+ onready,
60
+ managedByParent = false,
61
+ }: PlannerControlsProps = $props();
62
+
63
+ // Generated views and the Cookbooks tab read sample records from a data
64
+ // source: use the host's, else make the planner's own.
65
+ if (!tryUseDataSource()) provideDataSource(createPlannerDataSource());
66
+
67
+ // smrt-svelte's inputs read the app state. Inside a host's own provider (or
68
+ // the static app's AppShell) use that; otherwise the planner brings one.
69
+ const hasAppState = tryGetAppStateContext() !== null;
70
+
71
+ const labels: Record<PlannerTabId, string> = {
72
+ cookbooks: 'Cookbooks',
73
+ recipes: 'Recipes',
74
+ features: 'Features',
75
+ layout: 'Layout',
76
+ theme: 'Theme',
77
+ settings: 'Settings',
78
+ export: 'Export',
79
+ };
80
+ const shown = $derived(tabs.filter((id) => PLANNER_TAB_IDS.includes(id)));
81
+ // Features and Layout left the default tab strip but stay reachable from
82
+ // their links, the command palette and focus commands.
83
+ const reachable = $derived<readonly PlannerTabId[]>(
84
+ tabs === DEFAULT_TABS ? [...shown, ...UNLISTED_TABS] : shown,
85
+ );
86
+ const items = $derived(shown.map((id) => ({ id, label: labels[id] })));
87
+ const active = $derived(
88
+ reachable.includes(plannerTab.active)
89
+ ? plannerTab.active
90
+ : (shown[0] ?? 'recipes'),
91
+ );
92
+
93
+ // The headless layout controller: the menu the cookbook generates, edited
94
+ // through the cookbook store, with no AppShell around.
95
+ // Fixed at mount: the two editors are different objects.
96
+ const layoutMode = untrack(() => layout);
97
+ const ownLayout =
98
+ layoutMode === 'own'
99
+ ? new ShellLayoutController({
100
+ nav: () => [],
101
+ groups: () =>
102
+ cookbookNavGroups({
103
+ recipes: recipeState.ids,
104
+ features: recipeState.features,
105
+ }),
106
+ panels: () => undefined,
107
+ layout: () => cookbookStore.layout,
108
+ editable: () => true,
109
+ commit: (next) => cookbookStore.setLayout(next),
110
+ })
111
+ : null;
112
+ const shellLayout = layoutMode === 'shell' ? useShellLayout() : null;
113
+
114
+ const select = (id: string) => {
115
+ const tab = PLANNER_TAB_IDS.find((t) => t === id);
116
+ if (tab) plannerTab.active = tab;
117
+ };
118
+
119
+ // The controller's focus -> the tab on screen, and back, each only on a
120
+ // difference, so a foreign controller and the app's own both stay in step.
121
+ onMount(() => {
122
+ const stop = controller.subscribe((snapshot) => {
123
+ const tab = snapshot.focus.tab;
124
+ if (tab && tab !== plannerTab.active) plannerTab.active = tab;
125
+ });
126
+ return stop;
127
+ });
128
+ $effect(() => {
129
+ const tab = plannerTab.active;
130
+ untrack(() => {
131
+ if (controller.snapshot().focus.tab !== tab) {
132
+ controller.run({ name: 'focus', input: { tab } });
133
+ }
134
+ });
135
+ });
136
+ </script>
137
+
138
+ {#if !managedByParent}
139
+ <PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} />
140
+ {/if}
141
+
142
+ {#snippet view()}
143
+ <div class="planner">
144
+ <Tabs tabs={items} {active} onchange={select} aria-label="Planner">
145
+ {#if reachable.includes('cookbooks')}
146
+ <div hidden={active !== 'cookbooks'}><CookbooksPanel /></div>
147
+ {/if}
148
+ {#if reachable.includes('recipes')}
149
+ <div hidden={active !== 'recipes'}><RecipeCards /></div>
150
+ {/if}
151
+ {#if reachable.includes('features')}
152
+ <div hidden={active !== 'features'}><FeaturesPanel /></div>
153
+ {/if}
154
+ {#if reachable.includes('layout')}
155
+ <div hidden={active !== 'layout'} class="pane">
156
+ <p class="meta">
157
+ Reorder, move or hide navigation entries and choose which panels show.
158
+ The layout is saved with the cookbook.
159
+ </p>
160
+ <ShellLayoutEditor controller={ownLayout ?? shellLayout ?? undefined} />
161
+ </div>
162
+ {/if}
163
+ {#if reachable.includes('theme')}
164
+ <div hidden={active !== 'theme'}><ThemeSection provider={themeControls} {advancedStylesHref} /></div>
165
+ {/if}
166
+ {#if reachable.includes('settings')}
167
+ <div hidden={active !== 'settings'}><SettingsPanel /></div>
168
+ {/if}
169
+ {#if reachable.includes('export')}
170
+ <div hidden={active !== 'export'}><ExportPanel /></div>
171
+ {/if}
172
+ </Tabs>
173
+ </div>
174
+ {/snippet}
175
+
176
+ {#if hasAppState}
177
+ {@render view()}
178
+ {:else}
179
+ <Provider>{@render view()}</Provider>
180
+ {/if}
181
+
182
+ <style>
183
+ @layer smrt.reset, smrt.structure, smrt.theme;
184
+ @layer smrt.theme {
185
+ .planner :global(.tab-panel) {
186
+ padding-top: var(--smrt-spacing-4);
187
+ }
188
+
189
+ /* The strip persists across configure-page route changes; the panel below
190
+ crossfades with the content. smrt-ui's Tabs owns the classes (`tabs-nav`
191
+ for button tabs, `tabs-links` for link tabs; one strip per Tabs). Named
192
+ only while a transition runs, as in Planner.svelte. */
193
+ :global([data-smrt-view-transition]) .planner :global(.tabs-nav),
194
+ :global([data-smrt-view-transition]) .planner :global(.tabs-links) {
195
+ view-transition-name: planner-tabs;
196
+ }
197
+
198
+ /* Phones: smrt-ui's Tabs strip scrolls sideways but shows no sign of it,
199
+ so the last tab (Export) is easy to miss. Tabs snap into place, and where
200
+ scroll-driven animations exist a fade at the trailing edge says more
201
+ follow, lifting as the strip reaches its end (an inactive timeline, a
202
+ strip that fits, leaves the fade at its initial 0). The real home for
203
+ this is smrt-ui's Tabs. */
204
+ .planner :global(.smrt-tabs__nav) {
205
+ scroll-snap-type: x proximity;
206
+ overscroll-behavior-x: contain;
207
+ }
208
+
209
+ .planner :global(.smrt-tabs__tab-button) {
210
+ scroll-snap-align: start;
211
+ }
212
+
213
+ @property --planner-tabs-fade {
214
+ syntax: '<length>';
215
+ inherits: false;
216
+ initial-value: 0rem;
217
+ }
218
+
219
+ @supports (animation-timeline: scroll()) {
220
+ .planner :global(.smrt-tabs__nav) {
221
+ mask-image: linear-gradient(
222
+ to right,
223
+ black calc(100% - var(--planner-tabs-fade)),
224
+ transparent
225
+ );
226
+ animation: planner-tabs-fade linear both;
227
+ animation-timeline: scroll(self inline);
228
+ }
229
+
230
+ @keyframes planner-tabs-fade {
231
+ from {
232
+ --planner-tabs-fade: 3rem;
233
+ }
234
+ to {
235
+ --planner-tabs-fade: 0rem;
236
+ }
237
+ }
238
+ }
239
+
240
+ .pane {
241
+ display: grid;
242
+ gap: var(--smrt-spacing-3);
243
+ }
244
+
245
+ /* `display: grid` would otherwise override the inactive pane's `hidden`. */
246
+ .pane[hidden] {
247
+ display: none;
248
+ }
249
+
250
+ .meta {
251
+ margin: 0;
252
+ color: var(--smrt-color-on-surface-variant);
253
+ }
254
+ }
255
+ </style>
@@ -0,0 +1,17 @@
1
+ import type { PlannerProps } from './types.ts';
2
+ /**
3
+ * The planner's customization controls alone (Cookbooks, Recipes, Theme,
4
+ * Settings, Export as tabs), for a host that owns the surrounding shell; the
5
+ * complete `Planner` mounts the same inside its own shell.
6
+ */
7
+ interface PlannerControlsProps extends PlannerProps {
8
+ /**
9
+ * `true` when the complete `Planner` renders these: its own lifecycle
10
+ * already configured the controller, persistence and inference, so the
11
+ * controls do not mount a second one.
12
+ */
13
+ managedByParent?: boolean;
14
+ }
15
+ declare const PlannerControls: import("svelte").Component<PlannerControlsProps, {}, "">;
16
+ type PlannerControls = ReturnType<typeof PlannerControls>;
17
+ export default PlannerControls;
@@ -0,0 +1,73 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { aiState } from '../ai/instance.js';
4
+ import { browserStorage } from '../cookbook/storage.js';
5
+ import { cookbookStore } from '../cookbook/store.svelte.js';
6
+ import { provideDataSource, tryUseDataSource } from '../data/context.js';
7
+ import { createPlannerDataSource } from '../data/planner-source.js';
8
+ import { configFromProp } from '../inference/config.js';
9
+ import { libraryState } from '../library/state.svelte.js';
10
+ import { recipeState } from '../recipes/state.svelte.js';
11
+ import { type LinkMode, setBasePath } from './app.svelte.js';
12
+ import { createPlannerAssistant } from './assistant.js';
13
+ import { plannerController, plannerRuntime } from './instance.js';
14
+ import type { PlannerProps } from './types.js';
15
+
16
+ let {
17
+ controller = plannerController,
18
+ basePath,
19
+ inference,
20
+ persistence = 'self',
21
+ onready,
22
+ links = 'path',
23
+ }: Pick<
24
+ PlannerProps,
25
+ 'controller' | 'basePath' | 'inference' | 'persistence' | 'onready'
26
+ > & {
27
+ /** `'hash'` in the complete `Planner`, whose pages are fragment routes. */
28
+ links?: LinkMode;
29
+ } = $props();
30
+
31
+ const dataSource =
32
+ tryUseDataSource() ?? provideDataSource(createPlannerDataSource());
33
+
34
+ $effect.pre(() => {
35
+ if (basePath !== undefined || links !== 'path') {
36
+ setBasePath(basePath ?? '', links);
37
+ }
38
+ });
39
+
40
+ onMount(() => {
41
+ const previous = plannerRuntime.onReplaced;
42
+ plannerRuntime.onReplaced = () => dataSource.reset?.();
43
+ if (persistence === 'self' && !cookbookStore.loaded) {
44
+ libraryState.load();
45
+ cookbookStore.hydrate('', browserStorage());
46
+ }
47
+ const assistant = inference
48
+ ? createPlannerAssistant(controller, inference)
49
+ : undefined;
50
+ // The complete Planner's own dock and AI models page read `aiState`, the
51
+ // store the static app configures from `planner.config.json`; a mount
52
+ // configures it from the prop instead (the prop wins, as documented).
53
+ if (inference) {
54
+ if ('chat' in inference) aiState.useChat(inference.chat, 'Host model');
55
+ else aiState.configure(configFromProp(inference));
56
+ aiState.hydrate(
57
+ recipeState.ids.length > 0 || recipeState.features.length > 0,
58
+ );
59
+ }
60
+ onready?.({ controller, ...(assistant ? { assistant } : {}) });
61
+ return () => {
62
+ plannerRuntime.onReplaced = previous;
63
+ };
64
+ });
65
+
66
+ $effect(() => {
67
+ if (persistence !== 'self') return;
68
+ void JSON.stringify(cookbookStore.snapshot());
69
+ cookbookStore.scheduleSave();
70
+ });
71
+ </script>
72
+
73
+ <svelte:window onpagehide={() => persistence === 'self' && cookbookStore.flush()} />
@@ -0,0 +1,9 @@
1
+ import { type LinkMode } from './app.svelte.ts';
2
+ import type { PlannerProps } from './types.ts';
3
+ type $$ComponentProps = Pick<PlannerProps, 'controller' | 'basePath' | 'inference' | 'persistence' | 'onready'> & {
4
+ /** `'hash'` in the complete `Planner`, whose pages are fragment routes. */
5
+ links?: LinkMode;
6
+ };
7
+ declare const PlannerLifecycle: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type PlannerLifecycle = ReturnType<typeof PlannerLifecycle>;
9
+ export default PlannerLifecycle;
@@ -1,6 +1,16 @@
1
- export declare function setBasePath(path: string): void;
1
+ /**
2
+ * How in-app links are written. The static app serves `/m/...` pages under
3
+ * `basePath`; the mounted `Planner` routes by URL fragment (`#/m/...`) and
4
+ * serves nothing from the host's paths, so its links are hashes and carry no
5
+ * query (the mount keeps its selection in memory).
6
+ */
7
+ export type LinkMode = 'path' | 'hash';
8
+ export declare function setBasePath(path: string, links?: LinkMode): void;
2
9
  export declare function getBasePath(): string;
3
10
  /** The query string carrying the shareable URL state (the package selection). */
4
11
  export declare function appQuery(): string;
5
- /** An in-app path (`/m/commerce/Order/`) carrying the current app state. */
12
+ /**
13
+ * An in-app path (`/m/commerce/Order/`) as a link: under the base path with
14
+ * the current app state, or, in a mounted `Planner`, as its fragment route.
15
+ */
6
16
  export declare function appHref(path: string): string;
@@ -7,8 +7,10 @@ import { selection } from "./selection.svelte.js";
7
7
  * `$app/paths`, so the planner needs no SvelteKit router to build its links.
8
8
  */
9
9
  let basePath = '';
10
- export function setBasePath(path) {
10
+ let linkMode = 'path';
11
+ export function setBasePath(path, links = 'path') {
11
12
  basePath = path.replace(/\/+$/, '');
13
+ linkMode = links;
12
14
  }
13
15
  export function getBasePath() {
14
16
  return basePath;
@@ -17,7 +19,15 @@ export function getBasePath() {
17
19
  export function appQuery() {
18
20
  return composeQuery({ packages: selection.ids });
19
21
  }
20
- /** An in-app path (`/m/commerce/Order/`) carrying the current app state. */
22
+ /**
23
+ * An in-app path (`/m/commerce/Order/`) as a link: under the base path with
24
+ * the current app state, or, in a mounted `Planner`, as its fragment route.
25
+ */
21
26
  export function appHref(path) {
22
- return `${basePath}${path}${appQuery()}`;
27
+ if (linkMode === 'hash')
28
+ return `#${path}`;
29
+ const query = appQuery();
30
+ // A path may carry its own query ("View all": `?customerId=<id>`).
31
+ const joined = query && path.includes('?') ? `${path}&${query.slice(1)}` : path + query;
32
+ return `${basePath}${joined}`;
23
33
  }
@@ -18,11 +18,13 @@ function recipeStoreOf(controller) {
18
18
  function settingsStoreOf(controller) {
19
19
  return {
20
20
  read: () => {
21
- const { currency, taxRate, paymentTerms } = controller.snapshot().settings;
21
+ const { currency, taxRate, paymentTerms, pricesIncludeTax, taxRounding } = controller.snapshot().settings;
22
22
  return {
23
23
  currency,
24
24
  taxRate: Number((taxRate / 100).toFixed(6)),
25
25
  paymentTerms,
26
+ pricesIncludeTax,
27
+ taxRounding,
26
28
  };
27
29
  },
28
30
  write: (settings) => {
@@ -34,6 +36,8 @@ function settingsStoreOf(controller) {
34
36
  ...(settings.paymentTerms
35
37
  ? { paymentTerms: settings.paymentTerms }
36
38
  : {}),
39
+ pricesIncludeTax: settings.pricesIncludeTax,
40
+ taxRounding: settings.taxRounding,
37
41
  },
38
42
  });
39
43
  },
@@ -42,7 +46,8 @@ function settingsStoreOf(controller) {
42
46
  function themeStoreOf(controller) {
43
47
  return {
44
48
  read: () => {
45
- const { preset, primary, colorScheme } = controller.snapshot().theme;
49
+ const snapshot = controller.snapshot().theme;
50
+ const { preset, primary, colorScheme } = snapshot;
46
51
  const theme = {};
47
52
  if (preset)
48
53
  theme.preset = preset;
@@ -51,6 +56,16 @@ function themeStoreOf(controller) {
51
56
  if (colorScheme !== 'system') {
52
57
  theme.colorScheme = colorScheme;
53
58
  }
59
+ if (snapshot.borderRadius) {
60
+ theme.borderRadius =
61
+ snapshot.borderRadius;
62
+ }
63
+ if (snapshot.density) {
64
+ theme.density = snapshot.density;
65
+ }
66
+ if (snapshot.contrast) {
67
+ theme.contrast = snapshot.contrast;
68
+ }
54
69
  return Object.keys(theme).length ? theme : undefined;
55
70
  },
56
71
  write: (theme) => {
@@ -65,6 +80,9 @@ function themeStoreOf(controller) {
65
80
  ...(theme.preset ? { preset: theme.preset } : {}),
66
81
  ...(theme.custom ? { primary: theme.custom.primary } : {}),
67
82
  ...(theme.colorScheme ? { colorScheme: theme.colorScheme } : {}),
83
+ ...(theme.borderRadius ? { borderRadius: theme.borderRadius } : {}),
84
+ ...(theme.density ? { density: theme.density } : {}),
85
+ ...(theme.contrast ? { contrast: theme.contrast } : {}),
68
86
  },
69
87
  });
70
88
  },
@@ -410,8 +410,9 @@ export function createPlannerAdapter(config) {
410
410
  }
411
411
  /**
412
412
  * Applying a library cookbook that sets no theme keeps the person's own look
413
- * (as the Cookbooks tab does): the preset, brand colour and colour scheme
414
- * (the font is not carried; `set_theme` has no font). Returns the patch.
413
+ * (as the Cookbooks tab does): the preset, brand colour, colour scheme,
414
+ * corner radius, density and contrast (the font is not carried). Returns
415
+ * the patch.
415
416
  */
416
417
  function themeToKeep(raw) {
417
418
  const input = raw.input;
@@ -430,6 +431,12 @@ export function createPlannerAdapter(config) {
430
431
  patch.primary = theme.custom.primary;
431
432
  if (theme.colorScheme)
432
433
  patch.colorScheme = theme.colorScheme;
434
+ if (theme.borderRadius)
435
+ patch.borderRadius = theme.borderRadius;
436
+ if (theme.density)
437
+ patch.density = theme.density;
438
+ if (theme.contrast)
439
+ patch.contrast = theme.contrast;
433
440
  return Object.keys(patch).length ? patch : undefined;
434
441
  }
435
442
  function runKeepingTheme(raw, runOptions, patch) {
@@ -2,7 +2,7 @@ import type { CommandError as EngineCommandError, CommandInputs as EngineCommand
2
2
  export { COOKBOOK_COMMANDS_VERSION as PLANNER_COMMANDS_VERSION } from '@happyvertical/smrt-core/cookbook/engine';
3
3
  export type { ExportData, RecipeChanges, RunOptions };
4
4
  /** The planner's tabs, in order. Navigation only; never part of the cookbook. */
5
- export declare const PLANNER_TAB_IDS: readonly ["cookbooks", "recipes", "features", "layout", "settings", "export"];
5
+ export declare const PLANNER_TAB_IDS: readonly ["cookbooks", "recipes", "features", "layout", "theme", "settings", "export"];
6
6
  export type PlannerTabId = (typeof PLANNER_TAB_IDS)[number];
7
7
  /** Input of each command, keyed by the command's (tool) name. */
8
8
  export interface CommandInputs extends EngineCommandInputs {
@@ -13,6 +13,7 @@ export const PLANNER_TAB_IDS = [
13
13
  'recipes',
14
14
  'features',
15
15
  'layout',
16
+ 'theme',
16
17
  'settings',
17
18
  'export',
18
19
  ];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The planner's header controls, as SVG paths for smrt-ui's `Icon` (a filled
3
+ * path in a 24x24 box, the same language as the shell's own icons).
4
+ *
5
+ * The chef's hat (a toque: three lobes over a crown and a band) is an
6
+ * original drawing, so no outside licence applies; neither smrt-ui's presets
7
+ * nor smrt-svelte's `SHELL_ICON_PATHS` have one. The export control uses
8
+ * smrt-ui's `download` preset by name (`EXPORT_ICON`).
9
+ */
10
+ export declare const CHEF_HAT_ICON = "M4 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM13 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM8 7a4 4 0 1 1 8 0a4 4 0 1 1-8 0zM6 9.5h12V15H6zM7 16.5h10a1 1 0 0 1 1 1V19a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-1.5a1 1 0 0 1 1-1z";
11
+ /** smrt-ui's preset icon for the export control. */
12
+ export declare const EXPORT_ICON = "download";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The planner's header controls, as SVG paths for smrt-ui's `Icon` (a filled
3
+ * path in a 24x24 box, the same language as the shell's own icons).
4
+ *
5
+ * The chef's hat (a toque: three lobes over a crown and a band) is an
6
+ * original drawing, so no outside licence applies; neither smrt-ui's presets
7
+ * nor smrt-svelte's `SHELL_ICON_PATHS` have one. The export control uses
8
+ * smrt-ui's `download` preset by name (`EXPORT_ICON`).
9
+ */
10
+ export const CHEF_HAT_ICON = 'M4 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM13 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM8 7a4 4 0 1 1 8 0a4 4 0 1 1-8 0zM6 9.5h12V15H6zM7 16.5h10a1 1 0 0 1 1 1V19a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-1.5a1 1 0 0 1 1-1z';
11
+ /** smrt-ui's preset icon for the export control. */
12
+ export const EXPORT_ICON = 'download';
@@ -0,0 +1,70 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import Planner from '../Planner.svelte';
4
+ import {
5
+ type CallKitchenTool,
6
+ createHostSession,
7
+ type HostPlan,
8
+ type HostSession,
9
+ } from './session.svelte.js';
10
+
11
+ /**
12
+ * The planner inside a Kitchen host (an MCP app or widget): the complete
13
+ * `Planner` over a host session that reads and writes the plan through the
14
+ * host's tools, reconnecting while the page is visible.
15
+ */
16
+ interface HostPlannerProps {
17
+ /** Calls one of the host's Kitchen tools by name with its arguments. */
18
+ callTool: CallKitchenTool;
19
+ /** A plan the host already holds, received before the first connection. */
20
+ initial?: HostPlan;
21
+ /** Called once the session is mounted, with the session to drive it. */
22
+ onready?: (session: HostSession) => void;
23
+ }
24
+
25
+ let { callTool, initial, onready }: HostPlannerProps = $props();
26
+ const session = createHostSession((name, args) => callTool(name, args));
27
+ onMount(() => {
28
+ const stop = session.mount();
29
+ if (initial) session.receive(initial);
30
+ const refresh = setInterval(() => {
31
+ const id = session.current?.planId ?? session.pendingPlanId;
32
+ if (
33
+ id &&
34
+ !session.busy &&
35
+ !session.retryable &&
36
+ document.visibilityState === 'visible'
37
+ ) {
38
+ void session.connect(id);
39
+ }
40
+ }, 1500);
41
+ try {
42
+ onready?.(session);
43
+ } catch (cause) {
44
+ session.reportError(cause);
45
+ }
46
+ return () => {
47
+ clearInterval(refresh);
48
+ stop();
49
+ };
50
+ });
51
+ </script>
52
+ {#if session.error}<p role="alert">{session.error}</p>{/if}
53
+ {#if session.preservedDraft}
54
+ <details><summary>Preserved edit</summary><textarea readonly value={JSON.stringify(session.preservedDraft, null, 2)} aria-label="Preserved cookbook edit"></textarea></details>
55
+ <button type="button" onclick={() => session.dismissPreservedDraft()}>Dismiss preserved edit</button>
56
+ {/if}
57
+ {#if session.retryable}
58
+ <button disabled={session.busy} onclick={() => session.retry()}>Retry same edit</button>
59
+ {/if}
60
+ {#if session.current}
61
+ <fieldset disabled={session.locked} aria-busy={session.busy}>
62
+ <Planner persistence="host" themeControls={true} />
63
+ </fieldset>
64
+ {:else}<p role="status">Waiting for a Kitchen plan…</p>{/if}
65
+ <style>
66
+ @layer smrt.reset, smrt.structure, smrt.theme;
67
+ @layer smrt.theme {
68
+ fieldset { border: 0; padding: 0; min-width: 0; } textarea { width: 100%; min-height: 12rem; }
69
+ }
70
+ </style>
@@ -0,0 +1,17 @@
1
+ import { type CallKitchenTool, type HostPlan, type HostSession } from './session.svelte.ts';
2
+ /**
3
+ * The planner inside a Kitchen host (an MCP app or widget): the complete
4
+ * `Planner` over a host session that reads and writes the plan through the
5
+ * host's tools, reconnecting while the page is visible.
6
+ */
7
+ interface HostPlannerProps {
8
+ /** Calls one of the host's Kitchen tools by name with its arguments. */
9
+ callTool: CallKitchenTool;
10
+ /** A plan the host already holds, received before the first connection. */
11
+ initial?: HostPlan;
12
+ /** Called once the session is mounted, with the session to drive it. */
13
+ onready?: (session: HostSession) => void;
14
+ }
15
+ declare const HostPlanner: import("svelte").Component<HostPlannerProps, {}, "">;
16
+ type HostPlanner = ReturnType<typeof HostPlanner>;
17
+ export default HostPlanner;
@@ -0,0 +1,28 @@
1
+ import type { PlanSnapshot } from '@happyvertical/smrt-core/cookbook/engine';
2
+ import type { Cookbook } from '../../cookbook/types.ts';
3
+ export interface HostPlan {
4
+ planId: string;
5
+ snapshot: PlanSnapshot;
6
+ cookbook: Cookbook;
7
+ }
8
+ export type CallKitchenTool = (name: string, args: Record<string, unknown>) => Promise<unknown>;
9
+ /** One authoritative Kitchen plan projected into the stores the existing panels read. */
10
+ export declare function createHostSession(callTool: CallKitchenTool): {
11
+ readonly current: HostPlan | null;
12
+ readonly busy: boolean;
13
+ readonly error: string;
14
+ readonly pendingPlanId: string | null;
15
+ readonly draft: Cookbook | null;
16
+ readonly preservedDraft: Cookbook | null;
17
+ dismissPreservedDraft(): void;
18
+ readonly retryable: boolean;
19
+ /** Edits wait while a request is unresolved or a preserved draft is unacknowledged. */
20
+ readonly locked: boolean;
21
+ refresh: (value: unknown) => void;
22
+ reportError(cause: unknown): void;
23
+ receive(value: unknown): void;
24
+ connect(planId: string): Promise<void>;
25
+ retry: () => Promise<void>;
26
+ mount(): () => void;
27
+ };
28
+ export type HostSession = ReturnType<typeof createHostSession>;