@happyvertical/smrt-planner 0.57.12 → 0.57.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -0
- package/agents/assistant.md +49 -0
- package/agents/commands.md +2 -2
- package/agents/cookbook.md +3 -1
- package/agents/shell.md +9 -7
- package/app/404.html +21 -21
- package/app/_app/immutable/assets/2.D3Ee82Nk.css +1 -0
- package/app/_app/immutable/assets/AppShell.Y0ysizZK.css +1 -0
- package/app/_app/immutable/assets/{icons.BDx21rPt.css → icons.DFiHs25V.css} +1 -1
- package/app/_app/immutable/chunks/3dpUaAuL.js +1 -0
- package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
- package/app/_app/immutable/chunks/{8MGlmWc0.js → BErRmq61.js} +1 -1
- package/app/_app/immutable/chunks/BFzGVZ83.js +1 -0
- package/app/_app/immutable/chunks/{DU3stPaX.js → BLDa0UGj.js} +1 -1
- package/app/_app/immutable/chunks/BMXU0KTB.js +1 -0
- package/app/_app/immutable/chunks/{B88mVEob.js → B_D0zDev.js} +1 -1
- package/app/_app/immutable/chunks/{2dmW8nz3.js → BmSVFsOo.js} +2 -2
- package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
- package/app/_app/immutable/chunks/By9nPosf.js +1 -0
- package/app/_app/immutable/chunks/CB9iikrD.js +4 -0
- package/app/_app/immutable/chunks/{pEiNEXSh.js → CBxjHrPs.js} +1 -1
- package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
- package/app/_app/immutable/chunks/{oV81RcfI.js → COQfu_Wm.js} +1 -1
- package/app/_app/immutable/chunks/{DDtOXC2p.js → CQ3bytDT.js} +1 -1
- package/app/_app/immutable/chunks/{D4791-Ex.js → CQOJdp0U.js} +1 -1
- package/app/_app/immutable/chunks/{CQFoqqzT.js → CT1UgNrl.js} +1 -1
- package/app/_app/immutable/chunks/CrMrQCWf.js +1 -0
- package/app/_app/immutable/chunks/{BTm4M8Ke.js → CwTLkgbW.js} +1 -1
- package/app/_app/immutable/chunks/{BCvXlTRf.js → CyuTEXp6.js} +1 -1
- package/app/_app/immutable/chunks/CzqXjCHa.js +16 -0
- package/app/_app/immutable/chunks/DMDdJExi.js +10 -0
- package/app/_app/immutable/chunks/{_CcVkMEQ.js → DPbSjNti.js} +1 -1
- package/app/_app/immutable/chunks/{BgtC60Dj.js → DSKWzY3b.js} +2 -2
- package/app/_app/immutable/chunks/{ByKA-VaR.js → DcYfN1RJ.js} +1 -1
- package/app/_app/immutable/chunks/KILEpkAY.js +26 -0
- package/app/_app/immutable/chunks/Uwmgg65i.js +1 -0
- package/app/_app/immutable/chunks/XcCBLn0p.js +2 -0
- package/app/_app/immutable/chunks/{bBI0F4nt.js → aqYPhamJ.js} +1 -1
- package/app/_app/immutable/chunks/{38SS-Q6Y.js → c4Y8im5f.js} +22 -22
- package/app/_app/immutable/chunks/{DbH3RuTE.js → gObjQOc6.js} +1 -1
- package/app/_app/immutable/chunks/{BQgbhyQu.js → jY83yXmZ.js} +1 -1
- package/app/_app/immutable/chunks/k-HWowNp.js +2 -0
- package/app/_app/immutable/entry/{app.C8En00Ny.js → app.BFvVYIAu.js} +2 -2
- package/app/_app/immutable/entry/start.CjnnBAhi.js +1 -0
- package/app/_app/immutable/nodes/0.BV0A9Ub7.js +7 -0
- package/app/_app/immutable/nodes/{1.CoV_40km.js → 1.B8lnDjjl.js} +1 -1
- package/app/_app/immutable/nodes/10.Dga6nV_M.js +3 -0
- package/app/_app/immutable/nodes/{11.Csg6XAcG.js → 11.SN8IoTqm.js} +1 -1
- package/app/_app/immutable/nodes/{12.CuTHLuEu.js → 12.CmhheIVU.js} +1 -1
- package/app/_app/immutable/nodes/{13.CNdfx5uO.js → 13.Eh2aPgMP.js} +1 -1
- package/app/_app/immutable/nodes/14.ReLktgLz.js +1 -0
- package/app/_app/immutable/nodes/2.Dc32ZcWd.js +22 -0
- package/app/_app/immutable/nodes/{3.DC8-sgUI.js → 3.CuIErDvM.js} +1 -1
- package/app/_app/immutable/nodes/{4.DcX0DIX9.js → 4.62S4SMa5.js} +1 -1
- package/app/_app/immutable/nodes/{5.Opk77twi.js → 5.DZx2uQQp.js} +1 -1
- package/app/_app/immutable/nodes/{6.Uk9tXC7t.js → 6.Dzh2j8Eu.js} +1 -1
- package/app/_app/immutable/nodes/7.BndE5mEj.js +1 -0
- package/app/_app/immutable/nodes/{8.CacSxuCP.js → 8.B79dJpLW.js} +1 -1
- package/app/_app/immutable/nodes/{9.z7vXbrbH.js → 9.Di1DpDGF.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +24 -24
- package/app/ai/index.html +28 -28
- package/app/blueprint/index.html +22 -22
- package/app/cookbook/index.html +22 -22
- package/app/index.html +38 -40
- package/app/m/ads/AdDeliveryTier/index.html +27 -27
- package/app/m/ads/AdEvent/index.html +27 -27
- package/app/m/ads/AdFormat/index.html +27 -27
- package/app/m/ads/AdGroup/index.html +27 -27
- package/app/m/ads/AdVariation/index.html +27 -27
- package/app/m/analytics/AnalyticsDataStream/index.html +27 -27
- package/app/m/analytics/AnalyticsEvent/index.html +27 -27
- package/app/m/analytics/AnalyticsProperty/index.html +27 -27
- package/app/m/analytics/AnalyticsReport/index.html +27 -27
- package/app/m/approvals/ApprovalEvent/index.html +27 -27
- package/app/m/approvals/ApprovalPolicy/index.html +27 -27
- package/app/m/approvals/ApprovalRequest/index.html +27 -27
- package/app/m/assets/Asset/attachments/index.html +28 -28
- package/app/m/assets/Asset/index.html +27 -27
- package/app/m/assets/AssetAssociation/index.html +27 -27
- package/app/m/assets/AssetMetafield/index.html +27 -27
- package/app/m/assets/AssetStatus/index.html +27 -27
- package/app/m/assets/AssetType/index.html +27 -27
- package/app/m/assets/Folder/index.html +27 -27
- package/app/m/chat/AgentSession/index.html +27 -27
- package/app/m/chat/ChatMessage/index.html +27 -27
- package/app/m/chat/ChatParticipant/index.html +27 -27
- package/app/m/chat/ChatReaction/index.html +27 -27
- package/app/m/chat/ChatRoom/index.html +27 -27
- package/app/m/chat/ChatThread/index.html +27 -27
- package/app/m/chat/VoiceGatewayTurn/index.html +27 -27
- package/app/m/chat/VoiceSession/index.html +27 -27
- package/app/m/commerce/Agreement/index.html +27 -27
- package/app/m/commerce/Cart/index.html +27 -27
- package/app/m/commerce/Contract/index.html +27 -27
- package/app/m/commerce/ContractLineItem/index.html +27 -27
- package/app/m/commerce/Customer/index.html +27 -27
- package/app/m/commerce/DocumentTax/index.html +27 -27
- package/app/m/commerce/Estimate/index.html +27 -27
- package/app/m/commerce/Fulfillment/index.html +27 -27
- package/app/m/commerce/FulfillmentLineItem/index.html +27 -27
- package/app/m/commerce/HistoricalCustomerFunds/index.html +27 -27
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +27 -27
- package/app/m/commerce/HistoricalSalesLine/index.html +27 -27
- package/app/m/commerce/Invoice/index.html +27 -27
- package/app/m/commerce/InvoiceLineItem/index.html +27 -27
- package/app/m/commerce/Lease/index.html +27 -27
- package/app/m/commerce/LicenseSale/index.html +27 -27
- package/app/m/commerce/Order/index.html +27 -27
- package/app/m/commerce/Payment/index.html +27 -27
- package/app/m/commerce/PaymentAllocation/index.html +27 -27
- package/app/m/commerce/PaymentInstrument/index.html +27 -27
- package/app/m/commerce/PaymentIntent/index.html +27 -27
- package/app/m/commerce/Payout/index.html +27 -27
- package/app/m/commerce/ProductionOrder/index.html +27 -27
- package/app/m/commerce/PurchaseContract/index.html +27 -27
- package/app/m/commerce/PurchaseOrder/index.html +27 -27
- package/app/m/commerce/SalesContract/index.html +27 -27
- package/app/m/commerce/SupplierQuote/index.html +27 -27
- package/app/m/commerce/TaxCode/index.html +27 -27
- package/app/m/commerce/TaxComponent/index.html +27 -27
- package/app/m/commerce/TaxSettings/index.html +27 -27
- package/app/m/commerce/TaxSummaryReport/index.html +27 -27
- package/app/m/commerce/TenantPaymentAccount/index.html +27 -27
- package/app/m/commerce/Vendor/index.html +27 -27
- package/app/m/commerce/WholesaleOrder/index.html +27 -27
- package/app/m/content/Content/index.html +27 -27
- package/app/m/content/ContentContribution/index.html +27 -27
- package/app/m/content/ContentContributionAttachment/index.html +27 -27
- package/app/m/content/ContentContributionRevision/index.html +27 -27
- package/app/m/content/ContentContributionType/index.html +27 -27
- package/app/m/content/ContentContributor/index.html +27 -27
- package/app/m/content/ContentCorrection/index.html +27 -27
- package/app/m/content/ContentFeedSource/index.html +27 -27
- package/app/m/content/ContentGovernanceAssignment/index.html +27 -27
- package/app/m/content/ContentGovernancePolicy/index.html +27 -27
- package/app/m/content/ContentGovernanceProfile/index.html +27 -27
- package/app/m/content/ContentReference/index.html +27 -27
- package/app/m/content/ContentReview/index.html +27 -27
- package/app/m/content/ContentVersion/index.html +27 -27
- package/app/m/events/Event/index.html +27 -27
- package/app/m/events/EventParticipant/index.html +27 -27
- package/app/m/events/EventSeries/index.html +27 -27
- package/app/m/events/EventType/index.html +27 -27
- package/app/m/expenses/Expense/index.html +27 -27
- package/app/m/facts/Fact/index.html +27 -27
- package/app/m/facts/FactContent/index.html +27 -27
- package/app/m/facts/FactEvidence/index.html +27 -27
- package/app/m/facts/FactSource/index.html +27 -27
- package/app/m/facts/FactSubject/index.html +27 -27
- package/app/m/facts/FactTag/index.html +27 -27
- package/app/m/fields/FieldPolicy/index.html +27 -27
- package/app/m/fields/FieldPolicySuggestion/index.html +27 -27
- package/app/m/fields/FieldUsageCounter/index.html +27 -27
- package/app/m/images/Image/index.html +27 -27
- package/app/m/inventory/InventoryLocation/index.html +27 -27
- package/app/m/inventory/StockLevel/index.html +27 -27
- package/app/m/inventory/StockMovement/index.html +27 -27
- package/app/m/ledgers/Account/index.html +27 -27
- package/app/m/ledgers/Journal/index.html +27 -27
- package/app/m/ledgers/JournalEntry/index.html +27 -27
- package/app/m/ledgers/Ledger/index.html +27 -27
- package/app/m/manufacturing/Assembly/index.html +27 -27
- package/app/m/manufacturing/BillOfMaterials/index.html +27 -27
- package/app/m/manufacturing/BomLine/index.html +27 -27
- package/app/m/manufacturing/Operation/index.html +27 -27
- package/app/m/manufacturing/ProductionRun/index.html +27 -27
- package/app/m/manufacturing/ProductionRunCompletion/index.html +27 -27
- package/app/m/manufacturing/RoutingStep/index.html +27 -27
- package/app/m/marketing/Campaign/index.html +27 -27
- package/app/m/marketing/CampaignChannel/index.html +27 -27
- package/app/m/marketing/CampaignMetricSnapshot/index.html +27 -27
- package/app/m/messages/Account/index.html +27 -27
- package/app/m/messages/Attachment/index.html +27 -27
- package/app/m/messages/Blacklist/index.html +27 -27
- package/app/m/messages/Email/failed-sends/index.html +28 -28
- package/app/m/messages/Email/index.html +27 -27
- package/app/m/messages/Email/mailbox/index.html +28 -28
- package/app/m/messages/EmailAccount/index.html +27 -27
- package/app/m/messages/EmailAttachment/index.html +27 -27
- package/app/m/messages/EmailFolder/index.html +27 -27
- package/app/m/messages/Message/index.html +27 -27
- package/app/m/messages/MessagingEndpoint/index.html +27 -27
- package/app/m/messages/PersonaMessageRoute/index.html +27 -27
- package/app/m/messages/SlackAccount/index.html +27 -27
- package/app/m/messages/SlackMessage/index.html +27 -27
- package/app/m/messages/TelegramAccount/index.html +27 -27
- package/app/m/messages/Tweet/index.html +27 -27
- package/app/m/messages/TwitterAccount/index.html +27 -27
- package/app/m/messages/Whitelist/index.html +27 -27
- package/app/m/messages/ZulipAccount/index.html +27 -27
- package/app/m/places/Place/index.html +27 -27
- package/app/m/places/PlaceType/index.html +27 -27
- package/app/m/products/Category/index.html +27 -27
- package/app/m/products/Material/index.html +27 -27
- package/app/m/products/Product/index.html +27 -27
- package/app/m/products/Product/ingredients/index.html +28 -28
- package/app/m/products/ProductVariant/index.html +27 -27
- package/app/m/products/Sku/index.html +27 -27
- package/app/m/profiles/ApiKey/index.html +27 -27
- package/app/m/profiles/Bot/index.html +27 -27
- package/app/m/profiles/MagicLinkToken/index.html +27 -27
- package/app/m/profiles/NostrIdentity/index.html +27 -27
- package/app/m/profiles/OidcIdentity/index.html +27 -27
- package/app/m/profiles/Organization/index.html +27 -27
- package/app/m/profiles/Person/index.html +27 -27
- package/app/m/profiles/Profile/index.html +27 -27
- package/app/m/profiles/ProfileMetadata/index.html +27 -27
- package/app/m/profiles/ProfileMetafield/index.html +27 -27
- package/app/m/profiles/ProfileRelationship/index.html +27 -27
- package/app/m/profiles/ProfileRelationshipTerm/index.html +27 -27
- package/app/m/profiles/ProfileRelationshipType/index.html +27 -27
- package/app/m/profiles/ProfileType/index.html +27 -27
- package/app/m/projects/Comment/index.html +27 -27
- package/app/m/projects/Issue/index.html +27 -27
- package/app/m/projects/Label/index.html +27 -27
- package/app/m/projects/Project/index.html +27 -27
- package/app/m/projects/ProjectIntegration/index.html +27 -27
- package/app/m/projects/PullRequest/index.html +27 -27
- package/app/m/projects/Repository/index.html +27 -27
- package/app/m/properties/Property/index.html +27 -27
- package/app/m/properties/Zone/index.html +27 -27
- package/app/m/reports/RuntimeReport/index.html +27 -27
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +27 -27
- package/app/m/reports/SmrtReportLock/index.html +27 -27
- package/app/m/reports/SmrtReportRefreshTask/index.html +27 -27
- package/app/m/reports/SmrtReportRun/index.html +27 -27
- package/app/m/reports/SmrtReportSchedule/index.html +27 -27
- package/app/m/reports/SmrtReportWatermark/index.html +27 -27
- package/app/m/sales/Agreement/index.html +27 -27
- package/app/m/sales/AttributionException/index.html +27 -27
- package/app/m/sales/AttributionPolicy/index.html +27 -27
- package/app/m/sales/Commission/index.html +27 -27
- package/app/m/sales/CommissionAdjustment/index.html +27 -27
- package/app/m/sales/CommissionPayout/index.html +27 -27
- package/app/m/sales/CommissionPlan/index.html +27 -27
- package/app/m/sales/Earner/index.html +27 -27
- package/app/m/sales/EarnerSourceAttribution/index.html +27 -27
- package/app/m/sales/EarningEvent/index.html +27 -27
- package/app/m/sales/ExecutedAgreement/index.html +27 -27
- package/app/m/sales/Lead/index.html +27 -27
- package/app/m/sales/Opportunity/index.html +27 -27
- package/app/m/sales/OpportunityConversion/index.html +27 -27
- package/app/m/sales/PipelineDefinition/index.html +27 -27
- package/app/m/sales/PipelineStage/index.html +27 -27
- package/app/m/sales/Referral/index.html +27 -27
- package/app/m/sales/ReferralAgreement/index.html +27 -27
- package/app/m/sales/ReferralLink/index.html +27 -27
- package/app/m/sales/ReferralProgram/index.html +27 -27
- package/app/m/sales/ReferralTermSnapshot/index.html +27 -27
- package/app/m/sales/ReferralTouch/index.html +27 -27
- package/app/m/sales/Referrer/index.html +27 -27
- package/app/m/sales/SalesActivity/index.html +27 -27
- package/app/m/sales/SalesRepresentative/index.html +27 -27
- package/app/m/sites/Site/index.html +27 -27
- package/app/m/sites/SiteAgentBinding/index.html +27 -27
- package/app/m/social/OAuthState/index.html +27 -27
- package/app/m/social/SocialAccount/index.html +27 -27
- package/app/m/social/SocialPost/index.html +27 -27
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +27 -27
- package/app/m/subscriptions/BillingAdjustment/index.html +27 -27
- package/app/m/subscriptions/ClientCharge/index.html +27 -27
- package/app/m/subscriptions/CreditGrant/index.html +27 -27
- package/app/m/subscriptions/PricingRule/index.html +27 -27
- package/app/m/subscriptions/RetailCharge/index.html +27 -27
- package/app/m/subscriptions/SpendingPolicy/index.html +27 -27
- package/app/m/subscriptions/SubscriptionPlan/index.html +27 -27
- package/app/m/subscriptions/SubscriptionPlanVersion/index.html +27 -27
- package/app/m/subscriptions/TenantSubscription/index.html +27 -27
- package/app/m/subscriptions/TenantUsageMetric/index.html +27 -27
- package/app/m/support/ServiceTimeEntry/index.html +27 -27
- package/app/m/support/SupportAiRun/index.html +27 -27
- package/app/m/support/SupportAvailability/index.html +27 -27
- package/app/m/support/SupportCase/index.html +27 -27
- package/app/m/support/SupportCaseEvent/index.html +27 -27
- package/app/m/support/SupportChannelBinding/index.html +27 -27
- package/app/m/support/SupportCharge/index.html +27 -27
- package/app/m/support/SupportCompensation/index.html +27 -27
- package/app/m/support/SupportCompensationPlan/index.html +27 -27
- package/app/m/support/SupportEscalation/index.html +27 -27
- package/app/m/support/SupportInteraction/index.html +27 -27
- package/app/m/support/SupportPlan/index.html +27 -27
- package/app/m/support/SupportPolicy/index.html +27 -27
- package/app/m/support/SupportQualification/index.html +27 -27
- package/app/m/support/SupportServiceTarget/index.html +27 -27
- package/app/m/support/SupportSpecialist/index.html +27 -27
- package/app/m/support/SupportWorkLink/index.html +27 -27
- package/app/m/tags/Tag/index.html +27 -27
- package/app/m/tags/TagAlias/index.html +27 -27
- package/app/m/timesheets/AttendanceBreak/index.html +27 -27
- package/app/m/timesheets/AttendancePunch/index.html +27 -27
- package/app/m/timesheets/AttendanceSegment/index.html +27 -27
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +27 -27
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +27 -27
- package/app/m/timesheets/ServiceTimeEntry/index.html +27 -27
- package/app/m/users/Group/index.html +27 -27
- package/app/m/users/GroupMember/index.html +27 -27
- package/app/m/users/GroupRole/index.html +27 -27
- package/app/m/users/Membership/index.html +27 -27
- package/app/m/users/MembershipOverride/index.html +27 -27
- package/app/m/users/Permission/index.html +27 -27
- package/app/m/users/Role/index.html +27 -27
- package/app/m/users/RolePermission/index.html +27 -27
- package/app/m/users/Session/index.html +27 -27
- package/app/m/users/Tenant/index.html +27 -27
- package/app/m/users/TenantIntegration/index.html +27 -27
- package/app/m/users/TenantPermissionOverride/index.html +27 -27
- package/app/m/users/User/index.html +27 -27
- package/app/m/video/Character/index.html +27 -27
- package/app/m/video/CharacterAsset/index.html +27 -27
- package/app/m/video/CompositeJob/index.html +27 -27
- package/app/m/video/Performer/index.html +27 -27
- package/app/m/video/PerformerAsset/index.html +27 -27
- package/app/m/video/Scene/index.html +27 -27
- package/app/m/video/SceneAsset/index.html +27 -27
- package/app/m/video/VideoComposition/index.html +27 -27
- package/app/m/video/VideoCompositionAsset/index.html +27 -27
- package/app/m/video/VideoSequence/index.html +27 -27
- package/app/m/video/VideoSequenceAsset/index.html +27 -27
- package/app/m/video/VideoShot/index.html +27 -27
- package/app/m/video/VideoShotAsset/index.html +27 -27
- package/app/m/video/VideoShotCharacter/index.html +27 -27
- package/app/m/video/VideoWorkflow/index.html +27 -27
- package/app/m/voice/VoiceOutput/index.html +27 -27
- package/app/m/voice/VoiceProfile/index.html +27 -27
- package/app/m/voice/VoiceSample/index.html +27 -27
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +24 -24
- package/app/packages/analytics/index.html +24 -24
- package/app/packages/approvals/index.html +24 -24
- package/app/packages/assets/index.html +24 -24
- package/app/packages/chat/index.html +24 -24
- package/app/packages/comments/index.html +24 -24
- package/app/packages/commerce/index.html +24 -24
- package/app/packages/content/index.html +24 -24
- package/app/packages/events/index.html +24 -24
- package/app/packages/expenses/index.html +24 -24
- package/app/packages/facts/index.html +24 -24
- package/app/packages/fields/index.html +24 -24
- package/app/packages/human-resources/index.html +24 -24
- package/app/packages/images/index.html +24 -24
- package/app/packages/index.html +23 -23
- package/app/packages/ingestion/index.html +24 -24
- package/app/packages/inventory/index.html +24 -24
- package/app/packages/ledgers/index.html +24 -24
- package/app/packages/manufacturing/index.html +24 -24
- package/app/packages/marketing/index.html +24 -24
- package/app/packages/messages/index.html +24 -24
- package/app/packages/places/index.html +24 -24
- package/app/packages/preferences/index.html +24 -24
- package/app/packages/products/index.html +24 -24
- package/app/packages/profiles/index.html +24 -24
- package/app/packages/projects/index.html +24 -24
- package/app/packages/properties/index.html +24 -24
- package/app/packages/reports/index.html +24 -24
- package/app/packages/sales/index.html +24 -24
- package/app/packages/sites/index.html +24 -24
- package/app/packages/social/index.html +24 -24
- package/app/packages/subscriptions/index.html +24 -24
- package/app/packages/support/index.html +24 -24
- package/app/packages/tags/index.html +24 -24
- package/app/packages/timesheets/index.html +24 -24
- package/app/packages/users/index.html +24 -24
- package/app/packages/video/index.html +24 -24
- package/app/packages/voice/index.html +24 -24
- package/app/packages/webhooks/index.html +24 -24
- package/app/recipes/account-access/help/index.html +24 -24
- package/app/recipes/account-access/index.html +26 -26
- package/app/recipes/activity/help/index.html +24 -24
- package/app/recipes/activity/index.html +26 -26
- package/app/recipes/agreements/help/index.html +24 -24
- package/app/recipes/agreements/index.html +26 -26
- package/app/recipes/analytics.reports/help/index.html +24 -24
- package/app/recipes/analytics.reports/index.html +26 -26
- package/app/recipes/assets/help/index.html +24 -24
- package/app/recipes/assets/index.html +26 -26
- package/app/recipes/billing/help/index.html +24 -24
- package/app/recipes/billing/index.html +26 -26
- package/app/recipes/chat.assistant/help/index.html +24 -24
- package/app/recipes/chat.assistant/index.html +26 -26
- package/app/recipes/comments/help/index.html +24 -24
- package/app/recipes/comments/index.html +26 -26
- package/app/recipes/commerce.customers/help/index.html +24 -24
- package/app/recipes/commerce.customers/index.html +26 -26
- package/app/recipes/commerce.estimates/help/index.html +24 -24
- package/app/recipes/commerce.estimates/index.html +26 -26
- package/app/recipes/commerce.purchases/help/index.html +24 -24
- package/app/recipes/commerce.purchases/index.html +26 -26
- package/app/recipes/commerce.sales/help/index.html +24 -24
- package/app/recipes/commerce.sales/index.html +26 -26
- package/app/recipes/commerce.vendors/help/index.html +24 -24
- package/app/recipes/commerce.vendors/index.html +26 -26
- package/app/recipes/commerce.wholesale/help/index.html +24 -24
- package/app/recipes/commerce.wholesale/index.html +26 -26
- package/app/recipes/events.calendar/help/index.html +24 -24
- package/app/recipes/events.calendar/index.html +26 -26
- package/app/recipes/expenses.tracking/help/index.html +24 -24
- package/app/recipes/expenses.tracking/index.html +26 -26
- package/app/recipes/fields.form-customization/help/index.html +24 -24
- package/app/recipes/fields.form-customization/index.html +26 -26
- package/app/recipes/ingestion/help/index.html +24 -24
- package/app/recipes/ingestion/index.html +26 -26
- package/app/recipes/integrations/help/index.html +24 -24
- package/app/recipes/integrations/index.html +26 -26
- package/app/recipes/inventory.stock/help/index.html +24 -24
- package/app/recipes/inventory.stock/index.html +26 -26
- package/app/recipes/ledgers.bookkeeping/help/index.html +24 -24
- package/app/recipes/ledgers.bookkeeping/index.html +26 -26
- package/app/recipes/messages/help/index.html +24 -24
- package/app/recipes/messages/index.html +26 -26
- package/app/recipes/products/help/index.html +24 -24
- package/app/recipes/products/index.html +26 -26
- package/app/recipes/projects.tracker/help/index.html +24 -24
- package/app/recipes/projects.tracker/index.html +26 -26
- package/app/recipes/reports.materialized/help/index.html +24 -24
- package/app/recipes/reports.materialized/index.html +26 -26
- package/app/recipes/reports.runtime/help/index.html +24 -24
- package/app/recipes/reports.runtime/index.html +26 -26
- package/app/recipes/sales.pipeline/help/index.html +24 -24
- package/app/recipes/sales.pipeline/index.html +26 -26
- package/app/recipes/tags.taxonomy/help/index.html +24 -24
- package/app/recipes/tags.taxonomy/index.html +26 -26
- package/app/recipes/team-collaboration/help/index.html +24 -24
- package/app/recipes/team-collaboration/index.html +26 -26
- package/app/recipes/timesheets.time-entries/help/index.html +24 -24
- package/app/recipes/timesheets.time-entries/index.html +26 -26
- package/app/s/custom-accounts/index.html +23 -23
- package/app/s/custom-appointments/index.html +23 -23
- package/app/s/custom-billing/index.html +23 -23
- package/app/s/custom-bookings/index.html +23 -23
- package/app/s/custom-buying/index.html +23 -23
- package/app/s/custom-checkout/index.html +23 -23
- package/app/s/custom-classes/index.html +23 -23
- package/app/s/custom-clients/index.html +23 -23
- package/app/s/custom-events/index.html +23 -23
- package/app/s/custom-fleet/index.html +23 -23
- package/app/s/custom-gigs/index.html +23 -23
- package/app/s/custom-giving/index.html +23 -23
- package/app/s/custom-instruments/index.html +23 -23
- package/app/s/custom-jobs/index.html +23 -23
- package/app/s/custom-kitchen/index.html +23 -23
- package/app/s/custom-lessons/index.html +23 -23
- package/app/s/custom-material/index.html +23 -23
- package/app/s/custom-meetings/index.html +23 -23
- package/app/s/custom-members/index.html +23 -23
- package/app/s/custom-merch/index.html +23 -23
- package/app/s/custom-money/index.html +23 -23
- package/app/s/custom-paint/index.html +23 -23
- package/app/s/custom-parts/index.html +23 -23
- package/app/s/custom-rentals/index.html +23 -23
- package/app/s/custom-roastery/index.html +23 -23
- package/app/s/custom-schedule/index.html +23 -23
- package/app/s/custom-shelf/index.html +23 -23
- package/app/s/custom-shop/index.html +23 -23
- package/app/s/custom-students/index.html +23 -23
- package/app/s/custom-wholesale/index.html +23 -23
- package/app/s/custom-work/index.html +23 -23
- package/app/s/custom-yard/index.html +23 -23
- package/app/s/section-access-control/index.html +23 -23
- package/app/s/section-account-security/index.html +23 -23
- package/app/s/section-accounting/index.html +23 -23
- package/app/s/section-activity/index.html +23 -23
- package/app/s/section-agreements/index.html +23 -23
- package/app/s/section-analytics/index.html +23 -23
- package/app/s/section-assets/index.html +23 -23
- package/app/s/section-billing/index.html +23 -23
- package/app/s/section-calendar/index.html +23 -23
- package/app/s/section-catalog/index.html +23 -23
- package/app/s/section-chat.assistant/index.html +23 -23
- package/app/s/section-comments/index.html +23 -23
- package/app/s/section-fields.form-customization/index.html +23 -23
- package/app/s/section-ingestion/index.html +23 -23
- package/app/s/section-integrations/index.html +23 -23
- package/app/s/section-messages/index.html +23 -23
- package/app/s/section-more/index.html +23 -23
- package/app/s/section-operations/index.html +23 -23
- package/app/s/section-projects/index.html +23 -23
- package/app/s/section-purchasing/index.html +23 -23
- package/app/s/section-reports.materialized/index.html +23 -23
- package/app/s/section-reports.runtime/index.html +23 -23
- package/app/s/section-sales/index.html +23 -23
- package/app/s/section-taxonomy/index.html +23 -23
- package/app/s/section-team/index.html +23 -23
- package/app/s/section-work/index.html +23 -23
- package/dist/ai/instance.d.ts.map +1 -1
- package/dist/ai/instance.js +2 -0
- package/dist/assistant/change.d.ts +2 -0
- package/dist/assistant/change.d.ts.map +1 -1
- package/dist/assistant/change.js +5 -0
- package/dist/assistant/coaching.d.ts +7 -0
- package/dist/assistant/coaching.d.ts.map +1 -0
- package/dist/assistant/coaching.js +42 -0
- package/dist/assistant/prompt.d.ts.map +1 -1
- package/dist/assistant/prompt.js +1 -0
- package/dist/assistant/session.svelte.d.ts +4 -1
- package/dist/assistant/session.svelte.d.ts.map +1 -1
- package/dist/assistant/session.svelte.js +5 -1
- package/dist/assistant/starters.d.ts +7 -0
- package/dist/assistant/starters.d.ts.map +1 -0
- package/dist/assistant/starters.js +33 -0
- package/dist/assistant/transport.d.ts +37 -2
- package/dist/assistant/transport.d.ts.map +1 -1
- package/dist/assistant/transport.js +257 -56
- package/dist/catalog/catalog.json +38 -38
- package/dist/components/BrowserAssistant.svelte +20 -0
- package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
- package/dist/components/ExportPanel.svelte +176 -118
- package/dist/components/ExportPanel.svelte.d.ts +8 -0
- package/dist/components/ExportPanel.svelte.d.ts.map +1 -1
- package/dist/components/HeaderIconLink.svelte +8 -0
- package/dist/components/HeaderIconLink.svelte.d.ts +1 -0
- package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
- package/dist/components/ProjectControls.svelte +133 -0
- package/dist/components/ProjectControls.svelte.d.ts +15 -0
- package/dist/components/ProjectControls.svelte.d.ts.map +1 -0
- package/dist/components/SectionOverview.svelte +4 -5
- package/dist/components/SectionOverview.svelte.d.ts +1 -1
- package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
- package/dist/components/SettingsPanel.svelte +37 -1
- package/dist/components/SettingsPanel.svelte.d.ts +7 -1
- package/dist/components/SettingsPanel.svelte.d.ts.map +1 -1
- package/dist/cookbook/file.d.ts +5 -0
- package/dist/cookbook/file.d.ts.map +1 -1
- package/dist/cookbook/file.js +9 -2
- package/dist/cookbook/store.svelte.d.ts +4 -1
- package/dist/cookbook/store.svelte.d.ts.map +1 -1
- package/dist/cookbook/store.svelte.js +9 -10
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +10 -0
- package/dist/core/reply.d.ts +2 -0
- package/dist/core/reply.d.ts.map +1 -1
- package/dist/core/reply.js +4 -0
- package/dist/data/packs.d.ts.map +1 -1
- package/dist/data/packs.js +14 -7
- package/dist/data/planner-source.d.ts.map +1 -1
- package/dist/data/planner-source.js +4 -3
- package/dist/data/sample-context.d.ts +84 -0
- package/dist/data/sample-context.d.ts.map +1 -0
- package/dist/data/sample-context.js +106 -0
- package/dist/data/source.d.ts.map +1 -1
- package/dist/data/source.js +2 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/library/state.svelte.d.ts.map +1 -1
- package/dist/library/state.svelte.js +3 -3
- package/dist/overviews/definitions.d.ts +2 -2
- package/dist/overviews/definitions.d.ts.map +1 -1
- package/dist/overviews/definitions.js +19 -31
- package/dist/overviews/page.d.ts.map +1 -1
- package/dist/overviews/page.js +4 -1
- package/dist/overviews/registry.d.ts +1 -1
- package/dist/overviews/registry.js +3 -3
- package/dist/overviews/validate.d.ts.map +1 -1
- package/dist/overviews/validate.js +15 -2
- package/dist/planner/Planner.svelte +46 -4
- package/dist/planner/Planner.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerControls.svelte +18 -2
- package/dist/planner/PlannerControls.svelte.d.ts +2 -0
- package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerHostAction.svelte +61 -0
- package/dist/planner/PlannerHostAction.svelte.d.ts +12 -0
- package/dist/planner/PlannerHostAction.svelte.d.ts.map +1 -0
- package/dist/planner/PlannerLifecycle.svelte +75 -5
- package/dist/planner/PlannerLifecycle.svelte.d.ts +2 -1
- package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
- package/dist/planner/bridge.d.ts +73 -0
- package/dist/planner/bridge.d.ts.map +1 -0
- package/dist/planner/bridge.js +303 -0
- package/dist/planner/commands/adapter.d.ts +2 -0
- package/dist/planner/commands/adapter.d.ts.map +1 -1
- package/dist/planner/commands/adapter.js +19 -0
- package/dist/planner/export-context.d.ts +6 -0
- package/dist/planner/export-context.d.ts.map +1 -0
- package/dist/planner/export-context.js +14 -0
- package/dist/planner/guide.d.ts +69 -0
- package/dist/planner/guide.d.ts.map +1 -0
- package/dist/planner/guide.js +115 -0
- package/dist/planner/host-reply.d.ts +22 -0
- package/dist/planner/host-reply.d.ts.map +1 -0
- package/dist/planner/host-reply.js +71 -0
- package/dist/planner/shell.d.ts +6 -0
- package/dist/planner/shell.d.ts.map +1 -1
- package/dist/planner/shell.js +2 -0
- package/dist/planner/types.d.ts +39 -1
- package/dist/planner/types.d.ts.map +1 -1
- package/dist/planner/workspace-storage.d.ts +29 -0
- package/dist/planner/workspace-storage.d.ts.map +1 -0
- package/dist/planner/workspace-storage.js +355 -0
- package/dist/planner/workspace.svelte.d.ts +19 -0
- package/dist/planner/workspace.svelte.d.ts.map +1 -0
- package/dist/planner/workspace.svelte.js +52 -0
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +54 -54
- package/app/_app/immutable/assets/2.CdEXvRg0.css +0 -1
- package/app/_app/immutable/assets/AppShell.BkKNrxND.css +0 -1
- package/app/_app/immutable/chunks/5TDxHd66.js +0 -1
- package/app/_app/immutable/chunks/9PL91wDk.js +0 -4
- package/app/_app/immutable/chunks/9iVbSlQr.js +0 -16
- package/app/_app/immutable/chunks/B-xSgl5J.js +0 -1
- package/app/_app/immutable/chunks/BDKUpjK6.js +0 -2
- package/app/_app/immutable/chunks/Bq35Wl4H.js +0 -2
- package/app/_app/immutable/chunks/Cu77BRmy.js +0 -1
- package/app/_app/immutable/chunks/CxZIUuYu.js +0 -1
- package/app/_app/immutable/chunks/CzHmSbsw.js +0 -1
- package/app/_app/immutable/chunks/D71UrO5c.js +0 -1
- package/app/_app/immutable/chunks/DF-0MxNw.js +0 -1
- package/app/_app/immutable/chunks/DaWOaOo5.js +0 -10
- package/app/_app/immutable/chunks/aDZBV4Ss.js +0 -26
- package/app/_app/immutable/entry/start.DQ2WMDJa.js +0 -1
- package/app/_app/immutable/nodes/0.CjivLsXS.js +0 -7
- package/app/_app/immutable/nodes/10.CRcxQ1FU.js +0 -3
- package/app/_app/immutable/nodes/14.CvNTiqf4.js +0 -1
- package/app/_app/immutable/nodes/2.D8ImYTF0.js +0 -24
- package/app/_app/immutable/nodes/7.Q7dzrAos.js +0 -1
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/** Project data is tab-scoped unless the visitor explicitly remembers it. */
|
|
2
|
+
export const REMEMBER_KEY = 'smrt-planner:remember:v1';
|
|
3
|
+
export const LEGACY_WORKSPACE_KEY = 'smrt-planner:legacy-workspace:v1';
|
|
4
|
+
export const EPHEMERAL_RECOVERY_KEY = 'smrt-planner:ephemeral-recovery:v1';
|
|
5
|
+
const EPHEMERAL_KEYS = new Set([
|
|
6
|
+
'smrt-planner:conversation:v1',
|
|
7
|
+
'smrt-planner:conversation-seed:v1',
|
|
8
|
+
'smrt-planner:host-draft:v1',
|
|
9
|
+
EPHEMERAL_RECOVERY_KEY,
|
|
10
|
+
]);
|
|
11
|
+
const isProjectKey = (key) => ownsWorkspaceKey(key) && !EPHEMERAL_KEYS.has(key);
|
|
12
|
+
const MIGRATED_KEY = 'smrt-planner:workspace-migrated:v1';
|
|
13
|
+
const EXACT_KEYS = new Set([
|
|
14
|
+
'smrt-planner:cookbook-doc:v1',
|
|
15
|
+
'smrt-planner:blueprint:v1',
|
|
16
|
+
'smrt-planner:cookbook-doc:unreadable',
|
|
17
|
+
'smrt-planner:cookbook-doc:backup',
|
|
18
|
+
'smrt-planner:cookbook',
|
|
19
|
+
'smrt-planner:cookbook-applied',
|
|
20
|
+
'smrt-planner:sample-context:v1',
|
|
21
|
+
'smrt-planner:conversation:v1',
|
|
22
|
+
'smrt-planner:conversation-seed:v1',
|
|
23
|
+
'smrt-planner:host-draft:v1',
|
|
24
|
+
EPHEMERAL_RECOVERY_KEY,
|
|
25
|
+
]);
|
|
26
|
+
export const ownsWorkspaceKey = (key) => EXACT_KEYS.has(key) || key.startsWith('smrt-planner:data:v6:');
|
|
27
|
+
function browser(kind) {
|
|
28
|
+
try {
|
|
29
|
+
return globalThis[kind] ?? null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function entries(storage) {
|
|
36
|
+
if (!storage)
|
|
37
|
+
return [];
|
|
38
|
+
const result = [];
|
|
39
|
+
for (let i = 0; i < storage.length; i++) {
|
|
40
|
+
const key = storage.key(i);
|
|
41
|
+
if (key && ownsWorkspaceKey(key)) {
|
|
42
|
+
const value = storage.getItem(key);
|
|
43
|
+
if (value !== null)
|
|
44
|
+
result.push([key, value]);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/** Storage is injected for deterministic tests and restricted browser contexts. */
|
|
50
|
+
export function createWorkspaceStorage(local, session) {
|
|
51
|
+
let initialized = false;
|
|
52
|
+
const remembering = () => local?.getItem(REMEMBER_KEY) === 'true';
|
|
53
|
+
function initialize() {
|
|
54
|
+
if (initialized)
|
|
55
|
+
return;
|
|
56
|
+
initialized = true;
|
|
57
|
+
if (!local || !session)
|
|
58
|
+
return;
|
|
59
|
+
try {
|
|
60
|
+
// Retire earlier durable chat/draft copies only after preserving exact
|
|
61
|
+
// bytes in this tab. Conflicting old lead ids remain recoverable here.
|
|
62
|
+
const ephemeral = entries(local).filter(([key]) => EPHEMERAL_KEYS.has(key));
|
|
63
|
+
const archiveRaw = local.getItem(LEGACY_WORKSPACE_KEY);
|
|
64
|
+
let archive;
|
|
65
|
+
if (archiveRaw) {
|
|
66
|
+
const parsed = JSON.parse(archiveRaw);
|
|
67
|
+
if (!Array.isArray(parsed) ||
|
|
68
|
+
!parsed.every((v) => Array.isArray(v) &&
|
|
69
|
+
v.length === 2 &&
|
|
70
|
+
typeof v[0] === 'string' &&
|
|
71
|
+
typeof v[1] === 'string'))
|
|
72
|
+
throw new Error('Unreadable legacy archive');
|
|
73
|
+
archive = parsed;
|
|
74
|
+
ephemeral.push(...archive.filter(([key]) => EPHEMERAL_KEYS.has(key)));
|
|
75
|
+
}
|
|
76
|
+
const conflicts = [];
|
|
77
|
+
for (const [key, value] of ephemeral) {
|
|
78
|
+
const current = session.getItem(key);
|
|
79
|
+
if (current === null)
|
|
80
|
+
session.setItem(key, value);
|
|
81
|
+
else if (current !== value)
|
|
82
|
+
conflicts.push([key, value]);
|
|
83
|
+
}
|
|
84
|
+
if (conflicts.length) {
|
|
85
|
+
const previous = session.getItem(EPHEMERAL_RECOVERY_KEY);
|
|
86
|
+
session.setItem(EPHEMERAL_RECOVERY_KEY, JSON.stringify({ previous, values: conflicts }));
|
|
87
|
+
}
|
|
88
|
+
if (archive?.some(([key]) => EPHEMERAL_KEYS.has(key))) {
|
|
89
|
+
const project = archive.filter(([key]) => !EPHEMERAL_KEYS.has(key));
|
|
90
|
+
if (project.length)
|
|
91
|
+
local.setItem(LEGACY_WORKSPACE_KEY, JSON.stringify(project));
|
|
92
|
+
else
|
|
93
|
+
local.removeItem(LEGACY_WORKSPACE_KEY);
|
|
94
|
+
}
|
|
95
|
+
for (const [key] of ephemeral)
|
|
96
|
+
local.removeItem(key);
|
|
97
|
+
}
|
|
98
|
+
catch (cause) {
|
|
99
|
+
initialized = false;
|
|
100
|
+
throw cause;
|
|
101
|
+
}
|
|
102
|
+
if (remembering() || local.getItem(MIGRATED_KEY))
|
|
103
|
+
return;
|
|
104
|
+
const legacy = entries(local).filter(([key]) => isProjectKey(key));
|
|
105
|
+
if (!legacy.length)
|
|
106
|
+
return;
|
|
107
|
+
// Preserve exact raw bytes before retiring old live keys. Never replace an archive.
|
|
108
|
+
if (!local.getItem(LEGACY_WORKSPACE_KEY)) {
|
|
109
|
+
try {
|
|
110
|
+
local.setItem(LEGACY_WORKSPACE_KEY, JSON.stringify(legacy));
|
|
111
|
+
}
|
|
112
|
+
catch (cause) {
|
|
113
|
+
initialized = false;
|
|
114
|
+
throw cause;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const before = entries(session);
|
|
118
|
+
try {
|
|
119
|
+
for (const [key, value] of legacy) {
|
|
120
|
+
if (session.getItem(key) === null)
|
|
121
|
+
session.setItem(key, value);
|
|
122
|
+
}
|
|
123
|
+
local.setItem(MIGRATED_KEY, 'true');
|
|
124
|
+
}
|
|
125
|
+
catch (cause) {
|
|
126
|
+
for (const [key] of entries(session))
|
|
127
|
+
session.removeItem(key);
|
|
128
|
+
for (const [key, value] of before)
|
|
129
|
+
session.setItem(key, value);
|
|
130
|
+
initialized = false;
|
|
131
|
+
throw cause;
|
|
132
|
+
}
|
|
133
|
+
for (const [key] of legacy)
|
|
134
|
+
local.removeItem(key);
|
|
135
|
+
}
|
|
136
|
+
const target = (key) => {
|
|
137
|
+
initialize();
|
|
138
|
+
return key && EPHEMERAL_KEYS.has(key)
|
|
139
|
+
? session
|
|
140
|
+
: remembering()
|
|
141
|
+
? local
|
|
142
|
+
: session;
|
|
143
|
+
};
|
|
144
|
+
const storage = {
|
|
145
|
+
get length() {
|
|
146
|
+
initialize();
|
|
147
|
+
return [
|
|
148
|
+
...entries(target()).filter(([key]) => isProjectKey(key)),
|
|
149
|
+
...entries(session).filter(([key]) => EPHEMERAL_KEYS.has(key)),
|
|
150
|
+
].length;
|
|
151
|
+
},
|
|
152
|
+
key(index) {
|
|
153
|
+
initialize();
|
|
154
|
+
return ([
|
|
155
|
+
...entries(target()).filter(([key]) => isProjectKey(key)),
|
|
156
|
+
...entries(session).filter(([key]) => EPHEMERAL_KEYS.has(key)),
|
|
157
|
+
][index]?.[0] ?? null);
|
|
158
|
+
},
|
|
159
|
+
getItem(key) {
|
|
160
|
+
return ownsWorkspaceKey(key) ? (target(key)?.getItem(key) ?? null) : null;
|
|
161
|
+
},
|
|
162
|
+
setItem(key, value) {
|
|
163
|
+
if (!ownsWorkspaceKey(key))
|
|
164
|
+
throw new Error('Not a planner workspace key');
|
|
165
|
+
const destination = target(key);
|
|
166
|
+
if (!destination)
|
|
167
|
+
throw new Error('Workspace storage unavailable');
|
|
168
|
+
destination.setItem(key, value);
|
|
169
|
+
},
|
|
170
|
+
removeItem(key) {
|
|
171
|
+
if (ownsWorkspaceKey(key))
|
|
172
|
+
target(key)?.removeItem(key);
|
|
173
|
+
},
|
|
174
|
+
clear() {
|
|
175
|
+
initialize();
|
|
176
|
+
for (const store of [local, session])
|
|
177
|
+
for (const [key] of entries(store))
|
|
178
|
+
store?.removeItem(key);
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
storage,
|
|
183
|
+
remembering() {
|
|
184
|
+
try {
|
|
185
|
+
initialize();
|
|
186
|
+
return remembering();
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
recoveryAvailable() {
|
|
193
|
+
try {
|
|
194
|
+
initialize();
|
|
195
|
+
return !!local?.getItem(LEGACY_WORKSPACE_KEY);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
setRemember(value) {
|
|
202
|
+
try {
|
|
203
|
+
initialize();
|
|
204
|
+
if (!local || !session)
|
|
205
|
+
return false;
|
|
206
|
+
if (remembering() === value) {
|
|
207
|
+
if (!value)
|
|
208
|
+
local.removeItem(LEGACY_WORKSPACE_KEY);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
const source = remembering() ? local : session;
|
|
212
|
+
const destination = value ? local : session;
|
|
213
|
+
const data = entries(source).filter(([key]) => isProjectKey(key));
|
|
214
|
+
const before = entries(destination).filter(([key]) => isProjectKey(key));
|
|
215
|
+
try {
|
|
216
|
+
for (const [key] of before)
|
|
217
|
+
destination.removeItem(key);
|
|
218
|
+
for (const [key, raw] of data)
|
|
219
|
+
destination.setItem(key, raw);
|
|
220
|
+
local.setItem(REMEMBER_KEY, String(value));
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
for (const [key] of entries(destination).filter(([key]) => isProjectKey(key)))
|
|
224
|
+
destination.removeItem(key);
|
|
225
|
+
for (const [key, raw] of before)
|
|
226
|
+
destination.setItem(key, raw);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
if (source !== destination)
|
|
230
|
+
for (const [key] of data)
|
|
231
|
+
source.removeItem(key);
|
|
232
|
+
if (!value)
|
|
233
|
+
local.removeItem(LEGACY_WORKSPACE_KEY);
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
discardRecovery() {
|
|
241
|
+
try {
|
|
242
|
+
local?.removeItem(LEGACY_WORKSPACE_KEY);
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
recover() {
|
|
250
|
+
try {
|
|
251
|
+
initialize();
|
|
252
|
+
const raw = local?.getItem(LEGACY_WORKSPACE_KEY);
|
|
253
|
+
if (!raw)
|
|
254
|
+
return false;
|
|
255
|
+
const data = JSON.parse(raw);
|
|
256
|
+
if (!Array.isArray(data) ||
|
|
257
|
+
!data.every((item) => Array.isArray(item) &&
|
|
258
|
+
item.length === 2 &&
|
|
259
|
+
typeof item[0] === 'string' &&
|
|
260
|
+
isProjectKey(item[0]) &&
|
|
261
|
+
typeof item[1] === 'string'))
|
|
262
|
+
return false;
|
|
263
|
+
const destination = target();
|
|
264
|
+
if (!destination)
|
|
265
|
+
return false;
|
|
266
|
+
const before = entries(destination).filter(([key]) => isProjectKey(key));
|
|
267
|
+
try {
|
|
268
|
+
for (const [key] of before)
|
|
269
|
+
destination.removeItem(key);
|
|
270
|
+
for (const [key, value] of data)
|
|
271
|
+
destination.setItem(key, value);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
for (const [key] of entries(destination).filter(([key]) => isProjectKey(key)))
|
|
275
|
+
destination.removeItem(key);
|
|
276
|
+
for (const [key, value] of before)
|
|
277
|
+
destination.setItem(key, value);
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
reset() {
|
|
287
|
+
// Snapshot before any mutation, including metadata; failed clears restore
|
|
288
|
+
// exact raw project state and never reach the in-memory reset coordinator.
|
|
289
|
+
const snapshots = [];
|
|
290
|
+
const wasInitialized = initialized;
|
|
291
|
+
try {
|
|
292
|
+
for (const store of [local, session]) {
|
|
293
|
+
if (!store)
|
|
294
|
+
continue;
|
|
295
|
+
const values = entries(store);
|
|
296
|
+
if (store === local) {
|
|
297
|
+
for (const key of [
|
|
298
|
+
LEGACY_WORKSPACE_KEY,
|
|
299
|
+
REMEMBER_KEY,
|
|
300
|
+
MIGRATED_KEY,
|
|
301
|
+
]) {
|
|
302
|
+
const value = store.getItem(key);
|
|
303
|
+
if (value !== null)
|
|
304
|
+
values.push([key, value]);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
snapshots.push({ store, values });
|
|
308
|
+
}
|
|
309
|
+
// Write fallible metadata first; reset must not resurrect legacy work.
|
|
310
|
+
local?.setItem(MIGRATED_KEY, 'true');
|
|
311
|
+
for (const { store, values } of snapshots) {
|
|
312
|
+
for (const [key] of values)
|
|
313
|
+
if (key !== MIGRATED_KEY)
|
|
314
|
+
store.removeItem(key);
|
|
315
|
+
}
|
|
316
|
+
initialized = true;
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
for (const { store, values } of snapshots) {
|
|
321
|
+
try {
|
|
322
|
+
for (const [key, value] of values)
|
|
323
|
+
store.setItem(key, value);
|
|
324
|
+
if (store === local &&
|
|
325
|
+
!values.some(([key]) => key === MIGRATED_KEY))
|
|
326
|
+
store.removeItem(MIGRATED_KEY);
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
/* Storage may have become entirely unavailable. */
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
initialized = wasInitialized;
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
let active;
|
|
339
|
+
export function workspaceStorageManager() {
|
|
340
|
+
if (!active)
|
|
341
|
+
active = createWorkspaceStorage(browser('localStorage'), browser('sessionStorage'));
|
|
342
|
+
return active;
|
|
343
|
+
}
|
|
344
|
+
export function workspaceStorage() {
|
|
345
|
+
return workspaceStorageManager().storage;
|
|
346
|
+
}
|
|
347
|
+
export function rememberPlan() {
|
|
348
|
+
return workspaceStorageManager().remembering();
|
|
349
|
+
}
|
|
350
|
+
export function setRememberPlan(value) {
|
|
351
|
+
return workspaceStorageManager().setRemember(value);
|
|
352
|
+
}
|
|
353
|
+
export function resetWorkspaceStorage() {
|
|
354
|
+
return workspaceStorageManager().reset();
|
|
355
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BrowserAssistantTransport } from '../assistant/transport.ts';
|
|
2
|
+
import type { DataSource } from '../data/source.ts';
|
|
3
|
+
import type { PlannerController } from './commands/index.ts';
|
|
4
|
+
export declare const PROJECT_PERSISTENCE_CONTEXT: unique symbol;
|
|
5
|
+
export declare const workspacePersistence: {
|
|
6
|
+
readonly remembering: boolean;
|
|
7
|
+
readonly recoveryAvailable: boolean;
|
|
8
|
+
setRemember(value: boolean): boolean;
|
|
9
|
+
recover(): boolean;
|
|
10
|
+
discardRecovery(): boolean;
|
|
11
|
+
};
|
|
12
|
+
/** Called only after the visitor confirms; the host guards irreversible requests. */
|
|
13
|
+
export declare function resetWorkspace(options: {
|
|
14
|
+
controller: PlannerController;
|
|
15
|
+
dataSource: DataSource;
|
|
16
|
+
nativeAssistant?: BrowserAssistantTransport;
|
|
17
|
+
onreset?: () => void;
|
|
18
|
+
}): boolean;
|
|
19
|
+
//# sourceMappingURL=workspace.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/workspace.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAI3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,eAAO,MAAM,2BAA2B,eAEvC,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;uBASZ,OAAO;;;CAe3B,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,GAAG,OAAO,CAgBV"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { cookbookStore } from "../cookbook/store.svelte.js";
|
|
2
|
+
import { setSamplePack } from "../data/packs.js";
|
|
3
|
+
import { clearSampleContext } from "../data/sample-context.js";
|
|
4
|
+
import { libraryState } from "../library/state.svelte.js";
|
|
5
|
+
import { rememberPlan, resetWorkspaceStorage, setRememberPlan, workspaceStorageManager, } from "./workspace-storage.js";
|
|
6
|
+
export const PROJECT_PERSISTENCE_CONTEXT = Symbol('planner-project-persistence-owner');
|
|
7
|
+
let revision = $state(0);
|
|
8
|
+
export const workspacePersistence = {
|
|
9
|
+
get remembering() {
|
|
10
|
+
void revision;
|
|
11
|
+
return rememberPlan();
|
|
12
|
+
},
|
|
13
|
+
get recoveryAvailable() {
|
|
14
|
+
void revision;
|
|
15
|
+
return workspaceStorageManager().recoveryAvailable();
|
|
16
|
+
},
|
|
17
|
+
setRemember(value) {
|
|
18
|
+
const ok = setRememberPlan(value);
|
|
19
|
+
revision++;
|
|
20
|
+
return ok;
|
|
21
|
+
},
|
|
22
|
+
recover() {
|
|
23
|
+
const ok = workspaceStorageManager().recover();
|
|
24
|
+
revision++;
|
|
25
|
+
return ok;
|
|
26
|
+
},
|
|
27
|
+
discardRecovery() {
|
|
28
|
+
const ok = workspaceStorageManager().discardRecovery();
|
|
29
|
+
revision++;
|
|
30
|
+
return ok;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/** Called only after the visitor confirms; the host guards irreversible requests. */
|
|
34
|
+
export function resetWorkspace(options) {
|
|
35
|
+
if (!resetWorkspaceStorage())
|
|
36
|
+
return false;
|
|
37
|
+
try {
|
|
38
|
+
options.nativeAssistant?.reset();
|
|
39
|
+
cookbookStore.reset({ preserveTheme: true });
|
|
40
|
+
libraryState.active = null;
|
|
41
|
+
libraryState.appliedWork = null;
|
|
42
|
+
clearSampleContext();
|
|
43
|
+
setSamplePack(null);
|
|
44
|
+
options.dataSource.reset?.();
|
|
45
|
+
options.controller.resetWorkspace?.();
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
revision++;
|
|
49
|
+
options.onreset?.();
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
package/dist/smrt-version.d.ts
CHANGED
package/dist/smrt-version.js
CHANGED
|
@@ -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.
|
|
4
|
+
export const SMRT_VERSION = '0.57.13';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-planner",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The smrt planner as a mountable Svelte component with a typed command set and plan snapshot.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@happyvertical/ai": "^0.105.5",
|
|
46
|
-
"@happyvertical/smrt-assets": "0.57.
|
|
47
|
-
"@happyvertical/smrt-chat": "0.57.
|
|
48
|
-
"@happyvertical/smrt-commerce": "0.57.
|
|
49
|
-
"@happyvertical/smrt-core": "0.57.
|
|
50
|
-
"@happyvertical/smrt-reports": "0.57.
|
|
51
|
-
"@happyvertical/smrt-svelte": "0.57.
|
|
52
|
-
"@happyvertical/smrt-ui": "0.57.
|
|
46
|
+
"@happyvertical/smrt-assets": "0.57.13",
|
|
47
|
+
"@happyvertical/smrt-chat": "0.57.13",
|
|
48
|
+
"@happyvertical/smrt-commerce": "0.57.13",
|
|
49
|
+
"@happyvertical/smrt-core": "0.57.13",
|
|
50
|
+
"@happyvertical/smrt-reports": "0.57.13",
|
|
51
|
+
"@happyvertical/smrt-svelte": "0.57.13",
|
|
52
|
+
"@happyvertical/smrt-ui": "0.57.13",
|
|
53
53
|
"@happyvertical/speech": "^0.105.5",
|
|
54
54
|
"@huggingface/transformers": "^4.3.0",
|
|
55
55
|
"@mlc-ai/web-llm": "^0.2.85"
|
|
@@ -64,52 +64,52 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@happyvertical/smrt-ads": "0.57.
|
|
68
|
-
"@happyvertical/smrt-affiliates": "0.57.
|
|
69
|
-
"@happyvertical/smrt-agents": "0.57.
|
|
70
|
-
"@happyvertical/smrt-analytics": "0.57.
|
|
71
|
-
"@happyvertical/smrt-approvals": "0.57.
|
|
72
|
-
"@happyvertical/smrt-comments": "0.57.
|
|
73
|
-
"@happyvertical/smrt-content": "0.57.
|
|
74
|
-
"@happyvertical/smrt-education": "0.57.
|
|
75
|
-
"@happyvertical/smrt-events": "0.57.
|
|
76
|
-
"@happyvertical/smrt-expenses": "0.57.
|
|
77
|
-
"@happyvertical/smrt-facts": "0.57.
|
|
78
|
-
"@happyvertical/smrt-features": "0.57.
|
|
79
|
-
"@happyvertical/smrt-fields": "0.57.
|
|
80
|
-
"@happyvertical/smrt-gnode": "0.57.
|
|
81
|
-
"@happyvertical/smrt-human-resources": "0.57.
|
|
82
|
-
"@happyvertical/smrt-images": "0.57.
|
|
83
|
-
"@happyvertical/smrt-ingestion": "0.57.
|
|
84
|
-
"@happyvertical/smrt-inventory": "0.57.
|
|
85
|
-
"@happyvertical/smrt-jobs": "0.57.
|
|
86
|
-
"@happyvertical/smrt-languages": "0.57.
|
|
87
|
-
"@happyvertical/smrt-ledgers": "0.57.
|
|
88
|
-
"@happyvertical/smrt-manufacturing": "0.57.
|
|
89
|
-
"@happyvertical/smrt-marketing": "0.57.
|
|
90
|
-
"@happyvertical/smrt-messages": "0.57.
|
|
91
|
-
"@happyvertical/smrt-personas": "0.57.
|
|
92
|
-
"@happyvertical/smrt-places": "0.57.
|
|
93
|
-
"@happyvertical/smrt-playbooks": "0.57.
|
|
94
|
-
"@happyvertical/smrt-preferences": "0.57.
|
|
95
|
-
"@happyvertical/smrt-products": "0.57.
|
|
96
|
-
"@happyvertical/smrt-profiles": "0.57.
|
|
97
|
-
"@happyvertical/smrt-projects": "0.57.
|
|
98
|
-
"@happyvertical/smrt-prompts": "0.57.
|
|
99
|
-
"@happyvertical/smrt-properties": "0.57.
|
|
100
|
-
"@happyvertical/smrt-sales": "0.57.
|
|
101
|
-
"@happyvertical/smrt-secrets": "0.57.
|
|
102
|
-
"@happyvertical/smrt-sites": "0.57.
|
|
103
|
-
"@happyvertical/smrt-social": "0.57.
|
|
104
|
-
"@happyvertical/smrt-subscriptions": "0.57.
|
|
105
|
-
"@happyvertical/smrt-support": "0.57.
|
|
106
|
-
"@happyvertical/smrt-tags": "0.57.
|
|
107
|
-
"@happyvertical/smrt-tenancy": "0.57.
|
|
108
|
-
"@happyvertical/smrt-timesheets": "0.57.
|
|
109
|
-
"@happyvertical/smrt-users": "0.57.
|
|
110
|
-
"@happyvertical/smrt-video": "0.57.
|
|
111
|
-
"@happyvertical/smrt-voice": "0.57.
|
|
112
|
-
"@happyvertical/smrt-webhooks": "0.57.
|
|
67
|
+
"@happyvertical/smrt-ads": "0.57.13",
|
|
68
|
+
"@happyvertical/smrt-affiliates": "0.57.13",
|
|
69
|
+
"@happyvertical/smrt-agents": "0.57.13",
|
|
70
|
+
"@happyvertical/smrt-analytics": "0.57.13",
|
|
71
|
+
"@happyvertical/smrt-approvals": "0.57.13",
|
|
72
|
+
"@happyvertical/smrt-comments": "0.57.13",
|
|
73
|
+
"@happyvertical/smrt-content": "0.57.13",
|
|
74
|
+
"@happyvertical/smrt-education": "0.57.13",
|
|
75
|
+
"@happyvertical/smrt-events": "0.57.13",
|
|
76
|
+
"@happyvertical/smrt-expenses": "0.57.13",
|
|
77
|
+
"@happyvertical/smrt-facts": "0.57.13",
|
|
78
|
+
"@happyvertical/smrt-features": "0.57.13",
|
|
79
|
+
"@happyvertical/smrt-fields": "0.57.13",
|
|
80
|
+
"@happyvertical/smrt-gnode": "0.57.13",
|
|
81
|
+
"@happyvertical/smrt-human-resources": "0.57.13",
|
|
82
|
+
"@happyvertical/smrt-images": "0.57.13",
|
|
83
|
+
"@happyvertical/smrt-ingestion": "0.57.13",
|
|
84
|
+
"@happyvertical/smrt-inventory": "0.57.13",
|
|
85
|
+
"@happyvertical/smrt-jobs": "0.57.13",
|
|
86
|
+
"@happyvertical/smrt-languages": "0.57.13",
|
|
87
|
+
"@happyvertical/smrt-ledgers": "0.57.13",
|
|
88
|
+
"@happyvertical/smrt-manufacturing": "0.57.13",
|
|
89
|
+
"@happyvertical/smrt-marketing": "0.57.13",
|
|
90
|
+
"@happyvertical/smrt-messages": "0.57.13",
|
|
91
|
+
"@happyvertical/smrt-personas": "0.57.13",
|
|
92
|
+
"@happyvertical/smrt-places": "0.57.13",
|
|
93
|
+
"@happyvertical/smrt-playbooks": "0.57.13",
|
|
94
|
+
"@happyvertical/smrt-preferences": "0.57.13",
|
|
95
|
+
"@happyvertical/smrt-products": "0.57.13",
|
|
96
|
+
"@happyvertical/smrt-profiles": "0.57.13",
|
|
97
|
+
"@happyvertical/smrt-projects": "0.57.13",
|
|
98
|
+
"@happyvertical/smrt-prompts": "0.57.13",
|
|
99
|
+
"@happyvertical/smrt-properties": "0.57.13",
|
|
100
|
+
"@happyvertical/smrt-sales": "0.57.13",
|
|
101
|
+
"@happyvertical/smrt-secrets": "0.57.13",
|
|
102
|
+
"@happyvertical/smrt-sites": "0.57.13",
|
|
103
|
+
"@happyvertical/smrt-social": "0.57.13",
|
|
104
|
+
"@happyvertical/smrt-subscriptions": "0.57.13",
|
|
105
|
+
"@happyvertical/smrt-support": "0.57.13",
|
|
106
|
+
"@happyvertical/smrt-tags": "0.57.13",
|
|
107
|
+
"@happyvertical/smrt-tenancy": "0.57.13",
|
|
108
|
+
"@happyvertical/smrt-timesheets": "0.57.13",
|
|
109
|
+
"@happyvertical/smrt-users": "0.57.13",
|
|
110
|
+
"@happyvertical/smrt-video": "0.57.13",
|
|
111
|
+
"@happyvertical/smrt-voice": "0.57.13",
|
|
112
|
+
"@happyvertical/smrt-webhooks": "0.57.13",
|
|
113
113
|
"@sveltejs/adapter-static": "^3.0.10",
|
|
114
114
|
"@sveltejs/kit": "2.70.3",
|
|
115
115
|
"@sveltejs/package": "^3.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer smrt.reset,smrt.structure;@layer smrt.theme{.settings.svelte-1adyoey{gap:var(--smrt-spacing-4);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:end;display:grid}.field.svelte-1adyoey{gap:var(--smrt-spacing-1);display:grid}.percent.svelte-1adyoey{align-items:flex-end;gap:var(--smrt-spacing-2);display:flex}.percent.svelte-1adyoey .smrt-number{flex:1}.percent-sign.svelte-1adyoey{padding-bottom:var(--smrt-spacing-2);color:var(--smrt-color-on-surface-variant)}.switch.svelte-1adyoey small:where(.svelte-1adyoey),.meta.svelte-1adyoey{color:var(--smrt-color-on-surface-variant)}.tax-codes.svelte-1adyoey{gap:var(--smrt-spacing-2);margin-top:var(--smrt-spacing-4);display:grid}.tax-codes.svelte-1adyoey h3:where(.svelte-1adyoey),.tax-codes.svelte-1adyoey p:where(.svelte-1adyoey){margin:0}.tax-codes.svelte-1adyoey ul:where(.svelte-1adyoey){gap:var(--smrt-spacing-1) var(--smrt-spacing-4);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.tax-codes.svelte-1adyoey li:where(.svelte-1adyoey){display:grid}.tax-codes.svelte-1adyoey .rates:where(.svelte-1adyoey){color:var(--smrt-color-on-surface-variant);font-size:.875rem}.cookbooks.svelte-mzas8k{gap:var(--smrt-spacing-4);display:grid}h2.svelte-mzas8k,h3.svelte-mzas8k,h4.svelte-mzas8k,p.svelte-mzas8k{margin:0}h3.svelte-mzas8k,h4.svelte-mzas8k{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}.meta.svelte-mzas8k,.summary.svelte-mzas8k{color:var(--smrt-color-on-surface-variant)}.grid.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.card.svelte-mzas8k{gap:var(--smrt-spacing-2);width:100%;height:100%;padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);background:var(--smrt-surface-panel);color:inherit;font:inherit;text-align:start;cursor:pointer;justify-items:start;display:grid;position:relative}.card.svelte-mzas8k:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.icon.svelte-mzas8k{color:var(--smrt-color-primary);flex:none}.heading.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-2);min-inline-size:0;padding-inline-end:4rem;display:flex}.name.svelte-mzas8k{font-weight:var(--smrt-typography-weight-semibold)}.badge.svelte-mzas8k{top:var(--smrt-spacing-3);right:var(--smrt-spacing-3);padding:0 var(--smrt-spacing-2);border-radius:var(--smrt-radius-full);background:var(--smrt-color-primary);color:var(--smrt-color-on-primary);font-size:.75rem;position:absolute}.preview.svelte-mzas8k{gap:var(--smrt-spacing-4);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);display:grid}.block.svelte-mzas8k{gap:var(--smrt-spacing-2);display:grid}.chips.svelte-mzas8k,.menu.svelte-mzas8k ul:where(.svelte-mzas8k){margin:0;padding:0;list-style:none}.chips.svelte-mzas8k{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.chips.svelte-mzas8k li:where(.svelte-mzas8k){padding:0 var(--smrt-spacing-3);border-radius:var(--smrt-radius-full);background:var(--smrt-color-surface-container)}.menu.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));display:grid}.menu.svelte-mzas8k ul:where(.svelte-mzas8k){gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-1);display:grid}.actions.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.back.svelte-mzas8k{justify-self:start;margin-inline-start:calc(-1 * var(--smrt-spacing-2))}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus{outline:none}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}[data-smrt-view-transition] .swap.svelte-mzas8k{view-transition-name:planner-cookbooks}::view-transition-group(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-old(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-new(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}.export.svelte-17nkvtk{gap:var(--smrt-spacing-5);min-inline-size:0;display:grid}h2.svelte-17nkvtk,p.svelte-17nkvtk,dl.svelte-17nkvtk,dd.svelte-17nkvtk,pre.svelte-17nkvtk{margin:0}h2.svelte-17nkvtk{font:var(--smrt-typography-title-medium-font)}.block.svelte-17nkvtk{gap:var(--smrt-spacing-3);min-inline-size:0;display:grid}.meta.svelte-17nkvtk,.notice.svelte-17nkvtk,.quiet.svelte-17nkvtk{color:var(--smrt-color-on-surface-variant)}.notice.svelte-17nkvtk:empty{display:none}.summary.svelte-17nkvtk{gap:var(--smrt-spacing-2) var(--smrt-spacing-4);grid-template-columns:max-content minmax(0,1fr);align-items:baseline;display:grid}dt.svelte-17nkvtk{font-weight:var(--smrt-typography-weight-semibold);white-space:nowrap}.chips.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.actions.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.export.svelte-17nkvtk .prompt{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);white-space:pre-wrap;overflow-wrap:anywhere;resize:none;max-block-size:20rem;overflow:auto}code.svelte-17nkvtk{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);overflow-wrap:anywhere}.command.svelte-17nkvtk{align-items:center;gap:var(--smrt-spacing-2) var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.command.svelte-17nkvtk code:where(.svelte-17nkvtk){min-inline-size:0;padding:var(--smrt-spacing-2) var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);flex:16rem}.json.svelte-17nkvtk{max-block-size:20rem;padding:var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:var(--smrt-typography-body-small-size);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}.replace.svelte-17nkvtk{border-block-start:var(--smrt-hairline);padding-block-start:var(--smrt-spacing-4)}@media (width<=30rem){.summary.svelte-17nkvtk{grid-template-columns:minmax(0,1fr)}.actions.svelte-17nkvtk,.command.svelte-17nkvtk{flex-direction:column;align-items:stretch}.actions.svelte-17nkvtk>[data-smrt-component=Button],.command.svelte-17nkvtk>[data-smrt-component=Button]{inline-size:100%}}@media (forced-colors:active){.command.svelte-17nkvtk code:where(.svelte-17nkvtk),.json.svelte-17nkvtk{border-color:canvastext}}h3.svelte-1tvhds4,h4.svelte-1tvhds4,p.svelte-1tvhds4{margin:0}.card.svelte-1tvhds4{align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.card.selected.svelte-1tvhds4{border-color:var(--smrt-color-primary)}.head.svelte-1tvhds4{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-2);display:flex}h3.svelte-1tvhds4{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}h4.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font:var(--smrt-typography-label-medium-font);letter-spacing:var(--smrt-typography-label-medium-tracking);font-weight:var(--smrt-typography-weight-semibold);text-transform:uppercase}.meta.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.plain.svelte-1tvhds4{gap:var(--smrt-spacing-1);font-size:var(--smrt-typography-body-medium-size);margin:0;padding:0;list-style:none;display:grid}.kind.svelte-1tvhds4{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size);margin-inline-end:var(--smrt-spacing-1)}.reasons.svelte-1tvhds4{margin-block-end:var(--smrt-spacing-2)}.foot.svelte-1tvhds4{gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-2);display:grid}code.svelte-1tvhds4{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:.85em}.where.svelte-1tvhds4{margin-inline-start:.35em}.summary.svelte-1tvhds4{font-size:var(--smrt-typography-body-medium-size)}@media (forced-colors:active){.card.selected.svelte-1tvhds4{border-color:highlight;outline:.125rem solid highlight}}.features.svelte-7kphei{gap:var(--smrt-spacing-3);display:grid}h2.svelte-7kphei,p.svelte-7kphei{margin:0}.meta.svelte-7kphei,.notice.svelte-7kphei,.empty.svelte-7kphei,.count.svelte-7kphei{color:var(--smrt-color-on-surface-variant)}.count.svelte-7kphei{font-size:var(--smrt-typography-body-medium-size);font-weight:400}.notice.svelte-7kphei:empty{display:none}.chips.svelte-7kphei{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.rows.svelte-7kphei{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.rows.svelte-7kphei li:where(.svelte-7kphei){align-items:center;gap:var(--smrt-spacing-3);padding:var(--smrt-spacing-3) var(--smrt-spacing-4);display:flex}.rows.svelte-7kphei li:where(.svelte-7kphei)+li:where(.svelte-7kphei){border-top:var(--smrt-hairline)}.rows.svelte-7kphei li.selected:where(.svelte-7kphei){background:color-mix(in srgb, currentColor calc(var(--smrt-state-selected) * 100%), transparent)}.includes.svelte-7kphei{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.icon.svelte-7kphei{color:var(--smrt-color-on-surface-variant);display:inline-flex}.text.svelte-7kphei{flex:1;min-width:0;display:grid}.bar.svelte-7kphei{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-3);display:flex}.name.svelte-7kphei{align-items:baseline;gap:var(--smrt-spacing-2);display:flex}.tag.svelte-7kphei{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size)}.text.svelte-7kphei a:where(.svelte-7kphei){width:fit-content;color:var(--smrt-color-on-surface);font-weight:500}.text.svelte-7kphei .meta:where(.svelte-7kphei){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (forced-colors:active){.rows.svelte-7kphei li.selected:where(.svelte-7kphei){outline-offset:-.125rem;outline:.125rem solid highlight}}.features.svelte-q9yl1j{gap:var(--smrt-spacing-3);display:grid}h2.svelte-q9yl1j,p.svelte-q9yl1j{margin:0}section.svelte-q9yl1j{gap:var(--smrt-spacing-2);display:grid}.meta.svelte-q9yl1j,.count.svelte-q9yl1j{color:var(--smrt-color-on-surface-variant)}.count.svelte-q9yl1j{font-size:var(--smrt-typography-body-medium-size)}.notice.svelte-q9yl1j:empty{display:none}.chips.svelte-q9yl1j{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.cards.svelte-q9yl1j{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));margin:0;padding:0;list-style:none;display:grid}h2.svelte-1d5gge1,p.svelte-1d5gge1{margin:0}.meta.svelte-1d5gge1,.description.svelte-1d5gge1,.notice.svelte-1d5gge1{color:var(--smrt-color-on-surface-variant)}.notice.svelte-1d5gge1:empty{display:none}.cards.svelte-1d5gge1{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));margin:0;padding:0;list-style:none;display:grid}.cards.svelte-1d5gge1 li:where(.svelte-1d5gge1){align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:var(--smrt-color-primary)}.sub.svelte-1d5gge1{gap:var(--smrt-spacing-1);display:grid}@media (forced-colors:active){.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:highlight;outline:.125rem solid highlight}}.pane.svelte-d580bl{gap:var(--smrt-spacing-4);display:grid}.meta.svelte-d580bl{color:var(--smrt-color-on-surface-variant);margin:0}.theme.svelte-18m8le4{gap:1.25rem;max-inline-size:72rem;display:grid}.cards.svelte-18m8le4{grid-template-columns:repeat(auto-fill,minmax(min(10rem,100%),1fr));gap:.75rem;display:grid}.choice.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);min-block-size:8.5rem;color:var(--smrt-color-on-surface);text-align:start;cursor:pointer;transition:border-color var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), background var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), transform var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease);align-content:start;gap:.8rem;padding:.85rem;display:grid}.choice.svelte-18m8le4:hover{border-color:var(--smrt-color-primary);background:var(--smrt-surface-raised);transform:translateY(-2px)}.choice.selected.svelte-18m8le4{border:2px solid var(--smrt-color-primary);background:var(--smrt-color-primary-container);color:var(--smrt-color-on-primary-container);padding:calc(.85rem - 1px)}.choice.svelte-18m8le4:focus-visible,.advanced.svelte-18m8le4:focus-visible,.wheel.svelte-18m8le4:focus-within,select.svelte-18m8le4:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.choice-name.svelte-18m8le4{align-items:center;gap:.55rem;font-size:1rem;font-weight:700;line-height:1.2;display:inline-flex}.choice-icon.svelte-18m8le4{block-size:1.5rem;inline-size:1.5rem;color:var(--smrt-color-primary);flex:none;place-items:center;font-size:1.35rem;display:inline-grid}.preview.svelte-18m8le4{border:1px solid color-mix(in srgb, var(--smrt-planner-preview-ink) 20%, transparent);background:var(--smrt-planner-preview-bg);border-radius:.4rem;block-size:4.5rem;inline-size:100%;display:flex;overflow:hidden}.preview-sidebar.svelte-18m8le4{background:var(--smrt-planner-preview-primary);align-content:start;gap:.35rem;inline-size:23%;padding:.5rem .3rem;display:grid}.preview-sidebar.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-surface);opacity:.8;border-radius:1rem;block-size:.22rem}.preview-main.svelte-18m8le4{flex:1;align-content:start;gap:.4rem;padding:.6rem;display:grid}.preview-title.svelte-18m8le4{background:var(--smrt-planner-preview-ink);opacity:.7;border-radius:1rem;block-size:.32rem;inline-size:55%}.preview-body.svelte-18m8le4{background:var(--smrt-planner-preview-surface);border-radius:.2rem;gap:.25rem;padding:.35rem;display:grid}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-primary);opacity:.7;border-radius:1rem;block-size:.2rem}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4):last-child{opacity:.35;inline-size:70%}.scheme.svelte-18m8le4{min-block-size:8.5rem}.choice-hint.svelte-18m8le4{color:var(--smrt-color-on-surface-variant);font-size:.85rem}.brand.svelte-18m8le4,.shape.svelte-18m8le4{flex-wrap:wrap;align-items:end;gap:1rem;display:flex}.shape.svelte-18m8le4 .field:where(.svelte-18m8le4){min-inline-size:min(10rem,100%)}.field.svelte-18m8le4{gap:.4rem;display:grid}.pick.svelte-18m8le4{align-items:center;gap:.65rem;display:flex}.wheel.svelte-18m8le4{block-size:3rem;inline-size:3rem;box-shadow:0 0 0 1px var(--smrt-hairline-color);cursor:pointer;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.wheel.svelte-18m8le4:after{content:"";background:var(--smrt-planner-picked-color);block-size:1.7rem;inline-size:1.7rem;box-shadow:var(--smrt-elevation-1);pointer-events:none;border:2px solid #fff;border-radius:50%}.wheel.svelte-18m8le4 input:where(.svelte-18m8le4){opacity:0;cursor:pointer;block-size:100%;inline-size:100%;position:absolute;inset:0}.font-field.svelte-18m8le4{min-inline-size:min(14rem,100%)}select.svelte-18m8le4{border:var(--smrt-control-border);border-radius:var(--smrt-radius-medium,.5rem);background:var(--smrt-surface-control);min-block-size:3rem;color:var(--smrt-color-on-surface);font:inherit;cursor:pointer;padding:.6rem 2rem .6rem .8rem}.error.svelte-18m8le4{color:var(--smrt-color-error);margin:0}.advanced.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);color:var(--smrt-color-on-surface);align-items:center;gap:.8rem;padding:1rem;text-decoration:none;display:flex}.advanced.svelte-18m8le4:hover{border-color:var(--smrt-color-primary)}.advanced-icon.svelte-18m8le4{background:var(--smrt-color-primary-container);block-size:2.8rem;inline-size:2.8rem;color:var(--smrt-color-on-primary-container);border-radius:.65rem;flex:none;place-items:center;font:700 1rem ui-monospace,monospace;display:grid}.advanced.svelte-18m8le4 strong:where(.svelte-18m8le4),.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){display:block}.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){color:var(--smrt-color-on-surface-variant);margin-top:.15rem}.arrow.svelte-18m8le4{margin-inline-start:auto;font-size:1.3rem}@media (forced-colors:active){.choice.selected.svelte-18m8le4{outline-offset:.125rem;border-color:highlight;outline:.125rem solid highlight}.preview.svelte-18m8le4,.wheel.svelte-18m8le4{forced-color-adjust:none}}.planner.svelte-zuxcuo .tab-panel{padding-top:var(--smrt-spacing-4)}[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-nav,[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-links{view-transition-name:planner-tabs}.planner.svelte-zuxcuo .smrt-tabs__nav{scroll-snap-type:x proximity;overscroll-behavior-x:contain}.planner.svelte-zuxcuo .smrt-tabs__tab-button{scroll-snap-align:start}@property --smrt-planner-controls-tabs-fade{syntax:"<length>";inherits:false;initial-value:0}@supports (animation-timeline:scroll()){.planner.svelte-zuxcuo .smrt-tabs__nav{-webkit-mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);animation:linear both svelte-zuxcuo-planner-tabs-fade;animation-timeline:scroll(self inline)}@keyframes svelte-zuxcuo-planner-tabs-fade{0%{--smrt-planner-controls-tabs-fade:3rem}to{--smrt-planner-controls-tabs-fade:0rem}}}.pane.svelte-zuxcuo{gap:var(--smrt-spacing-3);display:grid}.pane[hidden].svelte-zuxcuo{display:none}.meta.svelte-zuxcuo{color:var(--smrt-color-on-surface-variant);margin:0}main.svelte-1uha8ag{width:min(100%,72rem);padding:var(--smrt-spacing-6);margin-inline:auto}.first-run.svelte-1uha8ag{gap:var(--smrt-spacing-4);display:grid}.first-run.svelte-1uha8ag h1:where(.svelte-1uha8ag),.first-run.svelte-1uha8ag p:where(.svelte-1uha8ag){margin:0}.actions.svelte-1uha8ag{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}}
|