@happyvertical/smrt-planner 0.57.18 → 0.57.20

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 (549) hide show
  1. package/README.md +25 -0
  2. package/agents/commands.md +3 -0
  3. package/agents/cookbook.md +4 -1
  4. package/app/404.html +21 -21
  5. package/app/_app/immutable/assets/0.BwSv64V0.css +1 -0
  6. package/app/_app/immutable/assets/{2.D3Ee82Nk.css → 2.BSQtjEJf.css} +1 -1
  7. package/app/_app/immutable/chunks/{D18ccNbM.js → -2dfZP6X.js} +1 -1
  8. package/app/_app/immutable/chunks/{BEfnNZ_r.js → 1Uq1awDD.js} +1 -1
  9. package/app/_app/immutable/chunks/5I4x_KS6.js +1 -0
  10. package/app/_app/immutable/chunks/{CYV1bZYS.js → 7y8ldvJX.js} +2 -2
  11. package/app/_app/immutable/chunks/{BqoDi2ah.js → B1Pf2l_R.js} +21 -21
  12. package/app/_app/immutable/chunks/B2aomX_k.js +1 -0
  13. package/app/_app/immutable/chunks/{D4ZXuDn5.js → BE4TZ3aw.js} +1 -1
  14. package/app/_app/immutable/chunks/{CckqctPA.js → BL2JRgxi.js} +1 -1
  15. package/app/_app/immutable/chunks/{WxmttVik.js → BdMHVrP7.js} +1 -1
  16. package/app/_app/immutable/chunks/{CEnFvaV_.js → Bns8l-x1.js} +1 -1
  17. package/app/_app/immutable/chunks/{BkH1cevg.js → CLySd19b.js} +1 -1
  18. package/app/_app/immutable/chunks/{D4xI8dt4.js → CM3HdjYi.js} +1 -1
  19. package/app/_app/immutable/chunks/{B094Upwj.js → CRGGx5Lw.js} +1 -1
  20. package/app/_app/immutable/chunks/{cgG95It7.js → CYCgPm88.js} +1 -1
  21. package/app/_app/immutable/chunks/CeUbBJTD.js +1 -0
  22. package/app/_app/immutable/chunks/{3YcXW6yo.js → CgE1Gcro.js} +1 -1
  23. package/app/_app/immutable/chunks/{B6l3em0z.js → CmAUvRQx.js} +1 -1
  24. package/app/_app/immutable/chunks/{BSd70kcz.js → CpP-dbYB.js} +1 -1
  25. package/app/_app/immutable/chunks/{CmzwyvUc.js → Cw26E4UG.js} +1 -1
  26. package/app/_app/immutable/chunks/{CRAFzMd4.js → Cy7yT1On.js} +3 -3
  27. package/app/_app/immutable/chunks/{masgq8Qh.js → D7WLtlpw.js} +1 -1
  28. package/app/_app/immutable/chunks/{BMzaHFhM.js → DADOPup4.js} +1 -1
  29. package/app/_app/immutable/chunks/{B5cHPql0.js → DC203NCO.js} +1 -1
  30. package/app/_app/immutable/chunks/{qBSxbVXE.js → DDIQ8W6V.js} +1 -1
  31. package/app/_app/immutable/chunks/{DNKv-5Rn.js → DKgADWce.js} +1 -1
  32. package/app/_app/immutable/chunks/{BKaViC3K.js → DNpuZXha.js} +1 -1
  33. package/app/_app/immutable/chunks/{yoo-DzHO.js → DYS_WKPd.js} +1 -1
  34. package/app/_app/immutable/chunks/DYku8Hqx.js +1 -0
  35. package/app/_app/immutable/chunks/{CR7v6iSc.js → DfD9dv_l.js} +1 -1
  36. package/app/_app/immutable/chunks/{Bs5WxZDd.js → Qxx7HWld.js} +1 -1
  37. package/app/_app/immutable/chunks/{C3_MyZ8U.js → agvanIM7.js} +2 -2
  38. package/app/_app/immutable/chunks/{Cwt6a32V.js → juz5EBPL.js} +1 -1
  39. package/app/_app/immutable/entry/{app.Bfo_XQ_u.js → app.UfGUpLlK.js} +2 -2
  40. package/app/_app/immutable/entry/start.BAb-NXu1.js +1 -0
  41. package/app/_app/immutable/nodes/0.CVYFDYxr.js +7 -0
  42. package/app/_app/immutable/nodes/{1.BIIgo6hP.js → 1.CJEHWdw8.js} +1 -1
  43. package/app/_app/immutable/nodes/{10.p-z5jbqI.js → 10._eiewXMR.js} +1 -1
  44. package/app/_app/immutable/nodes/{11.DikmsDwP.js → 11.Dp8fmXsX.js} +1 -1
  45. package/app/_app/immutable/nodes/{12.OJHha47l.js → 12.bKzQ9OLN.js} +1 -1
  46. package/app/_app/immutable/nodes/{13.B5uFEHhN.js → 13.DaudqCzg.js} +1 -1
  47. package/app/_app/immutable/nodes/{14.DSqhro7V.js → 14.ZMVp9EbO.js} +1 -1
  48. package/app/_app/immutable/nodes/2.BEaYX5kW.js +26 -0
  49. package/app/_app/immutable/nodes/{3.4GrrsC59.js → 3.XnNGal1u.js} +1 -1
  50. package/app/_app/immutable/nodes/{4.CyWWMczB.js → 4.CczBNlYL.js} +1 -1
  51. package/app/_app/immutable/nodes/{5.B3AevRqW.js → 5.D0-S4wqa.js} +1 -1
  52. package/app/_app/immutable/nodes/{6.DOjCozUO.js → 6.DiqKNjHf.js} +1 -1
  53. package/app/_app/immutable/nodes/{7.BVKnH6b6.js → 7.CzhUZRpM.js} +1 -1
  54. package/app/_app/immutable/nodes/{8.wnGurkrO.js → 8.BwuGOj43.js} +1 -1
  55. package/app/_app/immutable/nodes/{9.PyL2mnd3.js → 9.C9C4Mx7X.js} +1 -1
  56. package/app/_app/version.json +1 -1
  57. package/app/advanced-styles/index.html +25 -25
  58. package/app/ai/index.html +28 -28
  59. package/app/blueprint/index.html +23 -23
  60. package/app/cookbook/index.html +23 -23
  61. package/app/index.html +36 -32
  62. package/app/m/ads/AdDeliveryTier/index.html +27 -27
  63. package/app/m/ads/AdEvent/index.html +27 -27
  64. package/app/m/ads/AdFormat/index.html +27 -27
  65. package/app/m/ads/AdGroup/index.html +27 -27
  66. package/app/m/ads/AdVariation/index.html +27 -27
  67. package/app/m/analytics/AnalyticsDataStream/index.html +27 -27
  68. package/app/m/analytics/AnalyticsEvent/index.html +27 -27
  69. package/app/m/analytics/AnalyticsProperty/index.html +27 -27
  70. package/app/m/analytics/AnalyticsReport/index.html +27 -27
  71. package/app/m/approvals/ApprovalEvent/index.html +27 -27
  72. package/app/m/approvals/ApprovalPolicy/index.html +27 -27
  73. package/app/m/approvals/ApprovalRequest/index.html +27 -27
  74. package/app/m/assets/Asset/attachments/index.html +28 -28
  75. package/app/m/assets/Asset/index.html +27 -27
  76. package/app/m/assets/AssetAssociation/index.html +27 -27
  77. package/app/m/assets/AssetMetafield/index.html +27 -27
  78. package/app/m/assets/AssetStatus/index.html +27 -27
  79. package/app/m/assets/AssetType/index.html +27 -27
  80. package/app/m/assets/Folder/index.html +27 -27
  81. package/app/m/chat/AgentSession/index.html +27 -27
  82. package/app/m/chat/ChatMessage/index.html +27 -27
  83. package/app/m/chat/ChatParticipant/index.html +27 -27
  84. package/app/m/chat/ChatReaction/index.html +27 -27
  85. package/app/m/chat/ChatRoom/index.html +27 -27
  86. package/app/m/chat/ChatThread/index.html +27 -27
  87. package/app/m/chat/VoiceGatewayTurn/index.html +27 -27
  88. package/app/m/chat/VoiceSession/index.html +27 -27
  89. package/app/m/commerce/Agreement/index.html +27 -27
  90. package/app/m/commerce/Cart/index.html +27 -27
  91. package/app/m/commerce/Contract/index.html +27 -27
  92. package/app/m/commerce/ContractLineItem/index.html +27 -27
  93. package/app/m/commerce/Customer/index.html +27 -27
  94. package/app/m/commerce/DocumentTax/index.html +27 -27
  95. package/app/m/commerce/Estimate/index.html +27 -27
  96. package/app/m/commerce/Fulfillment/index.html +27 -27
  97. package/app/m/commerce/FulfillmentLineItem/index.html +27 -27
  98. package/app/m/commerce/HistoricalCustomerFunds/index.html +27 -27
  99. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +27 -27
  100. package/app/m/commerce/HistoricalSalesLine/index.html +27 -27
  101. package/app/m/commerce/Invoice/index.html +27 -27
  102. package/app/m/commerce/InvoiceLineItem/index.html +27 -27
  103. package/app/m/commerce/Lease/index.html +27 -27
  104. package/app/m/commerce/LicenseSale/index.html +27 -27
  105. package/app/m/commerce/Order/index.html +27 -27
  106. package/app/m/commerce/Payment/index.html +27 -27
  107. package/app/m/commerce/PaymentAllocation/index.html +27 -27
  108. package/app/m/commerce/PaymentInstrument/index.html +27 -27
  109. package/app/m/commerce/PaymentIntent/index.html +27 -27
  110. package/app/m/commerce/Payout/index.html +27 -27
  111. package/app/m/commerce/ProductionOrder/index.html +27 -27
  112. package/app/m/commerce/PurchaseContract/index.html +27 -27
  113. package/app/m/commerce/PurchaseOrder/index.html +27 -27
  114. package/app/m/commerce/SalesContract/index.html +27 -27
  115. package/app/m/commerce/SupplierQuote/index.html +27 -27
  116. package/app/m/commerce/TaxCode/index.html +27 -27
  117. package/app/m/commerce/TaxComponent/index.html +27 -27
  118. package/app/m/commerce/TaxSettings/index.html +27 -27
  119. package/app/m/commerce/TaxSummaryReport/index.html +27 -27
  120. package/app/m/commerce/TenantPaymentAccount/index.html +27 -27
  121. package/app/m/commerce/Vendor/index.html +27 -27
  122. package/app/m/commerce/WholesaleOrder/index.html +27 -27
  123. package/app/m/content/Content/index.html +27 -27
  124. package/app/m/content/ContentContribution/index.html +27 -27
  125. package/app/m/content/ContentContributionAttachment/index.html +27 -27
  126. package/app/m/content/ContentContributionRevision/index.html +27 -27
  127. package/app/m/content/ContentContributionType/index.html +27 -27
  128. package/app/m/content/ContentContributor/index.html +27 -27
  129. package/app/m/content/ContentCorrection/index.html +27 -27
  130. package/app/m/content/ContentFeedSource/index.html +27 -27
  131. package/app/m/content/ContentGovernanceAssignment/index.html +27 -27
  132. package/app/m/content/ContentGovernancePolicy/index.html +27 -27
  133. package/app/m/content/ContentGovernanceProfile/index.html +27 -27
  134. package/app/m/content/ContentReference/index.html +27 -27
  135. package/app/m/content/ContentReview/index.html +27 -27
  136. package/app/m/content/ContentVersion/index.html +27 -27
  137. package/app/m/events/Event/index.html +27 -27
  138. package/app/m/events/EventParticipant/index.html +27 -27
  139. package/app/m/events/EventSeries/index.html +27 -27
  140. package/app/m/events/EventType/index.html +27 -27
  141. package/app/m/expenses/Expense/index.html +27 -27
  142. package/app/m/facts/Fact/index.html +27 -27
  143. package/app/m/facts/FactContent/index.html +27 -27
  144. package/app/m/facts/FactEvidence/index.html +27 -27
  145. package/app/m/facts/FactSource/index.html +27 -27
  146. package/app/m/facts/FactSubject/index.html +27 -27
  147. package/app/m/facts/FactTag/index.html +27 -27
  148. package/app/m/fields/FieldPolicy/index.html +27 -27
  149. package/app/m/fields/FieldPolicySuggestion/index.html +27 -27
  150. package/app/m/fields/FieldUsageCounter/index.html +27 -27
  151. package/app/m/images/Image/index.html +27 -27
  152. package/app/m/inventory/InventoryLocation/index.html +27 -27
  153. package/app/m/inventory/Lot/index.html +27 -27
  154. package/app/m/inventory/LotCorrection/index.html +27 -27
  155. package/app/m/inventory/LotDocument/index.html +27 -27
  156. package/app/m/inventory/LotStockLevel/index.html +27 -27
  157. package/app/m/inventory/LotUsage/index.html +27 -27
  158. package/app/m/inventory/StockLevel/index.html +27 -27
  159. package/app/m/inventory/StockMovement/index.html +27 -27
  160. package/app/m/ledgers/Account/index.html +27 -27
  161. package/app/m/ledgers/Journal/index.html +27 -27
  162. package/app/m/ledgers/JournalEntry/index.html +27 -27
  163. package/app/m/ledgers/Ledger/index.html +27 -27
  164. package/app/m/manufacturing/Assembly/index.html +27 -27
  165. package/app/m/manufacturing/BillOfMaterials/index.html +27 -27
  166. package/app/m/manufacturing/BomLine/index.html +27 -27
  167. package/app/m/manufacturing/Operation/index.html +27 -27
  168. package/app/m/manufacturing/ProductionRun/index.html +27 -27
  169. package/app/m/manufacturing/ProductionRunCompletion/index.html +27 -27
  170. package/app/m/manufacturing/RoutingStep/index.html +27 -27
  171. package/app/m/marketing/Campaign/index.html +27 -27
  172. package/app/m/marketing/CampaignChannel/index.html +27 -27
  173. package/app/m/marketing/CampaignMetricSnapshot/index.html +27 -27
  174. package/app/m/messages/Account/index.html +27 -27
  175. package/app/m/messages/Attachment/index.html +27 -27
  176. package/app/m/messages/Blacklist/index.html +27 -27
  177. package/app/m/messages/Email/failed-sends/index.html +28 -28
  178. package/app/m/messages/Email/index.html +27 -27
  179. package/app/m/messages/Email/mailbox/index.html +28 -28
  180. package/app/m/messages/EmailAccount/index.html +27 -27
  181. package/app/m/messages/EmailAttachment/index.html +27 -27
  182. package/app/m/messages/EmailFolder/index.html +27 -27
  183. package/app/m/messages/Message/index.html +27 -27
  184. package/app/m/messages/MessagingEndpoint/index.html +27 -27
  185. package/app/m/messages/PersonaMessageRoute/index.html +27 -27
  186. package/app/m/messages/SlackAccount/index.html +27 -27
  187. package/app/m/messages/SlackMessage/index.html +27 -27
  188. package/app/m/messages/TelegramAccount/index.html +27 -27
  189. package/app/m/messages/Tweet/index.html +27 -27
  190. package/app/m/messages/TwitterAccount/index.html +27 -27
  191. package/app/m/messages/Whitelist/index.html +27 -27
  192. package/app/m/messages/ZulipAccount/index.html +27 -27
  193. package/app/m/places/Place/index.html +27 -27
  194. package/app/m/places/PlaceType/index.html +27 -27
  195. package/app/m/products/Category/index.html +27 -27
  196. package/app/m/products/Material/index.html +27 -27
  197. package/app/m/products/Product/index.html +27 -27
  198. package/app/m/products/Product/ingredients/index.html +28 -28
  199. package/app/m/products/ProductVariant/index.html +27 -27
  200. package/app/m/products/Sku/index.html +27 -27
  201. package/app/m/profiles/ApiKey/index.html +27 -27
  202. package/app/m/profiles/Bot/index.html +27 -27
  203. package/app/m/profiles/MagicLinkToken/index.html +27 -27
  204. package/app/m/profiles/NostrIdentity/index.html +27 -27
  205. package/app/m/profiles/OidcIdentity/index.html +27 -27
  206. package/app/m/profiles/Organization/index.html +27 -27
  207. package/app/m/profiles/Person/index.html +27 -27
  208. package/app/m/profiles/Profile/index.html +27 -27
  209. package/app/m/profiles/ProfileMetadata/index.html +27 -27
  210. package/app/m/profiles/ProfileMetafield/index.html +27 -27
  211. package/app/m/profiles/ProfileRelationship/index.html +27 -27
  212. package/app/m/profiles/ProfileRelationshipTerm/index.html +27 -27
  213. package/app/m/profiles/ProfileRelationshipType/index.html +27 -27
  214. package/app/m/profiles/ProfileType/index.html +27 -27
  215. package/app/m/projects/Comment/index.html +27 -27
  216. package/app/m/projects/Issue/index.html +27 -27
  217. package/app/m/projects/Label/index.html +27 -27
  218. package/app/m/projects/Project/index.html +27 -27
  219. package/app/m/projects/ProjectIntegration/index.html +27 -27
  220. package/app/m/projects/PullRequest/index.html +27 -27
  221. package/app/m/projects/Repository/index.html +27 -27
  222. package/app/m/properties/Property/index.html +27 -27
  223. package/app/m/properties/Zone/index.html +27 -27
  224. package/app/m/reports/RuntimeReport/index.html +27 -27
  225. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +27 -27
  226. package/app/m/reports/SmrtReportLock/index.html +27 -27
  227. package/app/m/reports/SmrtReportRefreshTask/index.html +27 -27
  228. package/app/m/reports/SmrtReportRun/index.html +27 -27
  229. package/app/m/reports/SmrtReportSchedule/index.html +27 -27
  230. package/app/m/reports/SmrtReportWatermark/index.html +27 -27
  231. package/app/m/sales/Agreement/index.html +27 -27
  232. package/app/m/sales/AttributionException/index.html +27 -27
  233. package/app/m/sales/AttributionPolicy/index.html +27 -27
  234. package/app/m/sales/Commission/index.html +27 -27
  235. package/app/m/sales/CommissionAdjustment/index.html +27 -27
  236. package/app/m/sales/CommissionPayout/index.html +27 -27
  237. package/app/m/sales/CommissionPlan/index.html +27 -27
  238. package/app/m/sales/Earner/index.html +27 -27
  239. package/app/m/sales/EarnerSourceAttribution/index.html +27 -27
  240. package/app/m/sales/EarningEvent/index.html +27 -27
  241. package/app/m/sales/ExecutedAgreement/index.html +27 -27
  242. package/app/m/sales/Lead/index.html +27 -27
  243. package/app/m/sales/Opportunity/index.html +27 -27
  244. package/app/m/sales/OpportunityConversion/index.html +27 -27
  245. package/app/m/sales/PipelineDefinition/index.html +27 -27
  246. package/app/m/sales/PipelineStage/index.html +27 -27
  247. package/app/m/sales/Referral/index.html +27 -27
  248. package/app/m/sales/ReferralAgreement/index.html +27 -27
  249. package/app/m/sales/ReferralLink/index.html +27 -27
  250. package/app/m/sales/ReferralProgram/index.html +27 -27
  251. package/app/m/sales/ReferralTermSnapshot/index.html +27 -27
  252. package/app/m/sales/ReferralTouch/index.html +27 -27
  253. package/app/m/sales/Referrer/index.html +27 -27
  254. package/app/m/sales/SalesActivity/index.html +27 -27
  255. package/app/m/sales/SalesRepresentative/index.html +27 -27
  256. package/app/m/sites/Site/index.html +27 -27
  257. package/app/m/sites/SiteAgentBinding/index.html +27 -27
  258. package/app/m/social/OAuthState/index.html +27 -27
  259. package/app/m/social/SocialAccount/index.html +27 -27
  260. package/app/m/social/SocialPost/index.html +27 -27
  261. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +27 -27
  262. package/app/m/subscriptions/BillingAdjustment/index.html +27 -27
  263. package/app/m/subscriptions/ClientCharge/index.html +27 -27
  264. package/app/m/subscriptions/CreditGrant/index.html +27 -27
  265. package/app/m/subscriptions/PricingRule/index.html +27 -27
  266. package/app/m/subscriptions/RetailCharge/index.html +27 -27
  267. package/app/m/subscriptions/SpendingPolicy/index.html +27 -27
  268. package/app/m/subscriptions/SubscriptionPlan/index.html +27 -27
  269. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +27 -27
  270. package/app/m/subscriptions/TenantSubscription/index.html +27 -27
  271. package/app/m/subscriptions/TenantUsageMetric/index.html +27 -27
  272. package/app/m/support/ServiceTimeEntry/index.html +27 -27
  273. package/app/m/support/SupportAiRun/index.html +27 -27
  274. package/app/m/support/SupportAvailability/index.html +27 -27
  275. package/app/m/support/SupportCase/index.html +27 -27
  276. package/app/m/support/SupportCaseEvent/index.html +27 -27
  277. package/app/m/support/SupportChannelBinding/index.html +27 -27
  278. package/app/m/support/SupportCharge/index.html +27 -27
  279. package/app/m/support/SupportCompensation/index.html +27 -27
  280. package/app/m/support/SupportCompensationPlan/index.html +27 -27
  281. package/app/m/support/SupportEscalation/index.html +27 -27
  282. package/app/m/support/SupportInteraction/index.html +27 -27
  283. package/app/m/support/SupportPlan/index.html +27 -27
  284. package/app/m/support/SupportPolicy/index.html +27 -27
  285. package/app/m/support/SupportQualification/index.html +27 -27
  286. package/app/m/support/SupportServiceTarget/index.html +27 -27
  287. package/app/m/support/SupportSpecialist/index.html +27 -27
  288. package/app/m/support/SupportWorkLink/index.html +27 -27
  289. package/app/m/tags/Tag/index.html +27 -27
  290. package/app/m/tags/TagAlias/index.html +27 -27
  291. package/app/m/timesheets/AttendanceBreak/index.html +27 -27
  292. package/app/m/timesheets/AttendancePunch/index.html +27 -27
  293. package/app/m/timesheets/AttendanceSegment/index.html +27 -27
  294. package/app/m/timesheets/ServiceChargeSnapshot/index.html +27 -27
  295. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +27 -27
  296. package/app/m/timesheets/ServiceTimeEntry/index.html +27 -27
  297. package/app/m/users/Group/index.html +27 -27
  298. package/app/m/users/GroupMember/index.html +27 -27
  299. package/app/m/users/GroupRole/index.html +27 -27
  300. package/app/m/users/Membership/index.html +27 -27
  301. package/app/m/users/MembershipOverride/index.html +27 -27
  302. package/app/m/users/Permission/index.html +27 -27
  303. package/app/m/users/Role/index.html +27 -27
  304. package/app/m/users/RolePermission/index.html +27 -27
  305. package/app/m/users/Session/index.html +27 -27
  306. package/app/m/users/Tenant/index.html +27 -27
  307. package/app/m/users/TenantIntegration/index.html +27 -27
  308. package/app/m/users/TenantPermissionOverride/index.html +27 -27
  309. package/app/m/users/User/index.html +27 -27
  310. package/app/m/video/Character/index.html +27 -27
  311. package/app/m/video/CharacterAsset/index.html +27 -27
  312. package/app/m/video/CompositeJob/index.html +27 -27
  313. package/app/m/video/Performer/index.html +27 -27
  314. package/app/m/video/PerformerAsset/index.html +27 -27
  315. package/app/m/video/Scene/index.html +27 -27
  316. package/app/m/video/SceneAsset/index.html +27 -27
  317. package/app/m/video/VideoComposition/index.html +27 -27
  318. package/app/m/video/VideoCompositionAsset/index.html +27 -27
  319. package/app/m/video/VideoSequence/index.html +27 -27
  320. package/app/m/video/VideoSequenceAsset/index.html +27 -27
  321. package/app/m/video/VideoShot/index.html +27 -27
  322. package/app/m/video/VideoShotAsset/index.html +27 -27
  323. package/app/m/video/VideoShotCharacter/index.html +27 -27
  324. package/app/m/video/VideoWorkflow/index.html +27 -27
  325. package/app/m/voice/VoiceOutput/index.html +27 -27
  326. package/app/m/voice/VoiceProfile/index.html +27 -27
  327. package/app/m/voice/VoiceSample/index.html +27 -27
  328. package/app/mcp.html +2 -2
  329. package/app/packages/ads/index.html +24 -24
  330. package/app/packages/analytics/index.html +24 -24
  331. package/app/packages/approvals/index.html +24 -24
  332. package/app/packages/assets/index.html +24 -24
  333. package/app/packages/chat/index.html +24 -24
  334. package/app/packages/comments/index.html +24 -24
  335. package/app/packages/commerce/index.html +24 -24
  336. package/app/packages/content/index.html +24 -24
  337. package/app/packages/events/index.html +24 -24
  338. package/app/packages/expenses/index.html +24 -24
  339. package/app/packages/facts/index.html +24 -24
  340. package/app/packages/fields/index.html +24 -24
  341. package/app/packages/human-resources/index.html +24 -24
  342. package/app/packages/images/index.html +24 -24
  343. package/app/packages/index.html +24 -24
  344. package/app/packages/ingestion/index.html +24 -24
  345. package/app/packages/inventory/index.html +24 -24
  346. package/app/packages/ledgers/index.html +24 -24
  347. package/app/packages/manufacturing/index.html +24 -24
  348. package/app/packages/marketing/index.html +24 -24
  349. package/app/packages/messages/index.html +24 -24
  350. package/app/packages/places/index.html +24 -24
  351. package/app/packages/preferences/index.html +24 -24
  352. package/app/packages/products/index.html +24 -24
  353. package/app/packages/profiles/index.html +24 -24
  354. package/app/packages/projects/index.html +24 -24
  355. package/app/packages/properties/index.html +24 -24
  356. package/app/packages/reports/index.html +24 -24
  357. package/app/packages/sales/index.html +24 -24
  358. package/app/packages/sites/index.html +24 -24
  359. package/app/packages/social/index.html +24 -24
  360. package/app/packages/subscriptions/index.html +24 -24
  361. package/app/packages/support/index.html +24 -24
  362. package/app/packages/tags/index.html +24 -24
  363. package/app/packages/timesheets/index.html +24 -24
  364. package/app/packages/users/index.html +24 -24
  365. package/app/packages/video/index.html +24 -24
  366. package/app/packages/voice/index.html +24 -24
  367. package/app/packages/webhooks/index.html +24 -24
  368. package/app/recipes/account-access/help/index.html +25 -25
  369. package/app/recipes/account-access/index.html +27 -27
  370. package/app/recipes/activity/help/index.html +25 -25
  371. package/app/recipes/activity/index.html +27 -27
  372. package/app/recipes/agreements/help/index.html +25 -25
  373. package/app/recipes/agreements/index.html +27 -27
  374. package/app/recipes/analytics.reports/help/index.html +25 -25
  375. package/app/recipes/analytics.reports/index.html +27 -27
  376. package/app/recipes/assets/help/index.html +25 -25
  377. package/app/recipes/assets/index.html +27 -27
  378. package/app/recipes/billing/help/index.html +25 -25
  379. package/app/recipes/billing/index.html +27 -27
  380. package/app/recipes/chat.assistant/help/index.html +25 -25
  381. package/app/recipes/chat.assistant/index.html +27 -27
  382. package/app/recipes/comments/help/index.html +25 -25
  383. package/app/recipes/comments/index.html +27 -27
  384. package/app/recipes/commerce.customers/help/index.html +25 -25
  385. package/app/recipes/commerce.customers/index.html +27 -27
  386. package/app/recipes/commerce.estimates/help/index.html +25 -25
  387. package/app/recipes/commerce.estimates/index.html +27 -27
  388. package/app/recipes/commerce.purchases/help/index.html +25 -25
  389. package/app/recipes/commerce.purchases/index.html +27 -27
  390. package/app/recipes/commerce.sales/help/index.html +25 -25
  391. package/app/recipes/commerce.sales/index.html +27 -27
  392. package/app/recipes/commerce.vendors/help/index.html +25 -25
  393. package/app/recipes/commerce.vendors/index.html +27 -27
  394. package/app/recipes/commerce.wholesale/help/index.html +25 -25
  395. package/app/recipes/commerce.wholesale/index.html +27 -27
  396. package/app/recipes/events.calendar/help/index.html +25 -25
  397. package/app/recipes/events.calendar/index.html +27 -27
  398. package/app/recipes/expenses.tracking/help/index.html +25 -25
  399. package/app/recipes/expenses.tracking/index.html +27 -27
  400. package/app/recipes/fields.form-customization/help/index.html +25 -25
  401. package/app/recipes/fields.form-customization/index.html +27 -27
  402. package/app/recipes/ingestion/help/index.html +25 -25
  403. package/app/recipes/ingestion/index.html +27 -27
  404. package/app/recipes/integrations/help/index.html +25 -25
  405. package/app/recipes/integrations/index.html +27 -27
  406. package/app/recipes/inventory.stock/help/index.html +25 -25
  407. package/app/recipes/inventory.stock/index.html +27 -27
  408. package/app/recipes/ledgers.bookkeeping/help/index.html +25 -25
  409. package/app/recipes/ledgers.bookkeeping/index.html +27 -27
  410. package/app/recipes/messages/help/index.html +25 -25
  411. package/app/recipes/messages/index.html +27 -27
  412. package/app/recipes/products/help/index.html +25 -25
  413. package/app/recipes/products/index.html +27 -27
  414. package/app/recipes/projects.tracker/help/index.html +25 -25
  415. package/app/recipes/projects.tracker/index.html +27 -27
  416. package/app/recipes/reports.materialized/help/index.html +25 -25
  417. package/app/recipes/reports.materialized/index.html +27 -27
  418. package/app/recipes/reports.runtime/help/index.html +25 -25
  419. package/app/recipes/reports.runtime/index.html +27 -27
  420. package/app/recipes/sales.pipeline/help/index.html +25 -25
  421. package/app/recipes/sales.pipeline/index.html +27 -27
  422. package/app/recipes/tags.taxonomy/help/index.html +25 -25
  423. package/app/recipes/tags.taxonomy/index.html +27 -27
  424. package/app/recipes/team-collaboration/help/index.html +25 -25
  425. package/app/recipes/team-collaboration/index.html +27 -27
  426. package/app/recipes/timesheets.time-entries/help/index.html +25 -25
  427. package/app/recipes/timesheets.time-entries/index.html +27 -27
  428. package/app/s/custom-accounts/index.html +23 -23
  429. package/app/s/custom-appointments/index.html +23 -23
  430. package/app/s/custom-billing/index.html +23 -23
  431. package/app/s/custom-bookings/index.html +23 -23
  432. package/app/s/custom-buying/index.html +23 -23
  433. package/app/s/custom-checkout/index.html +23 -23
  434. package/app/s/custom-classes/index.html +23 -23
  435. package/app/s/custom-clients/index.html +23 -23
  436. package/app/s/custom-events/index.html +23 -23
  437. package/app/s/custom-fleet/index.html +23 -23
  438. package/app/s/custom-gigs/index.html +23 -23
  439. package/app/s/custom-giving/index.html +23 -23
  440. package/app/s/custom-instruments/index.html +23 -23
  441. package/app/s/custom-jobs/index.html +23 -23
  442. package/app/s/custom-kitchen/index.html +23 -23
  443. package/app/s/custom-lessons/index.html +23 -23
  444. package/app/s/custom-material/index.html +23 -23
  445. package/app/s/custom-meetings/index.html +23 -23
  446. package/app/s/custom-members/index.html +23 -23
  447. package/app/s/custom-merch/index.html +23 -23
  448. package/app/s/custom-money/index.html +23 -23
  449. package/app/s/custom-paint/index.html +23 -23
  450. package/app/s/custom-parts/index.html +23 -23
  451. package/app/s/custom-rentals/index.html +23 -23
  452. package/app/s/custom-roastery/index.html +23 -23
  453. package/app/s/custom-schedule/index.html +23 -23
  454. package/app/s/custom-shelf/index.html +23 -23
  455. package/app/s/custom-shop/index.html +23 -23
  456. package/app/s/custom-students/index.html +23 -23
  457. package/app/s/custom-wholesale/index.html +23 -23
  458. package/app/s/custom-work/index.html +23 -23
  459. package/app/s/custom-yard/index.html +23 -23
  460. package/app/s/section-access-control/index.html +23 -23
  461. package/app/s/section-account-security/index.html +23 -23
  462. package/app/s/section-accounting/index.html +23 -23
  463. package/app/s/section-activity/index.html +23 -23
  464. package/app/s/section-agreements/index.html +23 -23
  465. package/app/s/section-analytics/index.html +23 -23
  466. package/app/s/section-assets/index.html +23 -23
  467. package/app/s/section-billing/index.html +23 -23
  468. package/app/s/section-calendar/index.html +23 -23
  469. package/app/s/section-catalog/index.html +23 -23
  470. package/app/s/section-chat.assistant/index.html +23 -23
  471. package/app/s/section-comments/index.html +23 -23
  472. package/app/s/section-fields.form-customization/index.html +23 -23
  473. package/app/s/section-ingestion/index.html +23 -23
  474. package/app/s/section-integrations/index.html +23 -23
  475. package/app/s/section-messages/index.html +23 -23
  476. package/app/s/section-more/index.html +23 -23
  477. package/app/s/section-operations/index.html +23 -23
  478. package/app/s/section-projects/index.html +23 -23
  479. package/app/s/section-purchasing/index.html +23 -23
  480. package/app/s/section-reports.materialized/index.html +23 -23
  481. package/app/s/section-reports.runtime/index.html +23 -23
  482. package/app/s/section-sales/index.html +23 -23
  483. package/app/s/section-taxonomy/index.html +23 -23
  484. package/app/s/section-team/index.html +23 -23
  485. package/app/s/section-work/index.html +23 -23
  486. package/dist/catalog/catalog.json +634 -39
  487. package/dist/components/HeaderIconLink.svelte +106 -2
  488. package/dist/components/HeaderIconLink.svelte.d.ts +4 -0
  489. package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
  490. package/dist/components/SpecsPanel.svelte +54 -0
  491. package/dist/components/SpecsPanel.svelte.d.ts +4 -0
  492. package/dist/components/SpecsPanel.svelte.d.ts.map +1 -0
  493. package/dist/cookbook/assemble.d.ts +1 -0
  494. package/dist/cookbook/assemble.d.ts.map +1 -1
  495. package/dist/cookbook/assemble.js +2 -0
  496. package/dist/cookbook/parse.d.ts.map +1 -1
  497. package/dist/cookbook/parse.js +8 -0
  498. package/dist/cookbook/prompt.d.ts.map +1 -1
  499. package/dist/cookbook/prompt.js +6 -0
  500. package/dist/cookbook/store.svelte.d.ts +4 -1
  501. package/dist/cookbook/store.svelte.d.ts.map +1 -1
  502. package/dist/cookbook/store.svelte.js +10 -1
  503. package/dist/cookbook/types.d.ts +2 -0
  504. package/dist/cookbook/types.d.ts.map +1 -1
  505. package/dist/core/index.d.ts +1 -0
  506. package/dist/core/index.d.ts.map +1 -1
  507. package/dist/core/index.js +1 -0
  508. package/dist/index.d.ts +1 -0
  509. package/dist/index.d.ts.map +1 -1
  510. package/dist/index.js +1 -0
  511. package/dist/planner/Planner.svelte +87 -16
  512. package/dist/planner/Planner.svelte.d.ts.map +1 -1
  513. package/dist/planner/PlannerControls.svelte +35 -3
  514. package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
  515. package/dist/planner/PlannerLifecycle.svelte +10 -0
  516. package/dist/planner/PlannerLifecycle.svelte.d.ts +1 -1
  517. package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
  518. package/dist/planner/bridge.d.ts +2 -0
  519. package/dist/planner/bridge.d.ts.map +1 -1
  520. package/dist/planner/bridge.js +17 -3
  521. package/dist/planner/commands/types.d.ts +1 -1
  522. package/dist/planner/commands/types.d.ts.map +1 -1
  523. package/dist/planner/commands/types.js +1 -0
  524. package/dist/planner/guide.d.ts +21 -1
  525. package/dist/planner/guide.d.ts.map +1 -1
  526. package/dist/planner/guide.js +21 -2
  527. package/dist/planner/header-icons.d.ts +6 -0
  528. package/dist/planner/header-icons.d.ts.map +1 -1
  529. package/dist/planner/header-icons.js +6 -0
  530. package/dist/planner/header-nav.d.ts +17 -0
  531. package/dist/planner/header-nav.d.ts.map +1 -0
  532. package/dist/planner/header-nav.js +41 -0
  533. package/dist/planner/instance.d.ts +1 -1
  534. package/dist/planner/tab.svelte.d.ts +2 -2
  535. package/dist/planner/tab.svelte.d.ts.map +1 -1
  536. package/dist/planner/tab.svelte.js +1 -0
  537. package/dist/planner/types.d.ts +21 -0
  538. package/dist/planner/types.d.ts.map +1 -1
  539. package/dist/smrt-version.d.ts +1 -1
  540. package/dist/smrt-version.js +1 -1
  541. package/package.json +56 -56
  542. package/app/_app/immutable/assets/0.BaRFeYGU.css +0 -1
  543. package/app/_app/immutable/chunks/By9nPosf.js +0 -1
  544. package/app/_app/immutable/chunks/CguB2Z-c.js +0 -1
  545. package/app/_app/immutable/chunks/DdwZKwdT.js +0 -1
  546. package/app/_app/immutable/chunks/Do3aLnHk.js +0 -1
  547. package/app/_app/immutable/entry/start.COZRMvoH.js +0 -1
  548. package/app/_app/immutable/nodes/0.CpAyxFG1.js +0 -7
  549. package/app/_app/immutable/nodes/2.BsxeuTRf.js +0 -22
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Planner.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/Planner.svelte.ts"],"names":[],"mappings":"AA0EA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAogB/C,QAAA,MAAM,OAAO,kDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -13,6 +13,7 @@ import ExportPanel from '../components/ExportPanel.svelte';
13
13
  import FeaturesPanel from '../components/FeaturesPanel.svelte';
14
14
  import RecipeCards from '../components/RecipeCards.svelte';
15
15
  import SettingsPanel from '../components/SettingsPanel.svelte';
16
+ import SpecsPanel from '../components/SpecsPanel.svelte';
16
17
  import ThemeSection from '../components/ThemeSection.svelte';
17
18
  import { cookbookStore } from '../cookbook/store.svelte.js';
18
19
  import { provideDataSource, tryUseDataSource } from '../data/context.js';
@@ -20,6 +21,7 @@ import { createPlannerDataSource } from '../data/planner-source.js';
20
21
  import { cookbookNavGroups } from '../library/menu.js';
21
22
  import { recipeState } from '../recipes/state.svelte.js';
22
23
  import { PLANNER_TAB_IDS, type PlannerTabId } from './commands/index.js';
24
+ import { NAV_GROUP_TABS, navGroupOf } from './header-nav.js';
23
25
  import { plannerController } from './instance.js';
24
26
  import PlannerLifecycle from './PlannerLifecycle.svelte';
25
27
  import { plannerTab } from './tab.svelte.js';
@@ -48,7 +50,18 @@ const DEFAULT_TABS: PlannerTabId[] = [
48
50
  'settings',
49
51
  'export',
50
52
  ];
51
- const UNLISTED_TABS: PlannerTabId[] = ['features', 'layout'];
53
+ const UNLISTED_TABS: PlannerTabId[] = ['specs', 'features', 'layout'];
54
+ // `headerNav: 'labelled'`: Specs and Features join the strip, which then shows
55
+ // only the group of the header button that opened it.
56
+ const LABELLED_TABS: PlannerTabId[] = [
57
+ 'specs',
58
+ 'cookbooks',
59
+ 'recipes',
60
+ 'features',
61
+ 'theme',
62
+ 'settings',
63
+ 'export',
64
+ ];
52
65
 
53
66
  let {
54
67
  controller = plannerController,
@@ -58,6 +71,7 @@ let {
58
71
  persistence = 'self',
59
72
  projectPersistence,
60
73
  themeControls = false,
74
+ headerNav = 'icons',
61
75
  advancedStylesHref,
62
76
  tabs = DEFAULT_TABS,
63
77
  onready,
@@ -85,6 +99,7 @@ if (!tryUseDataSource()) provideDataSource(createPlannerDataSource());
85
99
  const hasAppState = tryGetAppStateContext() !== null;
86
100
 
87
101
  const labels: Record<PlannerTabId, string> = {
102
+ specs: 'Specs',
88
103
  cookbooks: 'Cookbooks',
89
104
  recipes: 'Recipes',
90
105
  features: 'Features',
@@ -93,11 +108,25 @@ const labels: Record<PlannerTabId, string> = {
93
108
  settings: 'Settings',
94
109
  export: 'Export',
95
110
  };
96
- const shown = $derived(tabs.filter((id) => PLANNER_TAB_IDS.includes(id)));
111
+ const labelled = $derived(headerNav === 'labelled');
112
+ const defaulted = $derived(tabs === DEFAULT_TABS);
113
+ const listed = $derived(
114
+ (labelled && defaulted ? LABELLED_TABS : tabs).filter((id) =>
115
+ PLANNER_TAB_IDS.includes(id),
116
+ ),
117
+ );
118
+ // Labelled: only the clicked button's group (all of them if the host's own
119
+ // `tabs` leave that group empty).
120
+ const shown = $derived.by(() => {
121
+ if (!labelled) return listed;
122
+ const group = NAV_GROUP_TABS[navGroupOf(plannerTab.active)];
123
+ const grouped = listed.filter((id) => group.includes(id));
124
+ return grouped.length > 0 ? grouped : listed;
125
+ });
97
126
  // Features and Layout left the default tab strip but stay reachable from
98
127
  // their links, the command palette and focus commands.
99
128
  const reachable = $derived<readonly PlannerTabId[]>(
100
- tabs === DEFAULT_TABS ? [...shown, ...UNLISTED_TABS] : shown,
129
+ defaulted ? [...new Set([...listed, ...UNLISTED_TABS])] : listed,
101
130
  );
102
131
  const items = $derived(shown.map((id) => ({ id, label: labels[id] })));
103
132
  const active = $derived(
@@ -177,6 +206,9 @@ $effect(() => {
177
206
  {#snippet view()}
178
207
  <div class="planner" bind:this={root}>
179
208
  <Tabs tabs={items} {active} onchange={select} aria-label="Planner">
209
+ {#if reachable.includes('specs')}
210
+ <div hidden={active !== 'specs'}><SpecsPanel /></div>
211
+ {/if}
180
212
  {#if reachable.includes('cookbooks')}
181
213
  <div hidden={active !== 'cookbooks'}><CookbooksPanel /></div>
182
214
  {/if}
@@ -1 +1 @@
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"}
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;AAkB3E,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;AA2OD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -16,6 +16,7 @@ import { createPlannerAssistant } from './assistant.js';
16
16
  import { createPlannerGuide } from './guide.js';
17
17
  import { plannerController, plannerRuntime } from './instance.js';
18
18
  import type { PlannerProps } from './types.js';
19
+ import { resetWorkspace } from './workspace.svelte.js';
19
20
  import { workspaceStorage } from './workspace-storage.js';
20
21
 
21
22
  let {
@@ -29,6 +30,7 @@ let {
29
30
  conversationalAction,
30
31
  nativeAssistant = false,
31
32
  links = 'path',
33
+ onreset,
32
34
  }: Pick<
33
35
  PlannerProps,
34
36
  | 'controller'
@@ -39,6 +41,7 @@ let {
39
41
  | 'initialConversation'
40
42
  | 'cookbookOffers'
41
43
  | 'conversationalAction'
44
+ | 'onreset'
42
45
  > & {
43
46
  nativeAssistant?: boolean;
44
47
  /** `'hash'` in the complete `Planner`, whose pages are fragment routes. */
@@ -106,6 +109,13 @@ onMount(() => {
106
109
  controller,
107
110
  ...(guide ? { guide } : {}),
108
111
  workspaceStorage: workspaceStorage(),
112
+ reset: (options = {}) =>
113
+ resetWorkspace({
114
+ controller,
115
+ dataSource,
116
+ nativeAssistant: privateNative,
117
+ ...(options.silent ? {} : { onreset }),
118
+ }),
109
119
  ...(assistant ? { assistant } : {}),
110
120
  ...(native
111
121
  ? {
@@ -1,6 +1,6 @@
1
1
  import { type LinkMode } from './app.svelte.ts';
2
2
  import type { PlannerProps } from './types.ts';
3
- type $$ComponentProps = Pick<PlannerProps, 'controller' | 'basePath' | 'inference' | 'persistence' | 'onready' | 'initialConversation' | 'cookbookOffers' | 'conversationalAction'> & {
3
+ type $$ComponentProps = Pick<PlannerProps, 'controller' | 'basePath' | 'inference' | 'persistence' | 'onready' | 'initialConversation' | 'cookbookOffers' | 'conversationalAction' | 'onreset'> & {
4
4
  nativeAssistant?: boolean;
5
5
  /** `'hash'` in the complete `Planner`, whose pages are fragment routes. */
6
6
  links?: LinkMode;
@@ -1 +1 @@
1
- {"version":3,"file":"PlannerLifecycle.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerLifecycle.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAI7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9C,KAAK,gBAAgB,GAAI,IAAI,CAC5B,YAAY,EACV,YAAY,GACZ,UAAU,GACV,WAAW,GACX,aAAa,GACb,SAAS,GACT,qBAAqB,GACrB,gBAAgB,GAChB,sBAAsB,CACzB,GAAG;IACF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAkIF,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"PlannerLifecycle.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerLifecycle.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAI7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI9C,KAAK,gBAAgB,GAAI,IAAI,CAC5B,YAAY,EACV,YAAY,GACZ,UAAU,GACV,WAAW,GACX,aAAa,GACb,SAAS,GACT,qBAAqB,GACrB,gBAAgB,GAChB,sBAAsB,GACtB,SAAS,CACZ,GAAG;IACF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AA2IF,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -48,6 +48,8 @@ export interface PlannerCommandPortClient {
48
48
  kind: 'arrival' | 'addition' | 'control';
49
49
  control?: PlannerGuideControl;
50
50
  requestId?: string;
51
+ /** How long to keep the spotlight, 1–30 s; default 6 s. */
52
+ holdMs?: number;
51
53
  }): Promise<PlannerGuideResult>;
52
54
  dismissGuide(input: {
53
55
  generation: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/lib/planner/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/lib/planner/bridge.ts"],"names":[],"mappings":"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"}
@@ -127,12 +127,22 @@ export function bindPlannerCommandPort(options) {
127
127
  else if (raw.type === 'guide') {
128
128
  const input = raw.input;
129
129
  if (!object(input) ||
130
- Object.keys(input).some((key) => !['generation', 'kind', 'requestId', 'control'].includes(key)) ||
130
+ Object.keys(input).some((key) => ![
131
+ 'generation',
132
+ 'kind',
133
+ 'requestId',
134
+ 'control',
135
+ 'holdMs',
136
+ ].includes(key)) ||
131
137
  input.generation !== generation ||
132
138
  !['arrival', 'addition', 'control'].includes(String(input.kind)) ||
133
139
  (input.kind === 'control' &&
134
- !['build', 'export', 'chef', 'edit'].includes(String(input.control))) ||
140
+ !['build', 'export', 'chef', 'edit', 'specs', 'styles'].includes(String(input.control))) ||
135
141
  (input.kind !== 'control' && input.control !== undefined) ||
142
+ (input.holdMs !== undefined &&
143
+ (typeof input.holdMs !== 'number' ||
144
+ !Number.isFinite(input.holdMs) ||
145
+ input.holdMs < 0)) ||
136
146
  !options.guide)
137
147
  value = {
138
148
  ok: false,
@@ -142,9 +152,13 @@ export function bindPlannerCommandPort(options) {
142
152
  value = await options.guide.highlight({
143
153
  kind: 'control',
144
154
  control: input.control,
155
+ holdMs: input.holdMs,
145
156
  });
146
157
  else if (input.kind === 'arrival')
147
- value = await options.guide.highlight({ kind: 'arrival' });
158
+ value = await options.guide.highlight({
159
+ kind: 'arrival',
160
+ holdMs: input.holdMs,
161
+ });
148
162
  else {
149
163
  const receipt = typeof input.requestId === 'string'
150
164
  ? receipts.get(input.requestId)
@@ -2,7 +2,7 @@ import type { CommandError as EngineCommandError, CommandInputs as EngineCommand
2
2
  export { COOKBOOK_COMMANDS_VERSION as PLANNER_COMMANDS_VERSION } from '@happyvertical/smrt-core/cookbook/engine';
3
3
  export type { ExportData, RecipeChanges, RunOptions };
4
4
  /** The planner's tabs, in order. Navigation only; never part of the cookbook. */
5
- export declare const PLANNER_TAB_IDS: readonly ["cookbooks", "recipes", "features", "layout", "theme", "settings", "export"];
5
+ export declare const PLANNER_TAB_IDS: readonly ["specs", "cookbooks", "recipes", "features", "layout", "theme", "settings", "export"];
6
6
  export type PlannerTabId = (typeof PLANNER_TAB_IDS)[number];
7
7
  /** Input of each command, keyed by the command's (tool) name. */
8
8
  export interface CommandInputs extends EngineCommandInputs {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/planner/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,IAAI,kBAAkB,EAClC,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,EACtC,YAAY,IAAI,kBAAkB,EAClC,UAAU,EACV,aAAa,EACb,UAAU,EACX,MAAM,0CAA0C,CAAC;AAWlD,OAAO,EAAE,yBAAyB,IAAI,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACjH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAEtD,iFAAiF;AACjF,eAAO,MAAM,eAAe,wFAQlB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,iEAAiE;AACjE,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,iFAAiF;IACjF,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC;AAE9C,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,WAAW,GAAG;QAClB,IAAI,EAAE,CAAC,CAAC;QACR,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACxB,8EAA8E;QAC9E,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,wEAAwE;QACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;CACF,CAAC,WAAW,CAAC,CAAC;AAEf,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE1D,gEAAgE;AAChE,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,+CAA+C;IAC/C,KAAK,EAAE;QAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC7D;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACxE,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,oFAAoF;IACpF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAExE,gEAAgE;AAChE,MAAM,MAAM,WAAW,GACnB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC,EAAE,CAAC;CACjD,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/planner/commands/types.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  export { COOKBOOK_COMMANDS_VERSION as PLANNER_COMMANDS_VERSION } from '@happyvertical/smrt-core/cookbook/engine';
10
10
  /** The planner's tabs, in order. Navigation only; never part of the cookbook. */
11
11
  export const PLANNER_TAB_IDS = [
12
+ 'specs',
12
13
  'cookbooks',
13
14
  'recipes',
14
15
  'features',
@@ -1,6 +1,6 @@
1
1
  import type { ShellTargets } from '@happyvertical/smrt-svelte/workspace';
2
2
  import type { BatchResult, PlanSnapshot } from './commands/index.ts';
3
- export type PlannerGuideControl = 'build' | 'export' | 'chef' | 'edit';
3
+ export type PlannerGuideControl = 'build' | 'export' | 'chef' | 'edit' | 'specs' | 'styles';
4
4
  export declare const PLANNER_GUIDE_CONTROLS: {
5
5
  build: {
6
6
  targetId: string;
@@ -17,6 +17,16 @@ export declare const PLANNER_GUIDE_CONTROLS: {
17
17
  label: string;
18
18
  description: string;
19
19
  };
20
+ specs: {
21
+ targetId: string;
22
+ label: string;
23
+ description: string;
24
+ };
25
+ styles: {
26
+ targetId: string;
27
+ label: string;
28
+ description: string;
29
+ };
20
30
  edit: {
21
31
  targetId: string;
22
32
  label: string;
@@ -33,13 +43,16 @@ export interface PlannerGuideResult {
33
43
  export interface PlannerGuideHandle {
34
44
  highlight(input: {
35
45
  kind: 'arrival';
46
+ holdMs?: number;
36
47
  } | {
37
48
  kind: 'control';
38
49
  control: PlannerGuideControl;
50
+ holdMs?: number;
39
51
  } | {
40
52
  kind: 'addition';
41
53
  before: PlanSnapshot;
42
54
  result: BatchResult;
55
+ holdMs?: number;
43
56
  }): Promise<PlannerGuideResult>;
44
57
  dismiss(): void;
45
58
  }
@@ -61,6 +74,13 @@ export declare function additionGuideTarget(before: PlanSnapshot, result: BatchR
61
74
  hidden: boolean;
62
75
  };
63
76
  } | undefined;
77
+ /** Default spotlight lifetime, and the bounds a host may hold one for. */
78
+ export declare const GUIDE_HOLD_MS: {
79
+ readonly default: 6000;
80
+ readonly min: 1000;
81
+ readonly max: 30000;
82
+ };
83
+ export declare function guideHold(holdMs: unknown): number;
64
84
  export declare function createPlannerGuide(options: {
65
85
  targets?: ShellTargets;
66
86
  isMounted: () => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/lib/planner/guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AACvE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,kBAAkB;IACjC,SAAS,CACP,KAAK,EACD;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GACnB;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,GACjD;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAClE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AACD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;;;;;;;;;;;;;;;;cAY5E;AACD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,GAAG,kBAAkB,CA8ErB"}
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/lib/planner/guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,QAAQ,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,CAAC;AACb,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuClC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,kBAAkB;IACjC,SAAS,CACP,KAAK,EACD;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,mBAAmB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAClE;QACE,IAAI,EAAE,UAAU,CAAC;QACjB,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACJ,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AACD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;;;;;;;;;;;;;;;;cAY5E;AACD,0EAA0E;AAC1E,eAAO,MAAM,aAAa;;;;CAAoD,CAAC;AAC/E,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAIjD;AACD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,GAAG,kBAAkB,CAgFrB"}
@@ -16,6 +16,16 @@ export const PLANNER_GUIDE_CONTROLS = {
16
16
  label: 'Plan the app',
17
17
  description: 'The chef hat opens Cookbooks, Recipes, Theme and Settings to plan your app.',
18
18
  },
19
+ specs: {
20
+ targetId: 'item:planner-specs',
21
+ label: 'Specs',
22
+ description: 'Specs holds anything your app must also do beyond its features.',
23
+ },
24
+ styles: {
25
+ targetId: 'item:planner-styles',
26
+ label: 'Styles',
27
+ description: 'Styles changes how your app looks: theme and settings.',
28
+ },
19
29
  edit: {
20
30
  targetId: 'item:layout-edit',
21
31
  label: 'Edit',
@@ -35,6 +45,13 @@ export function additionGuideTarget(before, result) {
35
45
  return { section, item };
36
46
  }
37
47
  }
48
+ /** Default spotlight lifetime, and the bounds a host may hold one for. */
49
+ export const GUIDE_HOLD_MS = { default: 6000, min: 1000, max: 30000 };
50
+ export function guideHold(holdMs) {
51
+ return typeof holdMs === 'number' && Number.isFinite(holdMs)
52
+ ? Math.min(GUIDE_HOLD_MS.max, Math.max(GUIDE_HOLD_MS.min, holdMs))
53
+ : GUIDE_HOLD_MS.default;
54
+ }
38
55
  export function createPlannerGuide(options) {
39
56
  let active;
40
57
  let clearHighlight;
@@ -66,6 +83,8 @@ export function createPlannerGuide(options) {
66
83
  return {
67
84
  dismiss,
68
85
  async highlight(input) {
86
+ // A host narrating the guide may hold it for as long as it speaks.
87
+ const hold = guideHold(input.holdMs);
69
88
  if (input.kind === 'arrival' && arrivalShown)
70
89
  return { ok: false, reason: 'Arrival guidance was already shown.' };
71
90
  const request = ++ticket;
@@ -90,7 +109,7 @@ export function createPlannerGuide(options) {
90
109
  };
91
110
  clear();
92
111
  active = node;
93
- clearHighlight = highlightControl(node, 6000, {
112
+ clearHighlight = highlightControl(node, hold, {
94
113
  presentation: 'spotlight',
95
114
  dismissLabel: 'Dismiss guidance',
96
115
  onDismiss: dismiss,
@@ -101,7 +120,7 @@ export function createPlannerGuide(options) {
101
120
  arrivalShown = true;
102
121
  node.addEventListener('click', dismiss, { once: true });
103
122
  document.addEventListener('keydown', onKey);
104
- timer = setTimeout(clear, 6000);
123
+ timer = setTimeout(clear, hold);
105
124
  return {
106
125
  ok: true,
107
126
  targetId: node.dataset.smrtTarget ?? targetId,
@@ -10,4 +10,10 @@
10
10
  export declare const CHEF_HAT_ICON = "M4 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM13 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM8 7a4 4 0 1 1 8 0a4 4 0 1 1-8 0zM6 9.5h12V15H6zM7 16.5h10a1 1 0 0 1 1 1V19a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-1.5a1 1 0 0 1 1-1z";
11
11
  /** smrt-ui's preset icon for the export control. */
12
12
  export declare const EXPORT_ICON = "download";
13
+ /** Specs: a bulleted list of requirements. Original drawing. */
14
+ export declare const SPECS_ICON = "M4 5h3v3H4zM9 5.5h11v2H9zM4 10.5h3v3H4zM9 11h11v2H9zM4 16h3v3H4zM9 16.5h11v2H9z";
15
+ /** Features: three tiles and a round one, like pieces to add. Original drawing. */
16
+ export declare const FEATURES_ICON = "M4 4h7v7H4zM4 13h7v7H4zM13 13h7v7h-7zM16.5 3.5a4 4 0 1 1 0 8a4 4 0 1 1 0-8z";
17
+ /** Styles: a drop of colour. Original drawing. */
18
+ export declare const STYLES_ICON = "M12 2.5c3.5 4.2 6 7.4 6 10.5a6 6 0 0 1-12 0c0-3.1 2.5-6.3 6-10.5z";
13
19
  //# sourceMappingURL=header-icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header-icons.d.ts","sourceRoot":"","sources":["../../src/lib/planner/header-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,yNAC8L,CAAC;AAEzN,oDAAoD;AACpD,eAAO,MAAM,WAAW,aAAa,CAAC"}
1
+ {"version":3,"file":"header-icons.d.ts","sourceRoot":"","sources":["../../src/lib/planner/header-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,yNAC8L,CAAC;AAEzN,oDAAoD;AACpD,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,gEAAgE;AAChE,eAAO,MAAM,UAAU,oFAC4D,CAAC;AAEpF,mFAAmF;AACnF,eAAO,MAAM,aAAa,gFACqD,CAAC;AAEhF,kDAAkD;AAClD,eAAO,MAAM,WAAW,sEAC6C,CAAC"}
@@ -10,3 +10,9 @@
10
10
  export const CHEF_HAT_ICON = 'M4 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM13 9.5a3.5 3.5 0 1 1 7 0a3.5 3.5 0 1 1-7 0zM8 7a4 4 0 1 1 8 0a4 4 0 1 1-8 0zM6 9.5h12V15H6zM7 16.5h10a1 1 0 0 1 1 1V19a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-1.5a1 1 0 0 1 1-1z';
11
11
  /** smrt-ui's preset icon for the export control. */
12
12
  export const EXPORT_ICON = 'download';
13
+ /** Specs: a bulleted list of requirements. Original drawing. */
14
+ export const SPECS_ICON = 'M4 5h3v3H4zM9 5.5h11v2H9zM4 10.5h3v3H4zM9 11h11v2H9zM4 16h3v3H4zM9 16.5h11v2H9z';
15
+ /** Features: three tiles and a round one, like pieces to add. Original drawing. */
16
+ export const FEATURES_ICON = 'M4 4h7v7H4zM4 13h7v7H4zM13 13h7v7h-7zM16.5 3.5a4 4 0 1 1 0 8a4 4 0 1 1 0-8z';
17
+ /** Styles: a drop of colour. Original drawing. */
18
+ export const STYLES_ICON = 'M12 2.5c3.5 4.2 6 7.4 6 10.5a6 6 0 0 1-12 0c0-3.1 2.5-6.3 6-10.5z';
@@ -0,0 +1,17 @@
1
+ import type { PlannerTabId } from './commands/types.ts';
2
+ /**
3
+ * The labelled header navigation (`headerNav: 'labelled'`): four buttons, each
4
+ * opening one group of the planner's configure tabs. Specs and Build are a
5
+ * single tab; Features and Styles keep their siblings together.
6
+ */
7
+ export declare const NAV_GROUPS: readonly ["specs", "features", "styles", "build"];
8
+ export type NavGroup = (typeof NAV_GROUPS)[number];
9
+ /** The tabs each group shows in the tab strip, in order. */
10
+ export declare const NAV_GROUP_TABS: Record<NavGroup, readonly PlannerTabId[]>;
11
+ /** The tab each button opens. */
12
+ export declare const NAV_GROUP_HREF: Record<NavGroup, string>;
13
+ /** The group an active tab belongs to; the unlisted Layout tab sits with Features. */
14
+ export declare function navGroupOf(tab: PlannerTabId): NavGroup;
15
+ /** The tab a click on a group's button lands on: the current one if already inside the group. */
16
+ export declare function navEntryTab(group: NavGroup, active: PlannerTabId): PlannerTabId;
17
+ //# sourceMappingURL=header-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-nav.d.ts","sourceRoot":"","sources":["../../src/lib/planner/header-nav.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,UAAU,mDAAoD,CAAC;AAC5E,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAKpE,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKnD,CAAC;AASF,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,QAAQ,CAKtD;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CACzB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,YAAY,GACnB,YAAY,CAKd"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The labelled header navigation (`headerNav: 'labelled'`): four buttons, each
3
+ * opening one group of the planner's configure tabs. Specs and Build are a
4
+ * single tab; Features and Styles keep their siblings together.
5
+ */
6
+ export const NAV_GROUPS = ['specs', 'features', 'styles', 'build'];
7
+ /** The tabs each group shows in the tab strip, in order. */
8
+ export const NAV_GROUP_TABS = {
9
+ specs: ['specs'],
10
+ features: ['cookbooks', 'recipes', 'features'],
11
+ styles: ['theme', 'settings'],
12
+ build: ['export'],
13
+ };
14
+ /** The tab each button opens. */
15
+ export const NAV_GROUP_HREF = {
16
+ specs: '#/configure/specs/',
17
+ features: '#/configure/recipes/',
18
+ styles: '#/configure/theme/',
19
+ build: '#/configure/export/',
20
+ };
21
+ const GROUP_ENTRY = {
22
+ specs: 'specs',
23
+ features: 'recipes',
24
+ styles: 'theme',
25
+ build: 'export',
26
+ };
27
+ /** The group an active tab belongs to; the unlisted Layout tab sits with Features. */
28
+ export function navGroupOf(tab) {
29
+ for (const group of NAV_GROUPS) {
30
+ if (NAV_GROUP_TABS[group].includes(tab))
31
+ return group;
32
+ }
33
+ return 'features';
34
+ }
35
+ /** The tab a click on a group's button lands on: the current one if already inside the group. */
36
+ export function navEntryTab(group, active) {
37
+ return navGroupOf(active) === group &&
38
+ (NAV_GROUP_TABS[group].includes(active) || group === 'features')
39
+ ? active
40
+ : GROUP_ENTRY[group];
41
+ }
@@ -18,5 +18,5 @@ export declare const plannerRuntime: {
18
18
  * The app's one planner controller: the assistant, the palette, a host page
19
19
  * and (later) the MCP and CLI servers all drive the planner through it.
20
20
  */
21
- export declare const plannerController: import("./commands/adapter.ts").PlannerController & Pick<import("./commands/adapter.ts").PlannerAdapter, "undo" | "cookbook" | "tools">;
21
+ export declare const plannerController: import("./commands/adapter.ts").PlannerController & Pick<import("./commands/adapter.ts").PlannerAdapter, "cookbook" | "undo" | "tools">;
22
22
  //# sourceMappingURL=instance.d.ts.map
@@ -1,10 +1,10 @@
1
- export declare const PLANNER_TABS: readonly ["cookbooks", "recipes", "features", "layout", "theme", "settings", "export"];
1
+ export declare const PLANNER_TABS: readonly ["specs", "cookbooks", "recipes", "features", "layout", "theme", "settings", "export"];
2
2
  export type PlannerTab = (typeof PLANNER_TABS)[number];
3
3
  /** `fallback` (Cookbooks) unless the query names another known tab. */
4
4
  export declare function parseTab(search: string, fallback?: PlannerTab): PlannerTab;
5
5
  /** The Planner page's active tab; the address bar mirrors it (`?tab=`). */
6
6
  declare class PlannerTabState {
7
- active: "export" | "settings" | "features" | "recipes" | "theme" | "layout" | "cookbooks";
7
+ active: "export" | "settings" | "features" | "recipes" | "theme" | "specs" | "layout" | "cookbooks";
8
8
  fromSearch(search: string, fallback?: PlannerTab): void;
9
9
  /** The chef's hat from Export: `#/configure/` names no tab, so leave Export
10
10
  * for the default rather than stay on it; any other tab is kept. */
@@ -1 +1 @@
1
- {"version":3,"file":"tab.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/tab.svelte.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,wFAQf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,uEAAuE;AACvE,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,UAAwB,GACjC,UAAU,CAGZ;AAED,2EAA2E;AAC3E,cAAM,eAAe;IACnB,MAAM,oFAAmC;IAEzC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAwB;IAI7D;yEACqE;IACrE,WAAW,CAAC,QAAQ,GAAE,UAAwB;CAG/C;AAED,eAAO,MAAM,UAAU,iBAAwB,CAAC"}
1
+ {"version":3,"file":"tab.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/tab.svelte.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,iGASf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,uEAAuE;AACvE,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,UAAwB,GACjC,UAAU,CAGZ;AAED,2EAA2E;AAC3E,cAAM,eAAe;IACnB,MAAM,8FAAmC;IAEzC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAwB;IAI7D;yEACqE;IACrE,WAAW,CAAC,QAAQ,GAAE,UAAwB;CAG/C;AAED,eAAO,MAAM,UAAU,iBAAwB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { TAB_PARAM } from "./query.js";
2
2
  export const PLANNER_TABS = [
3
+ 'specs',
3
4
  'cookbooks',
4
5
  'recipes',
5
6
  'features',
@@ -16,6 +16,14 @@ export interface PlannerHandle {
16
16
  nativeAssistant?: BrowserAssistantTransport;
17
17
  /** Complete Planner only: open/focus the ready native dock; false if unavailable. */
18
18
  openAssistant?: () => Promise<boolean>;
19
+ /**
20
+ * Reset the saved plan, samples and native thread as the Reset control does.
21
+ * `silent` skips the host's `onreset` (the host is the caller and already
22
+ * knows); returns false when storage could not be cleared.
23
+ */
24
+ reset?: (options?: {
25
+ silent?: boolean;
26
+ }) => boolean;
19
27
  }
20
28
  /** Detached, complete document and native thread captured together at action time. */
21
29
  export interface PlannerExportContext {
@@ -41,6 +49,19 @@ export interface PlannerProps {
41
49
  * too; the planner follows its `focus` tab.
42
50
  */
43
51
  controller?: PlannerController;
52
+ /**
53
+ * Complete Planner only: the header's navigation. `'icons'` (default) is the
54
+ * chef's hat and export icon. `'labelled'` shows four bordered, coloured
55
+ * buttons, Specs, Features, Styles and Build, each opening that group of
56
+ * configure tabs (`#/configure/specs/`, `recipes/`, `theme/`, `export/`);
57
+ * Features and Build keep the guide's `planner-customize` / `planner-export`
58
+ * targets, and Build uses `exportLabel` when set. The tab strip then shows
59
+ * only the opened button's group. Accents are the theme's info, success,
60
+ * tertiary and warning colours.
61
+ */
62
+ headerNav?: 'icons' | 'labelled';
63
+ /** Complete Planner only: visible native export label; blank/omitted keeps the icon-only default. */
64
+ exportLabel?: string;
44
65
  /** Complete Planner only: primary header action with the same export capture. */
45
66
  headerAction?: PlannerExportAction;
46
67
  /** Optional first primary Export action; native download remains available. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/planner/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/planner/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  /** The released smrt line the planner is built against (the `smrt` CLI version its commands name). */
2
- export declare const SMRT_VERSION = "0.57.18";
2
+ export declare const SMRT_VERSION = "0.57.20";
3
3
  //# sourceMappingURL=smrt-version.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Generated by scripts/write-smrt-version.ts from the installed
2
2
  // @happyvertical/smrt-core; do not edit. `pnpm version:smrt` refreshes it.
3
3
  /** The released smrt line the planner is built against (the `smrt` CLI version its commands name). */
4
- export const SMRT_VERSION = '0.57.18';
4
+ export const SMRT_VERSION = '0.57.20';