@happyvertical/smrt-planner 0.57.12 → 0.57.14

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/4U_CvE-d.js +16 -0
  11. package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
  12. package/app/_app/immutable/chunks/BLDKU4g5.js +1 -0
  13. package/app/_app/immutable/chunks/{_CcVkMEQ.js → BOSl48rY.js} +1 -1
  14. package/app/_app/immutable/chunks/{DbH3RuTE.js → Ba61AwfI.js} +1 -1
  15. package/app/_app/immutable/chunks/{DU3stPaX.js → BfEjkvw8.js} +1 -1
  16. package/app/_app/immutable/chunks/Bl9jYcfy.js +1 -0
  17. package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
  18. package/app/_app/immutable/chunks/BttZBU_f.js +10 -0
  19. package/app/_app/immutable/chunks/By9nPosf.js +1 -0
  20. package/app/_app/immutable/chunks/{2dmW8nz3.js → C8mMXUIO.js} +2 -2
  21. package/app/_app/immutable/chunks/{BQgbhyQu.js → C9ckpR0C.js} +1 -1
  22. package/app/_app/immutable/chunks/{D4791-Ex.js → CB4gakCD.js} +1 -1
  23. package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
  24. package/app/_app/immutable/chunks/{BCvXlTRf.js → CvjuXdyt.js} +1 -1
  25. package/app/_app/immutable/chunks/CxSE8nQW.js +1 -0
  26. package/app/_app/immutable/chunks/D-dgX3hb.js +2 -0
  27. package/app/_app/immutable/chunks/{bBI0F4nt.js → DDsrLsCW.js} +1 -1
  28. package/app/_app/immutable/chunks/{DDtOXC2p.js → DHw6VlGb.js} +1 -1
  29. package/app/_app/immutable/chunks/{BgtC60Dj.js → DQ1TECJo.js} +2 -2
  30. package/app/_app/immutable/chunks/{pEiNEXSh.js → DSHP6NMq.js} +1 -1
  31. package/app/_app/immutable/chunks/DYDheSdi.js +26 -0
  32. package/app/_app/immutable/chunks/Df-zyycv.js +2 -0
  33. package/app/_app/immutable/chunks/DkMzaPtY.js +4 -0
  34. package/app/_app/immutable/chunks/DmA8eomi.js +1 -0
  35. package/app/_app/immutable/chunks/{8MGlmWc0.js → DwlKnCAn.js} +1 -1
  36. package/app/_app/immutable/chunks/{B88mVEob.js → Mn4opCWg.js} +1 -1
  37. package/app/_app/immutable/chunks/{38SS-Q6Y.js → PiW3Dgjp.js} +22 -22
  38. package/app/_app/immutable/chunks/{ByKA-VaR.js → VIYltq2Y.js} +1 -1
  39. package/app/_app/immutable/chunks/{CQFoqqzT.js → fNkgk5Jb.js} +1 -1
  40. package/app/_app/immutable/chunks/{BTm4M8Ke.js → mdO5QRA9.js} +1 -1
  41. package/app/_app/immutable/chunks/{5TDxHd66.js → yTc1j36D.js} +1 -1
  42. package/app/_app/immutable/chunks/{oV81RcfI.js → yeJddwqn.js} +1 -1
  43. package/app/_app/immutable/entry/{app.C8En00Ny.js → app.N1QTpsMZ.js} +2 -2
  44. package/app/_app/immutable/entry/start.Dr_ALXsl.js +1 -0
  45. package/app/_app/immutable/nodes/0.inFgEPC5.js +7 -0
  46. package/app/_app/immutable/nodes/{1.CoV_40km.js → 1.BPYf0yDv.js} +1 -1
  47. package/app/_app/immutable/nodes/10.DScVn_7s.js +3 -0
  48. package/app/_app/immutable/nodes/{11.Csg6XAcG.js → 11.SWB4V_R-.js} +1 -1
  49. package/app/_app/immutable/nodes/{12.CuTHLuEu.js → 12.jNsVHfvB.js} +1 -1
  50. package/app/_app/immutable/nodes/{13.CNdfx5uO.js → 13.BAX1DbJ6.js} +1 -1
  51. package/app/_app/immutable/nodes/14.DFK_8SUc.js +1 -0
  52. package/app/_app/immutable/nodes/2.C-g07Oom.js +22 -0
  53. package/app/_app/immutable/nodes/{3.DC8-sgUI.js → 3.BYAVGln5.js} +1 -1
  54. package/app/_app/immutable/nodes/{4.DcX0DIX9.js → 4.xN8AMdJR.js} +1 -1
  55. package/app/_app/immutable/nodes/{5.Opk77twi.js → 5.BnO1oGgB.js} +1 -1
  56. package/app/_app/immutable/nodes/{6.Uk9tXC7t.js → 6.D3aEKeoZ.js} +1 -1
  57. package/app/_app/immutable/nodes/7.BZMihT_i.js +1 -0
  58. package/app/_app/immutable/nodes/{8.CacSxuCP.js → 8.DWwsczQn.js} +1 -1
  59. package/app/_app/immutable/nodes/{9.z7vXbrbH.js → 9.hCdhh_c2.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/9PL91wDk.js +0 -4
  602. package/app/_app/immutable/chunks/9iVbSlQr.js +0 -16
  603. package/app/_app/immutable/chunks/B-xSgl5J.js +0 -1
  604. package/app/_app/immutable/chunks/BDKUpjK6.js +0 -2
  605. package/app/_app/immutable/chunks/Bq35Wl4H.js +0 -2
  606. package/app/_app/immutable/chunks/Cu77BRmy.js +0 -1
  607. package/app/_app/immutable/chunks/CxZIUuYu.js +0 -1
  608. package/app/_app/immutable/chunks/CzHmSbsw.js +0 -1
  609. package/app/_app/immutable/chunks/D71UrO5c.js +0 -1
  610. package/app/_app/immutable/chunks/DF-0MxNw.js +0 -1
  611. package/app/_app/immutable/chunks/DaWOaOo5.js +0 -10
  612. package/app/_app/immutable/chunks/aDZBV4Ss.js +0 -26
  613. package/app/_app/immutable/entry/start.DQ2WMDJa.js +0 -1
  614. package/app/_app/immutable/nodes/0.CjivLsXS.js +0 -7
  615. package/app/_app/immutable/nodes/10.CRcxQ1FU.js +0 -3
  616. package/app/_app/immutable/nodes/14.CvNTiqf4.js +0 -1
  617. package/app/_app/immutable/nodes/2.D8ImYTF0.js +0 -24
  618. package/app/_app/immutable/nodes/7.Q7dzrAos.js +0 -1
@@ -4,6 +4,7 @@ import { DEFAULT_SAMPLE_ROWS, DEFAULT_SAMPLE_TAX_RATE, EPOCH, fakeId, fakeRecord
4
4
  import { defaultTaxCode, MoneyValidationError, moneyCurrency, sampleTaxCodes, settleDocument, } from "./money.js";
5
5
  import { getSamplePricing, getSampleTaxRate } from "./packs.js";
6
6
  import { fakeAllocations } from "./payments.js";
7
+ import { clearSampleContext } from "./sample-context.js";
7
8
  export function isRecordRef(value) {
8
9
  return (typeof value === 'object' &&
9
10
  value !== null &&
@@ -573,6 +574,7 @@ export function createMemoryDataSource(options = {}) {
573
574
  return true;
574
575
  },
575
576
  reset() {
577
+ clearSampleContext();
576
578
  tables.clear();
577
579
  created = 0;
578
580
  clearStoredData(storage);
package/dist/index.d.ts CHANGED
@@ -6,18 +6,25 @@
6
6
  *
7
7
  * @module
8
8
  */
9
+ export type { BrowserAssistantTransport, PlannerConversationSeed, } from './assistant/transport.ts';
9
10
  export { type ByoPresetDefinition, type ConfigResult, type CredentialPersistence, type InferenceConfig, type InferenceMode, loadInferenceConfig, parseInferenceConfig, } from './inference/config.ts';
10
11
  export { createHostChat, type HostChatOptions, type HostRequest, } from './inference/host.ts';
11
12
  export { createOpenAIChat, testConnection } from './inference/openai.ts';
12
13
  export { type KitchenConfig, type KitchenEndpoint, type KitchenOutcome, type KitchenResult, parseKitchenConfig, sendToKitchen, } from './kitchen/client.ts';
13
14
  export { KITCHEN_FRAGMENT_KEY, type KitchenFragment, readKitchenFragment, } from './kitchen/fragment.ts';
14
15
  export { createPlannerAssistant, type PlannerAssistant, type PlannerChatInference, type PlannerConfigInference, type PlannerInference, } from './planner/assistant.ts';
16
+ export type { PlannerBridgeApplyReply, PlannerBridgeContext, PlannerBridgeExecute, PlannerBridgeRequest, PlannerBridgeResult, PlannerBridgeSnapshot, PlannerCommandPortClient, } from './planner/bridge.ts';
17
+ export { bindPlannerCommandPort, connectPlannerCommandPort, } from './planner/bridge.ts';
15
18
  export * from './planner/commands/index.ts';
19
+ export { capturePlannerExport } from './planner/export-context.ts';
20
+ export type { PlannerGuideHandle, PlannerGuideResult, } from './planner/guide.ts';
16
21
  export { default as HostPlanner } from './planner/host/HostPlanner.svelte';
17
22
  export { type CallKitchenTool, createHostSession, type HostPlan, type HostSession, } from './planner/host/session.svelte.ts';
23
+ export type { PlannerHostReplyResult } from './planner/host-reply.ts';
24
+ export { applyPlannerHostReply } from './planner/host-reply.ts';
18
25
  export { plannerController } from './planner/instance.ts';
19
26
  export { default as Planner } from './planner/Planner.svelte';
20
27
  export { default as PlannerControls } from './planner/PlannerControls.svelte';
21
28
  export { PLANNER_SHELL_EDGE_TOGGLES, PLANNER_SHELL_PANEL_DEFAULTS, plannerShellProps, } from './planner/shell.ts';
22
- export type { PlannerBackLink, PlannerHandle, PlannerProps, } from './planner/types.ts';
29
+ export type { PlannerBackLink, PlannerExportAction, PlannerExportContext, PlannerHandle, PlannerProjectPersistence, PlannerProps, } from './planner/types.ts';
23
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,KAAK,eAAe,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,KAAK,eAAe,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -12,9 +12,12 @@ export { createOpenAIChat, testConnection } from "./inference/openai.js";
12
12
  export { parseKitchenConfig, sendToKitchen, } from "./kitchen/client.js";
13
13
  export { KITCHEN_FRAGMENT_KEY, readKitchenFragment, } from "./kitchen/fragment.js";
14
14
  export { createPlannerAssistant, } from "./planner/assistant.js";
15
+ export { bindPlannerCommandPort, connectPlannerCommandPort, } from "./planner/bridge.js";
15
16
  export * from "./planner/commands/index.js";
17
+ export { capturePlannerExport } from "./planner/export-context.js";
16
18
  export { default as HostPlanner } from './planner/host/HostPlanner.svelte';
17
19
  export { createHostSession, } from "./planner/host/session.svelte.js";
20
+ export { applyPlannerHostReply } from "./planner/host-reply.js";
18
21
  export { plannerController } from "./planner/instance.js";
19
22
  export { default as Planner } from './planner/Planner.svelte';
20
23
  export { default as PlannerControls } from './planner/PlannerControls.svelte';
@@ -1 +1 @@
1
- {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/library/state.svelte.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,cAAM,aAAa;IACjB,MAAM,gBAA+B;IACrC,oEAAoE;IACpE,WAAW,gBAA+B;IAE1C,iEAAiE;IACjE,IAAI,CAAC,OAAO,GAAE,OAAO,GAAG,IAAuB,GAAG,IAAI;IAYtD,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,OAAO,GAAG,IAAuB,GACzC,IAAI;CAWR;AAED,eAAO,MAAM,YAAY,eAAsB,CAAC"}
1
+ {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/library/state.svelte.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,cAAM,aAAa;IACjB,MAAM,gBAA+B;IACrC,oEAAoE;IACpE,WAAW,gBAA+B;IAE1C,iEAAiE;IACjE,IAAI,CAAC,OAAO,GAAE,OAAO,GAAG,IAAyB,GAAG,IAAI;IAYxD,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,OAAO,GAAG,IAAyB,GAC3C,IAAI;CAWR;AAED,eAAO,MAAM,YAAY,eAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { browserStorage } from "../cookbook/storage.js";
2
1
  import { setSamplePack } from "../data/packs.js";
2
+ import { workspaceStorage } from "../planner/workspace-storage.js";
3
3
  /** Which cookbook the visitor last applied; a UI note, not part of the cookbook. */
4
4
  export const COOKBOOK_KEY = 'smrt-planner:cookbook';
5
5
  /** The `workFingerprint` of the document the visitor last applied, as applied. */
@@ -9,7 +9,7 @@ class CookbookState {
9
9
  /** What applying `active` set up, to tell later edits from none. */
10
10
  appliedWork = $state(null);
11
11
  /** Read the remembered cookbook (browser only; never throws). */
12
- load(storage = browserStorage()) {
12
+ load(storage = workspaceStorage()) {
13
13
  try {
14
14
  this.active = storage?.getItem(COOKBOOK_KEY) ?? null;
15
15
  this.appliedWork = storage?.getItem(APPLIED_WORK_KEY) ?? null;
@@ -21,7 +21,7 @@ class CookbookState {
21
21
  // The sample data follows the cookbook the visitor last applied.
22
22
  setSamplePack(this.active);
23
23
  }
24
- select(id, work = null, storage = browserStorage()) {
24
+ select(id, work = null, storage = workspaceStorage()) {
25
25
  this.active = id;
26
26
  this.appliedWork = work;
27
27
  try {
@@ -16,7 +16,7 @@ import type { CatalogModel } from '../catalog/types.ts';
16
16
  * `undefined` for an id no overview can have (a hand-edited layout's custom
17
17
  * section id outside the overview id pattern): the page then shows its menu.
18
18
  */
19
- export declare function sectionOverview(sectionId: string): OverviewDefinition | undefined;
19
+ export declare function sectionOverview(sectionId: string, override?: unknown): OverviewDefinition | undefined;
20
20
  /**
21
21
  * A record view's overview id (smrt#3718): `detail:<pkg>.<Model>`, the
22
22
  * catalog package id and class name, one per model kind. Spelled by the
@@ -53,7 +53,7 @@ export declare function detailOverview(id: string): OverviewDefinition | undefin
53
53
  */
54
54
  export declare function detailOverviewFor(id: string, inApp: ReadonlySet<string>): OverviewDefinition | undefined;
55
55
  /** The definition behind any overview id: a section's or a record view's. */
56
- export declare function overviewDefinition(id: string): OverviewDefinition | undefined;
56
+ export declare function overviewDefinition(id: string, override?: unknown): OverviewDefinition | undefined;
57
57
  /**
58
58
  * Whether `id` names an overview in a cookbook with this layout: a section a
59
59
  * recipe suggests, More, one of the layout's custom sections, or a record
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,KAAK,kBAAkB,EAMxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA8ExD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,SAAS,CAahC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GACT;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAOxD;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAsBzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,kBAAkB,GAAG,SAAS,CAmBhC;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAUtE"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,KAAK,kBAAkB,EAOxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyDxD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,OAAO,GACjB,kBAAkB,GAAG,SAAS,CAkBhC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GACT;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAOxD;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAsBzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,kBAAkB,GAAG,SAAS,CAmBhC;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,OAAO,GACjB,kBAAkB,GAAG,SAAS,CAIhC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAUtE"}
@@ -8,7 +8,7 @@
8
8
  * on), so a saved override always resolves against the same defaults: the
9
9
  * cookbook loader, the import and the page agree on what is canonical.
10
10
  */
11
- import { defineOverview, OVERVIEW_DEFAULT_MAX_WIDGETS, OVERVIEW_PAGE_ID_PATTERN, RECORD_OVERVIEW_MAX_METRICS, recordOverview, recordOverviewId, sectionDefaultWidget, } from '@happyvertical/smrt-svelte/overview';
11
+ import { defineOverview, OVERVIEW_DEFAULT_MAX_WIDGETS, OVERVIEW_PAGE_ID_PATTERN, RECORD_OVERVIEW_MAX_METRICS, recordOverview, recordOverviewId, sectionDefaultWidget, sectionOverviewDefaults, } from '@happyvertical/smrt-svelte/overview';
12
12
  import { catalog, getModel } from "../catalog/index.js";
13
13
  import { humanize, pluralize } from "../data/format.js";
14
14
  import { FEATURE_SECTION } from "../recipes/features.js";
@@ -39,34 +39,15 @@ function leadModel(sectionId) {
39
39
  }
40
40
  return undefined;
41
41
  }
42
- function defaults(sectionId) {
43
- // A recipe that declares its own section page (smrt-reports' saved reports)
44
- // replaces the generic shortcuts, count and records.
42
+ function defaults(sectionId, override) {
45
43
  const page = sectionDefaultWidget(NAV_SECTIONS.get(sectionId)?.recipes[0]);
46
- if (page && RECIPE_WIDGET_TYPES.includes(page.type))
47
- return [page];
48
- const widgets = [
49
- { id: 'shortcuts', type: 'shortcuts', span: 4, options: {} },
50
- ];
51
44
  const lead = leadModel(sectionId);
52
- if (lead) {
53
- widgets.push({
54
- id: 'count',
55
- type: 'metric',
56
- span: 1,
57
- options: {
58
- title: pluralize(lead.name),
59
- model: lead.id,
60
- measure: 'count',
61
- },
62
- }, {
63
- id: 'latest',
64
- type: 'records',
65
- span: 3,
66
- options: { title: `${lead.name} records`, model: lead.id, limit: 5 },
67
- });
68
- }
69
- return widgets;
45
+ return sectionOverviewDefaults({
46
+ lead: lead ? { ...lead, plural: pluralize(lead.name) } : undefined,
47
+ dataWidgets: true,
48
+ page: page && RECIPE_WIDGET_TYPES.includes(page.type) ? page : undefined,
49
+ override,
50
+ });
70
51
  }
71
52
  const cache = new Map();
72
53
  /**
@@ -74,7 +55,7 @@ const cache = new Map();
74
55
  * `undefined` for an id no overview can have (a hand-edited layout's custom
75
56
  * section id outside the overview id pattern): the page then shows its menu.
76
57
  */
77
- export function sectionOverview(sectionId) {
58
+ export function sectionOverview(sectionId, override) {
78
59
  if (!OVERVIEW_PAGE_ID_PATTERN.test(sectionId))
79
60
  return undefined;
80
61
  let definition = cache.get(sectionId);
@@ -87,7 +68,12 @@ export function sectionOverview(sectionId) {
87
68
  });
88
69
  cache.set(sectionId, definition);
89
70
  }
90
- return definition;
71
+ return override === undefined
72
+ ? definition
73
+ : defineOverview({
74
+ ...definition,
75
+ defaults: defaults(sectionId, override),
76
+ });
91
77
  }
92
78
  /**
93
79
  * A record view's overview id (smrt#3718): `detail:<pkg>.<Model>`, the
@@ -188,8 +174,10 @@ export function detailOverviewFor(id, inApp) {
188
174
  return defineOverview({ ...full, defaults });
189
175
  }
190
176
  /** The definition behind any overview id: a section's or a record view's. */
191
- export function overviewDefinition(id) {
192
- return id.startsWith('detail:') ? detailOverview(id) : sectionOverview(id);
177
+ export function overviewDefinition(id, override) {
178
+ return id.startsWith('detail:')
179
+ ? detailOverview(id)
180
+ : sectionOverview(id, override);
193
181
  }
194
182
  /**
195
183
  * Whether `id` names an overview in a cookbook with this layout: a section a
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;CAClE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,MAAM,oBAAoB,GACnC,kBAAkB,CAcpB"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;CAClE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,MAAM,oBAAoB,GACnC,kBAAkB,CAgBpB"}
@@ -5,6 +5,7 @@
5
5
  * `SectionOverview.svelte` calls this; tests drive the same wiring.
6
6
  */
7
7
  import { createOverview, loadOverview, } from '@happyvertical/smrt-svelte/overview';
8
+ import { sectionOverview } from "./definitions.js";
8
9
  import { overviewRegistry } from "./registry.js";
9
10
  /**
10
11
  * One widget's data from the in-browser source, through the same
@@ -23,7 +24,9 @@ export async function loadSectionWidget(definition, context, widget, signal) {
23
24
  export function createSectionOverview(definition, store, context) {
24
25
  const id = definition.id;
25
26
  return createOverview({
26
- definition,
27
+ definition: id.startsWith('detail:')
28
+ ? definition
29
+ : (sectionOverview(id, store.overview(id)) ?? definition),
27
30
  registry: overviewRegistry,
28
31
  override: () => store.overview(id),
29
32
  onchange: (override) => store.setOverview(id, override),
@@ -110,7 +110,7 @@ export declare const plannerLoaders: {
110
110
  metric: typeof loadMetric;
111
111
  records: typeof loadRecords;
112
112
  chart: typeof loadChart;
113
- shortcuts: CookbookShortcutsLoader;
113
+ shortcuts: (_ctx: WidgetLoadContext, defaults: import("@happyvertical/smrt-svelte/overview").ShortcutEntry[]) => Promise<import("@happyvertical/smrt-svelte/overview").ShortcutEntry[]>;
114
114
  };
115
115
  /** The core widget types a section overview offers. */
116
116
  export declare const CORE_WIDGET_TYPES: readonly ["shortcuts", "metric", "records", "chart", "note"];
@@ -279,7 +279,7 @@ async function loadRecords(options, ctx) {
279
279
  : {}),
280
280
  cells: cellsOf(row),
281
281
  }))),
282
- total: rows.length,
282
+ ...(options.summaries === false ? {} : { total: rows.length }),
283
283
  ...(linked ? { href: listHref(href, found, parent) } : {}),
284
284
  columns,
285
285
  currency: currencyOf(model, rows),
@@ -500,11 +500,11 @@ export const plannerLoaders = {
500
500
  metric: loadMetric,
501
501
  records: loadRecords,
502
502
  chart: loadChart,
503
- shortcuts: loadShortcutCounts,
503
+ shortcuts: async (_ctx, defaults) => defaults,
504
504
  };
505
505
  registerCoreWidgets(overviewRegistry, {
506
506
  ...plannerLoaders,
507
- shortcuts: composeShortcutsLoader(loadShortcutCounts),
507
+ shortcuts: composeShortcutsLoader(),
508
508
  });
509
509
  /**
510
510
  * The record page's own widgets (smrt#3718), registered once on the shared
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAI/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAmCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,OAAO,GACX;IAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CA8BhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,eAAe,GAAG,IAAI,CAexB"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAI/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAmCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,OAAO,GACX;IAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CA4ChE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,eAAe,GAAG,IAAI,CAexB"}
@@ -39,7 +39,7 @@ function without(override, ids) {
39
39
  * checked again, so one bad widget does not cost the visitor the others.
40
40
  */
41
41
  export function checkStoredOverride(id, raw) {
42
- const definition = overviewDefinition(id);
42
+ const definition = overviewDefinition(id, raw);
43
43
  if (!definition) {
44
44
  return {
45
45
  override: null,
@@ -54,8 +54,21 @@ export function checkStoredOverride(id, raw) {
54
54
  };
55
55
  }
56
56
  const first = checkOverviewOverride(definition, raw, overviewRegistry);
57
- if (first.ok)
57
+ if (first.ok) {
58
+ const count = parseOverviewOverride(raw).override?.changed?.count;
59
+ // Keep explicit legacy intent even when a version-only patch is otherwise
60
+ // normalized away. The entire override already passed existing validation.
61
+ if (count && definition.defaults.some((widget) => widget.id === 'count')) {
62
+ return {
63
+ override: {
64
+ ...(first.override ?? { version: 1 }),
65
+ changed: { ...first.override?.changed, count },
66
+ },
67
+ issues: [],
68
+ };
69
+ }
58
70
  return { override: first.override, issues: [] };
71
+ }
59
72
  const parsed = parseOverviewOverride(raw);
60
73
  const bad = new Set(first.issues.flatMap((issue) => (issue.widgetId ? [issue.widgetId] : [])));
61
74
  if (!parsed.override)
@@ -51,6 +51,7 @@ import { PLANNER_TAB_IDS } from './commands/index.js';
51
51
  import { CHEF_HAT_ICON, EXPORT_ICON } from './header-icons.js';
52
52
  import { plannerRuntime } from './instance.js';
53
53
  import PlannerControls from './PlannerControls.svelte';
54
+ import PlannerHostAction from './PlannerHostAction.svelte';
54
55
  import PlannerLifecycle from './PlannerLifecycle.svelte';
55
56
  import { parseModelRoute, recordFilter, splitRoute } from './routes.js';
56
57
  import { plannerAssistantToggle, plannerShellProps } from './shell.js';
@@ -64,11 +65,20 @@ let {
64
65
  basePath,
65
66
  inference,
66
67
  persistence,
68
+ projectPersistence,
67
69
  themeControls = true,
68
70
  defaultTitle = DEFAULT_PLANNER_TITLE,
69
71
  tabs,
70
72
  backLink,
71
73
  onready,
74
+ entryMode = 'browse',
75
+ exportAction,
76
+ headerAction,
77
+ initialConversation,
78
+ cookbookOffers,
79
+ conversationalAction,
80
+ onreset,
81
+ resetDisabledReason,
72
82
  }: PlannerProps = $props();
73
83
 
74
84
  /** The mount's links: its pages are fragment routes, so no host router. */
@@ -78,6 +88,12 @@ const hashHref = (path: string) => `#${path}`;
78
88
  setBasePath(untrack(() => basePath) ?? '', 'hash');
79
89
  /** The assistant exists only when the host gave the planner a model. */
80
90
  const assistant = $derived(inference !== undefined);
91
+ function resetProject() {
92
+ // A hidden session has no public export capability, but still belongs to
93
+ // this project and must not reappear when inference is enabled later.
94
+ if (!assistant) aiState.session.transport.reset();
95
+ onreset?.();
96
+ }
81
97
 
82
98
  const shellCatalog: ComponentProps<typeof CookbookApp>['catalog'] = {
83
99
  recipes: recipes.map(({ id, label, nav, models, group, section }) => ({
@@ -328,6 +344,22 @@ function updateCookbook(next: ComponentProps<typeof CookbookApp>['cookbook']) {
328
344
  }
329
345
 
330
346
  const slotItems = $derived<ShellSlotItem[]>([
347
+ {
348
+ id: 'planner-project',
349
+ label: 'Project settings',
350
+ slot: 'leftSidebar.footer',
351
+ render: projectSettings,
352
+ },
353
+ ...(headerAction
354
+ ? [
355
+ {
356
+ id: 'planner-host-action',
357
+ label: headerAction.label,
358
+ slot: 'header.end' as const,
359
+ render: hostAction,
360
+ },
361
+ ]
362
+ : []),
331
363
  ...(backLink
332
364
  ? [
333
365
  {
@@ -361,6 +393,15 @@ const dockToggles = $derived(
361
393
  );
362
394
  </script>
363
395
 
396
+ {#snippet projectSettings()}
397
+ <HeaderIconLink href="#/configure/settings/" label="Project settings" icon="settings" transitionName="planner-project" current={configuring && plannerTab.active === 'settings'} />
398
+ {/snippet}
399
+ {#snippet hostAction()}
400
+ {#if headerAction}
401
+ <PlannerHostAction action={headerAction} {controller} nativeAssistant={assistant ? aiState.session.transport : undefined} />
402
+ {/if}
403
+ {/snippet}
404
+
364
405
  {#snippet back()}
365
406
  <a class="back" href={backLink?.href} data-planner-back>
366
407
  <span aria-hidden="true">←</span>
@@ -419,7 +460,7 @@ const dockToggles = $derived(
419
460
  `oncookbookchange` and lands in the cookbook's `layout` / `overviews`, so it
420
461
  is saved, exported and imported with the rest of the plan. `loaders`,
421
462
  `widgetContext` and `resolveExport` wire the framework's own section pages
422
- (`CookbookSectionPage`, drawn `plain` with the planner's heading) to the
463
+ (`CookbookSectionPage`, using existing themed cards with the planner's heading) to the
423
464
  sample data; `loaders.shortcuts` adds the record counts.
424
465
  -->
425
466
  <svelte:head>
@@ -446,14 +487,13 @@ const dockToggles = $derived(
446
487
  {...plannerShellProps()}
447
488
  >
448
489
  <ThemeBridge deferInitial={persistence === 'host'} presetOverride={applyCookbookTheme(shell.theme)} />
449
- <PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} links="hash" />
490
+ <PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} {initialConversation} {cookbookOffers} {conversationalAction} nativeAssistant links="hash" />
450
491
  <main class="content">
451
492
  {#if sectionSlug}
452
493
  {#if cookbookStore.loaded}
453
494
  {#key `${sectionSlug}:${dataGeneration}`}
454
495
  <CookbookSectionPage
455
496
  sectionId={sectionIdFromSlug(sectionSlug)}
456
- presentation="plain"
457
497
  heading={sectionHeading}
458
498
  />
459
499
  {/key}
@@ -480,8 +520,10 @@ const dockToggles = $derived(
480
520
  {/key}
481
521
  {:else if applied && model}
482
522
  <ModelWorkspace model={applied.model} fields={applied.fields} {forms} {scope} {preset} title={entryWords.heading} noun={listNoun} href={hashHref} />
523
+ {:else if entryMode === 'planning' && recipeState.ids.length === 0 && recipeState.features.length === 0 && (!route || /^\/configure\/?$/.test(route))}
524
+ <section aria-label="App planning" role="status"><h1>Your app starts here</h1><p>The planner will show your app here as we plan it.</p><a href="#/configure/cookbooks/">Browse cookbooks</a></section>
483
525
  {:else}
484
- <PlannerControls {controller} {basePath} {inference} {persistence} {themeControls} {tabs} managedByParent layout="shell" advancedStylesHref="#/advanced-styles/" />
526
+ <PlannerControls onreset={resetProject} {resetDisabledReason} {exportAction} {projectPersistence} nativeAssistant={assistant ? aiState.session.transport : undefined} {controller} {basePath} {inference} {persistence} {themeControls} {tabs} managedByParent layout="shell" advancedStylesHref="#/advanced-styles/" />
485
527
  {/if}
486
528
  </main>
487
529
  </CookbookApp>
@@ -1 +1 @@
1
- {"version":3,"file":"Planner.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/Planner.svelte.ts"],"names":[],"mappings":"AA6DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAya/C,QAAA,MAAM,OAAO,kDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Planner.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/Planner.svelte.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAod/C,QAAA,MAAM,OAAO,kDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -7,6 +7,7 @@ import {
7
7
  } from '@happyvertical/smrt-svelte/workspace';
8
8
  import { Tabs } from '@happyvertical/smrt-ui';
9
9
  import { onMount, tick, untrack } from 'svelte';
10
+ import type { BrowserAssistantTransport } from '../assistant/transport.js';
10
11
  import CookbooksPanel from '../components/CookbooksPanel.svelte';
11
12
  import ExportPanel from '../components/ExportPanel.svelte';
12
13
  import FeaturesPanel from '../components/FeaturesPanel.svelte';
@@ -23,6 +24,7 @@ import { plannerController } from './instance.js';
23
24
  import PlannerLifecycle from './PlannerLifecycle.svelte';
24
25
  import { plannerTab } from './tab.svelte.js';
25
26
  import type { PlannerProps } from './types.js';
27
+ import { workspacePersistence } from './workspace.svelte.js';
26
28
 
27
29
  /**
28
30
  * The planner's customization controls alone (Cookbooks, Recipes, Theme,
@@ -36,6 +38,7 @@ interface PlannerControlsProps extends PlannerProps {
36
38
  * controls do not mount a second one.
37
39
  */
38
40
  managedByParent?: boolean;
41
+ nativeAssistant?: BrowserAssistantTransport;
39
42
  }
40
43
 
41
44
  const DEFAULT_TABS: PlannerTabId[] = [
@@ -53,13 +56,26 @@ let {
53
56
  inference,
54
57
  layout = 'own',
55
58
  persistence = 'self',
59
+ projectPersistence,
56
60
  themeControls = false,
57
61
  advancedStylesHref,
58
62
  tabs = DEFAULT_TABS,
59
63
  onready,
64
+ exportAction,
65
+ nativeAssistant,
66
+ onreset,
67
+ resetDisabledReason,
60
68
  managedByParent = false,
61
69
  }: PlannerControlsProps = $props();
62
70
 
71
+ const projectStorage = $derived(
72
+ projectPersistence === undefined
73
+ ? persistence === 'self'
74
+ ? workspacePersistence
75
+ : null
76
+ : projectPersistence,
77
+ );
78
+
63
79
  // Generated views and the Cookbooks tab read sample records from a data
64
80
  // source: use the host's, else make the planner's own.
65
81
  if (!tryUseDataSource()) provideDataSource(createPlannerDataSource());
@@ -183,10 +199,10 @@ $effect(() => {
183
199
  <div hidden={active !== 'theme'}><ThemeSection provider={themeControls} {advancedStylesHref} /></div>
184
200
  {/if}
185
201
  {#if reachable.includes('settings')}
186
- <div hidden={active !== 'settings'}><SettingsPanel /></div>
202
+ <div hidden={active !== 'settings'}><SettingsPanel projectPersistence={projectStorage} {controller} {nativeAssistant} {onreset} {resetDisabledReason} /></div>
187
203
  {/if}
188
204
  {#if reachable.includes('export')}
189
- <div hidden={active !== 'export'}><ExportPanel /></div>
205
+ <div hidden={active !== 'export'}><ExportPanel {exportAction} {controller} {nativeAssistant} {onreset} {resetDisabledReason} /></div>
190
206
  {/if}
191
207
  </Tabs>
192
208
  </div>
@@ -1,3 +1,4 @@
1
+ import type { BrowserAssistantTransport } from '../assistant/transport.ts';
1
2
  import type { PlannerProps } from './types.ts';
2
3
  /**
3
4
  * The planner's customization controls alone (Cookbooks, Recipes, Theme,
@@ -11,6 +12,7 @@ interface PlannerControlsProps extends PlannerProps {
11
12
  * controls do not mount a second one.
12
13
  */
13
14
  managedByParent?: boolean;
15
+ nativeAssistant?: BrowserAssistantTransport;
14
16
  }
15
17
  declare const PlannerControls: import("svelte").Component<PlannerControlsProps, {}, "">;
16
18
  type PlannerControls = ReturnType<typeof PlannerControls>;
@@ -1 +1 @@
1
- {"version":3,"file":"PlannerControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerControls.svelte.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;GAIG;AACH,UAAU,oBAAqB,SAAQ,YAAY;IACjD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4LD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"PlannerControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerControls.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAgB3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;GAIG;AACH,UAAU,oBAAqB,SAAQ,YAAY;IACjD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AA2MD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import {
3
+ shellTargetAction,
4
+ tryUseShellTargets,
5
+ } from '@happyvertical/smrt-svelte/workspace';
6
+ import { Button } from '@happyvertical/smrt-ui';
7
+ import type { BrowserAssistantTransport } from '../assistant/transport.js';
8
+ import type { PlannerController } from './commands/index.js';
9
+ import { capturePlannerExport } from './export-context.js';
10
+ import { plannerController } from './instance.js';
11
+ import type { PlannerExportAction } from './types.js';
12
+
13
+ interface Props {
14
+ action: PlannerExportAction;
15
+ controller?: PlannerController;
16
+ nativeAssistant?: BrowserAssistantTransport;
17
+ }
18
+ let {
19
+ action,
20
+ controller = plannerController,
21
+ nativeAssistant,
22
+ }: Props = $props();
23
+ const target = shellTargetAction(tryUseShellTargets());
24
+ let pending = $state(false);
25
+ let busy = $state(false);
26
+ let error = $state('');
27
+ $effect(() => {
28
+ busy = nativeAssistant?.busy ?? false;
29
+ return nativeAssistant?.subscribeConversation(() => {
30
+ busy = nativeAssistant?.busy ?? false;
31
+ });
32
+ });
33
+ async function run() {
34
+ if (pending || busy) return;
35
+ error = '';
36
+ pending = true;
37
+ try {
38
+ await action.run(capturePlannerExport(controller, nativeAssistant));
39
+ } catch (cause) {
40
+ error =
41
+ cause instanceof Error
42
+ ? cause.message
43
+ : 'The action could not finish. Try again.';
44
+ } finally {
45
+ pending = false;
46
+ }
47
+ }
48
+ </script>
49
+
50
+ <div use:target={'item:planner-host-action'} class="host-action" data-planner-host-action>
51
+ <Button disabled={pending || busy} onclick={run}>{action.label}</Button>
52
+ {#if error}<span class="action-error" role="alert">{error}</span>{/if}
53
+ </div>
54
+
55
+ <style>
56
+ @layer smrt.reset, smrt.structure, smrt.theme;
57
+ @layer smrt.theme {
58
+ .host-action { position: relative; flex-shrink: 0; }
59
+ .action-error { position: absolute; inset-block-start: 100%; inset-inline-end: 0; inline-size: min(20rem, 80vw); padding: var(--smrt-spacing-2); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); border: var(--smrt-hairline); border-radius: var(--smrt-radius-small); z-index: var(--smrt-z-index-popover); }
60
+ }
61
+ </style>
@@ -0,0 +1,12 @@
1
+ import type { BrowserAssistantTransport } from '../assistant/transport.ts';
2
+ import type { PlannerController } from './commands/index.ts';
3
+ import type { PlannerExportAction } from './types.ts';
4
+ interface Props {
5
+ action: PlannerExportAction;
6
+ controller?: PlannerController;
7
+ nativeAssistant?: BrowserAssistantTransport;
8
+ }
9
+ declare const PlannerHostAction: import("svelte").Component<Props, {}, "">;
10
+ type PlannerHostAction = ReturnType<typeof PlannerHostAction>;
11
+ export default PlannerHostAction;
12
+ //# sourceMappingURL=PlannerHostAction.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlannerHostAction.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerHostAction.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,UAAU,KAAK;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AAmDD,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}