@happyvertical/smrt-planner 0.57.11 → 0.57.13

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 (618) hide show
  1. package/README.md +136 -0
  2. package/agents/assistant.md +49 -0
  3. package/agents/commands.md +2 -2
  4. package/agents/cookbook.md +3 -1
  5. package/agents/shell.md +9 -7
  6. package/app/404.html +21 -21
  7. package/app/_app/immutable/assets/2.D3Ee82Nk.css +1 -0
  8. package/app/_app/immutable/assets/AppShell.Y0ysizZK.css +1 -0
  9. package/app/_app/immutable/assets/{icons.BDx21rPt.css → icons.DFiHs25V.css} +1 -1
  10. package/app/_app/immutable/chunks/3dpUaAuL.js +1 -0
  11. package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
  12. package/app/_app/immutable/chunks/{C26hsvAf.js → BErRmq61.js} +1 -1
  13. package/app/_app/immutable/chunks/BFzGVZ83.js +1 -0
  14. package/app/_app/immutable/chunks/{CUhs1G9L.js → BLDa0UGj.js} +1 -1
  15. package/app/_app/immutable/chunks/BMXU0KTB.js +1 -0
  16. package/app/_app/immutable/chunks/{D-G7Teh9.js → B_D0zDev.js} +1 -1
  17. package/app/_app/immutable/chunks/{DdoIOUTJ.js → BmSVFsOo.js} +2 -2
  18. package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
  19. package/app/_app/immutable/chunks/By9nPosf.js +1 -0
  20. package/app/_app/immutable/chunks/CB9iikrD.js +4 -0
  21. package/app/_app/immutable/chunks/{DJxCUhtq.js → CBxjHrPs.js} +1 -1
  22. package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
  23. package/app/_app/immutable/chunks/{XqNh9vZm.js → COQfu_Wm.js} +1 -1
  24. package/app/_app/immutable/chunks/{Bxy7okxu.js → CQ3bytDT.js} +1 -1
  25. package/app/_app/immutable/chunks/{BA7oEUVv.js → CQOJdp0U.js} +1 -1
  26. package/app/_app/immutable/chunks/{YhY72Uhf.js → CT1UgNrl.js} +1 -1
  27. package/app/_app/immutable/chunks/{mzvl-05K.js → CrMrQCWf.js} +1 -1
  28. package/app/_app/immutable/chunks/{CMoev5sM.js → CwTLkgbW.js} +1 -1
  29. package/app/_app/immutable/chunks/{DgQFYubu.js → CyuTEXp6.js} +1 -1
  30. package/app/_app/immutable/chunks/CzqXjCHa.js +16 -0
  31. package/app/_app/immutable/chunks/DMDdJExi.js +10 -0
  32. package/app/_app/immutable/chunks/{CN11a3UB.js → DPbSjNti.js} +1 -1
  33. package/app/_app/immutable/chunks/{BpZyWfxI.js → DSKWzY3b.js} +2 -2
  34. package/app/_app/immutable/chunks/{Cv4-Km2e.js → DcYfN1RJ.js} +1 -1
  35. package/app/_app/immutable/chunks/KILEpkAY.js +26 -0
  36. package/app/_app/immutable/chunks/Uwmgg65i.js +1 -0
  37. package/app/_app/immutable/chunks/XcCBLn0p.js +2 -0
  38. package/app/_app/immutable/chunks/{CXgA0Uxg.js → aqYPhamJ.js} +1 -1
  39. package/app/_app/immutable/chunks/{BFJgNGCw.js → c4Y8im5f.js} +22 -22
  40. package/app/_app/immutable/chunks/{DnAGA0N-.js → gObjQOc6.js} +1 -1
  41. package/app/_app/immutable/chunks/{Cc_ZlCEA.js → jY83yXmZ.js} +1 -1
  42. package/app/_app/immutable/chunks/k-HWowNp.js +2 -0
  43. package/app/_app/immutable/entry/{app.C8ZDox8Z.js → app.BFvVYIAu.js} +2 -2
  44. package/app/_app/immutable/entry/start.CjnnBAhi.js +1 -0
  45. package/app/_app/immutable/nodes/0.BV0A9Ub7.js +7 -0
  46. package/app/_app/immutable/nodes/{1.BiH6Jnil.js → 1.B8lnDjjl.js} +1 -1
  47. package/app/_app/immutable/nodes/10.Dga6nV_M.js +3 -0
  48. package/app/_app/immutable/nodes/{11.DFy1XrHB.js → 11.SN8IoTqm.js} +1 -1
  49. package/app/_app/immutable/nodes/{12.1ZLx0UOF.js → 12.CmhheIVU.js} +1 -1
  50. package/app/_app/immutable/nodes/{13.XPn_VuBW.js → 13.Eh2aPgMP.js} +1 -1
  51. package/app/_app/immutable/nodes/14.ReLktgLz.js +1 -0
  52. package/app/_app/immutable/nodes/2.Dc32ZcWd.js +22 -0
  53. package/app/_app/immutable/nodes/{3.wBVp_ZTI.js → 3.CuIErDvM.js} +1 -1
  54. package/app/_app/immutable/nodes/{4.BlCuYUUW.js → 4.62S4SMa5.js} +1 -1
  55. package/app/_app/immutable/nodes/{5.CPPegUVU.js → 5.DZx2uQQp.js} +1 -1
  56. package/app/_app/immutable/nodes/{6.CJiT2vuV.js → 6.Dzh2j8Eu.js} +1 -1
  57. package/app/_app/immutable/nodes/7.BndE5mEj.js +1 -0
  58. package/app/_app/immutable/nodes/{8.CrS_Sgnk.js → 8.B79dJpLW.js} +1 -1
  59. package/app/_app/immutable/nodes/{9.DrSeLPdB.js → 9.Di1DpDGF.js} +1 -1
  60. package/app/_app/version.json +1 -1
  61. package/app/advanced-styles/index.html +24 -24
  62. package/app/ai/index.html +28 -28
  63. package/app/blueprint/index.html +22 -22
  64. package/app/cookbook/index.html +22 -22
  65. package/app/index.html +38 -40
  66. package/app/m/ads/AdDeliveryTier/index.html +27 -27
  67. package/app/m/ads/AdEvent/index.html +27 -27
  68. package/app/m/ads/AdFormat/index.html +27 -27
  69. package/app/m/ads/AdGroup/index.html +27 -27
  70. package/app/m/ads/AdVariation/index.html +27 -27
  71. package/app/m/analytics/AnalyticsDataStream/index.html +27 -27
  72. package/app/m/analytics/AnalyticsEvent/index.html +27 -27
  73. package/app/m/analytics/AnalyticsProperty/index.html +27 -27
  74. package/app/m/analytics/AnalyticsReport/index.html +27 -27
  75. package/app/m/approvals/ApprovalEvent/index.html +27 -27
  76. package/app/m/approvals/ApprovalPolicy/index.html +27 -27
  77. package/app/m/approvals/ApprovalRequest/index.html +27 -27
  78. package/app/m/assets/Asset/attachments/index.html +28 -28
  79. package/app/m/assets/Asset/index.html +27 -27
  80. package/app/m/assets/AssetAssociation/index.html +27 -27
  81. package/app/m/assets/AssetMetafield/index.html +27 -27
  82. package/app/m/assets/AssetStatus/index.html +27 -27
  83. package/app/m/assets/AssetType/index.html +27 -27
  84. package/app/m/assets/Folder/index.html +27 -27
  85. package/app/m/chat/AgentSession/index.html +27 -27
  86. package/app/m/chat/ChatMessage/index.html +27 -27
  87. package/app/m/chat/ChatParticipant/index.html +27 -27
  88. package/app/m/chat/ChatReaction/index.html +27 -27
  89. package/app/m/chat/ChatRoom/index.html +27 -27
  90. package/app/m/chat/ChatThread/index.html +27 -27
  91. package/app/m/chat/VoiceGatewayTurn/index.html +27 -27
  92. package/app/m/chat/VoiceSession/index.html +27 -27
  93. package/app/m/commerce/Agreement/index.html +27 -27
  94. package/app/m/commerce/Cart/index.html +27 -27
  95. package/app/m/commerce/Contract/index.html +27 -27
  96. package/app/m/commerce/ContractLineItem/index.html +27 -27
  97. package/app/m/commerce/Customer/index.html +27 -27
  98. package/app/m/commerce/DocumentTax/index.html +27 -27
  99. package/app/m/commerce/Estimate/index.html +27 -27
  100. package/app/m/commerce/Fulfillment/index.html +27 -27
  101. package/app/m/commerce/FulfillmentLineItem/index.html +27 -27
  102. package/app/m/commerce/HistoricalCustomerFunds/index.html +27 -27
  103. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +27 -27
  104. package/app/m/commerce/HistoricalSalesLine/index.html +27 -27
  105. package/app/m/commerce/Invoice/index.html +27 -27
  106. package/app/m/commerce/InvoiceLineItem/index.html +27 -27
  107. package/app/m/commerce/Lease/index.html +27 -27
  108. package/app/m/commerce/LicenseSale/index.html +27 -27
  109. package/app/m/commerce/Order/index.html +27 -27
  110. package/app/m/commerce/Payment/index.html +27 -27
  111. package/app/m/commerce/PaymentAllocation/index.html +27 -27
  112. package/app/m/commerce/PaymentInstrument/index.html +27 -27
  113. package/app/m/commerce/PaymentIntent/index.html +27 -27
  114. package/app/m/commerce/Payout/index.html +27 -27
  115. package/app/m/commerce/ProductionOrder/index.html +27 -27
  116. package/app/m/commerce/PurchaseContract/index.html +27 -27
  117. package/app/m/commerce/PurchaseOrder/index.html +27 -27
  118. package/app/m/commerce/SalesContract/index.html +27 -27
  119. package/app/m/commerce/SupplierQuote/index.html +27 -27
  120. package/app/m/commerce/TaxCode/index.html +27 -27
  121. package/app/m/commerce/TaxComponent/index.html +27 -27
  122. package/app/m/commerce/TaxSettings/index.html +27 -27
  123. package/app/m/commerce/TaxSummaryReport/index.html +27 -27
  124. package/app/m/commerce/TenantPaymentAccount/index.html +27 -27
  125. package/app/m/commerce/Vendor/index.html +27 -27
  126. package/app/m/commerce/WholesaleOrder/index.html +27 -27
  127. package/app/m/content/Content/index.html +27 -27
  128. package/app/m/content/ContentContribution/index.html +27 -27
  129. package/app/m/content/ContentContributionAttachment/index.html +27 -27
  130. package/app/m/content/ContentContributionRevision/index.html +27 -27
  131. package/app/m/content/ContentContributionType/index.html +27 -27
  132. package/app/m/content/ContentContributor/index.html +27 -27
  133. package/app/m/content/ContentCorrection/index.html +27 -27
  134. package/app/m/content/ContentFeedSource/index.html +27 -27
  135. package/app/m/content/ContentGovernanceAssignment/index.html +27 -27
  136. package/app/m/content/ContentGovernancePolicy/index.html +27 -27
  137. package/app/m/content/ContentGovernanceProfile/index.html +27 -27
  138. package/app/m/content/ContentReference/index.html +27 -27
  139. package/app/m/content/ContentReview/index.html +27 -27
  140. package/app/m/content/ContentVersion/index.html +27 -27
  141. package/app/m/events/Event/index.html +27 -27
  142. package/app/m/events/EventParticipant/index.html +27 -27
  143. package/app/m/events/EventSeries/index.html +27 -27
  144. package/app/m/events/EventType/index.html +27 -27
  145. package/app/m/expenses/Expense/index.html +27 -27
  146. package/app/m/facts/Fact/index.html +27 -27
  147. package/app/m/facts/FactContent/index.html +27 -27
  148. package/app/m/facts/FactEvidence/index.html +27 -27
  149. package/app/m/facts/FactSource/index.html +27 -27
  150. package/app/m/facts/FactSubject/index.html +27 -27
  151. package/app/m/facts/FactTag/index.html +27 -27
  152. package/app/m/fields/FieldPolicy/index.html +27 -27
  153. package/app/m/fields/FieldPolicySuggestion/index.html +27 -27
  154. package/app/m/fields/FieldUsageCounter/index.html +27 -27
  155. package/app/m/images/Image/index.html +27 -27
  156. package/app/m/inventory/InventoryLocation/index.html +27 -27
  157. package/app/m/inventory/StockLevel/index.html +27 -27
  158. package/app/m/inventory/StockMovement/index.html +27 -27
  159. package/app/m/ledgers/Account/index.html +27 -27
  160. package/app/m/ledgers/Journal/index.html +27 -27
  161. package/app/m/ledgers/JournalEntry/index.html +27 -27
  162. package/app/m/ledgers/Ledger/index.html +27 -27
  163. package/app/m/manufacturing/Assembly/index.html +27 -27
  164. package/app/m/manufacturing/BillOfMaterials/index.html +27 -27
  165. package/app/m/manufacturing/BomLine/index.html +27 -27
  166. package/app/m/manufacturing/Operation/index.html +27 -27
  167. package/app/m/manufacturing/ProductionRun/index.html +27 -27
  168. package/app/m/manufacturing/ProductionRunCompletion/index.html +27 -27
  169. package/app/m/manufacturing/RoutingStep/index.html +27 -27
  170. package/app/m/marketing/Campaign/index.html +27 -27
  171. package/app/m/marketing/CampaignChannel/index.html +27 -27
  172. package/app/m/marketing/CampaignMetricSnapshot/index.html +27 -27
  173. package/app/m/messages/Account/index.html +27 -27
  174. package/app/m/messages/Attachment/index.html +27 -27
  175. package/app/m/messages/Blacklist/index.html +27 -27
  176. package/app/m/messages/Email/failed-sends/index.html +28 -28
  177. package/app/m/messages/Email/index.html +27 -27
  178. package/app/m/messages/Email/mailbox/index.html +28 -28
  179. package/app/m/messages/EmailAccount/index.html +27 -27
  180. package/app/m/messages/EmailAttachment/index.html +27 -27
  181. package/app/m/messages/EmailFolder/index.html +27 -27
  182. package/app/m/messages/Message/index.html +27 -27
  183. package/app/m/messages/MessagingEndpoint/index.html +27 -27
  184. package/app/m/messages/PersonaMessageRoute/index.html +27 -27
  185. package/app/m/messages/SlackAccount/index.html +27 -27
  186. package/app/m/messages/SlackMessage/index.html +27 -27
  187. package/app/m/messages/TelegramAccount/index.html +27 -27
  188. package/app/m/messages/Tweet/index.html +27 -27
  189. package/app/m/messages/TwitterAccount/index.html +27 -27
  190. package/app/m/messages/Whitelist/index.html +27 -27
  191. package/app/m/messages/ZulipAccount/index.html +27 -27
  192. package/app/m/places/Place/index.html +27 -27
  193. package/app/m/places/PlaceType/index.html +27 -27
  194. package/app/m/products/Category/index.html +27 -27
  195. package/app/m/products/Material/index.html +27 -27
  196. package/app/m/products/Product/index.html +27 -27
  197. package/app/m/products/Product/ingredients/index.html +28 -28
  198. package/app/m/products/ProductVariant/index.html +27 -27
  199. package/app/m/products/Sku/index.html +27 -27
  200. package/app/m/profiles/ApiKey/index.html +27 -27
  201. package/app/m/profiles/Bot/index.html +27 -27
  202. package/app/m/profiles/MagicLinkToken/index.html +27 -27
  203. package/app/m/profiles/NostrIdentity/index.html +27 -27
  204. package/app/m/profiles/OidcIdentity/index.html +27 -27
  205. package/app/m/profiles/Organization/index.html +27 -27
  206. package/app/m/profiles/Person/index.html +27 -27
  207. package/app/m/profiles/Profile/index.html +27 -27
  208. package/app/m/profiles/ProfileMetadata/index.html +27 -27
  209. package/app/m/profiles/ProfileMetafield/index.html +27 -27
  210. package/app/m/profiles/ProfileRelationship/index.html +27 -27
  211. package/app/m/profiles/ProfileRelationshipTerm/index.html +27 -27
  212. package/app/m/profiles/ProfileRelationshipType/index.html +27 -27
  213. package/app/m/profiles/ProfileType/index.html +27 -27
  214. package/app/m/projects/Comment/index.html +27 -27
  215. package/app/m/projects/Issue/index.html +27 -27
  216. package/app/m/projects/Label/index.html +27 -27
  217. package/app/m/projects/Project/index.html +27 -27
  218. package/app/m/projects/ProjectIntegration/index.html +27 -27
  219. package/app/m/projects/PullRequest/index.html +27 -27
  220. package/app/m/projects/Repository/index.html +27 -27
  221. package/app/m/properties/Property/index.html +27 -27
  222. package/app/m/properties/Zone/index.html +27 -27
  223. package/app/m/reports/RuntimeReport/index.html +27 -27
  224. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +27 -27
  225. package/app/m/reports/SmrtReportLock/index.html +27 -27
  226. package/app/m/reports/SmrtReportRefreshTask/index.html +27 -27
  227. package/app/m/reports/SmrtReportRun/index.html +27 -27
  228. package/app/m/reports/SmrtReportSchedule/index.html +27 -27
  229. package/app/m/reports/SmrtReportWatermark/index.html +27 -27
  230. package/app/m/sales/Agreement/index.html +27 -27
  231. package/app/m/sales/AttributionException/index.html +27 -27
  232. package/app/m/sales/AttributionPolicy/index.html +27 -27
  233. package/app/m/sales/Commission/index.html +27 -27
  234. package/app/m/sales/CommissionAdjustment/index.html +27 -27
  235. package/app/m/sales/CommissionPayout/index.html +27 -27
  236. package/app/m/sales/CommissionPlan/index.html +27 -27
  237. package/app/m/sales/Earner/index.html +27 -27
  238. package/app/m/sales/EarnerSourceAttribution/index.html +27 -27
  239. package/app/m/sales/EarningEvent/index.html +27 -27
  240. package/app/m/sales/ExecutedAgreement/index.html +27 -27
  241. package/app/m/sales/Lead/index.html +27 -27
  242. package/app/m/sales/Opportunity/index.html +27 -27
  243. package/app/m/sales/OpportunityConversion/index.html +27 -27
  244. package/app/m/sales/PipelineDefinition/index.html +27 -27
  245. package/app/m/sales/PipelineStage/index.html +27 -27
  246. package/app/m/sales/Referral/index.html +27 -27
  247. package/app/m/sales/ReferralAgreement/index.html +27 -27
  248. package/app/m/sales/ReferralLink/index.html +27 -27
  249. package/app/m/sales/ReferralProgram/index.html +27 -27
  250. package/app/m/sales/ReferralTermSnapshot/index.html +27 -27
  251. package/app/m/sales/ReferralTouch/index.html +27 -27
  252. package/app/m/sales/Referrer/index.html +27 -27
  253. package/app/m/sales/SalesActivity/index.html +27 -27
  254. package/app/m/sales/SalesRepresentative/index.html +27 -27
  255. package/app/m/sites/Site/index.html +27 -27
  256. package/app/m/sites/SiteAgentBinding/index.html +27 -27
  257. package/app/m/social/OAuthState/index.html +27 -27
  258. package/app/m/social/SocialAccount/index.html +27 -27
  259. package/app/m/social/SocialPost/index.html +27 -27
  260. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +27 -27
  261. package/app/m/subscriptions/BillingAdjustment/index.html +27 -27
  262. package/app/m/subscriptions/ClientCharge/index.html +27 -27
  263. package/app/m/subscriptions/CreditGrant/index.html +27 -27
  264. package/app/m/subscriptions/PricingRule/index.html +27 -27
  265. package/app/m/subscriptions/RetailCharge/index.html +27 -27
  266. package/app/m/subscriptions/SpendingPolicy/index.html +27 -27
  267. package/app/m/subscriptions/SubscriptionPlan/index.html +27 -27
  268. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +27 -27
  269. package/app/m/subscriptions/TenantSubscription/index.html +27 -27
  270. package/app/m/subscriptions/TenantUsageMetric/index.html +27 -27
  271. package/app/m/support/ServiceTimeEntry/index.html +27 -27
  272. package/app/m/support/SupportAiRun/index.html +27 -27
  273. package/app/m/support/SupportAvailability/index.html +27 -27
  274. package/app/m/support/SupportCase/index.html +27 -27
  275. package/app/m/support/SupportCaseEvent/index.html +27 -27
  276. package/app/m/support/SupportChannelBinding/index.html +27 -27
  277. package/app/m/support/SupportCharge/index.html +27 -27
  278. package/app/m/support/SupportCompensation/index.html +27 -27
  279. package/app/m/support/SupportCompensationPlan/index.html +27 -27
  280. package/app/m/support/SupportEscalation/index.html +27 -27
  281. package/app/m/support/SupportInteraction/index.html +27 -27
  282. package/app/m/support/SupportPlan/index.html +27 -27
  283. package/app/m/support/SupportPolicy/index.html +27 -27
  284. package/app/m/support/SupportQualification/index.html +27 -27
  285. package/app/m/support/SupportServiceTarget/index.html +27 -27
  286. package/app/m/support/SupportSpecialist/index.html +27 -27
  287. package/app/m/support/SupportWorkLink/index.html +27 -27
  288. package/app/m/tags/Tag/index.html +27 -27
  289. package/app/m/tags/TagAlias/index.html +27 -27
  290. package/app/m/timesheets/AttendanceBreak/index.html +27 -27
  291. package/app/m/timesheets/AttendancePunch/index.html +27 -27
  292. package/app/m/timesheets/AttendanceSegment/index.html +27 -27
  293. package/app/m/timesheets/ServiceChargeSnapshot/index.html +27 -27
  294. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +27 -27
  295. package/app/m/timesheets/ServiceTimeEntry/index.html +27 -27
  296. package/app/m/users/Group/index.html +27 -27
  297. package/app/m/users/GroupMember/index.html +27 -27
  298. package/app/m/users/GroupRole/index.html +27 -27
  299. package/app/m/users/Membership/index.html +27 -27
  300. package/app/m/users/MembershipOverride/index.html +27 -27
  301. package/app/m/users/Permission/index.html +27 -27
  302. package/app/m/users/Role/index.html +27 -27
  303. package/app/m/users/RolePermission/index.html +27 -27
  304. package/app/m/users/Session/index.html +27 -27
  305. package/app/m/users/Tenant/index.html +27 -27
  306. package/app/m/users/TenantIntegration/index.html +27 -27
  307. package/app/m/users/TenantPermissionOverride/index.html +27 -27
  308. package/app/m/users/User/index.html +27 -27
  309. package/app/m/video/Character/index.html +27 -27
  310. package/app/m/video/CharacterAsset/index.html +27 -27
  311. package/app/m/video/CompositeJob/index.html +27 -27
  312. package/app/m/video/Performer/index.html +27 -27
  313. package/app/m/video/PerformerAsset/index.html +27 -27
  314. package/app/m/video/Scene/index.html +27 -27
  315. package/app/m/video/SceneAsset/index.html +27 -27
  316. package/app/m/video/VideoComposition/index.html +27 -27
  317. package/app/m/video/VideoCompositionAsset/index.html +27 -27
  318. package/app/m/video/VideoSequence/index.html +27 -27
  319. package/app/m/video/VideoSequenceAsset/index.html +27 -27
  320. package/app/m/video/VideoShot/index.html +27 -27
  321. package/app/m/video/VideoShotAsset/index.html +27 -27
  322. package/app/m/video/VideoShotCharacter/index.html +27 -27
  323. package/app/m/video/VideoWorkflow/index.html +27 -27
  324. package/app/m/voice/VoiceOutput/index.html +27 -27
  325. package/app/m/voice/VoiceProfile/index.html +27 -27
  326. package/app/m/voice/VoiceSample/index.html +27 -27
  327. package/app/mcp.html +2 -2
  328. package/app/packages/ads/index.html +24 -24
  329. package/app/packages/analytics/index.html +24 -24
  330. package/app/packages/approvals/index.html +24 -24
  331. package/app/packages/assets/index.html +24 -24
  332. package/app/packages/chat/index.html +24 -24
  333. package/app/packages/comments/index.html +24 -24
  334. package/app/packages/commerce/index.html +24 -24
  335. package/app/packages/content/index.html +24 -24
  336. package/app/packages/events/index.html +24 -24
  337. package/app/packages/expenses/index.html +24 -24
  338. package/app/packages/facts/index.html +24 -24
  339. package/app/packages/fields/index.html +24 -24
  340. package/app/packages/human-resources/index.html +24 -24
  341. package/app/packages/images/index.html +24 -24
  342. package/app/packages/index.html +23 -23
  343. package/app/packages/ingestion/index.html +24 -24
  344. package/app/packages/inventory/index.html +24 -24
  345. package/app/packages/ledgers/index.html +24 -24
  346. package/app/packages/manufacturing/index.html +24 -24
  347. package/app/packages/marketing/index.html +24 -24
  348. package/app/packages/messages/index.html +24 -24
  349. package/app/packages/places/index.html +24 -24
  350. package/app/packages/preferences/index.html +24 -24
  351. package/app/packages/products/index.html +24 -24
  352. package/app/packages/profiles/index.html +24 -24
  353. package/app/packages/projects/index.html +24 -24
  354. package/app/packages/properties/index.html +24 -24
  355. package/app/packages/reports/index.html +24 -24
  356. package/app/packages/sales/index.html +24 -24
  357. package/app/packages/sites/index.html +24 -24
  358. package/app/packages/social/index.html +24 -24
  359. package/app/packages/subscriptions/index.html +24 -24
  360. package/app/packages/support/index.html +24 -24
  361. package/app/packages/tags/index.html +24 -24
  362. package/app/packages/timesheets/index.html +24 -24
  363. package/app/packages/users/index.html +24 -24
  364. package/app/packages/video/index.html +24 -24
  365. package/app/packages/voice/index.html +24 -24
  366. package/app/packages/webhooks/index.html +24 -24
  367. package/app/recipes/account-access/help/index.html +24 -24
  368. package/app/recipes/account-access/index.html +26 -26
  369. package/app/recipes/activity/help/index.html +24 -24
  370. package/app/recipes/activity/index.html +26 -26
  371. package/app/recipes/agreements/help/index.html +24 -24
  372. package/app/recipes/agreements/index.html +26 -26
  373. package/app/recipes/analytics.reports/help/index.html +24 -24
  374. package/app/recipes/analytics.reports/index.html +26 -26
  375. package/app/recipes/assets/help/index.html +24 -24
  376. package/app/recipes/assets/index.html +26 -26
  377. package/app/recipes/billing/help/index.html +24 -24
  378. package/app/recipes/billing/index.html +26 -26
  379. package/app/recipes/chat.assistant/help/index.html +24 -24
  380. package/app/recipes/chat.assistant/index.html +26 -26
  381. package/app/recipes/comments/help/index.html +24 -24
  382. package/app/recipes/comments/index.html +26 -26
  383. package/app/recipes/commerce.customers/help/index.html +24 -24
  384. package/app/recipes/commerce.customers/index.html +26 -26
  385. package/app/recipes/commerce.estimates/help/index.html +24 -24
  386. package/app/recipes/commerce.estimates/index.html +26 -26
  387. package/app/recipes/commerce.purchases/help/index.html +24 -24
  388. package/app/recipes/commerce.purchases/index.html +26 -26
  389. package/app/recipes/commerce.sales/help/index.html +24 -24
  390. package/app/recipes/commerce.sales/index.html +26 -26
  391. package/app/recipes/commerce.vendors/help/index.html +24 -24
  392. package/app/recipes/commerce.vendors/index.html +26 -26
  393. package/app/recipes/commerce.wholesale/help/index.html +24 -24
  394. package/app/recipes/commerce.wholesale/index.html +26 -26
  395. package/app/recipes/events.calendar/help/index.html +24 -24
  396. package/app/recipes/events.calendar/index.html +26 -26
  397. package/app/recipes/expenses.tracking/help/index.html +24 -24
  398. package/app/recipes/expenses.tracking/index.html +26 -26
  399. package/app/recipes/fields.form-customization/help/index.html +24 -24
  400. package/app/recipes/fields.form-customization/index.html +26 -26
  401. package/app/recipes/ingestion/help/index.html +24 -24
  402. package/app/recipes/ingestion/index.html +26 -26
  403. package/app/recipes/integrations/help/index.html +24 -24
  404. package/app/recipes/integrations/index.html +26 -26
  405. package/app/recipes/inventory.stock/help/index.html +24 -24
  406. package/app/recipes/inventory.stock/index.html +26 -26
  407. package/app/recipes/ledgers.bookkeeping/help/index.html +24 -24
  408. package/app/recipes/ledgers.bookkeeping/index.html +26 -26
  409. package/app/recipes/messages/help/index.html +24 -24
  410. package/app/recipes/messages/index.html +26 -26
  411. package/app/recipes/products/help/index.html +24 -24
  412. package/app/recipes/products/index.html +26 -26
  413. package/app/recipes/projects.tracker/help/index.html +24 -24
  414. package/app/recipes/projects.tracker/index.html +26 -26
  415. package/app/recipes/reports.materialized/help/index.html +24 -24
  416. package/app/recipes/reports.materialized/index.html +26 -26
  417. package/app/recipes/reports.runtime/help/index.html +24 -24
  418. package/app/recipes/reports.runtime/index.html +26 -26
  419. package/app/recipes/sales.pipeline/help/index.html +24 -24
  420. package/app/recipes/sales.pipeline/index.html +26 -26
  421. package/app/recipes/tags.taxonomy/help/index.html +24 -24
  422. package/app/recipes/tags.taxonomy/index.html +26 -26
  423. package/app/recipes/team-collaboration/help/index.html +24 -24
  424. package/app/recipes/team-collaboration/index.html +26 -26
  425. package/app/recipes/timesheets.time-entries/help/index.html +24 -24
  426. package/app/recipes/timesheets.time-entries/index.html +26 -26
  427. package/app/s/custom-accounts/index.html +23 -23
  428. package/app/s/custom-appointments/index.html +23 -23
  429. package/app/s/custom-billing/index.html +23 -23
  430. package/app/s/custom-bookings/index.html +23 -23
  431. package/app/s/custom-buying/index.html +23 -23
  432. package/app/s/custom-checkout/index.html +23 -23
  433. package/app/s/custom-classes/index.html +23 -23
  434. package/app/s/custom-clients/index.html +23 -23
  435. package/app/s/custom-events/index.html +23 -23
  436. package/app/s/custom-fleet/index.html +23 -23
  437. package/app/s/custom-gigs/index.html +23 -23
  438. package/app/s/custom-giving/index.html +23 -23
  439. package/app/s/custom-instruments/index.html +23 -23
  440. package/app/s/custom-jobs/index.html +23 -23
  441. package/app/s/custom-kitchen/index.html +23 -23
  442. package/app/s/custom-lessons/index.html +23 -23
  443. package/app/s/custom-material/index.html +23 -23
  444. package/app/s/custom-meetings/index.html +23 -23
  445. package/app/s/custom-members/index.html +23 -23
  446. package/app/s/custom-merch/index.html +23 -23
  447. package/app/s/custom-money/index.html +23 -23
  448. package/app/s/custom-paint/index.html +23 -23
  449. package/app/s/custom-parts/index.html +23 -23
  450. package/app/s/custom-rentals/index.html +23 -23
  451. package/app/s/custom-roastery/index.html +23 -23
  452. package/app/s/custom-schedule/index.html +23 -23
  453. package/app/s/custom-shelf/index.html +23 -23
  454. package/app/s/custom-shop/index.html +23 -23
  455. package/app/s/custom-students/index.html +23 -23
  456. package/app/s/custom-wholesale/index.html +23 -23
  457. package/app/s/custom-work/index.html +23 -23
  458. package/app/s/custom-yard/index.html +23 -23
  459. package/app/s/section-access-control/index.html +23 -23
  460. package/app/s/section-account-security/index.html +23 -23
  461. package/app/s/section-accounting/index.html +23 -23
  462. package/app/s/section-activity/index.html +23 -23
  463. package/app/s/section-agreements/index.html +23 -23
  464. package/app/s/section-analytics/index.html +23 -23
  465. package/app/s/section-assets/index.html +23 -23
  466. package/app/s/section-billing/index.html +23 -23
  467. package/app/s/section-calendar/index.html +23 -23
  468. package/app/s/section-catalog/index.html +23 -23
  469. package/app/s/section-chat.assistant/index.html +23 -23
  470. package/app/s/section-comments/index.html +23 -23
  471. package/app/s/section-fields.form-customization/index.html +23 -23
  472. package/app/s/section-ingestion/index.html +23 -23
  473. package/app/s/section-integrations/index.html +23 -23
  474. package/app/s/section-messages/index.html +23 -23
  475. package/app/s/section-more/index.html +23 -23
  476. package/app/s/section-operations/index.html +23 -23
  477. package/app/s/section-projects/index.html +23 -23
  478. package/app/s/section-purchasing/index.html +23 -23
  479. package/app/s/section-reports.materialized/index.html +23 -23
  480. package/app/s/section-reports.runtime/index.html +23 -23
  481. package/app/s/section-sales/index.html +23 -23
  482. package/app/s/section-taxonomy/index.html +23 -23
  483. package/app/s/section-team/index.html +23 -23
  484. package/app/s/section-work/index.html +23 -23
  485. package/dist/ai/instance.d.ts.map +1 -1
  486. package/dist/ai/instance.js +2 -0
  487. package/dist/assistant/change.d.ts +2 -0
  488. package/dist/assistant/change.d.ts.map +1 -1
  489. package/dist/assistant/change.js +5 -0
  490. package/dist/assistant/coaching.d.ts +7 -0
  491. package/dist/assistant/coaching.d.ts.map +1 -0
  492. package/dist/assistant/coaching.js +42 -0
  493. package/dist/assistant/prompt.d.ts.map +1 -1
  494. package/dist/assistant/prompt.js +1 -0
  495. package/dist/assistant/session.svelte.d.ts +4 -1
  496. package/dist/assistant/session.svelte.d.ts.map +1 -1
  497. package/dist/assistant/session.svelte.js +5 -1
  498. package/dist/assistant/starters.d.ts +7 -0
  499. package/dist/assistant/starters.d.ts.map +1 -0
  500. package/dist/assistant/starters.js +33 -0
  501. package/dist/assistant/transport.d.ts +37 -2
  502. package/dist/assistant/transport.d.ts.map +1 -1
  503. package/dist/assistant/transport.js +257 -56
  504. package/dist/catalog/catalog.json +38 -38
  505. package/dist/components/BrowserAssistant.svelte +20 -0
  506. package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
  507. package/dist/components/ExportPanel.svelte +176 -118
  508. package/dist/components/ExportPanel.svelte.d.ts +8 -0
  509. package/dist/components/ExportPanel.svelte.d.ts.map +1 -1
  510. package/dist/components/HeaderIconLink.svelte +8 -0
  511. package/dist/components/HeaderIconLink.svelte.d.ts +1 -0
  512. package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
  513. package/dist/components/ProjectControls.svelte +133 -0
  514. package/dist/components/ProjectControls.svelte.d.ts +15 -0
  515. package/dist/components/ProjectControls.svelte.d.ts.map +1 -0
  516. package/dist/components/SectionOverview.svelte +4 -5
  517. package/dist/components/SectionOverview.svelte.d.ts +1 -1
  518. package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
  519. package/dist/components/SettingsPanel.svelte +37 -1
  520. package/dist/components/SettingsPanel.svelte.d.ts +7 -1
  521. package/dist/components/SettingsPanel.svelte.d.ts.map +1 -1
  522. package/dist/cookbook/file.d.ts +5 -0
  523. package/dist/cookbook/file.d.ts.map +1 -1
  524. package/dist/cookbook/file.js +9 -2
  525. package/dist/cookbook/store.svelte.d.ts +4 -1
  526. package/dist/cookbook/store.svelte.d.ts.map +1 -1
  527. package/dist/cookbook/store.svelte.js +9 -10
  528. package/dist/core/index.d.ts +1 -0
  529. package/dist/core/index.d.ts.map +1 -1
  530. package/dist/core/index.js +1 -0
  531. package/dist/core/prompt.d.ts.map +1 -1
  532. package/dist/core/prompt.js +10 -0
  533. package/dist/core/reply.d.ts +2 -0
  534. package/dist/core/reply.d.ts.map +1 -1
  535. package/dist/core/reply.js +4 -0
  536. package/dist/data/packs.d.ts.map +1 -1
  537. package/dist/data/packs.js +14 -7
  538. package/dist/data/planner-source.d.ts.map +1 -1
  539. package/dist/data/planner-source.js +4 -3
  540. package/dist/data/sample-context.d.ts +84 -0
  541. package/dist/data/sample-context.d.ts.map +1 -0
  542. package/dist/data/sample-context.js +106 -0
  543. package/dist/data/source.d.ts.map +1 -1
  544. package/dist/data/source.js +2 -0
  545. package/dist/index.d.ts +8 -1
  546. package/dist/index.d.ts.map +1 -1
  547. package/dist/index.js +3 -0
  548. package/dist/library/state.svelte.d.ts.map +1 -1
  549. package/dist/library/state.svelte.js +3 -3
  550. package/dist/overviews/definitions.d.ts +2 -2
  551. package/dist/overviews/definitions.d.ts.map +1 -1
  552. package/dist/overviews/definitions.js +19 -31
  553. package/dist/overviews/page.d.ts.map +1 -1
  554. package/dist/overviews/page.js +4 -1
  555. package/dist/overviews/registry.d.ts +1 -1
  556. package/dist/overviews/registry.js +3 -3
  557. package/dist/overviews/validate.d.ts.map +1 -1
  558. package/dist/overviews/validate.js +15 -2
  559. package/dist/planner/Planner.svelte +46 -4
  560. package/dist/planner/Planner.svelte.d.ts.map +1 -1
  561. package/dist/planner/PlannerControls.svelte +18 -2
  562. package/dist/planner/PlannerControls.svelte.d.ts +2 -0
  563. package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
  564. package/dist/planner/PlannerHostAction.svelte +61 -0
  565. package/dist/planner/PlannerHostAction.svelte.d.ts +12 -0
  566. package/dist/planner/PlannerHostAction.svelte.d.ts.map +1 -0
  567. package/dist/planner/PlannerLifecycle.svelte +75 -5
  568. package/dist/planner/PlannerLifecycle.svelte.d.ts +2 -1
  569. package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
  570. package/dist/planner/bridge.d.ts +73 -0
  571. package/dist/planner/bridge.d.ts.map +1 -0
  572. package/dist/planner/bridge.js +303 -0
  573. package/dist/planner/commands/adapter.d.ts +2 -0
  574. package/dist/planner/commands/adapter.d.ts.map +1 -1
  575. package/dist/planner/commands/adapter.js +19 -0
  576. package/dist/planner/export-context.d.ts +6 -0
  577. package/dist/planner/export-context.d.ts.map +1 -0
  578. package/dist/planner/export-context.js +14 -0
  579. package/dist/planner/guide.d.ts +69 -0
  580. package/dist/planner/guide.d.ts.map +1 -0
  581. package/dist/planner/guide.js +115 -0
  582. package/dist/planner/host-reply.d.ts +22 -0
  583. package/dist/planner/host-reply.d.ts.map +1 -0
  584. package/dist/planner/host-reply.js +71 -0
  585. package/dist/planner/shell.d.ts +6 -0
  586. package/dist/planner/shell.d.ts.map +1 -1
  587. package/dist/planner/shell.js +2 -0
  588. package/dist/planner/types.d.ts +39 -1
  589. package/dist/planner/types.d.ts.map +1 -1
  590. package/dist/planner/workspace-storage.d.ts +29 -0
  591. package/dist/planner/workspace-storage.d.ts.map +1 -0
  592. package/dist/planner/workspace-storage.js +355 -0
  593. package/dist/planner/workspace.svelte.d.ts +19 -0
  594. package/dist/planner/workspace.svelte.d.ts.map +1 -0
  595. package/dist/planner/workspace.svelte.js +52 -0
  596. package/dist/smrt-version.d.ts +1 -1
  597. package/dist/smrt-version.js +1 -1
  598. package/package.json +54 -54
  599. package/app/_app/immutable/assets/2.CdEXvRg0.css +0 -1
  600. package/app/_app/immutable/assets/AppShell.BkKNrxND.css +0 -1
  601. package/app/_app/immutable/chunks/B2hfN2VL.js +0 -10
  602. package/app/_app/immutable/chunks/BFBrKYIZ.js +0 -26
  603. package/app/_app/immutable/chunks/BPIRT1pR.js +0 -4
  604. package/app/_app/immutable/chunks/Cq7I_-C0.js +0 -1
  605. package/app/_app/immutable/chunks/Cye6FWwy.js +0 -1
  606. package/app/_app/immutable/chunks/D0ibYqDu.js +0 -2
  607. package/app/_app/immutable/chunks/D71UrO5c.js +0 -1
  608. package/app/_app/immutable/chunks/DF-0MxNw.js +0 -1
  609. package/app/_app/immutable/chunks/DN0-Cx7Y.js +0 -1
  610. package/app/_app/immutable/chunks/DS1ApqxJ.js +0 -16
  611. package/app/_app/immutable/chunks/DSxP4IQt.js +0 -1
  612. package/app/_app/immutable/chunks/Dx1VzWCD.js +0 -2
  613. package/app/_app/immutable/entry/start.Dg2NiCvD.js +0 -1
  614. package/app/_app/immutable/nodes/0.DE5huPD8.js +0 -7
  615. package/app/_app/immutable/nodes/10.C_KB8ejn.js +0 -3
  616. package/app/_app/immutable/nodes/14.Ercp5Yal.js +0 -1
  617. package/app/_app/immutable/nodes/2.D_BYCG3U.js +0 -24
  618. package/app/_app/immutable/nodes/7.-bKoHvi1.js +0 -1
package/README.md CHANGED
@@ -259,3 +259,139 @@ the root `CHANGESETS.md`); it is never published on its own.
259
259
  ## License
260
260
 
261
261
  MIT © Happy Vertical Corporation
262
+
263
+ ### Native host context and Export actions
264
+
265
+ A mounted complete `Planner` can retain an earlier conversation and add its
266
+ host's first Export action while keeping the native cookbook download:
267
+
268
+ ```svelte
269
+ <Planner
270
+ inference={{ mode: 'host', host: { endpoint: '/api/planner/chat' } }}
271
+ initialConversation={{
272
+ id: 'stable-handoff-id',
273
+ messages: [{ role: 'user', content: 'I run a repair workshop.' }],
274
+ }}
275
+ cookbookOffers={false}
276
+ exportAction={{
277
+ label: 'Continue with this app',
278
+ run: async ({ export: file, revision, conversation }) => {
279
+ // file is the existing ExportData: fileName, exact text, full cookbook.
280
+ // Store/submit the detached context according to your host's policy.
281
+ await savePlan({ file, revision, conversation });
282
+ },
283
+ }}
284
+ onready={({ nativeAssistant }) => {
285
+ // The same transport the visible native dock uses, not `assistant`.
286
+ nativeAssistant?.subscribeConversation((messages) => remember(messages));
287
+ }}
288
+ />
289
+ ```
290
+
291
+ `onready.openAssistant()` opens and focuses the ready native dock using the
292
+ shell API and returns false if the dock/model is unavailable. It waits a Svelte
293
+ tick so shell registration can settle; seeding alone never opens the dock.
294
+
295
+ `onready.nativeAssistant` exposes `conversation()` (a detached full current
296
+ thread), `subscribeConversation(listener)` (immediate snapshot; returns an
297
+ unsubscribe), `busy`, `seed({ id, messages })`, and the existing chat transport
298
+ methods. The legacy `onready.assistant` remains a separate host-driven assistant;
299
+ it is not a way to read the visible native dock's messages.
300
+
301
+ Seed accepts only plain user/assistant text. It appends the complete input in
302
+ one notification, never executes it, and returns false for a repeated id,
303
+ malformed input, an in-flight turn or a thread that has already received native
304
+ sends. Supply `initialConversation` before opening the native dock; seeding is
305
+ not a way to replace an active conversation. The host retains the original
306
+ transcript separately when original message identities/provenance matter.
307
+
308
+ `headerAction={{ label, run }}` adds a primary button to the complete Planner header.
309
+ It uses the same capture and busy/error safeguards as `exportAction`; hosts may
310
+ pass the same callback to both entry points. The Export shortcut and native
311
+ download remain available. `PlannerControls` does not render a header action.
312
+
313
+ `PlannerExportContext` is `{ export: ExportData, revision, conversation }`.
314
+ The Export action captures document and thread synchronously and rejects an
315
+ in-flight conversation rather than submitting a partial turn. Host callback
316
+ failures are displayed inline; download remains available. Conversation export
317
+ has no inference history truncation, including native tool data and error
318
+ messages. The inference wire still sends only bounded recent turns. No server
319
+ persistence, iframe bridge, automatic app generation, or custom model/recipe
320
+ creation is implied. Sample records remain outside the cookbook.
321
+
322
+ `cookbookOffers={false}` removes library cookbook proposals from the native
323
+ assistant's vocabulary/schema; existing recipe/feature composition remains
324
+ available. This defaults to true and does not remove the Cookbooks tab.
325
+ `PlannerControls` also accepts `exportAction`; without a complete Planner its
326
+ export conversation is empty because it owns no native dock.
327
+
328
+ ### External assistant on the same live app
329
+
330
+ An external host assistant can drive `onready.controller` through a dedicated
331
+ `MessagePort` without using, seeding, or writing the native assistant thread.
332
+ The host must first authenticate its window handshake by exact origin **and**
333
+ expected `event.source`, then transfer a fresh `MessageChannel` port. The
334
+ library intentionally does not install a broad window message listener.
335
+
336
+ ```ts
337
+ // Inside the mounted Planner host, after a trusted port transfer:
338
+ const binding = bindPlannerCommandPort({
339
+ port,
340
+ controller: handle.controller,
341
+ allowedCommands: ['add_cookbook', 'add_recipes', 'add_features'],
342
+ source: 'external-assistant',
343
+ });
344
+ // Call binding.invalidate() in the workspace's synchronous onreset callback.
345
+ // Call binding.dispose() before replacing/unmounting the mounted Planner.
346
+
347
+ // On the external assistant side, using the other dedicated port:
348
+ const client = connectPlannerCommandPort(otherPort);
349
+ const before = await client.snapshot();
350
+ // Prepare a hosted model reply from before.snapshot and this assistant's own
351
+ // conversation. context() additionally exposes the canonical catalog/tools.
352
+ const result = await client.applyReply({
353
+ id: 'stable-request-id',
354
+ generation: before.generation,
355
+ expectedRevision: before.snapshot.revision,
356
+ reply: hostedReply,
357
+ });
358
+ // Speak/display result.content: it comes from actual command receipts/coaching.
359
+ ```
360
+
361
+ `snapshot()` and `subscribe()` expose `{ generation, snapshot }` from the actual
362
+ mounted controller, including manual edits. `context()` adds the package's
363
+ published `catalog` and `tools`. `execute()` accepts a typed command array;
364
+ `applyReply()` accepts only `{ reply, commands?, sampleContext? }`. The latter
365
+ validates fictional sample context before executing an atomic canonical batch,
366
+ then installs it only after successful changed commands and before the next
367
+ render. It reuses native command receipts and coaching, with no assistant thread.
368
+
369
+ Every mutation requires the observed generation and revision. The binding
370
+ assigns source attribution, namespaces command ids, deduplicates the whole
371
+ request, rejects id reuse with changed input, and refuses stale/reset requests.
372
+ Allowed commands are explicit (an empty list denies all mutations). Envelopes
373
+ are limited to 32 KiB, 16 commands and 128-character request ids. Each generation
374
+ retains at most 256 receipts; at capacity new requests are rejected, never
375
+ silently evicted/reexecuted. Reconnect/invalidate deliberately to renew the
376
+ capability. The client bounds pending calls to 32 and times out unanswered calls
377
+ after ten seconds; disposal rejects pending calls and closes the port.
378
+
379
+ `invalidate()` changes only the connection generation and receipt cache; it
380
+ never resets the app itself. The canonical workspace reset increments the
381
+ controller revision and invokes host `onreset` synchronously, so a host binding
382
+ invalidated there cannot accept a delayed pre-reset reply. Do not automatically
383
+ retry a conflict with a newer revision: inspect the current plan first. A host
384
+ using an older release must feature-detect these exports and report unavailable
385
+ Planner control honestly while its external conversation continues.
386
+
387
+
388
+ When `persistence="host"`, Planner controls do not offer browser Remember or
389
+ legacy recovery by default: the host owns saving the current cookbook. An owner
390
+ that actually persists that cookbook may supply `projectPersistence`, the typed
391
+ canonical facade capability (`remembering`, `recoveryAvailable`, `setRemember`,
392
+ `recover`, `discardRecovery`). Self persistence uses the existing facade by
393
+ default. Reset remains available independently. The static app's layout supplies
394
+ its actual canonical storage capability; a live Kitchen-hosted plan supplies none.
395
+ Without `inference`, native assistant handles and action captures omit native
396
+ conversation data. Confirmed Reset still retires any private previous native
397
+ session so enabling inference for the next project cannot revive its thread.
@@ -93,3 +93,52 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
93
93
  First visit: `aiState.hydrate` decides once (nothing downloaded, no read-aloud,
94
94
  nothing built, not dismissed) and the Planner page then shows the setup form
95
95
  before the tabs; Continue is per visit, "I don't need AI" is remembered.
96
+
97
+ - Native mounted hosts may provide `conversationalAction`: a trusted callback
98
+ for the actual current user send, with a detached complete transcript and
99
+ AbortSignal. Returning null continues inference; returning content records
100
+ the host's outcome. Model replies, seeded/restored turns and explicit
101
+ `nativeAssistant.sendHostMessage` never invoke it. Domain consent and external
102
+ mutations belong to the host, never to the model. Callback failure does not
103
+ fall through into model execution. `nativeAssistant.reset()` aborts and
104
+ fences late completions, then clears native history and seed markers.
105
+ - Native transcript/seed persistence uses injected `conversationStorage`;
106
+ the mounted singleton receives the workspace storage facade. The optional
107
+ `PlannerHandle.workspaceStorage` lets a host draft follow the same session /
108
+ Remember policy. Restored data is provenance, never a new user event.
109
+
110
+ - Post-execution coaching (`src/lib/assistant/coaching.ts`) describes only the
111
+ actual successful initial app: fictional samples and a real visible page,
112
+ followed by “What else would you like your app to do?”. Later additions do
113
+ not trigger an automatic next-package suggestion. The shared browser/host
114
+ prompt grounds recommendations in the person's stated workflow or necessary
115
+ setup and actual catalog descriptions, never catalog order or a fixed domain
116
+ palette. Command receipts remain the authority for what changed.
117
+
118
+ - `entryMode: 'planning'` suppresses the empty cookbook chooser while a host-led
119
+ app is being conceived; default `'browse'` and deliberate cookbook navigation
120
+ retain browsing. The empty planning copy does not claim inference is pending.
121
+ - `PlannerHandle.guide` highlights actual scoped shell refs using the existing
122
+ highlight primitive. Arrival describes the real layout Edit control; addition
123
+ uses actual before/result snapshots. The command-port guide operation accepts
124
+ only a cached successful receipt ID, never a caller-selected menu target.
125
+ Guides do not focus, navigate, or mutate the app. Dismissal, timeout, reset,
126
+ disposal, and stale generations clear/refuse guidance. Hosts can narrate the
127
+ returned verified `description` in their existing conversation.
128
+
129
+ - Hosted actual application replies optionally include `spokenContent`, a short
130
+ literal receipt derived from successful changed controller state. Full
131
+ `content` remains authoritative for visible conversation and provider history.
132
+ Initial speech keeps fictional-demo clarity, one menu/record step, layout Edit
133
+ purpose, and the open app question within forty words. Later speech counts
134
+ actual new visible menu items; long names use a truthful generic location.
135
+ Hosts may speak this optional field without summarizing arbitrary model prose;
136
+ omitted fields retain backward-compatible full-content handling.
137
+
138
+ - Guidance uses `highlightControl` with `presentation: 'spotlight'`, not a
139
+ separate tour/controller. Its passive child-document veil cuts a hole around
140
+ the real semantic target, follows viewport/layout movement, and leaves app
141
+ controls and parent Happy available. The existing guide owns receipt authority,
142
+ Escape, timeout, reset and disposal; the primitive adds an accessible dismiss
143
+ button and idempotent DOM cleanup. Offscreen, hidden or detached targets remove
144
+ the veil. Geometry updates are immediate, with no animated movement.
@@ -31,8 +31,8 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
31
31
  `persistence="host"`). The mount is a `CookbookApp` with `layoutEditing`, `plannerLoaders`,
32
32
  `widgetContext` and `resolveExport`, routed by URL fragment (`setBasePath(base, 'hash')` makes
33
33
  `appHref` write `#/...`); section pages are the framework's `CookbookSectionPage`
34
- (`presentation="plain"`, a `heading` snippet drawing `SectionHeading`, the record counts from
35
- `loaders.shortcuts`; remounted on a data reset), packages the planner's `PackagePage`.
34
+ (the themed card default, a `heading` snippet drawing `SectionHeading`, shared count-free
35
+ overview defaults; remounted on a data reset), packages the planner's `PackagePage`.
36
36
  `assistant.ts` builds a chat transport over any controller. The stores (`cookbookStore`,
37
37
  `recipeState`) are still module singletons: one planner per page. Still planner-side and NOT yet
38
38
  deleted because the UI uses them directly (follow-up: route the UI through commands):
@@ -8,7 +8,7 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
8
8
  `https://s-m-r-t.dev/schemas/cookbook/v1.json`; import also accepts the old `.../blueprint/v1.json`)
9
9
  holding recipes, options, layout and theme. `store.svelte.ts` is the single
10
10
  source of truth (hydrate, debounced save, import/reset), `storage.ts` the
11
- try/catch localStorage wrapper (key `smrt-planner:cookbook-doc:v1`; a value under the old
11
+ try/catch document wrapper, using `planner/workspace-storage.ts` for tab-scoped session storage by default and explicit Remember opt-in local storage (key `smrt-planner:cookbook-doc:v1`; a value under the old
12
12
  `smrt-planner:blueprint:v1` is read once, written to the new key and kept as a backup until the
13
13
  next successful save removes it; `smrt-planner:cookbook` alone is the library selection),
14
14
  `file.ts` the `<name>.cookbook.json` export (plus `slugify`, size and `formatSize`),
@@ -90,3 +90,5 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
90
90
  the static layout pushes a shallow `?cookbook=<id>` entry, the mount a `#/configure/cookbooks/<id>/`
91
91
  route, so browser Back returns to the grid and a link opens the detail. Applying regenerates the sample records from the cookbook's pack (the panel says so). Add a
92
92
  library cookbook by adding an entry; use only existing recipe ids.
93
+
94
+ Workspace persistence retains the plan, library selection, sample context and rows in the current tab by default. Remember toggles move only those project values after destination writes succeed. Raw native conversation, seed markers, and host contact/frozen-lead drafts always remain session-only, including when Remember is enabled. A new tab restores the remembered plan with a fresh conversation and draft. Earlier durable raw thread/draft copies move safely into the current session and are excluded from durable legacy archives; conflicting old lead identifiers are retained in a session-only recovery value. Legacy local data is archived once for visible recovery before its live keys move to the current tab; explicit Remember OFF, discard recovery, and confirmed reset delete that archive. Reset preserves saved theme preferences and unrelated identity keys, invalidates native inference, and clears controller undo/replay history.
package/agents/shell.md CHANGED
@@ -9,8 +9,8 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
9
9
  icon, title (the layout's rename wins), description (`info.ts`: recipe `section.icon/description`,
10
10
  `FEATURE_SECTION`, cookbook `sectionDescriptions`), Help/Options icons (`entries.ts` `optionGroups`),
11
11
  and the section's editable overview (`SectionOverview.svelte`, see `src/lib/overviews/`; its
12
- `shortcuts` widget replaces the menu cards; the grid is `presentation="plain"`, page sections rather
13
- than cards in a card); in edit mode the entries follow as smrt-svelte's `ShellSectionMenu` list.
12
+ `shortcuts` widget replaces the menu cards; the grid defaults to `presentation="card"`, using existing themed frames;
13
+ explicit plain presentation remains available); in edit mode the entries follow as smrt-svelte's `ShellSectionMenu` list.
14
14
  `SectionView.svelte` is the route page's body (the static shell is a plain `AppShell`, so it cannot
15
15
  use `CookbookSectionPage`); `SectionHeading.svelte` is the icon/title/description heading it shares
16
16
  with the mount. A section id outside the overview id pattern keeps the `ShellSectionMenu`
@@ -21,17 +21,19 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
21
21
  smrt-svelte's shell icon set (tests/section-pages.test.ts); visitor sections get `folder`.
22
22
  - `src/lib/overviews/`: section pages as customisable overviews (smrt-svelte `./overview`, smrt#3727).
23
23
  `definitions.ts`: one `defineOverview` per section, id = the section's layout id, static (never
24
- depends on which recipes are on): `shortcuts` (the section's entries with record counts: the framework's entries through
25
- `composeShortcutsLoader(loadShortcutCounts)`, counting rows in each entry's scope from the
26
- `entryIndex` in the load context) then the
27
- section's lead model as a `metric` count and a `records` list; `allowed` = the core types the planner
24
+ depends on which recipes are on): `shortcuts` then the section's lead model as a full-width `records` list with
25
+ summaries off; automatic record counts are absent. The shared
26
+ `sectionOverviewDefaults` also drives CookbookApp. Explicit legacy changed.count
27
+ patches project the original metric definition on read, without store writes;
28
+ removed count wins, and unrelated overrides do not resurrect it. Custom metrics
29
+ and explicit record summaries remain available; `allowed` = the core types the planner
28
30
  loads plus recipe `widget` surfaces, `models` = the catalog. `isOverviewId` is what a cookbook may
29
31
  key: recipe sections, More, and the document's own `layout.customSections`. `registry.ts`: the one
30
32
  registry, core widgets with loaders over the in-browser `DataSource` (capabilities in the load
31
33
  context, never in options; a named `filter` is an error tile, the sample data has none; `chart`
32
34
  groups the sample rows itself, the in-browser stand-in for a runtime report, for every chart style:
33
35
  bar, line, table, pie and stat read the same points), `plannerLoaders` (metric, records, chart, and
34
- `shortcuts` = `loadShortcutCounts`) for the mounted `Planner`'s `CookbookApp`, and
36
+ `shortcuts` passes the shell entries through without count enrichment) for the mounted `Planner`'s `CookbookApp`, and
35
37
  `registerRecipeWidgets` with a static, currently empty, module map. `models.ts`: the option
36
38
  editor's model choices, shared by the page and the mount. `validate.ts`: the cookbook's
37
39
  `overviews` field; every override goes through `checkOverviewOverride` on load and import, bad
package/app/404.html CHANGED
@@ -3,35 +3,35 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <link href="/_app/immutable/entry/start.Dg2NiCvD.js" rel="modulepreload">
7
- <link href="/_app/immutable/chunks/mzvl-05K.js" rel="modulepreload">
6
+ <link href="/_app/immutable/entry/start.CjnnBAhi.js" rel="modulepreload">
7
+ <link href="/_app/immutable/chunks/CrMrQCWf.js" rel="modulepreload">
8
8
  <link href="/_app/immutable/chunks/DG3qFFTE.js" rel="modulepreload">
9
9
  <link href="/_app/immutable/chunks/COiEfhsA.js" rel="modulepreload">
10
10
  <link href="/_app/immutable/chunks/Dt-HX3Vu.js" rel="modulepreload">
11
- <link href="/_app/immutable/entry/app.C8ZDox8Z.js" rel="modulepreload">
11
+ <link href="/_app/immutable/entry/app.BFvVYIAu.js" rel="modulepreload">
12
12
  <link href="/_app/immutable/chunks/uBIymjUX.js" rel="modulepreload">
13
13
  <link href="/_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
14
- <link href="/_app/immutable/nodes/0.DE5huPD8.js" rel="modulepreload">
15
- <link href="/_app/immutable/chunks/BFJgNGCw.js" rel="modulepreload">
14
+ <link href="/_app/immutable/nodes/0.BV0A9Ub7.js" rel="modulepreload">
15
+ <link href="/_app/immutable/chunks/c4Y8im5f.js" rel="modulepreload">
16
16
  <link href="/_app/immutable/chunks/YUSKx8_q.js" rel="modulepreload">
17
17
  <link href="/_app/immutable/chunks/DK8Blf1Y.js" rel="modulepreload">
18
- <link href="/_app/immutable/chunks/BPIRT1pR.js" rel="modulepreload">
18
+ <link href="/_app/immutable/chunks/CB9iikrD.js" rel="modulepreload">
19
19
  <link href="/_app/immutable/chunks/Bv5jGtB8.js" rel="modulepreload">
20
- <link href="/_app/immutable/chunks/DF-0MxNw.js" rel="modulepreload">
20
+ <link href="/_app/immutable/chunks/By9nPosf.js" rel="modulepreload">
21
21
  <link href="/_app/immutable/chunks/DIE02RSm.js" rel="modulepreload">
22
- <link href="/_app/immutable/chunks/BA7oEUVv.js" rel="modulepreload">
22
+ <link href="/_app/immutable/chunks/CQOJdp0U.js" rel="modulepreload">
23
23
  <link href="/_app/immutable/chunks/CUyVrfsu.js" rel="modulepreload">
24
- <link href="/_app/immutable/chunks/CsaWd8kG.js" rel="modulepreload">
24
+ <link href="/_app/immutable/chunks/Bs5WxZDd.js" rel="modulepreload">
25
25
  <link href="/_app/immutable/chunks/BYcBM-fh.js" rel="modulepreload">
26
- <link href="/_app/immutable/chunks/Cq7I_-C0.js" rel="modulepreload">
27
- <link href="/_app/immutable/chunks/DN0-Cx7Y.js" rel="modulepreload">
28
- <link href="/_app/immutable/chunks/C26hsvAf.js" rel="modulepreload">
26
+ <link href="/_app/immutable/chunks/BFzGVZ83.js" rel="modulepreload">
27
+ <link href="/_app/immutable/chunks/BMXU0KTB.js" rel="modulepreload">
28
+ <link href="/_app/immutable/chunks/BErRmq61.js" rel="modulepreload">
29
29
  <link href="/_app/immutable/chunks/d934w91N.js" rel="modulepreload">
30
- <link href="/_app/immutable/chunks/Cye6FWwy.js" rel="modulepreload">
31
- <link href="/_app/immutable/chunks/DSxP4IQt.js" rel="modulepreload">
32
- <link href="/_app/immutable/chunks/CMoev5sM.js" rel="modulepreload">
33
- <link href="/_app/immutable/chunks/Cc_ZlCEA.js" rel="modulepreload">
34
- <link href="/_app/immutable/chunks/Cv4-Km2e.js" rel="modulepreload">
30
+ <link href="/_app/immutable/chunks/Uwmgg65i.js" rel="modulepreload">
31
+ <link href="/_app/immutable/chunks/3dpUaAuL.js" rel="modulepreload">
32
+ <link href="/_app/immutable/chunks/CwTLkgbW.js" rel="modulepreload">
33
+ <link href="/_app/immutable/chunks/jY83yXmZ.js" rel="modulepreload">
34
+ <link href="/_app/immutable/chunks/DcYfN1RJ.js" rel="modulepreload">
35
35
  <link href="/_app/immutable/chunks/BMgzWMdF.js" rel="modulepreload">
36
36
  <link href="/_app/immutable/chunks/CgAkqYsL.js" rel="modulepreload">
37
37
 
@@ -42,7 +42,7 @@
42
42
  <link href="/_app/immutable/assets/webmcp-ui-context.hO24Ni5w.css" rel="stylesheet">
43
43
  <link href="/_app/immutable/assets/data.CVlX_W0i.css" rel="stylesheet">
44
44
  <link href="/_app/immutable/assets/forms.BRdbPdvs.css" rel="stylesheet">
45
- <link href="/_app/immutable/assets/AppShell.BkKNrxND.css" rel="stylesheet">
45
+ <link href="/_app/immutable/assets/AppShell.Y0ysizZK.css" rel="stylesheet">
46
46
  <link href="/_app/immutable/assets/SectionIcons.BGFcFuOf.css" rel="stylesheet">
47
47
  <link href="/_app/immutable/assets/SectionActions.BE1CPmxk.css" rel="stylesheet">
48
48
  <link href="/_app/immutable/assets/0.BaRFeYGU.css" rel="stylesheet">
@@ -51,15 +51,15 @@
51
51
  <div style="display: contents">
52
52
  <script>
53
53
  {
54
- __sveltekit_j5p4dw = {
54
+ __sveltekit_3udfmk = {
55
55
  base: ""
56
56
  };
57
57
 
58
58
  const element = document.currentScript.parentElement;
59
59
 
60
60
  Promise.all([
61
- import("/_app/immutable/entry/start.Dg2NiCvD.js"),
62
- import("/_app/immutable/entry/app.C8ZDox8Z.js")
61
+ import("/_app/immutable/entry/start.CjnnBAhi.js"),
62
+ import("/_app/immutable/entry/app.BFvVYIAu.js")
63
63
  ]).then(([kit, app]) => {
64
64
  kit.start(app, element);
65
65
  });
@@ -0,0 +1 @@
1
+ @layer smrt.reset,smrt.structure;@layer smrt.theme{.settings.svelte-1adyoey{gap:var(--smrt-spacing-4);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:end;display:grid}.field.svelte-1adyoey{gap:var(--smrt-spacing-1);display:grid}.percent.svelte-1adyoey{align-items:flex-end;gap:var(--smrt-spacing-2);display:flex}.percent.svelte-1adyoey .smrt-number{flex:1}.percent-sign.svelte-1adyoey{padding-bottom:var(--smrt-spacing-2);color:var(--smrt-color-on-surface-variant)}.switch.svelte-1adyoey small:where(.svelte-1adyoey),.meta.svelte-1adyoey{color:var(--smrt-color-on-surface-variant)}.tax-codes.svelte-1adyoey{gap:var(--smrt-spacing-2);margin-top:var(--smrt-spacing-4);display:grid}.tax-codes.svelte-1adyoey h3:where(.svelte-1adyoey),.tax-codes.svelte-1adyoey p:where(.svelte-1adyoey){margin:0}.tax-codes.svelte-1adyoey ul:where(.svelte-1adyoey){gap:var(--smrt-spacing-1) var(--smrt-spacing-4);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.tax-codes.svelte-1adyoey li:where(.svelte-1adyoey){display:grid}.tax-codes.svelte-1adyoey .rates:where(.svelte-1adyoey){color:var(--smrt-color-on-surface-variant);font-size:.875rem}.cookbooks.svelte-mzas8k{gap:var(--smrt-spacing-4);display:grid}h2.svelte-mzas8k,h3.svelte-mzas8k,h4.svelte-mzas8k,p.svelte-mzas8k{margin:0}h3.svelte-mzas8k,h4.svelte-mzas8k{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}.meta.svelte-mzas8k,.summary.svelte-mzas8k{color:var(--smrt-color-on-surface-variant)}.grid.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.card.svelte-mzas8k{gap:var(--smrt-spacing-2);width:100%;height:100%;padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);background:var(--smrt-surface-panel);color:inherit;font:inherit;text-align:start;cursor:pointer;justify-items:start;display:grid;position:relative}.card.svelte-mzas8k:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.icon.svelte-mzas8k{color:var(--smrt-color-primary);flex:none}.heading.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-2);min-inline-size:0;padding-inline-end:4rem;display:flex}.name.svelte-mzas8k{font-weight:var(--smrt-typography-weight-semibold)}.badge.svelte-mzas8k{top:var(--smrt-spacing-3);right:var(--smrt-spacing-3);padding:0 var(--smrt-spacing-2);border-radius:var(--smrt-radius-full);background:var(--smrt-color-primary);color:var(--smrt-color-on-primary);font-size:.75rem;position:absolute}.preview.svelte-mzas8k{gap:var(--smrt-spacing-4);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);display:grid}.block.svelte-mzas8k{gap:var(--smrt-spacing-2);display:grid}.chips.svelte-mzas8k,.menu.svelte-mzas8k ul:where(.svelte-mzas8k){margin:0;padding:0;list-style:none}.chips.svelte-mzas8k{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.chips.svelte-mzas8k li:where(.svelte-mzas8k){padding:0 var(--smrt-spacing-3);border-radius:var(--smrt-radius-full);background:var(--smrt-color-surface-container)}.menu.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));display:grid}.menu.svelte-mzas8k ul:where(.svelte-mzas8k){gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-1);display:grid}.actions.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.back.svelte-mzas8k{justify-self:start;margin-inline-start:calc(-1 * var(--smrt-spacing-2))}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus{outline:none}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}[data-smrt-view-transition] .swap.svelte-mzas8k{view-transition-name:planner-cookbooks}::view-transition-group(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-old(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-new(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}.project.svelte-1ij12un{gap:var(--smrt-spacing-3);display:grid}h2.svelte-1ij12un,p.svelte-1ij12un{margin:0}.meta.svelte-1ij12un{color:var(--smrt-color-on-surface-variant)}.actions.svelte-1ij12un{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.export.svelte-17nkvtk{gap:var(--smrt-spacing-5);min-inline-size:0;display:grid}h2.svelte-17nkvtk,h3.svelte-17nkvtk,p.svelte-17nkvtk,dl.svelte-17nkvtk,dd.svelte-17nkvtk,pre.svelte-17nkvtk{margin:0}h2.svelte-17nkvtk{font:var(--smrt-typography-title-medium-font)}h3.svelte-17nkvtk{font:var(--smrt-typography-title-small-font)}.eyebrow.svelte-17nkvtk{color:var(--smrt-color-on-surface-variant);font:var(--smrt-typography-label-large-font)}.export-intro.svelte-17nkvtk,.build-step.svelte-17nkvtk,.copy-step.svelte-17nkvtk{gap:var(--smrt-spacing-3);min-inline-size:0;display:grid}.next-steps.svelte-17nkvtk{gap:var(--smrt-spacing-4);display:grid}.build-step.svelte-17nkvtk{padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken)}.block.svelte-17nkvtk{gap:var(--smrt-spacing-3);min-inline-size:0;display:grid}.meta.svelte-17nkvtk,.notice.svelte-17nkvtk,.quiet.svelte-17nkvtk{color:var(--smrt-color-on-surface-variant)}.notice.svelte-17nkvtk:empty{display:none}.summary.svelte-17nkvtk{gap:var(--smrt-spacing-2) var(--smrt-spacing-4);grid-template-columns:max-content minmax(0,1fr);align-items:baseline;display:grid}dt.svelte-17nkvtk{font-weight:var(--smrt-typography-weight-semibold);white-space:nowrap}.chips.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.actions.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.export.svelte-17nkvtk .prompt{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);white-space:pre-wrap;overflow-wrap:anywhere;resize:none;max-block-size:20rem;overflow:auto}code.svelte-17nkvtk{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);overflow-wrap:anywhere}.command.svelte-17nkvtk{align-items:center;gap:var(--smrt-spacing-2) var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.command.svelte-17nkvtk code:where(.svelte-17nkvtk){min-inline-size:0;padding:var(--smrt-spacing-2) var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);flex:16rem}.json.svelte-17nkvtk{max-block-size:20rem;padding:var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:var(--smrt-typography-body-small-size);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}.replace.svelte-17nkvtk{border-block-start:var(--smrt-hairline);padding-block-start:var(--smrt-spacing-4)}@media (width<=30rem){.summary.svelte-17nkvtk{grid-template-columns:minmax(0,1fr)}.actions.svelte-17nkvtk,.command.svelte-17nkvtk{flex-direction:column;align-items:stretch}.actions.svelte-17nkvtk>[data-smrt-component=Button],.command.svelte-17nkvtk>[data-smrt-component=Button]{inline-size:100%}}@media (forced-colors:active){.build-step.svelte-17nkvtk,.command.svelte-17nkvtk code:where(.svelte-17nkvtk),.json.svelte-17nkvtk{border-color:canvastext}}h3.svelte-1tvhds4,h4.svelte-1tvhds4,p.svelte-1tvhds4{margin:0}.card.svelte-1tvhds4{align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.card.selected.svelte-1tvhds4{border-color:var(--smrt-color-primary)}.head.svelte-1tvhds4{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-2);display:flex}h3.svelte-1tvhds4{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}h4.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font:var(--smrt-typography-label-medium-font);letter-spacing:var(--smrt-typography-label-medium-tracking);font-weight:var(--smrt-typography-weight-semibold);text-transform:uppercase}.meta.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.plain.svelte-1tvhds4{gap:var(--smrt-spacing-1);font-size:var(--smrt-typography-body-medium-size);margin:0;padding:0;list-style:none;display:grid}.kind.svelte-1tvhds4{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size);margin-inline-end:var(--smrt-spacing-1)}.reasons.svelte-1tvhds4{margin-block-end:var(--smrt-spacing-2)}.foot.svelte-1tvhds4{gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-2);display:grid}code.svelte-1tvhds4{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:.85em}.where.svelte-1tvhds4{margin-inline-start:.35em}.summary.svelte-1tvhds4{font-size:var(--smrt-typography-body-medium-size)}@media (forced-colors:active){.card.selected.svelte-1tvhds4{border-color:highlight;outline:.125rem solid highlight}}.features.svelte-7kphei{gap:var(--smrt-spacing-3);display:grid}h2.svelte-7kphei,p.svelte-7kphei{margin:0}.meta.svelte-7kphei,.notice.svelte-7kphei,.empty.svelte-7kphei,.count.svelte-7kphei{color:var(--smrt-color-on-surface-variant)}.count.svelte-7kphei{font-size:var(--smrt-typography-body-medium-size);font-weight:400}.notice.svelte-7kphei:empty{display:none}.chips.svelte-7kphei{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.rows.svelte-7kphei{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.rows.svelte-7kphei li:where(.svelte-7kphei){align-items:center;gap:var(--smrt-spacing-3);padding:var(--smrt-spacing-3) var(--smrt-spacing-4);display:flex}.rows.svelte-7kphei li:where(.svelte-7kphei)+li:where(.svelte-7kphei){border-top:var(--smrt-hairline)}.rows.svelte-7kphei li.selected:where(.svelte-7kphei){background:color-mix(in srgb, currentColor calc(var(--smrt-state-selected) * 100%), transparent)}.includes.svelte-7kphei{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.icon.svelte-7kphei{color:var(--smrt-color-on-surface-variant);display:inline-flex}.text.svelte-7kphei{flex:1;min-width:0;display:grid}.bar.svelte-7kphei{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-3);display:flex}.name.svelte-7kphei{align-items:baseline;gap:var(--smrt-spacing-2);display:flex}.tag.svelte-7kphei{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size)}.text.svelte-7kphei a:where(.svelte-7kphei){width:fit-content;color:var(--smrt-color-on-surface);font-weight:500}.text.svelte-7kphei .meta:where(.svelte-7kphei){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (forced-colors:active){.rows.svelte-7kphei li.selected:where(.svelte-7kphei){outline-offset:-.125rem;outline:.125rem solid highlight}}.features.svelte-q9yl1j{gap:var(--smrt-spacing-3);display:grid}h2.svelte-q9yl1j,p.svelte-q9yl1j{margin:0}section.svelte-q9yl1j{gap:var(--smrt-spacing-2);display:grid}.meta.svelte-q9yl1j,.count.svelte-q9yl1j{color:var(--smrt-color-on-surface-variant)}.count.svelte-q9yl1j{font-size:var(--smrt-typography-body-medium-size)}.notice.svelte-q9yl1j:empty{display:none}.chips.svelte-q9yl1j{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.cards.svelte-q9yl1j{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));margin:0;padding:0;list-style:none;display:grid}h2.svelte-1d5gge1,p.svelte-1d5gge1{margin:0}.meta.svelte-1d5gge1,.description.svelte-1d5gge1,.notice.svelte-1d5gge1{color:var(--smrt-color-on-surface-variant)}.notice.svelte-1d5gge1:empty{display:none}.cards.svelte-1d5gge1{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));margin:0;padding:0;list-style:none;display:grid}.cards.svelte-1d5gge1 li:where(.svelte-1d5gge1){align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:var(--smrt-color-primary)}.sub.svelte-1d5gge1{gap:var(--smrt-spacing-1);display:grid}@media (forced-colors:active){.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:highlight;outline:.125rem solid highlight}}.pane.svelte-d580bl{gap:var(--smrt-spacing-4);display:grid}.meta.svelte-d580bl{color:var(--smrt-color-on-surface-variant);margin:0}.theme.svelte-18m8le4{gap:1.25rem;max-inline-size:72rem;display:grid}.cards.svelte-18m8le4{grid-template-columns:repeat(auto-fill,minmax(min(10rem,100%),1fr));gap:.75rem;display:grid}.choice.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);min-block-size:8.5rem;color:var(--smrt-color-on-surface);text-align:start;cursor:pointer;transition:border-color var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), background var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), transform var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease);align-content:start;gap:.8rem;padding:.85rem;display:grid}.choice.svelte-18m8le4:hover{border-color:var(--smrt-color-primary);background:var(--smrt-surface-raised);transform:translateY(-2px)}.choice.selected.svelte-18m8le4{border:2px solid var(--smrt-color-primary);background:var(--smrt-color-primary-container);color:var(--smrt-color-on-primary-container);padding:calc(.85rem - 1px)}.choice.svelte-18m8le4:focus-visible,.advanced.svelte-18m8le4:focus-visible,.wheel.svelte-18m8le4:focus-within,select.svelte-18m8le4:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.choice-name.svelte-18m8le4{align-items:center;gap:.55rem;font-size:1rem;font-weight:700;line-height:1.2;display:inline-flex}.choice-icon.svelte-18m8le4{block-size:1.5rem;inline-size:1.5rem;color:var(--smrt-color-primary);flex:none;place-items:center;font-size:1.35rem;display:inline-grid}.preview.svelte-18m8le4{border:1px solid color-mix(in srgb, var(--smrt-planner-preview-ink) 20%, transparent);background:var(--smrt-planner-preview-bg);border-radius:.4rem;block-size:4.5rem;inline-size:100%;display:flex;overflow:hidden}.preview-sidebar.svelte-18m8le4{background:var(--smrt-planner-preview-primary);align-content:start;gap:.35rem;inline-size:23%;padding:.5rem .3rem;display:grid}.preview-sidebar.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-surface);opacity:.8;border-radius:1rem;block-size:.22rem}.preview-main.svelte-18m8le4{flex:1;align-content:start;gap:.4rem;padding:.6rem;display:grid}.preview-title.svelte-18m8le4{background:var(--smrt-planner-preview-ink);opacity:.7;border-radius:1rem;block-size:.32rem;inline-size:55%}.preview-body.svelte-18m8le4{background:var(--smrt-planner-preview-surface);border-radius:.2rem;gap:.25rem;padding:.35rem;display:grid}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-primary);opacity:.7;border-radius:1rem;block-size:.2rem}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4):last-child{opacity:.35;inline-size:70%}.scheme.svelte-18m8le4{min-block-size:8.5rem}.choice-hint.svelte-18m8le4{color:var(--smrt-color-on-surface-variant);font-size:.85rem}.brand.svelte-18m8le4,.shape.svelte-18m8le4{flex-wrap:wrap;align-items:end;gap:1rem;display:flex}.shape.svelte-18m8le4 .field:where(.svelte-18m8le4){min-inline-size:min(10rem,100%)}.field.svelte-18m8le4{gap:.4rem;display:grid}.pick.svelte-18m8le4{align-items:center;gap:.65rem;display:flex}.wheel.svelte-18m8le4{block-size:3rem;inline-size:3rem;box-shadow:0 0 0 1px var(--smrt-hairline-color);cursor:pointer;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.wheel.svelte-18m8le4:after{content:"";background:var(--smrt-planner-picked-color);block-size:1.7rem;inline-size:1.7rem;box-shadow:var(--smrt-elevation-1);pointer-events:none;border:2px solid #fff;border-radius:50%}.wheel.svelte-18m8le4 input:where(.svelte-18m8le4){opacity:0;cursor:pointer;block-size:100%;inline-size:100%;position:absolute;inset:0}.font-field.svelte-18m8le4{min-inline-size:min(14rem,100%)}select.svelte-18m8le4{border:var(--smrt-control-border);border-radius:var(--smrt-radius-medium,.5rem);background:var(--smrt-surface-control);min-block-size:3rem;color:var(--smrt-color-on-surface);font:inherit;cursor:pointer;padding:.6rem 2rem .6rem .8rem}.error.svelte-18m8le4{color:var(--smrt-color-error);margin:0}.advanced.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);color:var(--smrt-color-on-surface);align-items:center;gap:.8rem;padding:1rem;text-decoration:none;display:flex}.advanced.svelte-18m8le4:hover{border-color:var(--smrt-color-primary)}.advanced-icon.svelte-18m8le4{background:var(--smrt-color-primary-container);block-size:2.8rem;inline-size:2.8rem;color:var(--smrt-color-on-primary-container);border-radius:.65rem;flex:none;place-items:center;font:700 1rem ui-monospace,monospace;display:grid}.advanced.svelte-18m8le4 strong:where(.svelte-18m8le4),.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){display:block}.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){color:var(--smrt-color-on-surface-variant);margin-top:.15rem}.arrow.svelte-18m8le4{margin-inline-start:auto;font-size:1.3rem}@media (forced-colors:active){.choice.selected.svelte-18m8le4{outline-offset:.125rem;border-color:highlight;outline:.125rem solid highlight}.preview.svelte-18m8le4,.wheel.svelte-18m8le4{forced-color-adjust:none}}.planner.svelte-zuxcuo .tab-panel{padding-top:var(--smrt-spacing-4)}[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-nav,[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-links{view-transition-name:planner-tabs}.planner.svelte-zuxcuo .smrt-tabs__nav{scroll-snap-type:x proximity;overscroll-behavior-x:contain}.planner.svelte-zuxcuo .smrt-tabs__tab-button{scroll-snap-align:start}@property --smrt-planner-controls-tabs-fade{syntax:"<length>";inherits:false;initial-value:0}@supports (animation-timeline:scroll()){.planner.svelte-zuxcuo .smrt-tabs__nav{-webkit-mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);animation:linear both svelte-zuxcuo-planner-tabs-fade;animation-timeline:scroll(self inline)}@keyframes svelte-zuxcuo-planner-tabs-fade{0%{--smrt-planner-controls-tabs-fade:3rem}to{--smrt-planner-controls-tabs-fade:0rem}}}.pane.svelte-zuxcuo{gap:var(--smrt-spacing-3);display:grid}.pane[hidden].svelte-zuxcuo{display:none}.meta.svelte-zuxcuo{color:var(--smrt-color-on-surface-variant);margin:0}main.svelte-1uha8ag{width:min(100%,72rem);padding:var(--smrt-spacing-6);margin-inline:auto}.first-run.svelte-1uha8ag{gap:var(--smrt-spacing-4);display:grid}.first-run.svelte-1uha8ag h1:where(.svelte-1uha8ag),.first-run.svelte-1uha8ag p:where(.svelte-1uha8ag){margin:0}.actions.svelte-1uha8ag{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}}