@happyvertical/smrt-planner 0.0.0-stage → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +170 -2
- package/app/404.html +80 -0
- package/app/_app/immutable/assets/0.B5zXkXe_.css +1 -0
- package/app/_app/immutable/assets/10.hpcnxvK1.css +1 -0
- package/app/_app/immutable/assets/11.D7zoXfVV.css +1 -0
- package/app/_app/immutable/assets/12.CPobm1ED.css +1 -0
- package/app/_app/immutable/assets/2.CyaWdRdI.css +1 -0
- package/app/_app/immutable/assets/3.BlPQOes8.css +1 -0
- package/app/_app/immutable/assets/8.2gQeKBp_.css +1 -0
- package/app/_app/immutable/assets/9.HOPT4xtg.css +1 -0
- package/app/_app/immutable/assets/AiSetup.Cb22AigN.css +1 -0
- package/app/_app/immutable/assets/Button.DkP0qkG9.css +1 -0
- package/app/_app/immutable/assets/ConnectTools.BgIJOOGW.css +1 -0
- package/app/_app/immutable/assets/FieldMapForm.BCU-4pO4.css +1 -0
- package/app/_app/immutable/assets/ModelPage.Dd3LcMta.css +1 -0
- package/app/_app/immutable/assets/SectionActions.CTkVuNMF.css +1 -0
- package/app/_app/immutable/assets/SectionIcons.5Udq9vN-.css +1 -0
- package/app/_app/immutable/assets/SegmentedControl.B8SrQacd.css +1 -0
- package/app/_app/immutable/assets/dist.C5nHBk_O.css +1 -0
- package/app/_app/immutable/assets/feedback.BVKAwFck.css +1 -0
- package/app/_app/immutable/assets/forms.BChZ2RWM.css +1 -0
- package/app/_app/immutable/assets/inter-latin-ext.B_-bZUTo.woff2 +0 -0
- package/app/_app/immutable/assets/inter-latin.8kRkwJBP.woff2 +0 -0
- package/app/_app/immutable/assets/jetbrains-mono-latin-ext.Bnd2h4Br.woff2 +0 -0
- package/app/_app/immutable/assets/jetbrains-mono-latin.Db4Uuiha.woff2 +0 -0
- package/app/_app/immutable/assets/ort-wasm-simd-threaded.asyncify.CxOG5pUO.wasm +0 -0
- package/app/_app/immutable/assets/percent.LH0z-ozZ.css +1 -0
- package/app/_app/immutable/assets/space-grotesk-latin-ext.wJGaI8U0.woff2 +0 -0
- package/app/_app/immutable/assets/space-grotesk-latin.DPT1xrvW.woff2 +0 -0
- package/app/_app/immutable/assets/store.CGDwHkkF.css +1 -0
- package/app/_app/immutable/assets/ui.B1A1Zl2p.css +1 -0
- package/app/_app/immutable/assets/workspace.BIMkuZDb.css +1 -0
- package/app/_app/immutable/chunks/1okeBSoq.js +1 -0
- package/app/_app/immutable/chunks/B32EWqI8.js +9 -0
- package/app/_app/immutable/chunks/B4Kevpe0.js +1 -0
- package/app/_app/immutable/chunks/BJfAXhak.js +3 -0
- package/app/_app/immutable/chunks/BKwRT_1p.js +1 -0
- package/app/_app/immutable/chunks/BQxY8kkL.js +1 -0
- package/app/_app/immutable/chunks/BS4h9ES-.js +1 -0
- package/app/_app/immutable/chunks/BWPhGFHl.js +1 -0
- package/app/_app/immutable/chunks/BYcBM-fh.js +1 -0
- package/app/_app/immutable/chunks/BYde9M_U.js +1 -0
- package/app/_app/immutable/chunks/BegKiy2G.js +1 -0
- package/app/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/app/_app/immutable/chunks/C7zBd-pD.js +1 -0
- package/app/_app/immutable/chunks/CA-A9Ngs.js +1 -0
- package/app/_app/immutable/chunks/CMhpRMKg.js +1 -0
- package/app/_app/immutable/chunks/CPRHZZeW.js +1 -0
- package/app/_app/immutable/chunks/CRQ1Pmzr.js +1 -0
- package/app/_app/immutable/chunks/CV-2zt0K.js +2 -0
- package/app/_app/immutable/chunks/CWtfVMDz.js +1 -0
- package/app/_app/immutable/chunks/CgAkqYsL.js +1 -0
- package/app/_app/immutable/chunks/Chyo8rdT.js +3 -0
- package/app/_app/immutable/chunks/CmmuWmp6.js +2 -0
- package/app/_app/immutable/chunks/CrFNLK0f.js +1 -0
- package/app/_app/immutable/chunks/CrO3W89x.js +1 -0
- package/app/_app/immutable/chunks/CyUMm_Wp.js +1 -0
- package/app/_app/immutable/chunks/CygC84VT.js +2 -0
- package/app/_app/immutable/chunks/D0VgZnk1.js +1 -0
- package/app/_app/immutable/chunks/D333l2GL.js +2 -0
- package/app/_app/immutable/chunks/D71UrO5c.js +1 -0
- package/app/_app/immutable/chunks/D7hhQvDO.js +1 -0
- package/app/_app/immutable/chunks/DD7gpKb2.js +1 -0
- package/app/_app/immutable/chunks/DJtH-lRi.js +3 -0
- package/app/_app/immutable/chunks/DNRgqfTx.js +1 -0
- package/app/_app/immutable/chunks/DRByVC-c.js +1 -0
- package/app/_app/immutable/chunks/DVRKjN-E.js +1 -0
- package/app/_app/immutable/chunks/D_J_XtJy.js +846 -0
- package/app/_app/immutable/chunks/Dbjm4OuC.js +1 -0
- package/app/_app/immutable/chunks/Dc4q22LH.js +42 -0
- package/app/_app/immutable/chunks/Dd_uD5pT.js +1 -0
- package/app/_app/immutable/chunks/Dp9GVO-9.js +1 -0
- package/app/_app/immutable/chunks/DqcD-WtP.js +1 -0
- package/app/_app/immutable/chunks/Dt-HX3Vu.js +1 -0
- package/app/_app/immutable/chunks/DyGfbRG-.js +1 -0
- package/app/_app/immutable/chunks/FbOxj-PF.js +69 -0
- package/app/_app/immutable/chunks/OJ_lLTHH.js +1 -0
- package/app/_app/immutable/chunks/QukgIHDX.js +1 -0
- package/app/_app/immutable/chunks/WxSPP8QW.js +4 -0
- package/app/_app/immutable/chunks/iET62IRm.js +2 -0
- package/app/_app/immutable/chunks/leQCwW2d.js +1 -0
- package/app/_app/immutable/chunks/p6bgzXiY.js +1 -0
- package/app/_app/immutable/chunks/uBIymjUX.js +1 -0
- package/app/_app/immutable/chunks/ufuM4XBq.js +33 -0
- package/app/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/app/_app/immutable/entry/app.D5JJain6.js +2 -0
- package/app/_app/immutable/entry/start.CH9DJLgI.js +1 -0
- package/app/_app/immutable/nodes/0.CL1MxOva.js +10 -0
- package/app/_app/immutable/nodes/1.BO731RRg.js +1 -0
- package/app/_app/immutable/nodes/10.1nQxyH9H.js +4 -0
- package/app/_app/immutable/nodes/11.Cw0JnQF3.js +1 -0
- package/app/_app/immutable/nodes/12.BmZyLHbM.js +1 -0
- package/app/_app/immutable/nodes/2.BEw046av.js +17 -0
- package/app/_app/immutable/nodes/3.DvwpTAQA.js +1 -0
- package/app/_app/immutable/nodes/4.qrT4bnmS.js +1 -0
- package/app/_app/immutable/nodes/5.DDLa2uhV.js +1 -0
- package/app/_app/immutable/nodes/6.DN0QTY6z.js +1 -0
- package/app/_app/immutable/nodes/7.C_8N82Wq.js +1 -0
- package/app/_app/immutable/nodes/8.D2Mszsua.js +3 -0
- package/app/_app/immutable/nodes/9.CLYsywul.js +1 -0
- package/app/_app/immutable/workers/assets/ort-wasm-simd-threaded.asyncify-CxOG5pUO.wasm +0 -0
- package/app/_app/immutable/workers/llm.worker-wfCOG_uk.js +69 -0
- package/app/_app/immutable/workers/local-speech.worker-DWbfmFUk.js +51 -0
- package/app/_app/version.json +1 -0
- package/app/ai/index.html +89 -0
- package/app/blueprint/index.html +87 -0
- package/app/cookbook/index.html +87 -0
- package/app/index.html +103 -0
- package/app/m/ads/AdDeliveryTier/index.html +96 -0
- package/app/m/ads/AdEvent/index.html +96 -0
- package/app/m/ads/AdFormat/index.html +96 -0
- package/app/m/ads/AdGroup/index.html +96 -0
- package/app/m/ads/AdVariation/index.html +96 -0
- package/app/m/analytics/AnalyticsDataStream/index.html +96 -0
- package/app/m/analytics/AnalyticsEvent/index.html +96 -0
- package/app/m/analytics/AnalyticsProperty/index.html +96 -0
- package/app/m/analytics/AnalyticsReport/index.html +96 -0
- package/app/m/approvals/ApprovalEvent/index.html +96 -0
- package/app/m/approvals/ApprovalPolicy/index.html +96 -0
- package/app/m/approvals/ApprovalRequest/index.html +96 -0
- package/app/m/assets/Asset/index.html +96 -0
- package/app/m/assets/AssetAssociation/index.html +97 -0
- package/app/m/assets/AssetMetafield/index.html +96 -0
- package/app/m/assets/AssetStatus/index.html +96 -0
- package/app/m/assets/AssetType/index.html +96 -0
- package/app/m/assets/Folder/index.html +96 -0
- package/app/m/chat/AgentSession/index.html +96 -0
- package/app/m/chat/ChatMessage/index.html +97 -0
- package/app/m/chat/ChatParticipant/index.html +97 -0
- package/app/m/chat/ChatReaction/index.html +96 -0
- package/app/m/chat/ChatRoom/index.html +96 -0
- package/app/m/chat/ChatThread/index.html +97 -0
- package/app/m/chat/VoiceGatewayTurn/index.html +96 -0
- package/app/m/chat/VoiceSession/index.html +96 -0
- package/app/m/commerce/Agreement/index.html +96 -0
- package/app/m/commerce/Cart/index.html +96 -0
- package/app/m/commerce/Contract/index.html +96 -0
- package/app/m/commerce/ContractLineItem/index.html +97 -0
- package/app/m/commerce/Customer/index.html +96 -0
- package/app/m/commerce/Estimate/index.html +96 -0
- package/app/m/commerce/Fulfillment/index.html +96 -0
- package/app/m/commerce/FulfillmentLineItem/index.html +97 -0
- package/app/m/commerce/Invoice/index.html +96 -0
- package/app/m/commerce/InvoiceLineItem/index.html +97 -0
- package/app/m/commerce/Lease/index.html +96 -0
- package/app/m/commerce/LicenseSale/index.html +96 -0
- package/app/m/commerce/Order/index.html +96 -0
- package/app/m/commerce/Payment/index.html +96 -0
- package/app/m/commerce/PaymentAllocation/index.html +97 -0
- package/app/m/commerce/PaymentInstrument/index.html +96 -0
- package/app/m/commerce/PaymentIntent/index.html +96 -0
- package/app/m/commerce/Payout/index.html +96 -0
- package/app/m/commerce/ProductionOrder/index.html +96 -0
- package/app/m/commerce/PurchaseOrder/index.html +96 -0
- package/app/m/commerce/Vendor/index.html +96 -0
- package/app/m/commerce/WholesaleOrder/index.html +96 -0
- package/app/m/content/Content/index.html +96 -0
- package/app/m/content/ContentContribution/index.html +96 -0
- package/app/m/content/ContentContributionAttachment/index.html +96 -0
- package/app/m/content/ContentContributionRevision/index.html +96 -0
- package/app/m/content/ContentContributionType/index.html +96 -0
- package/app/m/content/ContentContributor/index.html +96 -0
- package/app/m/content/ContentCorrection/index.html +96 -0
- package/app/m/content/ContentFeedSource/index.html +96 -0
- package/app/m/content/ContentGovernanceAssignment/index.html +96 -0
- package/app/m/content/ContentGovernancePolicy/index.html +96 -0
- package/app/m/content/ContentGovernanceProfile/index.html +96 -0
- package/app/m/content/ContentReference/index.html +96 -0
- package/app/m/content/ContentReview/index.html +96 -0
- package/app/m/content/ContentVersion/index.html +96 -0
- package/app/m/content/Contents/index.html +96 -0
- package/app/m/events/Event/index.html +96 -0
- package/app/m/events/EventParticipant/index.html +97 -0
- package/app/m/events/EventSeries/index.html +96 -0
- package/app/m/events/EventType/index.html +96 -0
- package/app/m/facts/Fact/index.html +96 -0
- package/app/m/facts/FactContent/index.html +96 -0
- package/app/m/facts/FactEvidence/index.html +96 -0
- package/app/m/facts/FactSource/index.html +96 -0
- package/app/m/facts/FactSubject/index.html +96 -0
- package/app/m/facts/FactTag/index.html +96 -0
- package/app/m/fields/FieldPolicy/index.html +96 -0
- package/app/m/fields/FieldPolicySuggestion/index.html +96 -0
- package/app/m/fields/FieldUsageCounter/index.html +96 -0
- package/app/m/images/Image/index.html +96 -0
- package/app/m/inventory/InventoryLocation/index.html +96 -0
- package/app/m/inventory/StockLevel/index.html +96 -0
- package/app/m/inventory/StockMovement/index.html +96 -0
- package/app/m/ledgers/Account/index.html +96 -0
- package/app/m/ledgers/Journal/index.html +96 -0
- package/app/m/ledgers/JournalEntry/index.html +97 -0
- package/app/m/manufacturing/Assembly/index.html +96 -0
- package/app/m/manufacturing/BillOfMaterials/index.html +96 -0
- package/app/m/manufacturing/BomLine/index.html +96 -0
- package/app/m/manufacturing/Operation/index.html +96 -0
- package/app/m/manufacturing/ProductionRun/index.html +96 -0
- package/app/m/manufacturing/ProductionRunCompletion/index.html +96 -0
- package/app/m/manufacturing/RoutingStep/index.html +96 -0
- package/app/m/marketing/Campaign/index.html +96 -0
- package/app/m/marketing/CampaignChannel/index.html +96 -0
- package/app/m/marketing/CampaignMetricSnapshot/index.html +96 -0
- package/app/m/messages/Account/index.html +96 -0
- package/app/m/messages/Attachment/index.html +96 -0
- package/app/m/messages/Blacklist/index.html +96 -0
- package/app/m/messages/Email/failed-sends/index.html +96 -0
- package/app/m/messages/Email/index.html +96 -0
- package/app/m/messages/Email/mailbox/index.html +96 -0
- package/app/m/messages/EmailAccount/index.html +96 -0
- package/app/m/messages/EmailFolder/index.html +96 -0
- package/app/m/messages/Message/index.html +96 -0
- package/app/m/messages/MessagingEndpoint/index.html +96 -0
- package/app/m/messages/PersonaMessageRoute/index.html +96 -0
- package/app/m/messages/SlackAccount/index.html +96 -0
- package/app/m/messages/SlackMessage/index.html +96 -0
- package/app/m/messages/TelegramAccount/index.html +96 -0
- package/app/m/messages/Tweet/index.html +96 -0
- package/app/m/messages/TwitterAccount/index.html +96 -0
- package/app/m/messages/Whitelist/index.html +96 -0
- package/app/m/messages/ZulipAccount/index.html +96 -0
- package/app/m/places/Place/index.html +96 -0
- package/app/m/places/PlaceType/index.html +96 -0
- package/app/m/preferences/UiPreferenceRecord/index.html +96 -0
- package/app/m/products/Category/index.html +96 -0
- package/app/m/products/Material/index.html +96 -0
- package/app/m/products/Product/index.html +96 -0
- package/app/m/products/Product/ingredients/index.html +96 -0
- package/app/m/products/ProductVariant/index.html +97 -0
- package/app/m/products/Sku/index.html +97 -0
- package/app/m/profiles/ApiKey/index.html +96 -0
- package/app/m/profiles/Bot/index.html +96 -0
- package/app/m/profiles/MagicLinkToken/index.html +96 -0
- package/app/m/profiles/NostrIdentity/index.html +96 -0
- package/app/m/profiles/OidcIdentity/index.html +96 -0
- package/app/m/profiles/Organization/index.html +96 -0
- package/app/m/profiles/Person/index.html +96 -0
- package/app/m/profiles/Profile/index.html +96 -0
- package/app/m/profiles/ProfileMetadata/index.html +96 -0
- package/app/m/profiles/ProfileMetafield/index.html +96 -0
- package/app/m/profiles/ProfileRelationship/index.html +96 -0
- package/app/m/profiles/ProfileRelationshipTerm/index.html +96 -0
- package/app/m/profiles/ProfileRelationshipType/index.html +96 -0
- package/app/m/profiles/ProfileType/index.html +96 -0
- package/app/m/projects/Comment/index.html +97 -0
- package/app/m/projects/Issue/index.html +96 -0
- package/app/m/projects/Label/index.html +96 -0
- package/app/m/projects/Project/index.html +96 -0
- package/app/m/projects/ProjectIntegration/index.html +96 -0
- package/app/m/projects/PullRequest/index.html +96 -0
- package/app/m/projects/Repository/index.html +96 -0
- package/app/m/properties/Property/index.html +96 -0
- package/app/m/properties/Zone/index.html +96 -0
- package/app/m/reports/RuntimeReport/index.html +96 -0
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +96 -0
- package/app/m/reports/SmrtReportLock/index.html +96 -0
- package/app/m/reports/SmrtReportRefreshTask/index.html +96 -0
- package/app/m/reports/SmrtReportRun/index.html +96 -0
- package/app/m/reports/SmrtReportSchedule/index.html +96 -0
- package/app/m/reports/SmrtReportWatermark/index.html +96 -0
- package/app/m/sales/AttributionException/index.html +96 -0
- package/app/m/sales/AttributionPolicy/index.html +96 -0
- package/app/m/sales/Commission/index.html +96 -0
- package/app/m/sales/CommissionAdjustment/index.html +96 -0
- package/app/m/sales/CommissionPayout/index.html +96 -0
- package/app/m/sales/CommissionPlan/index.html +96 -0
- package/app/m/sales/Earner/index.html +96 -0
- package/app/m/sales/EarnerSourceAttribution/index.html +96 -0
- package/app/m/sales/EarningEvent/index.html +96 -0
- package/app/m/sales/ExecutedAgreement/index.html +96 -0
- package/app/m/sales/Lead/index.html +96 -0
- package/app/m/sales/Opportunity/index.html +96 -0
- package/app/m/sales/OpportunityConversion/index.html +96 -0
- package/app/m/sales/PipelineDefinition/index.html +96 -0
- package/app/m/sales/PipelineStage/index.html +97 -0
- package/app/m/sales/Referral/index.html +96 -0
- package/app/m/sales/ReferralAgreement/index.html +96 -0
- package/app/m/sales/ReferralLink/index.html +96 -0
- package/app/m/sales/ReferralProgram/index.html +96 -0
- package/app/m/sales/ReferralTermSnapshot/index.html +96 -0
- package/app/m/sales/ReferralTouch/index.html +96 -0
- package/app/m/sales/Referrer/index.html +96 -0
- package/app/m/sales/SalesActivity/index.html +96 -0
- package/app/m/sales/SalesRepresentative/index.html +96 -0
- package/app/m/sites/Site/index.html +96 -0
- package/app/m/sites/SiteAgentBinding/index.html +96 -0
- package/app/m/social/OAuthState/index.html +96 -0
- package/app/m/social/SocialAccount/index.html +96 -0
- package/app/m/social/SocialPost/index.html +96 -0
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +96 -0
- package/app/m/subscriptions/BillingAdjustment/index.html +96 -0
- package/app/m/subscriptions/ClientCharge/index.html +96 -0
- package/app/m/subscriptions/CreditGrant/index.html +96 -0
- package/app/m/subscriptions/PricingRule/index.html +96 -0
- package/app/m/subscriptions/RetailCharge/index.html +96 -0
- package/app/m/subscriptions/SpendingPolicy/index.html +96 -0
- package/app/m/subscriptions/SubscriptionPlan/index.html +96 -0
- package/app/m/subscriptions/TenantSubscription/index.html +96 -0
- package/app/m/subscriptions/TenantUsageMetric/index.html +96 -0
- package/app/m/support/ServiceTimeEntry/index.html +96 -0
- package/app/m/support/SupportAiRun/index.html +96 -0
- package/app/m/support/SupportAvailability/index.html +96 -0
- package/app/m/support/SupportCase/index.html +96 -0
- package/app/m/support/SupportCaseEvent/index.html +96 -0
- package/app/m/support/SupportChannelBinding/index.html +96 -0
- package/app/m/support/SupportCharge/index.html +96 -0
- package/app/m/support/SupportCompensation/index.html +96 -0
- package/app/m/support/SupportCompensationPlan/index.html +96 -0
- package/app/m/support/SupportEscalation/index.html +96 -0
- package/app/m/support/SupportInteraction/index.html +96 -0
- package/app/m/support/SupportPlan/index.html +96 -0
- package/app/m/support/SupportPolicy/index.html +96 -0
- package/app/m/support/SupportQualification/index.html +96 -0
- package/app/m/support/SupportServiceTarget/index.html +96 -0
- package/app/m/support/SupportSpecialist/index.html +96 -0
- package/app/m/support/SupportWorkLink/index.html +96 -0
- package/app/m/tags/Tag/index.html +96 -0
- package/app/m/tags/TagAlias/index.html +96 -0
- package/app/m/timesheets/AttendanceBreak/index.html +96 -0
- package/app/m/timesheets/AttendancePunch/index.html +96 -0
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +96 -0
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +96 -0
- package/app/m/timesheets/ServiceTimeEntry/index.html +96 -0
- package/app/m/users/AccessRequest/index.html +96 -0
- package/app/m/users/Group/index.html +96 -0
- package/app/m/users/GroupMember/index.html +96 -0
- package/app/m/users/GroupRole/index.html +96 -0
- package/app/m/users/Membership/index.html +97 -0
- package/app/m/users/MembershipOverride/index.html +96 -0
- package/app/m/users/Permission/index.html +96 -0
- package/app/m/users/ResourceGrant/index.html +96 -0
- package/app/m/users/Role/index.html +96 -0
- package/app/m/users/RolePermission/index.html +96 -0
- package/app/m/users/Session/index.html +96 -0
- package/app/m/users/Tenant/index.html +96 -0
- package/app/m/users/TenantIntegration/index.html +96 -0
- package/app/m/users/TenantPermissionOverride/index.html +96 -0
- package/app/m/users/User/index.html +96 -0
- package/app/m/users/UsersCliAuthRequest/index.html +96 -0
- package/app/m/users/UsersMagicLinkToken/index.html +96 -0
- package/app/m/video/Character/index.html +96 -0
- package/app/m/video/CharacterAsset/index.html +96 -0
- package/app/m/video/CompositeJob/index.html +96 -0
- package/app/m/video/Performer/index.html +96 -0
- package/app/m/video/PerformerAsset/index.html +96 -0
- package/app/m/video/Scene/index.html +96 -0
- package/app/m/video/SceneAsset/index.html +96 -0
- package/app/m/video/VideoComposition/index.html +96 -0
- package/app/m/video/VideoCompositionAsset/index.html +96 -0
- package/app/m/video/VideoSequence/index.html +96 -0
- package/app/m/video/VideoSequenceAsset/index.html +96 -0
- package/app/m/video/VideoShot/index.html +96 -0
- package/app/m/video/VideoShotAsset/index.html +96 -0
- package/app/m/video/VideoShotCharacter/index.html +96 -0
- package/app/m/video/VideoWorkflow/index.html +96 -0
- package/app/m/voice/VoiceOutput/index.html +96 -0
- package/app/m/voice/VoiceProfile/index.html +96 -0
- package/app/m/voice/VoiceSample/index.html +96 -0
- package/app/packages/ads/index.html +92 -0
- package/app/packages/analytics/index.html +92 -0
- package/app/packages/approvals/index.html +92 -0
- package/app/packages/assets/index.html +92 -0
- package/app/packages/chat/index.html +92 -0
- package/app/packages/comments/index.html +92 -0
- package/app/packages/commerce/index.html +92 -0
- package/app/packages/content/index.html +92 -0
- package/app/packages/events/index.html +92 -0
- package/app/packages/expenses/index.html +92 -0
- package/app/packages/facts/index.html +92 -0
- package/app/packages/fields/index.html +92 -0
- package/app/packages/human-resources/index.html +92 -0
- package/app/packages/images/index.html +92 -0
- package/app/packages/index.html +90 -0
- package/app/packages/inventory/index.html +92 -0
- package/app/packages/ledgers/index.html +92 -0
- package/app/packages/manufacturing/index.html +92 -0
- package/app/packages/marketing/index.html +92 -0
- package/app/packages/messages/index.html +92 -0
- package/app/packages/places/index.html +92 -0
- package/app/packages/preferences/index.html +92 -0
- package/app/packages/products/index.html +92 -0
- package/app/packages/profiles/index.html +92 -0
- package/app/packages/projects/index.html +92 -0
- package/app/packages/properties/index.html +92 -0
- package/app/packages/reports/index.html +92 -0
- package/app/packages/sales/index.html +92 -0
- package/app/packages/sites/index.html +92 -0
- package/app/packages/social/index.html +92 -0
- package/app/packages/subscriptions/index.html +92 -0
- package/app/packages/support/index.html +92 -0
- package/app/packages/tags/index.html +92 -0
- package/app/packages/timesheets/index.html +92 -0
- package/app/packages/users/index.html +92 -0
- package/app/packages/video/index.html +92 -0
- package/app/packages/voice/index.html +92 -0
- package/app/recipes/account-access/help/index.html +93 -0
- package/app/recipes/account-access/index.html +95 -0
- package/app/recipes/activity/help/index.html +93 -0
- package/app/recipes/activity/index.html +94 -0
- package/app/recipes/agreements/help/index.html +93 -0
- package/app/recipes/agreements/index.html +96 -0
- package/app/recipes/analytics.reports/help/index.html +93 -0
- package/app/recipes/analytics.reports/index.html +94 -0
- package/app/recipes/assets/help/index.html +93 -0
- package/app/recipes/assets/index.html +95 -0
- package/app/recipes/billing/help/index.html +93 -0
- package/app/recipes/billing/index.html +95 -0
- package/app/recipes/chat.assistant/help/index.html +93 -0
- package/app/recipes/chat.assistant/index.html +94 -0
- package/app/recipes/comments/help/index.html +93 -0
- package/app/recipes/comments/index.html +94 -0
- package/app/recipes/commerce.customers/help/index.html +93 -0
- package/app/recipes/commerce.customers/index.html +94 -0
- package/app/recipes/commerce.estimates/help/index.html +93 -0
- package/app/recipes/commerce.estimates/index.html +94 -0
- package/app/recipes/commerce.purchases/help/index.html +93 -0
- package/app/recipes/commerce.purchases/index.html +94 -0
- package/app/recipes/commerce.sales/help/index.html +93 -0
- package/app/recipes/commerce.sales/index.html +94 -0
- package/app/recipes/commerce.vendors/help/index.html +93 -0
- package/app/recipes/commerce.vendors/index.html +94 -0
- package/app/recipes/commerce.wholesale/help/index.html +93 -0
- package/app/recipes/commerce.wholesale/index.html +94 -0
- package/app/recipes/events.calendar/help/index.html +93 -0
- package/app/recipes/events.calendar/index.html +94 -0
- package/app/recipes/fields.form-customization/help/index.html +93 -0
- package/app/recipes/fields.form-customization/index.html +94 -0
- package/app/recipes/inventory.stock/help/index.html +93 -0
- package/app/recipes/inventory.stock/index.html +94 -0
- package/app/recipes/ledgers.bookkeeping/help/index.html +93 -0
- package/app/recipes/ledgers.bookkeeping/index.html +94 -0
- package/app/recipes/messages/help/index.html +93 -0
- package/app/recipes/messages/index.html +95 -0
- package/app/recipes/products/help/index.html +93 -0
- package/app/recipes/products/index.html +96 -0
- package/app/recipes/projects.tracker/help/index.html +93 -0
- package/app/recipes/projects.tracker/index.html +94 -0
- package/app/recipes/reports.materialized/help/index.html +93 -0
- package/app/recipes/reports.materialized/index.html +94 -0
- package/app/recipes/sales.pipeline/help/index.html +93 -0
- package/app/recipes/sales.pipeline/index.html +94 -0
- package/app/recipes/tags.taxonomy/help/index.html +93 -0
- package/app/recipes/tags.taxonomy/index.html +94 -0
- package/app/recipes/team-collaboration/help/index.html +93 -0
- package/app/recipes/team-collaboration/index.html +94 -0
- package/app/s/custom-billing/index.html +89 -0
- package/app/s/custom-buying/index.html +89 -0
- package/app/s/custom-classes/index.html +89 -0
- package/app/s/custom-jobs/index.html +89 -0
- package/app/s/custom-kitchen/index.html +89 -0
- package/app/s/custom-material/index.html +89 -0
- package/app/s/custom-members/index.html +89 -0
- package/app/s/custom-parts/index.html +89 -0
- package/app/s/custom-schedule/index.html +89 -0
- package/app/s/custom-shop/index.html +89 -0
- package/app/s/custom-wholesale/index.html +89 -0
- package/app/s/section-access-control/index.html +89 -0
- package/app/s/section-account-security/index.html +89 -0
- package/app/s/section-accounting/index.html +89 -0
- package/app/s/section-activity/index.html +89 -0
- package/app/s/section-agreements/index.html +89 -0
- package/app/s/section-analytics/index.html +89 -0
- package/app/s/section-assets/index.html +89 -0
- package/app/s/section-billing/index.html +89 -0
- package/app/s/section-calendar/index.html +89 -0
- package/app/s/section-catalog/index.html +89 -0
- package/app/s/section-chat.assistant/index.html +89 -0
- package/app/s/section-comments/index.html +89 -0
- package/app/s/section-fields.form-customization/index.html +89 -0
- package/app/s/section-messages/index.html +89 -0
- package/app/s/section-more/index.html +89 -0
- package/app/s/section-operations/index.html +89 -0
- package/app/s/section-projects/index.html +89 -0
- package/app/s/section-purchasing/index.html +89 -0
- package/app/s/section-reports.materialized/index.html +89 -0
- package/app/s/section-sales/index.html +89 -0
- package/app/s/section-taxonomy/index.html +89 -0
- package/app/s/section-team/index.html +89 -0
- package/dist/ai/echo-gate.d.ts +13 -0
- package/dist/ai/echo-gate.js +21 -0
- package/dist/ai/icons.d.ts +9 -0
- package/dist/ai/icons.js +9 -0
- package/dist/ai/instance.d.ts +3 -0
- package/dist/ai/instance.js +25 -0
- package/dist/ai/state.svelte.d.ts +125 -0
- package/dist/ai/state.svelte.js +286 -0
- package/dist/ai/status.d.ts +67 -0
- package/dist/ai/status.js +117 -0
- package/dist/assets/smrt-mark.svg +38 -0
- package/dist/assistant/change.d.ts +101 -0
- package/dist/assistant/change.js +209 -0
- package/dist/assistant/engine.d.ts +20 -0
- package/dist/assistant/engine.js +43 -0
- package/dist/assistant/llm.worker.d.ts +1 -0
- package/dist/assistant/llm.worker.js +7 -0
- package/dist/assistant/match.d.ts +59 -0
- package/dist/assistant/match.js +271 -0
- package/dist/assistant/models.d.ts +38 -0
- package/dist/assistant/models.js +57 -0
- package/dist/assistant/offers.svelte.d.ts +36 -0
- package/dist/assistant/offers.svelte.js +59 -0
- package/dist/assistant/prefs.d.ts +14 -0
- package/dist/assistant/prefs.js +32 -0
- package/dist/assistant/prompt.d.ts +23 -0
- package/dist/assistant/prompt.js +163 -0
- package/dist/assistant/session.svelte.d.ts +73 -0
- package/dist/assistant/session.svelte.js +163 -0
- package/dist/assistant/theme-undo.svelte.d.ts +38 -0
- package/dist/assistant/theme-undo.svelte.js +50 -0
- package/dist/assistant/transport.d.ts +73 -0
- package/dist/assistant/transport.js +231 -0
- package/dist/assistant/voice-host.d.ts +10 -0
- package/dist/assistant/voice-host.js +17 -0
- package/dist/assistant/voice.svelte.d.ts +107 -0
- package/dist/assistant/voice.svelte.js +261 -0
- package/dist/catalog/catalog.json +89663 -0
- package/dist/catalog/generate/build.d.ts +33 -0
- package/dist/catalog/generate/build.js +131 -0
- package/dist/catalog/generate/exclusions.d.ts +18 -0
- package/dist/catalog/generate/exclusions.js +33 -0
- package/dist/catalog/generate/extract.d.ts +90 -0
- package/dist/catalog/generate/extract.js +326 -0
- package/dist/catalog/generate/local.d.ts +8 -0
- package/dist/catalog/generate/local.js +45 -0
- package/dist/catalog/generate/recipe-demo.d.ts +11 -0
- package/dist/catalog/generate/recipe-demo.js +29 -0
- package/dist/catalog/generate/recipe-metadata.d.ts +12 -0
- package/dist/catalog/generate/recipe-metadata.js +138 -0
- package/dist/catalog/generate/registry.d.ts +14 -0
- package/dist/catalog/generate/registry.js +83 -0
- package/dist/catalog/index.d.ts +21 -0
- package/dist/catalog/index.js +53 -0
- package/dist/catalog/types.d.ts +141 -0
- package/dist/catalog/types.js +8 -0
- package/dist/components/AiSetup.svelte +499 -0
- package/dist/components/AiSetup.svelte.d.ts +8 -0
- package/dist/components/AiStatusIcons.svelte +86 -0
- package/dist/components/AiStatusIcons.svelte.d.ts +18 -0
- package/dist/components/AppSettings.svelte +100 -0
- package/dist/components/AppSettings.svelte.d.ts +10 -0
- package/dist/components/BrowserAssistant.svelte +314 -0
- package/dist/components/BrowserAssistant.svelte.d.ts +8 -0
- package/dist/components/ChildRecords.svelte +331 -0
- package/dist/components/ChildRecords.svelte.d.ts +15 -0
- package/dist/components/ConnectTools.svelte +145 -0
- package/dist/components/ConnectTools.svelte.d.ts +8 -0
- package/dist/components/CookbooksPanel.svelte +308 -0
- package/dist/components/CookbooksPanel.svelte.d.ts +3 -0
- package/dist/components/ExportPanel.svelte +217 -0
- package/dist/components/ExportPanel.svelte.d.ts +3 -0
- package/dist/components/FeatureCard.svelte +197 -0
- package/dist/components/FeatureCard.svelte.d.ts +13 -0
- package/dist/components/FeaturesPanel.svelte +155 -0
- package/dist/components/FeaturesPanel.svelte.d.ts +3 -0
- package/dist/components/FieldInput.svelte +307 -0
- package/dist/components/FieldInput.svelte.d.ts +24 -0
- package/dist/components/FieldMapForm.svelte +173 -0
- package/dist/components/FieldMapForm.svelte.d.ts +18 -0
- package/dist/components/FormWorkspace.svelte +274 -0
- package/dist/components/FormWorkspace.svelte.d.ts +19 -0
- package/dist/components/HelpView.svelte +129 -0
- package/dist/components/HelpView.svelte.d.ts +12 -0
- package/dist/components/ModelOptions.svelte +239 -0
- package/dist/components/ModelOptions.svelte.d.ts +12 -0
- package/dist/components/ModelPage.svelte +295 -0
- package/dist/components/ModelPage.svelte.d.ts +9 -0
- package/dist/components/ModelWorkspace.svelte +488 -0
- package/dist/components/ModelWorkspace.svelte.d.ts +32 -0
- package/dist/components/PlannerEditBridge.svelte +36 -0
- package/dist/components/PlannerEditBridge.svelte.d.ts +3 -0
- package/dist/components/PlannerPalette.svelte +38 -0
- package/dist/components/PlannerPalette.svelte.d.ts +18 -0
- package/dist/components/RecipeCards.svelte +145 -0
- package/dist/components/RecipeCards.svelte.d.ts +3 -0
- package/dist/components/RecipeHelp.svelte +54 -0
- package/dist/components/RecipeHelp.svelte.d.ts +9 -0
- package/dist/components/RecipeOptions.svelte +160 -0
- package/dist/components/RecipeOptions.svelte.d.ts +9 -0
- package/dist/components/RecordFeatures.svelte +240 -0
- package/dist/components/RecordFeatures.svelte.d.ts +3 -0
- package/dist/components/RelationField.svelte +175 -0
- package/dist/components/RelationField.svelte.d.ts +16 -0
- package/dist/components/SectionActions.svelte +91 -0
- package/dist/components/SectionActions.svelte.d.ts +12 -0
- package/dist/components/SectionIcons.svelte +98 -0
- package/dist/components/SectionIcons.svelte.d.ts +15 -0
- package/dist/components/SectionOverview.svelte +65 -0
- package/dist/components/SectionOverview.svelte.d.ts +14 -0
- package/dist/components/SectionPage.svelte +230 -0
- package/dist/components/SectionPage.svelte.d.ts +7 -0
- package/dist/components/SettingsPanel.svelte +60 -0
- package/dist/components/SettingsPanel.svelte.d.ts +7 -0
- package/dist/components/ThemeBridge.svelte +56 -0
- package/dist/components/ThemeBridge.svelte.d.ts +3 -0
- package/dist/components/ThemeSection.svelte +167 -0
- package/dist/components/ThemeSection.svelte.d.ts +11 -0
- package/dist/components/VariantGridForm.svelte +309 -0
- package/dist/components/VariantGridForm.svelte.d.ts +12 -0
- package/dist/components/VoiceTyping.svelte +108 -0
- package/dist/components/VoiceTyping.svelte.d.ts +7 -0
- package/dist/cookbook/assemble.d.ts +16 -0
- package/dist/cookbook/assemble.js +29 -0
- package/dist/cookbook/file.d.ts +7 -0
- package/dist/cookbook/file.js +25 -0
- package/dist/cookbook/legacy.d.ts +9 -0
- package/dist/cookbook/legacy.js +87 -0
- package/dist/cookbook/migrate.d.ts +22 -0
- package/dist/cookbook/migrate.js +106 -0
- package/dist/cookbook/parse.d.ts +16 -0
- package/dist/cookbook/parse.js +246 -0
- package/dist/cookbook/storage.d.ts +45 -0
- package/dist/cookbook/storage.js +98 -0
- package/dist/cookbook/store.svelte.d.ts +94 -0
- package/dist/cookbook/store.svelte.js +231 -0
- package/dist/cookbook/types.d.ts +76 -0
- package/dist/cookbook/types.js +11 -0
- package/dist/cookbook/validate.d.ts +14 -0
- package/dist/cookbook/validate.js +29 -0
- package/dist/core/app.d.ts +12 -0
- package/dist/core/app.js +15 -0
- package/dist/core/catalog.d.ts +19 -0
- package/dist/core/catalog.js +9 -0
- package/dist/core/headless.d.ts +52 -0
- package/dist/core/headless.js +39 -0
- package/dist/core/index.d.ts +28 -0
- package/dist/core/index.js +28 -0
- package/dist/core/prompt.d.ts +38 -0
- package/dist/core/prompt.js +95 -0
- package/dist/core/reply.d.ts +60 -0
- package/dist/core/reply.js +89 -0
- package/dist/core/request.d.ts +15 -0
- package/dist/core/request.js +55 -0
- package/dist/data/children.d.ts +20 -0
- package/dist/data/children.js +80 -0
- package/dist/data/columns.d.ts +56 -0
- package/dist/data/columns.js +150 -0
- package/dist/data/context.d.ts +8 -0
- package/dist/data/context.js +19 -0
- package/dist/data/derived.d.ts +79 -0
- package/dist/data/derived.js +139 -0
- package/dist/data/display.d.ts +23 -0
- package/dist/data/display.js +84 -0
- package/dist/data/fakes.d.ts +52 -0
- package/dist/data/fakes.js +443 -0
- package/dist/data/format.d.ts +48 -0
- package/dist/data/format.js +121 -0
- package/dist/data/labels.d.ts +45 -0
- package/dist/data/labels.js +179 -0
- package/dist/data/packs.d.ts +95 -0
- package/dist/data/packs.js +830 -0
- package/dist/data/payments.d.ts +17 -0
- package/dist/data/payments.js +60 -0
- package/dist/data/planner-source.d.ts +7 -0
- package/dist/data/planner-source.js +32 -0
- package/dist/data/source.d.ts +119 -0
- package/dist/data/source.js +432 -0
- package/dist/features/catalogue.d.ts +96 -0
- package/dist/features/catalogue.js +225 -0
- package/dist/features/demo.d.ts +36 -0
- package/dist/features/demo.js +66 -0
- package/dist/features/palette.d.ts +39 -0
- package/dist/features/palette.js +53 -0
- package/dist/fields/address.d.ts +23 -0
- package/dist/fields/address.js +39 -0
- package/dist/fields/invalid.d.ts +2 -0
- package/dist/fields/invalid.js +8 -0
- package/dist/fields/modal.d.ts +7 -0
- package/dist/fields/modal.js +14 -0
- package/dist/fields/percent.d.ts +8 -0
- package/dist/fields/percent.js +16 -0
- package/dist/fields/renderer.d.ts +17 -0
- package/dist/fields/renderer.js +43 -0
- package/dist/forms/active.d.ts +16 -0
- package/dist/forms/active.js +24 -0
- package/dist/forms/fieldMap.d.ts +44 -0
- package/dist/forms/fieldMap.js +134 -0
- package/dist/forms/shared.d.ts +41 -0
- package/dist/forms/shared.js +138 -0
- package/dist/forms/stock.d.ts +28 -0
- package/dist/forms/stock.js +104 -0
- package/dist/forms/variantGrid.d.ts +83 -0
- package/dist/forms/variantGrid.js +283 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +16 -0
- package/dist/inference/byo.svelte.d.ts +86 -0
- package/dist/inference/byo.svelte.js +267 -0
- package/dist/inference/config.d.ts +70 -0
- package/dist/inference/config.js +149 -0
- package/dist/inference/host.d.ts +40 -0
- package/dist/inference/host.js +57 -0
- package/dist/inference/openai.d.ts +59 -0
- package/dist/inference/openai.js +202 -0
- package/dist/inference/presets.d.ts +5 -0
- package/dist/inference/presets.js +46 -0
- package/dist/kitchen/client.d.ts +39 -0
- package/dist/kitchen/client.js +109 -0
- package/dist/kitchen/fragment.d.ts +30 -0
- package/dist/kitchen/fragment.js +49 -0
- package/dist/kitchen/state.svelte.d.ts +26 -0
- package/dist/kitchen/state.svelte.js +45 -0
- package/dist/library/apply.d.ts +17 -0
- package/dist/library/apply.js +32 -0
- package/dist/library/document.d.ts +12 -0
- package/dist/library/document.js +27 -0
- package/dist/library/icons.d.ts +6 -0
- package/dist/library/icons.js +26 -0
- package/dist/library/index.d.ts +8 -0
- package/dist/library/index.js +12 -0
- package/dist/library/library.json +788 -0
- package/dist/library/menu.d.ts +18 -0
- package/dist/library/menu.js +72 -0
- package/dist/library/state.svelte.d.ts +10 -0
- package/dist/library/state.svelte.js +28 -0
- package/dist/library/types.d.ts +57 -0
- package/dist/library/types.js +1 -0
- package/dist/overviews/definitions.d.ts +24 -0
- package/dist/overviews/definitions.js +97 -0
- package/dist/overviews/page.d.ts +21 -0
- package/dist/overviews/page.js +36 -0
- package/dist/overviews/registry.d.ts +44 -0
- package/dist/overviews/registry.js +191 -0
- package/dist/overviews/validate.d.ts +32 -0
- package/dist/overviews/validate.js +91 -0
- package/dist/planner/Planner.svelte +204 -0
- package/dist/planner/Planner.svelte.d.ts +4 -0
- package/dist/planner/app.svelte.d.ts +6 -0
- package/dist/planner/app.svelte.js +23 -0
- package/dist/planner/assistant.d.ts +46 -0
- package/dist/planner/assistant.js +122 -0
- package/dist/planner/commands/adapter.d.ts +121 -0
- package/dist/planner/commands/adapter.js +597 -0
- package/dist/planner/commands/catalog.d.ts +19 -0
- package/dist/planner/commands/catalog.js +54 -0
- package/dist/planner/commands/controller.svelte.d.ts +13 -0
- package/dist/planner/commands/controller.svelte.js +77 -0
- package/dist/planner/commands/index.d.ts +15 -0
- package/dist/planner/commands/index.js +15 -0
- package/dist/planner/commands/schemas.d.ts +25 -0
- package/dist/planner/commands/schemas.js +67 -0
- package/dist/planner/commands/slices.d.ts +18 -0
- package/dist/planner/commands/slices.js +49 -0
- package/dist/planner/commands/types.d.ts +80 -0
- package/dist/planner/commands/types.js +18 -0
- package/dist/planner/create.d.ts +4 -0
- package/dist/planner/create.js +22 -0
- package/dist/planner/instance.d.ts +15 -0
- package/dist/planner/instance.js +22 -0
- package/dist/planner/query.d.ts +16 -0
- package/dist/planner/query.js +28 -0
- package/dist/planner/selection.d.ts +15 -0
- package/dist/planner/selection.js +38 -0
- package/dist/planner/selection.svelte.d.ts +29 -0
- package/dist/planner/selection.svelte.js +54 -0
- package/dist/planner/tab.svelte.d.ts +11 -0
- package/dist/planner/tab.svelte.js +22 -0
- package/dist/planner/types.d.ts +41 -0
- package/dist/planner/types.js +1 -0
- package/dist/recipes/cards.d.ts +55 -0
- package/dist/recipes/cards.js +80 -0
- package/dist/recipes/features.d.ts +53 -0
- package/dist/recipes/features.js +97 -0
- package/dist/recipes/help/descriptions.json +373 -0
- package/dist/recipes/help.d.ts +121 -0
- package/dist/recipes/help.js +262 -0
- package/dist/recipes/index.d.ts +65 -0
- package/dist/recipes/index.js +95 -0
- package/dist/recipes/merge.d.ts +26 -0
- package/dist/recipes/merge.js +21 -0
- package/dist/recipes/overlay.json +409 -0
- package/dist/recipes/plan-data.d.ts +41 -0
- package/dist/recipes/plan-data.js +97 -0
- package/dist/recipes/plumbing.d.ts +70 -0
- package/dist/recipes/plumbing.js +185 -0
- package/dist/recipes/policy.d.ts +118 -0
- package/dist/recipes/policy.js +268 -0
- package/dist/recipes/resolve.d.ts +19 -0
- package/dist/recipes/resolve.js +65 -0
- package/dist/recipes/scope.d.ts +25 -0
- package/dist/recipes/scope.js +31 -0
- package/dist/recipes/sections.d.ts +49 -0
- package/dist/recipes/sections.js +84 -0
- package/dist/recipes/state.svelte.d.ts +67 -0
- package/dist/recipes/state.svelte.js +112 -0
- package/dist/recipes/types.d.ts +322 -0
- package/dist/recipes/types.js +8 -0
- package/dist/sections/entries.d.ts +30 -0
- package/dist/sections/entries.js +57 -0
- package/dist/sections/info.d.ts +16 -0
- package/dist/sections/info.js +39 -0
- package/dist/sections/path.d.ts +12 -0
- package/dist/sections/path.js +18 -0
- package/dist/settings/app-settings.d.ts +44 -0
- package/dist/settings/app-settings.js +138 -0
- package/dist/settings/currencies.d.ts +2 -0
- package/dist/settings/currencies.js +8 -0
- package/dist/theme/runtime.d.ts +14 -0
- package/dist/theme/runtime.js +27 -0
- package/dist/theme/theme.d.ts +47 -0
- package/dist/theme/theme.js +122 -0
- package/dist/upstream/CustomerSelect.svelte +60 -0
- package/dist/upstream/CustomerSelect.svelte.d.ts +17 -0
- package/dist/upstream/VendorSelect.svelte +60 -0
- package/dist/upstream/VendorSelect.svelte.d.ts +17 -0
- package/dist/upstream/overlay.d.ts +10 -0
- package/dist/upstream/overlay.js +49 -0
- package/dist/upstream/partySelect.d.ts +8 -0
- package/dist/upstream/partySelect.js +21 -0
- package/dist/upstream/partyTypes.d.ts +64 -0
- package/dist/upstream/partyTypes.js +8 -0
- package/dist/upstream/relations.d.ts +2 -0
- package/dist/upstream/relations.js +24 -0
- package/dist/upstream/selects.d.ts +26 -0
- package/dist/upstream/selects.js +20 -0
- package/dist/upstream/widgets.d.ts +20 -0
- package/dist/upstream/widgets.js +30 -0
- package/package.json +80 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,C as t,Dt as n,E as r,Et as i,F as a,Ft as o,G as s,H as c,I as l,J as u,K as d,Mt as f,N as p,Nt as m,R as h,S as g,T as _,Tt as v,U as y,V as b,W as x,Z as S,a as C,at as w,d as T,dt as E,et as D,ft as O,gt as k,k as ee,mt as A,ot as j,pt as M,q as N,r as P,ut as F,v as I,vt as L,wt as R,xt as z}from"./Chyo8rdT.js";import"./xihTtKlq.js";import{i as te}from"./D0VgZnk1.js";import"./BWPhGFHl.js";import"./CWtfVMDz.js";import"./DVRKjN-E.js";import{K as B,Y as V,f as H,l as U,q as ne}from"./D_J_XtJy.js";var W=Symbol(`smrt-theme-context`);function re(e){n(W,e)}function G(){let e=R(W);if(!e)throw Error(`Theme context not found. Make sure to wrap your app with <ThemeProvider> from @happyvertical/smrt-ui/themes`);return e}var K=y(`<span class="smrt-color-scheme-toggle__icon svelte-1urnosz"> </span>`),ie=y(`<span class="smrt-color-scheme-toggle__label svelte-1urnosz"> </span>`),ae=y(`<button class="smrt-color-scheme-toggle__switch svelte-1urnosz" type="button"><!> <!></button>`),oe=y(`<button type="button"><span class="smrt-color-scheme-toggle__icon svelte-1urnosz"> </span> <!></button>`),se=y(`<div class="smrt-color-scheme-toggle__buttons svelte-1urnosz"></div>`),ce=y(`<button type="button" role="radio"><span class="smrt-color-scheme-toggle__icon svelte-1urnosz"> </span> <!></button>`),le=y(`<div class="smrt-color-scheme-toggle__segmented svelte-1urnosz" role="radiogroup"></div>`),ue=y(`<div><!></div>`);function de(t,n){i(n,!0);let o=C(n,`showLabels`,3,!0),s=C(n,`variant`,3,`switch`),c=C(n,`class`,3,``),d=C(n,`ariaLabel`,3,`Toggle color scheme`),f=G();function p(e){f.setColorScheme(e)}function g(){f.toggleColorScheme()}let _={light:`☀️`,dark:`🌙`,system:`💻`},y={light:`Light`,dark:`Dark`,system:`System`};var x=ue(),S=F(x),T=t=>{var n=ae(),r=F(n),i=t=>{var n=K(),r=O(n,!0);w(()=>e(r,_.dark)),b(t,n)},a=t=>{var n=K(),r=O(n,!0);w(()=>e(r,_.light)),b(t,n)};h(r,e=>{f.state.isDark?e(i):e(a,-1)});var s=M(r,2),c=t=>{var n=ie(),r=O(n,!0);w(()=>e(r,y[f.state.resolvedScheme])),b(t,n)};h(s,e=>{o()&&e(c)}),m(n),w(()=>{I(n,`aria-label`,d()),I(n,`title`,y[f.state.resolvedScheme])}),u(`click`,n,g),b(t,n)},E=t=>{var n=se();a(n,20,()=>[`light`,`dark`,`system`],l,(t,n)=>{var i=oe();let a;var s=F(i),c=O(s,!0),l=M(s,2),d=t=>{var r=ie(),i=O(r,!0);w(()=>e(i,y[n])),b(t,r)};h(l,e=>{o()&&e(d)}),m(i),w(()=>{a=r(i,1,`smrt-color-scheme-toggle__button svelte-1urnosz`,null,a,{active:f.state.colorScheme===n}),e(c,_[n])}),u(`click`,i,()=>p(n)),b(t,i)}),m(n),b(t,n)},D=t=>{var n=le();a(n,20,()=>[`light`,`dark`,`system`],l,(t,n)=>{var i=ce();let a;var s=F(i),c=O(s,!0),l=M(s,2),d=t=>{var r=ie(),i=O(r,!0);w(()=>e(i,y[n])),b(t,r)};h(l,e=>{o()&&e(d)}),m(i),w(()=>{a=r(i,1,`smrt-color-scheme-toggle__segment svelte-1urnosz`,null,a,{active:f.state.colorScheme===n}),I(i,`aria-checked`,f.state.colorScheme===n),e(c,_[n])}),u(`click`,i,()=>p(n)),b(t,i)}),m(n),w(()=>I(n,`aria-label`,d())),b(t,n)};h(S,e=>{s()===`switch`?e(T):s()===`buttons`?e(E,1):s()===`segmented`&&e(D,2)}),m(x),w(()=>r(x,1,`smrt-color-scheme-toggle ${s()??``} ${c()??``}`,`svelte-1urnosz`)),b(t,x),v()}N([`click`]);var q={0:`0`,.5:`0.125rem`,1:`0.25rem`,1.5:`0.375rem`,2:`0.5rem`,2.5:`0.625rem`,3:`0.75rem`,3.5:`0.875rem`,4:`1rem`,5:`1.25rem`,6:`1.5rem`,7:`1.75rem`,8:`2rem`,9:`2.25rem`,10:`2.5rem`,11:`2.75rem`,12:`3rem`,14:`3.5rem`,16:`4rem`,20:`5rem`,24:`6rem`},fe={xs:1,sm:2,md:4,lg:6,xl:8,"2xl":12,"3xl":16},J={none:`0`,sm:`0.25rem`,md:`0.5rem`,lg:`0.75rem`,xl:`1rem`,"2xl":`1.5rem`,"3xl":`2rem`,full:`9999px`},pe={"extra-small":`sm`,small:`sm`,medium:`md`,large:`lg`,"extra-large":`xl`},me={instant:`0ms`,fast:`100ms`,normal:`200ms`,slow:`300ms`,slower:`500ms`},he={short1:`50ms`,short2:`100ms`,short3:`150ms`,short4:`200ms`,medium1:`250ms`,medium2:`300ms`,medium3:`350ms`,medium4:`400ms`,long1:`450ms`,long2:`500ms`,long3:`550ms`,long4:`600ms`},ge={mono:`ui-monospace, "SF Mono", "Monaco", "Cascadia Code", "Consolas", monospace`},_e={normal:`400`,medium:`500`,semibold:`600`,bold:`700`},ve={dropdown:`1000`,sticky:`1100`,overlay:`1200`,modal:`1300`,dialog:`1300`,popover:`1400`,toast:`1500`,tooltip:`1600`,loading:`1700`},ye={standard:`cubic-bezier(0.2, 0, 0, 1)`,standardDecelerate:`cubic-bezier(0, 0, 0.2, 1)`,standardAccelerate:`cubic-bezier(0.3, 0, 1, 1)`,emphasized:`cubic-bezier(0.2, 0, 0, 1)`,emphasizedDecelerate:`cubic-bezier(0.05, 0.7, 0.1, 1)`,emphasizedAccelerate:`cubic-bezier(0.3, 0, 0.8, 0.15)`},be={standard:`cubic-bezier(0.4, 0, 0.2, 1)`,standardDecelerate:`cubic-bezier(0, 0, 0.2, 1)`,standardAccelerate:`cubic-bezier(0.4, 0, 1, 1)`,emphasized:`cubic-bezier(0.2, 0.8, 0.2, 1)`,emphasizedDecelerate:`cubic-bezier(0.16, 1, 0.3, 1)`,emphasizedAccelerate:`cubic-bezier(0.4, 0, 0.2, 1)`},xe={standard:`cubic-bezier(0.4, 0, 0.2, 1)`,standardDecelerate:`cubic-bezier(0, 0, 0.2, 1)`,standardAccelerate:`cubic-bezier(0.4, 0, 1, 1)`,emphasized:`cubic-bezier(0.25, 0.1, 0.25, 1)`,emphasizedDecelerate:`cubic-bezier(0.0, 0, 0.2, 1)`,emphasizedAccelerate:`cubic-bezier(0.4, 0, 1, 1)`},Se={id:`glass`,name:`Glass`,light:{primary:`#007aff`,onPrimary:`#ffffff`,primaryContainer:`rgba(0, 122, 255, 0.15)`,onPrimaryContainer:`#003d80`,secondary:`#6c757d`,onSecondary:`#ffffff`,secondaryContainer:`rgba(108, 117, 125, 0.12)`,onSecondaryContainer:`#2c3237`,tertiary:`#5856d6`,onTertiary:`#ffffff`,tertiaryContainer:`rgba(88, 86, 214, 0.15)`,onTertiaryContainer:`#2a2866`,error:`#ff3b30`,onError:`#ffffff`,errorContainer:`rgba(255, 59, 48, 0.15)`,onErrorContainer:`#801810`,warning:`#ff9500`,onWarning:`#000000`,warningContainer:`rgba(255, 149, 0, 0.15)`,onWarningContainer:`#804a00`,success:`#34c759`,onSuccess:`#000000`,successContainer:`rgba(52, 199, 89, 0.15)`,onSuccessContainer:`#1a642d`,surface:`rgba(255, 255, 255, 0.72)`,onSurface:`#000000`,surfaceVariant:`rgba(255, 255, 255, 0.52)`,onSurfaceVariant:`#3c3c43`,surfaceContainer:`rgba(255, 255, 255, 0.82)`,surfaceContainerLow:`rgba(255, 255, 255, 0.62)`,surfaceContainerHigh:`rgba(255, 255, 255, 0.88)`,surfaceContainerHighest:`rgba(255, 255, 255, 0.92)`,surfaceContainerLowest:`rgba(255, 255, 255, 0.42)`,surfaceDim:`rgba(120, 120, 128, 0.16)`,surfaceBright:`rgba(255, 255, 255, 0.95)`,background:`#f2f2f7`,onBackground:`#000000`,outline:`rgba(80, 80, 88, 0.75)`,outlineVariant:`rgba(120, 120, 128, 0.16)`,inverseSurface:`#1c1c1e`,inverseOnSurface:`#ffffff`,inversePrimary:`#66b0ff`,shadow:`rgba(0, 0, 0, 0.12)`,scrim:`rgba(0, 0, 0, 0.4)`,glassBackdrop:`rgba(255, 255, 255, 0.72)`,glassBorder:`rgba(255, 255, 255, 0.3)`},dark:{primary:`#0a84ff`,onPrimary:`#000000`,primaryContainer:`rgba(10, 132, 255, 0.25)`,onPrimaryContainer:`#b3d9ff`,secondary:`#8e8e93`,onSecondary:`#000000`,secondaryContainer:`rgba(142, 142, 147, 0.2)`,onSecondaryContainer:`#e5e5ea`,tertiary:`#5e5ce6`,onTertiary:`#ffffff`,tertiaryContainer:`rgba(94, 92, 230, 0.25)`,onTertiaryContainer:`#d4d3ff`,error:`#ff453a`,onError:`#000000`,errorContainer:`rgba(255, 69, 58, 0.25)`,onErrorContainer:`#ffcac7`,warning:`#ff9f0a`,onWarning:`#000000`,warningContainer:`rgba(255, 159, 10, 0.25)`,onWarningContainer:`#ffe3b3`,success:`#30d158`,onSuccess:`#000000`,successContainer:`rgba(48, 209, 88, 0.25)`,onSuccessContainer:`#b8f5c9`,surface:`rgba(30, 30, 30, 0.72)`,onSurface:`#ffffff`,surfaceVariant:`rgba(44, 44, 46, 0.65)`,onSurfaceVariant:`#8e8e93`,surfaceContainer:`rgba(44, 44, 46, 0.82)`,surfaceContainerLow:`rgba(30, 30, 30, 0.62)`,surfaceContainerHigh:`rgba(58, 58, 60, 0.85)`,surfaceContainerHighest:`rgba(72, 72, 74, 0.88)`,surfaceContainerLowest:`rgba(28, 28, 30, 0.55)`,surfaceDim:`rgba(0, 0, 0, 0.3)`,surfaceBright:`rgba(58, 58, 60, 0.9)`,background:`#000000`,onBackground:`#ffffff`,outline:`rgba(160, 160, 166, 0.8)`,outlineVariant:`rgba(84, 84, 88, 0.35)`,inverseSurface:`#f2f2f7`,inverseOnSurface:`#000000`,inversePrimary:`#007aff`,shadow:`rgba(0, 0, 0, 0.4)`,scrim:`rgba(0, 0, 0, 0.6)`,glassBackdrop:`rgba(30, 30, 30, 0.72)`,glassBorder:`rgba(255, 255, 255, 0.1)`},typography:{displayLarge:{size:`3rem`,lineHeight:`1.1`,weight:`600`,tracking:`-0.022em`,fontFamily:`var(--smrt-font-family)`},displayMedium:{size:`2.5rem`,lineHeight:`1.15`,weight:`600`,tracking:`-0.021em`,fontFamily:`var(--smrt-font-family)`},displaySmall:{size:`2rem`,lineHeight:`1.2`,weight:`600`,tracking:`-0.019em`,fontFamily:`var(--smrt-font-family)`},headlineLarge:{size:`1.75rem`,lineHeight:`1.25`,weight:`600`,tracking:`-0.017em`,fontFamily:`var(--smrt-font-family)`},headlineMedium:{size:`1.5rem`,lineHeight:`1.3`,weight:`600`,tracking:`-0.015em`,fontFamily:`var(--smrt-font-family)`},headlineSmall:{size:`1.25rem`,lineHeight:`1.35`,weight:`600`,tracking:`-0.012em`,fontFamily:`var(--smrt-font-family)`},titleLarge:{size:`1.25rem`,lineHeight:`1.4`,weight:`600`,tracking:`-0.012em`,fontFamily:`var(--smrt-font-family)`},titleMedium:{size:`1.0625rem`,lineHeight:`1.4`,weight:`600`,tracking:`-0.011em`,fontFamily:`var(--smrt-font-family)`},titleSmall:{size:`0.9375rem`,lineHeight:`1.4`,weight:`600`,tracking:`-0.009em`,fontFamily:`var(--smrt-font-family)`},bodyLarge:{size:`1.0625rem`,lineHeight:`1.5`,weight:`400`,tracking:`-0.011em`,fontFamily:`var(--smrt-font-family)`},bodyMedium:{size:`0.9375rem`,lineHeight:`1.5`,weight:`400`,tracking:`-0.009em`,fontFamily:`var(--smrt-font-family)`},bodySmall:{size:`0.8125rem`,lineHeight:`1.4`,weight:`400`,tracking:`-0.006em`,fontFamily:`var(--smrt-font-family)`},labelLarge:{size:`0.9375rem`,lineHeight:`1.4`,weight:`500`,tracking:`-0.009em`,fontFamily:`var(--smrt-font-family)`},labelMedium:{size:`0.8125rem`,lineHeight:`1.4`,weight:`500`,tracking:`-0.006em`,fontFamily:`var(--smrt-font-family)`},labelSmall:{size:`0.6875rem`,lineHeight:`1.3`,weight:`600`,tracking:`-0.004em`,fontFamily:`var(--smrt-font-family)`}},elevation:{0:`none`,1:`0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02)`,2:`0 3px 6px rgba(0, 0, 0, 0.06), 0 2px 4px rgba(0, 0, 0, 0.03)`,3:`0 6px 12px rgba(0, 0, 0, 0.08), 0 4px 8px rgba(0, 0, 0, 0.04)`,4:`0 12px 24px rgba(0, 0, 0, 0.1), 0 8px 16px rgba(0, 0, 0, 0.05)`,5:`0 24px 48px rgba(0, 0, 0, 0.12), 0 16px 32px rgba(0, 0, 0, 0.06)`},spacing:q,borderRadius:J,duration:me,easing:be,glass:{blur:`20px`,saturation:`180%`,borderOpacity:`0.3`,backgroundOpacity:`0.72`},fontFamily:`-apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", sans-serif`},Y=`"Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif`,Ce={id:`happyvertical`,name:`Day Shift`,light:{primary:`#9c5300`,onPrimary:`#ffffff`,primaryContainer:`#f7e3cc`,onPrimaryContainer:`#5e3200`,secondary:`#4f5b55`,onSecondary:`#ffffff`,secondaryContainer:`#dce3df`,onSecondaryContainer:`#2a342f`,tertiary:`#3c5a68`,onTertiary:`#ffffff`,tertiaryContainer:`#d7e4ea`,onTertiaryContainer:`#1b333e`,error:`#9b3b32`,onError:`#ffffff`,errorContainer:`#f6dfdc`,onErrorContainer:`#5e1c16`,warning:`#8a4e08`,onWarning:`#ffffff`,warningContainer:`#f7e4c8`,onWarningContainer:`#533000`,success:`#1e7a4b`,onSuccess:`#ffffff`,successContainer:`#d5e9df`,onSuccessContainer:`#0c3b24`,surface:`#f4f6f5`,onSurface:`#20272b`,surfaceVariant:`#e5eae7`,onSurfaceVariant:`#5a6660`,surfaceContainer:`#f1f4f2`,surfaceContainerLow:`#f7f9f8`,surfaceContainerHigh:`#eaeeec`,surfaceContainerHighest:`#e3e8e5`,surfaceContainerLowest:`#fbfcfb`,surfaceDim:`#e1e6e3`,surfaceBright:`#fbfcfb`,background:`#e8ebe9`,onBackground:`#20272b`,outline:`#717d77`,outlineVariant:`#c9cfcc`,inverseSurface:`#20272b`,inverseOnSurface:`#edf0ee`,inversePrimary:`#ffb454`,shadow:`rgba(32, 39, 43, 0.2)`,scrim:`rgba(20, 24, 27, 0.45)`},dark:{primary:`#ffb454`,onPrimary:`#14181b`,primaryContainer:`#3b2a12`,onPrimaryContainer:`#ffd7a1`,secondary:`#a6b2ac`,onSecondary:`#14181b`,secondaryContainer:`#262e33`,onSecondaryContainer:`#dce3e0`,tertiary:`#9cbecc`,onTertiary:`#10262e`,tertiaryContainer:`#1e313a`,onTertiaryContainer:`#c6dee8`,error:`#e89b92`,onError:`#3b120d`,errorContainer:`#402019`,onErrorContainer:`#f7c9c3`,warning:`#ffc46b`,onWarning:`#14181b`,warningContainer:`#3b2c12`,onWarningContainer:`#ffdca8`,success:`#53c989`,onSuccess:`#06331e`,successContainer:`#14382a`,onSuccessContainer:`#a8e5c4`,surface:`#1c2226`,onSurface:`#e4e9e7`,surfaceVariant:`#232b30`,onSurfaceVariant:`#97a29c`,surfaceContainer:`#1c2226`,surfaceContainerLow:`#171c20`,surfaceContainerHigh:`#212930`,surfaceContainerHighest:`#252d33`,surfaceContainerLowest:`#0f1315`,surfaceDim:`#101416`,surfaceBright:`#283036`,background:`#14181b`,onBackground:`#e4e9e7`,outline:`#76827d`,outlineVariant:`#2a3238`,inverseSurface:`#e4e9e7`,inverseOnSurface:`#1c2226`,inversePrimary:`#9c5300`,shadow:`rgba(0, 0, 0, 0.6)`,scrim:`rgba(0, 0, 0, 0.6)`},typography:{displayLarge:{size:`2.9rem`,lineHeight:`1.15`,weight:`600`,tracking:`-0.015em`,fontFamily:Y},displayMedium:{size:`2.4rem`,lineHeight:`1.15`,weight:`600`,tracking:`-0.015em`,fontFamily:Y},displaySmall:{size:`2rem`,lineHeight:`1.2`,weight:`600`,tracking:`-0.01em`,fontFamily:Y},headlineLarge:{size:`1.75rem`,lineHeight:`1.2`,weight:`600`,tracking:`-0.01em`,fontFamily:Y},headlineMedium:{size:`1.5rem`,lineHeight:`1.25`,weight:`600`,tracking:`-0.01em`,fontFamily:Y},headlineSmall:{size:`1.35rem`,lineHeight:`1.3`,weight:`600`,tracking:`-0.01em`,fontFamily:Y},titleLarge:{size:`1.15rem`,lineHeight:`1.35`,weight:`600`,tracking:`-0.01em`,fontFamily:Y},titleMedium:{size:`1rem`,lineHeight:`1.4`,weight:`500`,tracking:`-0.01em`,fontFamily:Y},titleSmall:{size:`0.9rem`,lineHeight:`1.4`,weight:`500`,tracking:`-0.01em`,fontFamily:Y},bodyLarge:{size:`1rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodyMedium:{size:`0.9375rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodySmall:{size:`0.875rem`,lineHeight:`1.55`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},labelLarge:{size:`0.9rem`,lineHeight:`1.4`,weight:`700`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},labelMedium:{size:`0.8125rem`,lineHeight:`1.4`,weight:`700`,tracking:`0.02em`,fontFamily:`var(--smrt-font-family)`},labelSmall:{size:`0.75rem`,lineHeight:`1.4`,weight:`700`,tracking:`0.08em`,fontFamily:`var(--smrt-font-family)`}},elevation:{0:`none`,1:`inset 0 0 0 1px rgba(32, 39, 43, 0.1)`,2:`0 1px 2px 0 rgba(32, 39, 43, 0.06)`,3:`0 2px 6px -2px rgba(32, 39, 43, 0.1)`,4:`0 6px 16px -6px rgba(32, 39, 43, 0.14)`,5:`0 12px 28px -12px rgba(32, 39, 43, 0.18)`},darkElevation:{0:`none`,1:`inset 0 0 0 1px rgba(228, 233, 231, 0.08)`,2:`0 1px 2px 0 rgba(0, 0, 0, 0.4)`,3:`0 2px 6px -2px rgba(0, 0, 0, 0.5)`,4:`0 6px 16px -6px rgba(0, 0, 0, 0.6)`,5:`0 12px 28px -12px rgba(0, 0, 0, 0.7)`},spacing:q,borderRadius:{none:`0`,sm:`0.25rem`,md:`0.375rem`,lg:`0.5rem`,xl:`0.75rem`,"2xl":`1rem`,"3xl":`1.25rem`,full:`9999px`},duration:{instant:`0ms`,fast:`90ms`,normal:`120ms`,slow:`180ms`,slower:`260ms`},easing:{standard:`cubic-bezier(0.4, 0, 0.2, 1)`,standardDecelerate:`cubic-bezier(0.4, 0, 0.2, 1)`,standardAccelerate:`cubic-bezier(0.4, 0, 0.2, 1)`,emphasized:`cubic-bezier(0.4, 0, 0.2, 1)`,emphasizedDecelerate:`cubic-bezier(0.4, 0, 0.2, 1)`,emphasizedAccelerate:`cubic-bezier(0.4, 0, 0.2, 1)`},fontFamily:`"B612", Verdana, "Segoe UI", system-ui, sans-serif`,fontFamilyMono:`"B612 Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace`},we={id:`material`,name:`Material`,light:{primary:`#0b57d0`,onPrimary:`#ffffff`,primaryContainer:`#d3e3fd`,onPrimaryContainer:`#041e49`,secondary:`#5e5e5e`,onSecondary:`#ffffff`,secondaryContainer:`#f0f0f0`,onSecondaryContainer:`#1f1f1f`,tertiary:`#7c4dff`,onTertiary:`#ffffff`,tertiaryContainer:`#e8ddff`,onTertiaryContainer:`#1e005f`,error:`#b3261e`,onError:`#ffffff`,errorContainer:`#f9dedc`,onErrorContainer:`#410e0b`,warning:`#f9ab00`,onWarning:`#000000`,warningContainer:`#fff4d9`,onWarningContainer:`#3d2a00`,success:`#1e8e3e`,onSuccess:`#ffffff`,successContainer:`#e6f4ea`,onSuccessContainer:`#1e4620`,surface:`#ffffff`,onSurface:`#1f1f1f`,surfaceVariant:`#f2f2f2`,onSurfaceVariant:`#444746`,surfaceContainer:`#f0f4f8`,surfaceContainerLow:`#f8f9fa`,surfaceContainerHigh:`#e8eaed`,surfaceContainerHighest:`#e1e3e6`,surfaceContainerLowest:`#ffffff`,surfaceDim:`#dadce0`,surfaceBright:`#f8f9fa`,background:`#ffffff`,onBackground:`#1f1f1f`,outline:`#747775`,outlineVariant:`#c4c7c5`,inverseSurface:`#303133`,inverseOnSurface:`#f2f2f2`,inversePrimary:`#a8c7fa`,shadow:`#000000`,scrim:`rgba(0, 0, 0, 0.5)`},dark:{primary:`#a8c7fa`,onPrimary:`#062e6f`,primaryContainer:`#0842a0`,onPrimaryContainer:`#d3e3fd`,secondary:`#c7c7c7`,onSecondary:`#303133`,secondaryContainer:`#444746`,onSecondaryContainer:`#e3e3e3`,tertiary:`#cbb7ff`,onTertiary:`#3e1e96`,tertiaryContainer:`#5e3fc0`,onTertiaryContainer:`#e8ddff`,error:`#f2b8b5`,onError:`#601410`,errorContainer:`#8c1d18`,onErrorContainer:`#f9dedc`,warning:`#ffcd66`,onWarning:`#5c3d00`,warningContainer:`#8a5d00`,onWarningContainer:`#fff4d9`,success:`#81c995`,onSuccess:`#0d522d`,successContainer:`#1e4620`,onSuccessContainer:`#e6f4ea`,surface:`#0e0e0e`,onSurface:`#e3e3e3`,surfaceVariant:`#1f1f1f`,onSurfaceVariant:`#c4c7c5`,surfaceContainer:`#1f1f1f`,surfaceContainerLow:`#141414`,surfaceContainerHigh:`#2d2d2d`,surfaceContainerHighest:`#363636`,surfaceContainerLowest:`#0a0a0a`,surfaceDim:`#141414`,surfaceBright:`#2d2d2d`,background:`#0e0e0e`,onBackground:`#e3e3e3`,outline:`#8e918f`,outlineVariant:`#444746`,inverseSurface:`#e3e3e3`,inverseOnSurface:`#1f1f1f`,inversePrimary:`#0b57d0`,shadow:`#000000`,scrim:`rgba(0, 0, 0, 0.7)`},typography:{displayLarge:{size:`3.5rem`,lineHeight:`1.1`,weight:`400`,tracking:`-0.02em`,fontFamily:`var(--smrt-font-family)`},displayMedium:{size:`2.75rem`,lineHeight:`1.15`,weight:`400`,tracking:`-0.01em`,fontFamily:`var(--smrt-font-family)`},displaySmall:{size:`2.25rem`,lineHeight:`1.2`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},headlineLarge:{size:`2rem`,lineHeight:`1.25`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},headlineMedium:{size:`1.75rem`,lineHeight:`1.3`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},headlineSmall:{size:`1.5rem`,lineHeight:`1.35`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},titleLarge:{size:`1.375rem`,lineHeight:`1.4`,weight:`500`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},titleMedium:{size:`1rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},titleSmall:{size:`0.875rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},bodyLarge:{size:`1rem`,lineHeight:`1.5`,weight:`400`,tracking:`0.03em`,fontFamily:`var(--smrt-font-family)`},bodyMedium:{size:`0.875rem`,lineHeight:`1.5`,weight:`400`,tracking:`0.02em`,fontFamily:`var(--smrt-font-family)`},bodySmall:{size:`0.75rem`,lineHeight:`1.4`,weight:`400`,tracking:`0.03em`,fontFamily:`var(--smrt-font-family)`},labelLarge:{size:`0.875rem`,lineHeight:`1.4`,weight:`500`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},labelMedium:{size:`0.75rem`,lineHeight:`1.4`,weight:`500`,tracking:`0.05em`,fontFamily:`var(--smrt-font-family)`},labelSmall:{size:`0.6875rem`,lineHeight:`1.4`,weight:`500`,tracking:`0.05em`,fontFamily:`var(--smrt-font-family)`}},elevation:{0:`none`,1:`0 1px 2px 0 rgb(0 0 0 / 0.05), 0 1px 3px 0 rgb(0 0 0 / 0.02)`,2:`0 1px 2px 0 rgb(0 0 0 / 0.06), 0 2px 4px 0 rgb(0 0 0 / 0.04)`,3:`0 2px 4px 0 rgb(0 0 0 / 0.06), 0 4px 8px 0 rgb(0 0 0 / 0.04)`,4:`0 4px 8px 0 rgb(0 0 0 / 0.08), 0 8px 16px 0 rgb(0 0 0 / 0.04)`,5:`0 8px 16px 0 rgb(0 0 0 / 0.1), 0 16px 32px 0 rgb(0 0 0 / 0.04)`},spacing:q,borderRadius:J,duration:me,easing:ye,fontFamily:`"Google Sans", "Roboto", system-ui, -apple-system, sans-serif`},X=`"Space Grotesk", system-ui, -apple-system, sans-serif`,Te={material:we,glass:Se,studio:{id:`studio`,name:`Studio`,light:{primary:`#1a73e8`,onPrimary:`#ffffff`,primaryContainer:`#e8f0fe`,onPrimaryContainer:`#174ea6`,secondary:`#5f6368`,onSecondary:`#ffffff`,secondaryContainer:`#f1f3f4`,onSecondaryContainer:`#3c4043`,tertiary:`#9334e6`,onTertiary:`#ffffff`,tertiaryContainer:`#f3e8fd`,onTertiaryContainer:`#6b12b8`,error:`#d93025`,onError:`#ffffff`,errorContainer:`#fce8e6`,onErrorContainer:`#a50e0e`,warning:`#f9ab00`,onWarning:`#000000`,warningContainer:`#fef3c7`,onWarningContainer:`#92400e`,success:`#188038`,onSuccess:`#ffffff`,successContainer:`#e6f4ea`,onSuccessContainer:`#137333`,surface:`#ffffff`,onSurface:`#202124`,surfaceVariant:`#f8f9fa`,onSurfaceVariant:`#5f6368`,surfaceContainer:`#f1f3f4`,surfaceContainerLow:`#f8f9fa`,surfaceContainerHigh:`#e8eaed`,surfaceContainerHighest:`#dadce0`,surfaceContainerLowest:`#ffffff`,surfaceDim:`#e8eaed`,surfaceBright:`#ffffff`,background:`#ffffff`,onBackground:`#202124`,outline:`#78797b`,outlineVariant:`#e8eaed`,inverseSurface:`#3c4043`,inverseOnSurface:`#f1f3f4`,inversePrimary:`#8ab4f8`,shadow:`rgba(60, 64, 67, 0.1)`,scrim:`rgba(0, 0, 0, 0.5)`},dark:{primary:`#8ab4f8`,onPrimary:`#062e6f`,primaryContainer:`#174ea6`,onPrimaryContainer:`#d2e3fc`,secondary:`#9aa0a6`,onSecondary:`#202124`,secondaryContainer:`#3c4043`,onSecondaryContainer:`#e8eaed`,tertiary:`#c58af9`,onTertiary:`#3e1385`,tertiaryContainer:`#6b12b8`,onTertiaryContainer:`#f3e8fd`,error:`#f28b82`,onError:`#5c150c`,errorContainer:`#a50e0e`,onErrorContainer:`#fce8e6`,warning:`#fdd663`,onWarning:`#5c3d00`,warningContainer:`#92400e`,onWarningContainer:`#fef3c7`,success:`#81c995`,onSuccess:`#0d3b1f`,successContainer:`#137333`,onSuccessContainer:`#e6f4ea`,surface:`#0e0e0e`,onSurface:`#e8eaed`,surfaceVariant:`#1f1f1f`,onSurfaceVariant:`#9aa0a6`,surfaceContainer:`#1f1f1f`,surfaceContainerLow:`#141414`,surfaceContainerHigh:`#2d2d2d`,surfaceContainerHighest:`#3c4043`,surfaceContainerLowest:`#0a0a0a`,surfaceDim:`#141414`,surfaceBright:`#2d2d2d`,background:`#0e0e0e`,onBackground:`#e8eaed`,outline:`#8c8e92`,outlineVariant:`#3c4043`,inverseSurface:`#e8eaed`,inverseOnSurface:`#202124`,inversePrimary:`#1a73e8`,shadow:`rgba(0, 0, 0, 0.3)`,scrim:`rgba(0, 0, 0, 0.7)`},typography:{displayLarge:{size:`3rem`,lineHeight:`1.1`,weight:`400`,tracking:`-0.01em`,fontFamily:`var(--smrt-font-family)`},displayMedium:{size:`2.5rem`,lineHeight:`1.15`,weight:`400`,tracking:`-0.008em`,fontFamily:`var(--smrt-font-family)`},displaySmall:{size:`2rem`,lineHeight:`1.2`,weight:`400`,tracking:`-0.005em`,fontFamily:`var(--smrt-font-family)`},headlineLarge:{size:`1.75rem`,lineHeight:`1.25`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},headlineMedium:{size:`1.5rem`,lineHeight:`1.3`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},headlineSmall:{size:`1.25rem`,lineHeight:`1.35`,weight:`500`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},titleLarge:{size:`1.125rem`,lineHeight:`1.4`,weight:`500`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},titleMedium:{size:`1rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},titleSmall:{size:`0.875rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},bodyLarge:{size:`1rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodyMedium:{size:`0.875rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodySmall:{size:`0.75rem`,lineHeight:`1.5`,weight:`400`,tracking:`0.01em`,fontFamily:`var(--smrt-font-family)`},labelLarge:{size:`0.875rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.02em`,fontFamily:`var(--smrt-font-family)`},labelMedium:{size:`0.75rem`,lineHeight:`1.5`,weight:`500`,tracking:`0.025em`,fontFamily:`var(--smrt-font-family)`},labelSmall:{size:`0.6875rem`,lineHeight:`1.4`,weight:`500`,tracking:`0.03em`,fontFamily:`var(--smrt-font-family)`}},elevation:{0:`none`,1:`inset 0 0 0 1px rgba(60, 64, 67, 0.08)`,2:`0 1px 2px 0 rgba(60, 64, 67, 0.08), 0 1px 3px 0 rgba(60, 64, 67, 0.04)`,3:`0 2px 4px 0 rgba(60, 64, 67, 0.1), 0 1px 2px 0 rgba(60, 64, 67, 0.06)`,4:`0 4px 8px 0 rgba(60, 64, 67, 0.1), 0 2px 4px 0 rgba(60, 64, 67, 0.06)`,5:`0 8px 16px 0 rgba(60, 64, 67, 0.12), 0 4px 8px 0 rgba(60, 64, 67, 0.06)`},darkElevation:{0:`none`,1:`inset 0 0 0 1px rgba(255, 255, 255, 0.08)`,2:`0 1px 2px 0 rgba(0, 0, 0, 0.2), 0 1px 3px 0 rgba(0, 0, 0, 0.1)`,3:`0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 1px 2px 0 rgba(0, 0, 0, 0.1)`,4:`0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 2px 4px 0 rgba(0, 0, 0, 0.1)`,5:`0 8px 16px 0 rgba(0, 0, 0, 0.25), 0 4px 8px 0 rgba(0, 0, 0, 0.1)`},spacing:q,borderRadius:J,duration:me,easing:xe,fontFamily:`"Google Sans Text", "Roboto", "Segoe UI", system-ui, sans-serif`},smrt:{id:`smrt`,name:`s-m-r-t`,light:{primary:`#e35d12`,onPrimary:`#ffffff`,primaryContainer:`#ffe6d4`,onPrimaryContainer:`#7a2e00`,secondary:`#5b6470`,onSecondary:`#ffffff`,secondaryContainer:`#e7eaee`,onSecondaryContainer:`#2a2f37`,tertiary:`#6b4eff`,onTertiary:`#ffffff`,tertiaryContainer:`#e7e0ff`,onTertiaryContainer:`#3a2b8c`,error:`#c0362c`,onError:`#ffffff`,errorContainer:`#fbe0dd`,onErrorContainer:`#6b1109`,warning:`#b06a00`,onWarning:`#ffffff`,warningContainer:`#ffedd0`,onWarningContainer:`#6b4200`,success:`#0f7a5f`,onSuccess:`#ffffff`,successContainer:`#d7f2e8`,onSuccessContainer:`#043a2c`,surface:`#ffffff`,onSurface:`#14171c`,surfaceVariant:`#f5f6f8`,onSurfaceVariant:`#5b6470`,surfaceContainer:`#f5f6f8`,surfaceContainerLow:`#fafbfc`,surfaceContainerHigh:`#eef1f4`,surfaceContainerHighest:`#e7eaee`,surfaceContainerLowest:`#ffffff`,surfaceDim:`#e3e6ea`,surfaceBright:`#ffffff`,background:`#edeff2`,onBackground:`#14171c`,outline:`#7c7f85`,outlineVariant:`#dfe3e8`,inverseSurface:`#14171c`,inverseOnSurface:`#f4f6f8`,inversePrimary:`#ff7a1a`,shadow:`rgba(20, 26, 36, 0.28)`,scrim:`rgba(0, 0, 0, 0.5)`},dark:{primary:`#ff7a1a`,onPrimary:`#1a0e02`,primaryContainer:`#2a1a0c`,onPrimaryContainer:`#ffb784`,secondary:`#9aa3af`,onSecondary:`#14171c`,secondaryContainer:`#23272e`,onSecondaryContainer:`#e6e9ee`,tertiary:`#b9a8ff`,onTertiary:`#241a4d`,tertiaryContainer:`#2a2350`,onTertiaryContainer:`#ddd4ff`,error:`#ff6b6b`,onError:`#2a0a0a`,errorContainer:`#3a1414`,onErrorContainer:`#ffc4c4`,warning:`#ffb020`,onWarning:`#1a0e02`,warningContainer:`#3a2a0c`,onWarningContainer:`#ffd9a3`,success:`#3fb98f`,onSuccess:`#00261c`,successContainer:`#103a30`,onSuccessContainer:`#7fd9be`,surface:`#121417`,onSurface:`#c9cdd3`,surfaceVariant:`#181b1f`,onSurfaceVariant:`#9aa3af`,surfaceContainer:`#121417`,surfaceContainerLow:`#0e1013`,surfaceContainerHigh:`#181b1f`,surfaceContainerHighest:`#1f242b`,surfaceContainerLowest:`#0a0c10`,surfaceDim:`#0b0c0e`,surfaceBright:`#23272e`,background:`#0b0c0e`,onBackground:`#c9cdd3`,outline:`#70747b`,outlineVariant:`#23272e`,inverseSurface:`#edeff2`,inverseOnSurface:`#14171c`,inversePrimary:`#b34d00`,shadow:`rgba(0, 0, 0, 0.8)`,scrim:`rgba(0, 0, 0, 0.7)`},typography:{displayLarge:{size:`3.5rem`,lineHeight:`0.98`,weight:`600`,tracking:`-0.03em`,fontFamily:X},displayMedium:{size:`2.75rem`,lineHeight:`1`,weight:`600`,tracking:`-0.03em`,fontFamily:X},displaySmall:{size:`2.25rem`,lineHeight:`1.05`,weight:`600`,tracking:`-0.02em`,fontFamily:X},headlineLarge:{size:`2rem`,lineHeight:`1.1`,weight:`600`,tracking:`-0.02em`,fontFamily:X},headlineMedium:{size:`1.6rem`,lineHeight:`1.15`,weight:`600`,tracking:`-0.02em`,fontFamily:X},headlineSmall:{size:`1.3rem`,lineHeight:`1.2`,weight:`600`,tracking:`-0.01em`,fontFamily:X},titleLarge:{size:`1.125rem`,lineHeight:`1.3`,weight:`600`,tracking:`-0.01em`,fontFamily:`var(--smrt-font-family)`},titleMedium:{size:`1rem`,lineHeight:`1.4`,weight:`600`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},titleSmall:{size:`0.875rem`,lineHeight:`1.4`,weight:`600`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodyLarge:{size:`1.0625rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodyMedium:{size:`0.9375rem`,lineHeight:`1.6`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},bodySmall:{size:`0.8125rem`,lineHeight:`1.55`,weight:`400`,tracking:`0`,fontFamily:`var(--smrt-font-family)`},labelLarge:{size:`0.8125rem`,lineHeight:`1.4`,weight:`600`,tracking:`0.04em`,fontFamily:`var(--smrt-font-family)`},labelMedium:{size:`0.6875rem`,lineHeight:`1.4`,weight:`600`,tracking:`0.08em`,fontFamily:`var(--smrt-font-family)`},labelSmall:{size:`0.625rem`,lineHeight:`1.4`,weight:`600`,tracking:`0.1em`,fontFamily:`var(--smrt-font-family)`}},elevation:{0:`none`,1:`inset 0 0 0 1px rgba(20, 26, 36, 0.08)`,2:`0 18px 44px -28px rgba(20, 26, 36, 0.18)`,3:`0 24px 56px -34px rgba(20, 26, 36, 0.22)`,4:`0 30px 70px -40px rgba(20, 26, 36, 0.28)`,5:`0 40px 90px -50px rgba(20, 26, 36, 0.3)`},darkElevation:{0:`none`,1:`inset 0 0 0 1px rgba(255, 255, 255, 0.06)`,2:`0 18px 44px -28px rgba(0, 0, 0, 0.6)`,3:`0 24px 56px -34px rgba(0, 0, 0, 0.72)`,4:`0 30px 66px -40px rgba(0, 0, 0, 0.82)`,5:`0 40px 90px -50px rgba(0, 0, 0, 0.88)`},spacing:q,borderRadius:J,duration:me,easing:{standard:`cubic-bezier(0.4, 0, 0.2, 1)`,standardDecelerate:`cubic-bezier(0, 0, 0.2, 1)`,standardAccelerate:`cubic-bezier(0.4, 0, 1, 1)`,emphasized:`cubic-bezier(0.22, 1, 0.36, 1)`,emphasizedDecelerate:`cubic-bezier(0.16, 1, 0.3, 1)`,emphasizedAccelerate:`cubic-bezier(0.4, 0, 1, 1)`},fontFamily:`"Inter", system-ui, -apple-system, "Segoe UI", sans-serif`},happyvertical:Ce},Z=[`material`,`glass`,`studio`,`smrt`,`happyvertical`];function Ee(e){let t=Te[e];if(t)return t;let n=je(e);if(n)return n;throw Error(`Unknown theme preset: ${e}. Available: ${Pe().join(`, `)}`)}function De(e){return Z.includes(e)||Me(e)}function Oe(){let e=Z.map(e=>({value:e,label:Te[e].name})),t=Ne();return[...e,...t]}var ke=new Map;function Ae(e){ke.set(e.id,e)}function je(e){return ke.get(e)}function Me(e){return ke.has(e)}function Ne(){return Array.from(ke.entries()).map(([e,t])=>({value:e,label:t.name}))}function Pe(){return[...Z,...ke.keys()]}var Fe=y(`<span class="smrt-theme-switcher__label svelte-12svdjp"> </span>`),Ie=y(`<option><!> </option>`),Le=y(`<select class="smrt-theme-switcher__select svelte-12svdjp"></select>`),Re=y(`<span class="smrt-theme-switcher__icon svelte-12svdjp"> </span>`),ze=y(`<button type="button"><!> <span class="smrt-theme-switcher__text"> </span></button>`),Be=y(`<div class="smrt-theme-switcher__buttons svelte-12svdjp"></div>`),Ve=y(`<button type="button" role="radio"><!> <span class="smrt-theme-switcher__text"> </span></button>`),He=y(`<div class="smrt-theme-switcher__segmented svelte-12svdjp" role="radiogroup"></div>`),Ue=y(`<div><!> <!></div>`);function We(n,o){i(o,!0);let s=C(o,`label`,3,`Theme`),c=C(o,`showIcons`,3,!0),f=C(o,`variant`,3,`select`),p=C(o,`class`,3,``),_=G(),y=Oe();function x(e){let t=e.target;_.setPreset(t.value)}function T(e){_.setPreset(e)}let E={material:`🔷`,glass:`💎`,studio:`◻️`,smrt:`🟠`,happyvertical:`🔶`};var D=Ue(),k=F(D),ee=t=>{var n=Fe(),r=O(n,!0);w(()=>e(r,s())),b(t,n)};h(k,e=>{s()&&e(ee)});var A=M(k,2),j=n=>{var r=Le();a(r,21,()=>y,l,(t,n)=>{var r=Ie(),i=F(r),a=t=>{var r=d();w(()=>e(r,E[S(n).value])),b(t,r)};h(i,e=>{c()&&e(a)});var o=M(i);m(r);var s={};w(()=>{e(o,` ${S(n).label??``}`),s!==(s=S(n).value)&&(r.value=(r.__value=s)??``)}),b(t,r)}),m(r);var i;g(r),w(()=>{i!==(i=_.state.preset)&&(r.value=(r.__value=i)??``,t(r,i))}),u(`change`,r,x),b(n,r)},N=t=>{var n=Be();a(n,21,()=>y,l,(t,n)=>{var i=ze();let a;var o=F(i),s=t=>{var r=Re(),i=O(r,!0);w(()=>e(i,E[S(n).value])),b(t,r)};h(o,e=>{c()&&e(s)});var l=M(o,2),d=O(l,!0);m(i),w(()=>{a=r(i,1,`smrt-theme-switcher__button svelte-12svdjp`,null,a,{active:_.state.preset===S(n).value}),e(d,S(n).label)}),u(`click`,i,()=>T(S(n).value)),b(t,i)}),m(n),b(t,n)},P=t=>{var n=He();a(n,21,()=>y,l,(t,n)=>{var i=Ve();let a;var o=F(i),s=t=>{var r=Re(),i=O(r,!0);w(()=>e(i,E[S(n).value])),b(t,r)};h(o,e=>{c()&&e(s)});var l=M(o,2),d=O(l,!0);m(i),w(()=>{a=r(i,1,`smrt-theme-switcher__segment svelte-12svdjp`,null,a,{active:_.state.preset===S(n).value}),I(i,`aria-checked`,_.state.preset===S(n).value),e(d,S(n).label)}),u(`click`,i,()=>T(S(n).value)),b(t,i)}),m(n),b(t,n)};h(A,e=>{f()===`select`?e(j):f()===`buttons`?e(N,1):f()===`segmented`&&e(P,2)}),m(D),w(()=>r(D,1,`smrt-theme-switcher ${f()??``} ${p()??``}`,`svelte-12svdjp`)),b(n,D),v()}N([`change`,`click`]);function Ge(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/([A-Z])/g,`-$1`).toLowerCase();n[`${t}-color-${e}`]=i}return n}function Ke(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/([A-Z])/g,`-$1`).toLowerCase();n[`${t}-typography-${e}-size`]=i.size,n[`${t}-typography-${e}-line-height`]=i.lineHeight,n[`${t}-typography-${e}-weight`]=String(i.weight),n[`${t}-typography-${e}-tracking`]=i.tracking,i.fontFamily&&(n[`${t}-typography-${e}-font-family`]=i.fontFamily);let a=i.fontFamily??`var(${t}-font-family)`;n[`${t}-typography-${e}-font`]=`${i.weight} ${i.size}/${i.lineHeight} ${a}`}return n}function qe(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/\./g,`_`);n[`${t}-spacing-${e}`]=i}for(let[r,i]of Object.entries(fe)){let a=e[i];a!==void 0&&(n[`${t}-spacing-${r}`]=a)}return n}function Je(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/([A-Z])/g,`-$1`).toLowerCase();n[`${t}-radius-${e}`]=i}for(let[r,i]of Object.entries(pe)){let a=e[i];a!==void 0&&(n[`${t}-radius-${r}`]=a)}return n}function Ye(e,t){let n={};for(let[r,i]of Object.entries(e))n[`${t}-elevation-${r}`]=i;return n}function Xe(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/([A-Z])/g,`-$1`).toLowerCase();n[`${t}-duration-${e}`]=i}for(let[e,r]of Object.entries(he))n[`${t}-duration-${e}`]=r;return n}function Ze(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=r.replace(/([A-Z])/g,`-$1`).toLowerCase();n[`${t}-easing-${e}`]=i}return n}function Qe(e,t){return e?{[`${t}-glass-blur`]:e.blur,[`${t}-glass-saturation`]:e.saturation,[`${t}-glass-border-opacity`]:e.borderOpacity,[`${t}-glass-background-opacity`]:e.backgroundOpacity}:{}}function $e(e,t){let n={};for(let[t,r]of Object.entries(ge))n[`${e}-font-family-${t}`]=r;t&&(n[`${e}-font-family-mono`]=t);for(let[t,r]of Object.entries(_e))n[`${e}-typography-weight-${t}`]=r;for(let[t,r]of Object.entries(ve))n[`${e}-z-index-${t}`]=r;return n}function et(e,t,n={}){let{prefix:r=`--smrt`}=n,i=t?e.dark:e.light,a=t&&e.darkElevation?e.darkElevation:e.elevation;return{[`${r}-touch-target-min`]:`48px`,[`${r}-control-target-min`]:`0px`,[`${r}-theme-id`]:e.id,[`${r}-theme-name`]:e.name,[`${r}-color-scheme`]:t?`dark`:`light`,[`${r}-font-family`]:e.fontFamily,...Ge(i,r),...Ke(e.typography,r),...qe(e.spacing,r),...Je(e.borderRadius,r),...Ye(a,r),...Xe(e.duration,r),...Ze(e.easing,r),...$e(r,e.fontFamilyMono),...Qe(e.glass,r)}}Z.map(e=>({id:e,label:Te[e].name,light:Te[e].light,dark:Te[e].dark}));var tt={preset:`material`,colorScheme:`system`,borderRadius:`md`,persist:!0,storageKey:`smrt-theme`},nt=y(`<div><!></div>`);function rt(e,t){i(t,!0);let n=C(t,`preset`,19,()=>tt.preset),a=C(t,`colorScheme`,19,()=>tt.colorScheme),o=C(t,`borderRadius`,19,()=>tt.borderRadius),s=C(t,`overrides`,19,()=>({})),c=C(t,`paintSurface`,3,!0),l=C(t,`persist`,19,()=>tt.persist),u=C(t,`storageKey`,19,()=>tt.storageKey),d=L(A(D(()=>({preset:n(),colorScheme:a(),primaryColor:t.primaryColor,borderRadius:o(),overrides:s(),persist:l(),storageKey:u()})))),f=L(!1),h=L(!1),g=z(()=>Ee(S(d).preset)),y=z(()=>S(d).colorScheme===`system`?S(f)?`dark`:`light`:S(d).colorScheme),x=z(()=>S(y)===`dark`),T=z(()=>Z.includes(S(d).preset)),E=z(()=>t.inlineVariables??!S(T)),O=z(()=>{let e=[];if(S(E))for(let[t,n]of Object.entries(et(S(g),S(x))))e.push(`${t}: ${n}`);S(d).primaryColor&&e.push(`--smrt-color-primary: ${S(d).primaryColor}`),t.density!==void 0&&e.push(`--smrt-control-target-min: ${t.density===`touch`?`var(--smrt-touch-target-min, 48px)`:`0px`}`);for(let[t,n]of Object.entries(S(d).overrides??{}))e.push(`${t}: ${n}`);return e.join(`; `)}),ee=z(()=>({preset:S(d).preset,colorScheme:S(d).colorScheme,resolvedScheme:S(y),isDark:S(x),config:S(d),theme:S(g)}));function M(e){S(d).preset=e,B()}function N(e){S(d).colorScheme=e,B()}function R(){N(S(x)?`light`:`dark`)}function te(e){k(d,{...S(d),...e},!0),B()}function B(){if(S(d).persist&&typeof localStorage<`u`)try{let e=JSON.stringify({preset:S(d).preset,colorScheme:S(d).colorScheme,borderRadius:S(d).borderRadius});localStorage.setItem(S(d).storageKey,e)}catch{}}function V(){if(S(d).persist&&typeof localStorage<`u`)try{let e=localStorage.getItem(S(d).storageKey);if(e){let t=JSON.parse(e);if(!t||typeof t!=`object`)return;let n=t;typeof n.preset==`string`&&De(n.preset)&&(S(d).preset=n.preset),(n.colorScheme===`light`||n.colorScheme===`dark`||n.colorScheme===`system`)&&(S(d).colorScheme=n.colorScheme),(n.borderRadius===`none`||n.borderRadius===`sm`||n.borderRadius===`md`||n.borderRadius===`lg`||n.borderRadius===`xl`||n.borderRadius===`full`)&&(S(d).borderRadius=n.borderRadius)}}catch{}}re({get state(){return S(ee)},setPreset:M,setColorScheme:N,toggleColorScheme:R,updateConfig:te}),P(()=>{if(typeof window<`u`){let e=window.matchMedia(`(prefers-color-scheme: dark)`);k(f,e.matches,!0);let t=e=>{k(f,e.matches,!0)};return e.addEventListener(`change`,t),V(),k(h,!0),()=>{e.removeEventListener(`change`,t)}}}),j(()=>{if(typeof document<`u`&&S(h)){let e=document.documentElement;e.classList.toggle(`dark`,S(x)),e.setAttribute(`data-theme`,S(d).preset),e.setAttribute(`data-color-scheme`,S(y)),e.style.colorScheme=S(y)}});let H=D(()=>n()),U=D(()=>a()),ne=D(()=>t.primaryColor),W=D(()=>o());j(()=>{n()!==H&&(H=n(),D(()=>{S(d).preset=n()}))}),j(()=>{a()!==U&&(U=a(),D(()=>{S(d).colorScheme=a()}))}),j(()=>{t.primaryColor!==ne&&(ne=t.primaryColor,D(()=>{t.primaryColor!==void 0&&(S(d).primaryColor=t.primaryColor)}))}),j(()=>{o()!==W&&(W=o(),D(()=>{S(d).borderRadius=o()}))}),j(()=>{S(d).overrides=s()}),j(()=>{S(d).persist=l()}),j(()=>{S(d).storageKey=u()});var G=nt();let K;var ie=F(G);p(ie,()=>t.children),m(G),w(()=>{K=r(G,1,`smrt-theme-root svelte-1kx38vk`,null,K,{dark:S(x),"no-paint":!c(),"smrt-theme-glass":S(d).preset===`glass`}),_(G,S(O)||void 0),I(G,`data-theme`,S(d).preset),I(G,`data-color-scheme`,S(y))}),b(e,G),v()}N([`change`,`click`]),N([`keydown`,`change`,`click`,`pointerdown`,`focusin`]),N([`change`]),N([`click`]);var it=[`SmrtJunction`,`SmrtJunctionBase`,`SmrtPolymorphicAssociation`],at=[`Metafield`,`Metadata`,`Association`,`LineItem`,`Allocation`,`Revision`,`Attachment`,`Snapshot`,`Completion`,`Override`,`Alias`],ot=[`Status`,`Type`],st=new Set([`foreignKey`,`crossPackageRef`]);function ct(e){let t=e.extends?.split(`:`).pop();if(t&&it.includes(t))return`junction`;let n=e.fields.filter(e=>!e.system),r=n.filter(e=>st.has(e.type)).length;return r>=2&&n.length-r<=1?`link`:at.some(t=>e.name.endsWith(t))?`child`:n.length<=3&&ot.some(t=>e.name.endsWith(t))?`lookup`:null}function lt(e){return ct(e)!==null}var ut=new Set([`junction`,`link`,`child`]);function dt(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function ft(e,t){let n=[],r=e.get(t);for(;r&&!n.includes(r.id);)n.push(r.id),r=r.extends?e.get(dt(r.extends,r.id)):void 0;return n}function pt(e,t){let n=e.packages.flatMap(e=>e.models),r=new Map(n.map(e=>[e.id,e])),i=new Set(ft(r,t));return i.size?n.filter(e=>{if(i.has(e.id))return!1;let t=ct(e);return!t||!ut.has(t)?!1:e.fields.some(t=>st.has(t.type)&&t.related&&i.has(dt(t.related,e.id)))}):[]}function mt(e,t){let n=e.fields.find(n=>st.has(n.type)&&n.related&&t.has(dt(n.related,e.id)));return n?{model:e,fk:n.name}:void 0}function ht(e,t,n){let r=e.packages.flatMap(e=>e.models),i=new Map(r.map(e=>[e.id,e])),a=new Set(ft(i,n));if(!a.size)return[];let o=t.filter(e=>e.models.includes(n));if(!o.length)return pt(e,n).flatMap(e=>{let t=mt(e,a);return t?[t]:[]});let s=new Map;for(let e of o){let t=new Set(e.nav.map(e=>e.model));for(let n of e.models){let e=i.get(n);if(!e||t.has(n)||a.has(n)||s.has(n))continue;let r=mt(e,a);r&&s.set(n,r)}}return[...s.values()]}function gt(e,t){return e.some(e=>e.nav.some(e=>e.model===t))}function _t(e,t){let n=e;for(let e of t)if(n.length>e.length&&n.startsWith(e)){n=n.slice(e.length);break}let r=n.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase(),i=/[^aeiou]y$/.test(r)?`${r.slice(0,-1)}ies`:/(s|x|ch|sh)$/.test(r)?`${r}es`:`${r}s`;return i.charAt(0).toUpperCase()+i.slice(1)}function vt(e,t){let n=e.packages.flatMap(e=>e.models),r=new Map(n.map(e=>[e.id,e]));return ft(r,t).flatMap(e=>{let t=r.get(e);return t?[t.name]:[]})}function yt(e){return e.group?.id??e.id}function bt(e){let t=new Map;for(let n of e){let e=yt(n),r=t.get(e);r?r.recipes.push(n):t.set(e,{id:e,label:n.group?.label??n.label,recipes:[n]})}return[...t.values()]}function xt(e){return e.section??{id:yt(e),label:e.group?.label??e.label}}function St(e){let t=new Map;for(let n of e){let e=xt(n),r=t.get(e.id);r?r.recipes.push(n):t.set(e.id,{...e,recipes:[n]})}return[...t.values()]}function Ct(e){let t=new Set(e.map(e=>xt(e).id)),n={};for(let r of e){let e=yt(r),i=xt(r).id;e!==i&&!t.has(e)&&(n[e]=i)}return n}function wt(e,t,n){return`item:${e}:${t}${n?`:${n}`:``}`}function Tt(e,t){return e?.trim()||t.description?.trim()||`Your ${Et(t.name)} records, all in one place.`}function Et(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase()}var Dt={id:`more`,label:`More`,icon:`layers`,description:`Extra records you added one at a time.`},Ot=`fileText`;function kt(e){let t=e.description?.trim();if(t)return t.split(/(?<=[.!?])\s/)[0]??t;let n=e.fields.filter(e=>!e.system).length;return`${n} ${n===1?`field`:`fields`}`}function At(e,t){let n=new Set(t.flatMap(e=>e.models));return e.packages.flatMap(t=>ne(t).filter(e=>!n.has(e.id)).map(n=>({id:n.id,name:n.name,label:H(n.name),packageId:t.id,description:kt(n),described:!!n.description?.trim(),plumbing:lt(n),fieldNames:n.fields.map(e=>e.name),includes:pt(e,n.id).map(e=>H(e.name))})))}function jt(e){return e.described?e.description:`${H(e.packageId)} · ${e.description}`}function Mt(e,t){return t?[...e]:e.filter(e=>!e.plumbing)}function Nt(e){return[...new Set(e.map(e=>e.packageId))]}function Pt(e,t,n){let r=t.toLowerCase().split(/\s+/).filter(Boolean);return e.filter(e=>{if(n&&e.packageId!==n)return!1;if(!r.length)return!0;let t=[e.name,e.label,e.description,e.packageId,...e.fieldNames].join(` `).toLowerCase();return r.every(e=>t.includes(e))})}function Ft(e){return e.flatMap(e=>{let t=V(e);return t?.model.exposed?[{id:wt(t.pkg.id,t.model.name),packageId:t.pkg.id,modelName:t.model.name,label:H(t.model.name),icon:Ot,description:Tt(void 0,t.model)}]:[]})}var It={"@happyvertical/smrt-commerce:Customer":{profileId:`Links this customer to their profile record, where their name and contact details are kept.`,creditLimit:`The most this customer may owe you at one time. Leave it empty or at zero if you do not set limits.`,paymentTerms:`How long the customer has to pay, written the way you would say it, for example "Net 30".`,taxExempt:`Turn this on if you do not charge this customer sales tax.`,taxId:`The customer's tax or VAT number, kept on file for tax-exempt sales.`,defaultShippingAddress:`Where you usually send this customer's goods, so you do not retype it on every order.`,defaultBillingAddress:`Where you send this customer's invoices.`,status:`Whether this is a current customer, for example active or inactive.`,customerType:`The kind of customer, for example an individual or a business.`,notes:`Anything worth remembering about this customer.`},"@happyvertical/smrt-commerce:Vendor":{profileId:`Links this vendor to their profile record, where their name and contact details are kept.`,leadTimeDays:`How many days the vendor usually takes between your order and delivery.`,minimumOrderAmount:`The smallest order the vendor will accept.`,paymentTerms:`How long you have to pay this vendor, written the way you would say it, for example "Net 30".`,currency:`The currency this vendor bills you in.`,defaultContactEmail:`The email address you normally use to reach this vendor.`,defaultContactPhone:`The phone number you normally use to reach this vendor.`,status:`Whether you still buy from this vendor, for example active or inactive.`,notes:`Anything worth remembering about this vendor.`,payoutAddresses:`Where payments to this vendor should be sent.`},"@happyvertical/smrt-commerce:Order":{status:`Where the order stands, for example draft, accepted or completed.`,customerId:`The customer this order is for.`,subtotal:`The order amount before tax.`,taxAmount:`The tax charged on the order.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the order's amounts.`,issueDate:`The date the order was placed.`,dueDate:`The date payment is expected. An order still open after this date counts as overdue.`,expiryDate:`The last day the order's price or offer is good for.`,reference:`Your own number or note for finding this order later, such as the customer's purchase order number.`,notes:`Anything worth remembering about this order.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the order came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:PurchaseOrder":{status:`Where the purchase stands, for example draft, accepted or completed.`,vendorId:`The vendor you are buying from.`,subtotal:`The order amount before tax.`,taxAmount:`The tax charged on the order.`,totalAmount:`What you pay in all, tax included.`,currency:`The currency of the order's amounts.`,issueDate:`The date you placed the order.`,dueDate:`The date the goods or the payment are due.`,expiryDate:`The last day the vendor's offer is good for.`,reference:`Your own number or note for finding this order later, such as the vendor's quote number.`,notes:`Anything worth remembering about this purchase.`,terms:`The conditions agreed with the vendor, such as payment or delivery conditions.`,channelId:`Where the order was placed, for example a vendor's website or a phone call.`},"@happyvertical/smrt-products:Product":{name:`What you call the product, as customers will see it.`,price:`What one costs, in dollars and cents.`,description:`A few words on what the product is and who it is for.`},"@happyvertical/smrt-products:ProductVariant":{productId:`The product this choice belongs to. Set for you when you save the product.`,axisName:`What the product varies by, for example size or color.`,allowedValues:`The values on offer for it, for example S, M and L.`},"@happyvertical/smrt-products:Sku":{productId:`The product this item is a version of. Set for you when you save the product.`,code:`The short code that identifies this exact size and color. Made for you from the product name.`,attributes:`Which size and color this item is. Set for you from the grid.`},"@happyvertical/smrt-inventory:StockLevel":{skuId:`The item being counted. Set for you when you save the product.`,locationId:`Where it is kept. New stock goes to the main warehouse.`,state:`Whether the count is available to sell. New stock starts as available.`,qty:`How many you have on hand.`},"@happyvertical/smrt-inventory:InventoryLocation":{code:`A short code for the place stock is kept, for example MAIN.`,name:`What you call the place, for example Main warehouse.`,kind:`What sort of place it is, for example a warehouse or a shop floor.`},"@happyvertical/smrt-commerce:Estimate":{status:`Where the estimate stands, for example draft, sent, accepted or completed.`,customerId:`The customer this estimate is for.`,subtotal:`The estimate amount before tax.`,taxAmount:`The tax charged on the estimate.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the estimate's amounts.`,issueDate:`The date the estimate was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the estimate is good for, or the day it ends.`,reference:`Your own number or note for finding this estimate later.`,notes:`Anything worth remembering about this estimate.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the estimate came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:WholesaleOrder":{status:`Where the wholesale order stands, for example draft, sent, accepted or completed.`,customerId:`The customer this wholesale order is for.`,subtotal:`The wholesale order amount before tax.`,taxAmount:`The tax charged on the wholesale order.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the wholesale order's amounts.`,issueDate:`The date the wholesale order was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the wholesale order is good for, or the day it ends.`,reference:`Your own number or note for finding this wholesale order later.`,notes:`Anything worth remembering about this wholesale order.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the wholesale order came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:Agreement":{status:`Where the agreement stands, for example draft, sent, accepted or completed.`,customerId:`The customer this agreement is for.`,subtotal:`The agreement amount before tax.`,taxAmount:`The tax charged on the agreement.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the agreement's amounts.`,issueDate:`The date the agreement was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the agreement is good for, or the day it ends.`,reference:`Your own number or note for finding this agreement later.`,notes:`Anything worth remembering about this agreement.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the agreement came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:Lease":{status:`Where the lease stands, for example draft, sent, accepted or completed.`,customerId:`The customer this lease is for.`,subtotal:`The lease amount before tax.`,taxAmount:`The tax charged on the lease.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the lease's amounts.`,issueDate:`The date the lease was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the lease is good for, or the day it ends.`,reference:`Your own number or note for finding this lease later.`,notes:`Anything worth remembering about this lease.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the lease came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:LicenseSale":{status:`Where the licence sale stands, for example draft, sent, accepted or completed.`,customerId:`The customer this licence sale is for.`,subtotal:`The licence sale amount before tax.`,taxAmount:`The tax charged on the licence sale.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the licence sale's amounts.`,issueDate:`The date the licence sale was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the licence sale is good for, or the day it ends.`,reference:`Your own number or note for finding this licence sale later.`,notes:`Anything worth remembering about this licence sale.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the licence sale came from, for example your shop or a marketplace.`},"@happyvertical/smrt-commerce:Contract":{status:`Where the contract stands, for example draft, sent, accepted or completed.`,customerId:`The customer this contract is for.`,subtotal:`The contract amount before tax.`,taxAmount:`The tax charged on the contract.`,totalAmount:`What the customer pays in all, tax included.`,currency:`The currency of the contract's amounts.`,issueDate:`The date the contract was issued or starts.`,dueDate:`The date payment is expected.`,expiryDate:`The last day the contract is good for, or the day it ends.`,reference:`Your own number or note for finding this contract later.`,notes:`Anything worth remembering about this contract.`,terms:`The conditions agreed with the customer, such as deposits, delivery or payment conditions.`,channelId:`Where the contract came from, for example your shop or a marketplace.`,contractType:`The kind of contract: order, estimate, lease, agreement and so on.`,vendorId:`The vendor on the other side, for contracts you buy.`},"@happyvertical/smrt-commerce:ContractLineItem":{contractId:`The order, quote or agreement this line belongs to.`,description:`What is being sold or bought on this line.`,quantity:`How many.`,unitPrice:`The price of one, before tax.`,taxRate:`The tax rate for this line, as a percentage (5 means 5%).`,amount:`The line total.`,productId:`The product this line is for, if it is one you list.`},"@happyvertical/smrt-inventory:StockMovement":{skuId:`The item that moved.`,locationId:`The place it moved at.`,fromState:`What it was before, for example available or damaged.`,toState:`What it became.`,qty:`How many moved.`,reasonCode:`Why it moved, for example adjustment, sale or return.`,note:`Anything worth remembering about this movement.`,occurredAt:`When it happened.`},"@happyvertical/smrt-commerce:Invoice":{customerId:`The customer being billed.`,contractId:`The order or agreement this invoice bills for, if any.`,invoiceNumber:`The number printed on the invoice.`,issueDate:`The date the invoice was issued.`,dueDate:`The date payment is expected.`,paidDate:`The date it was paid in full.`,subtotal:`The amount before tax.`,taxAmount:`The tax charged.`,totalAmount:`What the customer owes in all, tax included.`,amountPaid:`How much of the total has been paid so far.`,currency:`The currency of the invoice.`,status:`Where the invoice stands: draft, sent, viewed, paid, overdue or cancelled.`,notes:`Private notes, not shown to the customer.`,customerNotes:`A message shown to the customer on the invoice.`,terms:`The payment conditions, such as Net 30.`},"@happyvertical/smrt-commerce:InvoiceLineItem":{invoiceId:`The invoice this line belongs to.`,description:`What is being billed on this line.`,quantity:`How many.`,unitPrice:`The price of one, before tax.`,taxRate:`The tax rate for this line, as a percentage (5 means 5%).`,amount:`The line total.`},"@happyvertical/smrt-commerce:Payment":{contractId:`The order or agreement this payment is for, if any.`,customerId:`The customer who paid.`,amount:`How much was paid.`,currency:`The currency of the payment.`,method:`How it was paid: cash, check, card, bank transfer or other.`,status:`Whether the payment is pending, completed, failed or refunded.`,reference:`Your own note, such as a check number.`,paidAt:`When the money was received.`,notes:`Anything worth remembering about this payment.`},"@happyvertical/smrt-commerce:PaymentAllocation":{paymentId:`The payment being applied.`,invoiceId:`The invoice it settles.`,amount:`How much of the payment goes to this invoice.`,allocatedAt:`When it was applied.`,notes:`Anything worth remembering about this allocation.`},"@happyvertical/smrt-commerce:Fulfillment":{contractId:`The order being fulfilled.`,fulfillmentType:`How it gets to the customer: shipment, delivery, pickup, digital or service.`,status:`Where it stands: pending, processing, shipped, delivered or cancelled.`,trackingNumber:`The carrier's tracking number.`,carrier:`The company carrying it.`,shippedAt:`When it left you.`,deliveredAt:`When it arrived.`,notes:`Anything worth remembering about this shipment.`},"@happyvertical/smrt-commerce:FulfillmentLineItem":{fulfillmentId:`The shipment this line belongs to.`,contractLineItemId:`The order line being sent.`,quantityFulfilled:`How many of that line are in this shipment.`},"@happyvertical/smrt-ledgers:Account":{number:`The account number in your chart of accounts.`,name:`What the account is called.`,description:`What the account is used for.`,type:`asset, liability, equity, revenue or expense.`,active:`Turn this off to stop using the account without deleting it.`},"@happyvertical/smrt-ledgers:Journal":{number:`The journal's reference number.`,date:`The date of the transaction.`,description:`What the transaction was.`,status:`draft while you work on it, posted once final, or voided.`,postedAt:`When it was posted.`},"@happyvertical/smrt-ledgers:JournalEntry":{journalId:`The journal this entry belongs to.`,accountId:`The account this entry changes.`,debit:`The amount debited. Leave zero on a credit.`,credit:`The amount credited. Leave zero on a debit.`,currency:`The currency of the amounts.`,memo:`A note on this entry.`},"@happyvertical/smrt-projects:Project":{title:`The project's name.`,description:`What the project is about.`,owner:`Who owns or runs the project.`,url:`A link to the project elsewhere.`},"@happyvertical/smrt-projects:Issue":{projectId:`The project this issue belongs to.`,title:`A short summary of the issue.`,body:`The full description.`,state:`open or closed.`,author:`Who raised the issue.`,labels:`The labels attached to the issue.`,assignees:`The people working on it.`},"@happyvertical/smrt-projects:Label":{projectId:`The project this label belongs to.`,name:`The label's name, for example bug.`,color:`The label's colour.`,description:`What the label means.`},"@happyvertical/smrt-projects:Comment":{issueId:`The issue this comment is on.`,body:`The comment text.`,author:`Who wrote it.`},"@happyvertical/smrt-events:Event":{name:`What the event is called.`,seriesId:`The series this event is part of, if any.`,typeId:`The kind of event.`,placeId:`Where it takes place.`,description:`What the event is about.`,startDate:`When it starts.`,endDate:`When it ends.`,allDay:`Turn this on for an event that lasts all day.`,status:`scheduled, in progress, completed, cancelled or postponed.`},"@happyvertical/smrt-events:EventType":{name:`What this kind of event is called, for example workshop.`,description:`What this kind of event is for.`},"@happyvertical/smrt-events:EventSeries":{name:`What the series is called.`,typeId:`The kind of event in this series.`,organizerId:`Who runs the series.`,description:`What the series is about.`,startDate:`When the series begins.`,endDate:`When the series ends.`,recurrence:`How often it repeats.`},"@happyvertical/smrt-events:EventParticipant":{eventId:`The event the person takes part in.`,profileId:`The person taking part.`,role:`What they do there, for example speaker or attendee.`},"@happyvertical/smrt-sales:Lead":{name:`What you call this lead.`,contactName:`The person to talk to.`,email:`Their email address.`,phone:`Their phone number.`,organizationName:`The company they are with.`,ownerRepId:`The sales representative who owns this lead.`,status:`Where the lead stands, for example new or qualified.`},"@happyvertical/smrt-sales:Opportunity":{name:`What you call this deal.`,leadId:`The lead it came from.`,ownerRepId:`The sales representative who owns this deal.`,pipelineId:`The pipeline it moves through.`,stageId:`The stage it is at now.`,expectedValueCents:`What you expect the deal to be worth, in cents.`,currency:`The currency of that value.`,probability:`How likely it is to close, as a decimal (0.5 is 50%).`,expectedCloseAt:`When you expect it to close.`,status:`open, won or lost.`},"@happyvertical/smrt-sales:PipelineDefinition":{key:`A short code for the pipeline.`,name:`What the pipeline is called.`,isDefault:`Turn this on to use it for new deals.`,status:`Whether the pipeline is in use.`,metadata:`Extra details kept with the pipeline.`},"@happyvertical/smrt-sales:PipelineStage":{pipelineId:`The pipeline this stage belongs to.`,key:`A short code for the stage.`,name:`What the stage is called.`,sortOrder:`Where it comes in the pipeline.`,probability:`How likely a deal at this stage is to close, as a decimal.`,isWon:`Turn this on for the stage that means the deal is won.`,isLost:`Turn this on for the stage that means the deal is lost.`},"@happyvertical/smrt-sales:SalesActivity":{subjectKind:`What the activity is about: a lead or an opportunity.`,subjectId:`The lead or opportunity it is about.`,activityKind:`The kind of activity, for example call, note or email.`,summary:`What happened or what needs doing.`,dueAt:`When it is due.`,completedAt:`When it was done.`}};function Lt(e,t){let n=new Map(e.map(e=>[e.id,e])),r=[...Object.keys(t.recipes),...t.order].filter(e=>!n.has(e));if(r.length>0)throw Error(`Recipes only declared locally, not in a smrt package: ${[...new Set(r)].join(`, `)}`);let i=[...t.order,...e.map(e=>e.id).filter(e=>!t.order.includes(e))];return[...new Set(i)].map(e=>{let r=n.get(e),i=t.recipes[e];return i?{...r,...i}:r})}var Rt={order:[`commerce.customers`,`commerce.purchases`,`commerce.sales`,`commerce.vendors`,`inventory.stock`,`products.simple`,`products.clothing`,`products.ingredients`,`commerce.estimates`,`commerce.wholesale`,`commerce.invoicing`,`commerce.fulfillment`,`commerce.agreements`,`commerce.leases`,`commerce.licenses`,`ledgers.bookkeeping`,`projects.tracker`,`events.calendar`,`sales.pipeline`],recipes:{"commerce.customers":{forms:[{id:`customer.default`,kind:`field-map`,label:`Customer`,kindLabel:`Customer`,model:`@happyvertical/smrt-commerce:Customer`,records:[{as:`profileType`,model:`@happyvertical/smrt-profiles:ProfileType`,match:{name:`Customer`}},{as:`profile`,model:`@happyvertical/smrt-profiles:Profile`,match:{id:{ref:`customer`,field:`profileId`}},values:{typeId:{ref:`profileType`}}},{as:`customer`,model:`@happyvertical/smrt-commerce:Customer`,values:{profileId:{ref:`profile`}}}],fields:[{id:`name`,label:`Name`,to:`profile.name`,required:!0},{id:`email`,label:`Email`,to:`profile.email`},{id:`status`,label:`Status`,to:`customer.status`,default:`active`},{id:`customerType`,label:`Customer type`,to:`customer.customerType`,default:`dtc`},{id:`paymentTerms`,label:`Payment terms`,to:`customer.paymentTerms`},{id:`creditLimit`,label:`Credit limit`,to:`customer.creditLimit`},{id:`taxExempt`,label:`Tax exempt`,to:`customer.taxExempt`},{id:`taxId`,label:`Tax ID`,to:`customer.taxId`},{id:`shippingAddress`,label:`Shipping address`,to:`customer.defaultShippingAddress`},{id:`billingAddress`,label:`Billing address`,to:`customer.defaultBillingAddress`},{id:`notes`,label:`Notes`,to:`customer.notes`}]}]},"commerce.vendors":{forms:[{id:`vendor.default`,kind:`field-map`,label:`Vendor`,kindLabel:`Vendor`,model:`@happyvertical/smrt-commerce:Vendor`,records:[{as:`profileType`,model:`@happyvertical/smrt-profiles:ProfileType`,match:{name:`Vendor`}},{as:`profile`,model:`@happyvertical/smrt-profiles:Profile`,match:{id:{ref:`vendor`,field:`profileId`}},values:{typeId:{ref:`profileType`}}},{as:`vendor`,model:`@happyvertical/smrt-commerce:Vendor`,values:{profileId:{ref:`profile`}}}],fields:[{id:`name`,label:`Name`,to:`profile.name`,required:!0},{id:`email`,label:`Email`,to:`profile.email`},{id:`status`,label:`Status`,to:`vendor.status`,default:`active`},{id:`currency`,label:`Currency`,to:`vendor.currency`,default:`USD`},{id:`paymentTerms`,label:`Payment terms`,to:`vendor.paymentTerms`},{id:`leadTimeDays`,label:`Lead time (days)`,to:`vendor.leadTimeDays`},{id:`minimumOrderAmount`,label:`Minimum order`,to:`vendor.minimumOrderAmount`},{id:`contactEmail`,label:`Contact email`,to:`vendor.defaultContactEmail`},{id:`contactPhone`,label:`Contact phone`,to:`vendor.defaultContactPhone`},{id:`notes`,label:`Notes`,to:`vendor.notes`},{id:`payoutAddresses`,label:`Payout addresses`,to:`vendor.payoutAddresses`}]}]},"inventory.stock":{extends:[{form:`product.simple`,records:[{as:`sku`,model:`@happyvertical/smrt-products:Sku`,match:{productId:{ref:`product`}},values:{code:`{product.name|slug}`,name:`{product.name}`,attributes:`{}`,active:!0}},{as:`location`,model:`@happyvertical/smrt-inventory:InventoryLocation`,match:{code:`MAIN`},values:{name:`Main warehouse`,kind:`warehouse`}},{as:`stock`,model:`@happyvertical/smrt-inventory:StockLevel`,match:{skuId:{ref:`sku`},locationId:{ref:`location`},state:`available`}}],fields:[{id:`quantity`,label:`Quantity`,to:`stock.qty`,default:0}]},{form:`product.clothing`,records:[{as:`location`,model:`@happyvertical/smrt-inventory:InventoryLocation`,match:{code:`MAIN`},values:{name:`Main warehouse`,kind:`warehouse`}},{as:`stock`,model:`@happyvertical/smrt-inventory:StockLevel`,match:{skuId:{ref:`sku`},locationId:{ref:`location`},state:`available`}}],fields:[{id:`quantity`,label:`Quantity`,to:`stock.qty`,default:0}]}]},"products.simple":{forms:[{id:`product.simple`,kind:`field-map`,label:`Simple product`,kindLabel:`Simple`,model:`@happyvertical/smrt-products:Product`,records:[{as:`product`,model:`@happyvertical/smrt-products:Product`}],fields:[{id:`name`,label:`Name`,to:`product.name`,required:!0},{id:`price`,label:`Price`,to:`product.price`},{id:`description`,label:`Description`,to:`product.description`}]}]},"products.clothing":{forms:[{id:`product.clothing`,kind:`variant-grid`,label:`Clothing item`,kindLabel:`Clothing`,model:`@happyvertical/smrt-products:Product`,product:{as:`product`,model:`@happyvertical/smrt-products:Product`},fields:[{id:`name`,label:`Name`,to:`product.name`,required:!0},{id:`price`,label:`Price`,to:`product.price`}],axes:[{name:`size`,label:`Sizes`,values:[`XS`,`S`,`M`,`L`,`XL`]},{name:`color`,label:`Colors`,values:[]}],variants:`@happyvertical/smrt-products:ProductVariant`,skus:`@happyvertical/smrt-products:Sku`}]}}};function zt(e){return e.fields.filter(e=>!e.system)}var Bt=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1_$2`).toLowerCase();function Vt(e,t){return/Type$/.test(t.name)&&Array.isArray(t.enum)&&t.enum.length>0&&!!e.extends&&t.enum.includes(Bt(e.name))}function Ht(e){return e.some(e=>e.ui?.basic===!0)}function Ut(e){return e!=null&&e!==``}function Wt(e){if(e==null)return null;try{return{value:JSON.parse(e)}}catch{return null}}function Gt(e,t,n=[]){let r=zt(e),i=Ht(r),a=new Map(n.filter(t=>t.objectRef===e.id).map(e=>[e.fieldName,e]));return r.map((n,r)=>{let o=t?.fields?.[n.name]??{},s=Vt(e,n),c=o.visibility??(s?`hidden`:!i||n.ui?.basic===!0?`basic`:`advanced`),l=o.label??U(n),u=o.help??null,d=o.order??n.ui?.order??r,f=o.locked??n.ui?.locked??s,p=Bt(e.name),m=n.default===void 0?s&&n.enum?.includes(p)?p:void 0:n.default,h=`default`in o||m!==void 0,g=`default`in o?o.default:m,_=a.get(n.name);if(_&&(!f||_.locked===!1)){_.visibility&&(c=_.visibility),_.label&&(l=_.label),_.help!==void 0&&(u=_.help||null),typeof _.displayOrder==`number`&&(d=_.displayOrder);let e=Wt(_.defaultValue);e&&(h=!0,g=e.value),typeof _.locked==`boolean`&&(f=_.locked)}let v,y=o.required??n.required;return y&&c!==`basic`&&!(h&&Ut(g))&&(c=`basic`,v=!0),{field:n,visibility:c,label:l,help:u,order:d,group:n.ui?.group??null,locked:f,required:y,hasDefault:h,default:g,...v?{visibilityForced:v}:{}}}).map((e,t)=>({entry:e,index:t})).sort((e,t)=>e.entry.order-t.entry.order||e.index-t.index).map(({entry:e})=>e)}function Kt(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e===null?e:void 0}function qt(e){return e.filter(e=>e.visibility===`basic`).map(e=>{let{default:t,...n}=e.field,r=e.hasDefault?Kt(e.default):void 0;return{...n,required:e.required,...r===void 0?{}:{default:r},label:e.label,...e.help?{help:e.help}:{}}})}function Jt(e){let t={};for(let n of e)n.visibility!==`basic`&&n.hasDefault&&n.default!==void 0&&(t[n.field.name]=n.default);return t}var Yt=[`api`,`mcp`,`cli`],Xt={api:`REST`,mcp:`MCP`,cli:`CLI`};function Zt(e,t){return(t===`api`?e.rest.length:t===`mcp`?e.mcp.length:e.cli.length)>0}function Qt(e,t,n=[]){let r={};for(let i of Yt){let a=Zt(e,i),o=t?.exposure?.[i]===!1;r[i]={available:a,on:a&&!o&&!n.includes(i),locked:!a||o}}return r}function $t(e,t){let n=t.mcp.on;return{...e,rest:t.api.on?e.rest:[],mcp:n?e.mcp:[],cli:t.cli.on?e.cli:[],methods:e.methods.map(e=>({...e,aiCallable:e.aiCallable&&n}))}}function en(e,t,n=[]){return Gt(e,t,n).filter(e=>t?.fields?.[e.field.name]?.visibility!==`hidden`)}function tn(e){return e.required||e.locked}function nn(e,t,n,r){let i={};for(let r of en(e,t,n))i[r.field.name]={use:r.visibility===`basic`,label:r.label,help:r.help??``,default:r.hasDefault?r.default:null,order:r.order};let a=Qt(e,t,r);return{fields:i,exposure:{api:a.api.on,mcp:a.mcp.on,cli:a.cli.on}}}var rn=(e,t)=>JSON.stringify(e??null)===JSON.stringify(t??null);function an(e,t,n){let r=en(e,t),i=[];for(let t of r){let r=n.fields[t.field.name];if(!r||t.locked)continue;let a={objectRef:e.id,fieldName:t.field.name,scopeType:`app`},o=tn(t)?!0:r.use;o!==(t.visibility===`basic`)&&(a.visibility=o?`basic`:`hidden`),r.label.trim()&&r.label!==t.label&&(a.label=r.label.trim()),r.help!==(t.help??``)&&(a.help=r.help||null),rn(r.default,t.hasDefault?t.default:null)||(a.defaultValue=JSON.stringify(r.default??null)),r.order!==t.order&&(a.displayOrder=r.order),Object.keys(a).length>3&&i.push(a)}return i}function on(e,t,n){let r=Qt(e,t);return Yt.filter(e=>r[e].on&&!n.exposure[e])}var sn=It,cn=Lt(B.packages.flatMap(e=>e.recipes??[]),Rt),ln=new Map(cn.map(e=>[e.id,e]));function un(e){return ln.get(e)}var Q=ln,dn=bt(cn);function fn(e){return dn.find(t=>t.id===e)}function pn(e){let t=e.models[0];return t?V(t)?.pkg:void 0}function mn(e){return e.nav.flatMap(e=>{let t=V(e.model);return t?[{label:e.label,icon:e.icon??`fileText`,description:Tt(e.description,t.model),...e.key?{key:e.key}:{},...e.noun?{noun:e.noun}:{},...e.filter?{filter:e.filter}:{},model:t.model,packageId:t.pkg.id}]:[]})}function hn(e){return`/m/${e.packageId}/${e.model.name}/${e.key?`${e.key}/`:``}`}function gn(e){return e.models.flatMap(e=>{let t=V(e);return t?[{model:t.model,packageId:t.pkg.id}]:[]})}function _n(e,t=[]){let n=e.nav.length>0;return gn(e).map(({model:r})=>({id:r.id,name:r.name,...n?{}:{glossary:!1},descriptions:{...Object.fromEntries(r.fields.flatMap(e=>e.description?[[e.name,e.description]]:[])),...sn[r.id]},fields:Gt(r,e.options?.[r.id],t).map(e=>({name:e.field.name,label:e.label,help:e.help,visibility:e.visibility}))}))}function vn(e){return[...new Set(e)].sort()}function yn(e,t){let n=new Set,r=e=>{let i=t.get(e);if(i&&!n.has(e)){n.add(e);for(let e of i.requires)r(e)}};for(let t of e)r(t);let i=!0;for(;i;){i=!1;for(let e of[...n])for(let a of t.get(e)?.requiresAny??[]){if(a.some(e=>n.has(e)))continue;let e=a.find(e=>t.has(e));e&&(r(e),i=!0)}}return vn(n)}function bn(e,t,n){let r=new Set(e),i=t.filter(e=>!r.has(e)),a=new Set(i);return i.filter(e=>{let t=n.get(e);return t?t.requires.some(e=>r.has(e))?!0:(t.requiresAny??[]).some(e=>e.some(e=>r.has(e))&&!e.some(e=>a.has(e))):!1})}function xn(e,t,n){return bn([e],t,n)}function Sn(e,t){return vn([...e].filter(e=>t.has(e)))}var Cn={currency:`USD`,taxRate:0,paymentTerms:``},wn=`@happyvertical/smrt-commerce:`,$={currency:[`Order`,`PurchaseOrder`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${wn}${e}`,field:`currency`})),taxRate:[`InvoiceLineItem`,`ContractLineItem`].map(e=>({model:`${wn}${e}`,field:`taxRate`})),paymentTerms:[...[`Order`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${wn}${e}`,field:`terms`})),{model:`${wn}Customer`,field:`paymentTerms`}]};function Tn(e){return Object.values($).some(t=>t.some(t=>t.model===e.objectRef&&t.field===e.fieldName))}var En=Object.keys($);function Dn(e){if(e?.defaultValue!==void 0&&e.defaultValue!==null)try{return JSON.parse(e.defaultValue)}catch{return}}function On(e,t,n){return e.find(e=>e.scopeType===`app`&&e.objectRef===t&&e.fieldName===n)}function kn(e){let t={...Cn},n=(t,n)=>{for(let{model:r,field:i}of $[t]){let t=Dn(On(e.policies,r,i));if(typeof t===n)return t}},r=n(`currency`,`string`),i=n(`taxRate`,`number`),a=n(`paymentTerms`,`string`);return typeof r==`string`&&(t.currency=r),typeof i==`number`&&(t.taxRate=i),typeof a==`string`&&(t.paymentTerms=a),t}function An(e){return $.taxRate.some(({model:t,field:n})=>typeof Dn(On(e.policies,t,n))==`number`)}function jn(e,t,n){let r=V(t)?.model;if(!r)return;let i=Gt(r,e.recipes.map(e=>Q.get(e)?.options?.[t]).find(Boolean),[]).find(e=>e.field.name===n);return i?.hasDefault?i.default:void 0}var Mn=e=>e==null||e===``;function Nn(e,t){let n=e.policies.map(e=>({...e}));for(let r of En){let i=t[r],a=r===`paymentTerms`?String(i).trim():r===`currency`?String(i).trim().toUpperCase():i;for(let{model:t,field:i}of $[r]){let o=jn(e,t,i),s=!Mn(a)&&!(!Mn(o)&&o===a)&&!(Mn(o)&&r===`taxRate`&&a===0),c=On(n,t,i);if(s){let e=JSON.stringify(a);c?c.defaultValue=e:n.push({objectRef:t,fieldName:i,scopeType:`app`,defaultValue:e})}else c&&(delete c.defaultValue,Object.keys(c).length<=3&&(n=n.filter(e=>e!==c)))}}return{...e,policies:n}}function Pn(e){return{...Cn,...e}}var Fn=()=>({ids:[],rows:[],narrowed:{},features:[],unavailableRecipes:[],unavailableFeatures:[]});function In(e){let t=new Set([...e.ids.flatMap(e=>Q.get(e)?.models??[]),...e.features]);return{...e,rows:e.rows.filter(e=>t.has(e.objectRef)||Tn(e)),narrowed:Object.fromEntries(Object.entries(e.narrowed).filter(([e])=>t.has(e)))}}var Ln=(e,t)=>({...e,ids:yn([...e.ids,...t],Q)});function Rn(e,t){let n=new Set(t),r=e.ids.filter(e=>!n.has(e));return In({...e,ids:yn(r,Q)})}var zn=(e,t)=>e.features.includes(t)?e:{...e,features:[...e.features,t].sort()},Bn=(e,t)=>In({...e,features:e.features.filter(e=>e!==t)}),Vn=(e,t)=>xn(t,e.ids,Q);function Hn(e,t){for(let n of e.ids){let e=Q.get(n)?.options?.[t];if(e)return e}}function Un(e,t,n,r){let i={...e.narrowed};return r.length?i[t]=[...r]:delete i[t],{...e,rows:[...e.rows.filter(e=>e.objectRef!==t),...n],narrowed:i}}function Wn(e){let t=[...e.rows].sort((e,t)=>e.objectRef.localeCompare(t.objectRef)||e.fieldName.localeCompare(t.fieldName)),n=Object.fromEntries(Object.keys(e.narrowed).sort().filter(t=>e.narrowed[t].length).map(t=>[t,[...e.narrowed[t]].sort()])),r={recipes:[...e.ids,...e.unavailableRecipes].sort(),features:[...e.features,...e.unavailableFeatures].sort(),policies:t.map(e=>({...e}))};return Object.keys(n).length&&(r.exposure=n),r}function Gn(e){let t=[...new Set(e.features)],n=e=>!!V(e)?.model.exposed;return In({ids:yn(e.recipes,Q),rows:e.policies.map(e=>({...e})),narrowed:Object.fromEntries(Object.entries(e.exposure??{}).map(([e,t])=>[e,[...t]])),features:t.filter(n).sort(),unavailableRecipes:[...new Set(e.recipes.filter(e=>!Q.has(e)))].sort(),unavailableFeatures:t.filter(e=>!n(e)).sort()})}var Kn=new class{#e=L(A([]));get ids(){return S(this.#e)}set ids(e){k(this.#e,e,!0)}#t=L(A([]));get rows(){return S(this.#t)}set rows(e){k(this.#t,e,!0)}#n=L(A({}));get narrowed(){return S(this.#n)}set narrowed(e){k(this.#n,e,!0)}#r=L(A([]));get features(){return S(this.#r)}set features(e){k(this.#r,e,!0)}#i=L(A([]));get unavailableRecipes(){return S(this.#i)}set unavailableRecipes(e){k(this.#i,e,!0)}#a=L(A([]));get unavailableFeatures(){return S(this.#a)}set unavailableFeatures(e){k(this.#a,e,!0)}get data(){return{ids:this.ids,rows:this.rows,narrowed:this.narrowed,features:this.features,unavailableRecipes:this.unavailableRecipes,unavailableFeatures:this.unavailableFeatures}}set(e){this.ids=e.ids,this.rows=e.rows,this.narrowed=e.narrowed,this.features=e.features,this.unavailableRecipes=e.unavailableRecipes,this.unavailableFeatures=e.unavailableFeatures}removeUnavailable(){this.unavailableRecipes=[],this.unavailableFeatures=[]}hasFeature(e){return this.features.includes(e)}addFeature(e){this.set(zn(this.data,e))}removeFeature(e){this.set(Bn(this.data,e))}has(e){return this.ids.includes(e)}requiredBy(e){return Vn(this.data,e)}add(...e){this.set(Ln(this.data,e))}remove(...e){this.set(Rn(this.data,e))}toggle(e){this.has(e)?this.remove(e):this.add(e)}clear(){this.set(Fn())}hintsFor(e){return Hn(this,e)}apply(e){let t=this.hintsFor(e.id),n=Gt(e,t,this.rows);return{model:$t(e,Qt(e,t,this.narrowed[e.id]??[])),resolved:n,fields:qt(n),background:Jt(n)}}save(e,t,n){this.set(Un(this.data,e,t,n))}reset(e){this.save(e,[],[])}snapshot(){return Wn(this.data)}load(e){this.set(Gn(e))}};N([`click`]),N([`click`,`keydown`]),N([`click`]);var qn=new Map(Object.entries({menu:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`,search:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`,close:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z`,"chevron-right":`M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z`,"chevron-left":`M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z`,"chevron-down":`M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z`,check:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z`,add:`M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`,mic:`M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.04 6.43 5 7.07V21h4v-2.93c2.96-.64 5-3.54 5-7.07h-2z`,alert:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 5h2v6h-2zm0 8h2v2h-2z`,warning:`M1 21h22L12 2 1 21zm12-3h-2v-2h2zm0-4h-2v-4h2z`,info:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 15h-2v-6h2zm0-8h-2V7h2z`,home:`M3 10 12 2 21 10v11h-6v-7H9v7H3z`,user:`M12 3a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM4 21v-2c0-4 16-4 16 0v2H4z`,settings:`M10 2h4l1 3 3-1 3 3-1 3 3 1v4l-3 1 1 3-3 3-3-1-1 3h-4l-1-3-3 1-3-3 1-3-3-1v-4l3-1-1-3 3-3 3 1 1-3zm2 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8z`,trash:`M7 3h10v2h4v2H3V5h4V3zm-2 6h14v12H5V9zm4 2v8h2v-8H9zm4 0v8h2v-8h-2z`,edit:`M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z`,calendar:`M7 2h2v2h6V2h2v2h4v18H3V4h4V2zm-2 8v10h14V10H5zm2 2h4v4H7v-4z`,clock:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16zm-1 2h2v5.5l4 2.5-1 1.5-5-3V6z`,camera:`M9 3h6l2 3h4v15H3V6h4l2-3zm3 5a5 5 0 1 0 0 10 5 5 0 0 0 0-10zm0 2a3 3 0 1 1 0 6 3 3 0 0 1 0-6z`,upload:`M11 16V7l-4 4-1.5-1.5L12 3l6.5 6.5L17 11l-4-4v9h-2zM3 18h18v3H3v-3z`,download:`M11 3h2v9l4-4 1.5 1.5L12 16l-6.5-6.5L7 8l4 4V3zM3 18h18v3H3v-3z`})),Jn=L([]);function Yn(e){for(let t=S(Jn).length-1;t>=0;t--){let n=S(Jn)[t].paths.get(e);if(n!==void 0)return n}return qn.get(e)}var Xn=x(`<svg xmlns="http://www.w3.org/2000/svg" class="svelte-tlrjgw"><path></path></svg>`);function Zn(e,t){i(t,!0);let n=C(t,`size`,3,24),r=C(t,`color`,3,`currentColor`),a=C(t,`viewBox`,3,`0 0 24 24`),o=z(()=>!!t[`aria-label`]),s=z(()=>t.path??(t.name?Yn(t.name):``)),c=z(()=>typeof n()==`number`?`${n()}px`:n());var l=Xn(),u=O(l);w(()=>{I(l,`width`,S(c)),I(l,`height`,S(c)),I(l,`viewBox`,a()),I(l,`fill`,r()),I(l,`aria-hidden`,!S(o)),I(l,`aria-label`,t[`aria-label`]),I(l,`role`,S(o)?`img`:void 0),I(u,`d`,S(s))}),b(e,l),v()}N([`click`]),N([`click`]),N([`click`]);function Qn(e,t,n){if(!n||n<1||e.length<=n)return{visible:[...e],overflow:[]};let r=e.slice(0,n-1),i=e.slice(n-1),a=i.find(e=>e.id===t)??i[0];return{visible:a?[...r,a]:r,overflow:i.filter(e=>e!==a)}}var $n=y(`<span class="tab-count svelte-1stnz8g"> </span>`),er=y(`<span class="tab-badge svelte-1stnz8g"> </span>`),tr=y(`<a><span class="tab-label"> </span> <!> <!></a>`),nr=y(`<span class="tab-dot svelte-1stnz8g" aria-hidden="true"></span> <span class="visually-hidden svelte-1stnz8g"> </span>`,1),rr=y(`<details class="tabs-more svelte-1stnz8g"><summary class="tab-link svelte-1stnz8g"><span class="tab-label"> </span> <!></summary> <div class="tabs-more-menu svelte-1stnz8g"></div></details>`),ir=y(`<div class="tab-panel svelte-1stnz8g"><!></div>`),ar=y(`<div class="tabs-container svelte-1stnz8g"><nav data-shell-tabs=""><div class="tabs-links-row svelte-1stnz8g"></div> <!></nav> <!></div>`),or=y(`<button type="button" role="tab"><span class="tab-content-wrapper svelte-1stnz8g"><span class="tab-label"> </span> <!> <!></span> <div class="active-indicator svelte-1stnz8g"></div></button>`),sr=y(`<div class="tab-panel svelte-1stnz8g" role="tabpanel"><!></div>`),cr=y(`<div class="tabs-container svelte-1stnz8g"><div role="tablist"></div> <!></div>`);function lr(t,n){let l=s();i(n,!0);let d=(t,i=o)=>{var a=tr();let s;var c=F(a),l=O(c,!0),d=M(c,2),f=t=>{var n=$n(),r=O(n,!0);w(()=>e(r,i().count)),b(t,n)};h(d,e=>{i().count!==void 0&&e(f)});var p=M(d,2),g=t=>{var n=er(),r=O(n,!0);w(()=>e(r,i().badge)),b(t,n)},_=z(()=>B(i()));h(p,e=>{S(_)&&e(g)}),m(a),w(()=>{s=r(a,1,`tab-link svelte-1stnz8g`,null,s,{active:i().id===n.active}),I(a,`href`,i().disabled?void 0:i().href),I(a,`aria-current`,i().id===n.active?`page`:void 0),I(a,`aria-disabled`,i().disabled?`true`:void 0),I(a,`data-tab-id`,i().id),e(l,i().label)}),u(`click`,a,e=>{if(i().disabled){e.preventDefault();return}U(i().id)}),b(t,a)},g=C(n,`size`,3,`md`),_=C(n,`variant`,3,`primary`),y=C(n,`moreLabel`,3,`More`),x=C(n,`moreBadgeLabel`,3,`has updates`),D=z(()=>n.tabs.length>0&&n.tabs.every(e=>!!e.href)),A=z(()=>S(D)?Qn(n.tabs,n.active,n.maxVisible):{visible:n.tabs,overflow:[]}),N=z(()=>S(A).overflow.some(e=>B(e))),P=L(null),R=L(null);j(()=>{let e=n.active;S(D)&&S(R)&&(S(P)&&(S(P).open=!1),S(R).querySelector(`[data-tab-id="${CSS.escape(e)}"]`)?.scrollIntoView?.({block:`nearest`,inline:`nearest`}))});function B(e){return e.badge!==void 0&&e.badge!==null&&e.badge!==``}let V=z(()=>n.tabs.filter(e=>!e.disabled)),H=L(null);function U(e){n.tabs.find(t=>t.id===e)?.disabled||e!==n.active&&n.onchange?.(e)}function ne(e,t){let r=S(V).findIndex(e=>e.id===t),i=null;switch(e.key){case`ArrowRight`:e.preventDefault(),i=(r+1)%S(V).length;break;case`ArrowLeft`:e.preventDefault(),i=(r-1+S(V).length)%S(V).length;break;case`Home`:e.preventDefault(),i=0;break;case`End`:e.preventDefault(),i=S(V).length-1}if(i!==null&&i!==r){let e=S(V)[i];e&&(n.onchange?.(e.id),requestAnimationFrame(()=>{(S(H)?.querySelector(`[data-tab-id="${CSS.escape(e.id)}"]`))?.focus()}))}}var W=c(),re=E(W),G=t=>{var i=ar(),o=F(i);let s;var c=F(o);a(c,21,()=>S(A).visible,e=>e.id,(e,t)=>{d(e,()=>S(t))}),m(c),T(c,e=>k(R,e),()=>S(R));var l=M(c,2),u=t=>{var n=rr(),r=F(n),i=F(r),o=O(i,!0),s=M(i,2),c=t=>{var n=nr(),r=M(E(n),2),i=O(r);w(()=>e(i,`(${x()??``})`)),b(t,n)};h(s,e=>{S(N)&&e(c)}),m(r);var l=M(r,2);a(l,21,()=>S(A).overflow,e=>e.id,(e,t)=>{d(e,()=>S(t))}),m(l),m(n),T(n,e=>k(P,e),()=>S(P)),w(()=>e(o,y())),b(t,n)};h(l,e=>{S(A).overflow.length>0&&e(u)}),m(o);var f=M(o,2),_=e=>{var t=ir(),r=F(t);p(r,()=>n.children),m(t),b(e,t)};h(f,e=>{n.children&&e(_)}),m(i),w(()=>{s=r(o,1,`tabs-links svelte-1stnz8g`,null,s,{sm:g()===`sm`,lg:g()===`lg`}),I(o,`aria-label`,n[`aria-label`])}),b(t,i)},K=t=>{var i=cr(),o=F(i);let s;a(o,21,()=>n.tabs,e=>e.id,(t,i)=>{var a=or();let o;var s=F(a),c=F(s),d=O(c,!0),p=M(c,2),g=t=>{var n=$n(),r=O(n,!0);w(()=>e(r,S(i).count)),b(t,n)};h(p,e=>{S(i).count!==void 0&&e(g)});var _=M(p,2),v=t=>{var n=er(),r=O(n,!0);w(()=>e(r,S(i).badge)),b(t,n)},y=z(()=>B(S(i)));h(_,e=>{S(y)&&e(v)}),m(s),f(2),m(a),ee(a,e=>te?.(e)),w(()=>{o=r(a,1,`tab-button svelte-1stnz8g`,null,o,{active:S(i).id===n.active}),a.disabled=S(i).disabled,I(a,`id`,`tab-${l}-${S(i).id??``}`),I(a,`aria-selected`,S(i).id===n.active),I(a,`aria-controls`,`tab-panel-${l}`),I(a,`tabindex`,S(i).id===n.active?0:-1),I(a,`data-tab-id`,S(i).id),e(d,S(i).label)}),u(`click`,a,()=>U(S(i).id)),u(`keydown`,a,e=>ne(e,S(i).id)),b(t,a)}),m(o),T(o,e=>k(H,e),()=>S(H));var c=M(o,2),d=e=>{var t=sr(),r=F(t);p(r,()=>n.children),m(t),w(()=>{I(t,`id`,`tab-panel-${l}`),I(t,`aria-labelledby`,`tab-${l}-${n.active??``}`)}),b(e,t)};h(c,e=>{n.children&&e(d)}),m(i),w(()=>{s=r(o,1,`tabs-nav svelte-1stnz8g`,null,s,{sm:g()===`sm`,lg:g()===`lg`,secondary:_()===`secondary`}),I(o,`aria-label`,n[`aria-label`])}),b(t,i)};h(re,e=>{S(D)?e(G):e(K,-1)}),b(t,W),v()}N([`click`,`keydown`]),N([`click`,`keydown`]);function ur(){let e=new Map,t=new Map,n=(e,t)=>`${e}:${t}`;return{register(t,r,i){e.set(n(t,r),i)},get(t,r){return e.get(n(t,r))},has(t,r){return e.has(n(t,r))},getSlots(t){let n=`${t}:`;return Array.from(e.keys()).filter(e=>e.startsWith(n)).map(e=>e.slice(n.length))},getModules(){return Array.from(t.keys())},getModuleMeta(e){return t.get(e)},registerModule(e){t.set(e.name,e)},unregister(t,r){return e.delete(n(t,r))},clear(){e.clear(),t.clear()}}}var dr=ur();export{J as $,on as A,St as B,Q as C,nn as D,Xt as E,Ft as F,ht as G,wt as H,Nt as I,vt as J,_t as K,jt as L,an as M,Dt as N,en as O,At as P,Ae as Q,Pt as R,cn as S,Yt as T,xt as U,Ct as V,yt as W,We as X,rt as Y,Z,_n as _,Wn as a,mn as b,Tn as c,Nn as d,me as et,Sn as f,fn as g,un as h,Kn as i,G as it,Qt as j,tn as k,kn as l,yn as m,lr as n,q as nt,$ as o,bn as p,gt as q,Zn as r,de as rt,An as s,dr as t,ye as tt,Pn as u,hn as v,dn as w,pn as x,gn as y,Mt as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=function(e,t){return new URL(e,t).href},t={},n=function(n,r,i){let a=Promise.resolve();if(r&&r.length>0){let n=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function c(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function l(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=c(r.map(r=>{if(r=e(r,i),r=l(r),r in t)return;t[r]=!0;let a=r.endsWith(`.css`);for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.href===r&&(!a||t.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:`modulepreload`,a||(o.as=`script`),o.crossOrigin=``,o.href=r,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,t)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${r}`)))})}).filter(e=>e!==void 0))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(e=>{for(let t of e||[])t.status===`rejected`&&o(t.reason);return n().catch(o)})};export{n as t};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./iET62IRm.js","./uBIymjUX.js","./BQxY8kkL.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{At as e,B as t,D as n,E as r,Et as i,F as a,H as o,J as s,K as c,Mt as l,Nt as u,R as d,Tt as f,U as p,V as m,Z as h,a as g,at as _,b as v,dt as y,et as b,ft as x,gt as S,it as C,mt as w,ot as T,pt as E,q as D,ut as O,v as k,vt as A,xt as j}from"./Chyo8rdT.js";import{t as M}from"./uBIymjUX.js";import"./xihTtKlq.js";import{t as N}from"./CPRHZZeW.js";import{n as ee}from"./DVRKjN-E.js";import{d as te,f as P,i as ne,n as F,o as re,r as I,u as ie}from"./WxSPP8QW.js";import{_ as ae,i as L,v as oe}from"./CygC84VT.js";import{S as se,d as ce,i as le,l as ue,o as de,r as fe}from"./p6bgzXiY.js";import{n as pe}from"./D333l2GL.js";import{n as me,r as he}from"./CyUMm_Wp.js";import{a as ge,t as _e}from"./BQxY8kkL.js";import{A as ve,K as ye}from"./D_J_XtJy.js";import{n as be,t as xe}from"./leQCwW2d.js";async function Se(e={}){let t=e.window??(typeof window<`u`?window:void 0),n=e.navigator??(typeof navigator<`u`?navigator:void 0);return!t||!(`SpeechRecognition`in t)&&!(`webkitSpeechRecognition`in t)?`missing`:n&&`brave`in n&&n.brave||/\bElectron\//.test(n?.userAgent??``)?`unreliable`:`works`}function Ce(e){return new Worker(new URL(`../workers/local-speech.worker-DWbfmFUk.js`,import.meta.url).href,{name:e?.name})}var we=2**28,Te=16,Ee=.95;function De(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function Oe(e,t,n){for(let[e,r]of[[`fromRate`,t],[`toRate`,n]])if(!Number.isFinite(r)||r<=0)throw new ge(`invalid_argument`,`${e} must be a positive finite number (got ${String(r)})`);let r=Math.floor(e.length*n/t);if(r>we)throw new ge(`invalid_argument`,`resampled output would be ${r} samples; the limit is ${we}`);if(t===n)return e.slice();let i=new Float32Array(r),a=t/n,o=a>1?Ee/a:1,s=Te/o,c=e.length-1;for(let t=0;t<r;t+=1){let n=t*a,r=Math.max(0,Math.ceil(n-s)),l=Math.min(c,Math.floor(n+s)),u=0,d=0;for(let t=r;t<=l;t+=1){let r=t-n,i=.5+.5*Math.cos(Math.PI*r/s),a=o*De(o*r)*i;u+=a*e[t],d+=a}i[t]=d===0?0:u/d}return i}var ke={silenceMs:800,minSpeechMs:150,preRollMs:300,maxUtteranceMs:3e4,sensitivity:.5,calibrateMs:300},Ae=.0015,je=.003,Me=.006,Ne=.2,Pe=.02,Fe=2e3,Ie=250;function Le(e,t,n){return Math.min(n,Math.max(t,e))}function Re(e={}){let t=(e,t,n)=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,e):t;return{silenceMs:t(e.silenceMs,ke.silenceMs,20),minSpeechMs:t(e.minSpeechMs,ke.minSpeechMs,0),preRollMs:t(e.preRollMs,ke.preRollMs,0),maxUtteranceMs:t(e.maxUtteranceMs,ke.maxUtteranceMs,1e3),sensitivity:Le(typeof e.sensitivity==`number`&&Number.isFinite(e.sensitivity)?e.sensitivity:ke.sensitivity,0,1),calibrateMs:t(e.calibrateMs,ke.calibrateMs,0)}}function ze(e){let t=e.length;if(t===0)return 0;let n=0;for(let r=0;r<t;r++){let t=e[r];n+=t*t}return Math.sqrt(n/t)}function Be(e={}){let t=Re(e),n=6-4*t.sensitivity,r=.02-.015*t.sensitivity,i=je,a=0,o=[],s=!1,c=0,l=0,u=0,d=()=>Math.max(i*n,r),f=()=>Math.max(d()*.6,i*1.5),p=()=>{s=!1,c=0,l=0,u=0};return{get speaking(){return s},get noiseFloor(){return i},get threshold(){return d()},push(e,n=20){let r=[],m=Number.isFinite(e)?Math.max(0,e):0,h=Le(m/(d()*3),0,1),g=a<t.calibrateMs;if(g&&(a+=n,!s)){o.push(m);let e=[...o].sort((e,t)=>e-t);i=Le(e[Math.min(e.length-1,Math.floor(e.length*Ne))]??je,Ae,Me)}if(!s){if(m>d())c+=n,c>=t.minSpeechMs&&(s=!0,l=0,u=c,r.push({type:`start`,leadMs:t.preRollMs+c}),c=0);else if(g)c=0;else{c=0;let e=n/Fe*(m<i?4:1);i=Le(i+(m-i)*Math.min(1,e),Ae,Pe)}return{events:r,level:h,speaking:s}}return u+=n,m>f()?l=0:l+=n,l>=t.silenceMs?(r.push({type:`end`,reason:`silence`,trailingSilenceMs:l}),p()):u>=t.maxUtteranceMs&&(r.push({type:`split`}),u=0,l=0),{events:r,level:h,speaking:s}},flush(){let e=[];return s&&e.push({type:`end`,reason:`flush`,trailingSilenceMs:l}),p(),e}}}function Ve(e){let t=Re(e),n=Be(t),r=Math.max(1,Math.round(e.sampleRate*20/1e3)),i=r/e.sampleRate*1e3,a=Math.ceil((t.preRollMs+t.minSpeechMs)/i)+1,o=[],s=new Float32Array,c=null,l=!1,u=(t,n,r)=>{let a=Math.max(0,Math.floor((r-Ie)/i)),o=t.slice(0,Math.max(1,t.length-a)),s=0;for(let e of o)s+=e.length;let c=new Float32Array(s),l=0;for(let e of o)c.set(e,l),l+=e.length;e.onUtterance({pcm:c,sampleRate:e.sampleRate,durationMs:s/e.sampleRate*1e3,reason:n})},d=t=>{t!==l&&(l=t,e.onSpeaking?.(t))},f=s=>{let l=n.push(ze(s),i);e.onLevel?.(l.level),o.push(s),o.length>a&&o.shift(),c&&c.push(s);for(let e of l.events)if(e.type===`start`){c=[...o];let e=Math.ceil(t.preRollMs/i),n=Math.max(0,o.length-Math.ceil(t.minSpeechMs/i));for(let t=n;t<e;t++)c.unshift(new Float32Array(r))}else if(e.type===`end`){let t=c??[];c=null,o.length=0,t.length>0&&u(t,e.reason,e.trailingSilenceMs)}else if(e.type===`split`){let e=c??[];c=[],e.length>0&&u(e,`max`,0)}d(n.speaking)};return{get speaking(){return n.speaking},segmenter:n,push(e){let t=e;s.length>0&&(t=new Float32Array(s.length+e.length),t.set(s,0),t.set(e,s.length));let n=0;for(;n+r<=t.length;)f(t.slice(n,n+r)),n+=r;s=t.slice(n)},flush(){let t=n.flush();for(let e of t)e.type===`end`&&c&&c.length>0&&u(c,`flush`,e.trailingSilenceMs);c=null,o.length=0,s=new Float32Array,d(!1),e.onLevel?.(0)},discard(){n.flush(),c=null,o.length=0,s=new Float32Array,d(!1),e.onLevel?.(0)}}}var He=44,Ue=4294967295,We=1;function Ge(e){let t=new Int16Array(e.length);for(let n=0;n<e.length;n+=1){let r=e[n];Number.isNaN(r)||(t[n]=Math.min(32767,Math.round((r>1?1:r<-1?-1:r)*32768)))}return t}function Ke(e,t){if(!Number.isInteger(e)||e<1||e*2>Ue)throw new ge(`invalid_argument`,`${t} must be a positive integer sample rate (got ${String(e)})`)}function qe(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function Je(e,t){Ke(t,`sampleRate`);let n=e.length*2;if(n+He-8>Ue)throw new ge(`invalid_argument`,`too many samples for a single WAV (4 GiB limit)`);let r=e instanceof Int16Array?e:Ge(e),i=new Uint8Array(He+n),a=new DataView(i.buffer);qe(a,0,`RIFF`),a.setUint32(4,36+n,!0),qe(a,8,`WAVE`),qe(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,We,!0),a.setUint16(22,1,!0),a.setUint32(24,t,!0),a.setUint32(28,t*2,!0),a.setUint16(32,2,!0),a.setUint16(34,16,!0),qe(a,36,`data`),a.setUint32(40,n,!0);for(let e=0;e<r.length;e+=1)a.setInt16(He+e*2,r[e],!0);return i}var Ye=`hv-pcm-tap`,Xe=`
|
|
3
|
+
class HvPcmTap extends AudioWorkletProcessor {
|
|
4
|
+
process(inputs) {
|
|
5
|
+
const channels = inputs[0];
|
|
6
|
+
if (channels && channels.length > 0 && channels[0].length > 0) {
|
|
7
|
+
const frames = channels[0].length;
|
|
8
|
+
const mono = new Float32Array(frames);
|
|
9
|
+
for (let c = 0; c < channels.length; c += 1) {
|
|
10
|
+
const data = channels[c];
|
|
11
|
+
for (let i = 0; i < frames; i += 1) mono[i] += data[i];
|
|
12
|
+
}
|
|
13
|
+
if (channels.length > 1) {
|
|
14
|
+
for (let i = 0; i < frames; i += 1) mono[i] /= channels.length;
|
|
15
|
+
}
|
|
16
|
+
this.port.postMessage(mono, [mono.buffer]);
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
registerProcessor('${Ye}', HvPcmTap);
|
|
22
|
+
`;function Ze(){return typeof AudioContext<`u`&&typeof AudioWorkletNode<`u`&&typeof Blob<`u`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}function Qe(e,t){let{sampleRate:n,maxDurationMs:r}=t;if(!Number.isInteger(n)||n<1)throw RangeError(`sampleRate must be a positive integer`);if(!Number.isFinite(r)||r<=0)throw RangeError(`maxDurationMs must be a positive number`);if(!Ze())throw new _e(`unsupported`,`PCM capture needs AudioContext, AudioWorkletNode and Blob URLs`);let i=new AudioContext,a=Math.ceil(r/1e3*i.sampleRate),o=[],s=0,c=!1,l=!1,u=!1,d=!1,f,p,m,h,g=e=>{if(d)return;let n=e.data;if(t.onSamples?.(n,i.sampleRate),t.retain===!1)return;let r=a-s;n.length>r&&(n=n.subarray(0,Math.max(0,r)),c=!0),n.length>0&&(o.push(n),s+=n.length),s>=a&&!l&&(l=!0,t.onLimit?.())},_=()=>{if(f!==void 0){let e=f;f=void 0;try{URL.revokeObjectURL(e)}catch{}}},v=()=>{if(h)return h;d=!0,_(),m&&(m.port.onmessage=null);try{p?.disconnect(),m?.disconnect()}catch{}return h=(async()=>{try{i.state!==`closed`&&await i.close()}catch{}})(),h},y=(async()=>{f=URL.createObjectURL(new Blob([Xe],{type:`text/javascript`}));try{await i.audioWorklet.addModule(f)}finally{_()}d||(p=i.createMediaStreamSource(e),m=new AudioWorkletNode(i,Ye,{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1]}),m.port.onmessage=g,p.connect(m),m.connect(i.destination),i.state===`suspended`&&await i.resume())})();y.catch(()=>void 0);let b;return{ready:y,stop(){return b??=(async()=>{try{await y}catch(e){throw await v(),new _e(`setup_failed`,`PCM capture could not start`,e)}if(await v(),u)throw new _e(`cancelled`,`PCM capture was cancelled`);let e=new Float32Array(s),t=0;for(let n of o.splice(0))e.set(n,t),t+=n.length;let r=Oe(e,i.sampleRate,n);return{samples:r,wav:Je(r,n),truncated:c}})(),b},cancel(){u||(u=!0,o.length=0,v())}}}var $e=16e3;function et(){return Ze()&&typeof navigator<`u`&&typeof navigator.mediaDevices?.getUserMedia==`function`}var tt=36e5;async function nt(e={}){let t=e.createCapture??Qe;if(!e.createCapture&&!et()&&!e.stream)throw new _e(`unsupported`,`Hands-free capture needs the microphone API and Web Audio`);let n=!e.stream,r=e.stream??await navigator.mediaDevices.getUserMedia(e.constraints??{audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}}),i={speechstart:new Set,speechend:new Set,level:new Set},a=(e,t)=>{for(let n of[...i[e]])try{n(t)}catch{}},o,s=!1,c=!1,l=0,u=Math.max(0,e.resumeGuardMs??350),d=()=>{if(n)for(let e of r.getTracks())e.stop()},f;try{f=t(r,{sampleRate:$e,maxDurationMs:tt,retain:!1,onSamples:(t,n)=>{if(!s&&!c){if(l>0){l-=t.length/n*1e3;return}o??=Ve({...e,sampleRate:n,onSpeaking:e=>{e&&a(`speechstart`,{})},onLevel:e=>a(`level`,{level:e}),onUtterance:e=>{let t=Oe(e.pcm,e.sampleRate,$e);a(`speechend`,{samples:t,sampleRate:$e,durationMs:e.durationMs,reason:e.reason})}}),o.push(t)}}})}catch(e){throw d(),e}if(f.ready)try{await f.ready}catch(e){throw s=!0,f.cancel(),d(),new _e(`setup_failed`,`Hands-free capture could not start`,e)}let p=async e=>{s||(e&&o?.flush(),s=!0,f.cancel(),d())};return{on(e,t){let n=i[e];return n.add(t),()=>{n.delete(t)}},get speaking(){return o?.speaking??!1},get suspended(){return c},suspend(){s||c||(c=!0,l=0,o?.discard(),a(`level`,{level:0}))},resume(){!s&&c&&(c=!1,l=u)},stop:()=>p(!0),cancel:()=>{p(!1)}}}var rt=e=>{let t=null,n=!1,r=!1,i=!1;return{async start(){let a=await nt({...e.vad,...e.constraints?{constraints:e.constraints}:{}});if(n||r){a.cancel();return}t=a,i&&a.suspend(),a.on(`speechstart`,()=>e.onSpeaking?.(!0)),a.on(`level`,({level:t})=>e.onLevel?.(t)),a.on(`speechend`,t=>{e.onSpeaking?.(!1),e.onUtterance({pcm:t.samples,sampleRate:t.sampleRate,durationMs:t.durationMs,reason:t.reason})})},suspend(){i=!0,t?.suspend(),e.onSpeaking?.(!1)},resume(){i=!1,t?.resume()},stop(){r=!0;let n=t;t=null,n?.stop().catch(t=>{e.onError?.(t instanceof Error?t:Error(String(t)))})},cancel(){n=!0,t?.cancel(),t=null}}};function it(e){return he({model:e,createWorker:()=>new Ce,loadSpeech:()=>M(()=>import(`./iET62IRm.js`),__vite__mapDeps([0,1,2]),import.meta.url)})}var at=[`material`,`glass`,`studio`,`smrt`,`happyvertical`],ot=`@happyvertical/smrt-commerce:`,st={currency:[`Order`,`PurchaseOrder`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${ot}${e}`,field:`currency`})),taxRate:[`InvoiceLineItem`,`ContractLineItem`].map(e=>({model:`${ot}${e}`,field:`taxRate`})),paymentTerms:[...[`Order`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${ot}${e}`,field:`terms`})),{model:`${ot}Customer`,field:`paymentTerms`}]},ct={id:`more`,label:`More`},lt=/^@[^/]+\/(?:smrt-)?([^:]+):(.+)$/;function ut(e,t){let n=e.models.find(e=>e.id===t);if(n)return{packageId:n.packageId,name:n.name};let r=lt.exec(t);return r?{packageId:r[1],name:r[2]}:{packageId:`unknown`,name:t}}var dt=(e,t,n)=>`item:${e}:${t}${n?`:${n}`:``}`,ft=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase()),pt=(e,t)=>ft(ut(e,t).name);function mt(e,t){let n=new Map(e.recipes.map(e=>[e.id,e])),r=new Map;for(let i of[...t.recipes].sort()){let t=n.get(i);if(!t)continue;let a=t.section??{id:t.group?.id??t.id,label:t.group?.label??t.label},o=`section:${a.id}`,s=r.get(o)??{id:o,label:a.label,items:[]};for(let n of t.nav){let{packageId:t,name:r}=ut(e,n.model),i=dt(t,r,n.key);s.items.some(e=>e.id===i)||s.items.push({id:i,label:n.label})}r.set(o,s)}let i=[...r.values()].filter(e=>e.items.length>0),a=new Set(e.models.filter(e=>e.exposed!==!1).map(e=>e.id)),o=t.features.filter(e=>a.has(e));return o.length&&i.push({id:`section:${ct.id}`,label:ct.label,items:o.map(t=>{let{packageId:n,name:r}=ut(e,t);return{id:dt(n,r),label:ft(r)}})}),i}var ht=(e,t)=>{if(!t?.length)return e;let n=e=>{let n=t.indexOf(e);return n<0?2**53-1:n};return[...e].sort((e,t)=>n(e.id)-n(t.id))};function gt(e,t){let n=t.layout,r=mt(e,t).map(e=>({id:e.id,label:e.label,defaultLabel:e.label,custom:!1,hidden:!1,items:e.items.map(e=>({id:e.id,label:e.label,defaultLabel:e.label,hidden:!1}))}));for(let e of n?.customSections??[])r.some(t=>t.id===e.id)||r.push({id:e.id,label:e.label,defaultLabel:e.label,custom:!0,hidden:!1,items:[]});for(let[e,t]of Object.entries(n?.moved??{})){let n=r.find(e=>e.id===t);if(n)for(let t of r){let r=t.items.findIndex(t=>t.id===e);r>=0&&t!==n&&n.items.push(...t.items.splice(r,1))}}let i=new Set(n?.hidden??[]);for(let e of r){let t=n?.sections?.[e.id]?.label?.trim();t&&!e.custom&&(e.label=t),e.hidden=i.has(e.id),e.items=ht(e.items,n?.itemOrder?.[e.id]);for(let t of e.items){let e=n?.items?.[t.id]?.label?.trim();e&&(t.label=e),t.hidden=i.has(t.id)}}return ht(r.filter(e=>e.custom||e.items.length>0),n?.sectionOrder)}var _t=(e,t)=>e.models.find(e=>e.id===t),vt=e=>{let t={...e};for(let e of[`hidden`,`customSections`,`sectionOrder`])t[e]?.length||delete t[e];for(let e of[`sections`,`items`,`itemOrder`,`moved`,`panels`,`placements`])t[e]&&Object.keys(t[e]).length===0&&delete t[e];return Object.keys(t).length>1?t:void 0};function yt(e,t,n){let r=e?structuredClone(e):{version:1},i=n.trim();if(t.custom)return i?(r.customSections=r.customSections?.map(e=>e.id===t.id?{...e,label:i}:e),vt(r)):e;let a={...r.sections??{}},o={...a[t.id]??{}};return!i||i===t.defaultLabel?delete o.label:o.label=i,Object.keys(o).length?a[t.id]=o:delete a[t.id],r.sections=a,vt(r)}function bt(e,t,n){let r=e?structuredClone(e):{version:1},i=n?.trim()??``,a={...r.items??{}},o={...a[t.id]??{}};return!i||i===t.defaultLabel?delete o.label:o.label=i,Object.keys(o).length?a[t.id]=o:delete a[t.id],r.items=a,vt(r)}function xt(e,t,n){let r=e?structuredClone(e):{version:1},i=(r.hidden??[]).filter(e=>e!==t);return r.hidden=n?[...i,t]:i,vt(r)}var St=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,Ct=new Set([`basic`,`advanced`,`hidden`]),wt=new Set([`api`,`mcp`,`cli`]),Tt=new Set([`light`,`dark`,`system`]),R=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Et=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Dt=(e,t)=>R(e)&&!Object.hasOwn(e,`__proto__`)&&Object.values(e).every(t);function Ot(e,t,n){if(!R(e))return n.push(`${t} must be an object`);for(let r of[`objectRef`,`fieldName`])(typeof e[r]!=`string`||!e[r])&&n.push(`${t}.${r} must be a non-empty string`);e.scopeType!==`app`&&n.push(`${t}.scopeType must be "app"`);for(let r of[`defaultValue`,`help`,`label`]){let i=e[r];i!=null&&typeof i!=`string`&&n.push(`${t}.${r} must be a string or null`)}let r=e.visibility;r!=null&&!(typeof r==`string`&&Ct.has(r))&&n.push(`${t}.visibility must be basic, advanced or hidden`);let i=e.displayOrder;i!=null&&!(typeof i==`number`&&Number.isFinite(i))&&n.push(`${t}.displayOrder must be a finite number`),e.locked!=null&&typeof e.locked!=`boolean`&&n.push(`${t}.locked must be a boolean`)}function kt(e,t){if(!R(e)||e.version!==1)return t.push(`layout must be an object with version 1`);for(let n of[`sectionOrder`,`hidden`])e[n]!==void 0&&!Et(e[n])&&t.push(`layout.${n} must be a list of strings`);for(let n of[`itemOrder`,`moved`,`placements`]){let r=e[n];r!==void 0&&((n===`itemOrder`?Dt(r,Et):Dt(r,e=>typeof e==`string`))||t.push(n===`itemOrder`?`layout.itemOrder must map ids to lists of strings`:`layout.${n} must map ids to strings`))}for(let n of[`sections`,`items`,`panels`])e[n]!==void 0&&!Dt(e[n],e=>R(e))&&t.push(`layout.${n} must map ids to objects`);let n=e.customSections;n!==void 0&&!(Array.isArray(n)&&n.every(e=>R(e)&&typeof e.id==`string`&&typeof e.label==`string`))&&t.push(`layout.customSections must be a list of { id, label }`)}function At(e,t){if(!R(e))return t.push(`theme must be an object`);e.preset!==void 0&&typeof e.preset!=`string`&&t.push(`theme.preset must be a string`),e.colorScheme!==void 0&&!(typeof e.colorScheme==`string`&&Tt.has(e.colorScheme))&&t.push(`theme.colorScheme must be light, dark or system`);let n=e.custom;n!==void 0&&(!R(n)||typeof n.primary!=`string`?t.push(`theme.custom must be an object with a string primary`):/^#[0-9a-fA-F]{6}$/.test(n.primary)?n.fontFamily!==void 0&&typeof n.fontFamily!=`string`&&t.push(`theme.custom.fontFamily must be a string`):t.push(`theme.custom.primary must be a hex colour like #c2410c`))}function jt(e,t,n){if(!R(e)||e.version!==1)return n.push(`${t} must be an object with version 1`);for(let r of[`order`,`removed`])e[r]!==void 0&&!Et(e[r])&&n.push(`${t}.${r} must be a list of strings`);let r=e.added;r!==void 0&&!(Array.isArray(r)&&r.every(e=>R(e)))&&n.push(`${t}.added must be a list of widgets`),e.changed!==void 0&&!Dt(e.changed,e=>R(e))&&n.push(`${t}.changed must map widget ids to objects`)}function Mt(e,t={}){if(!R(e))return{ok:!1,errors:[`expected a JSON object`]};let n=[],r=[],{$schema:i,version:a}=e;i!==void 0&&i!==`https://s-m-r-t.dev/schemas/cookbook/v1.json`&&i!==`https://s-m-r-t.dev/schemas/blueprint/v1.json`&&n.push(`$schema must be ${St}`),a===void 0?n.push(`version is required`):typeof a!=`number`||!Number.isInteger(a)?n.push(`version must be a whole number`):a>1?n.push(`version ${a} is newer than this reader understands (1)`):a!==1&&n.push(`version ${a} is not supported`),i===`https://s-m-r-t.dev/schemas/blueprint/v1.json`&&r.push(`$schema uses the legacy blueprint URL; migrated`);for(let t of[`name`,`description`])e[t]!==void 0&&typeof e[t]!=`string`&&n.push(`${t} must be a string`);let o=[];if(!Et(e.recipes))n.push(`recipes must be a list of recipe ids`);else if(o=[...new Set(e.recipes)].sort(),t.recipes){let e=new Set(t.recipes);for(let t of o)e.has(t)||n.push(`recipes: unknown recipe "${t}"`)}let s=[];e.features!==void 0&&(Et(e.features)?(s=[...new Set(e.features)].sort(),s.length!==e.features.length&&r.push(`features listed a model more than once; deduplicated`)):n.push(`features must be a list of model names`));let c=[];if(!Array.isArray(e.policies))n.push(`policies must be a list`);else for(let[t,r]of e.policies.entries())Ot(r,`policies[${t}]`,n),c.push(r);if(e.exposure!==void 0&&(Dt(e.exposure,e=>Et(e)&&e.every(e=>wt.has(e)))||n.push(`exposure must map model names to lists of api, mcp or cli`)),e.layout!==void 0&&kt(e.layout,n),e.theme!==void 0&&At(e.theme,n),e.overviews!==void 0){if(!R(e.overviews)||Object.hasOwn(e.overviews,`__proto__`))n.push(`overviews must map overview ids to overrides`);else for(let[t,r]of Object.entries(e.overviews))jt(r,`overviews.${t}`,n)}if(n.length)return{ok:!1,errors:n};let l={...e,$schema:St,version:1,recipes:o,features:s,policies:c};return e.exposure!==void 0&&(l.exposure=e.exposure),e.layout!==void 0&&(l.layout=e.layout),e.theme!==void 0&&(l.theme=e.theme),e.overviews!==void 0&&(l.overviews=e.overviews),{ok:!0,cookbook:l,warnings:r}}var z=e=>e===void 0?e:structuredClone(e),Nt=(e,t)=>JSON.stringify(e??null)===JSON.stringify(t??null),Pt=()=>({$schema:St,version:1,recipes:[],features:[],policies:[]});function Ft(e){return!e.recipes.length&&!e.features.length&&!e.policies.length&&!Object.keys(e.exposure??{}).length&&!e.layout&&!e.theme&&!Object.keys(e.overviews??{}).length}var It=e=>[...new Set(e)].sort();function Lt(e){let t=new Set([`$schema`,`version`,`name`,`description`,`recipes`,`features`,`policies`,`exposure`,`layout`,`theme`,`overviews`]),n={$schema:St,version:1,...e.name?{name:e.name}:{},...e.description?{description:e.description}:{},recipes:It(e.recipes),features:It(e.features),policies:[...e.policies].sort((e,t)=>e.objectRef.localeCompare(t.objectRef)||e.fieldName.localeCompare(t.fieldName)).map(e=>({...e}))},r=Object.fromEntries(Object.keys(e.exposure??{}).sort().filter(t=>e.exposure?.[t]?.length).map(t=>[t,[...e.exposure?.[t]??[]].sort()]));Object.keys(r).length&&(n.exposure=r),e.layout&&(n.layout=z(e.layout));let i=on(e.theme);i&&(n.theme=i);let a=Object.entries(e.overviews??{}).sort(([e],[t])=>e<t?-1:+(e>t));a.length&&(n.overviews=Object.fromEntries(a.map(([e,t])=>[e,z(t)])));for(let[r,i]of Object.entries(e))t.has(r)||(n[r]=z(i));return n}var Rt=e=>new Map(e.recipes.map(e=>[e.id,e]));function zt(e,t){let n=new Set,r=e=>{let i=t.get(e);if(i&&!n.has(e)){n.add(e);for(let e of i.requires)r(e)}};for(let t of e)r(t);let i=!0;for(;i;){i=!1;for(let e of[...n])for(let a of t.get(e)?.requiresAny??[]){if(a.some(e=>n.has(e)))continue;let e=a.find(e=>t.has(e));e&&(r(e),i=!0)}}return It(n)}function Bt(e,t){let n=Rt(e);return new Set([...t.recipes.flatMap(e=>n.get(e)?.models??[]),...t.features])}function Vt(e){return e.settingTargets??st}function Ht(e,t){return Object.values(Vt(e)).some(e=>e.some(e=>e.model===t.objectRef&&e.field===t.fieldName))}function Ut(e,t){let n=Bt(e,t),r={...t,policies:t.policies.filter(t=>n.has(t.objectRef)||Ht(e,t))};if(t.exposure){let e=Object.fromEntries(Object.entries(t.exposure).filter(([e])=>n.has(e)));Object.keys(e).length?r.exposure=e:delete r.exposure}return r}var Wt=(e,t)=>{let n=Rt(e);return t.recipes.filter(e=>n.has(e))},Gt=(e,t)=>{let n=Rt(e);return t.recipes.filter(e=>!n.has(e))};function Kt(e,t){let n=new Set(e),r=new Set(t);return{added:t.filter(e=>!n.has(e)),removed:e.filter(e=>!r.has(e))}}function qt(e,t,n){let r=Rt(e),i=Wt(e,t),a=zt([...i,...n],r);return{doc:{...t,recipes:It([...a,...Gt(e,t)])},changes:{...Kt(i,a),kept:[]}}}function Jt(e,t,n){let r=Rt(e),i=Wt(e,t),a=new Set(n),o=zt(i.filter(e=>!a.has(e)),r),s=Ut(e,{...t,recipes:It([...o,...Gt(e,t)])}),{added:c,removed:l}=Kt(i,o);return{doc:s,changes:{added:c,removed:l,kept:n.filter(e=>o.includes(e)&&i.includes(e))}}}function Yt(e,t,n,r){let i=new Set(t.features);for(let e of n)r?i.add(e):i.delete(e);let a=[...i].sort(),o={...t,features:a};return r||(o=Ut(e,o)),{doc:o,changes:{...Kt(t.features,a),kept:[]}}}var Xt=(e,t)=>({added:[...e.added,...t.added],removed:[...e.removed,...t.removed],kept:[...e.kept,...t.kept]}),Zt={currency:`USD`,taxRate:0,paymentTerms:``},Qt=[`currency`,`taxRate`,`paymentTerms`];function $t(e){if(e?.defaultValue!==void 0&&e.defaultValue!==null)try{return JSON.parse(e.defaultValue)}catch{return}}var en=(e,t,n)=>e.find(e=>e.scopeType===`app`&&e.objectRef===t&&e.fieldName===n);function tn(e,t){let n=Vt(e),r={...Zt},i=(e,r)=>{for(let{model:i,field:a}of n[e]){let e=$t(en(t.policies,i,a));if(typeof e===r)return e}},a=i(`currency`,`string`),o=i(`taxRate`,`number`),s=i(`paymentTerms`,`string`);return typeof a==`string`&&(r.currency=a),typeof o==`number`&&(r.taxRate=o),typeof s==`string`&&(r.paymentTerms=s),r}var nn=e=>e==null||e===``;function rn(e,t,n,r){let i=Rt(e);for(let e of t.recipes){let t=i.get(e)?.options?.[n]?.fields?.[r];if(t&&`default`in t)return t.default}return _t(e,n)?.fields?.find(e=>e.name===r)?.default}function an(e,t,n){let r=Vt(e),i=t.policies.map(e=>({...e}));for(let a of Qt){let o=n[a],s=a===`paymentTerms`?String(o).trim():a===`currency`?String(o).trim().toUpperCase():o;for(let{model:n,field:o}of r[a]){let r=rn(e,t,n,o),c=!nn(s)&&!(!nn(r)&&r===s)&&!(nn(r)&&a===`taxRate`&&s===0),l=en(i,n,o);if(c){let e=JSON.stringify(s);l?l.defaultValue=e:i.push({objectRef:n,fieldName:o,scopeType:`app`,defaultValue:e})}else l&&(delete l.defaultValue,Object.keys(l).length<=3&&(i=i.filter(e=>e!==l)))}}return{...t,policies:i}}function on(e){if(!e)return;let t={};return e.preset&&(t.preset=e.preset),e.colorScheme&&(t.colorScheme=e.colorScheme),e.custom&&(t.custom={...e.custom}),Object.keys(t).length?t:void 0}function sn(e){let t=e?.colorScheme??`system`,n=e?.custom?`brand colour ${e.custom.primary}`:e?.preset??`smrt`;return t===`system`?n:`${n}, ${t}`}function cn(e,t){let n={...e.theme??{}};t.preset&&(n.preset=t.preset,delete n.custom),t.primary&&(n.custom={primary:t.primary.toLowerCase(),...e.theme?.custom?.fontFamily?{fontFamily:e.theme.custom.fontFamily}:{}}),t.colorScheme&&(n.colorScheme=t.colorScheme);let r=on(n),i={...e};return r?i.theme=r:delete i.theme,i}function ln(e,t){let n=[],r=(e,t,r,i)=>n.push({severity:e,code:t,path:r,message:i}),i=Mt(t);if(!i.ok){for(let e of i.errors)r(`error`,`invalid_document`,``,e);return n}for(let e of i.warnings)r(`warning`,`migrated`,``,e);let a=i.cookbook,o=Rt(e);for(let[e,t]of a.recipes.entries())o.has(t)||r(`error`,`unknown_recipe`,`recipes[${e}]`,`Unknown recipe "${t}".`);let s=new Set(zt(a.recipes,o));for(let e of s)a.recipes.includes(e)||r(`error`,`missing_requirement`,`recipes`,`A recipe needs "${e}", which is not listed.`);for(let[t,n]of a.features.entries()){let i=_t(e,n);i?i.exposed===!1&&r(`error`,`model_not_exposed`,`features[${t}]`,`${n} cannot be added as a feature.`):r(`error`,`unknown_model`,`features[${t}]`,`Unknown model "${n}".`)}let c=Bt(e,a);for(let[t,n]of a.policies.entries()){let i=`policies[${t}]`,a=_t(e,n.objectRef);if(!a){r(`error`,`unknown_model`,`${i}.objectRef`,`Unknown model "${n.objectRef}".`);continue}a.fields&&!a.fields.some(e=>e.name===n.fieldName&&!e.system)&&r(`error`,`unknown_field`,`${i}.fieldName`,`${a.name} has no field "${n.fieldName}".`),!c.has(n.objectRef)&&!Ht(e,n)&&r(`warning`,`policy_not_covered`,i,`${a.name} is not in the app, so this row has no effect.`)}for(let t of Object.keys(a.exposure??{}))_t(e,t)||r(`error`,`unknown_model`,`exposure.${t}`,`Unknown model "${t}".`);let l=e.themePresets??at;if(a.theme?.preset&&!l.includes(a.theme.preset)&&r(`error`,`unknown_preset`,`theme.preset`,`Unknown theme preset "${a.theme.preset}".`),a.layout){let t=gt(e,{...a,layout:void 0}),n=new Set([...t.flatMap(e=>[e.id,...e.items.map(e=>e.id)]),...(a.layout.customSections??[]).map(e=>e.id)]),i=[...(a.layout.hidden??[]).map((e,t)=>[`layout.hidden[${t}]`,e]),...Object.keys(a.layout.sections??{}).map(e=>[`layout.sections.${e}`,e]),...Object.keys(a.layout.items??{}).map(e=>[`layout.items.${e}`,e]),...(a.layout.sectionOrder??[]).map((e,t)=>[`layout.sectionOrder[${t}]`,e])];for(let[e,t]of i)n.has(t)||r(`warning`,`unknown_layout_id`,e,`The menu has no section or entry "${t}".`)}return n}var B=(e,t,n={})=>({ok:!1,error:{code:e,message:t,...n}}),V=(e,t=``,n={})=>({ok:!0,state:e,summary:t,...n}),un=`This replaces the recipes, options, menu and look. Send replace: true to confirm.`,dn=e=>e.join(`, `);function fn(e){return`${(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`my-app`}.cookbook.json`}var pn=e=>`${JSON.stringify(e,null,2)}\n`;function mn(e,t){let n=new Map(e.recipes.map(e=>[e.id,e])),r=t.recipes.filter(e=>n.has(e)),i=t.recipes.filter(e=>!n.has(e));return Lt(Ut(e,{...z(t),recipes:[...zt(r,n),...i]}))}function hn(e,t){return t?e.cookbooks?.find(e=>e.id===t)?.name:void 0}var gn=(e,t)=>{let n=t=>e.recipes.find(e=>e.id===t)?.label??t;return[t.added.length?`Added ${dn(t.added.map(n))}.`:``,t.removed.length?`Removed ${dn(t.removed.map(n))}.`:``,t.kept.length?`Kept ${dn(t.kept.map(n))} (needed).`:``].filter(Boolean).join(` `)},_n=(e,t)=>[t.added.length?`Added ${dn(t.added.map(t=>pt(e,t)))}.`:``,t.removed.length?`Removed ${dn(t.removed.map(t=>pt(e,t)))}.`:``].filter(Boolean).join(` `),vn=e=>`${Number((e*100).toFixed(4))}%`,H=(e,t)=>({...e,doc:Lt(t)});function yn(e,t){let n=gt(e,t);return{sections:n,section:e=>n.find(t=>t.id===e),item:e=>n.flatMap(e=>e.items).find(t=>t.id===e)}}var bn=(e,t)=>{let n={...e};return t?n.layout=t:delete n.layout,n},xn={add_recipes(e,t,{ids:n}){let r=n.filter(t=>!e.recipes.some(e=>e.id===t));if(r.length)return B(`not_found`,`No such recipe: ${dn(r)}.`,{path:`input.ids`});let{doc:i,changes:a}=qt(e,t.doc,n);return V(H(t,i),gn(e,a),{changes:a})},remove_recipes(e,t,{ids:n}){let{doc:r,changes:i}=Jt(e,t.doc,n);return V(H(t,r),gn(e,i),{changes:i})},add_features(e,t,{ids:n}){let r=n.filter(t=>!_t(e,t)?.exposed);if(r.length)return B(`not_found`,`No such model to add: ${dn(r)}.`,{path:`input.ids`});let{doc:i,changes:a}=Yt(e,t.doc,n,!0);return V(H(t,i),_n(e,a),{changes:a})},remove_features(e,t,{ids:n}){let{doc:r,changes:i}=Yt(e,t.doc,n,!1);return V(H(t,r),_n(e,i),{changes:i})},add_cookbook(e,t,{id:n}){let r=e.cookbooks?.find(e=>e.id===n);if(!r)return B(`not_found`,`No cookbook "${n}".`,{path:`input.id`});let i=qt(e,t.doc,r.document.recipes),a=Yt(e,i.doc,r.document.features.filter(t=>_t(e,t)?.exposed),!0),o=Xt(i.changes,a.changes);return V(H(t,a.doc),o.added.length?`Added the ${r.name} cookbook.`:``,{changes:o})},remove_cookbook(e,t,{id:n}){let r=e.cookbooks?.find(e=>e.id===n);if(!r)return B(`not_found`,`No cookbook "${n}".`,{path:`input.id`});let i=Jt(e,t.doc,r.document.recipes),a=Yt(e,i.doc,r.document.features,!1),o=Xt(i.changes,a.changes);return V(H(t,a.doc),[gn(e,i.changes),_n(e,a.changes)].filter(Boolean).join(` `),{changes:o})},apply_cookbook(e,t,{id:n,replace:r}){let i=e.cookbooks?.find(e=>e.id===n);return i?!r&&!Ft(t.doc)?B(`confirmation_required`,un):V({doc:mn(e,i.document),applied:n},`${i.name} set up.`):B(`not_found`,`No cookbook "${n}".`,{path:`input.id`})},import_cookbook(e,t,{document:n,replace:r}){let i=Mt(n);if(!i.ok)return B(`invalid_input`,i.errors[0]??`Not a cookbook.`,{path:`input.document`,details:{errors:i.errors}});if(!r&&!Ft(t.doc))return B(`confirmation_required`,un);let a=i.cookbook.recipes.length;return V({doc:mn(e,i.cookbook),applied:null},`Imported ${a} ${a===1?`recipe`:`recipes`}.`,i.warnings.length?{warnings:i.warnings}:{})},set_settings(e,t,n){let r=tn(e,t.doc),i={...r},a=[];if(n.currency!==void 0){let t=n.currency.trim().toUpperCase();if(e.currencies&&!e.currencies.includes(t))return B(`invalid_input`,`${t} is not a known currency.`,{path:`input.currency`});if(!/^[A-Z]{3}$/.test(t))return B(`invalid_input`,`currency must be a three-letter code.`,{path:`input.currency`});t!==r.currency&&(i.currency=t,a.push(`currency ${t}`))}if(n.taxRate!==void 0){let e=Number((n.taxRate/100).toFixed(6));e!==r.taxRate&&(i.taxRate=e,a.push(`tax ${vn(e)}`))}if(n.paymentTerms!==void 0){let e=[...n.paymentTerms].map(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127?` `:e).join(``).trim();if(!e)return B(`invalid_input`,`paymentTerms must not be empty.`,{path:`input.paymentTerms`});e!==r.paymentTerms&&(i.paymentTerms=e,a.push(`terms ${e}`))}if(!a.length)return V(t);let o=a.join(`, `);return V(H(t,an(e,t.doc,i)),`${o[0].toUpperCase()}${o.slice(1)}.`)},set_policy(e,t,n){let r=_t(e,n.model);if(!r)return B(`not_found`,`No such model: ${n.model}.`,{path:`input.model`});if(r.fields){let e=r.fields.find(e=>e.name===n.field);if(!e||e.system)return B(`not_found`,`${r.name} has no field ${n.field}.`,{path:`input.field`})}if(!Bt(e,t.doc).has(r.id))return B(`not_found`,`${ft(r.name)} is not in the app yet; add its recipe or feature first.`,{path:`input.model`});if(t.doc.recipes.some(t=>e.recipes.find(e=>e.id===t)?.options?.[r.id]?.fields?.[n.field]?.locked))return B(`failed`,`${n.field} is locked by its recipe.`,{path:`input.field`});let i=t.doc.policies.map(e=>({...e})),a=i.find(e=>e.objectRef===r.id&&e.fieldName===n.field),o=a??{objectRef:r.id,fieldName:n.field,scopeType:`app`},s=JSON.stringify(o);for(let e of[`visibility`,`label`,`help`]){let t=n[e];t!==void 0&&(t===null?delete o[e]:o[e]=t)}if(n.defaultValue!==void 0){if(n.defaultValue===null)delete o.defaultValue;else{let e=JSON.stringify(n.defaultValue);if(e===void 0)return B(`invalid_input`,`defaultValue is not a JSON value.`,{path:`input.defaultValue`});o.defaultValue=e}}let c=Object.keys(o).length<=3;if(JSON.stringify(o)===s||c&&!a)return V(t);let l=i.filter(e=>e!==a);return V(H(t,{...t.doc,policies:c?l:[...l,o]}),`Updated ${ft(r.name)} ${n.field}.`)},set_theme(e,t,n){let r=cn(t.doc,n);return JSON.stringify(Lt(r).theme??null)===JSON.stringify(t.doc.theme??null)?V(t):V(H(t,r),`Theme: ${sn(Lt(r).theme)}.`)},reset_theme(e,t){if(!t.doc.theme)return V(t);let n={...t.doc};return delete n.theme,V(H(t,n),`Theme: default.`)},set_name(e,t,n){let r={...t.doc};for(let e of[`name`,`description`]){let t=n[e];if(t===void 0)continue;let i=t?.trim();i?r[e]=i:delete r[e]}return JSON.stringify(Lt(r))===JSON.stringify(t.doc)?V(t):V(H(t,r),n.name?`Named the app ${n.name.trim()}.`:`Updated the app details.`)},rename_section(e,t,{id:n,label:r}){let i=yn(e,t.doc).section(n);if(!i)return B(`not_found`,`No menu section "${n}".`,{path:`input.id`});let a=yt(t.doc.layout,i,r);return JSON.stringify(a??null)===JSON.stringify(t.doc.layout??null)?V(t):V(H(t,bn(t.doc,a)),`Renamed the section to ${r.trim()}.`)},rename_item(e,t,{id:n,label:r}){let i=yn(e,t.doc).item(n);if(!i)return B(`not_found`,`No menu entry "${n}".`,{path:`input.id`});let a=bt(t.doc.layout,i,r);return JSON.stringify(a??null)===JSON.stringify(t.doc.layout??null)?V(t):V(H(t,bn(t.doc,a)),r?`Renamed the entry to ${r.trim()}.`:`Entry name restored.`)},hide(e,t,{id:n}){let r=yn(e,t.doc);return r.section(n)??r.item(n)?t.doc.layout?.hidden?.includes(n)?V(t):V(H(t,bn(t.doc,xt(t.doc.layout,n,!0))),`Hidden.`):B(`not_found`,`No menu section or entry "${n}".`,{path:`input.id`})},show(e,t,{id:n}){let r=yn(e,t.doc);return!r.section(n)&&!r.item(n)?B(`not_found`,`No menu section or entry "${n}".`,{path:`input.id`}):t.doc.layout?.hidden?.includes(n)?V(H(t,bn(t.doc,xt(t.doc.layout,n,!1))),`Shown.`):V(t)},validate(e,t){let n=ln(e,t.doc);return V(t,``,{data:{ok:!n.some(e=>e.severity===`error`),diagnostics:n}})},export_cookbook(e,t,{name:n}){return V(t,``,{data:{fileName:fn(n??t.doc.name??hn(e,t.applied)),text:pn(t.doc),cookbook:z(t.doc)}})}};function Sn(e,t,n,r){let i=xn[n];return i?i(e,t,r):B(`unknown_command`,`No command "${n}".`)}var Cn=(e,t)=>({type:`array`,description:e,minItems:1,maxItems:50,items:t?.length?{type:`string`,enum:[...t]}:{type:`string`,minLength:1}}),wn=(e,t={})=>({type:`string`,description:e,minLength:1,maxLength:200,...t}),U=(e,t=[])=>({type:`object`,properties:e,...t.length?{required:t}:{},additionalProperties:!1});function Tn(e){let t=e.recipes.map(e=>e.id),n=(e.cookbooks??[]).map(e=>e.id),r=e.themePresets??at,i=e=>({type:`string`,description:e,...n.length?{enum:[...n]}:{minLength:1}}),a=e=>wn(`The id of ${e}, as the plan snapshot's "sections" lists it.`),o={type:`boolean`,description:`Confirm replacing what is there.`};return[{name:`add_recipes`,description:`Switch recipes on. Recipes they require come along. Returns what was added.`,inputSchema:U({ids:Cn(`Recipe ids to add.`,t)},[`ids`])},{name:`remove_recipes`,description:`Switch recipes off. A recipe another one needs is kept and reported.`,inputSchema:U({ids:Cn(`Recipe ids to remove.`,t)},[`ids`])},{name:`add_features`,description:"Add single models no recipe covers, by qualified name (`@scope/pkg:Class`).",inputSchema:U({ids:Cn(`Qualified model names to add.`)},[`ids`])},{name:`remove_features`,description:`Remove single models added with add_features.`,inputSchema:U({ids:Cn(`Qualified model names to remove.`)},[`ids`])},{name:`add_cookbook`,description:`Add the recipes and features of a ready-made cookbook to the current app. Nothing is replaced.`,inputSchema:U({id:i(`The cookbook to add.`)},[`id`])},{name:`remove_cookbook`,description:`Remove the recipes and features a ready-made cookbook adds. Ones another recipe needs are kept.`,inputSchema:U({id:i(`The cookbook to remove.`)},[`id`])},{name:`apply_cookbook`,description:`Select a ready-made cookbook: replace the whole app (recipes, options, menu, theme) with it. When the app has anything in it, replace must be true.`,inputSchema:U({id:i(`The cookbook to set up.`),replace:o},[`id`])},{name:`import_cookbook`,description:`Replace the whole app with a cookbook document (version 1). Checked strictly; nothing is applied if it is invalid. When the app has anything in it, replace must be true.`,inputSchema:U({document:{type:`object`,description:`A cookbook document, version 1.`},replace:o},[`document`])},{name:`set_settings`,description:`Change app settings: currency, default tax rate (percent), default payment terms. Applies to new records only.`,inputSchema:U({currency:e.currencies?.length?{type:`string`,description:`ISO 4217 code, e.g. CAD.`,enum:[...e.currencies]}:{type:`string`,description:`ISO 4217 code, e.g. CAD.`,pattern:`^[A-Z]{3}$`},taxRate:{type:`number`,description:`Default tax rate in percent, 0 to 100.`,minimum:0,maximum:100},paymentTerms:{type:`string`,description:`Default payment terms, e.g. "Net 30".`,minLength:1,maxLength:40}})},{name:`set_policy`,description:`Set one field's policy: default value, visibility, label or help. The model must be covered by a recipe or feature that is on. null clears a part.`,inputSchema:U({model:wn(`Qualified model name, e.g. @happyvertical/smrt-commerce:Order.`),field:wn(`The model field name.`),defaultValue:{description:`The default as a JSON value (a string, number or boolean). null clears it.`},visibility:{enum:[`basic`,`advanced`,`hidden`,null],description:`Whether the field shows in forms and lists.`},label:{type:[`string`,`null`],description:`A different label.`,maxLength:120},help:{type:[`string`,`null`],description:`Help text under the field.`,maxLength:400}},[`model`,`field`])},{name:`set_theme`,description:`Change the look: a preset, a brand colour, light or dark. A preset replaces a brand colour.`,inputSchema:U({preset:{enum:[...r],description:`A built-in theme.`},primary:{type:`string`,description:`Brand colour as #rrggbb.`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`,`system`],description:`Light, dark or follow the device.`}})},{name:`reset_theme`,description:`Go back to the default look.`,inputSchema:U({})},{name:`set_name`,description:`Name and describe the app. null clears a part.`,inputSchema:U({name:{type:[`string`,`null`],minLength:1,maxLength:60},description:{type:[`string`,`null`],minLength:1,maxLength:400}})},{name:`rename_section`,description:`Rename a menu section.`,inputSchema:U({id:a(`the section`),label:wn(`The new name.`,{maxLength:60})},[`id`,`label`])},{name:`rename_item`,description:`Rename a menu entry. A null label restores its own name.`,inputSchema:U({id:a(`the entry`),label:{type:[`string`,`null`],minLength:1,maxLength:60}},[`id`,`label`])},{name:`hide`,description:`Hide a menu section or entry. Nothing is deleted.`,inputSchema:U({id:a(`the section or entry`)},[`id`])},{name:`show`,description:`Show a hidden menu section or entry again.`,inputSchema:U({id:a(`the section or entry`)},[`id`])},{name:`validate`,description:`Check the current cookbook against the catalog and report typed diagnostics. Changes nothing.`,inputSchema:U({})},{name:`export_cookbook`,description:`The cookbook as a <name>.cookbook.json file (text in the result). Changes nothing.`,inputSchema:U({name:wn(`A name for the file.`,{maxLength:60})})},{name:`undo`,description:`Undo an earlier change by the undoId its receipt carried. Refused with a conflict when the plan changed since, unless force is true.`,inputSchema:U({undoId:wn(`The undoId from a receipt.`),force:{type:`boolean`,description:`Undo even after later edits.`}},[`undoId`])}]}function En(e){return{name:`run_batch`,description:`Run several commands as one atomic batch: all apply or none does. A failure names the command and leaves the plan unchanged.`,inputSchema:{type:`object`,properties:{id:{type:`string`,minLength:1,maxLength:200},expectedRevision:{type:`integer`,minimum:0},commands:{type:`array`,minItems:1,maxItems:50,items:{oneOf:Tn(e).map(e=>({type:`object`,properties:{name:{const:e.name},input:e.inputSchema},required:[`name`],additionalProperties:!1}))}}},required:[`commands`],additionalProperties:!1}}}var Dn=e=>e===null?`null`:Array.isArray(e)?`array`:Number.isInteger(e)?`integer`:typeof e;function On(e,t){let n=Dn(t);return n===e||e===`number`&&n===`integer`}function kn(e,t,n=`input`){let r=e=>({path:n,message:`${n} ${e}`}),i=e.type;if(i){let e=Array.isArray(i)?i:[i];if(!e.some(e=>On(e,t)))return r(`must be ${e.join(` or `)}`)}let a=e.enum;if(a&&!a.includes(t))return r(a.length>12?`is not a known value`:`must be one of ${a.map(e=>JSON.stringify(e)).join(`, `)}`);if(typeof t==`string`){let{minLength:n,maxLength:i,pattern:a}=e;if(n!==void 0&&t.length<n)return r(`must not be empty`);if(i!==void 0&&t.length>i)return r(`must be at most ${i} characters`);if(a&&!new RegExp(a).test(t))return r(`has the wrong format`)}if(typeof t==`number`){let{minimum:n,maximum:i}=e;if(!Number.isFinite(t))return r(`must be a finite number`);if(n!==void 0&&t<n)return r(`must be at least ${n}`);if(i!==void 0&&t>i)return r(`must be at most ${i}`)}if(Array.isArray(t)){let{minItems:i,maxItems:a,items:o}=e;if(i!==void 0&&t.length<i)return r(`needs at least ${i} item${i===1?``:`s`}`);if(a!==void 0&&t.length>a)return r(`takes at most ${a} items`);if(o)for(let[e,r]of t.entries()){let t=kn(o,r,`${n}[${e}]`);if(t)return t}}if(Dn(t)===`object`){let r=t,{properties:i,required:a,additionalProperties:o}=e;for(let e of a??[])if(r[e]===void 0)return{path:`${n}.${e}`,message:`${n}.${e} is required`};for(let[e,t]of Object.entries(r)){let r=i?.[e];if(!r){if(o===!1)return{path:`${n}.${e}`,message:`${n}.${e} is not an option of this command`};continue}if(t===void 0)continue;let a=kn(r,t,`${n}.${e}`);if(a)return a}}return null}function An(e){return Object.fromEntries(Tn(e).map(e=>[e.name,e.inputSchema]))}var W=(e,t,n={})=>({code:e,message:t,...n}),jn=e=>Array.isArray(e)?e.map(jn):e&&typeof e==`object`?Object.fromEntries(Object.keys(e).sort().map(t=>[t,jn(e[t])])):e,Mn=e=>{try{return JSON.stringify(jn(e))??`undefined`}catch{return`unserializable`}};function Nn(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return{ok:!1,error:W(`unknown_command`,`A command is an object: { name, input }.`)};let r=e,{name:i,input:a={}}=r;if(typeof i!=`string`||!Object.hasOwn(t,i))return{ok:!1,error:W(`unknown_command`,`Unknown command ${JSON.stringify(i)}.`)};for(let e of Object.keys(r))if(e!==`name`&&e!==`input`&&!n.includes(e))return{ok:!1,error:W(`invalid_input`,`${e} is not part of a command.`,{path:e})};let o=kn(t[i],a);return o?{ok:!1,error:W(`invalid_input`,o.message,{path:o.path})}:{ok:!0,name:i,input:a}}var Pn=e=>e===void 0||typeof e==`string`&&e.length>0&&e.length<=200?null:W(`invalid_input`,`id must be a non-empty string of at most 200 characters.`,{path:`id`}),Fn=e=>e===void 0||Number.isInteger(e)&&e>=0?null:W(`invalid_input`,`expectedRevision must be a whole number.`,{path:`expectedRevision`});function In(e){let{catalog:t}=e,n=An(t),r=Tn(t),i=En(t),a=e.maxJournal??500,o=e.maxUndo??20,s,c=0,l=new Map;if(e.state){let n=e.state,r=Mt(n.cookbook);if(!r.ok)throw Error(`Invalid saved cookbook: ${r.errors.join(`; `)}`);if(!Number.isInteger(n.revision)||n.revision<0)throw Error(`Invalid saved revision.`);s={doc:mn(t,r.cookbook),applied:n.applied??null},c=n.revision;for(let e of n.journal??[])l.set(e.id,z(e))}else if(e.cookbook!==void 0){let n=Mt(e.cookbook);if(!n.ok)throw Error(`Invalid cookbook: ${n.errors.join(`; `)}`);s={doc:mn(t,n.cookbook),applied:null}}else s={doc:mn(t,Pt()),applied:null};let u=new Map,d=[],f=0,p=new Map;function m(e,n){let{doc:r}=e,i=new Map(t.recipes.map(e=>[e.id,e])),a=tn(t,r),o=new Set(t.models.filter(e=>e.exposed!==!1).map(e=>e.id));return{version:1,revision:n,app:{name:r.name??hn(t,e.applied)??`my-app`,description:r.description??null,cookbook:e.applied},recipes:r.recipes.flatMap(e=>{let t=i.get(e);return t?[{id:e,label:t.label}]:[]}),features:r.features.filter(e=>o.has(e)),unavailable:[...r.recipes.filter(e=>!i.has(e)),...r.features.filter(e=>!o.has(e))],settings:{currency:a.currency,taxRate:Number((a.taxRate*100).toFixed(4)),paymentTerms:a.paymentTerms},theme:{text:sn(r.theme),preset:r.theme?.preset??null,primary:r.theme?.custom?.primary??null,colorScheme:r.theme?.colorScheme??`system`},sections:gt(t,r).map(e=>({id:e.id,label:e.label,hidden:e.hidden,items:e.items.map(e=>({id:e.id,label:e.label,hidden:e.hidden}))})),policies:r.policies.length,undo:[...d]}}let h=()=>m(s,c);function g(){for(let[e,t]of p)t!==c&&(p.set(e,c),e(h()))}function _(e,t,n){if(e!==void 0)for(l.set(e,{id:e,fingerprint:t,result:z(n)});l.size>a;){let e=l.keys().next().value;if(e===void 0)break;l.delete(e)}}function v(e,t){if(e===void 0)return null;let n=l.get(e);return n?n.fingerprint===t?{...z(n.result),replayed:!0}:{ok:!1,id:e,error:W(`id_reuse`,`The id "${e}" was already used for a different command.`,{path:`id`})}:null}function y(e,t){let n=`undo-${++f}`;u.set(n,{before:z(e),after:z(t)}),d=[...d,n].slice(-o);for(let e of[...u.keys()])d.includes(e)||u.delete(e);return n}let b=(e,t)=>e.applied!==t.applied||!Nt(e.doc,t.doc);function x(e,t,n,r,i,a,o){return{ok:!0,...e===void 0?{}:{id:e},snapshot:a,receipt:{name:t,...e===void 0?{}:{id:e},summary:i===r?``:n.summary,changed:i!==r,revisionBefore:r,revisionAfter:i,...o?{undoId:o}:{},...n.changes?{changes:n.changes}:{},...n.warnings?{warnings:n.warnings}:{}},...n.data===void 0?{}:{data:n.data}}}function S(e,t){let n=u.get(t.undoId);if(!n)return{ok:!1,...e===void 0?{}:{id:e},error:W(`not_found`,`Nothing to undo for "${t.undoId}".`,{path:`input.undoId`})};if(!t.force&&b(s,n.after))return{ok:!1,...e===void 0?{}:{id:e},error:W(`conflict`,`The plan changed since; send force: true to undo anyway.`,{details:{currentRevision:c}})};let r=c,i=z(n.before),a=b(s,i);s=i,a&&(c+=1),u.delete(t.undoId),d=d.filter(e=>e!==t.undoId);let o=x(e,`undo`,{ok:!0,state:s,summary:`Undone.`},r,c,h());return g(),o}function C(e,r={}){try{let i=e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,a=i?.id,o=Pn(a);if(o)return{ok:!1,error:o};let l=i?.expectedRevision??r.expectedRevision,u=Fn(l);if(u)return{ok:!1,...a===void 0?{}:{id:a},error:u};let d=Mn({name:i?.name,input:i?.input??{},expectedRevision:l}),f=v(a,d);if(f)return f;let p=e=>(_(a,d,e),e),m=e=>({ok:!1,...a===void 0?{}:{id:a},error:e}),C=Nn(e,n,[`id`,`expectedRevision`]);if(!C.ok)return p(m(C.error));if(l!==void 0&&l!==c)return p(m(W(`conflict`,`The plan is at revision ${c}, not ${l}. Read the snapshot and try again.`,{details:{expectedRevision:l,currentRevision:c}})));if(C.name===`undo`)return p(S(a,C.input));let w=s,T=Sn(t,w,C.name,C.input);if(!T.ok)return p(m(T.error));let E=c,D=b(w,T.state),O;D&&(s=T.state,c+=1,O=y(w,T.state));let k=p(x(a,C.name,T,E,c,h(),O));return g(),k}catch(e){return{ok:!1,error:W(`failed`,e instanceof Error?e.message:String(e))}}}function w(e){let r=(e,t)=>({ok:!1,...t===void 0?{}:{id:t},error:e,snapshot:h()});try{if(!e||typeof e!=`object`||Array.isArray(e))return r(W(`invalid_input`,`A batch is an object: { commands }.`));let i=e,a=i.id,o=Pn(a);if(o)return r(o);let l=Fn(i.expectedRevision);if(l)return r(l,a);let u=Mn({commands:i.commands,expectedRevision:i.expectedRevision}),d=v(a,u);if(d)return`results`in d||`snapshot`in d?d:r(d.error,a);let f=e=>(_(a,u,e),e),p=i.commands;if(!Array.isArray(p)||p.length===0||p.length>50)return f(r(W(`invalid_input`,`commands must be a list of 1 to 50 commands.`,{path:`commands`}),a));let S=i.expectedRevision;if(S!==void 0&&S!==c)return f(r(W(`conflict`,`The plan is at revision ${c}, not ${S}. Read the snapshot and try again.`,{details:{expectedRevision:S,currentRevision:c}}),a));let C=(e,t,n)=>f(r(W(`batch_failed`,`Command ${e+1} (${String(t)}) failed: ${n.message}`,{path:`commands[${e}]`,details:{index:e,cause:n}}),a)),w=s,T=c,E=w,D=T,O=[];for(let[e,r]of p.entries()){let i=Nn(r,n,[]);if(!i.ok)return C(e,r?.name,i.error);if(i.name===`undo`)return C(e,`undo`,W(`invalid_input`,`undo cannot run inside a batch.`));let a=Sn(t,E,i.name,i.input);if(!a.ok)return C(e,i.name,a.error);let o=D;b(E,a.state)&&(D+=1),E=a.state,O.push(x(void 0,i.name,a,o,D,m(E,D)))}let k=D!==T,A;if(k){s=E,c=D,A=y(w,E);for(let e of O)e.receipt.changed&&delete e.receipt.undoId}let j=f({ok:!0,...a===void 0?{}:{id:a},snapshot:h(),receipt:{...a===void 0?{}:{id:a},count:O.length,changed:k,revisionBefore:T,revisionAfter:D,...A?{undoId:A}:{}},results:O});return g(),j}catch(e){return r(W(`failed`,e instanceof Error?e.message:String(e)))}}return{run:C,batch:w,snapshot:h,cookbook:()=>z(s.doc),state:()=>({version:1,revision:c,applied:s.applied,cookbook:z(s.doc),journal:[...l.values()].map(e=>z(e))}),subscribe(e){return p.set(e,c),e(h()),()=>{p.delete(e)}},tools:r,batchTool:i}}var Ln=new Set(`AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BRL BSD BTN BWP BYN BZD CAD CDF CHF CLP CNY COP CRC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HTG HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRU MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLE SOS SRD SSP STN SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS VES VND VUV WST XAF XCD XOF XPF YER ZAR ZMW ZWG`.split(` `));function Rn(){let e=ye.packages.flatMap(e=>e.models.map(t=>({id:t.id,name:t.name,packageId:e.id,...t.description?{description:t.description}:{},exposed:t.exposed,fields:t.fields.map(e=>({name:e.name,...e.system?{system:!0}:{},...e.default===void 0?{}:{default:e.default}}))})));return{recipes:se,models:e,cookbooks:be.map(e=>({id:e.id,name:e.name,document:e.document})),themePresets:ie,currencies:[...Ln],settingTargets:de}}var zn;function Bn(){return zn??=Rn(),zn}var Vn=[`cookbooks`,`recipes`,`features`,`layout`,`settings`,`export`],Hn={name:`focus`,description:`Move the planner's view to a tab and/or a menu section. Navigation only; it changes nothing in the plan.`,inputSchema:{type:`object`,properties:{tab:{enum:[...Vn],description:`The tab to open.`},section:{type:`string`,minLength:1,maxLength:200,description:`The id of a menu section, as the plan snapshot's "sections" lists it.`}},additionalProperties:!1}};function Un(e){return[...Tn(e),Hn]}function Wn(e,t){return Un({...Bn(),recipes:e.map(e=>({id:e,label:e,models:[],nav:[],requires:[]})),cookbooks:t.map(e=>({id:e,name:e,document:{}}))})}var Gn=Wn(se.map(e=>e.id),be.map(e=>e.id));Object.fromEntries(Gn.map(e=>[e.name,e.inputSchema])),Gn.map(e=>e.name);function Kn(e,t,n=`input`){return kn(e,t,n)?.message??null}function qn(e){let t=e;return{get:()=>t,set:e=>{t=e}}}var G=(e,t,n={})=>({code:e,message:t,...n}),K=(e,t)=>({ok:!1,...t===void 0?{}:{id:t},error:e}),q=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Jn=new Set([`apply_cookbook`,`import_cookbook`]),Yn=e=>e instanceof Error?e.message:String(e);function Xn(e,t){if(!q(e))return JSON.stringify([t,e??null]);let{overviews:n,...r}=e;return JSON.stringify([t,r])}function Zn(e){let{catalog:t,port:n,options:r={},env:i={}}=e,a=i.section??qn(null),o=i.tab??qn(null),s=Un(t),c=e=>s.find(t=>t.name===e)?.inputSchema,l=c(`focus`),u=c(`undo`),d,f=``,p=null,m=new Map,h=new Map,g=0,_=new Map,v=()=>n?.applied?.()??null,y=()=>r.navigation?.getTab()??o.get();function b(){if(!n?.read){d=In(e.cookbook===void 0?{catalog:t}:{catalog:t,state:{version:1,revision:0,applied:null,cookbook:e.cookbook,journal:[]}});return}let r=n.read();f=Xn(r,v());try{d=In({catalog:t,state:{version:1,revision:0,applied:v(),cookbook:r,journal:[]}})}catch(e){d=In({catalog:t}),p=Yn(e)}}b();function x(e,n){let r=d.state();try{d=In({catalog:t,state:{version:1,revision:r.revision+1,applied:v(),cookbook:e,journal:r.journal}}),p=null}catch(e){p=Yn(e)}m=new Map,h=new Map,f=n}function S(){if(n?.read)try{let e=n.read(),t=Xn(e,v());if(t===f)return;x(e,t)}catch(e){p=Yn(e)}}let C=()=>G(`failed`,`The app's document is not one the planner can read (${p}). Fix it or reset the cookbook, then try again.`),w=e=>K(C(),e);function T(e){if(!e)return;let t=m.get(e);return t||(t=`undo-${++g}`,m.set(e,t),h.set(t,e)),t}function E(e){let t=new Set(e);for(let[e,n]of m)t.has(e)||(m.delete(e),h.delete(n))}let D=e=>({...e,undo:e.undo.map(e=>T(e)),focus:{tab:y(),section:a.get()}});function O(){let e=d.snapshot();return E(e.undo),D(e)}function k(e){if(!n?.read)return e;try{let t=n.read(),r=q(t)?t.overviews:void 0,{overviews:i,...a}=e;return Lt(q(r)&&Object.keys(r).length?{...a,overviews:r}:a)}catch{return e}}function A(e){if(!e.ok)return e;let{receipt:t}=e,n=e.replayed?void 0:T(t.undoId),{undoId:r,...i}=t,a=e.data;if(t.name===`export_cookbook`&&q(a)&&!e.replayed){let e=k(a.cookbook);a={...a,cookbook:e,text:`${JSON.stringify(e,null,2)}\n`}}return{...e,...a===void 0?{}:{data:a},snapshot:O(),receipt:{...i,...n?{undoId:n}:{}}}}function j(e,t){if(!n?.write)return;let i=d.snapshot().app.cookbook,a=e.includes(`apply_cookbook`)||i!==null&&i!==t;n.write(d.cookbook(),{commands:e,replaced:e.some(e=>Jn.has(e)),applied:i,libraryApplied:a}),n.read&&(f=Xn(n.read(),v())),a&&r.onReplaced?.()}function M(){if(!_.size)return;S();let e=O(),t=JSON.stringify(e);for(let[n,r]of _)r!==t&&(_.set(n,t),n(e))}function N(e,t){for(let t of Object.keys(e))if(![`name`,`input`,`id`,`expectedRevision`].includes(t))return G(`invalid_input`,`${t} is not part of a command.`,{path:t});let{id:n}=e;if(n!==void 0&&!(typeof n==`string`&&n.length>0&&n.length<=200))return G(`invalid_input`,`id must be a non-empty string of at most 200 characters.`,{path:`id`});let r=e.expectedRevision??t.expectedRevision;return r!==void 0&&!(Number.isInteger(r)&&r>=0)?G(`invalid_input`,`expectedRevision must be a whole number.`,{path:`expectedRevision`}):null}function ee(e,t){let n=N(e,t),i=typeof e.id==`string`?e.id:void 0;if(n)return K(n,i);let s=e.expectedRevision??t.expectedRevision,c=e.input??{},u=Kn(l,c);if(u)return K(G(`invalid_input`,u,{path:`input`}),i);let f=d.snapshot().revision;if(s!==void 0&&s!==f)return K(G(`conflict`,`The plan is at revision ${f}, not ${s}. Read the snapshot and try again.`,{details:{expectedRevision:s,currentRevision:f}}),i);if(c.section!==void 0&&!O().sections.some(e=>e.id===c.section))return K(G(`not_found`,`No menu section "${c.section}".`,{path:`input.section`}),i);let p=!1;c.tab&&Vn.includes(c.tab)&&(p||=y()!==c.tab,o.set(c.tab),r.navigation?.setTab(c.tab)),c.section!==void 0&&(p||=a.get()!==c.section,a.set(c.section),r.navigation?.setSection?.(c.section));let m={ok:!0,...i===void 0?{}:{id:i},snapshot:O(),receipt:{name:`focus`,...i===void 0?{}:{id:i},summary:``,changed:p,revisionBefore:f,revisionAfter:f}};return M(),m}function te(e){let t=e.input;if(!n?.prepareImport||!q(t))return{raw:e};let r=n.prepareImport(t.document);return r.ok?{raw:{...e,input:{...t,document:r.cookbook}},dropped:r.dropped}:K(G(`invalid_input`,r.error,{path:`input.document`}),e.id)}function P(e){if(n?.read&&e.some(e=>typeof e==`string`&&Jn.has(e)))try{let e=n.read();if(Ft(d.cookbook())&&!Ft(e)){let n=d.state();d=In({catalog:t,state:{version:1,revision:n.revision,applied:v(),cookbook:e,journal:n.journal}}),m=new Map,h=new Map,f=Xn(e,v())}}catch(e){p=Yn(e)}}function ne(e,t={}){try{if(S(),p)return w(q(e)&&typeof e.id==`string`?e.id:void 0);if(!q(e))return A(d.run(e,t));if(e.name===`focus`)return ee(e,t);if(P([e.name]),p)return w(typeof e.id==`string`?e.id:void 0);let n=e,r;if(e.name===`import_cookbook`){let t=te(e);if(`ok`in t)return t;n=t.raw,r=t.dropped}let i=d.snapshot().app.cookbook,a=F(n),o=a?re(n,t,a):A(d.run(n,t));if(!o.ok)return o;!o.replayed&&o.receipt.changed&&j([String(n.name)],i);let s=o;return r?.length&&(s={...o,receipt:{...o.receipt,warnings:[...o.receipt.warnings??[],...r.map(e=>`Not imported: ${e}`)]}}),M(),s.ok?{...s,snapshot:O()}:s}catch(e){return K(G(`failed`,Yn(e)))}}function F(e){let n=e.input;if(e.name!==`apply_cookbook`||!q(n))return;let r=t.cookbooks?.find(e=>e.id===n.id);if(!r||r.document.theme)return;let i=d.cookbook().theme;if(!i)return;let a={};return i.preset&&(a.preset=i.preset),i.custom?.primary&&(a.primary=i.custom.primary),i.colorScheme&&(a.colorScheme=i.colorScheme),Object.keys(a).length?a:void 0}function re(e,t,n){let r=d.batch({...e.id===void 0?{}:{id:e.id},expectedRevision:e.expectedRevision??t.expectedRevision,commands:[e,{name:`set_theme`,input:n}].map(({id:e,expectedRevision:t,...n})=>n)});if(!r.ok){let t=r.error.details?.cause;return K(r.error.code===`batch_failed`&&t?t:r.error,e.id)}let i=r.results[0],a=r.replayed?void 0:T(r.receipt.undoId);return{...i,...r.id===void 0?{}:{id:r.id},...r.replayed?{replayed:!0}:{},snapshot:O(),receipt:{...i.receipt,...r.id===void 0?{}:{id:r.id},revisionBefore:r.receipt.revisionBefore,revisionAfter:r.receipt.revisionAfter,changed:r.receipt.changed,...a?{undoId:a}:{}}}}function I(e){try{if(S(),p)return{ok:!1,error:C(),snapshot:O()};let t=q(e)&&Array.isArray(e.commands)?e.commands:[];if(P(t.map(e=>q(e)?e.name:void 0)),p)return{ok:!1,error:C(),snapshot:O()};let n=d.snapshot().app.cookbook,r=d.batch(e);if(!r.ok)return{...r,snapshot:O()};!r.replayed&&r.receipt.changed&&j(t.map(e=>String(e?.name)),n);let i=r.replayed?void 0:T(r.receipt.undoId),{undoId:a,...o}=r.receipt,s=O(),c={...r,snapshot:s,receipt:{...o,...i?{undoId:i}:{}},results:r.results.map(e=>({...e,snapshot:r.replayed?s:D(e.snapshot)}))};return M(),c}catch(e){return{ok:!1,error:G(`failed`,Yn(e)),snapshot:O()}}}function ie(e){if(!q(e)||e.name!==`undo`||!q(e.input))return e;let t=e.input.undoId;return typeof t==`string`?{...e,input:{...e.input,undoId:h.get(t)??``}}:e}function ae(e,t){if(e.ok||e.error.code!==`not_found`)return e;let n=h.get(t);return n?{...e,error:{...e.error,message:e.error.message.replace(`"${n}"`,`"${t}"`)}}:e}let L=(e,t)=>{if(q(e)&&e.name===`undo`&&q(e.input)){let n=e.input.undoId;if(typeof n==`string`&&Kn(u,e.input)===null)return S(),O(),h.has(n)?ae(ne(ie(e),t),n):K(G(`not_found`,`Nothing to undo for "${n}".`,{path:`input.undoId`}),e.id)}return ne(ie(e),t)};return{run:L,batch:I,snapshot(){return S(),O()},cookbook(){return S(),k(d.cookbook())},undo(){S();let e=O().undo.at(-1);return e?L({name:`undo`,input:{undoId:e}}):K(G(`not_found`,`Nothing to undo.`))},state:()=>d.state(),get tools(){return s},get batchTool(){return d.batchTool},observe(){return S(),JSON.stringify(O())},deliver:M,subscribe(e){i.watch?.start(),S();let t=O();return _.set(e,JSON.stringify(t)),e(t),()=>{_.delete(e),_.size||i.watch?.stop()}}}}var Qn=`smrt-planner:cookbook`,$n=new class{#e=A(null);get active(){return h(this.#e)}set active(e){S(this.#e,e,!0)}load(e=I()){try{this.active=e?.getItem(`smrt-planner:cookbook`)??null}catch{this.active=null}ve(this.active)}select(e,t=I()){this.active=e;try{t?.setItem(Qn,e)}catch{}}};function er(e){let t=A(w(e));return{get:()=>h(t),set:e=>{S(t,e,!0)}}}function tr(e){return{read:()=>e.snapshot(),applied:()=>$n.active,prepareImport:e=>ne(e),write(t,{replaced:n,applied:r,libraryApplied:i}){let a=n?t:{...t,overviews:e.snapshot().overviews};n?e.replace(a):e.apply(a),i&&r&&($n.select(r),ve(r))}}}function nr(e=F,t={}){let n,r=Zn({catalog:Bn(),port:tr(e),options:t,env:{section:er(null),tab:er(null),watch:{start(){n||=C(()=>{T(()=>{r.observe(),b(r.deliver)})})},stop(){n?.(),n=void 0}}}});return r}var rr=()=>({$schema:re,version:1,recipes:[],features:[],policies:[]});function ir(e){let{store:t,settings:n,theme:r}=e;return{read(){let e={...rr(),recipes:[...t.ids].sort()};n&&(e=ce(e,n.read()));let i=r?.read();return i?{...e,theme:i}:e},write(e){let i=new Set(e.recipes),a=new Set(t.ids),o=[...a].filter(e=>!i.has(e));o.length&&t.remove(...o);let s=[...i].filter(e=>!a.has(e));s.length&&t.add(...s),n&&n.write(ue(e)),r?.write(e.theme)}}}function ar(e,t={}){return Zn({catalog:Bn(),port:ir(e),options:t})}var or=[`cookbooks`,`recipes`,`features`,`layout`,`settings`,`export`];function sr(e,t=`recipes`){let n=new URLSearchParams(e).get(`tab`);return or.find(e=>e===n)??t}var cr=new class{#e=A(`recipes`);get active(){return h(this.#e)}set active(e){S(this.#e,e,!0)}fromSearch(e,t=`recipes`){this.active=sr(e,t)}},lr={},ur=nr(F,{navigation:{getTab:()=>cr.active,setTab:e=>{cr.active=e},setSection:e=>lr.openSection?.(e)},onReplaced:()=>lr.onReplaced?.()}),dr=`Qwen3-1.7B-q4f16_1-MLC`,fr=[{id:dr,label:`Qwen3 1.7B (recommended)`,downloadMB:1100,vramMB:2037},{id:`Llama-3.2-1B-Instruct-q4f16_1-MLC`,label:`Llama 3.2 1B (smallest)`,downloadMB:700,vramMB:879},{id:`Qwen3-4B-q4f16_1-MLC`,label:`Qwen3 4B (smarter, larger)`,downloadMB:2300,vramMB:3432}];function pr(e){return fr.find(t=>t.id===e)}function mr(e){return e>=1e3?`about ${(e/1e3).toFixed(1)} GB`:`about ${e} MB`}function hr(e){return e.label.replace(/\s*\(.*\)\s*$/,``)}var gr=`Qwen3-4B-q4f16_1-MLC`;function _r(e,t){return t>=e.vramMB*1e6*1.2}async function vr(e=typeof navigator>`u`?void 0:navigator){try{return(await e?.gpu?.requestAdapter())?.limits?.maxBufferSize??0}catch{return 0}}function yr(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
23
|
+
`)}var J=class extends Error{code;provider;model;retryable;constructor(e,t,n,r,i=!1){super(e),this.code=t,this.provider=n,this.model=r,this.retryable=i,this.name=`AIError`}},br=class extends J{constructor(e,t){super(`Model not found: ${e}`,`MODEL_NOT_FOUND`,t,e,!1),this.name=`ModelNotFoundError`}},xr=class extends J{constructor(e,t){super(`Input exceeds maximum context length`,`CONTEXT_LENGTH_EXCEEDED`,e,t,!1),this.name=`ContextLengthError`}},Sr=class extends J{constructor(e=`webllm`,t){super(t??`WebGPU is not available in this environment (navigator.gpu is missing); on-device inference cannot run.`,`WEBGPU_UNAVAILABLE`,e,void 0,!1),this.name=`WebGPUUnavailableError`}},Cr=class extends J{constructor(e){super("The webllm provider needs the optional peer dependency @mlc-ai/web-llm. Install it with `pnpm add @mlc-ai/web-llm` (or the npm/yarn equivalent).",`WEBLLM_PEER_MISSING`,`webllm`,void 0,!1),this.name=`WebLLMPeerMissingError`,e!==void 0&&(this.cause=e)}},wr=12e4,Tr=Object.freeze({maxOutputTokens:131072,defaultOutputTokens:4096,maxReasoningTokens:1024,maxImagesPerRequest:1,onExceeded:`error`});function Er(e,t,n){if(e===void 0)return t;if(!Number.isFinite(e)||e<=0)throw new J(`${n} must be a positive finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e)}function Dr(e){let t=e.generationLimits||{},n={maxOutputTokens:Er(t.maxOutputTokens,Tr.maxOutputTokens,`generationLimits.maxOutputTokens`),defaultOutputTokens:Math.min(Er(t.defaultOutputTokens,Tr.defaultOutputTokens,`generationLimits.defaultOutputTokens`),Er(t.maxOutputTokens,Tr.maxOutputTokens,`generationLimits.maxOutputTokens`)),maxReasoningTokens:Er(t.maxReasoningTokens,Tr.maxReasoningTokens,`generationLimits.maxReasoningTokens`),maxImagesPerRequest:Er(t.maxImagesPerRequest,Tr.maxImagesPerRequest,`generationLimits.maxImagesPerRequest`),onExceeded:t.onExceeded||Tr.onExceeded};if(![`error`,`clamp`].includes(n.onExceeded))throw new J(`generationLimits.onExceeded must be "error" or "clamp"`,`AI_LIMIT_INVALID`);return{...e,timeout:Er(e.timeout,wr,`timeout`),maxRetries:(()=>{if(e.maxRetries===void 0)return 0;if(!Number.isFinite(e.maxRetries)||e.maxRetries<0)throw new J(`maxRetries must be a non-negative finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e.maxRetries)})(),generationLimits:n}}function Or(e){switch(e){case!1:case`none`:return 0;case`minimal`:return 1024;case`low`:return 2048;case`medium`:return 4096;case`high`:return 8192;default:return}}function kr(e,t,n,r,i,a){if(!Number.isFinite(e)||e<0)throw new J(`${r} must be a non-negative finite number`,`AI_LIMIT_INVALID`,i,a);let o=Math.trunc(e);if(o<=t)return o;if(n===`clamp`)return t;throw new J(`${r} ${o} exceeds configured ceiling ${t}`,`AI_LIMIT_EXCEEDED`,i,a)}function Ar(e,t,n,r){let i=Dr(e).generationLimits,a=t.maxTokens??i.defaultOutputTokens??i.maxOutputTokens,o=t.thinkingLevel??e.thinkingLevel,s=t.reasoning!==void 0||o!==void 0||t.includeThoughts===!0?t.reasoning?.maxTokens??Or(t.reasoning?.effort??o)??i.maxReasoningTokens:0;return{...t,maxTokens:kr(a,i.maxOutputTokens,i.onExceeded,`maxTokens`,n,r),reasoning:{...t.reasoning,maxTokens:kr(s,i.maxReasoningTokens,i.onExceeded,`reasoning.maxTokens`,n,r),includeThoughts:t.reasoning?.includeThoughts??t.includeThoughts}}}function jr(e,t={}){let n=Dr(e),r=Er(t.timeout,n.timeout,`timeout`),i=new AbortController,a=!1,o=()=>i.abort(t.signal?.reason);t.signal?.aborted?o():t.signal?.addEventListener(`abort`,o,{once:!0});let s=setTimeout(()=>{a=!0,i.abort(Error(`AI request timed out after ${r}ms`))},r);return{signal:i.signal,timeout:r,didTimeout:()=>a,cleanup:()=>{clearTimeout(s),t.signal?.removeEventListener(`abort`,o)}}}[...new Set([`getVideoGenerationJob`,`fetchVideoGenerationResult`,`cancelVideoGenerationJob`])];function Mr(e,t,n,r,i,a,o){if(!e.onUsage)return;let s=e.usageTags,c=s||o?{...s,...o}:void 0;try{e.onUsage({provider:t,model:r,operation:n,usage:i,duration:Date.now()-a,timestamp:new Date,tags:c})}catch{}}var Y=`webllm`,Nr=4096,Pr={chat:!0,completion:!0,embeddings:!1,streaming:!0,functions:!0,vision:!1,fineTuning:!1,imageEmbeddings:!1,imageGeneration:!1,videoGeneration:!1,tts:!1,voiceCloning:!1,voiceDesign:!1,maxContextLength:Nr,supportedOperations:[`chat`,`completion`,`streaming`,`functions`]},Fr=new WeakMap,Ir=new Map;async function Lr(){try{let e=await M(()=>import(`./FbOxj-PF.js`),[],import.meta.url),t=typeof e?.CreateMLCEngine==`function`?e:e?.default;if(typeof t?.CreateMLCEngine!=`function`)throw Error(`@mlc-ai/web-llm did not export CreateMLCEngine`);return t}catch(e){throw new Cr(e)}}function Rr(){return!!globalThis.navigator?.gpu}function X(e){throw new J(`${e} is not supported by the webllm provider.`,`NOT_SUPPORTED`,Y)}function zr(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var Br=class{options;explicitModel;factoryEngine;localEngines=new Map;constructor(e){this.explicitModel=e.defaultModel??e.model,this.options=Dr({...e,defaultModel:this.explicitModel??`Llama-3.2-1B-Instruct-q4f16_1-MLC`})}async acquireEngine(e,t){let n=this.options.engine;if(n)return typeof n==`function`?(this.factoryEngine??=n().catch(e=>{throw this.factoryEngine=void 0,e}),Wr(this.factoryEngine,t)):n;if(!Rr())throw new Sr(Y);let r=this.options.appConfig?this.localEngines:Ir,i=r.get(e);if(!i){let t=new Set,n={listeners:t,promise:this.createEngine(e,t)};n.promise.catch(()=>{r.get(e)===n&&r.delete(e)}),r.set(e,n),i=n}let a=this.options.onLoadProgress;a&&i.listeners.add(a);try{return await Wr(i.promise,t)}finally{a&&i.listeners.delete(a)}}async createEngine(e,t){return(await Lr()).CreateMLCEngine(e,{...this.options.appConfig?{appConfig:this.options.appConfig}:{},initProgressCallback:e=>{for(let n of t)try{n(e)}catch{}}})}mapMessages(e){return e.map(e=>{if(e.role===`user`&&Array.isArray(e.content))return{role:`user`,content:e.content.map(e=>e.type===`text`?{type:`text`,text:e.text}:{type:`image_url`,image_url:{url:e.image_url.url}}),...e.name?{name:e.name}:{}};let t=yr(e.content);return e.role===`tool`||e.role===`function`?{role:`tool`,content:t,tool_call_id:e.tool_call_id??e.name??``}:e.role===`assistant`?zr({role:`assistant`,content:t||(e.tool_calls?.length?null:``),tool_calls:e.tool_calls?.map(e=>({id:e.id,type:e.type,function:{name:e.function.name,arguments:e.function.arguments}}))}):{role:e.role,content:t,...e.name?{name:e.name}:{}}})}mapResponseFormat(e){return e.responseSchema===void 0?e.responseFormat?.type===`json_object`?{type:`json_object`}:void 0:{type:`json_object`,schema:typeof e.responseSchema==`string`?e.responseSchema:JSON.stringify(e.responseSchema)}}buildRequest(e,t,n,r,i){let a=i&&t.tools?.length?t.tools.map(e=>({type:`function`,function:{name:e.function.name,description:e.function.description,parameters:e.function.parameters}})):void 0;return zr({model:n,messages:this.mapMessages(e),max_tokens:t.maxTokens,temperature:t.temperature,top_p:t.topP,n:t.n,stop:t.stop,frequency_penalty:t.frequencyPenalty,presence_penalty:t.presencePenalty,seed:t.seed,tools:a,tool_choice:a?t.toolChoice:void 0,response_format:this.mapResponseFormat(t),stream:r,stream_options:r?{include_usage:!0}:void 0})}requestModel(e,t){return this.options.engine?t.model??this.explicitModel:e}mapUsage(e){let t=e;if(t)return{promptTokens:t.prompt_tokens??0,completionTokens:t.completion_tokens??0,totalTokens:t.total_tokens??0}}mapFinishReason(e){switch(e){case`length`:return`length`;case`tool_calls`:return`tool_calls`;default:return`stop`}}assertNotInterrupted(e,t){if(e===`abort`)throw new J(`Generation was interrupted before it finished`,`AI_INTERRUPTED`,Y,t,!0)}mapError(e,t){if(e instanceof J)return e;let n=e?.name??``,r=e instanceof Error?e.message:String(e);if(n===`WebGPUNotAvailableError`||n===`WebGPUNotFoundError`)return new Sr(Y,r);if(n===`ContextWindowSizeExceededError`||n===`PrefillChunkSizeSmallerThanImageError`)return new xr(Y,t);if(n===`ModelNotFoundError`||n===`SpecifiedModelNotFoundError`||n===`UnsupportedModelIdError`||n===`ModelNotLoadedError`)return new br(t??r,Y);let i=new J(r,n===`DeviceLostError`?`WEBGPU_DEVICE_LOST`:`API_ERROR`,Y,t);return i.cause=e,i}abortError(e,t,n){if(e?.didTimeout())return new J(`AI request timed out after ${e.timeout}ms`,`AI_TIMEOUT`,Y,n);if(t.signal?.aborted)return new J(`AI request aborted by caller`,`AI_ABORTED`,Y,n)}async lockEngine(e,t){let n=Fr.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e});Fr.set(e,n.then(()=>i));try{await Wr(n,t)}catch(e){throw r(),e}return r}bindInterrupt(e,t){let n=()=>{try{Promise.resolve(e.interruptGenerate()).catch(()=>{})}catch{}};return t.aborted&&n(),t.addEventListener(`abort`,n,{once:!0}),()=>t.removeEventListener(`abort`,n)}async chat(e,t={}){let n=Date.now(),r,i,a,o,s,c=t.model||this.options.defaultModel||`Llama-3.2-1B-Instruct-q4f16_1-MLC`;try{t=Ar(this.options,t,Y,c);let l=await this.acquireEngine(c,t.signal);r=jr(this.options,t),a=await this.lockEngine(l,r.signal),i=this.bindInterrupt(l,r.signal),o=l.chat.completions.create(this.buildRequest(e,t,this.requestModel(c,t),!1,!0));let u=o,d=!1,f=()=>{d=!0};u.then(f,f),s=()=>d?void 0:u;let p=await Wr(o,r.signal);if(r.signal.aborted)throw this.abortError(r,t,c)??r.signal.reason;let m=p?.choices?.[0];if(this.assertNotInterrupted(m?.finish_reason,c),!m)throw new J(`No choices returned from webllm`,`NO_CHOICES`,Y);let h=this.mapUsage(p.usage);Mr(this.options,Y,`chat`,p.model||c,h,n,t.usageTags);let g=m.message?.tool_calls?.map(e=>({id:e.id,type:`function`,function:{name:e.function.name,arguments:e.function.arguments}}));return{content:m.message?.content||``,usage:h,model:p.model||c,finishReason:this.mapFinishReason(m.finish_reason),...g?.length?{toolCalls:g}:{}}}catch(e){throw this.abortError(r,t,c)??this.mapError(e,c)}finally{i?.(),Hr(a,s?.()),r?.cleanup()}}async complete(e,t={}){return this.chat([{role:`user`,content:e}],{model:t.model,maxTokens:t.maxTokens,temperature:t.temperature,topP:t.topP,n:t.n,stop:t.stop,stream:t.stream,onProgress:t.onProgress,signal:t.signal,timeout:t.timeout,reasoning:t.reasoning,usageTags:t.usageTags,continueOnLength:t.continueOnLength})}async message(e,t={}){let n=[...t.history||[],{role:t.role||`user`,content:e}];return(await this.chat(n,{model:t.model,maxTokens:t.maxTokens,temperature:t.temperature,topP:t.topP,stop:t.stop,stream:t.stream,frequencyPenalty:t.frequencyPenalty,presencePenalty:t.presencePenalty,responseFormat:t.responseFormat,responseSchema:t.responseSchema,seed:t.seed,tools:t.tools,toolChoice:t.toolChoice,onProgress:t.onProgress,signal:t.signal,timeout:t.timeout,reasoning:t.reasoning,usageTags:t.usageTags,continueOnLength:t.continueOnLength})).content}async*stream(e,t={}){let n=Date.now(),r,i,a,o,s,c=!1,l,u=t.model||this.options.defaultModel||`Llama-3.2-1B-Instruct-q4f16_1-MLC`;try{t=Ar(this.options,t,Y,u),a=await this.acquireEngine(u,t.signal),r=jr(this.options,t),o=await this.lockEngine(a,r.signal),i=this.bindInterrupt(a,r.signal);let d=a.chat.completions.create(this.buildRequest(e,t,this.requestModel(u,t),!0,!1)),f;try{f=await Wr(d,r.signal)}catch(e){throw l=d.then(e=>Ur(e[Symbol.asyncIterator](),a),()=>{}),e}s=f[Symbol.asyncIterator]();let p,m;for(;;){let e=await s.next();if(e.done){c=!0;break}let n=e.value,r=n.choices?.[0];p=r?.finish_reason??p,n.usage&&(m=this.mapUsage(n.usage));let i=r?.delta?.content;i&&(t.onProgress?.(i),yield i)}if(r.signal.aborted)throw this.abortError(r,t,u)??r.signal.reason;this.assertNotInterrupted(p,u),t.onFinishReason?.(this.mapFinishReason(p)),Mr(this.options,Y,`stream`,u,m,n,t.usageTags)}catch(e){throw this.abortError(r,t,u)??this.mapError(e,u)}finally{if(s&&!c&&a){try{Promise.resolve(a.interruptGenerate()).catch(()=>{})}catch{}await Vr(s)}i?.(),Hr(o,l),r?.cleanup()}}async countTokens(e){return Math.ceil(e.length/4)}async getModels(){let e=await Lr(),t=this.options.appConfig?.model_list??e.prebuiltAppConfig.model_list,n=new Set(e.functionCallingModelIds??[]);return t.filter(e=>e.model_type!==1).map(e=>{let t=e.model_type===2,r=n.has(e.model_id);return{id:e.model_id,name:e.model_id,description:e.vram_required_MB?`Runs on-device via WebGPU (~${Math.round(e.vram_required_MB)} MB VRAM)`:`Runs on-device via WebGPU`,contextLength:e.overrides?.context_window_size??Nr,capabilities:[`text`,`chat`,...r?[`functions`]:[],...t?[`vision`]:[]],supportsFunctions:r,supportsVision:t}})}async getCapabilities(){return{...Pr}}async embed(e,t={}){return X(`Embeddings`)}async embedImage(e,t={}){return X(`Image embeddings`)}async describeImage(e,t,n={}){return X(`Image description`)}async generateImage(e,t={}){return X(`Image generation`)}async submitVideoGenerationJob(e){return X(`Video generation`)}async getVideoGenerationJob(e){return X(`Video generation`)}async fetchVideoGenerationResult(e){return X(`Video generation`)}async cancelVideoGenerationJob(e){return X(`Video generation`)}async validateVideoGenerationAccess(){return X(`Video generation`)}async synthesizeSpeech(e,t){return X(`Text-to-speech`)}streamSpeech(e,t){let n=new J(`Text-to-speech streaming is not supported by the webllm provider.`,`NOT_SUPPORTED`,Y);return{[Symbol.asyncIterator]:()=>({next:()=>Promise.reject(n)})}}async cloneVoice(e){return X(`Voice cloning`)}async designVoice(e){return X(`Voice design`)}async getVoices(e){return X(`Voice listing`)}};async function Vr(e){try{for(;!(await e.next()).done;);}catch{}}function Hr(e,t){e&&(t?t.then(e,e):e())}async function Ur(e,t){try{if((await e.next()).done)return;await Promise.resolve(t?.interruptGenerate())}catch{return}await Vr(e)}function Wr(e,t){return t?t.aborted?Promise.reject(new J(`AI request aborted by caller`,`AI_ABORTED`,Y)):new Promise((n,r)=>{let i=()=>r(new J(`AI request aborted by caller`,`AI_ABORTED`,Y));t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}var Gr={createWorker:()=>new Worker(new URL(new URL(`../workers/llm.worker-wfCOG_uk.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),createEngine:async(e,t,n)=>{let{CreateWebWorkerMLCEngine:r}=await M(async()=>{let{CreateWebWorkerMLCEngine:e}=await import(`./FbOxj-PF.js`);return{CreateWebWorkerMLCEngine:e}},[],import.meta.url);return r(e,t,{initProgressCallback:e=>n(e)})}};async function Kr(e,t,n,r=Gr){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let i=r.createWorker(),a=()=>i.terminate(),o,s=new Promise((e,t)=>{o=()=>{a(),t(new DOMException(`Cancelled`,`AbortError`))},n?.addEventListener(`abort`,o,{once:!0})});try{return{engine:await Promise.race([r.createEngine(i,e,t),s]),dispose:a}}catch(e){throw a(),e}finally{o&&n?.removeEventListener(`abort`,o)}}var qr=e=>!!e&&typeof e==`object`&&e.kind===`cookbook-offer`&&typeof e.offerId==`string`,Jr=class{find;#e=A(w({}));get offers(){return h(this.#e)}set offers(e){S(this.#e,e,!0)}applier=null;counter=0;constructor(e){this.find=e}pending(){return Object.values(this.offers).find(e=>e.status===`pending`)}engaged(){return Object.values(this.offers).some(e=>e.status===`pending`||e.status===`applied`)}offer(e){let t=this.pending();if(t?.cookbookId===e)return null;t&&(t.status=`replaced`);let n=`offer-${++this.counter}`;return this.offers[n]={id:n,cookbookId:e,status:`pending`,error:``},{kind:`cookbook-offer`,offerId:n}}accept(e){let t=this.offers[e];if(t?.status!==`pending`)return;let n=this.find(t.cookbookId),r=n?this.applier?this.applier(n):`Not ready yet.`:`Unknown cookbook.`;if(r||!n){t.status=`failed`,t.error=r??`Could not set it up.`;return}t.status=`applied`}decline(e){let t=this.offers[e];t?.status===`pending`&&(t.status=`declined`)}},Yr=`smrt-planner:assistant:v1`;function Xr(){return{modelId:dr,consented:[]}}function Zr(e){let t=Xr();try{let n=e?.getItem(Yr);if(!n)return t;let r=JSON.parse(n);typeof r.modelId==`string`&&pr(r.modelId)&&(t.modelId=r.modelId),Array.isArray(r.consented)&&(t.consented=r.consented.filter(e=>typeof e==`string`&&!!pr(e)))}catch{}return t}function Qr(e,t){try{e?.setItem(Yr,JSON.stringify(t))}catch{}}var $r=e=>!!e&&typeof e==`object`&&e.kind===`theme-undo`&&typeof e.undoId==`string`,ei=class{store;controller;#e=A(w({}));get undos(){return h(this.#e)}set undos(e){S(this.#e,e,!0)}counter=0;constructor(e,t){this.store=e,this.controller=t}record(t,n){let r=`theme-undo-${++this.counter}`;return this.undos[r]={id:r,previous:t?structuredClone(e(t)):void 0,status:`available`,...n?{commandUndoId:n}:{}},{kind:`theme-undo`,undoId:r}}undo(e){let t=this.undos[e];t?.status===`available`&&(t.commandUndoId&&this.controller?.run({name:`undo`,input:{undoId:t.commandUndoId}}).ok||this.store.write(t.previous),t.status=`undone`)}};function ti(e,t=[],n=!1,r=!1){let i=e.map(e=>e.id),a={type:`array`,items:{enum:i},maxItems:i.length},o={reply:{type:`string`,maxLength:200},add:a,remove:a};return t.length&&(o.cookbook={enum:[...t.map(e=>e.id),null]}),n&&(o.settings={type:`object`,properties:{currency:{type:`string`,pattern:`^[A-Z]{3}$`},taxRate:{type:`number`,minimum:0,maximum:100},paymentTerms:{type:`string`,maxLength:40}},additionalProperties:!1}),r&&(o.theme={type:`object`,properties:{preset:{enum:[...ie]},primary:{type:`string`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`]}},additionalProperties:!1}),{type:`object`,properties:o,required:[`reply`,`add`,`remove`],additionalProperties:!1}}function ni(e){let t={};if(!e||typeof e!=`object`||Array.isArray(e))return t;let n=e;if(typeof n.currency==`string`){let e=n.currency.trim().toUpperCase();Ln.has(e)&&(t.currency=e)}let r=n.taxRate;if(typeof r==`number`&&Number.isFinite(r)&&r>=0&&r<=100&&(t.taxRate=r),typeof n.paymentTerms==`string`){let e=[...n.paymentTerms].map(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127?` `:e).join(``).trim();e&&e.length<=40&&(t.paymentTerms=e)}return t}function ri(e){let t={};if(!e||typeof e!=`object`||Array.isArray(e))return t;let n=e;typeof n.preset==`string`&&ie.includes(n.preset)&&(t.preset=n.preset);let r=P(n.primary);return r&&(t.primary=r),(n.colorScheme===`light`||n.colorScheme===`dark`||n.colorScheme===`system`)&&(t.colorScheme=n.colorScheme),t}function ii(e){return e.replace(/<think>[\s\S]*?<\/think>/gi,``).replace(/<think>[\s\S]*$/i,``).trim()}function ai(e){let t=/"reply"\s*:\s*"((?:[^"\\]|\\.)*)/.exec(e);if(!t)return null;let n=t[1];n=n.replace(/\\$/,``);try{n=JSON.parse(`"${n}"`)}catch{n=n.replace(/\\n/g,` `).replace(/\\"/g,`"`)}return n.trim()||null}function oi(e,t,n=[],r={}){let i=new Set(t.map(e=>e.id)),a=ii(e),o=e=>({reply:e,add:[],remove:[],cookbook:null,settings:{},theme:{}}),s=/^[\s`]*[{[]/.test(a)||/"reply"\s*:/.test(a),c=()=>o(s?ai(a)??`Sorry, say that again?`:a),l;try{l=JSON.parse(a)}catch{return c()}if(!l||typeof l!=`object`||Array.isArray(l))return c();let u=l,d=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&i.has(e)))]:[],f=d(u.add),p=d(u.remove),m=new Set(f.filter(e=>p.includes(e))),h=r.commands?si(u.commands):[];return{reply:typeof u.reply==`string`?u.reply.trim():``,add:f.filter(e=>!m.has(e)),remove:p.filter(e=>!m.has(e)),cookbook:typeof u.cookbook==`string`&&n.some(e=>e.id===u.cookbook)?u.cookbook:null,settings:ni(u.settings),theme:ri(u.theme),...h.length?{commands:h}:{}}}function si(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(t.length>=8)break;if(!n||typeof n!=`object`)continue;let{name:e,input:r}=n;typeof e==`string`&&t.push({name:e,input:r??{}})}return t}function ci(e,t){let n=e=>t.find(t=>t.id===e)?.label??e,r=e=>e.map(n).join(`, `),i=[];return e.added.length&&i.push(`Added ${r(e.added)}.`),e.removed.length&&i.push(`Removed ${r(e.removed)}.`),e.kept.length&&i.push(`Kept ${r(e.kept)} (needed).`),i.join(` `)}var li={name:10,synonym:6,keyword:4},ui=1.5,di=new Set([`a`,`an`,`and`,`the`,`of`,`for`,`to`,`in`,`on`,`or`,`general`,`simple`]),fi=[`car`,`vehicle`,`metal`,`steel`,`gates`,`studio`,`classes`,`members`,`shop`,`order`,`item`,`material`,`customer`,`sales`,`stock`,`schedule`,`terms`];function pi(e){return e.length<=3?e:e.endsWith(`ies`)?`${e.slice(0,-3)}y`:e.endsWith(`sses`)?e.slice(0,-2):/(us|ss|is)$/.test(e)?e:e.endsWith(`s`)?e.slice(0,-1):e}function mi(e){return e.normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/['’]s\b/g,``).replace(/['’]/g,``).replace(/[^a-z0-9]+/g,` `).trim().split(` `).filter(Boolean).map(pi).join(` `)}var hi=new Set(fi.map(mi)),gi={"commerce.customers":[`customer`,`client`,`contacts`,`patrons`],"commerce.purchases":[`purchase`,`buy supplies`,`reorder`,`order from suppliers`],"commerce.sales":[`sell`,`sale`,`sales order`,`point of sale`],"commerce.vendors":[`vendor`,`supplier`,`who we buy from`],"inventory.stock":[`inventory`,`track stock`,`stock levels`,`warehouse`,`count stock`],"products.simple":[`product`,`price list`,`menu`,`things we sell`],"products.clothing":[`clothes`,`shirts`,`fashion`,`sizes and colours`],"products.ingredients":[`ingredient`,`recipe`,`raw material`,`flour`,`components`],"commerce.estimates":[`estimate`,`quote`,`quotes for customers`,`price quote`,`bid`],"commerce.wholesale":[`wholesale`,`bulk`,`trade customers`,`resellers`],"commerce.invoicing":[`invoice`,`send invoices`,`bill customers`,`get paid`,`receipts`],"commerce.fulfillment":[`ship`,`shipping`,`courier`,`parcels`,`deliver`],"commerce.agreements":[`contract`,`agreement`,`sign contracts`],"commerce.leases":[`lease`,`rent out`,`equipment hire`],"commerce.licenses":[`licence`,`licence sales`,`software licenses`],"ledgers.bookkeeping":[`books`,`keep the books`,`bookkeeper`,`accountant`,`expenses`],"projects.tracker":[`project`,`task`,`to do list`,`bug`,`ticket`],"events.calendar":[`appointment`,`schedule appointments`,`event`,`meeting`,`reservation`],"sales.pipeline":[`lead`,`pipeline`,`prospect`,`follow up`,`sales funnel`]};function _i(e,t){let n=mi(e);if(!n)return null;let r=n.split(` `);return r.length===1&&di.has(n)?null:{text:n,tier:t,weak:t!==`name`&&r.every(e=>hi.has(e)),words:r.length}}function Z(e,t,n){let r=_i(t,n);if(!r)return;let i=e.terms.find(e=>e.text===r.text);if(i){li[r.tier]>li[i.tier]&&(i.tier=r.tier,i.weak=r.weak);return}e.terms.push(r)}function vi(e){return mi(e).split(` `).filter(e=>e&&!di.has(e))}var yi=[`theme`,`colour`,`color`,`colour scheme`,`dark mode`,`light mode`,`brand`,`branding`,`style`,`warmer`,`cooler`,`font`];function bi(e,t=[],n={}){let r=[];for(let t of e){let e={kind:`recipe`,id:t.id,terms:[],exact:mi(t.label)};Z(e,t.label,`name`),Z(e,(t.id.split(`.`).pop()??``).replace(/[-_]/g,` `),`name`);for(let n of vi(t.label))Z(e,n,`synonym`);for(let n of t.synonyms)Z(e,n,`synonym`);for(let n of gi[t.id]??[])Z(e,n,`keyword`);r.push(e)}for(let e of t){let t={kind:`cookbook`,id:e.id,terms:[],exact:mi(e.name)};Z(t,e.name,`name`),Z(t,e.id.replace(/[-_]/g,` `),`name`);for(let n of e.keywords??[])Z(t,n,`keyword`);r.push(t)}if(n.theme){let e={kind:`theme`,id:`theme`,terms:[]};for(let t of yi)Z(e,t,`keyword`);r.push(e)}return{entries:r}}function xi(e,t){let n=mi(t),r=` ${n} `,i=[];for(let t of e.entries){let e=0,a=!1,o=[];for(let n of t.terms)r.includes(` ${n.text} `)&&(o.push(n.text),e+=li[n.tier]*(n.words>1?ui:1)*(n.weak?.5:1),n.weak||(a||=!0));o.length&&(t.exact&&t.exact===n&&(e+=1),i.push({kind:t.kind,id:t.id,score:e,confidence:a?`strong`:`weak`,terms:o}))}return i.sort((e,t)=>t.score-e.score||e.id.localeCompare(t.id))}var Si=5,Ci=2,wi=[{says:`I run a bakery`,cookbook:`bakery`,answer:{reply:`The Bakery cookbook covers that.`,add:[],remove:[],cookbook:`bakery`}},{says:`I need to send invoices`,recipes:[`commerce.invoicing`],answer:{reply:`Added invoicing for billing customers.`,add:[`commerce.invoicing`],remove:[]}},{says:`we don't need the pipeline`,recipes:[`sales.pipeline`],answer:{reply:`Removed leads and pipeline.`,add:[],remove:[`sales.pipeline`]}},{says:`we're in Canada, 13% tax`,settings:!0,answer:{reply:`Set to Canadian dollars and 13% tax.`,add:[],remove:[],settings:{currency:`CAD`,taxRate:13}}},{says:`make it warmer`,theme:!0,answer:{reply:`Gave it a warm amber brand colour.`,add:[],remove:[],theme:{primary:`#d97706`}}},{says:`hello`,answer:{reply:`Hi. What kind of business is it?`,add:[],remove:[]}}];function Ti(e,t,n,r){return wi.filter(i=>(i.recipes??[]).every(t=>e.has(t))&&(!i.cookbook||t.has(i.cookbook))&&(!i.settings||n)&&(!i.theme||r)).map(e=>`"${e.says}" -> ${JSON.stringify(e.answer)}`)}function Ei(e){return`${Number((e*100).toFixed(4))}%`}function Di(e,t,n=[],r,i,a){let o=i!==void 0,s=(i??[]).filter(e=>e.kind===`recipe`).slice(0,Si).map(e=>e.id),c=(i??[]).filter(e=>e.kind===`cookbook`).slice(0,Ci).map(e=>e.id),l=new Set([...s,...t]),u=new Set(c),d=e=>{let t=e.synonyms.length?` Also called: ${e.synonyms.join(`, `)}.`:``;return`- ${e.id}: ${e.label}. ${e.summary}${t}`},f=[`You help assemble a small business app. Reply as JSON.`,`"reply": answer what they just said in one sentence of 12 words or fewer. No greeting; never repeat a reply.`,`"add"/"remove": recipe ids, only what they ask to add or drop; else []. Dependencies are automatic.`];n.length&&f.push(`"cookbook": id only if their business clearly fits, else null.`),r&&f.push(`"settings": only what they state: currency (ISO), taxRate (percent), paymentTerms; else omit, and do not mention them otherwise.`),a&&f.push(`"theme": only if they ask for a look: {"preset": material|glass|studio|smrt|happyvertical} or {"primary": "#rrggbb"}, optional "colorScheme": light|dark; else omit.`);let p=Ti(new Set(e.map(e=>e.id)),new Set(n.map(e=>e.id)),!!r,!!a);p.length&&f.push(``,`Examples:`,...p);let m=!!a&&(i??[]).some(e=>e.kind===`theme`);if(s.length||c.length||m){let e=[];m&&e.push(`theming (use "theme")`),c.length&&e.push(`cookbook ${c.join(`, `)}`),s.length&&e.push(`recipes ${s.join(`, `)}`),f.push(``,`Looks relevant: ${e.join(`; `)}.`)}let h=e=>`- ${e.id}: ${e.name}. ${e.summary}`,g=e=>e.join(`, `),_=e.filter(e=>!o||l.has(e.id)),v=o?e.filter(e=>!l.has(e.id)):[];if(f.push(``),_.length&&f.push(`Recipes:`,..._.map(d)),v.length&&f.push(`Other recipes: ${g(v.map(e=>`${e.id} (${e.label})`))}.`),n.length){let e=n.filter(e=>!o||u.has(e.id)),t=o?n.filter(e=>!u.has(e.id)):[];f.push(``),e.length&&f.push(`Cookbooks:`,...e.map(h)),t.length&&f.push(`Other cookbooks: ${g(t.map(e=>`${e.id} (${e.name})`))}.`)}if(f.push(``,`Currently on: ${t.length?t.join(`, `):`none`}.`),r){let e=r.paymentTerms?`, terms ${r.paymentTerms}`:``;f.push(`Settings: currency ${r.currency}, tax ${Ei(r.taxRate)}${e}.`)}return a&&f.push(`Theme: ${te(a.current)}.`),f.join(`
|
|
24
|
+
`)}var Oi=`Plan your app`,ki=`What would you like to build?`,Ai=400,ji=e=>Object.keys(e).length>0;function Mi(e,t,n){let r=e.run({name:t,input:n});return r.ok?{summary:r.receipt.summary,undoId:r.receipt.undoId}:{summary:``}}var Ni=(e,t,n)=>Mi(e,t,n).summary;function Pi(e,t){let n=[];for(let r of t){let t=e.run(r);if(!t.ok){n.push(`The server's ${r.name} was refused: ${t.error.message}`);break}t.receipt.summary&&n.push(t.receipt.summary)}return n.join(` `)}function Fi(e,t){let n=t.add.length?e.run({name:`add_recipes`,input:{ids:t.add}}):null,r=t.remove.length?e.run({name:`remove_recipes`,input:{ids:t.remove}}):null,i=n?.ok?n.receipt.changes?.added??[]:[],a=r?.ok?r.receipt.changes?.removed??[]:[];return{added:i.filter(e=>!a.includes(e)),removed:a.filter(e=>!i.includes(e)),kept:r?.ok?r.receipt.changes?.kept??[]:[]}}function Ii(e){let t=e.now??(()=>Date.now()),n=0,r=e=>`${e}-${++n}`,i={id:`planner`,title:Oi,isResolved:!1,messageCount:0,lastMessageAt:null},a=[],o=new Map,s=null,c=(e,n,o,s)=>{let c={id:r(`m`),threadId:i.id,content:n,role:e,createdAt:new Date(t()),...o?{clientRequestId:o}:{}};return s&&(c.toolCallData=s),a.push(c),i.messageCount=a.length,i.lastMessageAt=c.createdAt,c},l=e.controller??ar({store:e.store,settings:e.settings,theme:e.theme}),u=bi(e.recipes,e.cookbooks??[],{theme:!!e.theme}),d=c(`assistant`,ki);async function f(t){let n=e.model();if(!n)return{content:(typeof e.unavailable==`function`?e.unavailable():e.unavailable)??`Download a model first, then I can help. The cards on the Planner page work without one.`};s=new AbortController;try{let r=e.cookbooks??[],i=a.filter(e=>e!==d).slice(0,-1).slice(-6).map(e=>({role:e.role,content:e.content})),o=xi(u,t),c=oi(await n.message(t,{history:[{role:`system`,content:Di(e.recipes,e.store.ids,r,e.settings?.read(),o,e.theme?{current:e.theme.read()}:void 0)},...i],responseSchema:ti(e.recipes,r,!!e.settings,!!e.theme),temperature:0,maxTokens:Ai,signal:s.signal}),e.recipes,r,{commands:typeof e.acceptCommands==`function`?e.acceptCommands():e.acceptCommands}),f=Fi(l,c),p=e.settings&&ji(c.settings)?Ni(l,`set_settings`,c.settings):``,m=e.theme?.read(),h=e.theme&&ji(c.theme)?Mi(l,`set_theme`,c.theme):null,g=h?.undoId&&e.themeUndos?e.themeUndos.record(m,h.undoId):void 0,_=(c.commands??[]).length?Pi(l,c.commands??[]):``,v=[ci(f,e.recipes),p,h?.summary??``,_].filter(Boolean).join(` `),y=o.find(e=>e.kind===`cookbook`&&e.confidence===`strong`)?.id,b=c.cookbook??(y&&e.offers?.engaged?.()===!1?y:null),x=b?e.offers?.offer(b)??void 0:void 0,S=x?r.find(e=>e.id===b):void 0,C=c.reply||(S?`Set up ${S.name}?`:``),w=[C,v].filter(Boolean).join(` `);return C&&e.onReply?.(C),{content:w||`Done.`,refs:x&&g?[x,g]:x??g}}catch(e){return s?.signal.aborted?{content:`Stopped.`}:{content:`Sorry, the model could not answer: ${e instanceof Error?e.message:String(e)}`}}finally{s=null}}return{async listThreads(){return[i]},async createThread(){return i},async loadMessages(){return[...a]},async sendMessage(e){let t=o.get(e.clientRequestId);if(t)return t;let n=c(`user`,e.content,e.clientRequestId),r=await f(e.content),i={inProgress:!1,userMessage:n,assistantMessage:c(`assistant`,r.content,void 0,r.refs)};return o.set(e.clientRequestId,i),i},async uploadAttachment(e){throw Error(`The assistant cannot take attachments (${e.name}).`)},abort(){s?.abort()}}}function Li(e,t){return/^qwen3/i.test(t)?{message:(t,n)=>e.message(`${t} /no_think`,n)}:e}var Ri=class{#e=A(`idle`);get status(){return h(this.#e)}set status(e){S(this.#e,e,!0)}#t=A(w({modelId:``,consented:[]}));get prefs(){return h(this.#t)}set prefs(e){S(this.#t,e,!0)}#n=A(w({progress:0,text:``}));get progress(){return h(this.#n)}set progress(e){S(this.#n,e,!0)}#r=A(``);get error(){return h(this.#r)}set error(e){S(this.#r,e,!0)}#i=A(`browser`);get mode(){return h(this.#i)}set mode(e){S(this.#i,e,!0)}#a=A(``);get remoteLabel(){return h(this.#a)}set remoteLabel(e){S(this.#a,e,!0)}transport;offers=new Jr(xe);themeUndos;loaded=null;chat=null;abort=null;options;constructor(e){this.options=e,this.prefs=Zr(e.storage),this.status=(e.webgpu??Rr)()?`idle`:`unsupported`,this.themeUndos=e.theme?new ei(e.theme,e.controller):null,this.transport=Ii({model:()=>this.chat,store:e.store,recipes:e.recipes,cookbooks:be,offers:this.offers,settings:e.settings,theme:e.theme,controller:e.controller,themeUndos:this.themeUndos??void 0,acceptCommands:()=>this.mode===`host`,unavailable:()=>this.mode===`byo`?`Connect your model on the AI page first, then I can help. The cards on the Planner page work without one.`:this.mode===`host`?`The assistant is not available right now. The cards on the Planner page work without it.`:`Download a model first, then I can help. The cards on the Planner page work without one.`,onReply:t=>e.onReply?.(t)})}setMode(e){this.mode=e,e===`browser`?(this.options.webgpu??Rr)()||(this.status=`unsupported`):(this.unload(),this.status=`idle`)}useRemote(e,t){this.mode!==`browser`&&(this.chat=e,this.remoteLabel=e?t:``,this.status=e?`ready`:`idle`)}get consented(){return this.prefs.consented.includes(this.prefs.modelId)}select(e){pr(e)&&this.status!==`loading`&&(this.prefs={...this.prefs,modelId:e},Qr(this.options.storage,this.prefs))}async start(){if(this.status===`loading`||this.status===`unsupported`)return;let e=this.prefs.modelId;if(!pr(e))return;this.status=`loading`,this.error=``,this.progress={progress:0,text:`Starting`};let t=new AbortController;this.abort=t;try{let n=await Kr(e,e=>{this.progress=e},t.signal,this.options.host??Gr);this.loaded=n,this.prefs={...this.prefs,consented:[...new Set([...this.prefs.consented,e])]},Qr(this.options.storage,this.prefs),this.chat=Li(new Br({type:`webllm`,engine:n.engine,model:e}),e),this.status=`ready`}catch(e){t.signal.aborted?this.status=`idle`:(this.error=e instanceof Error?e.message:String(e),this.status=`error`)}finally{this.abort=null}}cancel(){this.abort?.abort()}unload(){this.abort?.abort(),this.transport.abort(),this.loaded?.dispose(),this.loaded=null,this.chat=null,this.status!==`unsupported`&&(this.status=`idle`)}},zi=[{id:`moonshine-base`,label:`Moonshine base`,note:`Accurate and still quick, best for talking as you go (default)`,adapter:`moonshine`,bytes:me[`moonshine-base`]?.bytes??0},{id:`moonshine-tiny`,label:`Moonshine tiny`,note:`Fastest, less accurate`,adapter:`moonshine`,bytes:me[`moonshine-tiny`]?.bytes??0},{id:`whisper-tiny.en`,label:`Whisper tiny`,note:`English, the original choice`,adapter:`whisper-local`,bytes:me[`whisper-tiny.en`]?.bytes??0}],Bi=`moonshine-base`;function Vi(e){return zi.find(t=>t.id===e)??zi[0]}var Hi=`smrt-planner:voice:v1`;function Ui(e){try{let t=e?.getItem(Hi);if(t){let e=JSON.parse(t),n=e.local===!0,r=zi.find(t=>t.id===e.model)?.id;return{local:n,preferLocal:e.preferLocal===!0,model:r??(n?`whisper-tiny.en`:`moonshine-base`)}}}catch{}return{local:!1,preferLocal:!1,model:Bi}}function Wi(e,t){try{e?.setItem(Hi,JSON.stringify(t))}catch{}}function Gi(e){return Ui(e).local}function Ki(e,t){Wi(e,{...Ui(e),local:t})}function qi(e){return Ui(e).preferLocal}function Ji(e){return Ui(e).model}function Yi(e,t,n){return e===`works`?`browser`:t&&n?`enable-cached`:`offer`}var Xi=class{#e=A(`checking`);get status(){return h(this.#e)}set status(e){S(this.#e,e,!0)}#t=A(!1);get cached(){return h(this.#t)}set cached(e){S(this.#t,e,!0)}#n=A(0);get progress(){return h(this.#n)}set progress(e){S(this.#n,e,!0)}#r=A(``);get error(){return h(this.#r)}set error(e){S(this.#r,e,!0)}#i=A(!1);get browserWorks(){return h(this.#i)}set browserWorks(e){S(this.#i,e,!0)}#a=A(!1);get preferLocal(){return h(this.#a)}set preferLocal(e){S(this.#a,e,!0)}#o=A(0);get size(){return h(this.#o)}set size(e){S(this.#o,e,!0)}#s=A(Bi);get model(){return h(this.#s)}set model(e){S(this.#s,e,!0)}#c=A(!1);get preparing(){return h(this.#c)}set preparing(e){S(this.#c,e,!0)}#l=A(null);get dictation(){return h(this.#l)}set dictation(e){S(this.#l,e)}handle=null;abort=null;options;generation=0;constructor(e){this.options=e}async init(){let e=++this.generation;try{await this.probeAndOffer(e)}catch(t){if(e!==this.generation)return;this.status=`error`,this.error=t instanceof Error?t.message:String(t)}}async probeAndOffer(e){let t=await(this.options.probe??Se)();if(e!==this.generation)return;this.browserWorks=t===`works`,this.preferLocal=qi(this.options.storage),this.model=Ji(this.options.storage);let n=this.preferLocal&&t===`works`?`unreliable`:t;if(n===`works`){this.dictation=(this.options.browserSource??(()=>pe({type:`browser-speech`})))(),this.status=`browser`;return}let r=this.options.createModel(this.model);this.handle?.dispose(),this.handle=r,this.size=r.estimateSize();let i=await r.isCached().catch(()=>!1);e===this.generation&&(this.cached=i,Yi(n,Gi(this.options.storage),this.cached)===`enable-cached`?await this.enable():this.status=`offer`)}async enable(){let e=this.handle;if(!e||this.status===`downloading`)return;let t=++this.generation;this.status=`downloading`,this.error=``,this.progress=0,this.preparing=!1;let n=new AbortController;this.abort=n;try{if(await e.load({onProgress:e=>{t===this.generation&&(this.progress=e.bytesTotal>0?e.bytesLoaded/e.bytesTotal:0,this.preparing=e.state===`extracting`)},signal:n.signal}),t!==this.generation)return;Ki(this.options.storage,!0),this.cached=!0;let r=Vi(this.model);this.dictation=(this.options.localSource??((e,t)=>pe({type:t.adapter,modelHandle:e})))(e,r),this.status=`ready`}catch(e){if(t!==this.generation)return;n.signal.aborted?this.status=`offer`:(this.error=e instanceof Error?e.message:String(e),this.status=`error`)}finally{t===this.generation&&(this.abort=null,this.preparing=!1)}}async setPreferLocal(e){this.browserWorks&&e!==this.preferLocal&&await this.restart({preferLocal:e})}async setModel(e){e!==this.model&&zi.some(t=>t.id===e)&&await this.restart({model:e})}async restart(e){this.generation++,this.abort?.abort(),this.abort=null,this.preparing=!1,this.handle?.dispose(),this.handle=null,this.dictation=null,Wi(this.options.storage,{...Ui(this.options.storage),...e}),this.status=`checking`,await this.init()}cancel(){this.abort?.abort()}dismiss(){this.status=`dismissed`}dispose(){this.generation++,this.abort?.abort(),this.handle?.dispose(),this.handle=null,this.dictation=null}},Zi=[`json_schema`,`json_object`,`none`],Qi=12e4;function $i(e){try{let t=new URL(e.trim());return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password?null:`${t.origin}${t.pathname.replace(/\/+$/,``)}`}catch{return null}}function ea(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t)}function ta(e){try{let t=new URL(e.trim());return t.protocol===`https:`||t.protocol===`http:`&&ea(t.hostname)}catch{return!1}}function na(e){try{return new URL(e.trim()).origin}catch{return null}}var ra=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`EndpointError`}};function ia(e){return e===401||e===403?`the endpoint refused the key (${e})`:e===404?`the endpoint or model was not found (404), check the address and model name`:e===429?`the endpoint is rate limiting you (429)`:`the endpoint answered ${e}`}function aa(e){let t=(e?.choices?.[0])?.message?.content;if(typeof t==`string`)return t;if(Array.isArray(t))return t.map(e=>e&&typeof e==`object`&&`text`in e?String(e.text):``).join(``);throw new ra(`the endpoint sent no reply text`)}function oa(e,t){if(e!==`none`)return e===`json_schema`&&t&&typeof t==`object`?{type:`json_schema`,json_schema:{name:`planner_turn`,strict:!1,schema:t}}:{type:`json_object`}}function sa(e){let t=$i(e.baseUrl);if(!t)throw new ra(`the address is not a valid http(s) URL`);if(e.apiKey&&!ta(t))throw new ra(`a key is only sent over https, or to this computer; use an https address`);let n=`${t}/chat/completions`,r=e.fetch??fetch,i=Math.max(0,Zi.indexOf(e.jsonMode??`json_schema`));async function a(t,i){let a=AbortSignal.timeout(Qi);try{return await r(n,{method:`POST`,headers:{"content-type":`application/json`,...e.apiKey?{authorization:`Bearer ${e.apiKey}`}:{}},body:JSON.stringify(t),credentials:`omit`,signal:i?AbortSignal.any([i,a]):a})}catch(e){throw i?.aborted?e:new ra(`could not reach the endpoint. Is it running, and does it allow this page (CORS)?`)}}async function o(t,n={}){let r=n.json!==!1;for(;;){let o=r?Zi[i]??`none`:`none`,s=oa(o,n.schema),c=await a({model:e.model,messages:t,stream:!1,temperature:n.temperature??0,...n.maxTokens?{max_tokens:n.maxTokens}:{},...s?{response_format:s}:{}},n.signal);if(c.ok)return r&&e.onJsonMode?.(o),aa(await c.json().catch(()=>null));if(r&&(c.status===400||c.status===422)&&i<Zi.length-1){i+=1;continue}throw new ra(ia(c.status),c.status)}}return{complete:o,message(e,t){return o([...(t?.history??[]).map(({role:e,content:t})=>({role:e,content:t})),{role:`user`,content:e}],{maxTokens:t?.maxTokens,signal:t?.signal,temperature:t?.temperature,schema:t?.responseSchema})}}}async function ca(e){try{return{ok:!0,message:(await sa({...e,jsonMode:`none`}).complete([{role:`user`,content:`Reply with the single word OK.`}],{maxTokens:8,json:!1})).trim()?`Connected to ${e.model}.`:`Connected to ${e.model}, but it sent an empty reply.`}}catch(e){return{ok:!1,message:e instanceof ra?`Could not connect: ${e.message}.`:`Could not connect.`}}}var la=[{id:`ollama`,label:`Ollama (on this computer)`,baseUrl:`http://localhost:11434/v1`,model:`llama3.2`,keyless:!0,cors:`Ollama only answers pages it trusts. Start it with OLLAMA_ORIGINS set to this site, for example OLLAMA_ORIGINS=https://your-site.example ollama serve (on macOS: launchctl setenv OLLAMA_ORIGINS https://your-site.example, then restart Ollama). A page served from http://localhost needs no change.`},{id:`openrouter`,label:`OpenRouter`,baseUrl:`https://openrouter.ai/api/v1`,model:`openai/gpt-4o-mini`,cors:`OpenRouter accepts calls from any web page, so no setup is needed. Use a key with a spending limit.`},{id:`openai`,label:`OpenAI`,baseUrl:`https://api.openai.com/v1`,model:`gpt-4o-mini`,cors:`OpenAI accepts calls from web pages when the request carries a key. Use a restricted key with a low spending limit: anyone with access to this browser profile can read it.`},{id:`custom`,label:`Custom OpenAI-compatible endpoint`,baseUrl:``,customUrl:!0,cors:`The server must answer the browser's CORS preflight: allow this site's origin, the "authorization" and "content-type" headers, and the POST and OPTIONS methods.`}];function ua(e){if(!e?.length)return[...la];let t=[];for(let n of e){let e=typeof n==`string`?la.find(e=>e.id===n):n;e&&!t.some(t=>t.id===e.id)&&t.push(e)}return t.length?t:[...la]}var da=`smrt-planner:inference:v1`,fa=`smrt-planner:inference-key:v1`,pa=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function ma(e){let t={preset:``,active:!1,entries:{}};try{let n=e?.getItem(da);if(!n)return t;let r=JSON.parse(n);if(!pa(r))return t;if(typeof r.preset==`string`&&(t.preset=r.preset),t.active=r.active===!0,pa(r.entries))for(let[e,n]of Object.entries(r.entries))pa(n)&&typeof n.baseUrl==`string`&&typeof n.model==`string`&&(t.entries[e]={baseUrl:n.baseUrl,model:n.model})}catch{}return t}function ha(e){let t={};try{let n=e?.getItem(fa),r=n?JSON.parse(n):null;if(pa(r))for(let[e,n]of Object.entries(r))pa(n)&&typeof n.key==`string`&&n.key&&typeof n.origin==`string`&&n.origin&&(t[e]={origin:n.origin,key:n.key})}catch{}return t}var ga=class{presets;#e=A(``);get presetId(){return h(this.#e)}set presetId(e){S(this.#e,e,!0)}#t=A(w({}));get entries(){return h(this.#t)}set entries(e){S(this.#t,e,!0)}#n=A(w({}));get keys(){return h(this.#n)}set keys(e){S(this.#n,e,!0)}#r=A(!1);get active(){return h(this.#r)}set active(e){S(this.#r,e,!0)}#i=A(`idle`);get testStatus(){return h(this.#i)}set testStatus(e){S(this.#i,e,!0)}#a=A(``);get testMessage(){return h(this.#a)}set testMessage(e){S(this.#a,e,!0)}options;constructor(e){this.options=e,this.presets=ua(e.presets);let t=ma(e.storage);this.keys=ha(e.storage),this.entries=t.entries,this.presetId=this.presets.some(e=>e.id===t.preset)?t.preset:this.presets[0]?.id??``,this.active=t.active&&this.complete}get preset(){return this.presets.find(e=>e.id===this.presetId)}get baseUrl(){return this.entries[this.presetId]?.baseUrl??this.preset?.baseUrl??``}get model(){return this.entries[this.presetId]?.model??this.preset?.model??``}get key(){let e=this.keys[this.presetId];return e&&e.origin===na(this.baseUrl)?e.key:``}get keyForOtherAddress(){let e=this.keys[this.presetId];return!!e&&e.origin!==na(this.baseUrl)}get complete(){let e=$i(this.baseUrl);return!!e&&!!this.model.trim()&&(!!this.preset?.keyless||!!this.key.trim()&&ta(e))}select(e){this.presets.some(t=>t.id===e)&&(this.presetId=e,this.resetTest(),this.save())}setBaseUrl(e){this.entries={...this.entries,[this.presetId]:{baseUrl:e,model:this.model}},this.edited()}setModel(e){this.entries={...this.entries,[this.presetId]:{baseUrl:this.baseUrl,model:e}},this.edited()}setKey(e){let t=na(this.baseUrl),n=e.trim();if(!n||!t){this.forgetKey();return}this.keys={...this.keys,[this.presetId]:{origin:t,key:n}},this.edited()}forgetKey(){let{[this.presetId]:e,...t}=this.keys;this.keys=t,this.edited()}chat(){if(!this.complete)return null;let e=$i(this.baseUrl);return e?sa({baseUrl:e,model:this.model.trim(),apiKey:this.preset?.keyless?void 0:this.key,fetch:this.options.fetch}):null}async test(){let e=$i(this.baseUrl);if(!e||!this.model.trim())return this.testStatus=`failed`,this.testMessage=`Enter an http(s) address and a model first.`,{ok:!1,message:this.testMessage};if(!this.preset?.keyless&&!this.key.trim())return this.testStatus=`failed`,this.testMessage=this.keyForOtherAddress?`The saved key was entered for another address. Enter it again for this one.`:`Enter a key first.`,{ok:!1,message:this.testMessage};if(!this.preset?.keyless&&!ta(e))return this.testStatus=`failed`,this.testMessage=`A key is only sent over https, or to this computer. Use an https address.`,{ok:!1,message:this.testMessage};this.testStatus=`testing`,this.testMessage=``;let t=await ca({baseUrl:e,model:this.model.trim(),apiKey:this.preset?.keyless?void 0:this.key,fetch:this.options.fetch});return this.testStatus=t.ok?`ok`:`failed`,this.testMessage=t.message,t}use(){return this.complete?(this.active=!0,this.save(),this.options.onChange?.(),!0):!1}stop(){this.active=!1,this.save(),this.options.onChange?.()}resetTest(){this.testStatus=`idle`,this.testMessage=``}edited(){this.resetTest();let e=this.active;e&&!this.complete&&(this.active=!1),this.save(),e&&this.options.onChange?.()}save(){try{let e={preset:this.presetId,active:this.active,entries:{...this.entries}};this.options.storage?.setItem(da,JSON.stringify(e)),this.options.storage?.setItem(fa,JSON.stringify(this.keys))}catch{}}};function _a(e,t,n){let r=ma(e);if(!r.active)return null;let i=ua(t).find(e=>e.id===r.preset),a=r.entries[r.preset],o=$i(a?.baseUrl??i?.baseUrl??``),s=(a?.model??i?.model??``).trim(),c=ha(e)[r.preset],l=c&&c.origin===na(o??``)?c.key:``;return!i||!o||!s||!i.keyless&&(!l||!ta(o))?null:sa({baseUrl:o,model:s,apiKey:i.keyless?void 0:l,fetch:n})}function va(e){return`${(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`my-app`}.cookbook.json`}function ya(e){return`${JSON.stringify(e,null,2)}\n`}function ba(e,t){let n=URL.createObjectURL(new Blob([ya(e)],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=va(t),document.body.append(r),r.click(),r.remove(),URL.revokeObjectURL(n)}var xa=`x-kitchen-token`,Sa=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Ca(e){if(typeof e!=`string`)return!1;let t=e.trim();if(t.startsWith(`/`)&&!t.startsWith(`//`))return!0;try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`}catch{return!1}}function wa(e){if(!Sa(e))return;let{endpoint:t}=e;if(Ca(t))return{endpoint:t.trim(),...Object.hasOwn(e,`token`)?{tokenInConfig:!0}:{}}}var Ta=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[];async function Ea(e,t,n=fetch){let r;try{r=await n(e.endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`,[xa]:e.token},body:ya(t)})}catch{return{ok:!1,errors:["The kitchen could not be reached. Is `smrt kitchen` still running?"]}}let i;try{i=await r.json()}catch{i=void 0}if(r.ok&&Sa(i)&&i.ok===!0)return{ok:!0,result:{dir:typeof i.dir==`string`?i.dir:``,mode:i.mode===`update`?`update`:`new`,installed:i.installed===!0,added:Ta(i.added),nextSteps:Ta(i.nextSteps)}};let a=Sa(i)?Ta(i.errors):[];return Sa(i)&&typeof i.error==`string`&&a.push(i.error),{ok:!1,errors:a.length?a:[`The kitchen answered ${r.status}.`]}}var Da={mode:`browser`},Oa=`planner.config.json`,ka=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Aa(e){if(typeof e!=`string`)return!1;let t=e.trim();if(!t)return!1;if(t.startsWith(`/`)&&!t.startsWith(`//`))return!0;try{let e=new URL(t);return e.protocol===`http:`||e.protocol===`https:`}catch{return!1}}function ja(e){if(!ka(e))return null;let{id:t,label:n,baseUrl:r,model:i,keyless:a,cors:o}=e;return typeof t!=`string`||!/^[a-z0-9][a-z0-9-]{0,31}$/.test(t)||typeof n!=`string`||!n.trim()||!Aa(r)||r.startsWith(`/`)?null:{id:t,label:n.trim(),baseUrl:r.trim(),...typeof i==`string`&&i.trim()?{model:i.trim()}:{},...a===!0?{keyless:!0}:{},...typeof o==`string`&&o.trim()?{cors:o.trim()}:{}}}var Q=e=>({config:Da,notice:`The assistant settings could not be used (${e}), so it runs in your browser instead.`});function Ma(e){if(!ka(e))return Q(`not an object`);let t=e.inference;if(t===void 0)return{config:Da};if(!ka(t))return Q(`"inference" is not an object`);let n=t.mode;if(n===void 0||n===`browser`)return{config:Da};if(n===`host`){let e=t.host;return!ka(e)||!Aa(e.endpoint)?Q(`host mode needs host.endpoint, an http(s) URL or path`):{config:{mode:`host`,host:{endpoint:e.endpoint.trim()}}}}if(n===`byo`){let e=t.byo;if(e===void 0)return{config:{mode:`byo`}};if(!ka(e))return Q(`"byo" is not an object`);if(e.presets===void 0)return{config:{mode:`byo`,byo:{}}};if(!Array.isArray(e.presets)||e.presets.length===0)return Q(`byo.presets must be a non-empty list`);let n=[];for(let t of e.presets){if(typeof t==`string`&&t.trim()){n.push(t.trim());continue}let e=ja(t);if(!e)return Q(`a byo preset is malformed`);n.push(e)}return{config:{mode:`byo`,byo:{presets:n}}}}return Q(`unknown mode "${String(n)}"`)}function Na(e){try{let t=JSON.parse(e),n=Ma(t),r=ka(t)?wa(t.kitchen):void 0;return r?{...n,kitchen:r}:n}catch{return Q(`it is not valid JSON`)}}function Pa(e){return Ma({inference:e})}async function Fa(e=``,t=fetch){let n;try{n=await t(`${e.replace(/\/$/,``)}/${Oa}`,{headers:{accept:`application/json`},cache:`no-cache`})}catch{return{config:Da}}if(n.status===404)return{config:Da};if(!n.ok)return Q(`the file answered ${n.status}`);let r=await n.text();return/^\s*</.test(r)?{config:Da}:Na(r)}var Ia=1e3,La=2e3,Ra=6e4,za=(e,t)=>e.length>t?e.slice(0,t):e;function Ba(e){let t=e.fetch??fetch;return{async message(n,r){let i=(r?.history??[]).filter(e=>e.role===`user`||e.role===`assistant`).slice(-6).map(e=>({role:e.role,content:za(e.content,Ia)})),a={version:1,message:za(n,La),snapshot:e.snapshot(),...i.length?{history:i}:{}},o=AbortSignal.timeout(Ra),s=r?.signal?AbortSignal.any([r.signal,o]):o,c=await t(e.endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`,...e.headers?.()},body:JSON.stringify(a),signal:s});if(!c.ok)throw Error(`the server answered ${c.status}`);return await c.text()}}}function Va(e){return[Ha(e.think),Wa(e.hear),Ga(e.speak)]}function Ha(e){let t={id:`think`,name:`Think`};if(e.mode===`host`)return{...t,state:e.status===`ready`?`ready`:`available`,label:`Think: Server`,where:`Server`};if(e.mode===`byo`){let n=e.remote?`Your model: ${e.remote}`:``;return e.status===`ready`&&e.remote?{...t,state:`ready`,label:`Think: ${n}`,where:n}:{...t,state:`available`,label:`Think: your own model not connected`,where:`Your model`}}return{...Ua(e),where:`In browser`}}function Ua(e){let t={id:`think`,name:`Think`};return e.status===`unsupported`?{...t,state:`off`,label:`Think: unavailable, this browser has no WebGPU`}:e.status===`ready`?{...t,state:`ready`,label:`Think: ${e.model} ready`}:e.status===`loading`?{...t,state:`available`,label:`Think: ${e.model} loading, ${Math.round(e.progress*100)}%`}:{...t,state:`available`,label:e.downloaded?`Think: ${e.model} downloaded, not loaded`:`Think: not set up`}}function Wa(e){let t={id:`hear`,name:`Hear`};return e.mic?e.status===`browser`?{...t,state:`ready`,label:`Hear: voice typing ready, using your browser`}:e.status===`ready`?{...t,state:`ready`,label:`Hear: voice typing ready, using the downloaded model`}:e.status===`downloading`?{...t,state:`available`,label:`Hear: downloading the speech model`}:{...t,state:`available`,label:`Hear: not set up`}:{...t,state:`off`,label:`Hear: unavailable, this browser has no microphone access`}}function Ga(e){let t={id:`speak`,name:`Speak`};return e.supported?e.readAloud?{...t,state:`ready`,label:`Speak: reading replies aloud with browser voices`}:{...t,state:`available`,label:`Speak: not switched on`}:{...t,state:`off`,label:`Speak: unavailable, this browser has no speech synthesis`}}function Ka(e){return e.dismissed||e.built?!1:!(e.thinkDownloaded||e.hearDownloaded||e.readAloud)}var qa=`smrt-planner:ai:v1`;function Ja(e){let t={dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1};try{let n=e?.getItem(qa);if(!n)return t;let r=JSON.parse(n);t.dismissed=r.dismissed===!0,t.readAloud=r.readAloud===!0,t.handsFree=r.handsFree===!0,t.sendOnPause=r.sendOnPause===!0}catch{}return t}function Ya(e,t){try{e?.setItem(qa,JSON.stringify(t))}catch{}}var $=new class{session;voice;#e=A(w({dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1}));get prefs(){return h(this.#e)}set prefs(e){S(this.#e,e,!0)}#t=A(!1);get hydrated(){return h(this.#t)}set hydrated(e){S(this.#t,e,!0)}#n=A(!1);get firstRun(){return h(this.#n)}set firstRun(e){S(this.#n,e,!0)}#r=A(!1);get speaking(){return h(this.#r)}set speaking(e){S(this.#r,e,!0)}#i=A(w(Da));get inference(){return h(this.#i)}set inference(e){S(this.#i,e,!0)}#a=A(``);get notice(){return h(this.#a)}set notice(e){S(this.#a,e,!0)}#o=A(null);get byo(){return h(this.#o)}set byo(e){S(this.#o,e,!0)}pending=0;generation=0;options;pendingConfig=!1;builtAtHydrate=!1;synth;mic;constructor(e){this.options=e,this.session=new Ri({...e.session,storage:e.storage,onReply:e=>this.speak(e)}),this.voice=new Xi({...e.voice,storage:e.storage}),this.synth=e.synth===void 0?typeof speechSynthesis<`u`?speechSynthesis:null:e.synth,this.mic=e.mic??(typeof navigator<`u`&&!!navigator.mediaDevices)}hydrate(e){this.hydrated||(this.prefs=Ja(this.options.storage),this.hydrated=!0,this.builtAtHydrate=e,this.pendingConfig||this.decideFirstRun(),this.voice.init())}awaitConfig(){this.pendingConfig=!0}configure(e){let{config:t,notice:n}=e;if(this.pendingConfig=!1,this.inference=t,this.notice=n??``,this.session.setMode(t.mode),this.byo=null,t.mode===`host`&&t.host){let{controller:e,store:n,settings:r,theme:i}=this.options.session,a=e??ar({store:n,settings:r,theme:i});this.session.useRemote(Ba({endpoint:t.host.endpoint,snapshot:()=>a.snapshot(),fetch:this.options.fetch}),`Server`)}else t.mode===`byo`&&(this.byo=new ga({storage:this.options.storage,presets:t.byo?.presets,fetch:this.options.fetch,onChange:()=>this.syncByo()}),this.syncByo());this.hydrated&&this.decideFirstRun()}syncByo(){let e=this.byo;e&&this.session.useRemote(e.active?e.chat():null,e.model)}decideFirstRun(){this.firstRun=this.inference.mode!==`host`&&Ka({thinkDownloaded:this.session.prefs.consented.length>0||this.session.status===`ready`,hearDownloaded:Gi(this.options.storage),readAloud:this.prefs.readAloud,dismissed:this.prefs.dismissed,built:this.builtAtHydrate})}get capabilities(){let e=pr(this.session.prefs.modelId),t=this.hydrated;return Va({think:{status:t?this.session.status:`idle`,model:e?hr(e):`model`,progress:this.session.progress.progress,downloaded:t&&this.session.prefs.consented.length>0,mode:this.session.mode,remote:this.session.remoteLabel},hear:{status:t?this.voice.status:`checking`,mic:!t||this.mic},speak:{supported:!t||this.synth!==null,readAloud:t&&this.prefs.readAloud}})}get privacyNote(){return this.inference.mode===`host`?`Your messages and a short summary of your plan go to this site's server. Voice typing and reading aloud stay on this device.`:this.inference.mode===`byo`?`Your messages and a short summary of your plan go to the model endpoint you choose, and nowhere else. Voice typing and reading aloud stay on this device.`:`Everything runs on this device. Nothing you type or say leaves the page.`}get speakSupported(){return this.synth!==null}continueFirstRun(){this.firstRun=!1}dismissFirstRun(){this.firstRun=!1,this.setPrefs({...this.prefs,dismissed:!0})}setReadAloud(e){(!e||this.synth)&&(e||this.cancelSpeech(),this.setPrefs({...this.prefs,readAloud:e}))}setHandsFree(e){this.setPrefs({...this.prefs,handsFree:e})}setSendOnPause(e){this.setPrefs({...this.prefs,sendOnPause:e})}get sendOnPauseActive(){return this.handsFreeActive&&this.prefs.sendOnPause}get handsFreeActive(){return this.prefs.handsFree&&this.voice.status===`ready`}speak(e){if(!this.prefs.readAloud||!this.synth||!e.trim())return;this.cancelSpeech();let t=e.split(/\n{2,}/).map(e=>e.trim()).filter(Boolean),n=this.generation;this.pending=t.length,this.speaking=!0;let r=()=>{n===this.generation&&(this.pending=Math.max(0,this.pending-1),this.pending===0&&(this.speaking=!1))};for(let e of t){let t=new SpeechSynthesisUtterance(e);t.onend=r,t.onerror=r,this.synth.speak(t)}}cancelSpeech(){this.generation+=1,this.pending=0,this.speaking=!1,this.synth?.cancel()}setPrefs(e){this.prefs=e,Ya(this.options.storage,e)}}({storage:I(),session:{store:le,recipes:se,controller:ur,settings:{read:()=>F.settings(),write:e=>F.setSettings(e)},theme:{read:()=>F.snapshot().theme,write:e=>F.setTheme(e)}},voice:{createModel:it}}),Xa=`M11 4.2C10.4 3 8.6 2.8 7.6 3.8C6.2 3.6 5 4.8 5.2 6.1C3.8 6.6 3.3 8.2 4.1 9.3C3 10.2 3 11.9 4 12.8C3.6 14.2 4.4 15.6 5.8 15.9C6.2 17.3 7.6 18.2 9 17.9C9.7 19.2 11 19.6 11 19.6ZM13 4.2 C13.6 3 15.4 2.8 16.4 3.8 C17.8 3.6 19 4.8 18.8 6.1 C20.2 6.6 20.7 8.2 19.9 9.3 C21 10.2 21 11.9 20 12.8 C20.4 14.2 19.6 15.6 18.2 15.9 C17.8 17.3 16.4 18.2 15 17.9 C14.3 19.2 13 19.6 13 19.6 ZM10.2 7.4C8.6 7.8 7.5 7 7 6.2L7.7 5.8C8.2 6.5 9 6.8 10 6.5ZM10.3 11C8.4 11.6 6.6 10.8 5.9 9.6L6.6 9.2C7.2 10.2 8.6 10.7 10.1 10.2ZM10.2 15C8.5 15.6 6.8 15 6 13.9L6.7 13.5C7.4 14.3 8.6 14.6 10 14.2ZM13.8 7.4 C15.4 7.8 16.5 7 17 6.2 L16.3 5.8 C15.8 6.5 15 6.8 14 6.5 ZM13.7 11 C15.6 11.6 17.4 10.8 18.1 9.6 L17.4 9.2 C16.8 10.2 15.4 10.7 13.9 10.2 ZM13.8 15 C15.5 15.6 17.2 15 18 13.9 L17.3 13.5 C16.6 14.3 15.4 14.6 14 14.2 Z`,Za=`M17 20c-.29 0-.56-.06-.76-.15-.71-.37-1.21-.88-1.71-2.38-.51-1.56-1.47-2.29-2.39-3-.79-.61-1.61-1.24-2.32-2.53C9.29 10.98 9 9.93 9 9c0-2.8 2.2-5 5-5s5 2.2 5 5h2c0-3.93-3.07-7-7-7S7 5.07 7 9c0 1.26.38 2.65 1.07 3.9.91 1.65 1.98 2.48 2.85 3.15.81.62 1.39 1.07 1.71 2.05.6 1.82 1.37 2.84 2.73 3.55.51.23 1.07.35 1.64.35 2.21 0 4-1.79 4-4h-2c0 1.1-.9 2-2 2zM7.64 2.64L6.22 1.22C4.23 3.21 3 5.96 3 9s1.23 5.79 3.22 7.78l1.41-1.41C6.01 13.74 5 11.49 5 9s1.01-4.74 2.64-6.36zM11.5 9c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5-1.12-2.5-2.5-2.5-2.5 1.12-2.5 2.5z`,Qa=`M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z`,$a=p(`<p class="notice svelte-19u3zp7" role="status"> </p>`),eo=p(`<p class="status svelte-19u3zp7">Server</p> <p class="meta svelte-19u3zp7">This site's server answers the assistant. What you type, and a short
|
|
25
|
+
summary of your plan, is sent to it. Nothing is downloaded.</p>`,1),to=p(`<option> </option>`),no=p(`<p class="meta svelte-19u3zp7">A key is saved for another address, so it is not used here. Paste it again for this address.</p>`),ro=p(`<div class="field svelte-19u3zp7"><!> <!></div> <!> <p class="meta svelte-19u3zp7"> <button class="link svelte-19u3zp7" type="button">Forget the key</button></p>`,1),io=p(`<p class="meta svelte-19u3zp7"><strong>Browser access.</strong> </p>`),ao=p(`<p> </p>`),oo=p(`<p class="status svelte-19u3zp7" role="status"> </p>`),so=p(`<label class="svelte-19u3zp7">Model provider <!></label> <div class="field svelte-19u3zp7"><!> <!></div> <div class="field svelte-19u3zp7"><!> <!></div> <!> <!> <p class="meta svelte-19u3zp7">What you type, and a short summary of your plan, is sent to this
|
|
26
|
+
endpoint.</p> <!> <!> <div class="actions svelte-19u3zp7"><!> <!></div>`,1),co=p(`<p role="status" class="svelte-19u3zp7">This browser has no WebGPU, which the model needs. Try a recent
|
|
27
|
+
Chrome, Edge or Safari on a computer. The Planner works without it.</p>`),lo=p(`<p class="meta svelte-19u3zp7"> </p>`),uo=p(`<p class="meta svelte-19u3zp7"> <!></p>`),fo=p(`<p class="status svelte-19u3zp7" role="status"> </p> <div class="actions svelte-19u3zp7"><!></div>`,1),po=p(`<div role="status" aria-live="polite"><progress max="100" aria-label="Model download progress" class="svelte-19u3zp7"> </progress> <p class="meta svelte-19u3zp7"> </p></div> <div class="actions svelte-19u3zp7"><!></div>`,1),mo=p(`<p class="error svelte-19u3zp7" role="alert"> </p>`),ho=p(`<p class="status svelte-19u3zp7"> </p> <!> <div class="actions svelte-19u3zp7"><!></div>`,1),go=p(`<label class="svelte-19u3zp7">Model <!></label> <!> <!> <!>`,1),_o=p(`<section class="card svelte-19u3zp7" aria-labelledby="ai-think"><header class="svelte-19u3zp7"><span class="badge svelte-19u3zp7"><!></span> <div><h2 id="ai-think" class="svelte-19u3zp7">Think</h2> <p class="sub svelte-19u3zp7"> </p></div></header> <!></section>`),vo=p(`<p class="meta svelte-19u3zp7" role="status">Checking this browser.</p>`),yo=p(`<p class="status svelte-19u3zp7">Built into your browser.</p>`),bo=p(`<p class="meta svelte-19u3zp7">Getting ready…</p>`),xo=p(`<progress max="100" aria-label="Speech model download" class="svelte-19u3zp7"> </progress> <p class="meta svelte-19u3zp7"> </p>`,1),So=p(`<div role="status" aria-live="polite"><!></div> <div class="actions svelte-19u3zp7"><!></div>`,1),Co=p(`<p class="status svelte-19u3zp7"> </p>`),wo=p(`<p class="meta svelte-19u3zp7"> </p> <!> <div class="actions svelte-19u3zp7"><!></div>`,1),To=p(`<label class="svelte-19u3zp7">Speech model <!></label> <p class="meta svelte-19u3zp7"> </p>`,1),Eo=p(`<!> <p class="meta svelte-19u3zp7"> </p> <!> <p class="meta svelte-19u3zp7">Sends your message after a short pause. Needs Hands-free.</p>`,1),Do=p(`<section class="card svelte-19u3zp7" aria-labelledby="ai-hear"><header class="svelte-19u3zp7"><span class="badge svelte-19u3zp7"><!></span> <div><h2 id="ai-hear" class="svelte-19u3zp7">Hear</h2> <p class="sub svelte-19u3zp7">Voice typing, speech to text</p></div></header> <!> <!> <!> <!></section>`),Oo=p(`<p class="status svelte-19u3zp7">Browser voices</p> <!> <p class="meta svelte-19u3zp7">A better voice you can download is coming.</p>`,1),ko=p(`<p role="status" class="svelte-19u3zp7">This browser has no speech synthesis.</p>`),Ao=p(`<section class="card svelte-19u3zp7" aria-labelledby="ai-speak"><header class="svelte-19u3zp7"><span class="badge svelte-19u3zp7"><!></span> <div><h2 id="ai-speak" class="svelte-19u3zp7">Speak</h2> <p class="sub svelte-19u3zp7">Read replies aloud, text to speech</p></div></header> <!></section>`),jo=p(`<!> <div class="cards svelte-19u3zp7"><!> <!> <!></div>`,1);function Mo(e,p){i(p,!0);let b=g(p,`show`,19,()=>[`think`,`hear`,`speak`]),C=j(()=>$.session),w=j(()=>$.voice),D=j(()=>$.capabilities),M=e=>h(D).find(t=>t.id===e)?.state??`available`,te=j(()=>$.inference.mode),P=j(()=>$.byo),ne=j(()=>h(D).find(e=>e.id===`think`)?.where??``),F=j(()=>pr(h(C).prefs.modelId)),re=A(0);T(()=>{vr().then(e=>{S(re,e,!0)})});let I=j(()=>pr(gr)),ie=j(()=>!!h(I)&&h(C).prefs.modelId!==`Qwen3-4B-q4f16_1-MLC`&&h(C).status!==`loading`&&h(C).status!==`ready`&&_r(h(I),h(re))),se=j(()=>Math.round(h(C).progress.progress*100)),ce=j(()=>Math.round(h(w).progress*100)),le=j(()=>Math.round(h(w).size/1e6)),ue=j(()=>Vi(h(w).model)),de=j(()=>h(w).status===`ready`);var pe=jo(),me=y(pe),he=e=>{var n=$a(),r=x(n,!0);_(()=>t(r,$.notice)),m(e,n)};d(me,e=>{$.notice&&e(he)});var ge=E(me,2),_e=O(ge),ve=e=>{var i=_o(),f=O(i),p=O(f),g=O(p);fe(g,{get path(){return Xa},size:22}),u(p);var b=E(p,2),S=E(O(b),2),w=x(S);u(b),u(f);var T=E(f,2),D=e=>{var t=eo();l(2),m(e,t)},A=e=>{let i=j(()=>h(P).preset);var f=so(),p=y(f),g=E(O(p));ae(g,{get value(){return h(P).presetId},onchange:e=>h(P).select(e.currentTarget.value),children:(e,n)=>{var r=o(),i=y(r);a(i,17,()=>h(P).presets,e=>e.id,(e,n)=>{var r=to(),i=x(r,!0),a={};_(()=>{t(i,h(n).label),a!==(a=h(n).id)&&(r.value=(r.__value=a)??``)}),m(e,r)}),m(e,r)},$$slots:{default:!0}}),u(p);var v=E(p,2),b=O(v);oe(b,{for:`byo-url`,label:`Address`});var S=E(b,2);{let e=j(()=>!h(i)?.customUrl);ee(S,{id:`byo-url`,type:`url`,autocomplete:`off`,spellcheck:!1,placeholder:`https://example.com/v1`,get value(){return h(P).baseUrl},get readonly(){return h(e)},oninput:e=>h(P).setBaseUrl(e.currentTarget.value)})}u(v);var C=E(v,2),w=O(C);oe(w,{for:`byo-model`,label:`Model`});var T=E(w,2);ee(T,{id:`byo-model`,type:`text`,autocomplete:`off`,spellcheck:!1,get value(){return h(P).model},oninput:e=>h(P).setModel(e.currentTarget.value)}),u(C);var D=E(C,2),A=e=>{var n=ro(),r=y(n),i=O(r);oe(i,{for:`byo-key`,label:`Key`});var a=E(i,2);ee(a,{id:`byo-key`,type:`password`,autocomplete:`off`,spellcheck:!1,placeholder:`Paste your key`,get value(){return h(P).key},oninput:e=>h(P).setKey(e.currentTarget.value)}),u(r);var o=E(r,2),c=e=>{var t=no();m(e,t)};d(o,e=>{h(P).keyForOtherAddress&&e(c)});var l=E(o,2),f=O(l),p=E(f);u(l),_(()=>t(f,`Stored only in this browser, and sent only to ${(h(P).baseUrl||`the address above`)??``} (https, or this computer). `)),s(`click`,p,()=>h(P).forgetKey()),m(e,n)};d(D,e=>{h(i)?.keyless||e(A)});var M=E(D,2),te=e=>{var n=io(),r=E(O(n));u(n),_(()=>t(r,` ${h(i).cors??``}`)),m(e,n)};d(M,e=>{h(i)?.cors&&e(te)});var ne=E(M,4),F=e=>{var i=ao(),a=x(i,!0);_(()=>{r(i,1,n(h(P).testStatus===`failed`?`error`:`status`),`svelte-19u3zp7`),k(i,`role`,h(P).testStatus===`failed`?`alert`:`status`),t(a,h(P).testStatus===`testing`?`Testing…`:h(P).testMessage)}),m(e,i)};d(ne,e=>{(h(P).testStatus===`ok`||h(P).testStatus===`failed`||h(P).testStatus===`testing`)&&e(F)});var re=E(ne,2),I=e=>{var n=oo(),r=x(n);_(()=>t(r,`Using ${h(P).model??``}.`)),m(e,n)};d(re,e=>{h(P).active&&e(I)});var ie=E(re,2),L=O(ie);{let e=j(()=>h(P).testStatus===`testing`);N(L,{variant:`secondary`,get disabled(){return h(e)},onclick:()=>void h(P).test(),children:(e,t)=>{l();var n=c(`Test connection`);m(e,n)},$$slots:{default:!0}})}var se=E(L,2),ce=e=>{N(e,{variant:`secondary`,onclick:()=>h(P).stop(),children:(e,t)=>{l();var n=c(`Stop using`);m(e,n)},$$slots:{default:!0}})},le=e=>{{let t=j(()=>!h(P).complete);N(e,{get disabled(){return h(t)},onclick:()=>h(P).use(),children:(e,t)=>{l();var n=c(`Use this model`);m(e,n)},$$slots:{default:!0}})}};d(se,e=>{h(P).active?e(ce):e(le,-1)}),u(ie),m(e,f)},re=e=>{var t=co();m(e,t)},L=e=>{var n=go(),r=y(n),i=E(O(r));{let e=j(()=>h(C).status===`loading`);ae(i,{get value(){return h(C).prefs.modelId},get disabled(){return h(e)},onchange:e=>h(C).select(e.currentTarget.value),children:(e,n)=>{var r=o(),i=y(r);a(i,17,()=>fr,e=>e.id,(e,n)=>{var r=to(),i=x(r,!0),a={};_(()=>{t(i,h(n).label),a!==(a=h(n).id)&&(r.value=(r.__value=a)??``)}),m(e,r)}),m(e,r)},$$slots:{default:!0}})}u(r);var s=E(r,2),f=e=>{var n=lo(),r=x(n);_((e,n)=>t(r,`${e??``} to download once; needs
|
|
28
|
+
${n??``} of graphics memory. Use Wi-Fi on a
|
|
29
|
+
metered connection.`),[()=>mr(h(F).downloadMB),()=>mr(h(F).vramMB)]),m(e,n)};d(s,e=>{h(F)&&e(f)});var p=E(s,2),g=e=>{var n=uo(),r=O(n),i=E(r);N(i,{variant:`secondary`,onclick:()=>h(C).select(gr),children:(e,n)=>{l();var r=c();_(e=>t(r,`Use ${e??``}`),[()=>hr(h(I))]),m(e,r)},$$slots:{default:!0}}),u(n),_(e=>t(r,`Your graphics card has room for ${e??``}, which
|
|
30
|
+
understands more. `),[()=>hr(h(I))]),m(e,n)};d(p,e=>{h(ie)&&h(I)&&e(g)});var b=E(p,2),S=e=>{var n=fo(),r=y(n),i=x(r),a=E(r,2),o=O(a);N(o,{variant:`secondary`,onclick:()=>h(C).unload(),children:(e,t)=>{l();var n=c(`Unload`);m(e,n)},$$slots:{default:!0}}),u(a),_(e=>t(i,`${e??``} is ready.`),[()=>h(F)?hr(h(F)):`The model`]),m(e,n)},w=e=>{var n=po(),r=y(n),i=O(r),a=x(i),o=E(i,2),s=x(o);u(r);var d=E(r,2),f=O(d);N(f,{variant:`secondary`,onclick:()=>h(C).cancel(),children:(e,t)=>{l();var n=c(`Cancel`);m(e,n)},$$slots:{default:!0}}),u(d),_(()=>{v(i,h(se)),t(a,`${h(se)??``}%`),t(s,`${h(se)??``}%. ${h(C).progress.text??``}`)}),m(e,n)},T=e=>{var n=ho(),r=y(n),i=x(r,!0),a=E(r,2),o=e=>{var n=mo(),r=x(n);_(()=>t(r,`The model could not start: ${h(C).error??``}`)),m(e,n)};d(a,e=>{h(C).status===`error`&&e(o)});var s=E(a,2),f=O(s);N(f,{onclick:()=>void h(C).start(),children:(e,n)=>{l();var r=c();_(()=>t(r,h(C).consented?`Load`:`Download`)),m(e,r)},$$slots:{default:!0}}),u(s),_(()=>t(i,h(C).consented?`Downloaded. Load it to start.`:`Not downloaded.`)),m(e,n)};d(b,e=>{h(C).status===`ready`?e(S):h(C).status===`loading`?e(w,1):e(T,-1)}),m(e,n)};d(T,e=>{h(te)===`host`?e(D):h(te)===`byo`&&h(P)?e(A,1):h(C).status===`unsupported`?e(re,2):e(L,-1)}),u(i),_(e=>{k(i,`data-state`,e),t(w,`The assistant's language model${h(ne)?`: ${h(ne)}`:``}`)},[()=>M(`think`)]),m(e,i)},ye=j(()=>b().includes(`think`));d(_e,e=>{h(ye)&&e(ve)});var be=E(_e,2),xe=e=>{var n=Do(),r=O(n),i=O(r),s=O(i);fe(s,{get path(){return Za},size:22}),u(i),l(2),u(r);var f=E(r,2),p=e=>{var t=vo();m(e,t)},g=e=>{var t=yo();m(e,t)},b=e=>{var n=So(),r=y(n),i=O(r),a=e=>{var t=bo();m(e,t)},o=e=>{var n=xo(),r=y(n),i=x(r),a=E(r,2),o=x(a);_(()=>{v(r,h(ce)),t(i,`${h(ce)??``}%`),t(o,`${h(w).cached?`Turning on`:`Downloading`} ${h(ce)??``}%`)}),m(e,n)};d(i,e=>{h(w).preparing?e(a):e(o,-1)}),u(r);var s=E(r,2),f=O(s);N(f,{variant:`secondary`,onclick:()=>h(w).cancel(),children:(e,t)=>{l();var n=c(`Cancel`);m(e,n)},$$slots:{default:!0}}),u(s),m(e,n)},S=e=>{var n=Co(),r=x(n);_(()=>t(r,`${h(ue).label??``}, running on this device.`)),m(e,n)},C=e=>{var n=wo(),r=y(n),i=x(r),a=E(r,2),o=e=>{var n=mo(),r=x(n);_(()=>t(r,`Voice typing could not start: ${h(w).error??``}`)),m(e,n)};d(a,e=>{h(w).status===`error`&&e(o)});var s=E(a,2),f=O(s);N(f,{onclick:()=>void h(w).enable(),children:(e,n)=>{l();var r=c();_(()=>t(r,h(w).cached?`Turn on`:`Download`)),m(e,r)},$$slots:{default:!0}}),u(s),_(e=>t(i,`${h(w).browserWorks?`You chose the downloadable model.`:`Your browser can't do voice typing on its own.`}
|
|
31
|
+
${e??``}, downloaded once.
|
|
32
|
+
${h(w).cached?`It is already on this device.`:``}`),[()=>mr(h(le))]),m(e,n)};d(f,e=>{h(w).status===`checking`?e(p):h(w).status===`browser`?e(g,1):h(w).status===`downloading`?e(b,2):h(w).status===`ready`?e(S,3):e(C,-1)});var T=E(f,2),D=e=>{var n=To(),r=y(n),i=E(O(r));{let e=j(()=>h(w).status===`downloading`);ae(i,{get value(){return h(w).model},get disabled(){return h(e)},onchange:e=>void h(w).setModel(e.currentTarget.value),children:(e,n)=>{var r=o(),i=y(r);a(i,17,()=>zi,e=>e.id,(e,n)=>{var r=to(),i=x(r),a={};_(e=>{t(i,`${h(n).label??``}, ${e??``}`),a!==(a=h(n).id)&&(r.value=(r.__value=a)??``)},[()=>mr(Math.round(h(n).bytes/1e6))]),m(e,r)}),m(e,r)},$$slots:{default:!0}})}u(r);var s=E(r,2),c=x(s);_(()=>t(c,`${h(ue).note??``}.`)),m(e,n)};d(T,e=>{h(w).status!==`browser`&&h(w).status!==`checking`&&e(D)});var A=E(T,2),ee=e=>{L(e,{get checked(){return h(w).preferLocal},label:`Use the downloadable model instead`,onchange:e=>void h(w).setPreferLocal(e.currentTarget.checked)})};d(A,e=>{h(w).browserWorks&&h(w).status!==`downloading`&&e(ee)});var te=E(A,2),P=e=>{var n=Eo(),r=y(n);{let e=j(()=>!h(de)&&!$.prefs.handsFree);L(r,{get checked(){return $.prefs.handsFree},get disabled(){return h(e)},label:`Hands-free`,onchange:e=>$.setHandsFree(e.currentTarget.checked)})}var i=E(r,2),a=x(i),o=E(i,2);{let e=j(()=>!$.handsFreeActive);L(o,{get checked(){return $.prefs.sendOnPause},get disabled(){return h(e)},label:`Send when I stop talking`,onchange:e=>$.setSendOnPause(e.currentTarget.checked)})}l(2),_(()=>t(a,`Start when I talk, stop when I pause.
|
|
33
|
+
${h(de)?``:`Needs the downloaded speech model.`}`)),m(e,n)};d(te,e=>{h(w).status!==`checking`&&e(P)}),u(n),_(e=>k(n,`data-state`,e),[()=>M(`hear`)]),m(e,n)},Se=j(()=>b().includes(`hear`));d(be,e=>{h(Se)&&e(xe)});var Ce=E(be,2),we=e=>{var t=Ao(),n=O(t),r=O(n),i=O(r);fe(i,{get path(){return Qa},size:22}),u(r),l(2),u(n);var a=E(n,2),o=e=>{var t=Oo(),n=E(y(t),2);L(n,{get checked(){return $.prefs.readAloud},label:`Read replies aloud`,onchange:e=>$.setReadAloud(e.currentTarget.checked)}),l(2),m(e,t)},s=e=>{var t=ko();m(e,t)};d(a,e=>{$.speakSupported?e(o):e(s,-1)}),u(t),_(e=>k(t,`data-state`,e),[()=>M(`speak`)]),m(e,t)},Te=j(()=>b().includes(`speak`));d(Ce,e=>{h(Te)&&e(we)}),u(ge),m(e,pe),f()}D([`click`]);export{Vn as C,$n as S,Se as T,pr as _,$ as a,lr as b,Fa as c,_a as d,Ii as f,mr as g,qr as h,Xa as i,Ea as l,$r as m,Za as n,Ba as o,ei as p,Qa as r,Pa as s,Mo as t,ba as u,hr as v,rt as w,cr as x,ur as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CL1MxOva.js","../chunks/Dd_uD5pT.js","../chunks/Chyo8rdT.js","../chunks/OJ_lLTHH.js","../chunks/Dt-HX3Vu.js","../chunks/xihTtKlq.js","../chunks/1okeBSoq.js","../chunks/D0VgZnk1.js","../chunks/BWPhGFHl.js","../assets/feedback.BVKAwFck.css","../chunks/CWtfVMDz.js","../chunks/CPRHZZeW.js","../assets/Button.DkP0qkG9.css","../assets/ui.B1A1Zl2p.css","../chunks/DVRKjN-E.js","../assets/SegmentedControl.B8SrQacd.css","../chunks/WxSPP8QW.js","../chunks/CygC84VT.js","../assets/forms.BChZ2RWM.css","../chunks/p6bgzXiY.js","../chunks/D_J_XtJy.js","../assets/dist.C5nHBk_O.css","../chunks/BKwRT_1p.js","../assets/store.CGDwHkkF.css","../assets/workspace.BIMkuZDb.css","../chunks/CV-2zt0K.js","../chunks/uBIymjUX.js","../chunks/CRQ1Pmzr.js","../chunks/B4Kevpe0.js","../chunks/BYcBM-fh.js","../chunks/ufuM4XBq.js","../chunks/D333l2GL.js","../chunks/C7zBd-pD.js","../chunks/D7hhQvDO.js","../chunks/CA-A9Ngs.js","../chunks/CyUMm_Wp.js","../chunks/BQxY8kkL.js","../chunks/leQCwW2d.js","../assets/AiSetup.Cb22AigN.css","../chunks/CMhpRMKg.js","../chunks/Dp9GVO-9.js","../chunks/BYde9M_U.js","../chunks/DyGfbRG-.js","../chunks/DqcD-WtP.js","../chunks/DNRgqfTx.js","../chunks/DD7gpKb2.js","../assets/SectionIcons.5Udq9vN-.css","../assets/SectionActions.CTkVuNMF.css","../chunks/CgAkqYsL.js","../assets/0.B5zXkXe_.css","../nodes/1.BO731RRg.js","../nodes/2.BEw046av.js","../chunks/QukgIHDX.js","../assets/percent.LH0z-ozZ.css","../assets/2.CyaWdRdI.css","../nodes/3.DvwpTAQA.js","../assets/3.BlPQOes8.css","../nodes/4.qrT4bnmS.js","../nodes/5.DDLa2uhV.js","../nodes/6.DN0QTY6z.js","../chunks/DRByVC-c.js","../chunks/DJtH-lRi.js","../chunks/BS4h9ES-.js","../assets/FieldMapForm.BCU-4pO4.css","../chunks/BJfAXhak.js","../chunks/D71UrO5c.js","../assets/ModelPage.Dd3LcMta.css","../nodes/7.C_8N82Wq.js","../nodes/8.D2Mszsua.js","../assets/8.2gQeKBp_.css","../nodes/9.CLYsywul.js","../chunks/CmmuWmp6.js","../assets/ConnectTools.BgIJOOGW.css","../assets/9.HOPT4xtg.css","../nodes/10.1nQxyH9H.js","../assets/10.hpcnxvK1.css","../nodes/11.Cw0JnQF3.js","../assets/11.D7zoXfVV.css","../nodes/12.BmZyLHbM.js","../assets/12.CPobm1ED.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,B as t,Et as n,H as r,K as i,M as a,Nt as o,R as s,Tt as c,U as l,V as u,Z as d,a as f,at as p,d as m,dt as h,gt as g,i as _,ot as v,pt as y,r as b,st as x,ut as S,vt as C,xt as w}from"../chunks/Chyo8rdT.js";import{t as T}from"../chunks/uBIymjUX.js";import"../chunks/xihTtKlq.js";var E={},D=l(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=l(`<!> <!>`,1);function k(l,_){n(_,!0);let T=f(_,`components`,23,()=>[]),E=f(_,`data_0`,3,null),k=f(_,`data_1`,3,null);x(()=>_.stores.page.set(_.page)),v(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),_.stores.page.notify()});let A=C(!1),j=C(!1),M=C(null);b(()=>{let t=_.stores.page.subscribe(()=>{d(A)&&(g(j,!0),e().then(()=>{g(M,document.title||`untitled page`,!0)}))});return g(A,!0),t});let N=w(()=>_.constructors[1]);var P=O(),F=h(P),I=e=>{let t=w(()=>_.constructors[0]);var n=r(),i=h(n);a(i,()=>d(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,t)=>{var n=r(),i=h(n);a(i,()=>d(N),(e,t)=>{m(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),u(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),u(e,n)},L=e=>{let t=w(()=>_.constructors[0]);var n=r(),i=h(n);a(i,()=>d(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),u(e,n)};s(F,e=>{_.constructors[1]?e(I):e(L,-1)});var R=y(F,2),z=e=>{var n=D(),r=S(n),a=e=>{var n=i();p(()=>t(n,d(M))),u(e,n)};s(r,e=>{d(j)&&e(a)}),o(n),u(e,n)};s(R,e=>{d(A)&&e(z)}),u(l,P),c()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.CL1MxOva.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]),import.meta.url),()=>T(()=>import(`../nodes/1.BO731RRg.js`),__vite__mapDeps([50,2,1,5,42,3,4]),import.meta.url),()=>T(()=>import(`../nodes/2.BEw046av.js`),__vite__mapDeps([51,2,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,43,52,53,54]),import.meta.url),()=>T(()=>import(`../nodes/3.DvwpTAQA.js`),__vite__mapDeps([55,2,1,5,40,30,26,11,12,14,8,15,16,7,9,10,13,17,18,19,20,21,22,23,31,25,27,28,29,39,32,33,34,35,36,37,38,56]),import.meta.url),()=>T(()=>import(`../nodes/4.qrT4bnmS.js`),__vite__mapDeps([57,2,1,3,4,5,40,41]),import.meta.url),()=>T(()=>import(`../nodes/5.DDLa2uhV.js`),__vite__mapDeps([58,2,1,3,4,5,40,41]),import.meta.url),()=>T(()=>import(`../nodes/6.DN0QTY6z.js`),__vite__mapDeps([59,1,2,5,20,60,4,61,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,42,3,43,45,46,39,48,62,52,28,34,26,53,63,64,65,66]),import.meta.url),()=>T(()=>import(`../nodes/7.C_8N82Wq.js`),__vite__mapDeps([67,1,2,5,19,7,8,9,10,11,12,13,14,15,20,21,60,4,61,6,16,17,18,22,23,24,27,42,3,43,45,46,39,48,62,52,28,34,26,53,63,64,65,66]),import.meta.url),()=>T(()=>import(`../nodes/8.D2Mszsua.js`),__vite__mapDeps([68,2,1,5,17,8,11,12,14,15,18,20,69]),import.meta.url),()=>T(()=>import(`../nodes/9.CLYsywul.js`),__vite__mapDeps([70,1,2,5,20,60,4,71,10,8,11,12,13,72,73]),import.meta.url),()=>T(()=>import(`../nodes/10.1nQxyH9H.js`),__vite__mapDeps([74,1,2,5,14,8,15,17,11,12,18,19,7,9,10,13,20,21,45,46,60,4,62,27,22,43,52,28,34,26,53,63,75]),import.meta.url),()=>T(()=>import(`../nodes/11.Cw0JnQF3.js`),__vite__mapDeps([76,1,2,5,19,7,8,9,10,11,12,13,14,15,20,21,45,46,60,4,64,71,72,77]),import.meta.url),()=>T(()=>import(`../nodes/12.BmZyLHbM.js`),__vite__mapDeps([78,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,42,3,4,37,43,45,46,44,47,48,65,79]),import.meta.url)],M=[],N={"/":[2],"/ai":[3],"/blueprint":[4],"/cookbook":[5],"/m/[package]/[model]":[6],"/m/[package]/[model]/[view]":[7],"/packages":[8],"/packages/[id]":[9],"/recipes/[id]":[10],"/recipes/[id]/help":[11],"/s/[section]":[12]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,s as t}from"../chunks/OJ_lLTHH.js";export{t as load_css,e as start};
|