@happyvertical/smrt-planner 0.57.46 → 0.57.48
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/agents/commands.md +7 -0
- package/app/404.html +19 -19
- package/app/_app/immutable/assets/{AppShell.jj60-uz1.css → AppShell.CG6RWMlI.css} +1 -1
- package/app/_app/immutable/chunks/{DQhriYSc.js → 4LtOcaBE.js} +3 -3
- package/app/_app/immutable/chunks/{B7zMh4eE.js → B-8-yUjB.js} +2 -2
- package/app/_app/immutable/chunks/{B7laWNUS.js → BFMuWSdS.js} +1 -1
- package/app/_app/immutable/chunks/{3tUhXG5c.js → BPBRvzpY.js} +1 -1
- package/app/_app/immutable/chunks/{sURpipAP.js → BgheIFdR.js} +1 -1
- package/app/_app/immutable/chunks/{ZkVHW1BW.js → BmaS9P0m.js} +1 -1
- package/app/_app/immutable/chunks/{qVNDzqDw.js → Buo2f0Te.js} +1 -1
- package/app/_app/immutable/chunks/{jZnLYwnK.js → Bv-aQ8Aj.js} +33 -33
- package/app/_app/immutable/chunks/{O0G_zUp2.js → CA-hQkew.js} +1 -1
- package/app/_app/immutable/chunks/{MQGejU-d.js → CDxGUu_P.js} +1 -1
- package/app/_app/immutable/chunks/{CiLETTB4.js → CV8hLZGu.js} +1 -1
- package/app/_app/immutable/chunks/{CikDPSEe.js → CXGcS5nT.js} +1 -1
- package/app/_app/immutable/chunks/{8pp77JX5.js → C_GHoDnf.js} +1 -1
- package/app/_app/immutable/chunks/{B_7h-Ea7.js → CptQxNlB.js} +1 -1
- package/app/_app/immutable/chunks/{Brqz6DF8.js → DG-6gmv6.js} +1 -1
- package/app/_app/immutable/chunks/{BCVYd-Bn.js → DPHTfpZ-.js} +1 -1
- package/app/_app/immutable/chunks/Dl1TVSXs.js +1 -0
- package/app/_app/immutable/chunks/{D-85_QDF.js → Lh1dohEn.js} +1 -1
- package/app/_app/immutable/chunks/{B3N69a2G.js → Ov7HPsQO.js} +1 -1
- package/app/_app/immutable/chunks/{CRSjXxkg.js → TJZ_I42D.js} +1 -1
- package/app/_app/immutable/chunks/{B4eKDlPx.js → WMxUvZX5.js} +1 -1
- package/app/_app/immutable/chunks/YVnMuFgO.js +1 -0
- package/app/_app/immutable/chunks/{B93HNepa.js → fF6CuS6w.js} +1 -1
- package/app/_app/immutable/chunks/h393H8aC.js +29 -0
- package/app/_app/immutable/chunks/{CAj1OBTA.js → ikfX41zU.js} +1 -1
- package/app/_app/immutable/chunks/{XKy9F9JB.js → jwUyXd_G.js} +1 -1
- package/app/_app/immutable/chunks/{BGntB2Xa.js → mxcx68fD.js} +1 -1
- package/app/_app/immutable/chunks/{f__-Cfy6.js → omVPFCdB.js} +1 -1
- package/app/_app/immutable/chunks/{DysskI7C.js → qwS5uwXg.js} +1 -1
- package/app/_app/immutable/entry/{app.PvvEplc8.js → app.Dg3ZFzbr.js} +2 -2
- package/app/_app/immutable/entry/start.CAFWPrxp.js +1 -0
- package/app/_app/immutable/nodes/{0.BEDMTpOH.js → 0.BLpmxR-q.js} +1 -1
- package/app/_app/immutable/nodes/{1.C4JxXM4O.js → 1.BBsOKF0C.js} +1 -1
- package/app/_app/immutable/nodes/{10.Bj9Du6z8.js → 10.CpmLTKPZ.js} +1 -1
- package/app/_app/immutable/nodes/{11.CLCqIbJj.js → 11.ZfAf503E.js} +1 -1
- package/app/_app/immutable/nodes/{12.Cbj073U4.js → 12.CcMkIRbO.js} +1 -1
- package/app/_app/immutable/nodes/{13.C2DoaL8q.js → 13.BalRRhY9.js} +1 -1
- package/app/_app/immutable/nodes/{14.DaSZbCq3.js → 14.DbfdWFcd.js} +1 -1
- package/app/_app/immutable/nodes/{2.DcrKwYrN.js → 2.B6f7RJVW.js} +3 -3
- package/app/_app/immutable/nodes/{3.CwxqnWDQ.js → 3.CrNpOph8.js} +1 -1
- package/app/_app/immutable/nodes/{4.8DiWa9gO.js → 4.RFfBBOYW.js} +1 -1
- package/app/_app/immutable/nodes/{5.VHjN8TWj.js → 5.LCFtD87B.js} +1 -1
- package/app/_app/immutable/nodes/{6.DzVdClJj.js → 6.Br-7Jd5q.js} +1 -1
- package/app/_app/immutable/nodes/{7.BCdjkk7c.js → 7.GMDlPyU5.js} +1 -1
- package/app/_app/immutable/nodes/{8.Dv20P-Tw.js → 8.Z3PHnrlH.js} +1 -1
- package/app/_app/immutable/nodes/{9.DGRoW6wQ.js → 9.DahioMWO.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +22 -22
- package/app/ai/index.html +25 -25
- package/app/blueprint/index.html +20 -20
- package/app/cookbook/index.html +20 -20
- package/app/index.html +29 -29
- package/app/m/ads/AdDeliveryTier/index.html +24 -24
- package/app/m/ads/AdEvent/index.html +24 -24
- package/app/m/ads/AdFormat/index.html +24 -24
- package/app/m/ads/AdGroup/index.html +24 -24
- package/app/m/ads/AdVariation/index.html +24 -24
- package/app/m/analytics/AnalyticsDataStream/index.html +24 -24
- package/app/m/analytics/AnalyticsEvent/index.html +24 -24
- package/app/m/analytics/AnalyticsProperty/index.html +24 -24
- package/app/m/analytics/AnalyticsReport/index.html +24 -24
- package/app/m/approvals/ApprovalEvent/index.html +24 -24
- package/app/m/approvals/ApprovalPolicy/index.html +24 -24
- package/app/m/approvals/ApprovalRequest/index.html +24 -24
- package/app/m/assets/Asset/attachments/index.html +25 -25
- package/app/m/assets/Asset/index.html +24 -24
- package/app/m/assets/AssetAssociation/index.html +24 -24
- package/app/m/assets/AssetMetafield/index.html +24 -24
- package/app/m/assets/AssetStatus/index.html +24 -24
- package/app/m/assets/AssetType/index.html +24 -24
- package/app/m/assets/Folder/index.html +24 -24
- package/app/m/chat/AgentSession/index.html +24 -24
- package/app/m/chat/ChatMessage/index.html +24 -24
- package/app/m/chat/ChatParticipant/index.html +24 -24
- package/app/m/chat/ChatReaction/index.html +24 -24
- package/app/m/chat/ChatRoom/index.html +24 -24
- package/app/m/chat/ChatThread/index.html +24 -24
- package/app/m/chat/VoiceGatewayTurn/index.html +24 -24
- package/app/m/chat/VoiceSession/index.html +24 -24
- package/app/m/commerce/Agreement/index.html +24 -24
- package/app/m/commerce/Cart/index.html +24 -24
- package/app/m/commerce/Contract/index.html +24 -24
- package/app/m/commerce/ContractLineItem/index.html +24 -24
- package/app/m/commerce/Customer/index.html +24 -24
- package/app/m/commerce/DocumentTax/index.html +24 -24
- package/app/m/commerce/Estimate/index.html +24 -24
- package/app/m/commerce/Fulfillment/index.html +24 -24
- package/app/m/commerce/FulfillmentLineItem/index.html +24 -24
- package/app/m/commerce/HistoricalCustomerFunds/index.html +24 -24
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +24 -24
- package/app/m/commerce/HistoricalSalesLine/index.html +24 -24
- package/app/m/commerce/Invoice/index.html +24 -24
- package/app/m/commerce/InvoiceLineItem/index.html +24 -24
- package/app/m/commerce/Lease/index.html +24 -24
- package/app/m/commerce/LicenseSale/index.html +24 -24
- package/app/m/commerce/Order/index.html +24 -24
- package/app/m/commerce/Payment/index.html +24 -24
- package/app/m/commerce/PaymentAllocation/index.html +24 -24
- package/app/m/commerce/PaymentInstrument/index.html +24 -24
- package/app/m/commerce/PaymentIntent/index.html +24 -24
- package/app/m/commerce/Payout/index.html +24 -24
- package/app/m/commerce/ProductionOrder/index.html +24 -24
- package/app/m/commerce/PurchaseContract/index.html +24 -24
- package/app/m/commerce/PurchaseOrder/index.html +24 -24
- package/app/m/commerce/SalesContract/index.html +24 -24
- package/app/m/commerce/SupplierQuote/index.html +24 -24
- package/app/m/commerce/TaxCode/index.html +24 -24
- package/app/m/commerce/TaxComponent/index.html +24 -24
- package/app/m/commerce/TaxSettings/index.html +24 -24
- package/app/m/commerce/TaxSummaryReport/index.html +24 -24
- package/app/m/commerce/TenantPaymentAccount/index.html +24 -24
- package/app/m/commerce/Vendor/index.html +24 -24
- package/app/m/commerce/WholesaleOrder/index.html +24 -24
- package/app/m/content/Content/articles/index.html +25 -25
- package/app/m/content/Content/index.html +24 -24
- package/app/m/content/ContentContribution/index.html +24 -24
- package/app/m/content/ContentContributionAttachment/index.html +24 -24
- package/app/m/content/ContentContributionRevision/index.html +24 -24
- package/app/m/content/ContentContributionType/index.html +24 -24
- package/app/m/content/ContentContributor/index.html +24 -24
- package/app/m/content/ContentCorrection/index.html +24 -24
- package/app/m/content/ContentFeedSource/index.html +24 -24
- package/app/m/content/ContentGovernanceAssignment/index.html +24 -24
- package/app/m/content/ContentGovernancePolicy/index.html +24 -24
- package/app/m/content/ContentGovernanceProfile/index.html +24 -24
- package/app/m/content/ContentReference/index.html +24 -24
- package/app/m/content/ContentReview/index.html +24 -24
- package/app/m/content/ContentVersion/index.html +24 -24
- package/app/m/events/Event/index.html +24 -24
- package/app/m/events/EventParticipant/index.html +24 -24
- package/app/m/events/EventSeries/index.html +24 -24
- package/app/m/events/EventType/index.html +24 -24
- package/app/m/expenses/Expense/index.html +24 -24
- package/app/m/facts/Fact/index.html +24 -24
- package/app/m/facts/FactContent/index.html +24 -24
- package/app/m/facts/FactEvidence/index.html +24 -24
- package/app/m/facts/FactSource/index.html +24 -24
- package/app/m/facts/FactSubject/index.html +24 -24
- package/app/m/facts/FactTag/index.html +24 -24
- package/app/m/fields/FieldPolicy/index.html +24 -24
- package/app/m/fields/FieldPolicySuggestion/index.html +24 -24
- package/app/m/fields/FieldUsageCounter/index.html +24 -24
- package/app/m/human-resources/Employment/index.html +24 -24
- package/app/m/human-resources/EmploymentTerm/index.html +24 -24
- package/app/m/human-resources/HeldQualification/index.html +24 -24
- package/app/m/human-resources/Qualification/index.html +24 -24
- package/app/m/images/Image/index.html +24 -24
- package/app/m/inventory/InventoryLocation/index.html +24 -24
- package/app/m/inventory/Lot/index.html +24 -24
- package/app/m/inventory/LotCorrection/index.html +24 -24
- package/app/m/inventory/LotDocument/index.html +24 -24
- package/app/m/inventory/LotStockLevel/index.html +24 -24
- package/app/m/inventory/LotUsage/index.html +24 -24
- package/app/m/inventory/StockLevel/index.html +24 -24
- package/app/m/inventory/StockMovement/index.html +24 -24
- package/app/m/ledgers/Account/index.html +24 -24
- package/app/m/ledgers/Journal/index.html +24 -24
- package/app/m/ledgers/JournalEntry/index.html +24 -24
- package/app/m/ledgers/Ledger/index.html +24 -24
- package/app/m/manufacturing/Assembly/index.html +24 -24
- package/app/m/manufacturing/BillOfMaterials/index.html +24 -24
- package/app/m/manufacturing/BomLine/index.html +24 -24
- package/app/m/manufacturing/Operation/index.html +24 -24
- package/app/m/manufacturing/ProductionRun/index.html +24 -24
- package/app/m/manufacturing/ProductionRunCompletion/index.html +24 -24
- package/app/m/manufacturing/RoutingStep/index.html +24 -24
- package/app/m/marketing/Campaign/index.html +24 -24
- package/app/m/marketing/CampaignChannel/index.html +24 -24
- package/app/m/marketing/CampaignMetricSnapshot/index.html +24 -24
- package/app/m/messages/Account/index.html +24 -24
- package/app/m/messages/Attachment/index.html +24 -24
- package/app/m/messages/Blacklist/index.html +24 -24
- package/app/m/messages/Email/failed-sends/index.html +25 -25
- package/app/m/messages/Email/index.html +24 -24
- package/app/m/messages/Email/mailbox/index.html +25 -25
- package/app/m/messages/EmailAccount/index.html +24 -24
- package/app/m/messages/EmailAttachment/index.html +24 -24
- package/app/m/messages/EmailFolder/index.html +24 -24
- package/app/m/messages/Message/index.html +24 -24
- package/app/m/messages/MessagingEndpoint/index.html +24 -24
- package/app/m/messages/PersonaMessageRoute/index.html +24 -24
- package/app/m/messages/SlackAccount/index.html +24 -24
- package/app/m/messages/SlackMessage/index.html +24 -24
- package/app/m/messages/SlackMessage/slack-messages/index.html +25 -25
- package/app/m/messages/TelegramAccount/index.html +24 -24
- package/app/m/messages/Tweet/index.html +24 -24
- package/app/m/messages/TwitterAccount/index.html +24 -24
- package/app/m/messages/Whitelist/index.html +24 -24
- package/app/m/messages/ZulipAccount/index.html +24 -24
- package/app/m/places/Place/index.html +24 -24
- package/app/m/places/PlaceType/index.html +24 -24
- package/app/m/products/Category/index.html +24 -24
- package/app/m/products/Material/index.html +24 -24
- package/app/m/products/Product/index.html +24 -24
- package/app/m/products/Product/ingredients/index.html +25 -25
- package/app/m/products/ProductVariant/index.html +24 -24
- package/app/m/products/Sku/index.html +24 -24
- package/app/m/profiles/ApiKey/index.html +24 -24
- package/app/m/profiles/Bot/index.html +24 -24
- package/app/m/profiles/MagicLinkToken/index.html +24 -24
- package/app/m/profiles/NostrIdentity/index.html +24 -24
- package/app/m/profiles/OidcIdentity/index.html +24 -24
- package/app/m/profiles/Organization/index.html +24 -24
- package/app/m/profiles/Person/index.html +24 -24
- package/app/m/profiles/Profile/index.html +24 -24
- package/app/m/profiles/ProfileMetadata/index.html +24 -24
- package/app/m/profiles/ProfileMetafield/index.html +24 -24
- package/app/m/profiles/ProfileRelationship/index.html +24 -24
- package/app/m/profiles/ProfileRelationshipTerm/index.html +24 -24
- package/app/m/profiles/ProfileRelationshipType/index.html +24 -24
- package/app/m/profiles/ProfileType/index.html +24 -24
- package/app/m/projects/Comment/index.html +24 -24
- package/app/m/projects/Issue/index.html +24 -24
- package/app/m/projects/Label/index.html +24 -24
- package/app/m/projects/Project/index.html +24 -24
- package/app/m/projects/ProjectIntegration/index.html +24 -24
- package/app/m/projects/PullRequest/index.html +24 -24
- package/app/m/projects/Repository/index.html +24 -24
- package/app/m/properties/Property/index.html +24 -24
- package/app/m/properties/Zone/index.html +24 -24
- package/app/m/reports/RuntimeReport/index.html +24 -24
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +24 -24
- package/app/m/reports/SmrtReportLock/index.html +24 -24
- package/app/m/reports/SmrtReportRefreshTask/index.html +24 -24
- package/app/m/reports/SmrtReportRun/index.html +24 -24
- package/app/m/reports/SmrtReportSchedule/index.html +24 -24
- package/app/m/reports/SmrtReportWatermark/index.html +24 -24
- package/app/m/sales/Agreement/index.html +24 -24
- package/app/m/sales/AttributionException/index.html +24 -24
- package/app/m/sales/AttributionPolicy/index.html +24 -24
- package/app/m/sales/Commission/index.html +24 -24
- package/app/m/sales/CommissionAdjustment/index.html +24 -24
- package/app/m/sales/CommissionPayout/index.html +24 -24
- package/app/m/sales/CommissionPlan/index.html +24 -24
- package/app/m/sales/Earner/index.html +24 -24
- package/app/m/sales/EarnerSourceAttribution/index.html +24 -24
- package/app/m/sales/EarningEvent/index.html +24 -24
- package/app/m/sales/ExecutedAgreement/index.html +24 -24
- package/app/m/sales/Lead/index.html +24 -24
- package/app/m/sales/Opportunity/index.html +24 -24
- package/app/m/sales/OpportunityConversion/index.html +24 -24
- package/app/m/sales/PipelineDefinition/index.html +24 -24
- package/app/m/sales/PipelineStage/index.html +24 -24
- package/app/m/sales/Referral/index.html +24 -24
- package/app/m/sales/ReferralAgreement/index.html +24 -24
- package/app/m/sales/ReferralLink/index.html +24 -24
- package/app/m/sales/ReferralProgram/index.html +24 -24
- package/app/m/sales/ReferralTermSnapshot/index.html +24 -24
- package/app/m/sales/ReferralTouch/index.html +24 -24
- package/app/m/sales/Referrer/index.html +24 -24
- package/app/m/sales/SalesActivity/index.html +24 -24
- package/app/m/sales/SalesRepresentative/index.html +24 -24
- package/app/m/sites/Site/index.html +24 -24
- package/app/m/sites/SiteAgentBinding/index.html +24 -24
- package/app/m/social/OAuthState/index.html +24 -24
- package/app/m/social/SocialAccount/index.html +24 -24
- package/app/m/social/SocialPost/index.html +24 -24
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +24 -24
- package/app/m/subscriptions/BillingAdjustment/index.html +24 -24
- package/app/m/subscriptions/ClientCharge/index.html +24 -24
- package/app/m/subscriptions/CreditGrant/index.html +24 -24
- package/app/m/subscriptions/PricingRule/index.html +24 -24
- package/app/m/subscriptions/RetailCharge/index.html +24 -24
- package/app/m/subscriptions/SpendingPolicy/index.html +24 -24
- package/app/m/subscriptions/SubscriptionPlan/index.html +24 -24
- package/app/m/subscriptions/SubscriptionPlanVersion/index.html +24 -24
- package/app/m/subscriptions/TenantSubscription/index.html +24 -24
- package/app/m/subscriptions/TenantUsageMetric/index.html +24 -24
- package/app/m/support/ServiceTimeEntry/index.html +24 -24
- package/app/m/support/SupportAiRun/index.html +24 -24
- package/app/m/support/SupportAvailability/index.html +24 -24
- package/app/m/support/SupportCase/index.html +24 -24
- package/app/m/support/SupportCaseEvent/index.html +24 -24
- package/app/m/support/SupportChannelBinding/index.html +24 -24
- package/app/m/support/SupportCharge/index.html +24 -24
- package/app/m/support/SupportCompensation/index.html +24 -24
- package/app/m/support/SupportCompensationPlan/index.html +24 -24
- package/app/m/support/SupportEscalation/index.html +24 -24
- package/app/m/support/SupportInteraction/index.html +24 -24
- package/app/m/support/SupportPlan/index.html +24 -24
- package/app/m/support/SupportPolicy/index.html +24 -24
- package/app/m/support/SupportQualification/index.html +24 -24
- package/app/m/support/SupportServiceTarget/index.html +24 -24
- package/app/m/support/SupportSpecialist/index.html +24 -24
- package/app/m/support/SupportWorkLink/index.html +24 -24
- package/app/m/tags/Tag/index.html +24 -24
- package/app/m/tags/TagAlias/index.html +24 -24
- package/app/m/timesheets/AttendanceBreak/index.html +24 -24
- package/app/m/timesheets/AttendancePunch/index.html +24 -24
- package/app/m/timesheets/AttendanceSegment/index.html +24 -24
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +24 -24
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +24 -24
- package/app/m/timesheets/ServiceTimeEntry/index.html +24 -24
- package/app/m/users/Group/index.html +24 -24
- package/app/m/users/GroupMember/index.html +24 -24
- package/app/m/users/GroupRole/index.html +24 -24
- package/app/m/users/Membership/index.html +24 -24
- package/app/m/users/MembershipOverride/index.html +24 -24
- package/app/m/users/Permission/index.html +24 -24
- package/app/m/users/Role/index.html +24 -24
- package/app/m/users/RolePermission/index.html +24 -24
- package/app/m/users/Session/index.html +24 -24
- package/app/m/users/Tenant/index.html +24 -24
- package/app/m/users/TenantIntegration/index.html +24 -24
- package/app/m/users/TenantPermissionOverride/index.html +24 -24
- package/app/m/users/User/index.html +24 -24
- package/app/m/video/Character/index.html +24 -24
- package/app/m/video/CharacterAsset/index.html +24 -24
- package/app/m/video/CompositeJob/index.html +24 -24
- package/app/m/video/Performer/index.html +24 -24
- package/app/m/video/PerformerAsset/index.html +24 -24
- package/app/m/video/Scene/index.html +24 -24
- package/app/m/video/SceneAsset/index.html +24 -24
- package/app/m/video/VideoComposition/index.html +24 -24
- package/app/m/video/VideoCompositionAsset/index.html +24 -24
- package/app/m/video/VideoSequence/index.html +24 -24
- package/app/m/video/VideoSequenceAsset/index.html +24 -24
- package/app/m/video/VideoShot/index.html +24 -24
- package/app/m/video/VideoShotAsset/index.html +24 -24
- package/app/m/video/VideoShotCharacter/index.html +24 -24
- package/app/m/video/VideoWorkflow/index.html +24 -24
- package/app/m/voice/VoiceOutput/index.html +24 -24
- package/app/m/voice/VoiceProfile/index.html +24 -24
- package/app/m/voice/VoiceSample/index.html +24 -24
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +22 -22
- package/app/packages/analytics/index.html +22 -22
- package/app/packages/approvals/index.html +22 -22
- package/app/packages/assets/index.html +22 -22
- package/app/packages/chat/index.html +22 -22
- package/app/packages/comments/index.html +22 -22
- package/app/packages/commerce/index.html +22 -22
- package/app/packages/content/index.html +23 -23
- package/app/packages/events/index.html +22 -22
- package/app/packages/expenses/index.html +22 -22
- package/app/packages/facts/index.html +22 -22
- package/app/packages/fields/index.html +22 -22
- package/app/packages/human-resources/index.html +22 -22
- package/app/packages/images/index.html +22 -22
- package/app/packages/index.html +22 -22
- package/app/packages/ingestion/index.html +22 -22
- package/app/packages/inventory/index.html +22 -22
- package/app/packages/ledgers/index.html +22 -22
- package/app/packages/manufacturing/index.html +22 -22
- package/app/packages/marketing/index.html +23 -23
- package/app/packages/messages/index.html +22 -22
- package/app/packages/places/index.html +22 -22
- package/app/packages/preferences/index.html +22 -22
- package/app/packages/products/index.html +22 -22
- package/app/packages/profiles/index.html +23 -23
- package/app/packages/projects/index.html +22 -22
- package/app/packages/properties/index.html +22 -22
- package/app/packages/reactions/index.html +22 -22
- package/app/packages/reports/index.html +22 -22
- package/app/packages/sales/index.html +23 -23
- package/app/packages/sites/index.html +22 -22
- package/app/packages/social/index.html +22 -22
- package/app/packages/subscriptions/index.html +22 -22
- package/app/packages/support/index.html +22 -22
- package/app/packages/tags/index.html +22 -22
- package/app/packages/timesheets/index.html +22 -22
- package/app/packages/users/index.html +22 -22
- package/app/packages/video/index.html +22 -22
- package/app/packages/voice/index.html +22 -22
- package/app/packages/webhooks/index.html +22 -22
- package/app/recipes/account-access/help/index.html +22 -22
- package/app/recipes/account-access/index.html +24 -24
- package/app/recipes/activity/help/index.html +22 -22
- package/app/recipes/activity/index.html +24 -24
- package/app/recipes/ads.campaigns/help/index.html +22 -22
- package/app/recipes/ads.campaigns/index.html +24 -24
- package/app/recipes/affiliates.referrals/help/index.html +23 -23
- package/app/recipes/affiliates.referrals/index.html +24 -24
- package/app/recipes/agreements/help/index.html +22 -22
- package/app/recipes/agreements/index.html +24 -24
- package/app/recipes/analytics.reports/help/index.html +22 -22
- package/app/recipes/analytics.reports/index.html +24 -24
- package/app/recipes/approvals.requests/help/index.html +22 -22
- package/app/recipes/approvals.requests/index.html +24 -24
- package/app/recipes/assets/help/index.html +22 -22
- package/app/recipes/assets/index.html +24 -24
- package/app/recipes/billing/help/index.html +22 -22
- package/app/recipes/billing/index.html +24 -24
- package/app/recipes/chat.assistant/help/index.html +22 -22
- package/app/recipes/chat.assistant/index.html +24 -24
- package/app/recipes/comments/help/index.html +22 -22
- package/app/recipes/comments/index.html +24 -24
- package/app/recipes/commerce.customers/help/index.html +22 -22
- package/app/recipes/commerce.customers/index.html +24 -24
- package/app/recipes/commerce.estimates/help/index.html +22 -22
- package/app/recipes/commerce.estimates/index.html +24 -24
- package/app/recipes/commerce.purchases/help/index.html +22 -22
- package/app/recipes/commerce.purchases/index.html +24 -24
- package/app/recipes/commerce.sales/help/index.html +22 -22
- package/app/recipes/commerce.sales/index.html +24 -24
- package/app/recipes/commerce.vendors/help/index.html +22 -22
- package/app/recipes/commerce.vendors/index.html +24 -24
- package/app/recipes/commerce.wholesale/help/index.html +22 -22
- package/app/recipes/commerce.wholesale/index.html +24 -24
- package/app/recipes/content.articles/help/index.html +23 -23
- package/app/recipes/content.articles/index.html +24 -24
- package/app/recipes/events.calendar/help/index.html +22 -22
- package/app/recipes/events.calendar/index.html +24 -24
- package/app/recipes/expenses.tracking/help/index.html +22 -22
- package/app/recipes/expenses.tracking/index.html +24 -24
- package/app/recipes/fields.form-customization/help/index.html +22 -22
- package/app/recipes/fields.form-customization/index.html +24 -24
- package/app/recipes/human-resources.people/help/index.html +22 -22
- package/app/recipes/human-resources.people/index.html +24 -24
- package/app/recipes/human-resources.qualifications/help/index.html +22 -22
- package/app/recipes/human-resources.qualifications/index.html +24 -24
- package/app/recipes/ingestion/help/index.html +22 -22
- package/app/recipes/ingestion/index.html +24 -24
- package/app/recipes/integrations/help/index.html +22 -22
- package/app/recipes/integrations/index.html +24 -24
- package/app/recipes/inventory.stock/help/index.html +22 -22
- package/app/recipes/inventory.stock/index.html +24 -24
- package/app/recipes/ledgers.bookkeeping/help/index.html +22 -22
- package/app/recipes/ledgers.bookkeeping/index.html +24 -24
- package/app/recipes/manufacturing.assemblies/help/index.html +22 -22
- package/app/recipes/manufacturing.assemblies/index.html +24 -24
- package/app/recipes/manufacturing.production/help/index.html +22 -22
- package/app/recipes/manufacturing.production/index.html +24 -24
- package/app/recipes/marketing.campaigns/help/index.html +23 -23
- package/app/recipes/marketing.campaigns/index.html +24 -24
- package/app/recipes/messages/help/index.html +22 -22
- package/app/recipes/messages/index.html +24 -24
- package/app/recipes/places.locations/help/index.html +22 -22
- package/app/recipes/places.locations/index.html +24 -24
- package/app/recipes/products/help/index.html +22 -22
- package/app/recipes/products/index.html +24 -24
- package/app/recipes/projects.tracker/help/index.html +22 -22
- package/app/recipes/projects.tracker/index.html +24 -24
- package/app/recipes/reports.materialized/help/index.html +22 -22
- package/app/recipes/reports.materialized/index.html +24 -24
- package/app/recipes/reports.runtime/help/index.html +22 -22
- package/app/recipes/reports.runtime/index.html +24 -24
- package/app/recipes/sales.pipeline/help/index.html +22 -22
- package/app/recipes/sales.pipeline/index.html +24 -24
- package/app/recipes/social.posts/help/index.html +22 -22
- package/app/recipes/social.posts/index.html +24 -24
- package/app/recipes/subscriptions.plans/help/index.html +22 -22
- package/app/recipes/subscriptions.plans/index.html +24 -24
- package/app/recipes/support.tickets/help/index.html +22 -22
- package/app/recipes/support.tickets/index.html +24 -24
- package/app/recipes/tags.taxonomy/help/index.html +22 -22
- package/app/recipes/tags.taxonomy/index.html +24 -24
- package/app/recipes/team-collaboration/help/index.html +22 -22
- package/app/recipes/team-collaboration/index.html +24 -24
- package/app/recipes/timesheets.time-entries/help/index.html +22 -22
- package/app/recipes/timesheets.time-entries/index.html +24 -24
- package/app/recipes/video.library/help/index.html +22 -22
- package/app/recipes/video.library/index.html +24 -24
- package/app/recipes/voice.profiles/help/index.html +22 -22
- package/app/recipes/voice.profiles/index.html +24 -24
- package/app/s/custom-accounts/index.html +20 -20
- package/app/s/custom-appointments/index.html +20 -20
- package/app/s/custom-billing/index.html +20 -20
- package/app/s/custom-bookings/index.html +20 -20
- package/app/s/custom-buying/index.html +20 -20
- package/app/s/custom-checkout/index.html +20 -20
- package/app/s/custom-classes/index.html +20 -20
- package/app/s/custom-clients/index.html +20 -20
- package/app/s/custom-events/index.html +20 -20
- package/app/s/custom-fleet/index.html +20 -20
- package/app/s/custom-gigs/index.html +20 -20
- package/app/s/custom-giving/index.html +20 -20
- package/app/s/custom-instruments/index.html +20 -20
- package/app/s/custom-jobs/index.html +20 -20
- package/app/s/custom-kitchen/index.html +20 -20
- package/app/s/custom-lessons/index.html +20 -20
- package/app/s/custom-material/index.html +20 -20
- package/app/s/custom-meetings/index.html +20 -20
- package/app/s/custom-members/index.html +20 -20
- package/app/s/custom-merch/index.html +20 -20
- package/app/s/custom-money/index.html +20 -20
- package/app/s/custom-paint/index.html +20 -20
- package/app/s/custom-parts/index.html +20 -20
- package/app/s/custom-rentals/index.html +20 -20
- package/app/s/custom-roastery/index.html +20 -20
- package/app/s/custom-schedule/index.html +20 -20
- package/app/s/custom-shelf/index.html +20 -20
- package/app/s/custom-shop/index.html +20 -20
- package/app/s/custom-students/index.html +20 -20
- package/app/s/custom-wholesale/index.html +20 -20
- package/app/s/custom-work/index.html +20 -20
- package/app/s/custom-yard/index.html +20 -20
- package/app/s/section-access-control/index.html +20 -20
- package/app/s/section-account-security/index.html +20 -20
- package/app/s/section-accounting/index.html +20 -20
- package/app/s/section-activity/index.html +20 -20
- package/app/s/section-agreements/index.html +20 -20
- package/app/s/section-analytics/index.html +20 -20
- package/app/s/section-approvals/index.html +20 -20
- package/app/s/section-assets/index.html +20 -20
- package/app/s/section-billing/index.html +20 -20
- package/app/s/section-calendar/index.html +20 -20
- package/app/s/section-catalog/index.html +20 -20
- package/app/s/section-chat.assistant/index.html +20 -20
- package/app/s/section-comments/index.html +20 -20
- package/app/s/section-fields.form-customization/index.html +20 -20
- package/app/s/section-grow/index.html +20 -20
- package/app/s/section-ingestion/index.html +20 -20
- package/app/s/section-integrations/index.html +20 -20
- package/app/s/section-make/index.html +20 -20
- package/app/s/section-messages/index.html +20 -20
- package/app/s/section-more/index.html +20 -20
- package/app/s/section-operations/index.html +20 -20
- package/app/s/section-places/index.html +20 -20
- package/app/s/section-projects/index.html +20 -20
- package/app/s/section-publish/index.html +20 -20
- package/app/s/section-purchasing/index.html +20 -20
- package/app/s/section-reports.materialized/index.html +20 -20
- package/app/s/section-reports.runtime/index.html +20 -20
- package/app/s/section-sales/index.html +20 -20
- package/app/s/section-staff/index.html +20 -20
- package/app/s/section-support/index.html +20 -20
- package/app/s/section-taxonomy/index.html +20 -20
- package/app/s/section-team/index.html +20 -20
- package/app/s/section-work/index.html +20 -20
- package/dist/catalog/catalog.json +64 -202
- package/dist/core/index.js +101291 -29
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +59 -58
- package/app/_app/immutable/chunks/BMLjFt-R.js +0 -1
- package/app/_app/immutable/chunks/ChgHOA6c.js +0 -29
- package/app/_app/immutable/chunks/DL08tw0z.js +0 -1
- package/app/_app/immutable/entry/start.Bqibxr0A.js +0 -1
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BGpjZKOE.js","./BaNbYf_w.js","./eBF8D7GD.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{$ as e,B as t,Ct as n,Dt as r,E as i,Et as a,F as o,Ft as s,G as c,H as l,I as u,J as d,K as f,L as p,Lt as m,Mt as h,Ot as g,P as _,Pt as v,R as y,Rt as b,T as x,U as S,W as C,X as w,Y as T,Z as E,_ as D,_t as O,a as k,bt as A,ct as j,d as ee,dt as M,f as N,ft as P,gt as F,ht as I,k as te,kt as L,lt as R,mt as z,n as ne,nt as re,ot as ie,pt as B,q as ae,rt as oe,st as V,tt as se,v as H,vt as U,xt as ce,yt as le,z as W}from"./DG3qFFTE.js";import{t as G}from"./BaNbYf_w.js";import"./xihTtKlq.js";import{r as ue}from"./BLUInGBV.js";import{a as K,t as q}from"./Bq8E3AWP.js";import{B as de,Pt as fe,R as J,W as pe}from"./jZnLYwnK.js";import{n as Y}from"./DK8Blf1Y.js";import{C as me,S as X,b as he,x as ge}from"./DQhriYSc.js";import{n as _e,r as ve}from"./v8gneLl4.js";import{i as ye}from"./8pp77JX5.js";import{_ as be,b as xe,c as Se,d as Ce,g as we,h as Te,i as Ee,m as De,n as Oe,p as ke,s as Ae}from"./CGVkRTMI.js";import{n as je}from"./B3N69a2G.js";import{n as Me,r as Ne}from"./CsPuvW_W.js";import{c as Pe,t as Fe}from"./eBF8D7GD.js";import{_ as Ie,a as Le,g as Re,h as ze,l as Be,n as Ve,p as He,u as Ue}from"./B7zMh4eE.js";import{Q as Z,b as We,t as Ge}from"./3tUhXG5c.js";import{C as Ke,_ as qe,h as Je,i as Ye,m as Xe,o as Ze,r as Qe,t as $e,u as et}from"./BCVYd-Bn.js";import{n as tt,t as nt}from"./XKy9F9JB.js";function rt(e,t){let n=t.trim();if(!n)return;let r=e.value,i=typeof document<`u`&&document.activeElement===e,a=e.selectionStart??r.length,o=e.selectionEnd??r.length;!i&&a===0&&o===0&&r.length>0&&(a=r.length,o=r.length);let s=r.slice(0,a),c=r.slice(o),l=`${s.length>0&&!/\s$/.test(s)?` `:``}${n}${/^[\p{L}\p{N}]/u.test(c)?` `:``}`;e.value=`${s}${l}${c}`;let u=s.length+l.length;try{e.setSelectionRange(u,u)}catch{}e.dispatchEvent(new Event(`input`,{bubbles:!0}))}function it(e){let t=e,n=null,r=null,i=0,a=0,o=null,s=!1,c=!1,l=null;function u(){n&&clearTimeout(n),n=null}function d(){u(),r=null,o=null,s=!1}function f(){n&&(d(),t.onCancel?.())}function p(e){let n=!t.filter||t.filter(e);return n?n===!0?e.target instanceof Element?e.target:null:n:null}function m(){c=!0,l&&clearTimeout(l),l=setTimeout(()=>{c=!1,l=null},400)}return{handlePointerDown(e){if(t.disabled||!e.isPrimary||e.pointerType===`mouse`&&e.button!==0)return;let c=p(e);if(!c)return;d(),r=e.pointerId,i=e.clientX,a=e.clientY,o={target:c,pointerType:e.pointerType||`mouse`,clientX:e.clientX,clientY:e.clientY},t.onPressStart?.(o);let l=o;n=setTimeout(()=>{n=null,s=!0,t.onLongPress(l)},t.delay??500)},handlePointerMove(e){if(!n||e.pointerId!==r)return;let o=t.moveTolerance??10;Math.hypot(e.clientX-i,e.clientY-a)>o&&f()},handlePointerUp(e){if(e.pointerId===r){if(n)f();else if(s&&o){let e=o;m(),d(),t.onRelease?.(e)}else d()}},handlePointerCancel(e){if(e.pointerId===r){if(n)f();else if(s&&o){let e=o;d(),t.onRelease?.(e)}else d()}},handleDragStart(){f()},handleContextMenu(e){t.preventContextMenu&&(n||s)&&e.preventDefault()},handleClick(e){c&&(c=!1,l&&clearTimeout(l),l=null,e.preventDefault(),e.stopPropagation())},cancel(){d()},update(e){t=e,e.disabled&&d()},get pending(){return n!==null},get fired(){return s}}}function at(e,t){let n=it(t),r=e=>n.handlePointerDown(e),i=e=>n.handlePointerMove(e),a=e=>n.handlePointerUp(e),o=e=>n.handlePointerCancel(e),s=()=>n.handleDragStart(),c=e=>n.handleContextMenu(e),l=e=>n.handleClick(e);return e.addEventListener(`pointerdown`,r),e.addEventListener(`dragstart`,s),e.addEventListener(`contextmenu`,c),e.addEventListener(`click`,l,!0),window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a),window.addEventListener(`pointercancel`,o),{update(e){n.update(e)},destroy(){n.cancel(),e.removeEventListener(`pointerdown`,r),e.removeEventListener(`dragstart`,s),e.removeEventListener(`contextmenu`,c),e.removeEventListener(`click`,l,!0),window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a),window.removeEventListener(`pointercancel`,o)}}}var ot=new WeakMap;async function st(e,t={}){let n=Math.max(0,t.quietMs??120),r=Math.max(0,t.timeoutMs??5e3),i=Date.now(),a=()=>Math.max(0,r-(Date.now()-i)),o=e=>new Promise(t=>setTimeout(t,e));for(;;){let n=ot.get(e);if(!n||n.size===0||t.signal?.aborted)break;let r=a();if(r===0)return;await Promise.race([Promise.all([...n]),o(r)])}t.signal?.aborted||a()===0||await new Promise(r=>{let i=null,o=[],s=()=>{i&&clearTimeout(i),clearTimeout(l);for(let e of o)e();t.signal?.removeEventListener(`abort`,s),r()},c=()=>{i&&clearTimeout(i),i=setTimeout(s,n)},l=setTimeout(s,a());t.signal?.addEventListener(`abort`,s,{once:!0}),o.push(e.subscribe(e=>{(e.type===`registered`||e.type===`unregistered`)&&c()}));for(let e of t.alsoWatch??[]){let t=e?.subscribe?.(()=>c());t&&o.push(t)}c()})}async function ct(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 lt(e){return new Worker(new URL(`../workers/local-speech.worker-BzGX7Qdn.js`,import.meta.url).href,{name:e?.name})}var ut=2**28,dt=16,ft=.95;function pt(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function mt(e,t,n){for(let[e,r]of[[`fromRate`,t],[`toRate`,n]])if(!Number.isFinite(r)||r<=0)throw new Pe(`invalid_argument`,`${e} must be a positive finite number (got ${String(r)})`);let r=Math.floor(e.length*n/t);if(r>ut)throw new Pe(`invalid_argument`,`resampled output would be ${r} samples; the limit is ${ut}`);if(t===n)return e.slice();let i=new Float32Array(r),a=t/n,o=a>1?ft/a:1,s=dt/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*pt(o*r)*i;u+=a*e[t],d+=a}i[t]=d===0?0:u/d}return i}var ht={silenceMs:800,minSpeechMs:150,preRollMs:300,maxUtteranceMs:3e4,sensitivity:.5,calibrateMs:300},gt=.0015,_t=.003,vt=.006,yt=.2,bt=.02,xt=2e3,St=250;function Ct(e,t,n){return Math.min(n,Math.max(t,e))}function wt(e={}){let t=(e,t,n)=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,e):t;return{silenceMs:t(e.silenceMs,ht.silenceMs,20),minSpeechMs:t(e.minSpeechMs,ht.minSpeechMs,0),preRollMs:t(e.preRollMs,ht.preRollMs,0),maxUtteranceMs:t(e.maxUtteranceMs,ht.maxUtteranceMs,1e3),sensitivity:Ct(typeof e.sensitivity==`number`&&Number.isFinite(e.sensitivity)?e.sensitivity:ht.sensitivity,0,1),calibrateMs:t(e.calibrateMs,ht.calibrateMs,0)}}function Tt(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 Et(e={}){let t=wt(e),n=6-4*t.sensitivity,r=.02-.015*t.sensitivity,i=_t,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=Ct(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=Ct(e[Math.min(e.length-1,Math.floor(e.length*yt))]??_t,gt,vt)}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/xt*(m<i?4:1);i=Ct(i+(m-i)*Math.min(1,e),gt,bt)}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 Dt(e){let t=wt(e),n=Et(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-St)/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(Tt(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 Ot=44,kt=4294967295,At=1;function jt(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 Mt(e,t){if(!Number.isInteger(e)||e<1||e*2>kt)throw new Pe(`invalid_argument`,`${t} must be a positive integer sample rate (got ${String(e)})`)}function Nt(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function Pt(e,t){Mt(t,`sampleRate`);let n=e.length*2;if(n+Ot-8>kt)throw new Pe(`invalid_argument`,`too many samples for a single WAV (4 GiB limit)`);let r=e instanceof Int16Array?e:jt(e),i=new Uint8Array(Ot+n),a=new DataView(i.buffer);Nt(a,0,`RIFF`),a.setUint32(4,36+n,!0),Nt(a,8,`WAVE`),Nt(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,At,!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),Nt(a,36,`data`),a.setUint32(40,n,!0);for(let e=0;e<r.length;e+=1)a.setInt16(Ot+e*2,r[e],!0);return i}var Ft=`hv-pcm-tap`,It=`
|
|
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('${Ft}', HvPcmTap);
|
|
22
|
-
`;function Lt(){return typeof AudioContext<`u`&&typeof AudioWorkletNode<`u`&&typeof Blob<`u`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}function Rt(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(!Lt())throw new Fe(`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([It],{type:`text/javascript`}));try{await i.audioWorklet.addModule(f)}finally{_()}d||(p=i.createMediaStreamSource(e),m=new AudioWorkletNode(i,Ft,{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 Fe(`setup_failed`,`PCM capture could not start`,e)}if(await v(),u)throw new Fe(`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=mt(e,i.sampleRate,n);return{samples:r,wav:Pt(r,n),truncated:c}})(),b},cancel(){u||(u=!0,o.length=0,v())}}}var zt=16e3;function Bt(){return Lt()&&typeof navigator<`u`&&typeof navigator.mediaDevices?.getUserMedia==`function`}var Vt=36e5;async function Ht(e={}){let t=e.createCapture??Rt;if(!e.createCapture&&!Bt()&&!e.stream)throw new Fe(`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:zt,maxDurationMs:Vt,retain:!1,onSamples:(t,n)=>{s||c||(l>0?l-=t.length/n*1e3:(o??=Dt({...e,sampleRate:n,onSpeaking:e=>{e&&a(`speechstart`,{})},onLevel:e=>a(`level`,{level:e}),onUtterance:e=>{let t=mt(e.pcm,e.sampleRate,zt);a(`speechend`,{samples:t,sampleRate:zt,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 Fe(`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 Ut=e=>{let t=null,n=!1,r=!1,i=!1;return{async start(){let a=await Ht({...e.vad,...e.constraints?{constraints:e.constraints}:{}});n||r?a.cancel():(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 Wt(e){return Ne({model:e,createWorker:()=>new lt,loadSpeech:()=>G(()=>import(`./BGpjZKOE.js`),__vite__mapDeps([0,1,2]),import.meta.url)})}var Gt=`Qwen3-1.7B-q4f16_1-MLC`,Kt=[{id:Gt,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 qt(e){return Kt.find(t=>t.id===e)}function Jt(e){return e>=1e3?`about ${(e/1e3).toFixed(1)} GB`:`about ${e} MB`}function Yt(e){return e.label.replace(/\s*\(.*\)\s*$/,``)}var Xt=`Qwen3-4B-q4f16_1-MLC`;function Zt(e,t){return t>=e.vramMB*1e6*1.2}async function Qt(e=typeof navigator>`u`?void 0:navigator){try{return(await e?.gpu?.requestAdapter())?.limits?.maxBufferSize??0}catch{return 0}}function $t(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
23
|
-
`)}var en=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`}},tn=class extends en{constructor(e,t){super(`Model not found: ${e}`,`MODEL_NOT_FOUND`,t,e,!1),this.name=`ModelNotFoundError`}},nn=class extends en{constructor(e,t){super(`Input exceeds maximum context length`,`CONTEXT_LENGTH_EXCEEDED`,e,t,!1),this.name=`ContextLengthError`}},rn=class extends en{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`}},an=class extends en{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)}},on=12e4,sn=Object.freeze({maxOutputTokens:131072,defaultOutputTokens:4096,maxReasoningTokens:1024,maxImagesPerRequest:1,onExceeded:`error`});function cn(e,t,n){if(e===void 0)return t;if(!Number.isFinite(e)||e<=0)throw new en(`${n} must be a positive finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e)}function ln(e){let t=e.generationLimits||{},n={maxOutputTokens:cn(t.maxOutputTokens,sn.maxOutputTokens,`generationLimits.maxOutputTokens`),defaultOutputTokens:Math.min(cn(t.defaultOutputTokens,sn.defaultOutputTokens,`generationLimits.defaultOutputTokens`),cn(t.maxOutputTokens,sn.maxOutputTokens,`generationLimits.maxOutputTokens`)),maxReasoningTokens:cn(t.maxReasoningTokens,sn.maxReasoningTokens,`generationLimits.maxReasoningTokens`),maxImagesPerRequest:cn(t.maxImagesPerRequest,sn.maxImagesPerRequest,`generationLimits.maxImagesPerRequest`),onExceeded:t.onExceeded||sn.onExceeded};if(![`error`,`clamp`].includes(n.onExceeded))throw new en(`generationLimits.onExceeded must be "error" or "clamp"`,`AI_LIMIT_INVALID`);return{...e,timeout:cn(e.timeout,on,`timeout`),maxRetries:(()=>{if(e.maxRetries===void 0)return 0;if(!Number.isFinite(e.maxRetries)||e.maxRetries<0)throw new en(`maxRetries must be a non-negative finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e.maxRetries)})(),generationLimits:n}}function un(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 dn(e,t,n,r,i,a){if(!Number.isFinite(e)||e<0)throw new en(`${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 en(`${r} ${o} exceeds configured ceiling ${t}`,`AI_LIMIT_EXCEEDED`,i,a)}function fn(e,t,n,r){let i=ln(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??un(t.reasoning?.effort??o)??i.maxReasoningTokens:0;return{...t,maxTokens:dn(a,i.maxOutputTokens,i.onExceeded,`maxTokens`,n,r),reasoning:{...t.reasoning,maxTokens:dn(s,i.maxReasoningTokens,i.onExceeded,`reasoning.maxTokens`,n,r),includeThoughts:t.reasoning?.includeThoughts??t.includeThoughts}}}function pn(e,t={}){let n=ln(e),r=cn(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 mn(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 hn=`webllm`,gn=4096,_n={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:gn,supportedOperations:[`chat`,`completion`,`streaming`,`functions`]},vn=new WeakMap,yn=new Map;async function bn(){try{let e=await G(()=>import(`./DL8aLXmX.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 an(e)}}function xn(){return!!globalThis.navigator?.gpu}function Sn(e){throw new en(`${e} is not supported by the webllm provider.`,`NOT_SUPPORTED`,hn)}function Cn(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var wn=class{options;explicitModel;factoryEngine;localEngines=new Map;constructor(e){this.explicitModel=e.defaultModel??e.model,this.options=ln({...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}),On(this.factoryEngine,t)):n;if(!xn())throw new rn(hn);let r=this.options.appConfig?this.localEngines:yn,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 On(i.promise,t)}finally{a&&i.listeners.delete(a)}}async createEngine(e,t){return(await bn()).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=$t(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`?Cn({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 Cn({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 en(`Generation was interrupted before it finished`,`AI_INTERRUPTED`,hn,t,!0)}mapError(e,t){if(e instanceof en)return e;let n=e?.name??``,r=e instanceof Error?e.message:String(e);if(n===`WebGPUNotAvailableError`||n===`WebGPUNotFoundError`)return new rn(hn,r);if(n===`ContextWindowSizeExceededError`||n===`PrefillChunkSizeSmallerThanImageError`)return new nn(hn,t);if(n===`ModelNotFoundError`||n===`SpecifiedModelNotFoundError`||n===`UnsupportedModelIdError`||n===`ModelNotLoadedError`)return new tn(t??r,hn);let i=new en(r,n===`DeviceLostError`?`WEBGPU_DEVICE_LOST`:`API_ERROR`,hn,t);return i.cause=e,i}abortError(e,t,n){if(e?.didTimeout())return new en(`AI request timed out after ${e.timeout}ms`,`AI_TIMEOUT`,hn,n);if(t.signal?.aborted)return new en(`AI request aborted by caller`,`AI_ABORTED`,hn,n)}async lockEngine(e,t){let n=vn.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e});vn.set(e,n.then(()=>i));try{await On(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=fn(this.options,t,hn,c);let l=await this.acquireEngine(c,t.signal);r=pn(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 On(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 en(`No choices returned from webllm`,`NO_CHOICES`,hn);let h=this.mapUsage(p.usage);mn(this.options,hn,`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?.(),En(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=fn(this.options,t,hn,u),a=await this.acquireEngine(u,t.signal),r=pn(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 On(d,r.signal)}catch(e){throw l=d.then(e=>Dn(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)),mn(this.options,hn,`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 Tn(s)}i?.(),En(o,l),r?.cleanup()}}async countTokens(e){return Math.ceil(e.length/4)}async getModels(){let e=await bn(),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??gn,capabilities:[`text`,`chat`,...r?[`functions`]:[],...t?[`vision`]:[]],supportsFunctions:r,supportsVision:t}})}async getCapabilities(){return{..._n}}async embed(e,t={}){return Sn(`Embeddings`)}async embedImage(e,t={}){return Sn(`Image embeddings`)}async describeImage(e,t,n={}){return Sn(`Image description`)}async generateImage(e,t={}){return Sn(`Image generation`)}async submitVideoGenerationJob(e){return Sn(`Video generation`)}async getVideoGenerationJob(e){return Sn(`Video generation`)}async fetchVideoGenerationResult(e){return Sn(`Video generation`)}async cancelVideoGenerationJob(e){return Sn(`Video generation`)}async validateVideoGenerationAccess(){return Sn(`Video generation`)}async synthesizeSpeech(e,t){return Sn(`Text-to-speech`)}streamSpeech(e,t){let n=new en(`Text-to-speech streaming is not supported by the webllm provider.`,`NOT_SUPPORTED`,hn);return{[Symbol.asyncIterator]:()=>({next:()=>Promise.reject(n)})}}async cloneVoice(e){return Sn(`Voice cloning`)}async designVoice(e){return Sn(`Voice design`)}async getVoices(e){return Sn(`Voice listing`)}};async function Tn(e){try{for(;!(await e.next()).done;);}catch{}}function En(e,t){e&&(t?t.then(e,e):e())}async function Dn(e,t){try{if((await e.next()).done)return;await Promise.resolve(t?.interruptGenerate())}catch{return}await Tn(e)}function On(e,t){return t?t.aborted?Promise.reject(new en(`AI request aborted by caller`,`AI_ABORTED`,hn)):new Promise((n,r)=>{let i=()=>r(new en(`AI request aborted by caller`,`AI_ABORTED`,hn));t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}var kn={createWorker:()=>new Worker(new URL(new URL(`../workers/llm.worker-BYu-MLm1.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),createEngine:async(e,t,n)=>{let{CreateWebWorkerMLCEngine:r}=await G(async()=>{let{CreateWebWorkerMLCEngine:e}=await import(`./DL8aLXmX.js`);return{CreateWebWorkerMLCEngine:e}},[],import.meta.url);return r(e,t,{initProgressCallback:e=>n(e)})}};async function An(e,t,n,r=kn){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 jn=e=>!!e&&typeof e==`object`&&e.kind===`cookbook-offer`&&typeof e.offerId==`string`,Mn=class{find;#e=A(F({}));get offers(){return e(this.#e)}set offers(e){U(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.`;r||!n?(t.status=`failed`,t.error=r??`Could not set it up.`):t.status=`applied`}decline(e){let t=this.offers[e];t?.status===`pending`&&(t.status=`declined`)}},Nn=`smrt-planner:assistant:v1`;function Pn(){return{modelId:Gt,consented:[]}}function Fn(e){let t=Pn();try{let n=e?.getItem(Nn);if(!n)return t;let r=JSON.parse(n);typeof r.modelId==`string`&&qt(r.modelId)&&(t.modelId=r.modelId),Array.isArray(r.consented)&&(t.consented=r.consented.filter(e=>typeof e==`string`&&!!qt(e)))}catch{}return t}function In(e,t){try{e?.setItem(Nn,JSON.stringify(t))}catch{}}var Ln=e=>!!e&&typeof e==`object`&&e.kind===`theme-undo`&&typeof e.undoId==`string`,Rn=class{store;controller;#e=A(F({}));get undos(){return e(this.#e)}set undos(e){U(this.#e,e,!0)}counter=0;constructor(e,t){this.store=e,this.controller=t}record(e,t){let n=`theme-undo-${++this.counter}`;return this.undos[n]={id:n,previous:e?structuredClone(h(e)):void 0,status:`available`,...t?{commandUndoId:t}:{}},{kind:`theme-undo`,undoId:n}}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`)}},zn={name:`@happyvertical/smrt-chat`,displayName:`Chat`,description:`Real-time chat rooms, DMs, threads, and agent conversations`,uiSlots:{"chat-layout":{id:`chat-layout`,label:`Chat Layout`,description:`Discord/Slack-style chat layout with sidebar`,icon:`message-square`,category:`display`,order:1,propsInterface:`ChatLayoutProps`},"room-list":{id:`room-list`,label:`Room List`,description:`Sidebar room navigation with unread badges`,icon:`list`,category:`list`,order:2,propsInterface:`RoomListProps`},"message-list":{id:`message-list`,label:`Message List`,description:`Scrollable chat message feed`,icon:`message-circle`,category:`list`,order:3,propsInterface:`MessageListProps`},"message-input":{id:`message-input`,label:`Message Input`,description:`Chat message input with attachments`,icon:`edit-2`,category:`form`,order:4,propsInterface:`MessageInputProps`},"chat-tabs":{id:`chat-tabs`,label:`Chat Tabs`,description:`Facebook-style expandable chat tabs`,icon:`columns`,category:`display`,order:5,propsInterface:`ChatTabsProps`},"agent-chat":{id:`agent-chat`,label:`Agent Chat`,description:`Full agent conversation interface`,icon:`bot`,category:`display`,order:6,propsInterface:`AgentChatProps`},"thread-panel":{id:`thread-panel`,label:`Thread Panel`,description:`Threaded conversation side panel`,icon:`git-branch`,category:`display`,order:7,propsInterface:`ThreadPanelProps`}},models:[`ChatRoom`,`ChatThread`,`ChatMessage`,`ChatParticipant`,`ChatReaction`,`AgentSession`,`VoiceSession`],collections:[`ChatRoomCollection`,`ChatThreadCollection`,`ChatMessageCollection`,`ChatParticipantCollection`,`ChatReactionCollection`,`AgentSessionCollection`,`VoiceSessionCollection`]},Q=K({"chat.character_conversation.saved_conversation":`Saved character conversation`,"chat.character_conversation.saved_character":`Saved photographic character`,"chat.character_conversation.listening_notice":`Listening mode keeps the conversation and confirmations active while hiding message history.`,"chat.character_conversation.voice_input":`Voice input`,"chat.character_conversation.speak":`Speak to your assistant`,"chat.character_conversation.unavailable":`Speech input is unavailable. Type your message below.`,"chat.character_conversation.message":`Type your message`,"chat.character_conversation.send":`Send message`,"chat.character_conversation.assistant_reply":`Assistant reply`,"chat.character_conversation.speech_failed":`Could not play the spoken reply. The reply is shown below.`,"chat.caption_overlay.scroll_up":`Scroll captions up`,"chat.caption_overlay.scroll_down":`Scroll captions down`,"chat.agent_chat.conversation":`Agent conversation`,"chat.agent_chat.inactive_notice":`Session {status}. Cannot send messages.`,"chat.agent_chat.input_placeholder":`Ask the AI to write or edit content...`,"chat.agent_chat.message_input":`Message input`,"chat.agent_chat.send_message":`Send message`,"chat.agent_chat.messages":`Conversation messages`,"chat.agent_chat.updated_fields":`✓ Updated {count} field{plural}`,"chat.agent_chat.empty":`Ask the AI to write or edit your content`,"chat.agent_chat.field_changes":`Field Changes`,"chat.agent_selector.select_an_agent":`Select an agent`,"chat.agent_selector.title":`Choose an Agent`,"chat.agent_selector.available_agents":`Available agents`,"chat.agent_selector.empty":`No agents available`,"chat.agent_session_panel.sessions":`Agent sessions`,"chat.agent_session_panel.new_session":`New session`,"chat.agent_session_panel.session_list":`Session list`,"chat.agent_session_panel.empty":`No sessions yet`,"chat.tool_call_display.tool_call":`Tool call: {toolName}`,"chat.tool_call_display.running":`Running`,"chat.tool_call_display.applied_successfully":`Change applied successfully.`,"chat.tool_call_display.confirm":`Confirm`,"chat.tool_call_display.reject":`Reject`,"chat.model_picker.label":`Model`,"chat.assistant_composer.attach_files":`Attach files`,"chat.assistant_composer.message_label":`Message`,"chat.assistant_composer.send":`Send`,"chat.assistant_composer.remove_attachment":`Remove {name}`,"chat.assistant_composer.send_error":`Could not send: {message}`,"chat.assistant_composer.send_failed":`Send failed`,"chat.assistant_composer.upload_error":`Could not attach file: {message}`,"chat.assistant_composer.upload_failed":`Attachment failed`,"chat.assistant_thread_list.conversations_label":`Assistant conversations`,"chat.assistant_thread_list.new_conversation":`+ New conversation`,"chat.assistant_thread_list.untitled":`Untitled`,"chat.floating_assistant.collapse":`Collapse assistant`,"chat.floating_assistant.close":`Close`,"chat.assistant_dock.conversation_starters":`Conversation starters`,"chat.assistant_dock.no_surfaces":`Nothing on this page can be changed from the chat. You can still ask questions.`,"chat.assistant_dock.loading_conversations":`Loading conversations…`,"chat.assistant_dock.choose_conversation":`Choose a conversation`,"chat.assistant_dock.choose_conversation_hint":`Select a conversation to start chatting with the assistant.`,"chat.assistant_dock.view_conversations":`View conversations`,"chat.assistant_question.submit":`Continue`,"chat.assistant_question.choose":`Choose…`,"chat.assistant_dock.start_conversation":`Start a conversation`,"chat.assistant_dock.start_conversation_hint":`Create a conversation to start chatting with the assistant.`,"chat.assistant_dock.start_new_conversation":`Create conversation`,"chat.assistant_dock.no_conversations":`No conversations available`,"chat.assistant_dock.no_conversations_hint":`There is not a conversation available for this workspace yet.`,"chat.assistant_dock.stop":`Stop`,"chat.assistant_dock.tool_request_title":`The assistant wants to do this:`,"chat.assistant_dock.choices_pick":`Pick one to use it.`,"chat.assistant_dock.choices_none":`None of these`,"chat.assistant_dock.choices_applying":`Using your pick…`,"chat.assistant_dock.choices_applied":`Used: {label}`,"chat.assistant_dock.choices_failed":`That did not work: {message}. Pick again.`,"chat.assistant_dock.choices_making":`Making…`,"chat.assistant_dock.choices_unavailable":`That could not be made: {message}`,"chat.assistant_dock.tool_request_allow":`Allow`,"chat.assistant_dock.tool_request_decline":`Don't allow`,"chat.assistant_dock.tool_request_destructive":`This can't be undone.`,"chat.assistant_dock.tool_request_details":`Details`,"chat.assistant_dock.steps_label":`What the assistant did`,"chat.assistant_dock.reply_in_progress":`Reply in progress`,"chat.assistant_dock.taking_longer":`The assistant is taking longer than expected.`,"chat.assistant_dock.retry":`Retry "{content}"`,"chat.assistant_dock.error":`Something went wrong: {message}`,"chat.assistant_dock.send_failed":`A message failed to send. You can retry it below.`,"chat.assistant_dock.attachments":`Attachments`,"chat.assistant_dock.conversations_toggle":`Conversations`,"chat.assistant_dock.opening_conversation":`Opening the assistant…`,"chat.assistant_dock.retry_conversation":`Try again`,"chat.assistant_dock.clear_conversation":`Clear conversation`,"chat.assistant_dock.action_outcome_unknown":`We couldn't confirm whether this change was applied. Checking again is safe: it resends the same request, so the change can't be applied twice.`,"chat.assistant_dock.action_check_again":`Check again`,"chat.room_create_dialog.close":`Close room creation dialog`,"chat.room_create_dialog.title":`Create a Room`,"chat.room_create_dialog.room_name":`Room Name`,"chat.room_create_dialog.required":`required`,"chat.room_create_dialog.name_placeholder":`e.g. general, project-updates`,"chat.room_create_dialog.room_type":`Room Type`,"chat.room_create_dialog.description_placeholder":`What is this room about?`,"chat.room_create_dialog.create_room":`Create Room`,"chat.search_messages.search":`Search messages`,"chat.search_messages.title":`Search Messages`,"chat.search_messages.close":`Close search`,"chat.search_messages.input_placeholder":`Search messages...`,"chat.search_messages.query":`Search query`,"chat.search_messages.clear":`Clear search`,"chat.search_messages.results":`Search results`,"chat.search_messages.results_count":`{count} result{plural} found`,"chat.search_messages.no_results":`No messages found for "{query}"`,"chat.search_messages.no_results_hint":`Try different keywords or check your spelling`,"chat.search_messages.empty":`Enter a search term to find messages`,"chat.file_upload.preview":`Files to upload`,"chat.file_upload.remove":`Remove {name}`,"chat.file_upload.upload_files":`Upload {count} file{plural}`,"chat.file_upload.disabled":`Upload disabled`,"chat.file_upload.drop_files":`Drop files here or click to browse`,"chat.file_upload.max_size":`Max {size} per file`,"chat.mention_autocomplete.suggestions":`Mention suggestions`,"chat.reaction_picker.reactions":`Emoji reactions`,"chat.reaction_picker.react_with":`React with {emoji}`,"chat.read_receipts.read_status":`{readCount} of {total} read`});function Bn(t,r){let i=k(r,`size`,3,`md`),a=n(()=>r.onlineStatus===`dnd`?`busy`:r.onlineStatus);fe(t,{get name(){return r.name},get src(){return r.avatarUrl},get size(){return i()},get status(){return e(a)}})}function Vn(e){if(!e)return[];let t=/```(json|markdown)[ \t]*\r?\n([\s\S]*?)```/gi,n=[],r=0,i=t.exec(e);for(;i!==null;){i.index>r&&n.push({type:`text`,content:e.slice(r,i.index)});let a=i[1].toLowerCase(),o=i[2].trim();if(a===`json`)try{let e=JSON.parse(o);e.fields&&typeof e.fields==`object`?n.push({type:`fields`,fields:e.fields}):n.push({type:`text`,content:i[0]})}catch{n.push({type:`text`,content:i[0]})}else n.push({type:`markdown`,content:o});r=t.lastIndex,i=t.exec(e)}return r<e.length&&n.push({type:`text`,content:e.slice(r)}),n}var Hn=c(`<span class="tool-call__duration svelte-rtpofh"> </span>`),Un=c(`<div class="tool-call__section svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh">Arguments</span> <pre class="tool-call__json svelte-rtpofh"> </pre></div>`),Wn=c(`<div class="tool-call__section svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh">Result</span> <pre class="tool-call__json tool-call__json--result svelte-rtpofh"> </pre></div>`),Gn=c(`<div class="tool-call__section svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh">Error</span> <pre class="tool-call__json tool-call__json--error svelte-rtpofh"> </pre></div>`),Kn=c(`<div class="tool-call__running svelte-rtpofh"><div class="tool-call__spinner svelte-rtpofh"></div> <span class="svelte-rtpofh">Executing...</span></div>`),qn=c(`<pre class="tool-call__json svelte-rtpofh"> </pre>`),Jn=c(`<p class="tool-call__applied-fallback svelte-rtpofh"> </p>`),Yn=c(`<div class="tool-call__data-surface-action-buttons svelte-rtpofh"><!> <!></div>`),Xn=c(`<!> <!>`,1),Zn=c(`<pre class="tool-call__json tool-call__json--error svelte-rtpofh"> </pre>`),Qn=c(`<div class="tool-call__section tool-call__data-surface-action svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh"> </span> <!></div>`),$n=c(`<div class="tool-call__body svelte-rtpofh"><!> <!> <!> <!> <!></div>`),er=c(`<div data-smrt-component="ToolCallDisplay"><button class="tool-call__header svelte-rtpofh" type="button"><div class="tool-call__status-dot svelte-rtpofh"></div> <span class="tool-call__name svelte-rtpofh"> </span> <div class="tool-call__header-right svelte-rtpofh"><!> <span class="tool-call__status-label svelte-rtpofh"> </span> <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z" class="svelte-rtpofh"></path></svg></div></button> <!></div>`);function tr(a,o){g(o,!0);let{t:c}=q(),u=n(()=>o.actionResult?o.actionResult.ok?o.actionResult.phase===`preview`?`awaiting-confirmation`:`applied`:`error`:o.toolCall.status),f=A(null),p=n(()=>e(u)===`awaiting-confirmation`||e(u)===`applied`||o.toolCall.status===`running`||!!o.actionResult&&e(u)===`error`),m=n(()=>e(f)??e(p)),h=n(()=>{switch(e(u)){case`pending`:return`Pending`;case`running`:return`Running`;case`success`:return`Completed`;case`error`:return o.actionResult?`Failed`:`Error`;case`awaiting-confirmation`:return`Awaiting confirmation`;case`applied`:return`Applied`;default:return e(u)}});function _(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function y(e){return e===void 0?``:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}var b=er(),x=P(b),C=P(x),T=I(C,2),E=z(T,!0),D=I(T,2),O=P(D),k=e=>{var t=Hn(),n=z(t,!0);V(e=>l(n,e),[()=>y(o.toolCall.duration)]),S(e,t)};t(O,e=>{o.toolCall.duration!==void 0&&e(k)});var j=I(O,2),ee=z(j,!0),M=I(j,2);let N;s(D),s(x);var F=I(x,2),te=r=>{var i=$n(),a=P(i),u=e=>{var t=Un(),n=I(P(t),2),r=z(n,!0);s(t),V(e=>l(r,e),[()=>_(o.toolCall.arguments)]),S(e,t)},f=n(()=>o.toolCall.arguments&&Object.keys(o.toolCall.arguments).length>0);t(a,t=>{e(f)&&t(u)});var p=I(a,2),m=e=>{var t=Wn(),n=I(P(t),2),r=z(n,!0);s(t),V(e=>l(r,e),[()=>_(o.toolCall.result)]),S(e,t)};t(p,e=>{o.toolCall.status===`success`&&o.toolCall.result!==void 0&&e(m)});var h=I(p,2),g=e=>{var t=Gn(),n=I(P(t),2),r=z(n,!0);s(t),V(()=>l(r,o.toolCall.error)),S(e,t)};t(h,e=>{o.toolCall.status===`error`&&o.toolCall.error&&e(g)});var y=I(h,2),b=e=>{var t=Kn(),n=P(t);v(2),s(t),V(e=>H(n,`aria-label`,e),[()=>c(Q[`chat.tool_call_display.running`])]),S(e,t)};t(y,e=>{o.toolCall.status===`running`&&e(b)});var x=I(y,2),C=e=>{var n=Qn(),r=P(n),i=z(r,!0),a=I(r,2),u=e=>{var n=Xn(),r=B(n),i=e=>{var t=qn(),n=z(t,!0);V(e=>l(n,e),[()=>_(o.actionResult.details)]),S(e,t)},a=e=>{var t=Jn(),n=z(t,!0);V(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.applied_successfully`])]),S(e,t)};t(r,e=>{o.actionResult.details?e(i):o.actionResult.phase===`apply`&&e(a,1)});var u=I(r,2),f=e=>{var t=Yn(),n=P(t);Y(n,{type:`button`,size:`sm`,onclick:()=>o.onconfirmaction?.(),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.confirm`])]),S(e,n)},$$slots:{default:!0}});var r=I(n,2);Y(r,{type:`button`,variant:`secondary`,size:`sm`,onclick:()=>o.onrejectaction?.(),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.reject`])]),S(e,n)},$$slots:{default:!0}}),s(t),S(e,t)};t(u,e=>{o.actionResult.phase===`preview`&&e(f)}),S(e,n)},f=e=>{var t=Zn(),n=z(t,!0);V(()=>l(n,o.actionResult.reason??`Action failed`)),S(e,t)};t(a,e=>{o.actionResult.ok?e(u):e(f,-1)}),s(n),V(()=>{H(n,`data-phase`,o.actionResult.phase),H(n,`data-ok`,o.actionResult.ok),l(i,o.actionResult.phase===`preview`?`Proposed change`:`Applied change`)}),S(e,n)};t(x,e=>{o.actionResult&&e(C)}),s(i),V(()=>H(i,`id`,`tool-call-body-${o.toolCall.toolCallId??``}`)),S(r,i)};t(F,t=>{e(m)&&t(te)}),s(b),V(t=>{i(b,1,`tool-call tool-call--${e(u)??``}`,`svelte-rtpofh`),H(b,`aria-label`,t),H(x,`aria-expanded`,e(m)),H(x,`aria-controls`,`tool-call-body-${o.toolCall.toolCallId??``}`),H(C,`aria-label`,e(h)),l(E,o.toolCall.toolName),l(ee,e(h)),N=i(M,0,`tool-call__chevron svelte-rtpofh`,null,N,{"tool-call__chevron--open":e(m)})},[()=>c(Q[`chat.tool_call_display.tool_call`],{toolName:o.toolCall.toolName})]),w(`click`,x,()=>U(f,!e(m))),S(a,b),r()}T([`click`]);var nr=c(`<div class="agent-chat__inactive-notice svelte-h8qbdq"> </div>`),rr=f(`<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="svelte-h8qbdq"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" class="svelte-h8qbdq"></path></svg>`),ir=c(`<!> <!>`,1),ar=c(`<div class="agent-chat__tool-row svelte-h8qbdq"><!></div>`),or=c(`<span class="text-block svelte-h8qbdq"> </span>`),sr=c(`<div class="field-update-block svelte-h8qbdq"><span class="applied-badge svelte-h8qbdq"> </span> <!></div>`),cr=c(`<div class="markdown-block svelte-h8qbdq"><pre class="markdown-block__content svelte-h8qbdq"><code class="svelte-h8qbdq"> </code></pre> <!></div>`),lr=c(`<div><div><div class="agent-chat__msg-content svelte-h8qbdq"><!></div> <time class="agent-chat__msg-time svelte-h8qbdq"> </time></div></div>`),ur=c(`<div class="agent-chat__msg agent-chat__msg--agent svelte-h8qbdq"><div class="agent-chat__bubble agent-chat__bubble--agent agent-chat__thinking svelte-h8qbdq"><span class="thinking-dots svelte-h8qbdq"><span class="svelte-h8qbdq"></span><span class="svelte-h8qbdq"></span><span class="svelte-h8qbdq"></span></span></div></div>`),dr=c(`<div class="agent-chat__empty svelte-h8qbdq"><span class="agent-chat__empty-text svelte-h8qbdq"> </span></div>`),fr=c(`<div class="diff-field svelte-h8qbdq"><span class="diff-field__name svelte-h8qbdq"> </span> <pre class="diff-field__value svelte-h8qbdq"> </pre></div>`),pr=c(`<div class="diff-dialog__body svelte-h8qbdq"></div>`),mr=c(`<div class="agent-chat svelte-h8qbdq" data-smrt-component="AgentChat"><!> <div class="agent-chat__messages svelte-h8qbdq" role="log"><!> <!> <!></div></div> <dialog class="diff-dialog svelte-h8qbdq" data-smrt-component="AgentChat"><div class="diff-dialog__header svelte-h8qbdq"><h4 class="svelte-h8qbdq"> </h4> <!></div> <!></dialog>`,1);function hr(a,o){g(o,!0);let{t:c}=q(),u=k(o,`loading`,3,!1),f=A(``),m=A(void 0),h=n(()=>o.session.status===`active`),_=A(null),x=A(void 0);function w(t){U(_,t,!0),e(x)?.showModal()}function T(){e(x)?.close(),U(_,null)}function E(t){t.preventDefault();let n=e(f).trim();n&&e(h)&&(o.onsend(n),U(f,``))}function D(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),E(e))}function O(e){return(typeof e==`string`?new Date(e):e).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`})}j(()=>{o.messages.length&&e(m)&&(e(m).scrollTop=0)});var M=mr(),N=B(M),F=P(N);Ce(F,{class:`agent-chat__input-bar`,onsubmit:e=>E(e),children:(r,i)=>{var a=C(),s=B(a),u=e=>{var t=nr(),n=z(t,!0);V(e=>l(n,e),[()=>c(Q[`chat.agent_chat.inactive_notice`],{status:o.session.status})]),S(e,t)},d=t=>{var r=ir(),i=B(r);{let t=n(()=>c(Q[`chat.agent_chat.input_placeholder`])),r=n(()=>!e(h)),a=n(()=>c(Q[`chat.agent_chat.message_input`]));Oe(i,{class:`agent-chat__input`,get placeholder(){return e(t)},onkeydown:D,rows:1,get disabled(){return e(r)},get"aria-label"(){return e(a)},get value(){return e(f)},set value(e){U(f,e,!0)}})}var a=I(i,2);{let t=n(()=>!e(f).trim()||!e(h)),r=n(()=>c(Q[`chat.agent_chat.send_message`]));Y(a,{variant:`ghost`,class:`agent-chat__send-btn`,type:`submit`,get disabled(){return e(t)},get"aria-label"(){return e(r)},children:(e,t)=>{var n=rr();S(e,n)},$$slots:{default:!0}})}S(t,r)};t(s,t=>{e(h)?t(d,-1):t(u)}),S(r,a)},$$slots:{default:!0}});var te=I(F,2),L=P(te);p(L,17,()=>o.messages,e=>e.id,(r,a)=>{let u=n(()=>e(a).role===`user`),f=n(()=>e(a).messageType===`tool_call`||e(a).messageType===`tool_result`);var m=C(),h=B(m),g=t=>{var n=ar();tr(P(n),{get toolCall(){return e(a).toolCallData}}),s(n),S(t,n)},_=n=>{var r=lr();let m;var h=P(r);let g;var _=P(h),b=P(_),x=t=>{var n=d();V(()=>l(n,e(a).content)),S(t,n)},T=n=>{var r=C(),i=B(r);p(i,17,()=>Vn(e(a).content||``),y,(n,r)=>{var i=C(),a=B(i),u=t=>{var n=or(),i=z(n,!0);V(()=>l(i,e(r).content)),S(t,n)},f=t=>{var n=sr(),i=P(n),a=z(i,!0),o=I(i,2);Y(o,{variant:`ghost`,size:`sm`,class:`diff-btn`,type:`button`,onclick:()=>w(e(r).fields),children:(e,t)=>{v();var n=d(`Diff`);S(e,n)},$$slots:{default:!0}}),s(n),V(e=>l(a,e),[()=>c(Q[`chat.agent_chat.updated_fields`],{count:Object.keys(e(r).fields).length,plural:Object.keys(e(r).fields).length===1?``:`s`})]),S(t,n)},p=n=>{var i=cr(),a=P(i),c=P(a),u=z(c,!0);s(a);var f=I(a,2),p=t=>{Y(t,{variant:`ghost`,size:`sm`,class:`diff-btn`,type:`button`,onclick:()=>o.onapplychange(e(r).content),children:(e,t)=>{v();var n=d(`Apply`);S(e,n)},$$slots:{default:!0}})};t(f,e=>{o.onapplychange&&e(p)}),s(i),V(()=>l(u,e(r).content)),S(n,i)};t(a,t=>{e(r).type===`text`?t(u):e(r).type===`fields`?t(f,1):e(r).type===`markdown`&&t(p,2)}),S(n,i)}),S(n,r)};t(b,t=>{e(u)?t(x):t(T,-1)}),s(_);var E=I(_,2),D=z(E,!0);s(h),s(r),V(t=>{m=i(r,1,`agent-chat__msg svelte-h8qbdq`,null,m,{"agent-chat__msg--user":e(u),"agent-chat__msg--agent":!e(u)&&!e(f),"agent-chat__msg--system":e(a).role===`system`}),g=i(h,1,`agent-chat__bubble svelte-h8qbdq`,null,g,{"agent-chat__bubble--user":e(u),"agent-chat__bubble--agent":!e(u)}),l(D,t)},[()=>O(e(a).createdAt)]),S(n,r)};t(h,t=>{e(f)&&e(a).toolCallData?t(g):t(_,-1)}),S(r,m)});var R=I(L,2),ne=e=>{var t=ur();S(e,t)};t(R,e=>{u()&&e(ne)});var re=I(R,2),ie=e=>{var t=dr(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>c(Q[`chat.agent_chat.empty`])]),S(e,t)};t(re,e=>{o.messages.length===0&&!u()&&e(ie)}),s(te),ee(te,e=>U(m,e),()=>e(m)),s(N);var ae=I(N,2),oe=P(ae),se=P(oe),ce=z(se,!0),le=I(se,2);Y(le,{variant:`ghost`,size:`sm`,class:`diff-dialog__close`,type:`button`,onclick:T,children:(e,t)=>{v();var n=d(`✕`);S(e,n)},$$slots:{default:!0}}),s(oe);var W=I(oe,2),G=t=>{var r=pr();p(r,21,()=>Object.entries(e(_)),y,(t,r)=>{var i=n(()=>b(e(r),2));let a=()=>e(i)[0],o=()=>e(i)[1];var c=fr(),u=P(c),d=z(u,!0),f=I(u,2),p=z(f,!0);s(c),V(()=>{l(d,a()),l(p,o())}),S(t,c)}),s(r),S(t,r)};t(W,t=>{e(_)&&t(G)}),s(ae),ee(ae,e=>U(x,e),()=>e(x)),V((e,t,n)=>{H(N,`aria-label`,e),H(te,`aria-label`,t),l(ce,n)},[()=>c(Q[`chat.agent_chat.conversation`]),()=>c(Q[`chat.agent_chat.messages`]),()=>c(Q[`chat.agent_chat.field_changes`])]),S(a,M),r()}var gr=c(`<span class="agent-selector__unavailable-badge svelte-3xwzgp">Unavailable</span>`),_r=c(`<button type="button" role="option"><!> <div class="agent-selector__card-body svelte-3xwzgp"><span class="agent-selector__card-name svelte-3xwzgp"> </span> <span class="agent-selector__card-desc svelte-3xwzgp"> </span></div> <!></button>`),vr=c(`<div class="agent-selector__empty svelte-3xwzgp"><span class="agent-selector__empty-text svelte-3xwzgp"> </span></div>`),yr=c(`<div class="agent-selector svelte-3xwzgp" data-smrt-component="AgentSelector"><h3 class="agent-selector__title svelte-3xwzgp"> </h3> <div class="agent-selector__grid svelte-3xwzgp" role="listbox"></div> <!></div>`);function br(n,a){g(a,!0);let{t:o}=q();var c=yr(),u=P(c),d=z(u,!0),f=I(u,2);p(f,21,()=>a.agents,e=>e.id,(n,r)=>{var o=_r();let c;H(o,`aria-selected`,!1);var u=P(o);Bn(u,{get name(){return e(r).name},get avatarUrl(){return e(r).avatarUrl},size:`lg`});var d=I(u,2),f=P(d),p=z(f,!0),m=I(f,2),h=z(m,!0);s(d);var g=I(d,2),_=e=>{var t=gr();S(e,t)};t(g,t=>{e(r).isAvailable||t(_)}),s(o),V(()=>{c=i(o,1,`agent-selector__card svelte-3xwzgp`,null,c,{"agent-selector__card--unavailable":!e(r).isAvailable}),H(o,`aria-disabled`,!e(r).isAvailable),o.disabled=!e(r).isAvailable,l(p,e(r).name),l(h,e(r).description)}),w(`click`,o,()=>a.onselect(e(r).id)),S(n,o)}),s(f);var m=I(f,2),h=e=>{var t=vr(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>o(Q[`chat.agent_selector.empty`])]),S(e,t)};t(m,e=>{a.agents.length===0&&e(h)}),s(c),V((e,t,n)=>{H(c,`aria-label`,e),l(d,t),H(f,`aria-label`,n)},[()=>o(Q[`chat.agent_selector.select_an_agent`]),()=>o(Q[`chat.agent_selector.title`]),()=>o(Q[`chat.agent_selector.available_agents`])]),S(n,c),r()}T([`click`]);var xr=f(`<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg>`),Sr=c(`<span class="session-panel__tool-chip svelte-1l3fy3e"> </span>`),Cr=c(`<span class="session-panel__tool-chip session-panel__tool-chip--more svelte-1l3fy3e"> </span>`),wr=c(`<div class="session-panel__item-tools svelte-1l3fy3e"><!> <!></div>`),Tr=c(`<button type="button" role="option"><!> <div class="session-panel__item-body svelte-1l3fy3e"><div class="session-panel__item-header svelte-1l3fy3e"><span class="session-panel__item-name svelte-1l3fy3e"> </span> <time class="session-panel__item-date svelte-1l3fy3e"> </time></div> <div class="session-panel__item-meta svelte-1l3fy3e"><span> </span> <span class="session-panel__item-count svelte-1l3fy3e"> </span></div> <!></div></button>`),Er=c(`<div class="session-panel__empty svelte-1l3fy3e"><span class="session-panel__empty-text svelte-1l3fy3e"> </span></div>`),Dr=c(`<aside class="session-panel svelte-1l3fy3e" data-smrt-component="AgentSessionPanel"><div class="session-panel__header svelte-1l3fy3e"><h2 class="session-panel__title svelte-1l3fy3e">Sessions</h2> <!></div> <div class="session-panel__list svelte-1l3fy3e" role="listbox"><!> <!></div></aside>`);function Or(a,o){g(o,!0);let{t:c}=q();function u(e){let t=typeof e==`string`?new Date(e):e,n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`}):t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}let d={active:`Active`,closed:`Closed`,expired:`Expired`};var f=Dr(),m=P(f),h=I(P(m),2),_=t=>{{let r=n(()=>c(Q[`chat.agent_session_panel.new_session`])),i=n(()=>c(Q[`chat.agent_session_panel.new_session`]));Y(t,{variant:`ghost`,class:`session-panel__new-btn`,type:`button`,get onclick(){return o.onnewsession},get"aria-label"(){return e(r)},get title(){return e(i)},children:(e,t)=>{var n=xr();S(e,n)},$$slots:{default:!0}})}};t(h,e=>{o.onnewsession&&e(_)}),s(m);var v=I(m,2),b=P(v);p(b,17,()=>o.sessions,e=>e.id,(r,a)=>{let c=n(()=>e(a).id===o.currentSessionId);var f=Tr();let m;var h=P(f);Bn(h,{get name(){return e(a).agentName},get avatarUrl(){return e(a).agentAvatarUrl},size:`sm`});var g=I(h,2),_=P(g),v=P(_),b=z(v,!0),x=I(v,2),C=z(x,!0);s(_);var T=I(_,2),E=P(T);let D;var O=z(E,!0),k=I(E,2),A=z(k);s(T);var j=I(T,2),ee=n=>{var r=wr(),i=P(r);p(i,17,()=>e(a).allowedTools.slice(0,3),y,(t,n)=>{var r=Sr(),i=z(r,!0);V(()=>l(i,e(n))),S(t,r)});var o=I(i,2),c=t=>{var n=Cr(),r=z(n);V(()=>l(r,`+${e(a).allowedTools.length-3}`)),S(t,n)};t(o,t=>{e(a).allowedTools.length>3&&t(c)}),s(r),S(n,r)};t(j,t=>{e(a).allowedTools.length>0&&t(ee)}),s(g),s(f),V(t=>{m=i(f,1,`session-panel__item svelte-1l3fy3e`,null,m,{"session-panel__item--active":e(c)}),H(f,`aria-selected`,e(c)),l(b,e(a).agentName),l(C,t),D=i(E,1,`session-panel__item-status svelte-1l3fy3e`,null,D,{"session-panel__item-status--active":e(a).status===`active`,"session-panel__item-status--closed":e(a).status===`closed`,"session-panel__item-status--expired":e(a).status===`expired`}),l(O,d[e(a).status]??e(a).status),l(A,`${e(a).messageCount??``} msg${e(a).messageCount===1?``:`s`}`)},[()=>u(e(a).createdAt)]),w(`click`,f,()=>o.onselectsession(e(a).id)),S(r,f)});var x=I(b,2),C=e=>{var t=Er(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>c(Q[`chat.agent_session_panel.empty`])]),S(e,t)};t(x,e=>{o.sessions.length===0&&e(C)}),s(v),s(f),V((e,t)=>{H(f,`aria-label`,e),H(v,`aria-label`,t)},[()=>c(Q[`chat.agent_session_panel.sessions`]),()=>c(Q[`chat.agent_session_panel.session_list`])]),S(a,f),r()}T([`click`]);var kr=Symbol(`caption-overlay`),Ar=c(`<div class="caption-overlay-controls svelte-x4r42u"><!> <!></div>`),jr=c(`<section class="caption-overlay svelte-x4r42u" data-smrt-component="CaptionOverlay"><div class="caption-overlay-viewport svelte-x4r42u"><div class="caption-overlay-content svelte-x4r42u"><!></div></div> <!></section>`);function Mr(n,i){g(i,!0);let a=k(i,`label`,3,`Captions`),{t:c}=q();L(kr,!0);let u,f,p,m=A(!1),h=A(!0),_=A(!1);function y(){U(h,f.scrollTop<=0),U(_,Math.ceil(f.scrollTop+f.clientHeight)>=f.scrollHeight)}function b(e){f.scrollBy({top:e*f.clientHeight,behavior:`instant`}),y()}j(()=>{let e=new ResizeObserver(()=>{U(m,p.scrollHeight>u.clientHeight),y()});return e.observe(u),e.observe(f),e.observe(p),()=>e.disconnect()});var x=jr(),C=P(x),w=P(C),T=P(w);o(T,()=>i.children),s(w),ee(w,e=>p=e,()=>p),s(C),ee(C,e=>f=e,()=>f);var D=I(C,2),O=t=>{var n=Ar(),r=P(n);Y(r,{size:`sm`,get disabled(){return e(h)},onclick:()=>b(-1),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c(Q[`chat.caption_overlay.scroll_up`])]),S(e,n)},$$slots:{default:!0}});var i=I(r,2);Y(i,{size:`sm`,get disabled(){return e(_)},onclick:()=>b(1),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c(Q[`chat.caption_overlay.scroll_down`])]),S(e,n)},$$slots:{default:!0}}),s(n),S(t,n)};t(D,t=>{e(m)&&t(O)}),s(x),ee(x,e=>u=e,()=>u),V(()=>H(x,`aria-label`,a())),E(`scroll`,C,y),S(n,x),r()}var Nr=c(`<p class="svelte-s0z1g9"> </p>`),Pr=c(`<p class="interim svelte-s0z1g9" aria-hidden="true"> </p>`),Fr=c(`<section class="heard-captions svelte-s0z1g9" data-smrt-component="HeardCaptions"><p class="speaker svelte-s0z1g9"> </p> <div class="caption-lines svelte-s0z1g9" aria-live="polite" aria-atomic="false"></div> <!></section>`);function Ir(i,o){g(o,!0);let c=n=>{var r=Fr(),i=P(r),a=z(i,!0),o=I(i,2);p(o,21,()=>e(y),e=>e.id,(t,n)=>{var r=Nr(),i=z(r,!0);V(()=>l(i,e(n).text)),S(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Pr(),n=z(t,!0);V(()=>l(n,f())),S(e,t)};t(c,e=>{f()&&e(u)}),s(r),V(()=>{H(r,`aria-label`,_()),l(a,_())}),S(n,r)},u=k(o,`enabled`,3,!1),d=k(o,`lines`,19,()=>[]),f=k(o,`interim`,3,``),m=k(o,`placement`,3,`bottom`),h=k(o,`maxLines`,3,3),_=k(o,`speakerLabel`,3,`You said`),v=a(kr)??!1,y=n(()=>d().slice(-Math.max(1,h())));var b=C(),x=B(b),w=e=>{var n=C(),r=B(n),i=e=>{Mr(e,{children:(e,t)=>{c(e)},$$slots:{default:!0}})},a=e=>{c(e)};t(r,e=>{m()===`bottom`&&!v?e(i):e(a,-1)}),S(e,n)};t(x,t=>{u()&&(e(y).length>0||f())&&t(w)}),S(i,b),r()}var Lr=c(`<p class="svelte-1h07s25"> </p>`),Rr=c(`<p class="interim svelte-1h07s25" aria-hidden="true"> </p>`),zr=c(`<section class="spoken-captions svelte-1h07s25" data-smrt-component="SpokenCaptions"><p class="speaker svelte-1h07s25"><span aria-hidden="true">◈</span> </p> <div class="caption-lines svelte-1h07s25" aria-atomic="false"></div> <!></section>`);function Br(i,o){g(o,!0);let c=n=>{var r=zr(),i=P(r),a=I(P(i));s(i);var o=I(i,2);p(o,21,()=>e(b),e=>e.id,(t,n)=>{var r=Lr(),i=z(r,!0);V(()=>l(i,e(n).text)),S(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Rr(),n=z(t,!0);V(()=>l(n,f())),S(e,t)};t(c,e=>{f()&&e(u)}),s(r),V(()=>{H(r,`aria-label`,_()),l(a,` ${_()??``}`),H(o,`aria-live`,v()?`polite`:`off`)}),S(n,r)},u=k(o,`enabled`,3,!1),d=k(o,`lines`,19,()=>[]),f=k(o,`interim`,3,``),m=k(o,`placement`,3,`bottom`),h=k(o,`maxLines`,3,3),_=k(o,`speakerLabel`,3,`Assistant is speaking`),v=k(o,`announce`,3,!1),y=a(kr)??!1,b=n(()=>d().slice(-Math.max(1,h())));var x=C(),w=B(x),T=e=>{var n=C(),r=B(n),i=e=>{Mr(e,{children:(e,t)=>{c(e)},$$slots:{default:!0}})},a=e=>{c(e)};t(r,e=>{m()===`bottom`&&!y?e(i):e(a,-1)}),S(e,n)};t(w,t=>{u()&&(e(b).length>0||f())&&t(T)}),S(i,x),r()}var Vr=c(`<!> <!>`,1),Hr=c(`<label><input type="radio" name="roomType" class="type-option__radio svelte-ig2cks"/> <span class="type-option__content svelte-ig2cks"><span class="type-option__label svelte-ig2cks"> </span> <span class="type-option__description svelte-ig2cks"> </span></span></label>`),Ur=c(`<div class="field svelte-ig2cks"><label class="field__label svelte-ig2cks" for="room-name"> <span class="field__required svelte-ig2cks">*</span></label> <!></div> <fieldset class="field svelte-ig2cks"><legend class="field__label svelte-ig2cks"> </legend> <div class="type-options svelte-ig2cks"></div></fieldset> <div class="field svelte-ig2cks"><label class="field__label svelte-ig2cks" for="room-description">Description</label> <!> <span class="field__hint svelte-ig2cks"> </span></div> <button type="submit" class="visually-hidden svelte-ig2cks" tabindex="-1" aria-hidden="true"></button>`,1);function Wr(t,a){g(a,!0);let o=[],{t:c}=q(),u=A(``),f=A(`public`),m=A(``),h=n(()=>e(u).trim().length>0),_=[{value:`public`,label:`Public Channel`,description:`Anyone can join and view messages`},{value:`private`,label:`Private Channel`,description:`Invite-only, hidden from non-members`},{value:`dm`,label:`Direct Message`,description:`Private conversation between users`},{value:`agent`,label:`Agent`,description:`Conversation with an AI agent`}];function y(){e(h)&&(a.oncreate({name:e(u).trim(),roomType:e(f),description:e(m).trim()}),x())}function b(){x(),a.onclose()}function x(){U(u,``),U(f,`public`),U(m,``)}j(()=>{if(a.isOpen&&typeof document<`u`){let e=requestAnimationFrame(()=>{document.getElementById(`room-name`)?.focus()});return()=>cancelAnimationFrame(e)}});{let r=t=>{var r=Vr(),i=B(r);Y(i,{variant:`secondary`,type:`button`,onclick:b,children:(e,t)=>{v();var n=d(`Cancel`);S(e,n)},$$slots:{default:!0}});var a=I(i,2);{let t=n(()=>!e(h));Y(a,{variant:`primary`,type:`button`,get disabled(){return e(t)},onclick:y,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c(Q[`chat.room_create_dialog.create_room`])]),S(e,n)},$$slots:{default:!0}})}S(t,r)},g=n(()=>c(Q[`chat.room_create_dialog.title`])),x=n(()=>c(Q[`chat.room_create_dialog.title`]));ue(t,{get open(){return a.isOpen},onClose:b,get title(){return e(g)},size:`md`,get ariaLabel(){return e(x)},footer:r,children:(t,r)=>{Ce(t,{class:`dialog__form`,onsubmit:e=>{e.preventDefault(),y()},children:(t,r)=>{var a=Ur(),d=B(a),g=P(d),v=P(g),y=I(v);s(g);var b=I(g,2);{let t=n(()=>c(Q[`chat.room_create_dialog.name_placeholder`]));_e(b,{id:`room-name`,type:`text`,get placeholder(){return e(t)},maxlength:100,autocomplete:`off`,get value(){return e(u)},set value(e){U(u,e,!0)}})}s(d);var x=I(d,2),C=P(x),w=z(C,!0),T=I(C,2);p(T,21,()=>_,e=>e.value,(t,n)=>{var r=Hr();let a;var c=P(r);D(c);var u,d=I(c,2),p=P(d),m=z(p,!0),h=I(p,2),g=z(h,!0);s(d),s(r),V(()=>{a=i(r,1,`type-option svelte-ig2cks`,null,a,{"type-option--selected":e(f)===e(n).value}),u!==(u=e(n).value)&&(c.value=(c.__value=u)??``),l(m,e(n).label),l(g,e(n).description)}),N(o,[],c,()=>(e(n).value,e(f)),e=>U(f,e)),S(t,r)}),s(T),s(x);var E=I(x,2),O=I(P(E),2);{let t=n(()=>c(Q[`chat.room_create_dialog.description_placeholder`]));Oe(O,{id:`room-description`,get placeholder(){return e(t)},rows:3,maxlength:500,get value(){return e(m)},set value(e){U(m,e,!0)}})}var k=I(O,2),A=z(k);s(E);var j=I(E,2);V((t,n,r)=>{l(v,`${t??``} `),H(y,`aria-label`,n),l(w,r),l(A,`${e(m).length??``}/500`),j.disabled=!e(h)},[()=>c(Q[`chat.room_create_dialog.room_name`]),()=>c(Q[`chat.room_create_dialog.required`]),()=>c(Q[`chat.room_create_dialog.room_type`])]),S(t,a)},$$slots:{default:!0}})},$$slots:{footer:!0,default:!0}})}r()}var Gr=f(`<svg class="close-btn__icon svelte-qy9dvp" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>`),Kr=f(`<svg class="clear-btn__icon svelte-qy9dvp" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>`),qr=c(`<div class="search-input-wrap svelte-qy9dvp"><svg class="search-icon svelte-qy9dvp" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg> <!> <!></div>`),Jr=c(`<img class="result-item__avatar svelte-qy9dvp" alt=""/>`),Yr=c(`<span class="result-item__avatar-placeholder svelte-qy9dvp"> </span>`),Xr=c(`<li class="results-list__item svelte-qy9dvp"><button class="result-item svelte-qy9dvp" type="button"><div class="result-item__header svelte-qy9dvp"><!> <span class="result-item__sender svelte-qy9dvp"> </span> <span class="result-item__date svelte-qy9dvp"> </span></div> <p class="result-item__content svelte-qy9dvp"></p></button></li>`),Zr=c(`<p class="results-count svelte-qy9dvp"> </p> <ul class="results-list svelte-qy9dvp"></ul>`,1),Qr=c(`<div class="search-empty svelte-qy9dvp" role="status"><p class="search-empty__text svelte-qy9dvp"> </p> <p class="search-empty__hint svelte-qy9dvp"> </p></div>`),$r=c(`<div class="search-empty svelte-qy9dvp" role="status"><p class="search-empty__text svelte-qy9dvp"> </p></div>`),ei=c(`<div class="search-panel svelte-qy9dvp" role="search" data-smrt-component="SearchMessages"><div class="search-panel__header svelte-qy9dvp"><h2 class="search-panel__title svelte-qy9dvp"> </h2> <!></div> <!> <div class="search-results svelte-qy9dvp"><!></div></div>`);function ti(i,a){g(a,!0);let{t:o}=q(),c=A(``),d=n(()=>a.results.length>0),f=n(()=>e(c).trim().length>0);function m(){typeof document<`u`&&document.getElementById(`search-messages-input`)?.focus()}function h(){let t=e(c).trim();t.length>0&&a.onsearch(t)}function _(){U(c,``),a.onclose()}function v(e){e.key===`Escape`&&_()}function y(e){return(typeof e==`string`?new Date(e):e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`})}function b(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function x(e,t){let n=b(e);if(!t.trim())return n;let r=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return n.replace(RegExp(`(${r})`,`gi`),`<mark class="highlight">$1</mark>`)}j(()=>{if(!a.isOpen||typeof window>`u`)return;let e=e=>{v(e)};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),j(()=>{if(a.isOpen){let e=requestAnimationFrame(m);return()=>cancelAnimationFrame(e)}});var T=C(),E=B(T),D=r=>{var i=ei(),g=P(i),v=P(g),b=z(v,!0),C=I(v,2);{let t=n(()=>o(Q[`chat.search_messages.close`]));Y(C,{variant:`ghost`,size:`sm`,class:`close-btn`,type:`button`,onclick:_,get"aria-label"(){return e(t)},children:(e,t)=>{var n=Gr();S(e,n)},$$slots:{default:!0}})}s(g);var T=I(g,2);Ce(T,{class:`search-form`,onsubmit:e=>{e.preventDefault(),h()},children:(r,i)=>{var a=qr(),l=I(P(a),2);{let t=n(()=>o(Q[`chat.search_messages.input_placeholder`])),r=n(()=>o(Q[`chat.search_messages.query`]));_e(l,{id:`search-messages-input`,type:`search`,class:`search-input`,get placeholder(){return e(t)},autocomplete:`off`,get"aria-label"(){return e(r)},get value(){return e(c)},set value(e){U(c,e,!0)}})}var u=I(l,2),d=t=>{{let r=n(()=>o(Q[`chat.search_messages.clear`]));Y(t,{variant:`ghost`,size:`sm`,class:`clear-btn`,type:`button`,onclick:()=>{U(c,``),m()},get"aria-label"(){return e(r)},children:(e,t)=>{var n=Kr();S(e,n)},$$slots:{default:!0}})}};t(u,t=>{e(f)&&t(d)}),s(a),S(r,a)},$$slots:{default:!0}});var E=I(T,2),D=P(E),O=n=>{var r=Zr(),i=B(r),d=z(i,!0),f=I(i,2);p(f,21,()=>a.results,e=>e.id,(n,r)=>{var i=Xr(),o=P(i),d=P(o),f=P(d),p=t=>{var n=Jr();V(()=>H(n,`src`,e(r).senderAvatarUrl)),S(t,n)},m=t=>{var n=Yr(),i=z(n,!0);V(e=>l(i,e),[()=>e(r).senderName.charAt(0).toUpperCase()]),S(t,n)};t(f,t=>{e(r).senderAvatarUrl?t(p):t(m,-1)});var h=I(f,2),g=z(h,!0),_=I(h,2),v=z(_,!0);s(d);var b=I(d,2);u(b,()=>x(e(r).content.length>200?e(r).content.slice(0,200)+`...`:e(r).content,e(c)),!0),s(b),s(o),s(i),V(t=>{l(g,e(r).senderName),l(v,t)},[()=>y(e(r).createdAt)]),w(`click`,o,()=>a.onselectresult?.(e(r).id)),S(n,i)}),s(f),V((e,t)=>{l(d,e),H(f,`aria-label`,t)},[()=>o(Q[`chat.search_messages.results_count`],{count:a.results.length,plural:a.results.length===1?``:`s`}),()=>o(Q[`chat.search_messages.results`])]),S(n,r)},k=t=>{var n=Qr(),r=P(n),i=z(r,!0),a=I(r,2),u=z(a,!0);s(n),V((e,t)=>{l(i,e),l(u,t)},[()=>o(Q[`chat.search_messages.no_results`],{query:e(c)}),()=>o(Q[`chat.search_messages.no_results_hint`])]),S(t,n)},A=e=>{var t=$r(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>o(Q[`chat.search_messages.empty`])]),S(e,t)};t(D,t=>{e(d)?t(O):e(f)?t(k,1):t(A,-1)}),s(E),s(i),V((e,t,n)=>{H(i,`aria-label`,e),l(b,t),H(E,`aria-label`,n)},[()=>o(Q[`chat.search_messages.search`]),()=>o(Q[`chat.search_messages.title`]),()=>o(Q[`chat.search_messages.results`])]),S(r,i)};t(E,e=>{a.isOpen&&e(D)}),S(i,T),r()}T([`click`]);var $=K({"chat.helper.title":`Helper settings`,"chat.helper.loading":`Loading helper settings…`,"chat.helper.unavailable":`Helper settings are unavailable for this application.`,"chat.helper.gallery":`Helper gallery`,"chat.helper.add_style":`Add {style}`,"chat.helper.name":`Display name`,"chat.helper.voice":`Voice`,"chat.helper.placement":`Placement`,"chat.helper.bottom_left":`Bottom left`,"chat.helper.bottom_right":`Bottom right`,"chat.helper.heard_subtitles":`Show heard subtitles`,"chat.helper.spoken_subtitles":`Show spoken subtitles`,"chat.helper.save":`Save settings`,"chat.helper.save_changes":`Save changes`,"chat.helper.saving":`Saving…`,"chat.helper.unsaved_changes":`You have unsaved changes.`,"chat.helper.photo_saved_apply":`Photo saved. Save settings to use it.`,"chat.helper.custom_setup":`Create a photographic helper`,"chat.helper.back_to_settings":`Back to helper settings`,"chat.helper.reset_button":`Reset to application defaults`,"chat.helper.saved":`Helper settings saved.`,"chat.helper.reset":`Helper settings reset.`,"chat.helper.load_failed":`Could not load helper settings.`,"chat.helper.save_failed":`Could not save helper settings.`,"chat.helper.reset_failed":`Could not reset helper settings.`,"chat.helper.open_settings_to_choose":`Open Helper settings to choose a saved helper.`,"chat.helper.selected_style_unavailable":`The selected helper style is unavailable.`,"chat.helper.load_renderer_failed":`Could not load the selected helper.`,"chat.helper.preview":`Selected helper preview`,"chat.helper.preview_failed":`Could not preview the selected helper.`,"chat.helper.opening_assistant":`Opening the assistant. Start listening when it is ready.`,"chat.helper.conversation_unavailable":`The assistant could not be opened. Try again before starting listening mode.`,"chat.chat_layout.rooms_label":`Chat rooms`,"chat.chat_layout.resize_sidebar":`Resize sidebar`,"chat.member_list.room_members":`Room members`,"chat.member_list.close":`Close member list`,"chat.member_list.empty":`No members`,"chat.room_header.room_label":`Room: {name}`,"chat.room_header.show_members":`Show members ({count})`,"chat.room_header.members":`Members`,"chat.room_header.search_messages":`Search messages`,"chat.room_header.search":`Search`,"chat.room_list.rooms_label":`Chat rooms`,"chat.room_list.create_new_room":`Create new room`,"chat.room_list.new_room":`+ New Room`,"chat.room_list.direct_messages":`Direct Messages`,"chat.room_list.unread_messages":`{count} unread messages`,"chat.room_list.no_rooms":`No rooms yet`,"chat.room_list.create_first_room":`Create your first room`,"chat.message_input.cancel_reply":`Cancel reply`,"chat.message_input.input_label":`Message input`,"chat.message_input.send":`Send message`,"chat.message_item.message_from":`Message from {name}`,"chat.message_item.add_reaction":`Add reaction`,"chat.message_item.reply":`Reply`,"chat.message_item.edit":`Edit`,"chat.message_item.delete":`Delete`,"chat.message_item.more_actions":`Message actions`,"chat.message_list.messages_label":`Messages`,"chat.message_list.no_messages":`No messages yet`,"chat.thread_panel.thread_label":`Thread: {title}`,"chat.thread_panel.close":`Close thread`,"chat.thread_panel.reply_placeholder":`Reply in thread...`,"chat.chat_tab.chat_with":`Chat with {name}`,"chat.chat_tab.collapse":`Collapse chat`,"chat.chat_tab.minimize":`Minimize`,"chat.chat_tab.close":`Close`,"chat.chat_tab.open_chat_with":`Open chat with {name}`,"chat.chat_tab.unread":`{count} unread`,"chat.chat_tab_list.minimized_chats":`Minimized chats`,"chat.chat_tab_list.open_chat_with":`Open chat with {name}`,"chat.chat_tab_list.unread":`{count} unread`,"chat.chat_tab_list.close_chat_with":`Close chat with {name}`,"chat.chat_tab_list.close":`Close`,"chat.chat_tabs.tabs_label":`Chat tabs`,"chat.mini_chat.messages_label":`Chat messages`,"chat.mini_chat.no_messages":`No messages yet`,"chat.mini_chat.placeholder":`Type a message...`,"chat.mini_chat.input_label":`Message input`,"chat.mini_chat.send":`Send message`}),ni=c(`<p class="message svelte-1ocwb6j"> </p>`),ri=c(`<p class="message svelte-1ocwb6j" role="status"> </p>`),ii=c(`<p> </p>`),ai=c(`<div class="preview svelte-1ocwb6j"></div>`),oi=c(`<div class="setup-actions svelte-1ocwb6j"></div>`),si=c(`<section class="custom-setup svelte-1ocwb6j"><!> <!></section>`),ci=c(`<option> </option>`),li=c(`<option> </option><option> </option>`,1),ui=c(`<label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <!> <!>`,1),di=c(`<fieldset class="svelte-1ocwb6j"><legend> </legend> <div class="gallery svelte-1ocwb6j" role="radiogroup" tabindex="-1"></div> <!> <!> <!> <!> <!></fieldset> <!> <div class="actions svelte-1ocwb6j"><!><!></div>`,1),fi=c(`<section class="helper-panel svelte-1ocwb6j" aria-labelledby="helper-panel-title" data-smrt-component="HelperControlPanel"><h2 id="helper-panel-title"> </h2> <!> <!> <!></section>`);function pi(i,a){let o=ae();g(a,!0);let{t:c}=q(),u=k(a,`snapshot`,15),f=A(!u()),m=A(!1),h=A(null),y=A(!1),b=A(F(u()?.preferences?{...u().preferences}:u()?.recoveryDraft?{...u().recoveryDraft}:null)),x=null,T=null,E=A(null),D=A(void 0),O=A(void 0),M=A(null);j(()=>{if(!u())return;let e=T===le(u())?x:null;e||(x=null,T=null),U(b,e??(u().preferences?{...u().preferences}:u().recoveryDraft?{...u().recoveryDraft}:null),!0)}),j(()=>{if(u()){U(f,!1);return}let e=!0;return a.client.load().then(t=>{e&&(u(t),U(b,t.preferences?{...t.preferences}:t.recoveryDraft?{...t.recoveryDraft}:null,!0))}).catch(t=>{e&&U(h,t instanceof Error?t.message:c($[`chat.helper.load_failed`]),!0)}).finally(()=>{e&&U(f,!1)}),()=>{e=!1}});let N=e=>!!u()?.permissions.editableFields.includes(e),te=n(()=>!!e(b)&&(u()?.permissions.editableFields.length??0)>0),L=n(()=>u()?.preferences??null),R=n(()=>!!e(b)&&(!e(L)||e(b).offeringId!==e(L).offeringId||e(b).name!==e(L).name||e(b).voiceId!==e(L).voiceId||e(b).placement!==e(L).placement||e(b).heardSubtitles!==e(L).heardSubtitles||e(b).spokenSubtitles!==e(L).spokenSubtitles)),ne=n(()=>(u()?.offerings??[]).filter(e=>a.registry.get(e.styleId))),re=n(()=>N(`offeringId`)?Math.max(0,e(ne).findIndex(t=>t.id===e(b)?.offeringId)):-1),ie=n(()=>a.registry.list().filter(e=>e.Setup&&u()?.permissions.customStyleIds.includes(e.id))),oe=n(()=>e(b)?e(ne).find(t=>t.id===e(b)?.offeringId)??null:u()?.offering??null);j(()=>{let t=e(oe),n=t?a.registry.get(t.styleId):void 0,r=e(O),i=!1,o=null;if(U(M,null),t&&n&&r)return(async()=>{try{let e=a.loadPayload?await a.loadPayload(t):null,s=await n.mount({target:r,offering:t,payload:e});i?s.destroy():o=s}catch(e){i||U(M,e instanceof Error?e.message:c($[`chat.helper.preview_failed`]),!0)}})(),()=>{i=!0,o?.destroy(),o=null}});function ce(t,n){e(b)&&(U(b,{...e(b),[t]:n},!0),e(y)||U(h,null))}function le(e){return JSON.stringify({preferences:e.preferences,offering:e.offering,offerings:e.offerings,voices:e.voices,permissions:e.permissions,selection:e.selection,source:e.source,recovery:e.recovery,recoveryDraft:e.recoveryDraft})}function W(t){let n=e(ne).findIndex(e=>e.id===t);se().then(()=>document.getElementById(`${o}-offering-${n}`)?.focus())}function G(){let t=e(E);U(E,null),t&&se().then(()=>document.getElementById(`${o}-setup-${t}`)?.focus())}function ue(t){U(E,t,!0),se().then(()=>e(D)?.querySelector(`button`)?.focus())}function K(t){if(!e(b)||!N(`offeringId`))return;let n=e(ne);if(!n.length)return;let r=Math.max(0,n.findIndex(t=>t.id===e(b)?.offeringId)),i=null;(t.key===`ArrowRight`||t.key===`ArrowDown`)&&(i=(r+1)%n.length),(t.key===`ArrowLeft`||t.key===`ArrowUp`)&&(i=(r-1+n.length)%n.length),t.key===`Home`&&(i=0),t.key===`End`&&(i=n.length-1),i!==null&&(t.preventDefault(),ce(`offeringId`,n[i].id),W(n[i].id))}async function de(){if(e(b)&&!e(m)){U(m,!0),U(h,null),U(y,!1);try{J(await a.client.save(e(b))),U(h,c($[`chat.helper.saved`]),!0)}catch(e){U(h,e instanceof Error?e.message:c($[`chat.helper.save_failed`]),!0),U(y,!0)}finally{U(m,!1)}}}async function fe(){if(!e(m)&&u()?.permissions.canReset){U(m,!0),U(h,null),U(y,!1);try{J(await a.client.reset()),U(h,c($[`chat.helper.reset`]),!0)}catch(e){U(h,e instanceof Error?e.message:c($[`chat.helper.reset_failed`]),!0),U(y,!0)}finally{U(m,!1)}}}function J(e){x=null,T=null,u(e),U(b,e.preferences?{...e.preferences}:e.recoveryDraft?{...e.recoveryDraft}:null,!0),a.onchanged?.(e)}async function pe(t){a.oncustomsaved?.(t);try{let n=e(b),r=await a.client.load();u(r);let i=r.preferences??r.recoveryDraft??null,o=r.offerings.find(e=>e.id===t.id&&!!a.registry.get(e.styleId));if(i&&o&&r.permissions.editableFields.includes(`offeringId`)){let e={...i};for(let t of r.permissions.editableFields)n&&(e[t]=n[t]);x={...e,offeringId:o.id},T=le(r)}else x=null,T=null;U(b,x??(i?{...i}:null),!0),a.onchanged?.(r),U(E,null),U(h,c($[`chat.helper.photo_saved_apply`]),!0),U(y,!1),o&&W(o.id)}catch(e){U(h,e instanceof Error?e.message:c($[`chat.helper.load_failed`]),!0),U(y,!0)}}var me=fi(),X=P(me),he=z(X,!0),ge=I(X,2),ve=t=>{var n=ni(),r=z(n,!0);V(()=>{H(n,`role`,e(y)?`alert`:`status`),H(n,`aria-live`,e(y)?`assertive`:`polite`),l(r,e(h))}),S(t,n)};t(ge,t=>{e(h)&&t(ve)});var ye=I(ge,2),be=e=>{var t=ri(),n=z(t,!0);V(()=>l(n,u().recovery.message)),S(e,t)};t(ye,e=>{u()?.recovery&&e(be)});var Se=I(ye,2),Ce=e=>{var t=ii(),n=z(t,!0);V(e=>l(n,e),[()=>c($[`chat.helper.loading`])]),S(e,t)},we=e=>{var t=ii(),n=z(t,!0);V(e=>l(n,e),[()=>c($[`chat.helper.unavailable`])]),S(e,t)},Te=r=>{var i=di(),f=B(i),h=P(f),g=z(h,!0),y=I(h,2);p(y,23,()=>e(ne),e=>e.id,(t,r,i)=>{{let a=n(()=>`${o}-offering-${e(i)}`),s=n(()=>e(re)===e(i)?0:-1),c=n(()=>e(b)?.offeringId===e(r).id?`selected`:``),u=n(()=>e(b)?.offeringId===e(r).id),f=n(()=>!e(b)||!N(`offeringId`));Y(t,{get id(){return e(a)},get tabindex(){return e(s)},type:`button`,variant:`secondary`,get class(){return e(c)},role:`radio`,get"aria-checked"(){return e(u)},get disabled(){return e(f)},onclick:()=>ce(`offeringId`,e(r).id),children:(t,n)=>{v();var i=d();V(()=>l(i,e(r).label)),S(t,i)},$$slots:{default:!0}})}}),s(y);var x=I(y,2),T=t=>{var n=ai();ee(n,e=>U(O,e),()=>e(O)),V(e=>H(n,`aria-label`,e),[()=>c($[`chat.helper.preview`])]),S(t,n)};t(x,t=>{e(oe)&&t(T)});var k=I(x,2),A=t=>{var n=ri(),r=z(n,!0);V(()=>l(r,e(M))),S(t,n)};t(k,t=>{e(M)&&t(A)});var j=I(k,2),F=t=>{var r=oi();p(r,21,()=>e(ie),e=>e.id,(t,r)=>{{let i=n(()=>`${o}-setup-${e(r).id}`),a=n(()=>!N(`offeringId`));Y(t,{get id(){return e(i)},type:`button`,variant:`secondary`,get disabled(){return e(a)},onclick:()=>ue(e(r).id),children:(t,n)=>{v();var i=d();V(e=>l(i,e),[()=>c($[`chat.helper.add_style`],{style:e(r).label})]),S(t,i)},$$slots:{default:!0}})}}),s(r),S(t,r)};t(j,t=>{e(ie).length&&t(F)});var L=I(j,2),ae=r=>{let i=n(()=>a.registry.get(e(E))?.Setup);var o=si(),u=P(o);Y(u,{type:`button`,variant:`secondary`,onclick:G,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c($[`chat.helper.back_to_settings`])]),S(e,n)},$$slots:{default:!0}});var f=I(u,2),p=t=>{var n=C(),r=B(n);_(r,()=>e(i),(e,t)=>{t(e,{onsaved:pe,oncancel:G})}),S(t,n)};t(f,t=>{e(i)&&t(p)}),s(o),ee(o,e=>U(D,e),()=>e(D)),V(e=>H(o,`aria-label`,e),[()=>c($[`chat.helper.custom_setup`])]),S(r,o)},se=n(()=>e(E)&&a.registry.get(e(E))?.Setup);t(L,t=>{e(se)&&t(ae)});var le=I(L,2),W=t=>{var r=ui(),i=B(r),a=P(i,!0),o=I(a);{let t=n(()=>!N(`name`));_e(o,{get value(){return e(b).name},get disabled(){return e(t)},oninput:e=>ce(`name`,e.currentTarget.value)})}s(i);var d=I(i,2),f=P(d,!0),m=I(f);{let t=n(()=>!N(`voiceId`));xe(m,{get value(){return e(b).voiceId},get disabled(){return e(t)},onchange:e=>ce(`voiceId`,e.currentTarget.value),children:(t,n)=>{var r=C(),i=B(r);p(i,17,()=>u().voices,e=>e.id,(t,n)=>{var r=ci(),i=z(r,!0),a={};V(()=>{l(i,e(n).label),a!==(a=e(n).id)&&(r.value=(r.__value=a)??``)}),S(t,r)}),S(t,r)},$$slots:{default:!0}})}s(d);var h=I(d,2),g=P(h,!0),_=I(g);{let t=n(()=>!N(`placement`));xe(_,{get value(){return e(b).placement},get disabled(){return e(t)},onchange:e=>ce(`placement`,e.currentTarget.value),children:(e,t)=>{var n=li(),r=B(n),i=z(r,!0);r.value=r.__value=`bottom-left`;var a=I(r),o=z(a,!0);a.value=a.__value=`bottom-right`,V((e,t)=>{l(i,e),l(o,t)},[()=>c($[`chat.helper.bottom_left`]),()=>c($[`chat.helper.bottom_right`])]),S(e,n)},$$slots:{default:!0}})}s(h);var v=I(h,2);{let t=n(()=>c($[`chat.helper.heard_subtitles`])),r=n(()=>!N(`heardSubtitles`));Ee(v,{get label(){return e(t)},get checked(){return e(b).heardSubtitles},get disabled(){return e(r)},onchange:e=>ce(`heardSubtitles`,e.currentTarget.checked)})}var y=I(v,2);{let t=n(()=>c($[`chat.helper.spoken_subtitles`])),r=n(()=>!N(`spokenSubtitles`));Ee(y,{get label(){return e(t)},get checked(){return e(b).spokenSubtitles},get disabled(){return e(r)},onchange:e=>ce(`spokenSubtitles`,e.currentTarget.checked)})}V((e,t,n)=>{l(a,e),l(f,t),l(g,n)},[()=>c($[`chat.helper.name`]),()=>c($[`chat.helper.voice`]),()=>c($[`chat.helper.placement`])]),S(t,r)},q=e=>{var t=ni(),n=z(t,!0);V(e=>l(n,e),[()=>c($[`chat.helper.unavailable`])]),S(e,t)};t(le,t=>{e(b)?t(W):t(q,-1)}),s(f);var J=I(f,2),me=e=>{var t=ri(),n=z(t,!0);V(e=>l(n,e),[()=>c($[`chat.helper.unsaved_changes`])]),S(e,t)};t(J,t=>{e(R)&&t(me)});var X=I(J,2),he=P(X),ge=t=>{{let r=n(()=>e(m)||!e(R));Y(t,{type:`button`,onclick:de,get disabled(){return e(r)},children:(t,n)=>{v();var r=d();V(e=>l(r,e),[()=>e(m)?c($[`chat.helper.saving`]):c($[`chat.helper.save_changes`])]),S(t,r)},$$slots:{default:!0}})}};t(he,t=>{e(te)&&t(ge)});var ve=I(he),ye=t=>{Y(t,{type:`button`,variant:`secondary`,onclick:fe,get disabled(){return e(m)},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c($[`chat.helper.reset_button`])]),S(e,n)},$$slots:{default:!0}})};t(ve,e=>{u().permissions.canReset&&e(ye)}),s(X),V((t,n)=>{f.disabled=e(m),l(g,t),H(y,`aria-label`,n)},[()=>c($[`chat.helper.gallery`]),()=>c($[`chat.helper.gallery`])]),w(`keydown`,y,K),S(r,i)};t(Se,t=>{e(f)?t(Ce):u()?t(Te,-1):t(we,1)}),s(me),V(t=>{H(me,`aria-busy`,e(f)||e(m)),l(he,t)},[()=>c($[`chat.helper.title`])]),S(i,me),r()}T([`keydown`]);var mi=c(`<div class="room-list__header svelte-p0wx6n"><!></div>`),hi=c(`<span class="unread-badge svelte-p0wx6n"> </span>`),gi=c(`<li><button type="button"><span class="room-item__icon svelte-p0wx6n"> </span> <span class="room-item__name svelte-p0wx6n"> </span> <!></button></li>`),_i=c(`<ul class="room-group__list svelte-p0wx6n" role="list"></ul>`),vi=c(`<section class="room-group svelte-p0wx6n"><button class="room-group__header svelte-p0wx6n" type="button"><span>▾</span> <span class="room-group__label svelte-p0wx6n">Channels</span> <span class="room-group__count svelte-p0wx6n"> </span></button> <!></section>`),yi=c(`<img class="room-item__avatar svelte-p0wx6n" alt=""/>`),bi=c(`<span class="room-item__avatar-placeholder svelte-p0wx6n"> </span>`),xi=c(`<span class="room-item__preview svelte-p0wx6n"> </span>`),Si=c(`<span class="room-item__time svelte-p0wx6n"> </span>`),Ci=c(`<li><button type="button"><!> <span class="room-item__details svelte-p0wx6n"><span class="room-item__name svelte-p0wx6n"> </span> <!></span> <span class="room-item__meta svelte-p0wx6n"><!> <!></span></button></li>`),wi=c(`<section class="room-group svelte-p0wx6n"><button class="room-group__header svelte-p0wx6n" type="button"><span>▾</span> <span class="room-group__label svelte-p0wx6n"> </span> <span class="room-group__count svelte-p0wx6n"> </span></button> <!></section>`),Ti=c(`<li><button type="button"><span class="room-item__agent-icon svelte-p0wx6n" aria-hidden="true">⚙</span> <span class="room-item__name svelte-p0wx6n"> </span> <!></button></li>`),Ei=c(`<section class="room-group svelte-p0wx6n"><button class="room-group__header svelte-p0wx6n" type="button"><span>▾</span> <span class="room-group__label svelte-p0wx6n">Agents</span> <span class="room-group__count svelte-p0wx6n"> </span></button> <!></section>`),Di=c(`<div class="room-list__empty svelte-p0wx6n"><p class="svelte-p0wx6n"> </p> <!></div>`),Oi=c(`<nav class="room-list svelte-p0wx6n" data-smrt-component="RoomList"><!> <!> <!> <!> <!></nav>`);function ki(a,o){g(o,!0);let{t:c}=q(),u=F({}),f=n(()=>o.rooms.filter(e=>e.roomType===`public`||e.roomType===`private`)),m=n(()=>o.rooms.filter(e=>e.roomType===`dm`)),h=n(()=>o.rooms.filter(e=>e.roomType===`agent`));function _(e){u[e]=!u[e]}function y(e){switch(e.roomType){case`public`:return`#`;case`private`:return`🔒`;case`dm`:return``;case`agent`:return``;default:return`#`}}function b(e){if(!e)return``;let t=typeof e==`string`?new Date(e):e,n=new Date().getTime()-t.getTime(),r=864e5;return n<r?t.toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`}):n<7*r?t.toLocaleDateString(void 0,{weekday:`short`}):t.toLocaleDateString(void 0,{month:`short`,day:`numeric`})}var x=Oi(),C=P(x),T=t=>{var r=mi(),i=P(r);{let t=n(()=>c($[`chat.room_list.create_new_room`]));Y(i,{variant:`ghost`,fullWidth:!0,class:`create-room-btn`,type:`button`,get onclick(){return o.oncreateroom},get"aria-label"(){return e(t)},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c($[`chat.room_list.new_room`])]),S(e,n)},$$slots:{default:!0}})}s(r),S(t,r)};t(C,e=>{o.oncreateroom&&e(T)});var E=I(C,2),D=n=>{var r=vi(),a=P(r),d=P(a);let m;var h=I(d,4),g=z(h,!0);s(a);var v=I(a,2),b=n=>{var r=_i();p(r,21,()=>e(f),e=>e.id,(n,r)=>{var a=gi(),u=P(a);let d;var f=P(u),p=z(f,!0),m=I(f,2),h=z(m,!0),g=I(m,2),_=t=>{var n=hi(),i=z(n,!0);V(t=>{H(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),S(t,n)};t(g,t=>{e(r).unreadCount>0&&t(_)}),s(u),s(a),V(t=>{d=i(u,1,`room-item svelte-p0wx6n`,null,d,{"room-item--active":e(r).id===o.currentRoomId,"room-item--muted":e(r).isMuted}),H(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(p,t),l(h,e(r).name)},[()=>y(e(r))]),w(`click`,u,()=>o.onselectroom(e(r).id)),S(n,a)}),s(r),S(n,r)};t(v,e=>{u.channels||e(b)}),s(r),V(()=>{H(a,`aria-expanded`,!u.channels),m=i(d,1,`room-group__chevron svelte-p0wx6n`,null,m,{"room-group__chevron--collapsed":u.channels}),l(g,e(f).length)}),w(`click`,a,()=>_(`channels`)),S(n,r)};t(E,t=>{e(f).length>0&&t(D)});var O=I(E,2),k=n=>{var r=wi(),a=P(r),d=P(a);let f;var h=I(d,2),g=z(h,!0),v=I(h,2),y=z(v,!0);s(a);var x=I(a,2),C=n=>{var r=_i();p(r,21,()=>e(m),e=>e.id,(n,r)=>{var a=Ci(),u=P(a);let d;var f=P(u),p=t=>{var n=yi();V(()=>H(n,`src`,e(r).avatarUrl)),S(t,n)},m=t=>{var n=bi(),i=z(n,!0);V(e=>l(i,e),[()=>e(r).name.charAt(0).toUpperCase()]),S(t,n)};t(f,t=>{e(r).avatarUrl?t(p):t(m,-1)});var h=I(f,2),g=P(h),_=z(g,!0),v=I(g,2),y=t=>{var n=xi(),i=z(n,!0);V(()=>l(i,e(r).lastMessage.content)),S(t,n)};t(v,t=>{e(r).lastMessage&&t(y)}),s(h);var x=I(h,2),C=P(x),T=t=>{var n=Si(),i=z(n,!0);V(e=>l(i,e),[()=>b(e(r).lastMessageAt)]),S(t,n)};t(C,t=>{e(r).lastMessageAt&&t(T)});var E=I(C,2),D=t=>{var n=hi(),i=z(n,!0);V(t=>{H(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),S(t,n)};t(E,t=>{e(r).unreadCount>0&&t(D)}),s(x),s(u),s(a),V(()=>{d=i(u,1,`room-item svelte-p0wx6n`,null,d,{"room-item--active":e(r).id===o.currentRoomId,"room-item--muted":e(r).isMuted}),H(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(_,e(r).name)}),w(`click`,u,()=>o.onselectroom(e(r).id)),S(n,a)}),s(r),S(n,r)};t(x,e=>{u.dms||e(C)}),s(r),V(t=>{H(a,`aria-expanded`,!u.dms),f=i(d,1,`room-group__chevron svelte-p0wx6n`,null,f,{"room-group__chevron--collapsed":u.dms}),l(g,t),l(y,e(m).length)},[()=>c($[`chat.room_list.direct_messages`])]),w(`click`,a,()=>_(`dms`)),S(n,r)};t(O,t=>{e(m).length>0&&t(k)});var A=I(O,2),j=n=>{var r=Ei(),a=P(r),d=P(a);let f;var m=I(d,4),g=z(m,!0);s(a);var v=I(a,2),y=n=>{var r=_i();p(r,21,()=>e(h),e=>e.id,(n,r)=>{var a=Ti(),u=P(a);let d;var f=I(P(u),2),p=z(f,!0),m=I(f,2),h=t=>{var n=hi(),i=z(n,!0);V(t=>{H(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),S(t,n)};t(m,t=>{e(r).unreadCount>0&&t(h)}),s(u),s(a),V(()=>{d=i(u,1,`room-item svelte-p0wx6n`,null,d,{"room-item--active":e(r).id===o.currentRoomId}),H(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(p,e(r).name)}),w(`click`,u,()=>o.onselectroom(e(r).id)),S(n,a)}),s(r),S(n,r)};t(v,e=>{u.agents||e(y)}),s(r),V(()=>{H(a,`aria-expanded`,!u.agents),f=i(d,1,`room-group__chevron svelte-p0wx6n`,null,f,{"room-group__chevron--collapsed":u.agents}),l(g,e(h).length)}),w(`click`,a,()=>_(`agents`)),S(n,r)};t(A,t=>{e(h).length>0&&t(j)});var ee=I(A,2),M=e=>{var n=Di(),r=P(n),i=z(r,!0),a=I(r,2),u=e=>{Y(e,{variant:`ghost`,size:`sm`,class:`create-link`,type:`button`,get onclick(){return o.oncreateroom},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>c($[`chat.room_list.create_first_room`])]),S(e,n)},$$slots:{default:!0}})};t(a,e=>{o.oncreateroom&&e(u)}),s(n),V(e=>l(i,e),[()=>c($[`chat.room_list.no_rooms`])]),S(e,n)};t(ee,e=>{o.rooms.length===0&&e(M)}),s(x),V(e=>H(x,`aria-label`,e),[()=>c($[`chat.room_list.rooms_label`])]),S(a,x),r()}T([`click`]);var Ai=c(`<div data-smrt-component="ChatLayout"><aside class="chat-layout__sidebar svelte-bpwn8w"><!></aside> <button type="button" class="chat-layout__resize-handle svelte-bpwn8w"></button> <main class="chat-layout__content svelte-bpwn8w"><!></main></div>`);function ji(t,n){g(n,!0);let{t:a}=q(),c=A(260),l=A(!1);function u(e){U(l,!0),e.currentTarget.setPointerCapture(e.pointerId)}function d(t){if(!e(l))return;let n=Math.min(400,Math.max(200,t.clientX));U(c,n,!0)}function f(){U(l,!1)}var p=Ai();let m;var h=P(p);let _;ki(P(h),{get rooms(){return n.rooms},get currentRoomId(){return n.currentRoomId},get onselectroom(){return n.onselectroom},get oncreateroom(){return n.oncreateroom}}),s(h);var v=I(h,2),y=I(v,2),b=P(y);o(b,()=>n.children),s(y),s(p),V((t,n)=>{m=i(p,1,`chat-layout svelte-bpwn8w`,null,m,{"chat-layout--resizing":e(l)}),H(h,`aria-label`,t),_=x(h,``,_,{"--smrt-chat-layout-sidebar-width":`${e(c)??``}px`}),H(v,`aria-label`,n)},[()=>a($[`chat.chat_layout.rooms_label`]),()=>a($[`chat.chat_layout.resize_sidebar`])]),w(`pointerdown`,v,u),w(`pointermove`,v,d),w(`pointerup`,v,f),w(`keydown`,v,t=>{t.key===`ArrowLeft`&&U(c,Math.max(200,e(c)-10),!0),t.key===`ArrowRight`&&U(c,Math.min(400,e(c)+10),!0)}),S(t,p),r()}T([`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var Mi=f(`<svg class="close-btn__icon svelte-dnjj1q" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>`),Ni=c(`<img class="member-item__avatar svelte-dnjj1q" alt=""/>`),Pi=c(`<span class="member-item__avatar-placeholder svelte-dnjj1q"> </span>`),Fi=c(`<span> </span>`),Ii=c(`<li class="member-item svelte-dnjj1q"><div class="member-item__avatar-wrap svelte-dnjj1q"><!> <span class="member-item__status-dot svelte-dnjj1q"></span></div> <span class="member-item__info svelte-dnjj1q"><span class="member-item__name svelte-dnjj1q"> </span> <!></span></li>`),Li=c(`<section class="member-group svelte-dnjj1q"><h3 class="member-group__header svelte-dnjj1q">Online <span class="member-group__count svelte-dnjj1q"> </span></h3> <ul class="member-group__list svelte-dnjj1q" role="list"></ul></section>`),Ri=c(`<section class="member-group svelte-dnjj1q"><h3 class="member-group__header svelte-dnjj1q">Away <span class="member-group__count svelte-dnjj1q"> </span></h3> <ul class="member-group__list svelte-dnjj1q" role="list"></ul></section>`),zi=c(`<li class="member-item member-item--offline svelte-dnjj1q"><div class="member-item__avatar-wrap svelte-dnjj1q"><!> <span class="member-item__status-dot svelte-dnjj1q"></span></div> <span class="member-item__info svelte-dnjj1q"><span class="member-item__name svelte-dnjj1q"> </span> <!></span></li>`),Bi=c(`<section class="member-group svelte-dnjj1q"><h3 class="member-group__header svelte-dnjj1q">Offline <span class="member-group__count svelte-dnjj1q"> </span></h3> <ul class="member-group__list svelte-dnjj1q" role="list"></ul></section>`),Vi=c(`<p class="member-list__empty svelte-dnjj1q"> </p>`),Hi=c(`<aside class="member-list svelte-dnjj1q" data-smrt-component="MemberList"><div class="member-list__header svelte-dnjj1q"><h2 class="member-list__title svelte-dnjj1q">Members</h2> <span class="member-list__count svelte-dnjj1q"> </span> <!></div> <div class="member-list__content svelte-dnjj1q"><!> <!> <!> <!></div></aside>`);function Ui(a,o){g(o,!0);let{t:c}=q(),u=n(()=>o.participants.filter(e=>e.onlineStatus===`online`)),d=n(()=>o.participants.filter(e=>e.onlineStatus===`away`||e.onlineStatus===`dnd`)),f=n(()=>o.participants.filter(e=>e.onlineStatus===`offline`));function m(e){switch(e){case`online`:return`var(--smrt-color-success)`;case`away`:return`var(--smrt-color-warning)`;case`dnd`:return`var(--smrt-color-error)`;default:return`var(--smrt-color-outline)`}}function h(e){switch(e){case`online`:return`Online`;case`away`:return`Away`;case`dnd`:return`Do not disturb`;default:return`Offline`}}function _(e){switch(e){case`owner`:return`Owner`;case`admin`:return`Admin`;default:return``}}var v=Hi(),y=P(v),b=I(P(y),2),C=z(b,!0),w=I(b,2);{let t=n(()=>c($[`chat.member_list.close`]));Y(w,{variant:`ghost`,size:`sm`,class:`close-btn`,type:`button`,get onclick(){return o.onclose},get"aria-label"(){return e(t)},children:(e,t)=>{var n=Mi();S(e,n)},$$slots:{default:!0}})}s(y);var T=I(y,2),E=P(T),D=r=>{var a=Li(),o=P(a),c=I(P(o)),d=z(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(u),e=>e.id,(r,a)=>{var o=Ii(),c=P(o),u=P(c),d=t=>{var n=Ni();V(()=>H(n,`src`,e(a).avatarUrl)),S(t,n)},f=t=>{var n=Pi(),r=z(n,!0);V(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),S(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let g;s(c);var v=I(c,2),y=P(v),b=z(y,!0),C=I(y,2),w=t=>{var n=Fi(),r=z(n,!0);V(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),S(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),V((t,n)=>{H(p,`aria-label`,t),g=x(p,``,g,{background:n}),l(b,e(a).nickname||e(a).name)},[()=>h(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),S(r,o)}),s(f),s(a),V(()=>l(d,e(u).length)),S(r,a)};t(E,t=>{e(u).length>0&&t(D)});var O=I(E,2),k=r=>{var a=Ri(),o=P(a),c=I(P(o)),u=z(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(d),e=>e.id,(r,a)=>{var o=Ii(),c=P(o),u=P(c),d=t=>{var n=Ni();V(()=>H(n,`src`,e(a).avatarUrl)),S(t,n)},f=t=>{var n=Pi(),r=z(n,!0);V(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),S(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let g;s(c);var v=I(c,2),y=P(v),b=z(y,!0),C=I(y,2),w=t=>{var n=Fi(),r=z(n,!0);V(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),S(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),V((t,n)=>{H(p,`aria-label`,t),g=x(p,``,g,{background:n}),l(b,e(a).nickname||e(a).name)},[()=>h(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),S(r,o)}),s(f),s(a),V(()=>l(u,e(d).length)),S(r,a)};t(O,t=>{e(d).length>0&&t(k)});var A=I(O,2),j=r=>{var a=Bi(),o=P(a),c=I(P(o)),u=z(c,!0);s(o);var d=I(o,2);p(d,21,()=>e(f),e=>e.id,(r,a)=>{var o=zi(),c=P(o),u=P(c),d=t=>{var n=Ni();V(()=>H(n,`src`,e(a).avatarUrl)),S(t,n)},f=t=>{var n=Pi(),r=z(n,!0);V(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),S(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let g;s(c);var v=I(c,2),y=P(v),b=z(y,!0),C=I(y,2),w=t=>{var n=Fi(),r=z(n,!0);V(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),S(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),V((t,n)=>{H(p,`aria-label`,t),g=x(p,``,g,{background:n}),l(b,e(a).nickname||e(a).name)},[()=>h(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),S(r,o)}),s(d),s(a),V(()=>l(u,e(f).length)),S(r,a)};t(A,t=>{e(f).length>0&&t(j)});var ee=I(A,2),M=e=>{var t=Vi(),n=z(t,!0);V(e=>l(n,e),[()=>c($[`chat.member_list.empty`])]),S(e,t)};t(ee,e=>{o.participants.length===0&&e(M)}),s(T),s(v),V(e=>{H(v,`aria-label`,e),l(C,o.participants.length)},[()=>c($[`chat.member_list.room_members`])]),S(a,v),r()}var Wi=c(`<span class="room-header__icon svelte-54tuky" aria-hidden="true"> </span>`),Gi=c(`<img class="room-header__avatar svelte-54tuky" alt=""/>`),Ki=c(`<span class="room-header__avatar-placeholder svelte-54tuky"> </span>`),qi=c(`<p class="room-header__topic svelte-54tuky"> </p>`),Ji=c(`<svg class="header-btn__icon svelte-54tuky" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg> <span class="header-btn__count svelte-54tuky"> </span>`,1),Yi=f(`<svg class="header-btn__icon svelte-54tuky" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg>`),Xi=c(`<header class="room-header svelte-54tuky" data-smrt-component="RoomHeader"><div class="room-header__info svelte-54tuky"><div class="room-header__title-row svelte-54tuky"><!> <h1 class="room-header__name svelte-54tuky"> </h1> <span class="room-header__type-badge svelte-54tuky"> </span></div> <!></div> <div class="room-header__actions svelte-54tuky"><!> <!></div></header>`);function Zi(i,a){g(a,!0);let{t:o}=q(),c=n(()=>{switch(a.room.roomType){case`public`:return`#`;case`private`:return`🔒`;case`dm`:return``;case`agent`:return`⚙`;default:return`#`}}),u=n(()=>{switch(a.room.roomType){case`public`:return`Public channel`;case`private`:return`Private channel`;case`dm`:return`Direct message`;case`agent`:return`Agent conversation`;default:return`Channel`}});var d=Xi(),f=P(d),p=P(f),m=P(p),h=t=>{var n=Wi(),r=z(n,!0);V(()=>l(r,e(c))),S(t,n)},_=e=>{var t=Gi();V(()=>H(t,`src`,a.room.avatarUrl)),S(e,t)},v=e=>{var t=Ki(),n=z(t,!0);V(e=>l(n,e),[()=>a.room.name.charAt(0).toUpperCase()]),S(e,t)};t(m,e=>{a.room.roomType===`dm`?a.room.avatarUrl?e(_,1):e(v,-1):e(h)});var y=I(m,2),b=z(y,!0),x=I(y,2),C=z(x,!0);s(p);var w=I(p,2),T=e=>{var t=qi(),n=z(t,!0);V(()=>{H(t,`title`,a.room.topic),l(n,a.room.topic)}),S(e,t)};t(w,e=>{a.room.topic&&e(T)}),s(f);var E=I(f,2),D=P(E),O=t=>{{let r=n(()=>o($[`chat.room_header.show_members`],{count:a.participantCount})),i=n(()=>o($[`chat.room_header.members`]));Y(t,{variant:`ghost`,size:`sm`,class:`header-btn`,type:`button`,get onclick(){return a.onshowmembers},get"aria-label"(){return e(r)},get title(){return e(i)},children:(e,t)=>{var n=Ji(),r=I(B(n),2),i=z(r,!0);V(()=>l(i,a.participantCount)),S(e,n)},$$slots:{default:!0}})}};t(D,e=>{a.onshowmembers&&e(O)});var k=I(D,2),A=t=>{{let r=n(()=>o($[`chat.room_header.search_messages`])),i=n(()=>o($[`chat.room_header.search`]));Y(t,{variant:`ghost`,size:`sm`,class:`header-btn`,type:`button`,get onclick(){return a.onshowsearch},get"aria-label"(){return e(r)},get title(){return e(i)},children:(e,t)=>{var n=Yi();S(e,n)},$$slots:{default:!0}})}};t(k,e=>{a.onshowsearch&&e(A)}),s(E),s(d),V(t=>{H(d,`aria-label`,t),l(b,a.room.name),l(C,e(u))},[()=>o($[`chat.room_header.room_label`],{name:a.room.name})]),S(i,d),r()}var Qi=c(`<button class="message-input__reply-close svelte-ucy6mj" type="button"><svg viewBox="0 0 16 16" width="14" height="14"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></button>`),$i=c(`<div class="message-input__reply svelte-ucy6mj"><div class="message-input__reply-body svelte-ucy6mj"><span class="message-input__reply-name svelte-ucy6mj"> </span> <span class="message-input__reply-text svelte-ucy6mj"> </span></div> <!></div>`),ea=c(`<div data-smrt-component="MessageInput"><!> <div class="message-input__bar svelte-ucy6mj"><!> <button class="message-input__send svelte-ucy6mj" type="button"><svg viewBox="0 0 20 20" width="18" height="18"><path d="M3.5 10L2 3l16 7-16 7 1.5-7zm0 0h7" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div>`);function ta(a,o){g(o,!0);let{t:c}=q(),u=k(o,`placeholder`,3,`Type a message...`),d=k(o,`disabled`,3,!1),f=k(o,`replyTo`,3,null),p=A(``),m;function h(){let t=e(p).trim();t&&!d()&&(o.onsend(t),U(p,``),m&&(m.style.height=`auto`))}function _(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),h())}function v(e){let t=e.currentTarget;m=t,t.style.height=`auto`,t.style.height=`${Math.min(t.scrollHeight,120)}px`}var y=ea();let b;var x=P(y),C=e=>{var n=$i(),r=P(n),i=P(r),a=z(i,!0),u=I(i,2),d=z(u,!0);s(r);var p=I(r,2),m=e=>{var t=Qi();V(e=>H(t,`aria-label`,e),[()=>c($[`chat.message_input.cancel_reply`])]),w(`click`,t,function(...e){o.oncancelreply?.apply(this,e)}),S(e,t)};t(p,e=>{o.oncancelreply&&e(m)}),s(n),V(()=>{l(a,f().senderName),l(d,f().content)}),S(e,n)};t(x,e=>{f()&&e(C)});var T=I(x,2),E=P(T);{let t=n(()=>c($[`chat.message_input.input_label`]));Oe(E,{class:`message-input__textarea`,get placeholder(){return u()},get disabled(){return d()},rows:1,onkeydown:_,oninput:v,get"aria-label"(){return e(t)},get value(){return e(p)},set value(e){U(p,e,!0)}})}var D=I(E,2);s(T),s(y),V((e,t)=>{b=i(y,1,`message-input svelte-ucy6mj`,null,b,{disabled:d()}),D.disabled=e,H(D,`aria-label`,t)},[()=>d()||e(p).trim().length===0,()=>c($[`chat.message_input.send`])]),w(`click`,D,h),S(a,y),r()}T([`click`]);function na(t,i){g(i,!0);let{t:a}=q(),o=k(i,`isOpen`,3,!1),s=[`👍`,`👎`,`❤️`,`😂`,`😮`,`😢`,`🔥`,`🎉`,`👏`,`🤔`,`😍`,`🚀`,`👀`,`✅`,`❌`,`💯`];{let r=n(()=>a(Q[`chat.reaction_picker.reactions`]));ge(t,{get emojis(){return s},get isOpen(){return o()},get label(){return e(r)},emojiLabel:e=>a(Q[`chat.reaction_picker.react_with`],{emoji:e}),get onpick(){return i.onreact}})}r()}var ra=c(`<div class="message-item message-item--system svelte-1g4tgey" data-smrt-component="MessageItem"><!></div>`),ia=c(`<div class="message-item__avatar svelte-1g4tgey"><!></div>`),aa=c(`<span class="message-item__sender svelte-1g4tgey"> </span>`),oa=c(`<div class="message-item__reply-preview svelte-1g4tgey"><span class="message-item__reply-name svelte-1g4tgey"> </span> <span class="message-item__reply-text svelte-1g4tgey"> </span></div>`),sa=c(`<span class="message-item__tool-duration svelte-1g4tgey"> </span>`),ca=c(`<span class="message-item__tool-error svelte-1g4tgey"> </span>`),la=c(`<div class="message-item__tool-call svelte-1g4tgey"><span class="message-item__tool-name svelte-1g4tgey"> </span> <span> </span> <!> <!></div>`),ua=c(`<span class="message-item__reaction-emoji svelte-1g4tgey"> </span> <span class="message-item__reaction-count svelte-1g4tgey"> </span>`,1),da=c(`<div class="message-item__reactions svelte-1g4tgey"></div>`),fa=c(`<span class="message-item__edited svelte-1g4tgey">(edited)</span>`),pa=f(`<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><circle cx="3" cy="8" r="1.3" fill="currentColor"></circle><circle cx="8" cy="8" r="1.3" fill="currentColor"></circle><circle cx="13" cy="8" r="1.3" fill="currentColor"></circle></svg>`),ma=f(`<svg viewBox="0 0 16 16" width="14" height="14"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.2"></circle><circle cx="5.5" cy="6.5" r="0.8" fill="currentColor"></circle><circle cx="10.5" cy="6.5" r="0.8" fill="currentColor"></circle><path d="M5.5 9.5c.5 1.2 1.5 1.8 2.5 1.8s2-.6 2.5-1.8" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round"></path></svg>`),ha=f(`<svg viewBox="0 0 16 16" width="14" height="14"><path d="M6 3L2 7l4 4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2 7h8c2.2 0 4 1.8 4 4v1" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),ga=f(`<svg viewBox="0 0 16 16" width="14" height="14"><path d="M11.5 1.5l3 3L5 14H2v-3z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),_a=f(`<svg viewBox="0 0 16 16" width="14" height="14"><path d="M2 4h12M5.3 4V2.7A.7.7 0 016 2h4a.7.7 0 01.7.7V4m1.6 0v9.3a1.4 1.4 0 01-1.4 1.4H5.1a1.4 1.4 0 01-1.4-1.4V4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),va=c(`<div class="message-item__picker-popover svelte-1g4tgey"><!></div>`),ya=c(`<div class="message-item__actions svelte-1g4tgey" role="group"><!> <!> <!> <!></div> <!>`,1),ba=c(`<div role="article" data-smrt-component="MessageItem"><!> <div class="message-item__body svelte-1g4tgey"><!> <!> <!> <!> <!> <div class="message-item__meta svelte-1g4tgey"><span class="message-item__time svelte-1g4tgey"> </span> <!></div></div> <!> <!></div>`);function xa(a,o){g(o,!0);let{t:c}=q(),u=A(!1),d=A(!1),f=n(()=>o.message.messageType===`system`||o.message.messageType===`action`?`system`:o.message.role===`assistant`||o.message.messageType===`tool_call`||o.message.messageType===`tool_result`?`agent`:`default`),m=n(()=>(o.message.createdAt instanceof Date?o.message.createdAt:new Date(o.message.createdAt)).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})),h=n(()=>!!(o.onreact||o.onreply||o.isOwn&&(o.onedit||o.ondelete))),_=n(()=>`message-actions-${o.message.id}`);function v(e){o.onreact?.(o.message.id,e),U(u,!1)}function b(){U(u,!e(u))}function x(){U(d,!0)}function T(e){let t=e.relatedTarget,n=e.currentTarget;t&&n.contains(t)||(U(d,!1),U(u,!1))}function D(e){e.key===`Escape`&&(U(u,!1),U(d,!1))}var O=C();E(`keydown`,M,function(...t){(e(d)||e(u)?D:void 0)?.apply(this,t)});var k=B(O),j=e=>{var t=ra(),n=P(t);X(n,{get content(){return o.message.content},own:!1,variant:`system`}),s(t),S(e,t)},ee=r=>{var a=ba();let g;var C=P(a),D=e=>{var t=ia();Bn(P(t),{get name(){return o.message.senderName},get avatarUrl(){return o.message.senderAvatarUrl},size:`sm`}),s(t),S(e,t)};t(C,e=>{o.isOwn||e(D)});var O=I(C,2),k=P(O),A=e=>{var t=aa(),n=z(t,!0);V(()=>l(n,o.message.senderName)),S(e,t)};t(k,e=>{o.isOwn||e(A)});var j=I(k,2),ee=e=>{var t=oa(),n=P(t),r=z(n,!0),i=I(n,2),a=z(i,!0);s(t),V(()=>{l(r,o.message.replyTo.senderName),l(a,o.message.replyTo.content)}),S(e,t)};t(j,e=>{o.message.replyTo&&e(ee)});var M=I(j,2);X(M,{get content(){return o.message.content},get own(){return o.isOwn},get variant(){return e(f)}});var N=I(M,2),F=e=>{var n=la(),r=P(n),a=z(r,!0),c=I(r,2),u=z(c,!0),d=I(c,2),f=e=>{var t=sa(),n=z(t);V(()=>l(n,`${o.message.toolCallData.duration??``}ms`)),S(e,t)};t(d,e=>{o.message.toolCallData.duration&&e(f)});var p=I(d,2),m=e=>{var t=ca(),n=z(t,!0);V(()=>l(n,o.message.toolCallData.error)),S(e,t)};t(p,e=>{o.message.toolCallData.error&&e(m)}),s(n),V(()=>{l(a,o.message.toolCallData.toolName),i(c,1,`message-item__tool-status ${o.message.toolCallData.status??``}`,`svelte-1g4tgey`),l(u,o.message.toolCallData.status)}),S(e,n)};t(N,e=>{o.message.toolCallData&&e(F)});var te=I(N,2),L=t=>{var r=da();p(r,21,()=>o.message.reactions,y,(t,r)=>{{let i=n(()=>e(r).reacted?` message-item__reaction--active`:``);Y(t,{variant:`ghost`,size:`sm`,get class(){return`message-item__reaction${e(i)??``}`},type:`button`,onclick:()=>o.onreact?.(o.message.id,e(r).emoji),get"aria-label"(){return`${e(r).emoji??``} ${e(r).count??``}`},children:(t,n)=>{var i=ua(),a=B(i),o=z(a,!0),s=I(a,2),c=z(s,!0);V(()=>{l(o,e(r).emoji),l(c,e(r).count)}),S(t,i)},$$slots:{default:!0}})}}),s(r),S(t,r)};t(te,e=>{o.message.reactions.length>0&&e(L)});var R=I(te,2),ne=P(R),re=z(ne,!0),ie=I(ne,2),ae=e=>{var t=fa();S(e,t)};t(ie,e=>{o.message.isEdited&&e(ae)}),s(R),s(O);var oe=I(O,2),se=t=>{{let r=n(()=>c($[`chat.message_item.more_actions`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__more-btn`,type:`button`,onclick:x,onfocus:x,get"aria-label"(){return e(r)},get"aria-expanded"(){return e(d)},get"aria-controls"(){return e(_)},children:(e,t)=>{var n=pa();S(e,n)},$$slots:{default:!0}})}};t(oe,t=>{e(h)&&t(se)});var ce=I(oe,2),le=r=>{var i=ya(),a=B(i),l=P(a),d=t=>{{let r=n(()=>c($[`chat.message_item.add_reaction`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__action-btn`,type:`button`,onclick:b,get"aria-label"(){return e(r)},children:(e,t)=>{var n=ma();S(e,n)},$$slots:{default:!0}})}};t(l,e=>{o.onreact&&e(d)});var f=I(l,2),p=t=>{{let r=n(()=>c($[`chat.message_item.reply`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__action-btn`,type:`button`,onclick:()=>o.onreply?.(o.message.id),get"aria-label"(){return e(r)},children:(e,t)=>{var n=ha();S(e,n)},$$slots:{default:!0}})}};t(f,e=>{o.onreply&&e(p)});var m=I(f,2),h=t=>{{let r=n(()=>c($[`chat.message_item.edit`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__action-btn`,type:`button`,onclick:()=>o.onedit?.(o.message.id),get"aria-label"(){return e(r)},children:(e,t)=>{var n=ga();S(e,n)},$$slots:{default:!0}})}};t(m,e=>{o.isOwn&&o.onedit&&e(h)});var g=I(m,2),y=t=>{{let r=n(()=>c($[`chat.message_item.delete`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__action-btn`,type:`button`,onclick:()=>o.ondelete?.(o.message.id),get"aria-label"(){return e(r)},children:(e,t)=>{var n=_a();S(e,n)},$$slots:{default:!0}})}};t(g,e=>{o.isOwn&&o.ondelete&&e(y)}),s(a);var x=I(a,2),C=e=>{var t=va();na(P(t),{isOpen:!0,onreact:v}),s(t),S(e,t)};t(x,t=>{e(u)&&t(C)}),V(t=>{H(a,`id`,e(_)),H(a,`aria-label`,t)},[()=>c($[`chat.message_item.more_actions`])]),S(r,i)};t(ce,t=>{e(d)&&t(le)}),s(a),V(t=>{g=i(a,1,`message-item svelte-1g4tgey`,null,g,{"message-item--own":o.isOwn}),H(a,`aria-label`,t),l(re,e(m))},[()=>c($[`chat.message_item.message_from`],{name:o.message.senderName})]),E(`mouseenter`,a,()=>U(d,!0)),E(`mouseleave`,a,()=>{U(d,!1),U(u,!1)}),w(`focusout`,a,T),S(r,a)};t(k,e=>{o.message.messageType===`system`||o.message.messageType===`action`?e(j):e(ee,-1)}),S(a,O),r()}T([`focusout`]);var Sa=c(`<div class="message-list__empty svelte-rbnc13"><span> </span></div>`),Ca=c(`<div class="message-list__date-separator svelte-rbnc13" role="separator"><span class="message-list__date-label svelte-rbnc13"> </span></div> <!>`,1),wa=c(`<div class="message-list svelte-rbnc13" role="log" data-smrt-component="MessageList"><!></div>`);function Ta(i,a){g(a,!0);let{t:o}=q(),c=A(void 0),u=n(()=>{let e=[],t=``;for(let n of a.messages){let r=(n.createdAt instanceof Date?n.createdAt:new Date(n.createdAt)).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`});r!==t&&(t=r,e.push({dateLabel:r,messages:[]})),e[e.length-1].messages.push(n)}return e});function d(e){a.onloadmore&&e.target.scrollTop<60&&a.onloadmore()}var f=wa(),m=P(f),h=e=>{var t=Sa(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>o($[`chat.message_list.no_messages`])]),S(e,t)},_=t=>{var r=C(),i=B(r);p(i,17,()=>e(u),y,(t,r)=>{var i=Ca(),o=B(i),c=P(o),u=z(c,!0);s(o);var d=I(o,2);p(d,17,()=>e(r).messages,e=>e.id,(t,r)=>{{let i=n(()=>e(r).senderProfileId===a.currentProfileId);xa(t,{get message(){return e(r)},get isOwn(){return e(i)},get onreply(){return a.onreply},get onreact(){return a.onreact}})}}),V(()=>l(u,e(r).dateLabel)),S(t,i)}),S(t,r)};t(m,e=>{a.messages.length===0?e(h):e(_,-1)}),s(f),ee(f,e=>U(c,e),()=>e(c)),V(e=>H(f,`aria-label`,e),[()=>o($[`chat.message_list.messages_label`])]),E(`scroll`,f,d),S(i,f),r()}var Ea=c(`<span class="thread-panel__resolved svelte-o9q95w">Resolved</span>`),Da=f(`<svg viewBox="0 0 16 16" width="16" height="16"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>`),Oa=c(`<aside class="thread-panel svelte-o9q95w" data-smrt-component="ThreadPanel"><header class="thread-panel__header svelte-o9q95w"><div class="thread-panel__header-text svelte-o9q95w"><h3 class="thread-panel__title svelte-o9q95w"> </h3> <span class="thread-panel__meta svelte-o9q95w"> <!></span></div> <!> <!></header> <div class="thread-panel__messages svelte-o9q95w"><!></div> <div class="thread-panel__input svelte-o9q95w"><!></div></aside>`);function ka(i,a){g(a,!0);let{t:o}=q(),c=n(()=>a.thread.title||`Thread`),u=n(()=>a.thread.messageCount>0?a.thread.messageCount-1:0);var f=Oa(),p=P(f),m=P(p),h=P(m),_=z(h,!0),v=I(h,2),y=P(v),b=I(y),x=e=>{var t=d();V(()=>l(t,`· ${a.thread.participantCount??``} ${a.thread.participantCount===1?`participant`:`participants`}`)),S(e,t)};t(b,e=>{a.thread.participantCount>0&&e(x)}),s(v),s(m);var C=I(m,2),w=e=>{var t=Ea();S(e,t)};t(C,e=>{a.thread.isResolved&&e(w)});var T=I(C,2);{let t=n(()=>o($[`chat.thread_panel.close`]));Y(T,{variant:`ghost`,size:`sm`,class:`thread-panel__close`,type:`button`,get onclick(){return a.onclose},get"aria-label"(){return e(t)},children:(e,t)=>{var n=Da();S(e,n)},$$slots:{default:!0}})}s(p);var E=I(p,2);Ta(P(E),{get messages(){return a.messages},get currentProfileId(){return a.currentProfileId}}),s(E);var D=I(E,2),O=P(D);{let t=n(()=>o($[`chat.thread_panel.reply_placeholder`]));ta(O,{get onsend(){return a.onsend},get placeholder(){return e(t)}})}s(D),s(f),V(t=>{H(f,`aria-label`,t),l(_,e(c)),l(y,`${e(u)??``} ${e(u)===1?`reply`:`replies`} `)},[()=>o($[`chat.thread_panel.thread_label`],{title:e(c)})]),S(i,f),r()}var Aa=f(`<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="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 12z"></path></svg>`),ja=c(`<div class="file-upload__file svelte-8f8u96"><span class="file-upload__file-icon svelte-8f8u96"> </span> <div class="file-upload__file-info svelte-8f8u96"><span class="file-upload__file-name svelte-8f8u96"> </span> <span class="file-upload__file-size svelte-8f8u96"> </span></div> <!></div>`),Ma=c(`<div class="file-upload__preview svelte-8f8u96"><!> <div class="file-upload__preview-actions svelte-8f8u96"><!> <!></div></div>`),Na=c(`<div class="file-upload__error svelte-8f8u96" role="alert"> </div>`),Pa=c(`<div data-smrt-component="FileUpload"><!> <!> <div><label class="file-upload__label svelte-8f8u96"><input type="file" class="file-upload__input svelte-8f8u96" multiple=""/> <svg class="file-upload__icon svelte-8f8u96" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z"></path></svg> <span class="file-upload__text svelte-8f8u96"><!></span> <span class="file-upload__hint svelte-8f8u96"> </span></label></div></div>`);function Fa(a,o){g(o,!0);let{t:c}=q(),u=k(o,`maxSize`,3,26214400),f=k(o,`disabled`,3,!1),m=A(!1),h=A(F([])),_=A(``);function y(t){if(!t||t.length===0)return;U(_,``);let n=[],r=[];for(let e of Array.from(t))e.size>u()?r.push(e.name):n.push(e);r.length>0&&U(_,`${r.join(`, `)} exceed${r.length===1?`s`:``} the ${j(u())} limit`),U(h,[...e(h),...n],!0)}function b(e){e.preventDefault(),U(m,!1),!f()&&y(e.dataTransfer?.files??null)}function x(e){e.preventDefault(),f()||U(m,!0)}function C(){U(m,!1)}function T(e){let t=e.target;y(t.files),t.value=``}function D(t){U(h,e(h).filter((e,n)=>n!==t),!0),e(h).length===0&&U(_,``)}function O(){if(e(h).length===0)return;let t=new DataTransfer;for(let n of e(h))t.items.add(n);o.onupload(t.files),U(h,[],!0),U(_,``)}function j(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ee(e){return e.startsWith(`image/`)?`img`:e.startsWith(`video/`)?`vid`:e.startsWith(`audio/`)?`aud`:e===`application/pdf`?`pdf`:`file`}var M=Pa();let N;var te=P(M),L=t=>{var r=Ma(),i=P(r);p(i,19,()=>e(h),(e,t)=>e.name+t,(t,r,i)=>{var a=ja(),o=P(a),u=z(o,!0),d=I(o,2),f=P(d),p=z(f,!0),m=I(f,2),h=z(m,!0);s(d);var g=I(d,2);{let t=n(()=>c(Q[`chat.file_upload.remove`],{name:e(r).name}));Y(g,{variant:`ghost`,size:`sm`,class:`file-upload__file-remove`,type:`button`,onclick:()=>D(e(i)),get"aria-label"(){return e(t)},children:(e,t)=>{var n=Aa();S(e,n)},$$slots:{default:!0}})}s(a),V((t,n)=>{l(u,t),l(p,e(r).name),l(h,n)},[()=>ee(e(r).type),()=>j(e(r).size)]),S(t,a)});var a=I(i,2),o=P(a);Y(o,{variant:`primary`,size:`sm`,type:`button`,onclick:O,children:(t,n)=>{v();var r=d();V(e=>l(r,e),[()=>c(Q[`chat.file_upload.upload_files`],{count:e(h).length,plural:e(h).length===1?``:`s`})]),S(t,r)},$$slots:{default:!0}});var u=I(o,2);Y(u,{variant:`secondary`,size:`sm`,type:`button`,onclick:()=>{U(h,[],!0),U(_,``)},children:(e,t)=>{v();var n=d(`Clear`);S(e,n)},$$slots:{default:!0}}),s(a),s(r),V(e=>H(r,`aria-label`,e),[()=>c(Q[`chat.file_upload.preview`])]),S(t,r)};t(te,t=>{e(h).length>0&&t(L)});var R=I(te,2),ne=t=>{var n=Na(),r=z(n,!0);V(()=>l(r,e(_))),S(t,n)};t(R,t=>{e(_)&&t(ne)});var re=I(R,2);let ie;var B=P(re),ae=P(B),oe=I(ae,4),se=P(oe),ce=e=>{var t=d();V(e=>l(t,e),[()=>c(Q[`chat.file_upload.disabled`])]),S(e,t)},le=e=>{var t=d();V(e=>l(t,e),[()=>c(Q[`chat.file_upload.drop_files`])]),S(e,t)};t(se,e=>{f()?e(ce):e(le,-1)}),s(oe);var W=I(oe,2),G=z(W,!0);s(B),s(re),s(M),V(t=>{N=i(M,1,`file-upload svelte-8f8u96`,null,N,{"file-upload--disabled":f()}),ie=i(re,1,`file-upload__drop-zone svelte-8f8u96`,null,ie,{"file-upload__drop-zone--active":e(m),"file-upload__drop-zone--disabled":f()}),H(ae,`accept`,o.accept),ae.disabled=f(),l(G,t)},[()=>c(Q[`chat.file_upload.max_size`],{size:j(u())})]),E(`drop`,re,b),E(`dragover`,re,x),E(`dragleave`,re,C),w(`change`,ae,T),S(a,M),r()}T([`change`]);var Ia=c(`<div class="link-preview__image svelte-13jrn1d"><img class="svelte-13jrn1d"/></div>`),La=c(`<span class="link-preview__title svelte-13jrn1d"> </span>`),Ra=c(`<span class="link-preview__description svelte-13jrn1d"> </span>`),za=c(`<a class="link-preview svelte-13jrn1d" target="_blank" rel="noopener noreferrer" data-smrt-component="LinkPreview"><!> <div class="link-preview__body svelte-13jrn1d"><!> <!> <span class="link-preview__domain svelte-13jrn1d"> </span></div></a>`);function Ba(i,a){g(a,!0);let o=n(()=>{try{return new URL(a.url).hostname}catch{return a.url}});var c=za(),u=P(c),d=e=>{var t=Ia(),n=z(t);V(()=>{H(n,`src`,a.imageUrl),H(n,`alt`,a.title??``)}),S(e,t)};t(u,e=>{a.imageUrl&&e(d)});var f=I(u,2),p=P(f),m=e=>{var t=La(),n=z(t,!0);V(()=>l(n,a.title)),S(e,t)};t(p,e=>{a.title&&e(m)});var h=I(p,2),_=e=>{var t=Ra(),n=z(t,!0);V(()=>l(n,a.description)),S(e,t)};t(h,e=>{a.description&&e(_)});var v=I(h,2),y=z(v,!0);s(f),s(c),V(()=>{H(c,`href`,a.url),l(y,e(o))}),S(i,c),r()}var Va=c(`<button type="button" role="option"><!> <span class="mention-autocomplete__name svelte-1cyjli3"> <mark class="mention-autocomplete__highlight svelte-1cyjli3"> </mark> </span></button>`),Ha=c(`<div class="mention-autocomplete svelte-1cyjli3" role="listbox" data-smrt-component="MentionAutocomplete"></div>`);function Ua(a,o){g(o,!0);let{t:c}=q(),u=A(0);j(()=>{o.suggestions.length&&U(u,0)});function d(t){if(o.isVisible&&o.suggestions.length!==0)switch(t.key){case`ArrowDown`:t.preventDefault(),U(u,(e(u)+1)%o.suggestions.length);break;case`ArrowUp`:t.preventDefault(),U(u,(e(u)-1+o.suggestions.length)%o.suggestions.length);break;case`Enter`:case`Tab`:t.preventDefault(),o.onselect(o.suggestions[e(u)].id);break;case`Escape`:t.preventDefault(),o.oncancel?.()}}function f(e,t){if(!t)return{before:e,match:``,after:``};let n=e.toLowerCase().indexOf(t.toLowerCase());return n===-1?{before:e,match:``,after:``}:{before:e.slice(0,n),match:e.slice(n,n+t.length),after:e.slice(n+t.length)}}var m=C();E(`keydown`,M,function(...e){(o.isVisible?d:void 0)?.apply(this,e)});var h=B(m),_=t=>{var r=Ha();p(r,23,()=>o.suggestions,e=>e.id,(t,r,a)=>{let c=n(()=>f(e(r).name,o.query));var d=Va();let p;var m=P(d);Bn(m,{get name(){return e(r).name},get avatarUrl(){return e(r).avatarUrl},size:`sm`});var h=I(m,2),g=P(h,!0),_=I(g),v=z(_,!0),y=I(_,1,!0);s(h),s(d),V(()=>{p=i(d,1,`mention-autocomplete__item svelte-1cyjli3`,null,p,{"mention-autocomplete__item--active":e(a)===e(u)}),H(d,`aria-selected`,e(a)===e(u)),l(g,e(c).before),l(v,e(c).match),l(y,e(c).after)}),w(`click`,d,()=>o.onselect(e(r).id)),E(`pointerenter`,d,()=>U(u,e(a),!0)),S(t,d)}),s(r),V(e=>H(r,`aria-label`,e),[()=>c(Q[`chat.mention_autocomplete.suggestions`])]),S(t,r)};t(h,e=>{o.isVisible&&o.suggestions.length>0&&e(_)}),S(a,m),r()}T([`click`]);var Wa=f(`<svg class="read-receipts__icon svelte-1sf2l8g" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M13.5 4.5l-7 7L3 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),Ga=c(`<svg class="read-receipts__icon read-receipts__icon--read svelte-1sf2l8g" viewBox="0 0 20 16" width="18" height="14" aria-hidden="true"><path d="M15.5 4.5l-7 7L5 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M19 4.5l-7 7" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg> <span class="read-receipts__count svelte-1sf2l8g"> </span>`,1),Ka=c(`<img class="read-receipts__mini-avatar svelte-1sf2l8g"/>`),qa=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--initials svelte-1sf2l8g"> </span>`),Ja=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--more svelte-1sf2l8g"> </span>`),Ya=c(`<span class="read-receipts__avatars svelte-1sf2l8g"><!> <!></span>`),Xa=f(`<svg viewBox="0 0 20 16" width="18" height="14" aria-hidden="true"><path d="M15.5 4.5l-7 7L5 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M19 4.5l-7 7" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg><!>`,1),Za=c(`<span class="read-receipts svelte-1sf2l8g" data-smrt-component="ReadReceipts"><!></span>`);function Qa(a,o){g(o,!0);let{t:c}=q(),u=n(()=>o.readBy.length>=o.totalParticipants-1),d=n(()=>o.readBy.length<=5);function f(e){return(e[0]??`?`).toUpperCase()}var m=Za(),h=P(m),_=e=>{var t=Wa();S(e,t)},v=e=>{var t=Ga(),n=I(B(t),2),r=z(n,!0);V(()=>l(r,o.readBy.length)),S(e,t)},b=n=>{var r=Xa(),a=B(r);let c;var d=I(a),m=n=>{var r=Ya(),i=P(r);p(i,17,()=>o.readBy.slice(0,3),y,(n,r)=>{var i=C(),a=B(i),o=t=>{var n=Ka();V(()=>{H(n,`src`,e(r).avatarUrl),H(n,`alt`,e(r).name)}),S(t,n)},s=t=>{var n=qa(),i=z(n,!0);V(t=>{H(n,`title`,e(r).name),l(i,t)},[()=>f(e(r).name)]),S(t,n)};t(a,t=>{e(r).avatarUrl?t(o):t(s,-1)}),S(n,i)});var a=I(i,2),c=e=>{var t=Ja(),n=z(t);V(()=>l(n,`+${o.readBy.length-3}`)),S(e,t)};t(a,e=>{o.readBy.length>3&&e(c)}),s(r),S(n,r)};t(d,e=>{o.readBy.length>0&&e(m)}),V(()=>c=i(a,0,`read-receipts__icon svelte-1sf2l8g`,null,c,{"read-receipts__icon--read":e(u)})),S(n,r)};t(h,t=>{o.readBy.length===0?t(_):e(d)?t(b,-1):t(v,1)}),s(m),V(e=>H(m,`aria-label`,e),[()=>c(Q[`chat.read_receipts.read_status`],{readCount:o.readBy.length,total:o.totalParticipants})]),S(a,m),r()}var $a=c(`<span class="presence__label svelte-k0r91z"> </span>`),eo=c(`<span class="presence svelte-k0r91z" data-smrt-component="UserPresence"><span></span> <!></span>`);function to(e,n){let r=k(n,`showLabel`,3,!1),a={online:`Online`,away:`Away`,dnd:`Do not disturb`,offline:`Offline`};var o=eo(),c=P(o),u=I(c,2),d=e=>{var t=$a(),r=z(t,!0);V(()=>l(r,a[n.status])),S(e,t)};t(u,e=>{r()&&e(d)}),s(o),V(()=>{H(o,`aria-label`,a[n.status]),i(c,1,`presence__dot ${n.status??``}`,`svelte-k0r91z`)}),S(e,o)}var no=c(`<span class="mini-chat__sender svelte-zo0sdr"> </span>`),ro=c(`<div><!> <div><!> <span class="mini-chat__text svelte-zo0sdr"> </span> <time class="mini-chat__time svelte-zo0sdr"> </time></div></div>`),io=c(`<div class="mini-chat__empty svelte-zo0sdr"><span class="mini-chat__empty-text svelte-zo0sdr"> </span></div>`),ao=f(`<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"></path></svg>`),oo=c(`<!> <!>`,1),so=c(`<div class="mini-chat svelte-zo0sdr" data-smrt-component="MiniChat"><div class="mini-chat__messages svelte-zo0sdr" role="log"><!> <!></div> <!></div>`);function co(a,o){g(o,!0);let{t:c}=q(),u=k(o,`maxHeight`,3,360),d=A(``),f=A(void 0);function m(t){t.preventDefault();let n=e(d).trim();n&&(o.onsend(n),U(d,``))}function h(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),m(e))}function _(e){return(typeof e==`string`?new Date(e):e).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`})}j(()=>{o.messages.length&&e(f)&&(e(f).scrollTop=e(f).scrollHeight)});var v=so(),y=P(v);let b;var C=P(y);p(C,17,()=>o.messages,e=>e.id,(r,a)=>{let c=n(()=>e(a).senderProfileId===o.currentProfileId);var u=ro();let d;var f=P(u),p=t=>{Bn(t,{get name(){return e(a).senderName},get avatarUrl(){return e(a).senderAvatarUrl},size:`sm`})};t(f,t=>{e(c)||t(p)});var m=I(f,2);let h;var g=P(m),v=t=>{var n=no(),r=z(n,!0);V(()=>l(r,e(a).senderName)),S(t,n)};t(g,t=>{e(c)||t(v)});var y=I(g,2),b=z(y,!0),x=I(y,2),C=z(x,!0);s(m),s(u),V(t=>{d=i(u,1,`mini-chat__msg svelte-zo0sdr`,null,d,{"mini-chat__msg--own":e(c)}),h=i(m,1,`mini-chat__bubble svelte-zo0sdr`,null,h,{"mini-chat__bubble--own":e(c)}),l(b,e(a).content),l(C,t)},[()=>_(e(a).createdAt)]),S(r,u)});var w=I(C,2),T=e=>{var t=io(),n=P(t),r=z(n,!0);s(t),V(e=>l(r,e),[()=>c($[`chat.mini_chat.no_messages`])]),S(e,t)};t(w,e=>{o.messages.length===0&&e(T)}),s(y),ee(y,e=>U(f,e),()=>e(f));var E=I(y,2);Ce(E,{class:`mini-chat__input-bar`,onsubmit:m,children:(t,r)=>{var i=oo(),a=B(i);{let t=n(()=>c($[`chat.mini_chat.placeholder`])),r=n(()=>c($[`chat.mini_chat.input_label`]));_e(a,{class:`mini-chat__input`,type:`text`,get placeholder(){return e(t)},onkeydown:h,get"aria-label"(){return e(r)},get value(){return e(d)},set value(e){U(d,e,!0)}})}var o=I(a,2);{let t=n(()=>!e(d).trim()),r=n(()=>c($[`chat.mini_chat.send`]));Y(o,{variant:`ghost`,class:`mini-chat__send-btn`,type:`submit`,get disabled(){return e(t)},get"aria-label"(){return e(r)},children:(e,t)=>{var n=ao();S(e,n)},$$slots:{default:!0}})}S(t,i)},$$slots:{default:!0}}),s(v),V(e=>{H(y,`aria-label`,e),b=x(y,``,b,{"max-height":`${u()??``}px`})},[()=>c($[`chat.mini_chat.messages_label`])]),S(a,v),r()}var lo=f(`<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><rect x="3" y="12" width="10" height="2" rx="1"></rect></svg>`),uo=f(`<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"></path></svg>`),fo=c(`<div class="chat-tab chat-tab--expanded svelte-1krwmy5" data-smrt-component="ChatTab"><div class="chat-tab__header svelte-1krwmy5"><button class="chat-tab__header-btn svelte-1krwmy5" type="button"><!> <span class="chat-tab__name svelte-1krwmy5"> </span></button> <div class="chat-tab__actions svelte-1krwmy5"><!> <!></div></div> <div class="chat-tab__body svelte-1krwmy5"><!></div></div>`),po=c(`<span class="chat-tab__badge svelte-1krwmy5"> </span>`),mo=c(`<button class="chat-tab chat-tab--collapsed svelte-1krwmy5" type="button" data-smrt-component="ChatTab"><!> <span class="chat-tab__name svelte-1krwmy5"> </span> <!></button>`);function ho(i,a){g(a,!0);let{t:o}=q();var c=C(),u=B(c),d=t=>{var r=fo(),i=P(r),c=P(i),u=P(c);Bn(u,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var d=I(u,2),f=z(d,!0);s(c);var p=I(c,2),m=P(p);{let t=n(()=>o($[`chat.chat_tab.minimize`])),r=n(()=>o($[`chat.chat_tab.minimize`]));Y(m,{variant:`ghost`,size:`sm`,class:`chat-tab__icon-btn`,type:`button`,get onclick(){return a.oncollapse},get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=lo();S(e,n)},$$slots:{default:!0}})}var h=I(m,2);{let t=n(()=>o($[`chat.chat_tab.close`])),r=n(()=>o($[`chat.chat_tab.close`]));Y(h,{variant:`ghost`,size:`sm`,class:`chat-tab__icon-btn`,type:`button`,get onclick(){return a.onclose},get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=uo();S(e,n)},$$slots:{default:!0}})}s(p),s(i);var g=I(i,2);co(P(g),{get messages(){return a.messages},get currentProfileId(){return a.currentProfileId},get onsend(){return a.onsend},maxHeight:320}),s(g),s(r),V((e,t)=>{H(r,`aria-label`,e),H(c,`aria-label`,t),l(f,a.tab.room.name)},[()=>o($[`chat.chat_tab.chat_with`],{name:a.tab.room.name}),()=>o($[`chat.chat_tab.collapse`])]),w(`click`,c,function(...e){a.oncollapse?.apply(this,e)}),S(t,r)},f=e=>{var n=mo(),r=P(n);Bn(r,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var i=I(r,2),c=z(i,!0),u=I(i,2),d=e=>{var t=po(),n=z(t,!0);V(e=>{H(t,`aria-label`,e),l(n,a.tab.unreadCount)},[()=>o($[`chat.chat_tab.unread`],{count:a.tab.unreadCount})]),S(e,t)};t(u,e=>{a.tab.unreadCount>0&&e(d)}),s(n),V(e=>{H(n,`aria-label`,e),l(c,a.tab.room.name)},[()=>o($[`chat.chat_tab.open_chat_with`],{name:a.tab.room.name})]),w(`click`,n,function(...e){a.onexpand?.apply(this,e)}),S(e,n)};t(u,e=>{a.tab.isExpanded?e(d):e(f,-1)}),S(i,c),r()}T([`click`]);var go=c(`<span class="tab-list__badge svelte-jqiu29"> </span>`),_o=f(`<svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"></path></svg>`),vo=c(`<div class="tab-list__item svelte-jqiu29"><button class="tab-list__btn svelte-jqiu29" type="button"><!> <!></button> <!></div>`),yo=c(`<nav class="tab-list svelte-jqiu29" data-smrt-component="ChatTabList"></nav>`);function bo(i,a){g(a,!0);let{t:o}=q();var c=C(),u=B(c),d=r=>{var i=yo();p(i,21,()=>a.tabs,e=>e.roomId,(r,i)=>{var c=vo(),u=P(c),d=P(u);Bn(d,{get name(){return e(i).room.name},get avatarUrl(){return e(i).room.avatarUrl},size:`sm`});var f=I(d,2),p=t=>{var n=go(),r=z(n,!0);V(t=>{H(n,`aria-label`,t),l(r,e(i).unreadCount>99?`99+`:e(i).unreadCount)},[()=>o($[`chat.chat_tab_list.unread`],{count:e(i).unreadCount})]),S(t,n)};t(f,t=>{e(i).unreadCount>0&&t(p)}),s(u);var m=I(u,2);{let t=n(()=>o($[`chat.chat_tab_list.close_chat_with`],{name:e(i).room.name})),r=n(()=>o($[`chat.chat_tab_list.close`]));Y(m,{variant:`ghost`,size:`sm`,class:`tab-list__close`,type:`button`,onclick:t=>{t.stopPropagation(),a.onclose(e(i).roomId)},get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=_o();S(e,n)},$$slots:{default:!0}})}s(c),V(t=>{H(u,`aria-label`,t),H(u,`title`,e(i).room.name)},[()=>o($[`chat.chat_tab_list.open_chat_with`],{name:e(i).room.name})]),w(`click`,u,()=>a.onselect(e(i).roomId)),S(r,c)}),s(i),V(e=>H(i,`aria-label`,e),[()=>o($[`chat.chat_tab_list.minimized_chats`])]),S(r,i)};t(u,e=>{a.tabs.length>0&&e(d)}),S(i,c),r()}T([`click`]);var xo=c(`<div class="chat-tabs svelte-1vavi4c" data-smrt-component="ChatTabs"><div class="chat-tabs__expanded svelte-1vavi4c"></div> <!></div>`);function So(i,a){g(a,!0);let{t:o}=q(),c=k(a,`messagesByRoom`,19,()=>({})),l=k(a,`currentProfileId`,3,``),u=n(()=>a.tabs.filter(e=>e.isExpanded)),d=n(()=>a.tabs.filter(e=>!e.isExpanded));var f=xo(),m=P(f);p(m,21,()=>e(u),e=>e.roomId,(t,r)=>{{let i=n(()=>c()[e(r).roomId]??[]);ho(t,{get tab(){return e(r)},get messages(){return e(i)},get currentProfileId(){return l()},onsend:t=>a.onsend?.(e(r).roomId,t),oncollapse:()=>a.oncollapse(e(r).roomId),onclose:()=>a.onclose(e(r).roomId),onexpand:()=>a.onexpand(e(r).roomId)})}}),s(m);var h=I(m,2),_=t=>{bo(t,{get tabs(){return e(d)},onselect:e=>a.onexpand(e),onclose:e=>a.onclose(e)})};t(h,t=>{e(d).length>0&&t(_)}),s(f),V(e=>H(f,`aria-label`,e),[()=>o($[`chat.chat_tabs.tabs_label`])]),S(i,f),r()}var Co=c(`<p class="assistant-dock-choices-status assistant-dock-choices-making svelte-hjhu1a" role="status"> </p>`),wo=c(`<img loading="lazy" class="svelte-hjhu1a"/>`),To=c(`<span class="assistant-dock-choice-description svelte-hjhu1a"> </span>`),Eo=c(`<li class="svelte-hjhu1a"><button type="button"><!> <span class="assistant-dock-choice-label svelte-hjhu1a"> </span> <!></button></li>`),Do=c(`<li class="assistant-dock-choice-pending svelte-hjhu1a" aria-hidden="true"><span class="assistant-dock-choice-placeholder svelte-hjhu1a"></span> <span class="assistant-dock-choice-label svelte-hjhu1a"> </span></li>`),Oo=c(`<ul class="assistant-dock-choice-list svelte-hjhu1a"><!> <!></ul>`),ko=c(`<p class="assistant-dock-choices-status svelte-hjhu1a"> </p>`),Ao=c(`<p class="assistant-dock-choices-status assistant-dock-choices-error svelte-hjhu1a" role="alert"> </p>`),jo=c(`<div class="assistant-dock-choices-actions assistant-dock-choices-commit svelte-hjhu1a"><!> <!></div> <!>`,1),Mo=c(`<div class="assistant-dock-choices-actions svelte-hjhu1a"><span class="svelte-hjhu1a"> </span> <!></div>`),No=c(`<p class="assistant-dock-choices-status svelte-hjhu1a" role="status"> </p>`),Po=c(`<div class="assistant-dock-choices-actions svelte-hjhu1a"><p class="assistant-dock-choices-status assistant-dock-choices-error svelte-hjhu1a" role="alert"> </p> <!></div>`),Fo=c(`<div class="assistant-dock-choices svelte-hjhu1a" role="group" data-smrt-component="AssistantChoiceCards"><p class="assistant-dock-choices-title svelte-hjhu1a"> </p> <!> <!> <!> <!></div>`);function Io(a,o){g(o,!0);function c(e){return!!(e.previewable&&o.onpreview&&o.oncommit)}function u(e){(o.oncancel??o.ondismiss)(e.id)}function f(e,t){e.key===`Escape`&&c(t)&&(t.status===`waiting`||t.status===`failed`)&&(e.preventDefault(),e.stopPropagation(),u(t))}let{t:m}=q();var h=C(),_=B(h);p(_,17,()=>o.choices.filter(e=>e.status!==`dismissed`),e=>e.id,(r,a)=>{let h=n(()=>e(a).options.find(t=>t.id===e(a).chosenOptionId)),g=n(()=>e(a).status===`waiting`&&e(a).pending?e(a).pending:null),_=n(()=>c(e(a))),b=n(()=>e(a).status===`waiting`||e(a).status===`failed`),x=n(()=>e(a).previewOptionId),T=n(()=>e(_)&&e(a).previewPendingId!==void 0),E=n(()=>e(_)&&e(a).original?[e(a).original,...e(a).options]:e(a).options);var D=Fo(),O=P(D),k=z(O,!0),A=I(O,2),j=t=>{var n=Co(),r=z(n,!0);V(()=>l(r,e(g).message)),S(t,n)};t(A,t=>{e(g)&&t(j)});var ee=I(A,2),M=n=>{var r=Oo(),c=P(r);p(c,17,()=>e(E),e=>e.id,(n,r)=>{var c=Eo(),u=P(c);let d;var f=P(u),p=t=>{var n=wo();V(()=>{H(n,`src`,e(r).imageUrl),H(n,`alt`,e(r).imageAlt??e(r).label)}),S(t,n)};t(f,t=>{e(r).imageUrl&&t(p)});var m=I(f,2),h=z(m,!0),g=I(m,2),v=t=>{var n=To(),i=z(n,!0);V(()=>l(i,e(r).description)),S(t,n)};t(g,t=>{e(r).description&&t(v)}),s(u),s(c),V(()=>{d=i(u,1,`assistant-dock-choice svelte-hjhu1a`,null,d,{chosen:e(_)?e(x)===e(r).id:e(a).chosenOptionId===e(r).id}),H(u,`aria-pressed`,e(_)?e(x)===e(r).id:e(a).chosenOptionId===e(r).id),H(u,`aria-busy`,e(T)&&e(a).previewPendingId===e(r).id?`true`:void 0),u.disabled=!e(b)||e(T),l(h,e(r).label)}),w(`click`,u,()=>e(_)?o.onpreview?.(e(a).id,e(r).id):o.onchoose(e(a).id,e(r).id)),S(n,c)});var u=I(c,2),d=t=>{var n=C(),r=B(n);p(r,17,()=>({length:e(g).expected}),y,(e,t)=>{var n=Do(),r=I(P(n),2),i=z(r,!0);s(n),V(e=>l(i,e),[()=>m(Q[`chat.assistant_dock.choices_making`])]),S(e,n)}),S(t,n)};t(u,t=>{e(g)&&t(d)}),s(r),S(n,r)};t(ee,t=>{e(_)&&e(a).status===`applied`||t(M)});var N=I(ee,2),F=t=>{var n=ko(),r=z(n,!0);V(()=>l(r,e(a).note)),S(t,n)};t(N,t=>{e(a).note&&e(a).status===`waiting`&&t(F)});var te=I(N,2),L=r=>{var i=jo(),c=B(i),f=P(c);{let t=n(()=>e(T)||!e(x)||e(x)===e(a).original?.id);Y(f,{type:`button`,class:`assistant-dock-choices-use`,get disabled(){return e(t)},onclick:()=>o.oncommit?.(e(a).id),children:(t,n)=>{v();var r=d();V(()=>l(r,e(a).commitLabel)),S(t,r)},$$slots:{default:!0}})}var p=I(f,2);Y(p,{type:`button`,variant:`ghost`,onclick:()=>u(e(a)),children:(t,n)=>{v();var r=d();V(()=>l(r,e(a).cancelLabel)),S(t,r)},$$slots:{default:!0}}),s(c);var h=I(c,2),g=t=>{var n=Ao(),r=z(n,!0);V(e=>l(r,e),[()=>m(Q[`chat.assistant_dock.choices_failed`],{message:e(a).error??``})]),S(t,n)};t(h,t=>{e(a).status===`failed`&&t(g)}),S(r,i)},R=t=>{var n=Mo(),r=P(n),i=z(r,!0),c=I(r,2);Y(c,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>o.ondismiss(e(a).id),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_none`])]),S(e,n)},$$slots:{default:!0}}),s(n),V(e=>l(i,e),[()=>e(a).options.length>0?m(Q[`chat.assistant_dock.choices_pick`]):``]),S(t,n)},ne=e=>{var t=No(),n=z(t,!0);V(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_applying`])]),S(e,t)},re=t=>{var n=No(),r=z(n,!0);V(e=>l(r,e),[()=>e(a).outcome??m(Q[`chat.assistant_dock.choices_applied`],{label:e(h)?.label??``})]),S(t,n)},ie=t=>{var n=Ao(),r=z(n,!0);V(e=>l(r,e),[()=>m(Q[`chat.assistant_dock.choices_failed`],{message:e(a).error??``})]),S(t,n)},ae=t=>{var n=Po(),r=P(n),i=z(r,!0),c=I(r,2);Y(c,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>o.ondismiss(e(a).id),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_none`])]),S(e,n)},$$slots:{default:!0}}),s(n),V(e=>l(i,e),[()=>m(Q[`chat.assistant_dock.choices_unavailable`],{message:e(a).error??``})]),S(t,n)};t(te,t=>{e(_)&&e(b)?t(L):e(a).status===`waiting`?t(R,1):e(a).status===`applying`?t(ne,2):e(a).status===`applied`?t(re,3):e(a).status===`failed`&&!e(_)?t(ie,4):e(a).status===`unavailable`&&t(ae,5)}),s(D),V(()=>{H(D,`aria-label`,e(a).title),H(D,`aria-busy`,e(g)?`true`:void 0),l(k,e(a).title)}),w(`keydown`,D,t=>f(t,e(a))),S(r,D)}),S(a,h),r()}T([`keydown`,`click`]);var Lo=c(`<p class="assistant-composer-error svelte-17lqa16" role="alert"> </p>`),Ro=c(`<li class="assistant-composer-chip svelte-17lqa16"><span class="assistant-composer-chip-name svelte-17lqa16"> </span> <!></li>`),zo=c(`<ul class="assistant-composer-attachments svelte-17lqa16"></ul>`),Bo=f(`<svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true"><path d="M14.5 6.5l-6 6a2.5 2.5 0 003.54 3.54l6-6a4.5 4.5 0 00-6.36-6.36l-6.5 6.5a6.5 6.5 0 009.19 9.19" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),Vo=c(`<!> <input type="file" class="assistant-composer-file-input svelte-17lqa16" multiple="" tabindex="-1"/>`,1),Ho=c(`<div class="assistant-composer svelte-17lqa16" data-smrt-component="AssistantComposer"><!> <!> <!> <!> <div class="assistant-composer-row svelte-17lqa16"><!> <div class="assistant-composer-field svelte-17lqa16"><!></div> <!> <!></div></div>`);function Uo(i,a){g(a,!0);let{t:o}=q(),c=k(a,`disabled`,3,!1),u=k(a,`placeholder`,3,`Ask the assistant…`),f=k(a,`value`,15,``),m=k(a,`dictation`,3,null),h=k(a,`transcribe`,3,null),_=k(a,`dictationMode`,3,`push`),y=k(a,`handsFreeCapture`,3,null),b=k(a,`sendOnPause`,3,!1),x=k(a,`sendOnPauseMs`,3,1200),C=k(a,`speaking`,3,!1),T=n(()=>!!(m()||h())),D=A(F([])),O=A(!1),M=A(!1),N=A(null),L=A(null),ie=A(void 0),ae,oe=A(void 0);function se(){return ae??=e(oe)?.getElement()??void 0,ae??null}function ce(){se()?.focus()}let le=A(!1),W=A(!1),G=A(!1);function ue(){U(le,!1),U(W,!1),U(G,!1)}let K=new De({source:()=>{if(!m())throw Error(`Speech input is not available.`);return m()()},onText:e=>{U(le,!0);let t=se();t?rt(t,e):f(f()?`${f()} ${e}`:e)}});R(()=>{K.setOptions({transcribe:h(),mode:_(),handsFreeCapture:y(),vad:a.handsFreeVad})}),ne(()=>K.dispose()),j(()=>{let e=C();re(()=>e?K.suspend():K.resume())}),j(()=>{if(!(b()&&e(le)&&K.handsFree&&K.state===`listening`&&!K.speaking&&K.queued===0&&f().trim().length>0)){U(W,!1);return}U(W,!0);let t=setTimeout(()=>{U(W,!1),U(le,!1),U(G,!0)},Math.max(0,x()));return()=>clearTimeout(t)}),j(()=>{e(G)&&(!b()||!K.handsFree||!f().trim()?U(G,!1):K.speaking||K.queued>0?(U(G,!1),U(le,!0)):e(M)||c()||e(O)||(U(G,!1),me(!0)))}),j(()=>{K.handsFree||ue()});function de(){c()||e(O)||K.active||K.start()}function fe(e){e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`}j(()=>{f(),ae??=e(oe)?.getElement()??void 0,ae&&fe(ae)});async function J(t){let n=t.currentTarget,r=n.files;if(!r||r.length===0)return;U(O,!0),U(L,null);let i=a.onupload;if(!i)U(O,!1),n.value=``;else try{let t=await i(r);U(D,[...e(D),...t],!0)}catch(e){U(L,e instanceof Error?e.message:o(Q[`chat.assistant_composer.upload_failed`]),!0)}finally{U(O,!1),n.value=``}}async function pe(t){let n=a.onupload;if(!n||(t.preventDefault(),c()||e(O)))return;let r=t.dataTransfer?.files;if(r&&r.length!==0){U(O,!0),U(L,null);try{let t=await n(r);U(D,[...e(D),...t],!0)}catch(e){U(L,e instanceof Error?e.message:o(Q[`chat.assistant_composer.upload_failed`]),!0)}finally{U(O,!1)}}}async function me(t=!1){if(c()||e(M))return;ue(),K.active&&!t&&(await K.stop(),await K.whenSettled());let n=f().trim();if(!n||c()||e(M))return;U(N,null),U(M,!0);let r=e(D);f(``),U(D,[],!0),ae&&(ae.style.height=`auto`);try{await a.onsend(n,r)}catch(t){let i=f().trim();f(i?`${n}\n${i}`:n),U(D,[...r,...e(D)],!0),U(N,t instanceof Error?t.message:o(Q[`chat.assistant_composer.send_failed`]),!0)}finally{U(M,!1)}}function X(t){t.key===`Escape`&&(K.active||e(le))?(t.preventDefault(),ue(),K.active&&K.stop()):((t.key.length===1||t.key===`Backspace`)&&ue(),t.key===`Enter`&&!t.shiftKey&&!t.isComposing&&(t.preventDefault(),me()))}function he(e){let t=e.currentTarget;ae=t,fe(t)}function ge(t){U(D,e(D).filter(e=>e.id!==t),!0)}var _e={focus:ce},ve=Ho(),ye=P(ve),xe=t=>{var n=Lo(),r=z(n,!0);V(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.send_error`],{message:e(N)})]),S(t,n)};t(ye,t=>{e(N)&&t(xe)});var Se=I(ye,2),Ce=t=>{var n=Lo(),r=z(n,!0);V(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.upload_error`],{message:e(L)})]),S(t,n)};t(Se,t=>{e(L)&&t(Ce)});var Ee=I(Se,2),ke=t=>{var r=zo();p(r,21,()=>e(D),e=>e.id,(t,r)=>{var i=Ro(),a=P(i),c=z(a,!0),u=I(a,2);{let t=n(()=>o(Q[`chat.assistant_composer.remove_attachment`],{name:e(r).name}));Y(u,{type:`button`,variant:`ghost`,size:`sm`,class:`assistant-composer-chip-remove`,onclick:()=>ge(e(r).id),get"aria-label"(){return e(t)},children:(e,t)=>{v();var n=d(`×`);S(e,n)},$$slots:{default:!0}})}s(i),V(()=>l(c,e(r).name)),S(t,i)}),s(r),S(t,r)};t(Ee,t=>{e(D).length>0&&t(ke)});var Ae=I(Ee,2),je=t=>{{let r=n(()=>e(W)||e(G));Te(t,{get dictation(){return K},get sending(){return e(r)}})}};t(Ae,t=>{e(T)&&t(je)});var Me=I(Ae,2),Ne=P(Me),Pe=t=>{var r=Vo(),i=B(r);{let t=n(()=>c()||e(O)),r=n(()=>o(Q[`chat.assistant_composer.attach_files`])),a=n(()=>o(Q[`chat.assistant_composer.attach_files`]));Y(i,{type:`button`,variant:`secondary`,size:`sm`,class:`assistant-composer-attach`,onclick:()=>e(ie)?.click(),get disabled(){return e(t)},get"aria-label"(){return e(r)},get title(){return e(a)},children:(e,t)=>{var n=Bo();S(e,n)},$$slots:{default:!0}})}var a=I(i,2);ee(a,e=>U(ie,e),()=>e(ie)),V(t=>{a.disabled=c()||e(O),H(a,`aria-label`,t)},[()=>o(Q[`chat.assistant_composer.attach_files`])]),w(`change`,a,J),S(t,r)};t(Ne,e=>{a.onupload&&e(Pe)});var Fe=I(Ne,2),Ie=P(Fe);{let t=n(()=>c()||e(O)),r=n(()=>o(Q[`chat.assistant_composer.message_label`]));ee(Oe(Ie,{class:`assistant-composer-textarea`,get placeholder(){return u()},get disabled(){return e(t)},rows:1,onkeydown:X,oninput:he,get"aria-label"(){return e(r)},get value(){return f()},set value(e){f(e)}}),e=>U(oe,e,!0),()=>e(oe))}s(Fe),te(Fe,(e,t)=>at?.(e,t),()=>({onPressStart:()=>be(),onLongPress:de,onRelease:()=>void K.unlock(),disabled:!e(T)||c()||e(O)}));var Le=I(Fe,2),Re=t=>{{let r=n(()=>c()||e(O));we(t,{get dictation(){return K},get disabled(){return e(r)}})}};t(Le,t=>{e(T)&&t(Re)});var ze=I(Le,2);{let t=n(()=>c()||e(O)||e(M)||!f().trim());Y(ze,{type:`button`,class:`assistant-composer-send`,onclick:()=>me(),get disabled(){return e(t)},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>o(Q[`chat.assistant_composer.send`])]),S(e,n)},$$slots:{default:!0}})}return s(Me),s(ve),E(`drop`,ve,function(...e){(a.onupload?pe:void 0)?.apply(this,e)}),E(`dragover`,ve,function(...e){(a.onupload?e=>e.preventDefault():void 0)?.apply(this,e)}),S(i,ve),r(_e)}T([`change`]);var Wo=c(`<option> </option>`);function Go(t,i){g(i,!0);let a=[{id:`gemini-2.5-pro`,label:`Gemini 2.5 Pro`},{id:`gemini-2.5-flash`,label:`Gemini 2.5 Flash`},{id:`claude-3-5-sonnet-latest`,label:`Claude 3.5 Sonnet`},{id:`claude-3-5-haiku-latest`,label:`Claude 3.5 Haiku`},{id:`gpt-4o`,label:`GPT-4o`},{id:`gpt-4o-mini`,label:`GPT-4o Mini`}],o=k(i,`models`,3,a),s=k(i,`allowedModelIds`,19,()=>[]),c=k(i,`value`,15),{t:u}=q(),d=n(()=>s().length>0?[...o().filter(e=>s().includes(e.id)),...s().filter(e=>!o().some(t=>t.id===e)).map(e=>({id:e,label:e}))]:o());function f(e){let t=e.target.value;c(t),i.onchange?.(t)}var m={DEFAULT_MODEL_OPTIONS:a};{let r=n(()=>i.ariaLabel??u(Q[`chat.model_picker.label`]));xe(t,{class:`smrt-select model-picker-select`,onchange:f,get"aria-label"(){return e(r)},get value(){return c()},set value(e){c(e)},children:(t,n)=>{var r=C(),i=B(r);p(i,17,()=>e(d),e=>e.id,(t,n)=>{var r=Wo(),i=z(r,!0),a={};V(()=>{l(i,e(n).label),a!==(a=e(n).id)&&(r.value=(r.__value=a)??``)}),S(t,r)}),S(t,r)},$$slots:{default:!0}})}return r(m)}var Ko=`assistant-question`,qo=6,Jo=50,Yo=200,Xo=12,Zo=(e,t=Yo)=>typeof e==`string`&&e.trim()&&e.trim().length<=t?e.trim():void 0;function Qo(e){if(!e||typeof e!=`object`)return null;let t=e,n=Zo(t.value),r=Zo(t.label);if(!n||!r)return null;let i=Zo(t.hint),a=Array.isArray(t.keywords)?t.keywords.flatMap(e=>Zo(e,60)??[]).slice(0,Xo):[];return{value:n,label:r,...i?{hint:i}:{},...a.length?{keywords:a}:{}}}function $o(e){if(!e||typeof e!=`object`)return null;let t=e,n=Zo(t.name,64),r=Zo(t.label);if(!n||!r||t.type!==`choice`||!Array.isArray(t.options))return null;let i=t.options.slice(0,Jo).flatMap(e=>Qo(e)??[]),a=new Set(i.map(e=>e.value));if(i.length===0||a.size!==i.length)return null;let o=t.multiple===!0,s=(Array.isArray(t.default)?t.default:[t.default]).filter(e=>typeof e==`string`&&a.has(e));return{name:n,label:r,type:`choice`,options:i,...o?{multiple:o}:{},...s.length?{default:o?s:s[0]}:{},...t.required===!0?{required:!0}:{}}}function es(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.kind!==`assistant-question`)return null;let n=Zo(t.id,120),r=Zo(t.prompt,500);if(!n||!r||!Array.isArray(t.fields))return null;let i=t.fields.slice(0,qo).flatMap(e=>$o(e)??[]);if(i.length===0)return null;let a=Zo(t.submitLabel,60),o={kind:Ko,id:n,prompt:r,fields:i,...a?{submitLabel:a}:{}},s=rs(o,t.answer);return s?{...o,answer:s}:o}function ts(e){let t=e.toolCallData,n=Array.isArray(t)?t:[t];for(let e of n){let t=es(e);if(t)return t}return null}function ns(e){let t={};for(let n of e.fields)n.default===void 0?!n.multiple&&n.required&&(t[n.name]=n.options[0].value):t[n.name]=n.default;return t}function rs(e,t){if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t,r={};for(let t of e.fields){let e=new Set(t.options.map(e=>e.value)),i=n[t.name],a=(Array.isArray(i)?i:[i]).filter(t=>typeof t==`string`&&e.has(t));a.length!==0&&(r[t.name]=t.multiple?[...new Set(a)]:a[0])}return Object.keys(r).length?r:null}function is(e,t){return e.fields.flatMap(e=>{let n=t[e.name];if(n===void 0)return[];let r=(Array.isArray(n)?n:[n]).map(t=>e.options.find(e=>e.value===t)?.label??t);return r.length?[`${e.label}: ${r.join(`, `)}`]:[]}).join(`; `)}var as=new Set([`a`,`an`,`and`,`the`,`by`,`per`,`of`,`in`,`on`,`for`,`to`,`with`,`please`,`use`,`i`,`want`,`it`,`its`,`group`,`grouped`,`show`,`me`]);function os(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,`$1 $2`).split(/[^a-z0-9]+/).filter(e=>e&&!as.has(e)).map(e=>e.length>3&&e.endsWith(`s`)?e.slice(0,-1):e)}function ss(e,t){let n=new Set(os(t));if(n.size===0)return null;let r={};for(let t of e.fields){let e=null;for(let r of t.options){let t=new Set(os([r.label,r.value,r.hint??``,...r.keywords??[]].join(` `))),i=0;for(let e of n)t.has(e)&&(i+=1);i>0&&(!e||i>e.score)&&(e={value:r.value,score:i})}e&&(r[t.name]=t.multiple?[e.value]:e.value)}return Object.keys(r).length?r:null}var cs=c(`<p class="assistant-question-summary svelte-nrkrfu" role="status"><span class="assistant-question-prompt svelte-nrkrfu"> </span> </p>`),ls=c(`<option disabled=""> </option>`),us=c(`<option> </option>`),ds=c(`<!> <!>`,1),fs=c(`<label class="assistant-question-select svelte-nrkrfu"><span> </span> <!></label>`),ps=c(`<!> <div class="assistant-question-actions svelte-nrkrfu"><!></div>`,1),ms=c(`<div class="assistant-question svelte-nrkrfu" data-smrt-component="AssistantQuestionForm"><!></div>`);function hs(i,a){let o=ae();g(a,!0);let c=k(a,`answered`,3,null),u=k(a,`autofocus`,3,!1),f=k(a,`disabled`,3,!1),{t:m}=q(),h=A(F(ns(a.question))),_=A(!1),y=A(null),b=A(null),x=n(()=>c()??a.question.answer??e(y)),w=n(()=>rs(a.question,e(h)));j(()=>{u()&&e(b)&&!e(x)&&e(b).querySelector(`input:not(:disabled), select:not(:disabled)`)?.focus()});function T(t,n){U(h,{...e(h),[t]:n},!0)}function E(t,n,r){let i=e(h)[t],a=Array.isArray(i)?i:i?[i]:[];U(h,{...e(h),[t]:r?[...new Set([...a,n])]:a.filter(e=>e!==n)},!0)}let D=(t,n)=>{let r=e(h)[t];return Array.isArray(r)?r.includes(n):r===n};async function O(){let t=rs(a.question,e(h));if(!(!t||e(_)||e(x))){U(_,!0);try{await a.onsubmit(t),U(y,t,!0)}catch{}finally{U(_,!1)}}}var M=ms(),N=P(M),te=t=>{var n=cs(),r=P(n),i=z(r,!0),o=I(r);s(n),V(e=>{l(i,a.question.prompt),l(o,` ${e??``}`)},[()=>is(a.question,e(x))]),S(t,n)},L=r=>{Ce(r,{class:`assistant-question-form`,onsubmit:O,get"aria-label"(){return a.question.prompt},children:(r,i)=>{var c=ps(),u=B(c);ke(u,{get legend(){return a.question.prompt},stack:!0,children:r=>{var i=C(),c=B(i);p(c,17,()=>a.question.fields,e=>e.name,(r,i)=>{var a=C(),c=B(a),u=t=>{ke(t,{get legend(){return e(i).label},stack:!0,children:t=>{var r=C(),a=B(r);p(a,17,()=>e(i).options,e=>e.value,(t,r)=>{{let a=n(()=>`${o}-${e(i).name}`),s=n(()=>D(e(i).name,e(r).value));ve(t,{get name(){return e(a)},get value(){return e(r).value},get label(){return e(r).label},get checked(){return e(s)},get disabled(){return f()},onchange:t=>E(e(i).name,e(r).value,t.currentTarget.checked)})}}),S(t,r)},$$slots:{default:!0}})},d=r=>{var a=fs(),c=P(a),u=z(c,!0),d=I(c,2);{let r=n=>{var r=ds(),a=B(r),o=e=>{var t=ls(),n=z(t,!0);t.value=t.__value=``,V(e=>l(n,e),[()=>m(Q[`chat.assistant_question.choose`])]),S(e,t)};t(a,t=>{e(h)[e(i).name]===void 0&&t(o)});var s=I(a,2);p(s,17,()=>e(i).options,e=>e.value,(t,n)=>{var r=us(),i=z(r,!0),a={};V(()=>{l(i,e(n).label),a!==(a=e(n).value)&&(r.value=(r.__value=a)??``)}),S(t,r)}),S(n,r)},a=n(()=>`${o}-${e(i).name}`),s=n(()=>typeof e(h)[e(i).name]==`string`?e(h)[e(i).name]:``);xe(d,{get name(){return e(a)},get value(){return e(s)},get required(){return e(i).required},get disabled(){return f()},interaction:!1,onchange:t=>T(e(i).name,t.currentTarget.value),children:r,$$slots:{default:!0}})}s(a),V(()=>l(u,e(i).label)),S(r,a)},g=t=>{{let r=t=>{var n=C(),r=B(n);p(r,17,()=>e(i).options,e=>e.value,(t,n)=>{Se(t,{get value(){return e(n).value},get label(){return e(n).label}})}),S(t,n)},a=n(()=>`${o}-${e(i).name}`),s=n(()=>typeof e(h)[e(i).name]==`string`?e(h)[e(i).name]:``);Ae(t,{get name(){return e(a)},get label(){return e(i).label},get value(){return e(s)},get required(){return e(i).required},get disabled(){return f()},interaction:!1,onvaluechange:t=>T(e(i).name,t),children:r,$$slots:{default:!0}})}};t(c,t=>{e(i).multiple?t(u):e(i).options.length>6?t(d,1):t(g,-1)}),S(r,a)}),S(r,i)},$$slots:{default:!0}});var g=I(u,2),y=P(g);{let t=n(()=>f()||e(_)||!e(w));Y(y,{type:`submit`,get disabled(){return e(t)},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>a.question.submitLabel??m(Q[`chat.assistant_question.submit`])]),S(e,n)},$$slots:{default:!0}})}s(g),S(r,c)},$$slots:{default:!0}})};t(N,t=>{e(x)?t(te):t(L,-1)}),s(M),ee(M,e=>U(b,e),()=>e(b)),S(i,M),r()}var gs=c(`<span class="count svelte-1d7fq8s"> </span>`),_s=c(`<span class="title svelte-1d7fq8s"> </span> <!>`,1),vs=c(`<li><!></li>`),ys=c(`<nav class="assistant-thread-list svelte-1d7fq8s" data-smrt-component="AssistantThreadList"><!> <ul class="svelte-1d7fq8s"></ul></nav>`);function bs(i,a){g(a,!0);let{t:o}=q(),c=k(a,`activeThreadId`,3,null);var u=ys(),f=P(u),m=e=>{Y(e,{type:`button`,variant:`ghost`,class:`assistant-thread-list-new`,get onclick(){return a.oncreate},children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>o(Q[`chat.assistant_thread_list.new_conversation`])]),S(e,n)},$$slots:{default:!0}})};t(f,e=>{a.oncreate&&e(m)});var h=I(f,2);p(h,21,()=>a.threads,e=>e.id,(r,i)=>{var u=vs(),d=P(u);{let r=n(()=>e(i).id===c()?`assistant-thread-list-item active`:`assistant-thread-list-item`),s=n(()=>e(i).id===c()?`true`:void 0);Y(d,{type:`button`,variant:`ghost`,get class(){return e(r)},onclick:()=>a.onselect(e(i).id),get"aria-current"(){return e(s)},children:(n,r)=>{var a=_s(),s=B(a),c=z(s,!0),u=I(s,2),d=t=>{var n=gs(),r=z(n,!0);V(()=>l(r,e(i).messageCount)),S(t,n)};t(u,t=>{e(i).messageCount>0&&t(d)}),V(e=>l(c,e),[()=>e(i).title||o(Q[`chat.assistant_thread_list.untitled`])]),S(n,a)},$$slots:{default:!0}})}s(u),S(r,u)}),s(h),s(u),V(e=>H(u,`aria-label`,e),[()=>o(Q[`chat.assistant_thread_list.conversations_label`])]),S(i,u),r()}function xs(e){return e===`failed`?`error`:e===`previewing`||e===`applying`?`running`:`success`}var Ss={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`};function Cs(e){return e.replace(/[&<>"']/g,e=>Ss[e])}var ws=`\0`,Ts=/\u0000(\d+)\u0000/g,Es=/^ {0,3}(`{3,}|~{3,})[ \t]*([A-Za-z0-9_+-]{0,32})[ \t]*$/,Ds=/^ {0,3}(#{1,3})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*$/,Os=/^ {0,3}[-*+][ \t]+(.*)$/,ks=/^ {0,3}(\d{1,9})[.)][ \t]+(.*)$/,As=/^(?: {2,}|\t)\S/;function js(e){let t=e.replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`).replace(/&/g,`&`),n;try{n=new URL(t)}catch{return null}return n.protocol!==`http:`&&n.protocol!==`https:`?null:Cs(n.href)}function Ms(e){return e.replace(/\*\*(?=\S)([\s\S]*?\S)\*\*/g,`<strong>$1</strong>`).replace(/(^|[^\p{L}\p{N}_])__(?=\S)([\s\S]*?\S)__(?![\p{L}\p{N}_])/gu,`$1<strong>$2</strong>`).replace(/\*(?=[^\s*])([^*]*?[^\s*])\*/g,`<em>$1</em>`).replace(/(^|[^\p{L}\p{N}_])_(?=[^\s_])([^_]*?[^\s_]|[^\s_])_(?![\p{L}\p{N}_])/gu,`$1<em>$2</em>`)}var Ns=2e3;function Ps(e){if(e.length>Ns)return Cs(e);let t=[],n=e=>(t.push(e),`${ws}${t.length-1}${ws}`),r=Cs(e);r=r.replace(/(`{1,2})(?!`)([^\n]*?[^`\n]|[^`\n])\1(?!`)/g,(e,t,r)=>n(`<code>${r}</code>`)),r=r.replace(/\[([^\]\n]+)\]\(([^()\s]+)\)/g,(e,t,r)=>{let i=js(r);return i?n(`<a href="${i}" target="_blank" rel="noopener noreferrer">${Ms(t)}</a>`):e}),r=Ms(r);let i;do i=r,r=r.replace(Ts,(e,n)=>t[Number(n)]??``);while(r!==i);return r}function Fs(e){let t=String(e??``).split(ws).join(``).replace(/\r\n?/g,`
|
|
24
|
-
`).split(`
|
|
25
|
-
`),n=[],r=[],i=null,a=()=>{r.length!==0&&(n.push(`<p>${r.map(Ps).join(`<br>`)}</p>`),r=[])},o=()=>{if(!i)return;let e=i.kind===`ol`&&i.start!==1?` start="${i.start}"`:``,t=i.items.map(e=>`<li>${e.map(Ps).join(`<br>`)}</li>`).join(``);n.push(`<${i.kind}${e}>${t}</${i.kind}>`),i=null},s=()=>{a(),o()};for(let e=0;e<t.length;e+=1){let c=t[e];if(c.length>Ns){o(),r.push(c);continue}let l=Es.exec(c);if(l){s();let r=l[1],i=RegExp(`^ {0,3}${r[0]==="`"?"`":`~`}{${r.length},}[ \\t]*$`),a=[];for(e+=1;e<t.length&&!i.test(t[e]);)a.push(t[e]),e+=1;let o=l[2]?` class="language-${l[2]}"`:``;n.push(`<pre><code${o}>${Cs(a.join(`
|
|
26
|
-
`))}</code></pre>`);continue}if(c.trim()===``){s();continue}let u=Ds.exec(c);if(u){s();let e=u[1].length;n.push(`<h${e}>${Ps(u[2])}</h${e}>`);continue}let d=Os.exec(c),f=d?null:ks.exec(c);if(d||f){a();let e=d?`ul`:`ol`;i&&i.kind!==e&&o(),i||={kind:e,start:f?Number(f[1]):1,items:[]},i.items.push([d?d[1]:f?.[2]??``])}else i&&As.test(c)?i.items[i.items.length-1].push(c.trim()):(o(),r.push(c))}return s(),n.join(``)}function Is(e){if(!e)return;let t;try{t=new URL(e,globalThis.location?.origin??`http://localhost`)}catch{return}if(t.protocol===`http:`||t.protocol===`https:`)return e}function Ls(e){return e.effect===`read`?`run`:e.effect===`destructive`?`confirm`:e.proposal===!0?`run`:`confirm`}function Rs(e,t){return e.effect===`destructive`?`confirm`:t?t(e):Ls(e)}function zs(e,t=64){return e.slice(0,t).map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema,effect:e.effect}))}var Bs=`assistant_propose_action`,Vs=class extends Map{#e=new Map;#t=A(0);#n=A(0);#r=oe||-1;constructor(e){if(super(),e){for(var[t,n]of e)super.set(t,n);this.#n.v=super.size}}#i(e){return oe===this.#r?A(e):le(e)}has(t){var n=this.#e,r=n.get(t);if(r===void 0){if(super.has(t))r=this.#i(0),n.set(t,r);else return e(this.#t),!1}return e(r),!0}forEach(e,t){this.#a(),super.forEach(e,t)}get(t){var n=this.#e,r=n.get(t);if(r===void 0){if(super.has(t))r=this.#i(0),n.set(t,r);else{e(this.#t);return}}return e(r),super.get(t)}getOrInsert(e,t){return super.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return super.has(e)||this.set(e,t(e)),this.get(e)}set(e,t){var n=this.#e,r=n.get(e),i=super.get(e),a=super.set(e,t),o=this.#t;if(r===void 0)r=this.#i(0),n.set(e,r),U(this.#n,super.size),O(o);else if(i!==t){O(r);var s=o.reactions===null?null:new Set(o.reactions);(s===null||!r.reactions?.every(e=>s.has(e)))&&O(o)}return a}delete(e){var t=this.#e,n=t.get(e),r=super.delete(e);return n!==void 0&&(t.delete(e),U(n,-1)),r&&(U(this.#n,super.size),O(this.#t)),r}clear(){if(super.size!==0){super.clear();var e=this.#e;U(this.#n,0);for(var t of e.values())U(t,-1);O(this.#t),e.clear()}}#a(){e(this.#t);var t=this.#e;if(this.#n.v!==t.size){for(var n of super.keys())if(!t.has(n)){var r=this.#i(0);t.set(n,r)}}for([,r]of this.#e)e(r)}keys(){return e(this.#t),super.keys()}values(){return this.#a(),super.values()}entries(){return this.#a(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#n),super.size}},Hs=`assistant_offer_`,Us=/^[a-z][a-z0-9_]{0,39}$/;function Ws(e){return`${Hs}${e}`}function Gs(e){if(typeof e!=`string`)return null;let t=e.trim();return!/^\/(?![/\\])/.test(t)||/[\u0000-\u001f\s\\]/.test(t)?null:t}function Ks(e,t){return typeof e==`string`?e.trim().slice(0,t):``}function qs(e){let t=new Set,n=[];for(let r of e){let e=Ks(r?.id,120),i=Ks(r?.label,80);if(!e||!i||t.has(e))continue;t.add(e);let a=Ks(r.description,160),o=Gs(r.imageUrl);if(n.push({id:e,label:i,...a?{description:a}:{},...o?{imageUrl:o,imageAlt:Ks(r.imageAlt,120)||i}:{},...r.value===void 0?{}:{value:r.value}}),n.length>=4)break}return n}var Js=class{getRegistry;hold;#e=A(F([]));get sets(){return e(this.#e)}set sets(e){U(this.#e,e,!0)}releases=new Map;previewQueues=new Map;previewRequests=new Map;fills=new Map;constructor(e,t){this.getRegistry=e,this.hold=t}syncHolds(){let e=new Set(this.sets.filter(e=>e.status===`waiting`||e.status===`failed`).map(e=>e.id));for(let[t,n]of this.releases)e.has(t)||(n(),this.releases.delete(t));if(this.hold)for(let t of this.sets)e.has(t.id)&&!this.releases.has(t.id)&&this.releases.set(t.id,this.hold(t))}sources(){return(this.getRegistry()?.list()??[]).filter(e=>Us.test(e.id))}source(e){return this.sources().find(t=>t.id===e)}tools(){return this.sources().map(e=>({name:Ws(e.id),description:[e.description.slice(0,800),`Shows the options as cards in the chat; the person picks one and it is applied then. You cannot apply it yourself. Tell them to pick one.`].join(`
|
|
27
|
-
`),inputSchema:e.inputSchema??{type:`object`,additionalProperties:!1,properties:{}},effect:`read`}))}isChoiceTool(e){return e.startsWith(`assistant_offer_`)&&!!this.source(e.slice(16))}get waitingCount(){return this.sets.filter(e=>e.status===`waiting`).length}get pendingMessage(){return this.sets.find(e=>e.status===`waiting`&&e.pending&&e.options.length===0)?.pending?.message??null}update(e,t){this.sets=this.sets.map(n=>n.id===e?{...n,...t}:n),this.syncHolds()}async offerFromCall(e,t){let n=e.name.slice(16),r=this.source(n);if(!r)return{id:e.id,ok:!1,error:`not_available`};let i;try{i=await r.offer(e.args??{},{signal:t})}catch(t){return{id:e.id,ok:!1,error:t instanceof Error?t.message:String(t)}}let a=i?.pending&&typeof i.pending.fill==`function`?i.pending:null,o=qs(i?.options??[]);if(o.length===0&&!a)return{id:e.id,ok:!1,error:`Nothing to offer.`};let s=a?{message:Ks(a.message,160)||`Making options…`,expected:Math.min(4-o.length,Math.max(1,Math.floor(Number(a.expected)||0)||4))}:void 0,c=typeof r.preview==`function`,l=c?qs(i?.original?[i.original]:[])[0]:void 0,u={id:e.id,sourceId:n,title:Ks(i.title,120)||`Pick one`,options:o.filter(e=>e.id!==l?.id),status:`waiting`,...c?{previewable:!0,...l?{original:l}:{},commitLabel:Ks(i.commitLabel,40)||`Use this`,cancelLabel:Ks(i.cancelLabel,40)||`Cancel`}:{},...s&&s.expected>0?{pending:s,lasting:!0}:{}};return this.sets=[...this.sets.filter(t=>t.id!==e.id),u],this.syncHolds(),a&&u.pending&&this.fill(u.id,a),{id:e.id,ok:!0,result:JSON.stringify({offered:!0,waitingForUser:!0,...u.pending?{stillMaking:!0,progress:u.pending.message}:{},options:o.map(({id:e,label:t})=>({id:e,label:t}))})}}fill(e,t){let n=new AbortController;this.fills.get(e)?.abort(),this.fills.set(e,n);let r=()=>n.signal.aborted?void 0:this.sets.find(t=>t.id===e&&t.status!==`dismissed`),i={add:t=>{let n=r();if(!n)return;let i=qs([...n.options,...Array.isArray(t)?t:[]]),a=n.pending?Math.max(0,Math.min(4,n.options.length+n.pending.expected)-i.length):0;this.update(e,{options:i,...n.pending?{pending:{...n.pending,expected:a}}:{}})},status:t=>{let n=r(),i=Ks(t,160);n?.pending&&i&&this.update(e,{pending:{...n.pending,message:i}})}},a=t=>{this.fills.get(e)===n&&this.fills.delete(e);let i=r();if(!i)return;let a=t==null?null:(t instanceof Error?t.message:String(t)).slice(0,200);i.options.length===0?this.update(e,{status:`unavailable`,pending:void 0,error:a||`Nothing came back. Try again.`}):this.update(e,{pending:void 0,...a?{note:a}:{}})};Promise.resolve().then(()=>t.fill(i,n.signal)).then(()=>a(null),e=>a(e??`Nothing came back. Try again.`))}stopFill(e){this.fills.get(e)?.abort(),this.fills.delete(e)}async choose(e,t){let n=this.sets.find(t=>t.id===e);if(!n||n.status!==`waiting`&&n.status!==`failed`)return;let r=n.options.find(e=>e.id===t);if(!r)return;let i=this.source(n.sourceId);if(!i)this.update(e,{status:`failed`,error:`This is no longer on the page.`});else{this.update(e,{status:`applying`,chosenOptionId:t,error:void 0});try{let t=await i.apply(r);this.stopFill(e),this.update(e,{status:`applied`,pending:void 0,previewOptionId:void 0,...typeof t==`string`&&t.trim()?{outcome:t.trim().slice(0,200)}:{}})}catch(t){this.update(e,{status:`failed`,error:t instanceof Error?t.message:String(t)})}}}dismiss(e){let t=this.sets.find(t=>t.id===e);t&&(t.status===`waiting`||t.status===`failed`||t.status===`unavailable`)&&(this.stopFill(e),this.restorePreview(e),this.update(e,{status:`dismissed`,pending:void 0,previewOptionId:void 0,previewPendingId:void 0}))}async restorePreview(e){let t=this.sets.find(t=>t.id===e);if(!t?.previewable||t.previewOptionId===void 0&&t.previewPendingId===void 0)return;this.previewRequests.set(e,(this.previewRequests.get(e)??0)+1);let{sourceId:n}=t,r=t.original??null,i=(this.previewQueues.get(e)??Promise.resolve()).then(async()=>{try{await this.source(n)?.preview?.(r)}catch{}});this.previewQueues.set(e,i),await i}async preview(e,t){let n=this.sets.find(t=>t.id===e);if(!n?.previewable||n.status!==`waiting`&&n.status!==`failed`)return;let r=n.original?.id===t?n.original:n.options.find(e=>e.id===t),i=this.source(n.sourceId);if(!r||!i?.preview)return;let a=(this.previewRequests.get(e)??0)+1;this.previewRequests.set(e,a);let o=()=>this.previewRequests.get(e)===a;this.update(e,{previewPendingId:t});let s=(this.previewQueues.get(e)??Promise.resolve()).then(async()=>{let n=this.sets.find(t=>t.id===e);if(o()&&n&&(n.status===`waiting`||n.status===`failed`)){for(let t of this.sets)t.id!==e&&t.previewOptionId!==void 0&&(await this.restorePreview(t.id),this.update(t.id,{previewOptionId:void 0}));try{if(await i.preview?.(r),!o())return;this.update(e,{status:`waiting`,previewOptionId:t,previewPendingId:void 0,error:void 0})}catch(t){if(!o())return;this.update(e,{status:`failed`,previewPendingId:void 0,error:t instanceof Error?t.message:String(t)})}}});this.previewQueues.set(e,s),await s}async commit(e){let t=this.sets.find(t=>t.id===e);if(!t?.previewable||t.previewPendingId!==void 0)return;let n=t.previewOptionId;!n||n===t.original?.id?this.cancel(e):await this.choose(e,n)}cancel(e){this.dismiss(e)}supersedeWaiting(){if(this.waitingCount!==0){for(let e of this.sets)e.status===`waiting`&&!e.lasting&&this.restorePreview(e.id);this.sets=this.sets.map(e=>e.status===`waiting`&&!e.lasting?{...e,status:`dismissed`,previewOptionId:void 0,previewPendingId:void 0}:e),this.syncHolds()}}clear(){for(let e of this.fills.values())e.abort();this.fills.clear();for(let e of this.sets)this.restorePreview(e.id);this.sets=[],this.syncHolds()}},Ys=Object.freeze([`idempotency_in_progress`,`outcome_unknown`]);function Xs(e){return e!==void 0&&Ys.includes(e)}function Zs(e){return`assistant-message-${e}-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}function Qs(e){return JSON.stringify([e.kind,e.surfaceId,e.subject?[e.subject.type,e.subject.id]:null])}function $s(t){let n=t.now??(()=>Date.now()),r=t.activePollIntervalMs??3e3,i=t.idlePollIntervalMs??15e3,a=t.staleAfterMs??9e4,o=t.visible??(()=>!0),s=A(F([])),c=A(!0),l=A(null),u=A(F([])),d=A(F({})),f=A(F([])),p=A(F(t.surfaces??[])),m=A(F([])),h=A(void 0),g=A(null),_=A(F(t.initialDraft??``)),v=A(!1),y=A(null),b=A(F({state:`idle`,label:null})),x=A(0),S=A(F([])),C=A(``),w=A(F([])),T=null,E=new Map,D=new Js(()=>t.choiceSources,e=>V({id:`choice:${e.id}`,kind:`choice`,label:e.title})),O=A(null),k=new Vs,ee=null,M=0,N=()=>t.maxPauseMs??9e5;function P(e){let t=e.replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,79).trimEnd()}…`:t}function I(e,t){L(!1),U(O,{id:e,goal:P(t),state:`running`,step:null,stepCount:0,pageTools:[],staged:0,acknowledged:!1,stoppedReason:null,error:null,startedAt:n(),endedAt:null},!0)}function te(t,r){let i=e(O);i&&i.endedAt===null&&U(O,{...i,state:t===`done`?`done`:t===`cancelled`?`cancelled`:`failed`,stoppedReason:t===`error`?`error`:t===`cancelled`?i.stoppedReason??`user`:i.stoppedReason,error:t===`error`?r instanceof Error?r.message:String(r):null,endedAt:n()},!0)}function L(e){let t=ee;ee=null,t?.(e)}function R(t){return t.signal.aborted?Promise.resolve(!1):e(O)?.state===`paused`?new Promise(r=>{let i=setTimeout(()=>{e(O)&&U(O,{...e(O),stoppedReason:`paused_too_long`},!0),Le()},Math.max(0,M+N()-n()));ee=e=>{clearTimeout(i),r(e&&!t.signal.aborted)}}):Promise.resolve(!0)}function z(t,n){let r=e(O);r&&r.endedAt===null&&U(O,{...r,pageTools:[...r.pageTools,t.name].slice(-50),staged:t.effect===`write`&&n===`run`?r.staged+1:r.staged},!0)}function ne(){e(v)&&e(O)?.state===`running`&&(M=n(),U(O,{...e(O),state:`paused`},!0))}function B(){e(O)?.state===`paused`&&(U(O,{...e(O),state:`running`},!0),L(!0))}function ae(){e(O)&&!e(O).acknowledged&&U(O,{...e(O),acknowledged:!0},!0)}function oe(){e(v)||U(O,null)}function V(e){let t={...e};return k.set(t.id,t),()=>{k.get(t.id)===t&&k.delete(t.id)}}function se(t){let n=e(v)?e(w).filter(e=>e.status===`waiting`).length:0;if(n>0)return{kind:`confirm`,count:n};let r=[...k.values()],i=r.at(-1);if(i)return{kind:i.kind,count:r.length,...i.label?{label:i.label}:{}};if(t.state!==`done`)return null;let a=[...W.values()].filter(e=>e.status===`previewed`).length+(t.acknowledged?0:t.staged);return a>0?{kind:`review`,count:a}:!t.acknowledged&&(t.stoppedReason===`max_steps`||t.stoppedReason===`budget`)?{kind:`continue`,count:1}:null}function H(){let t=e(O);if(!t)return null;let n=t.state===`running`||t.state===`done`?se(t):null;return{id:t.id,goal:t.goal,state:n?`waiting`:t.state,step:t.step,stepCount:t.stepCount,pageTools:[...t.pageTools],waitingFor:n,stoppedReason:t.stoppedReason,error:t.error,startedAt:t.startedAt,endedAt:t.endedAt}}function ce(e){U(g,e,!0)}function le(e){U(_,e,!0)}let W=new Vs,G=new Map;function ue(e,t,n){return`${e}\n${t}\n${(n??[]).map(e=>e.id||e.url||e.name).sort().join(`\0`)}`}let K=null,q=null,de=null,fe=null,J=!1,pe=!1,Y=!1,me=0,X=0;function he(){let e=t.registry.list().map(e=>e.identity);if(!t.surfaces){U(p,e,!0);return}let n=new Set(e.map(e=>Qs(e)));U(p,t.surfaces.filter(e=>n.has(Qs(e))),!0)}function ge(t){return e(p).some(e=>Qs(e)===Qs(t))}function _e(e){for(let[t,n]of W)Qs(n.request.identity)===Qs(e)&&(n.status===`previewed`||n.status===`previewing`)&&W.set(t,{...n,status:`failed`,error:`AssistantDock: surface "${Qs(e)}" was unmounted before this action was applied`})}function ve(e){return e.subscribe(e=>{(e.type===`registered`||e.type===`unregistered`)&&he(),e.type===`unregistered`&&_e(e.identity)})}function be(){Le(),U(O,null),k.clear(),U(s,[],!0),U(c,!0),U(l,null),U(u,[],!0),U(d,{},!0),U(f,[],!0),W.clear(),D.clear(),U(g,null),G.clear(),U(m,[],!0),U(h,void 0),pe=!1,me+=1,X+=1,ke(),Ae()}function xe(){if(J)return;let e=t.registry;e!==de&&(q?.(),de=e,q=ve(e),he(),be())}function Se(){if(J)return;let e=t.transport;e!==fe&&(fe=e,be())}function Ce(){if(J)return;let t=e(p);he();for(let e of t)ge(e)||_e(e)}he(),de=t.registry,q=ve(de),fe=t.transport;function we(){let t=n()-a;U(f,e(f).map(e=>e.status===`processing`&&e.sentAt<t?{...e,status:`stale`}:e),!0)}async function Te(){if(J||!o()||!e(l))return;we();let n=e(l),r=X,i;try{i=await t.transport.loadMessages(n)}catch(e){if(J||r!==X)return;pe||(pe=!0,U(g,e instanceof Error?e.message:String(e),!0));return}J||Y||r!==X||e(l)===n&&(pe&&(pe=!1,U(g,null)),U(u,i,!0),Ee(e(f).some(e=>e.status===`processing`)),U(f,e(f).filter(t=>{if(t.status===`sending`||t.threadId!==n)return!0;let r=t.clientRequestId?e(u).findIndex(e=>e.role===`user`&&e.clientRequestId===t.clientRequestId):-1,i=r>=0?r:e(u).findLastIndex(e=>e.role===`user`&&e.content===t.content);if(i<0)return!0;let a=e(u).slice(i+1).some(e=>e.role===`assistant`||e.role===`tool`);return a&&(G.delete(ue(t.threadId,t.content,t.attachments)),e(O)?.id===t.clientRequestId&&!e(v)&&te(`done`)),!a}),!0))}function Ee(e){K&&clearInterval(K),K=J||Y?null:setInterval(()=>void Te(),e?r:i)}function De(){J||K||(Y=!1,Ee(e(f).some(e=>e.status===`processing`)))}function Oe(){Y=!0,K&&=(clearInterval(K),null)}async function ke(){let e=X;U(c,!0);try{let n=await t.transport.listThreads();if(J||e!==X)return;U(s,n,!0),U(c,!1),U(g,null)}catch(t){if(J||e!==X)return;U(c,!1),U(g,t instanceof Error?t.message:String(t),!0)}}async function Ae(){if(!t.transport.listModels){U(m,[],!0);return}let n=X,r;try{r=await t.transport.listModels()}catch(e){if(J||n!==X)return;U(g,e instanceof Error?e.message:String(e),!0);return}J||n!==X||(U(m,r,!0),e(m).length>0&&!e(h)&&U(h,e(m)[0].id,!0))}function je(e){U(h,e,!0)}async function Me(e){let n=++me,r=X;try{let i=await t.transport.loadMessages(e);if(J||n!==me||r!==X)return;U(l,e,!0),U(u,i,!0),U(g,null)}catch(e){if(J||n!==me||r!==X)return;U(g,e instanceof Error?e.message:String(e),!0)}}async function Ne(n){let r=t.transport.createThread;if(!r)throw Error(`AssistantDock: thread creation is not supported`);let i=X;try{let a=await r.call(t.transport,n);return!J&&i===X&&(U(s,[...e(s),a],!0),U(g,null)),a}catch(e){throw!J&&i===X&&U(g,e instanceof Error?e.message:String(e),!0),e}}async function Pe(r,i,a,o){let s=e(f).findIndex(e=>e.clientRequestId===a),c={clientRequestId:a,threadId:r,content:i,status:`sending`,sentAt:n(),attachments:o};U(f,s>=0?e(f).map((e,t)=>t===s?c:e):[...e(f),c],!0);let l=X,u=Fe();I(a,i);try{let n=await t.transport.sendMessage({threadId:r,content:i,attachments:o,clientRequestId:a,model:e(h),...Z(r,u,l)});if(J||l!==X){Ie(u,`discarded`);return}if(n.inProgress){Ie(u,`discarded`),U(f,e(f).map(e=>e.clientRequestId===a?{...e,status:`processing`}:e),!0),De();return}G.delete(ue(r,i,o)),Re(r,n);let s=n;for(;s.clientToolCalls&&!u.signal.aborted;){let n=s.clientToolCalls;if(!await R(u))break;let i=await Je(n.calls,u);if(u.signal.aborted||J||l!==X||(await Ve(u),u.signal.aborted||J||l!==X)||!await R(u))break;if(!t.transport.resumeTurn)throw Error(`AssistantDock: the transport returned browser tool calls but has no resumeTurn`);if(s=await t.transport.resumeTurn({threadId:r,clientRequestId:a,continuationId:n.continuationId,results:i,model:e(h),...Z(r,u,l)}),J||l!==X)break;Re(r,s)}U(f,e(f).filter(e=>e.clientRequestId!==a),!0),Ie(u,u.signal.aborted?`cancelled`:`done`)}catch(t){if(G.delete(ue(r,i,o)),u.signal.aborted){Ie(u,`cancelled`),!J&&l===X&&U(f,e(f).filter(e=>e.clientRequestId!==a),!0);return}throw Ie(u,`error`,t),!J&&l===X&&U(f,e(f).map(e=>e.clientRequestId===a?{...e,status:`failed`}:e),!0),t}}function Fe(){T?.abort();let e=new AbortController;return T=e,U(v,!0),U(y,{state:`working`,label:`Sending…`,cancellable:!0},!0),U(x,0),U(S,[],!0),U(C,``),U(w,[],!0),D.supersedeWaiting(),e}function Ie(t,n,r){if(T===t){T=null,U(v,!1),U(y,null),U(C,``);for(let[e,t]of E)E.delete(e),t(!1);L(!1),n!==`discarded`&&te(n,r),n!==`discarded`&&U(b,n===`done`?{state:`done`,label:`Done`,changes:e(x)}:n===`cancelled`?{state:`idle`,label:`Stopped`}:{state:`error`,label:r instanceof Error?r.message:String(r)},!0)}}function Le(){let t=T;if(t){e(O)&&!e(O).stoppedReason&&U(O,{...e(O),stoppedReason:`user`},!0),t.abort(),L(!1);for(let[e,t]of E)E.delete(e),t(!1)}}function Re(t,n){if(e(l)!==t)return;let r=[n.userMessage,...n.messages??[],n.assistantMessage].filter(e=>!!e);if(r.length===0)return;let i=new Map(e(u).map(e=>[e.id,e]));for(let e of r)i.set(e.id,e);U(u,Array.from(i.values()),!0)}function ze(t,n,r,i){if(!(J||r!==X||T!==n))switch(i.type){case`status`:i.status.state===`working`&&(U(y,{...i.status,cancellable:!0},!0),e(O)&&i.status.label&&U(O,{...e(O),step:i.status.label},!0));return;case`token`:U(C,(e(C)+i.text).slice(-2e4),!0);return;case`step`:U(S,[...e(S),i.step].slice(-30),!0),e(O)&&i.step.kind===`tool_call`&&U(O,{...e(O),step:i.step.label,stepCount:e(O).stepCount+1},!0);return;case`message`:if(e(l)===t){let t=new Map(e(u).map(e=>[e.id,e]));t.set(i.message.id,i.message),U(u,Array.from(t.values()),!0)}i.message.role===`assistant`&&U(C,``);return;case`done`:U(C,``);{let t=i.stoppedReason===`max_steps`||i.stoppedReason===`budget`||i.stoppedReason===`repeated_calls`?i.stoppedReason:i.capReason;e(O)&&t&&U(O,{...e(O),stoppedReason:t},!0)}return;default:return}}function Be(){if(!t.actionClient)return null;let e=t.registry.list().filter(e=>ge(e.identity)&&e.actions.length>0);return e.length===0?null:{name:Bs,description:[`Propose an action on something shown on this page. Nothing changes until the user confirms it in the chat.`,`Available:`,...e.map(e=>`${e.identity.surfaceId}: ${e.label} — ${e.actions.map(e=>`${e.id} (${e.label})`).join(`, `)}`)].join(`
|
|
28
|
-
`).slice(0,1e3),inputSchema:{type:`object`,required:[`surfaceId`,`actionId`],additionalProperties:!1,properties:{surfaceId:{type:`string`,enum:[...new Set(e.map(e=>e.identity.surfaceId))]},subjectId:{type:`string`},actionId:{type:`string`},rowIds:{type:`array`,items:{type:`string`},description:`The rows to act on; omit for the rows on screen.`},payload:{type:`object`}}},effect:`read`}}async function Ve(e){let r=t.settleTimeoutMs??5e3,i=n();if(t.settle){let e;try{await Promise.race([Promise.resolve(t.settle()),new Promise(t=>{e=setTimeout(t,r)})])}catch{}finally{e&&clearTimeout(e)}}e.signal.aborted||await st(t.registry,{timeoutMs:Math.max(0,r-(n()-i)),alsoWatch:[t.pageTools],signal:e.signal})}function He(){let e=t.pageTools?.list()??[],n=t.clientToolFilter;return n?e.filter(e=>{try{return n(e)}catch{return!1}}):e}function Ue(){let e=He(),t=Be();return[...e,...t?[t]:[],...D.tools()]}function Z(e,t,n){let r=Ue();return{...r.length>0?{clientTools:zs(r)}:{},onEvent:r=>ze(e,t,n,r),signal:t.signal}}function We(t,n){U(w,e(w).map(e=>e.id===t?{...e,...n}:e),!0)}function Ge(e,t){return t.signal.aborted?Promise.resolve(!1):new Promise(t=>{E.set(e,t)})}function Ke(e,t){let n=E.get(e);n&&(E.delete(e),n(t))}async function qe(e){let n=e.args??{},r=typeof n.surfaceId==`string`?n.surfaceId:``,i=typeof n.actionId==`string`?n.actionId:``,a=typeof n.subjectId==`string`?n.subjectId:void 0,o=t.registry.list().find(e=>e.identity.surfaceId===r&&ge(e.identity)&&(a===void 0||e.identity.subject?.id===a));if(!o)return{id:e.id,ok:!1,error:`not_on_this_page`};if(!o.actions.some(e=>e.id===i))return{id:e.id,ok:!1,error:`unknown_action`};let s=Array.isArray(n.rowIds)?n.rowIds.filter(e=>typeof e==`string`||typeof e==`number`):[],c=n.payload&&typeof n.payload==`object`&&!Array.isArray(n.payload)?n.payload:void 0,l={version:1,requestId:`assistant-${e.id}`,identity:o.identity,actionId:i,phase:`preview`,selection:s.length>0?{scope:`explicit-ids`,rowIds:s}:{scope:`current-page`},...c===void 0?{}:{payload:c}};await rt(l);let u=W.get(l.requestId);return u?.status===`previewed`?{id:e.id,ok:!0,result:JSON.stringify({proposed:!0,waitingForUser:!0,preview:u.previewResult?.details??null})}:{id:e.id,ok:!1,error:u?.error??u?.previewResult?.reason??`not_proposed`}}async function Je(n,r){let i=[];for(let a of n){if(r.signal.aborted){i.push({id:a.id,ok:!1,error:`cancelled`});continue}if(a.name===`assistant_propose_action`&&Be()){i.push(await qe(a));continue}if(D.isChoiceTool(a.name)){i.push(await D.offerFromCall(a,r.signal));continue}let n=He().find(e=>e.name===a.name);if(!n||!t.pageTools){i.push({id:a.id,ok:!1,error:`not_available`});continue}let o=Rs(n,t.clientToolPolicy);if(o===`confirm`){if(U(w,[...e(w),{id:a.id,name:n.name,description:n.description,args:a.args??{},effect:n.effect,status:`waiting`}],!0),!await Ge(a.id,r)){We(a.id,{status:`declined`}),i.push({id:a.id,ok:!1,error:r.signal.aborted?`cancelled`:`declined`});continue}We(a.id,{status:`running`})}try{let s=await t.pageTools.execute(n.name,a.args??{},{signal:r.signal});o===`confirm`&&(We(a.id,{status:`done`}),n.effect!==`read`&&U(x,e(x)+1)),i.push({id:a.id,ok:!0,result:s}),z(n,o)}catch(e){let t=e instanceof Error?e.message:String(e);o===`confirm`&&We(a.id,{status:`failed`,error:t}),i.push({id:a.id,ok:!1,error:t})}}return i}function Ye(){if(e(v)&&e(O)?.state===`paused`)return{state:`working`,label:`Paused`,cancellable:!0};if(e(v))return e(w).some(e=>e.status===`waiting`)?{state:`working`,label:`Waiting for your OK…`,cancellable:!0}:{...e(y)??{state:`working`,label:`Working on it…`},state:`working`,cancellable:!0};let t=[...W.values()];if(t.some(e=>e.status===`applying`))return{state:`working`,label:`Making the change…`};if(t.some(e=>e.status===`previewing`))return{state:`working`,label:`Getting a change ready…`};if(D.sets.some(e=>e.status===`applying`))return{state:`working`,label:`Making the change…`};let n=D.pendingMessage;return n?{state:`working`,label:n}:D.waitingCount>0?{state:`done`,label:`Pick one of the options`}:e(f).some(e=>e.status===`processing`)?{state:`working`,label:`Working on it…`}:e(b)}let Xe=t.onRun?ie(()=>{j(()=>{let e=H();re(()=>{try{t.onRun?.(e)}catch{}})})}):null,Ze=t.onStatus?ie(()=>{j(()=>{let e=Ye();re(()=>{try{t.onStatus?.(e)}catch{}})})}):null;async function Qe(n,r,i){if(!e(l))throw Error(`AssistantDock: answerQuestion() called with no active thread`);let a=`${n}:${r.id}`,o=rs(r,i);if(!o||e(d)[a])return;let s=e(l),c=X;U(d,{...e(d),[a]:o},!0);let u=t.transport.answerQuestion;if(!u)await $e(is(r,o));else try{let e=await u.call(t.transport,{threadId:s,messageId:n,questionId:r.id,values:o,clientRequestId:t.createClientRequestId?.()??Zs(s)});!J&&c===X&&(Re(s,e),U(g,null))}catch(t){if(!J&&c===X){let{[a]:n,...r}=e(d);U(d,r,!0),U(g,t instanceof Error?t.message:String(t),!0)}throw t}}async function $e(n,r){if(!e(l))throw Error(`AssistantDock: send() called with no active thread`);let i=e(l),a=ue(i,n,r),o=G.get(a);o||(o=t.createClientRequestId?.()??Zs(i),G.set(a,o));let s=e(_),c=X;await Pe(i,n,o,r),!J&&c===X&&e(_)===s&&e(_).trim()===n.trim()&&U(_,``)}async function et(t){let n=e(f).find(e=>e.clientRequestId===t);if(!n)return;let r=X;try{if(await Pe(n.threadId,n.content,t,n.attachments),J||r!==X)return;U(g,null)}catch(e){if(J||r!==X)return;U(g,e instanceof Error?e.message:String(e),!0)}}function tt(e){return e.requestId}function nt(){return globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}async function rt(e){let n=W.get(tt(e));if(n&&(n.status===`applying`||n.outcomeUnknown===!0)){U(g,`AssistantDock: previewAction refused — action "${tt(e)}" has an apply in flight or an unknown outcome; retry it with applyAction instead.`);return}let r=t.createIdempotencyKey?.()??nt();if(!ge(e.identity)){W.set(tt(e),{request:e,status:`failed`,error:`AssistantDock: surface "${Qs(e.identity)}" is not mounted`,idempotencyKey:r});return}let i;try{if(!t.actionClient)throw Error(`AssistantDock: previewAction requires an actionClient`);i=ye({...e,phase:`preview`})}catch(t){W.set(tt(e),{request:e,status:`failed`,error:t instanceof Error?t.message:String(t),idempotencyKey:r});return}W.set(tt(i),{request:i,status:`previewing`,idempotencyKey:r});let a=X,o;try{o=await t.actionClient.preview(i)}catch(e){let t=W.get(tt(i));t&&t.status===`previewing`&&t.idempotencyKey===r&&a===X&&W.set(tt(i),{request:i,status:`failed`,error:e instanceof Error?e.message:String(e),idempotencyKey:r});return}let s=W.get(tt(i));s&&a===X&&s.status===`previewing`&&s.idempotencyKey===r&&W.set(tt(i),{request:i,status:o.ok?`previewed`:`failed`,previewResult:o,error:o.ok?void 0:o.reason,idempotencyKey:r})}async function it(r){let i=W.get(r);if(!i||i.status===`applying`)return;let a=i.status===`failed`&&i.retryable===!0;if(i.status!==`previewed`&&!a){U(g,`AssistantDock: applyAction refused — action "${r}" is "${i.status}"${i.status===`failed`?` and not retryable (preview-phase failure)`:``}, not a confirmed preview or a retryable apply failure.`);return}let o=X;if(!ge(i.request.identity))W.set(r,{...i,status:`failed`,retryable:!0,error:`AssistantDock: surface "${Qs(i.request.identity)}" is not mounted`});else try{if(!t.actionClient)throw Error(`AssistantDock: applyAction requires an actionClient`);let a=ye({...i.request,phase:`apply`,...i.previewResult?.confirmationToken?{confirmationToken:i.previewResult.confirmationToken}:{}});W.set(r,{...i,request:a,status:`applying`});let s=await t.actionClient.apply(a,i.idempotencyKey),c=W.get(r);c&&c.status===`applying`&&o===X?(W.set(r,{...c,request:a,status:s.ok?`applied`:`failed`,applyResult:s,error:s.ok?void 0:s.reason,retryable:!s.ok,outcomeUnknown:!s.ok&&Xs(s.reason)}),s.ok?(at(a,s),ot(a,{status:`applied`,result:s})):Xs(s.reason)?ot(a,{status:`unknown`,result:s}):ot(a,{status:`rejected`,by:`server`,result:s})):!c&&s.ok&&o===X&&(e(l)&&U(u,[...e(u),{id:`applied-after-reject-${r}`,threadId:e(l),content:`The action "${a.actionId}" you rejected was already applied by the server before the rejection took effect.`,role:`system`,createdAt:new Date(n())}],!0),at(a,s),ot(a,{status:`applied`,result:s}))}catch(e){let t=W.get(r);if(t&&t.status===`applying`&&o===X){let n=e instanceof Error?e.message:String(e);W.set(r,{...t,status:`failed`,error:n,retryable:!0,outcomeUnknown:!0}),ot(t.request,{status:`unknown`,error:n})}}}function at(e,n){try{t.onActionApplied?.(e,n)}catch{}}function ot(n,r){r.status===`applied`&&(e(v)?U(x,e(x)+1):U(b,{state:`done`,label:`Done`,changes:1},!0));try{t.onActionSettled?.(n,r)}catch{}}function ct(e){let t=W.get(e);t&&(t.status===`applying`||t.outcomeUnknown===!0?U(g,`AssistantDock: rejectAction refused — action "${e}" `+(t.status===`applying`?`is still applying.`:`has an unknown outcome; retry it to learn whether it applied.`)):(W.delete(e),ot(t.request,{status:`rejected`,by:`user`})))}function lt(){J||(J=!0,Le(),Ze?.(),Xe?.(),Oe(),q?.(),q=null,D.clear())}return{get threads(){return e(s)},get threadsLoading(){return e(c)},get activeThreadId(){return e(l)},get messages(){return e(u)},get pendingSends(){return e(f)},get surfaces(){return e(p)},get actions(){return W},get models(){return e(m)},get selectedModel(){return e(h)},get error(){return e(g)},get draft(){return e(_)},get status(){return Ye()},get steps(){return e(S)},get streamingText(){return e(C)},get toolRequests(){return e(w)},get run(){return H()},pauseRun:ne,continueRun:B,acknowledgeRun:ae,dismissRun:oe,holdForUser:V,get choices(){return D.sets},chooseOption:(e,t)=>D.choose(e,t),previewOption:(e,t)=>D.preview(e,t),commitOption:e=>D.commit(e),cancelChoices:e=>D.cancel(e),dismissChoices:e=>D.dismiss(e),approveToolRequest:e=>Ke(e,!0),declineToolRequest:e=>Ke(e,!1),cancel:Le,setDraft:le,setError:ce,loadThreads:ke,loadModels:Ae,setSelectedModel:je,openThread:Me,createThread:Ne,send:$e,retry:et,get answeredQuestions(){return e(d)},answerQuestion:Qe,previewAction:rt,applyAction:it,rejectAction:ct,startPolling:De,stopPolling:Oe,syncRegistry:xe,syncSurfaces:Ce,syncTransport:Se,dispose:lt}}var ec=c(`<div class="assistant-dock-message-content assistant-dock-markdown svelte-d0nc1n"></div>`),tc=c(`<p class="assistant-dock-message-content svelte-d0nc1n"> </p>`),nc=c(`<!> <div class="assistant-dock-threads svelte-d0nc1n"><!></div>`,1),rc=c(`<p class="assistant-dock-error svelte-d0nc1n" role="alert"> <!></p>`),ic=c(`<span> </span>`),ac=c(`<div class="assistant-dock-run svelte-d0nc1n" role="status" aria-live="polite"><span> </span> <!></div>`),oc=f(`<svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true"><path d="M4 6h12M8 6V4.5h4V6m-6.5 0l.7 9.5h7.6L15 6M8.5 9v4m3-4v4" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),sc=c(`<div class="assistant-dock-single-actions svelte-d0nc1n"><!></div>`),cc=c(`<p class="assistant-dock-empty svelte-d0nc1n"> </p>`),lc=c(`<div class="assistant-dock-thread-state assistant-dock-thread-loading svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p></div>`),uc=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <div class="assistant-dock-thread-state-actions svelte-d0nc1n"><!> <!></div>`,1),dc=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <!>`,1),fc=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p>`,1),pc=c(`<section class="assistant-dock-thread-state svelte-d0nc1n"><!></section>`),mc=c(`<div class="assistant-dock-suggestions svelte-d0nc1n" role="group"></div>`),hc=c(`<div class="assistant-dock-card svelte-d0nc1n"><!></div>`),gc=c(`<a target="_blank" rel="noopener noreferrer" class="assistant-dock-attachment-link svelte-d0nc1n"> </a>`),_c=c(`<span class="assistant-dock-attachment-name svelte-d0nc1n"> </span>`),vc=c(`<span class="assistant-dock-attachment-size svelte-d0nc1n"> </span>`),yc=c(`<li class="assistant-dock-attachment svelte-d0nc1n"><!> <!></li>`),bc=c(`<ul class="assistant-dock-attachments svelte-d0nc1n"></ul>`),xc=c(`<!> <!>`,1),Sc=c(`<div class="assistant-dock-card assistant-dock-tool-call svelte-d0nc1n"><!></div>`),Cc=c(`<li class="svelte-d0nc1n"><!> <!> <!></li>`),wc=c(`<div class="assistant-dock-streaming svelte-d0nc1n"><!></div>`),Tc=c(`<!> <!> <ul class="assistant-dock-messages svelte-d0nc1n"></ul> <!>`,1),Ec=c(`<p class="assistant-dock-tool-request-warning svelte-d0nc1n"> </p>`),Dc=c(`<div class="assistant-dock-tool-request svelte-d0nc1n" role="group"><p class="assistant-dock-tool-request-title svelte-d0nc1n"> </p> <p class="assistant-dock-tool-request-description svelte-d0nc1n"> </p> <!> <details class="assistant-dock-tool-request-details svelte-d0nc1n"><summary> </summary> <pre class="svelte-d0nc1n"> </pre></details> <div class="assistant-dock-tool-request-actions svelte-d0nc1n"><!> <!></div></div>`),Oc=c(`<div class="assistant-dock-action-unknown svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p> <!></div>`),kc=c(`<li><!> <!></li>`),Ac=c(`<ul class="assistant-dock-actions svelte-d0nc1n"></ul>`),jc=c(`<div class="assistant-dock-stale svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),Mc=c(`<div class="assistant-dock-failed svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),Nc=c(`<div class="assistant-dock-status svelte-d0nc1n" role="status" aria-live="polite"><span class="assistant-dock-status-label"> </span> <!></div>`),Pc=c(`<div class="assistant-dock-composer-header svelte-d0nc1n"><!></div>`),Fc=c(`<div class="assistant-dock-composer"><!> <!></div>`),Ic=c(`<div class="assistant-dock svelte-d0nc1n" data-smrt-component="AssistantDock"><div class="assistant-dock-layout svelte-d0nc1n"><!> <div class="assistant-dock-main svelte-d0nc1n"><!> <!> <!> <!> <div class="assistant-dock-scroll svelte-d0nc1n"><!> <!> <!> <!> <!> <!></div> <!> <!></div></div></div>`);function Lc(i,a){let c=ae();g(a,!0);let f=(e,n=m,r=m)=>{var i=C(),c=B(i),d=e=>{var t=C(),i=B(t);o(i,()=>a.renderMessage,()=>({message:n(),streaming:r()})),S(e,t)},f=e=>{var t=ec();u(t,()=>Fs(n().content),!0),s(t),S(e,t)},p=e=>{var t=tc(),r=z(t,!0);V(()=>l(r,n().content)),S(e,t)};t(c,e=>{a.renderMessage?e(d):M()===`markdown`?e(f,1):e(p,-1)}),S(e,i)};function h(e){return e===`system`?`system`:e===`user`?`default`:`agent`}function y(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}let x=k(a,`suggestions`,19,()=>[]),w=k(a,`contextMode`,3,`data-surfaces`),T=k(a,`visible`,3,!0),E=k(a,`presentation`,3,`full`),D=k(a,`conversations`,3,`multiple`),O=k(a,`threadList`,3,!0),M=k(a,`messageFormat`,3,`text`),N=k(a,`composerDisabled`,3,!1),F=k(a,`sendOnPause`,3,!1),te=k(a,`speaking`,3,!1),{t:L}=q(),R=$s({get transport(){return a.transport},get registry(){return a.registry},get actionClient(){return a.actionClient},get surfaces(){return a.surfaces},visible:()=>T(),onActionApplied:(e,t)=>a.onactionapplied?.(e,t),onActionSettled:(e,t)=>a.onactionsettled?.(e,t),initialDraft:re(()=>a.initialDraft),get pageTools(){return a.pageTools},clientToolPolicy:e=>(a.clientToolPolicy??Ls)(e),onStatus:e=>a.onstatus?.(e),settle:()=>a.settle?.(),clientToolFilter:e=>a.clientToolFilter?.(e)??!0,get maxPauseMs(){return a.maxPauseMs},onRun:e=>a.onrun?.(e),get choiceSources(){return a.choiceSources}});function ne(e){try{return JSON.stringify(e,null,2)}catch{return``}}j(()=>(re(()=>{R.loadThreads(),R.loadModels(),R.startPolling(),a.oncontroller?.(R)}),()=>R.dispose()));let ie=n(()=>R.run?.waitingFor?.kind===`choice`||R.toolRequests.some(e=>e.status===`waiting`)||[...R.actions.values()].some(e=>e.status===`previewed`||e.outcomeUnknown));j(()=>{a.onattentionchange?.(e(ie))});let oe=A(0);j(()=>{a.registry,re(()=>{ce(oe),R.syncRegistry()})}),j(()=>{a.surfaces,re(()=>R.syncSurfaces())}),j(()=>{a.transport,re(()=>{ce(oe),R.syncTransport()})});let le=A(!1),G=`assistant-dock-threads-${c}`,ue=A(void 0),K=`${G}-toggle`;function de(){if(!e(le))return;let t=typeof document<`u`&&!!e(ue)?.contains(document.activeElement);U(le,!1),t&&se().then(()=>{e(ue)&&e(ue).offsetParent===null&&document.getElementById(K)?.focus()})}async function fe(){U(le,!0),await se(),e(ue)?.querySelector(`.assistant-thread-list-item`)?.focus()}let J=A(void 0),pe=null;function he(e){if(!e.lastMessageAt)return e.messageCount===0?1/0:-1/0;let t=new Date(e.lastMessageAt).getTime();return Number.isNaN(t)?-1/0:t}function ge(){let e;for(let t of R.threads){let n=he(t);(!e||n>=e.at)&&(e={id:t.id,at:n})}return e?.id}async function _e(e=!1){let t=a.transport;pe=t;try{let n=e?void 0:ge();if(!n){if(!t.createThread){R.setError(L(Q[`chat.assistant_dock.no_conversations`]));return}n=(await R.createThread(`Conversation`)).id}if(a.transport!==t)return;await R.openThread(n)}catch{}finally{pe===t&&(pe=null)}}async function ve(){R.setError(null),await R.loadThreads()}j(()=>{D()===`single`&&(R.threadsLoading||R.activeThreadId||R.error||pe!==a.transport&&re(()=>_e()))}),j(()=>{D()===`single`&&T()&&R.activeThreadId&&se().then(()=>e(J)?.focus())}),j(()=>{if(typeof document>`u`)return;let t=t=>{let n=t.detail;t.defaultPrevented||typeof n?.prompt!=`string`||(t.preventDefault(),R.setDraft(n.prompt),se().then(()=>e(J)?.focus()))};return document.addEventListener(me,t),()=>document.removeEventListener(me,t)});async function ye(){de(),R.setError(null),await _e(!0)}async function be(e){de(),await R.openThread(e)}async function xe(){de();try{let e=await R.createThread(`New conversation`);await R.openThread(e.id)}catch{}}async function Se(e,t,n){try{await R.answerQuestion(e,t,n)}catch(e){throw R.setError(e instanceof Error?e.message:String(e)),e}}async function Ce(e,t){try{await R.send(e,t),R.setError(null)}catch(e){throw R.setError(e instanceof Error?e.message:String(e)),e}}async function we(t){let n=a.transport,r=e(oe),i=()=>a.transport===n&&e(oe)===r;try{let e=n.uploadAttachment;if(!e)throw Error(`AssistantDock: attachment upload is not supported`);let r=[];for(let a of Array.from(t))if(r.push(await e.call(n,a)),!i())return[];return R.setError(null),r}catch(e){throw i()&&R.setError(e instanceof Error?e.message:String(e)),e}}async function Te(e){await R.applyAction(e)}var Ee=Ic(),De=P(Ee),Oe=P(De),ke=t=>{var r=nc(),i=B(r);Y(i,{type:`button`,variant:`ghost`,get id(){return K},class:`assistant-dock-threads-toggle`,get"aria-expanded"(){return e(le)},get"aria-controls"(){return G},onclick:()=>U(le,!e(le)),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.conversations_toggle`])]),S(e,n)},$$slots:{default:!0}});var o=I(i,2),c=P(o);{let t=n(()=>a.transport.createThread?xe:void 0);bs(c,{get threads(){return R.threads},get activeThreadId(){return R.activeThreadId},onselect:be,get oncreate(){return e(t)}})}s(o),ee(o,e=>U(ue,e),()=>e(ue)),V(()=>H(o,`id`,G)),S(t,r)};t(Oe,e=>{E()===`full`&&D()!==`single`&&O()&&e(ke)});var Ae=I(Oe,2),je=P(Ae),Me=e=>{var n=rc(),r=P(n),i=I(r),a=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:ve,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.retry_conversation`])]),S(e,n)},$$slots:{default:!0}})};t(i,e=>{D()===`single`&&!R.activeThreadId&&e(a)}),s(n),V(e=>l(r,`${e??``} `),[()=>L(Q[`chat.assistant_dock.error`],{message:R.error})]),S(e,n)};t(je,e=>{R.error&&e(Me)});var Ne=I(je,2),Pe=e=>{var n=ac(),r=P(n),i=z(r,!0),a=I(r,2),o=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>R.pauseRun(),children:(e,t)=>{v();var n=d(`Pause`);S(e,n)},$$slots:{default:!0}})},c=e=>{Y(e,{type:`button`,size:`sm`,onclick:()=>R.continueRun(),children:(e,t)=>{v();var n=d(`Continue`);S(e,n)},$$slots:{default:!0}})},u=e=>{var t=ic(),n=z(t,!0);V(()=>l(n,R.run.waitingFor.label??`Waiting for ${R.run.waitingFor.kind}`)),S(e,t)};t(a,e=>{R.run.state===`running`?e(o):R.run.state===`paused`?e(c,1):R.run.state===`waiting`&&R.run.waitingFor&&e(u,2)}),s(n),V(()=>l(i,R.run.goal)),S(e,n)};t(Ne,e=>{R.run&&(E()===`controls`||R.run.state===`paused`)&&e(Pe)});var Fe=I(Ne,2),Ie=t=>{var r=sc(),i=P(r);{let t=n(()=>L(Q[`chat.assistant_dock.clear_conversation`])),r=n(()=>L(Q[`chat.assistant_dock.clear_conversation`]));Y(i,{type:`button`,size:`sm`,variant:`ghost`,class:`assistant-dock-clear`,onclick:ye,get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=oc();S(e,n)},$$slots:{default:!0}})}s(r),S(t,r)};t(Fe,e=>{D()===`single`&&R.activeThreadId&&a.transport.createThread&&R.messages.length>0&&e(Ie)});var Le=I(Fe,2),Re=e=>{var t=cc(),n=z(t,!0);V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.no_surfaces`])]),S(e,t)};t(Le,e=>{w()===`data-surfaces`&&R.surfaces.length===0&&!a.pageTools&&e(Re)});var ze=I(Le,2),Be=P(ze),Ve=r=>{var i=Tc(),c=B(i),u=e=>{var n=C(),r=B(n),i=e=>{var t=lc(),n=P(t),r=z(n,!0);s(t),V((e,n)=>{H(t,`aria-label`,e),l(r,n)},[()=>L(Q[`chat.assistant_dock.opening_conversation`]),()=>L(Q[`chat.assistant_dock.opening_conversation`])]),S(e,t)};t(r,e=>{!R.activeThreadId&&!R.error&&e(i)}),S(e,n)},m=e=>{var t=lc(),n=P(t),r=z(n,!0);s(t),V((e,n)=>{H(t,`aria-label`,e),l(r,n)},[()=>L(Q[`chat.assistant_dock.loading_conversations`]),()=>L(Q[`chat.assistant_dock.loading_conversations`])]),S(e,t)},g=e=>{var n=pc(),r=P(n),i=e=>{var n=uc(),r=B(n),i=z(r,!0),o=I(r,2),c=z(o,!0),u=I(o,2),f=P(u);Y(f,{type:`button`,get"aria-controls"(){return G},onclick:fe,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.view_conversations`])]),S(e,n)},$$slots:{default:!0}});var p=I(f,2),m=e=>{Y(e,{type:`button`,variant:`ghost`,onclick:xe,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.start_new_conversation`])]),S(e,n)},$$slots:{default:!0}})};t(p,e=>{a.transport.createThread&&e(m)}),s(u),V((e,t)=>{H(r,`id`,`${G}-empty-title`),l(i,e),l(c,t)},[()=>L(Q[`chat.assistant_dock.choose_conversation`]),()=>L(Q[`chat.assistant_dock.choose_conversation_hint`])]),S(e,n)},o=e=>{var t=dc(),n=B(t),r=z(n,!0),i=I(n,2),a=z(i,!0),o=I(i,2);Y(o,{type:`button`,onclick:xe,children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.start_new_conversation`])]),S(e,n)},$$slots:{default:!0}}),V((e,t)=>{H(n,`id`,`${G}-empty-title`),l(r,e),l(a,t)},[()=>L(Q[`chat.assistant_dock.start_conversation`]),()=>L(Q[`chat.assistant_dock.start_conversation_hint`])]),S(e,t)},c=e=>{var t=fc(),n=B(t),r=z(n,!0),i=I(n,2),a=z(i,!0);V((e,t)=>{H(n,`id`,`${G}-empty-title`),l(r,e),l(a,t)},[()=>L(Q[`chat.assistant_dock.no_conversations`]),()=>L(Q[`chat.assistant_dock.no_conversations_hint`])]),S(e,t)};t(r,e=>{O()&&R.threads.length>0?e(i):a.transport.createThread?e(o,1):e(c,-1)}),s(n),V(()=>H(n,`aria-labelledby`,`${G}-empty-title`)),S(e,n)};t(c,e=>{D()===`single`?e(u):!R.activeThreadId&&R.threadsLoading?e(m,1):!R.activeThreadId&&!R.error&&e(g,2)});var b=I(c,2),w=t=>{var n=mc();p(n,21,x,e=>e.prompt,(t,n)=>{Y(t,{variant:`secondary`,get disabled(){return N()},onclick:()=>{Ce(e(n).prompt,[]).catch(()=>{})},children:(t,r)=>{v();var i=d();V(()=>l(i,e(n).label)),S(t,i)},$$slots:{default:!0}})}),s(n),V(e=>H(n,`aria-label`,e),[()=>L(Q[`chat.assistant_dock.conversation_starters`])]),S(t,n)},T=n(()=>R.activeThreadId&&!R.threadsLoading&&!R.messages.some(e=>e.role===`user`||e.role===`tool`)&&R.pendingSends.length===0&&x().length>0);t(b,t=>{e(T)&&t(w)});var E=I(b,2);p(E,21,()=>R.messages,e=>e.id,(r,i)=>{let c=n(()=>e(i).role===`tool`?a.toolResultComponent?.(e(i)):void 0),u=n(()=>e(i).role===`assistant`?ts(e(i)):null);var d=Cc(),m=P(d),g=t=>{var n=hc(),r=P(n);_(r,()=>e(c),(t,n)=>{n(t,{get message(){return e(i)}})}),s(n),S(t,n)},v=r=>{{let a=r=>{var a=xc(),o=B(a),c=t=>{f(t,()=>e(i),()=>!1)},u=t=>{var n=tc(),r=z(n,!0);V(()=>l(r,e(i).content)),S(t,n)};t(o,t=>{e(i).role===`assistant`?t(c):t(u,-1)});var d=I(o,2),m=r=>{var a=bc();p(a,21,()=>e(i).attachments,e=>e.id,(r,i)=>{let a=n(()=>Is(e(i).url));var o=yc(),c=P(o),u=t=>{var n=gc(),r=z(n,!0);V(()=>{H(n,`href`,e(a)),l(r,e(i).name)}),S(t,n)},d=t=>{var n=_c(),r=z(n,!0);V(()=>l(r,e(i).name)),S(t,n)};t(c,t=>{e(a)?t(u):t(d,-1)});var f=I(c,2),p=t=>{var n=vc(),r=z(n,!0);V(e=>l(r,e),[()=>y(e(i).size)]),S(t,n)};t(f,t=>{e(i).size!==void 0&&t(p)}),s(o),S(r,o)}),s(a),V(e=>H(a,`aria-label`,e),[()=>L(Q[`chat.assistant_dock.attachments`])]),S(r,a)};t(d,t=>{e(i).attachments&&e(i).attachments.length>0&&t(m)}),S(r,a)},o=n(()=>h(e(i).role)),c=n(()=>e(i).role===`user`);X(r,{get variant(){return e(o)},get own(){return e(c)},children:a,$$slots:{default:!0}})}};t(m,t=>{e(c)?t(g):t(v,-1)});var b=I(m,2),x=t=>{var r=hc(),a=P(r);{let t=n(()=>R.answeredQuestions[`${e(i).id}:${e(u).id}`]??null),r=n(()=>e(i).id===R.messages.at(-1)?.id);hs(a,{get question(){return e(u)},get answered(){return e(t)},get autofocus(){return e(r)},onsubmit:t=>Se(e(i).id,e(u),t)})}s(r),S(t,r)};t(b,t=>{e(u)&&t(x)});var C=I(b,2),w=t=>{var n=Sc(),r=P(n);o(r,()=>a.toolCall,()=>e(i)),s(n),S(t,n)};t(C,t=>{a.toolCall&&e(i).toolCallData!=null&&t(w)}),s(d),V(()=>H(d,`data-role`,e(i).role)),S(r,d)}),s(E);var k=I(E,2),A=e=>{var t=wc(),n=P(t);X(n,{variant:`agent`,own:!1,children:e=>{f(e,()=>({id:`assistant-dock-streaming`,threadId:R.activeThreadId??``,role:`assistant`,content:R.streamingText,createdAt:``}),()=>!0)},$$slots:{default:!0}}),s(t),V(e=>H(t,`aria-label`,e),[()=>L(Q[`chat.assistant_dock.reply_in_progress`])]),S(e,t)};t(k,e=>{R.streamingText&&e(A)}),S(r,i)};t(Be,e=>{E()===`full`&&e(Ve)});var He=I(Be,2);p(He,17,()=>R.toolRequests.filter(e=>e.status===`waiting`),e=>e.id,(n,r)=>{var i=Dc(),a=P(i),o=z(a,!0),c=I(a,2),u=z(c,!0),f=I(c,2),p=e=>{var t=Ec(),n=z(t,!0);V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.tool_request_destructive`])]),S(e,t)};t(f,t=>{e(r).effect===`destructive`&&t(p)});var m=I(f,2),h=P(m),g=z(h,!0),_=I(h,2),y=z(_,!0);s(m);var b=I(m,2),x=P(b);Y(x,{type:`button`,size:`sm`,onclick:()=>R.approveToolRequest(e(r).id),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.tool_request_allow`])]),S(e,n)},$$slots:{default:!0}});var C=I(x,2);Y(C,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>R.declineToolRequest(e(r).id),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.tool_request_decline`])]),S(e,n)},$$slots:{default:!0}}),s(b),s(i),V((t,n,a,s)=>{H(i,`aria-label`,t),l(o,n),l(u,e(r).description||e(r).name),l(g,a),l(y,s)},[()=>L(Q[`chat.assistant_dock.tool_request_title`]),()=>L(Q[`chat.assistant_dock.tool_request_title`]),()=>L(Q[`chat.assistant_dock.tool_request_details`]),()=>ne(e(r).args)]),S(n,i)});var Ue=I(He,2);Io(Ue,{get choices(){return R.choices},onchoose:(e,t)=>void R.chooseOption(e,t),ondismiss:e=>R.dismissChoices(e),onpreview:(e,t)=>void R.previewOption(e,t),oncommit:e=>void R.commitOption(e),oncancel:e=>R.cancelChoices(e)});var Z=I(Ue,2),We=r=>{var i=Ac();p(i,21,()=>[...R.actions.entries()],([e,t])=>e,(r,i)=>{var a=n(()=>b(e(i),2));let o=()=>e(a)[0],c=()=>e(a)[1];var u=kc(),f=P(u);{let t=n(()=>({toolName:c().request.actionId,toolCallId:o(),status:xs(c().status),error:c().error})),r=n(()=>c().applyResult??(c().status===`previewed`?c().previewResult:void 0));tr(f,{get toolCall(){return e(t)},get actionResult(){return e(r)},onconfirmaction:()=>Te(o()),onrejectaction:()=>R.rejectAction(o())})}var p=I(f,2),m=t=>{var r=Oc(),i=P(r),a=z(i,!0),u=I(i,2);{let t=n(()=>c().status===`applying`);Y(u,{type:`button`,size:`sm`,get disabled(){return e(t)},onclick:()=>Te(o()),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.action_check_again`])]),S(e,n)},$$slots:{default:!0}})}s(r),V(e=>l(a,e),[()=>L(Q[`chat.assistant_dock.action_outcome_unknown`])]),S(t,r)};t(p,e=>{c().outcomeUnknown&&e(m)}),s(u),S(r,u)}),s(i),S(r,i)};t(Z,e=>{R.actions.size>0&&e(We)});var Ge=I(Z,2),Ke=t=>{var n=jc(),r=P(n),i=z(r,!0),a=I(r,2);p(a,17,()=>R.pendingSends.filter(e=>e.status===`stale`),e=>e.clientRequestId,(t,n)=>{Y(t,{type:`button`,size:`sm`,onclick:()=>R.retry(e(n).clientRequestId),children:(t,r)=>{v();var i=d();V(e=>l(i,e),[()=>L(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),S(t,i)},$$slots:{default:!0}})}),s(n),V(e=>l(i,e),[()=>L(Q[`chat.assistant_dock.taking_longer`])]),S(t,n)},qe=n(()=>R.pendingSends.some(e=>e.status===`stale`));t(Ge,t=>{e(qe)&&t(Ke)});var Je=I(Ge,2),Ye=t=>{var n=Mc(),r=P(n),i=z(r,!0),a=I(r,2);p(a,17,()=>R.pendingSends.filter(e=>e.status===`failed`),e=>e.clientRequestId,(t,n)=>{Y(t,{type:`button`,size:`sm`,onclick:()=>R.retry(e(n).clientRequestId),children:(t,r)=>{v();var i=d();V(e=>l(i,e),[()=>L(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),S(t,i)},$$slots:{default:!0}})}),s(n),V(e=>l(i,e),[()=>L(Q[`chat.assistant_dock.send_failed`])]),S(t,n)},Xe=n(()=>R.pendingSends.some(e=>e.status===`failed`));t(Je,t=>{e(Xe)&&t(Ye)}),s(ze);var Ze=I(ze,2),Qe=e=>{var n=Nc(),r=P(n),i=z(r,!0),a=I(r,2),o=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>R.cancel(),children:(e,t)=>{v();var n=d();V(e=>l(n,e),[()=>L(Q[`chat.assistant_dock.stop`])]),S(e,n)},$$slots:{default:!0}})};t(a,e=>{R.status.cancellable&&e(o)}),s(n),V(()=>l(i,R.status.label)),S(e,n)};t(Ze,e=>{R.status.state===`working`&&e(Qe)});var $e=I(Ze,2),et=r=>{var i=Fc(),o=P(i),c=t=>{var r=Pc(),i=P(r);{let t=n(()=>R.selectedModel??R.models[0].id);Go(i,{get models(){return R.models},get value(){return e(t)},onchange:e=>R.setSelectedModel(e)})}s(r),S(t,r)};t(o,e=>{R.models.length>0&&e(c)});var l=I(o,2);W(l,()=>e(oe),t=>{var r=()=>R.draft,i=e=>R.setDraft(e);{let o=n(()=>a.transport.uploadAttachment?we:void 0),s=n(()=>!R.activeThreadId||N());ee(Uo(t,{get value(){return r()},set value(e){i(e)},onsend:Ce,get onupload(){return e(o)},get disabled(){return e(s)},get placeholder(){return a.composerPlaceholder},get dictation(){return a.dictation},get transcribe(){return a.transcribe},get dictationMode(){return a.dictationMode},get handsFreeCapture(){return a.handsFreeCapture},get handsFreeVad(){return a.handsFreeVad},get sendOnPause(){return F()},get sendOnPauseMs(){return a.sendOnPauseMs},get speaking(){return te()}}),e=>U(J,e,!0),()=>e(J))}}),s(i),S(r,i)};t($e,e=>{E()===`full`&&e(et)}),s(Ae),s(De),s(Ee),V(()=>H(De,`data-threads-open`,e(le)||void 0)),S(i,Ee),r()}Z.registerModule(zn),Z.register(`@happyvertical/smrt-chat`,`chat-layout`,ji),Z.register(`@happyvertical/smrt-chat`,`room-list`,ki),Z.register(`@happyvertical/smrt-chat`,`room-header`,Zi),Z.register(`@happyvertical/smrt-chat`,`member-list`,Ui),Z.register(`@happyvertical/smrt-chat`,`message-list`,Ta),Z.register(`@happyvertical/smrt-chat`,`message-item`,xa),Z.register(`@happyvertical/smrt-chat`,`message-input`,ta),Z.register(`@happyvertical/smrt-chat`,`thread-panel`,ka),Z.register(`@happyvertical/smrt-chat`,`chat-tabs`,So),Z.register(`@happyvertical/smrt-chat`,`chat-tab`,ho),Z.register(`@happyvertical/smrt-chat`,`chat-tab-list`,bo),Z.register(`@happyvertical/smrt-chat`,`mini-chat`,co),Z.register(`@happyvertical/smrt-chat`,`agent-chat`,hr),Z.register(`@happyvertical/smrt-chat`,`agent-selector`,br),Z.register(`@happyvertical/smrt-chat`,`agent-session-panel`,Or),Z.register(`@happyvertical/smrt-chat`,`tool-call-display`,tr),Z.register(`@happyvertical/smrt-chat`,`heard-captions`,Ir),Z.register(`@happyvertical/smrt-chat`,`spoken-captions`,Br),Z.register(`@happyvertical/smrt-chat`,`avatar`,Bn),Z.register(`@happyvertical/smrt-chat`,`file-upload`,Fa),Z.register(`@happyvertical/smrt-chat`,`link-preview`,Ba),Z.register(`@happyvertical/smrt-chat`,`mention-autocomplete`,Ua),Z.register(`@happyvertical/smrt-chat`,`message-bubble`,X),Z.register(`@happyvertical/smrt-chat`,`reaction-picker`,na),Z.register(`@happyvertical/smrt-chat`,`read-receipts`,Qa),Z.register(`@happyvertical/smrt-chat`,`typing-indicator`,he),Z.register(`@happyvertical/smrt-chat`,`user-presence`,to),Z.register(`@happyvertical/smrt-chat`,`room-create-dialog`,Wr),Z.register(`@happyvertical/smrt-chat`,`search-messages`,ti),Z.register(`@happyvertical/smrt-chat`,`caption-overlay`,Mr),Z.register(`@happyvertical/smrt-chat`,`helper-control-panel`,pi);function Rc(e,t=[],n=!1,r=!1,i=[],a=[]){let o=e.map(e=>e.id),s={type:`array`,items:{enum:o},maxItems:o.length},c={reply:{type:`string`,maxLength:200},add:s,remove:s};return t.length&&(c.cookbook={enum:[...t.map(e=>e.id),null]}),n&&(c.settings={type:`object`,properties:{currency:{type:`string`,pattern:`^[A-Z]{3}$`},taxRate:{type:`number`,minimum:0,maximum:100},paymentTerms:{type:`string`,maxLength:40},pricesIncludeTax:{type:`boolean`},taxRounding:{enum:[`line`,`document`]}},additionalProperties:!1}),r&&(c.theme={type:`object`,properties:{preset:{enum:[...ze]},primary:{type:`string`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`]},borderRadius:{enum:[...Be]},density:{enum:[...He]},contrast:{enum:[...Ue]}},additionalProperties:!1}),i.length&&(c.open={enum:[...i,null]}),a.length&&(c.report=Qe(a)),{type:`object`,properties:c,required:[`reply`,`add`,`remove`],additionalProperties:!1}}function zc(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();Ke.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 typeof n.pricesIncludeTax==`boolean`&&(t.pricesIncludeTax=n.pricesIncludeTax),(n.taxRounding===`line`||n.taxRounding===`document`)&&(t.taxRounding=n.taxRounding),t}function Bc(e){let t={};if(!e||typeof e!=`object`||Array.isArray(e))return t;let n=e;typeof n.preset==`string`&&ze.includes(n.preset)&&(t.preset=n.preset);let r=Ie(n.primary);return r&&(t.primary=r),(n.colorScheme===`light`||n.colorScheme===`dark`||n.colorScheme===`system`)&&(t.colorScheme=n.colorScheme),Be.includes(n.borderRadius)&&(t.borderRadius=n.borderRadius),He.includes(n.density)&&(t.density=n.density),Ue.includes(n.contrast)&&(t.contrast=n.contrast),t}function Vc(e){return e.replace(/<think>[\s\S]*?<\/think>/gi,``).replace(/<think>[\s\S]*$/i,``).trim()}function Hc(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 Uc(e,t,n=[],r={}){let i=new Set(t.map(e=>e.id)),a=Vc(e),o=e=>({reply:e,add:[],remove:[],cookbook:null,settings:{},theme:{}}),s=/^[\s`]*[{[]/.test(a)||/"reply"\s*:/.test(a),c=()=>o(s?Hc(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?de(u.sampleContext):void 0,g=r.commands?Wc(u.commands):[],_=r.reports?$e(u.report):null;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:zc(u.settings),theme:Bc(u.theme),...g.length?{commands:g}:{},...h?{sampleContext:h}:{},...typeof u.open==`string`&&r.sections?.includes(u.open)?{open:u.open}:{},..._?{report:_}:{}}}function Wc(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 Gc(e,t){let n=e=>t.find(t=>t.id===e),r=e=>n(e)?.label??e,i=e=>e.map(r).join(`, `),a=[];e.added.length&&a.push(`Added ${i(e.added)}.`);let o=e.added.filter(e=>n(e)?.nav?.length===0);return o.length&&a.push(`${i(o)} ${o.length===1?`adds`:`add`} nothing to the menu.`),e.removed.length&&a.push(`Removed ${i(e.removed)}.`),e.kept.length&&a.push(`Kept ${i(e.kept)} (needed).`),a.join(` `)}function Kc(e,t,n,r){if(!n.length||n.some(e=>!e.ok)||!n.some(e=>e.ok&&e.receipt.changed))return``;let i=t.sections.filter(e=>!e.hidden).find(e=>e.items.some(e=>!e.hidden)),a=i?.items.find(e=>!e.hidden),o=e.recipes.length===0&&t.recipes.length>0;return[o&&i&&a?`This is an interactive demo with fictional sample records. Open ${i.label} → ${a.label}, select a record to edit it, or use New to add your own.`:``,o&&a?`What else would you like your app to do?`:``].filter(Boolean).join(` `)}var qc={name:10,synonym:6,keyword:4},Jc=1.5,Yc=new Set([`a`,`an`,`and`,`the`,`of`,`for`,`to`,`in`,`on`,`or`,`general`,`simple`]),Xc=[`car`,`vehicle`,`metal`,`steel`,`gates`,`studio`,`classes`,`members`,`shop`,`order`,`item`,`material`,`customer`,`sales`,`stock`,`schedule`,`terms`];function Zc(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 Qc(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(Zc).join(` `)}var $c=new Set(Xc.map(Qc)),el={"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 tl(e,t){let n=Qc(e);if(!n)return null;let r=n.split(` `);return r.length===1&&Yc.has(n)?null:{text:n,tier:t,weak:t!==`name`&&r.every(e=>$c.has(e)),words:r.length}}function nl(e,t,n){let r=tl(t,n);if(!r)return;let i=e.terms.find(e=>e.text===r.text);i?qc[r.tier]>qc[i.tier]&&(i.tier=r.tier,i.weak=r.weak):e.terms.push(r)}function rl(e){return Qc(e).split(` `).filter(e=>e&&!Yc.has(e))}var il=[`theme`,`colour`,`color`,`colour scheme`,`dark mode`,`light mode`,`brand`,`branding`,`style`,`warmer`,`cooler`,`font`];function al(e,t=[],n={}){let r=[];for(let t of e){let e={kind:`recipe`,id:t.id,terms:[],exact:Qc(t.label)};nl(e,t.label,`name`),nl(e,(t.id.split(`.`).pop()??``).replace(/[-_]/g,` `),`name`);for(let n of rl(t.label))nl(e,n,`synonym`);for(let n of t.synonyms)nl(e,n,`synonym`);for(let n of el[t.id]??[])nl(e,n,`keyword`);r.push(e)}for(let e of t){let t={kind:`cookbook`,id:e.id,terms:[],exact:Qc(e.name)};nl(t,e.name,`name`),nl(t,e.id.replace(/[-_]/g,` `),`name`);for(let n of e.keywords??[])nl(t,n,`keyword`);r.push(t)}if(n.theme){let e={kind:`theme`,id:`theme`,terms:[]};for(let t of il)nl(e,t,`keyword`);r.push(e)}return{entries:r}}function ol(e,t){let n=Qc(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+=qc[n.tier]*(n.words>1?Jc: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 sl=5,cl=2,ll=[{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:`give me a summary of all sales last month`,report:`invoices`,answer:{reply:`Here is a summary of last month.`,add:[],remove:[],report:{source:`invoices`,range:`last month`}}},{says:`show me a report of sales by month`,report:`invoices`,answer:{reply:`Here are sales by month.`,add:[],remove:[],report:{source:`invoices`,bucket:`month`}}},{says:`hello`,answer:{reply:`Hi. What kind of business is it?`,add:[],remove:[]}}];function ul(e,t,n,r,i=new Set){return ll.filter(a=>(a.recipes??[]).every(t=>e.has(t))&&(!a.cookbook||t.has(a.cookbook))&&(!a.settings||n)&&(!a.theme||r)&&(!a.report||i.has(a.report))).map(e=>`"${e.says}" -> ${JSON.stringify(e.answer)}`)}var dl=`reports.runtime`;function fl(e){return`${Number((e*100).toFixed(4))}%`}function pl(e,t,n=[],r,i,a,o=[],s=[],c){let l=i!==void 0,u=(i??[]).filter(e=>e.kind===`recipe`).slice(0,sl).map(e=>e.id),d=(i??[]).filter(e=>e.kind===`cookbook`).slice(0,cl).map(e=>e.id),f=new Set([...u,...t]),p=new Set(d),m=e=>{let t=e.synonyms.length?` Also called: ${e.synonyms.join(`, `)}.`:``;return`- ${e.id}: ${e.label}. ${e.summary}${t}`},h=[`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.`,`Use stated needs/setup and catalog; no invented features/package tours.`];n.length&&h.push(`"cookbook": id only if their business clearly fits, else null.`),r&&h.push(`"settings": only what they state: currency (ISO), taxRate (percent), paymentTerms, pricesIncludeTax (true when their prices include tax), taxRounding (line|document); else omit, and do not mention them otherwise.`),a&&h.push(`"theme": only if they ask for a look: {"preset": material|glass|studio|smrt|happyvertical} or {"primary": "#rrggbb"}, optional "colorScheme": light|dark, "borderRadius": none|sm|md|lg|xl|full, "density": comfortable|touch, "contrast": auto|standard|more; else omit.`),o.length&&h.push(`"open": a menu section id only when they ask to see or go to one, else null.`),s.length&&h.push(`"report": only when they ask for a report, summary or totals of their records: {"source": a report source id, optional "measures": [{"fn": count|sum|avg|min|max, "field"}], "groupBy": a field (not a time word), "bucket": minute|hour|day|week|month|quarter|year for "by month"/"weekly"/"over time", "range": their period in words ("last month", "last 90 days", "Q3"), "filters": [{"field", "op": eq|ne|gt|gte|lt|lte|contains, "value"}]}; a summary needs only source and range; money values are in currency units (500 for $500). Else omit.`),h.push(`"reply" never claims anything beyond add, remove, cookbook, settings, theme, open${s.length?` and report`:``}: the app reports what changed.`),s.length?h.push(`A report or summary of their data is "report", never a recipe to add or a section to open: the app turns on ${dl} (Reports), builds the report, shows a preview and saves it only when they approve.`):e.some(e=>e.id===`reports.runtime`)&&h.push(`A report or summary of their data needs ${dl} (Reports): add it, and open only its section, never another. You cannot build the report itself here.`);let g=ul(new Set(e.map(e=>e.id)),new Set(n.map(e=>e.id)),!!r,!!a,new Set(s.map(e=>e.id)));g.length&&h.push(``,`Examples:`,...g);let _=!!a&&(i??[]).some(e=>e.kind===`theme`);if(u.length||d.length||_){let e=[];_&&e.push(`theming (use "theme")`),d.length&&e.push(`cookbook ${d.join(`, `)}`),u.length&&e.push(`recipes ${u.join(`, `)}`),h.push(``,`Looks relevant: ${e.join(`; `)}.`)}let v=e=>`- ${e.id}: ${e.name}. ${e.summary}`,y=e=>e.join(`, `),b=e.filter(e=>!l||f.has(e.id)),x=l?e.filter(e=>!f.has(e.id)):[];if(h.push(``),b.length&&h.push(`Recipes:`,...b.map(m)),x.length&&h.push(`Other recipes: ${y(x.map(e=>`${e.id} (${e.label})`))}.`),n.length){let e=n.filter(e=>!l||p.has(e.id)),t=l?n.filter(e=>!p.has(e.id)):[];h.push(``),e.length&&h.push(`Cookbooks:`,...e.map(v)),t.length&&h.push(`Other cookbooks: ${y(t.map(e=>`${e.id} (${e.name})`))}.`)}if(h.push(``,`Currently on: ${t.length?t.join(`, `):`none`}.`),r){let e=r.paymentTerms?`, terms ${r.paymentTerms}`:``,t=r.pricesIncludeTax?`, prices include tax`:`, prices exclude tax`,n=r.taxRounding===`document`?`, tax rounded per document`:``;h.push(`Settings: currency ${r.currency}, tax ${fl(r.taxRate)}${e}${t}${n}.`)}return a&&h.push(`Theme: ${Re(a.current)}.`),o.length&&h.push(`Menu: ${o.map(e=>`${e.id} (${e.label})`).join(`, `)}.`),s.length&&h.push(`Report sources: ${s.map(e=>`${e.id} (${e.label})`).join(`, `)}.`),c&&h.push(``,`Pending report question: "${c.prompt}" Options: ${c.options.join(`, `)}. If they answer it, set "report" with source "${c.source}" and what they chose (a grouping as "groupBy", a time grouping as "bucket").`),h.join(`
|
|
29
|
-
`)}var ml=`Plan your app`,hl=`What would you like to build?`,gl=400,_l=e=>Object.keys(e).length>0;function vl(e,t,n){let r=e.run({name:t,input:n});return r.ok?{summary:r.receipt.summary,undoId:r.receipt.undoId}:{summary:``}}var yl=(e,t,n)=>vl(e,t,n).summary;function bl(e,t){let n=[],r=[];for(let i of t){let t=e.run(i);if(r.push(t),!t.ok){n.push(`The server's ${i.name} was refused: ${t.error.message}`);break}t.receipt.summary&&n.push(t.receipt.summary)}return{summary:n.join(` `),results:r}}var xl=`Nothing in the app changed.`,Sl=`Building a report needs the planner app and its sample records; it will live under Reports.`,Cl=`reports.runtime.define`;function wl(e,t){return{kind:Ko,id:t,prompt:e.prompt,fields:[{name:e.field,label:e.label,type:`choice`,options:e.options.map(({value:e,label:t,keywords:n})=>({value:e,label:t,...n?{keywords:n}:{}})),default:e.default,required:!0}]}}function Tl(e,t){let n={...e};for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=r;return n}var El=new Set(`a.an.and.the.by.per.of.in.on.for.to.with.please.use.i.want.it.its.group.grouped.show.me.just.ok.okay.yes.that.one.option.last.this.past.previous.current.day.week.month.quarter.year.today.yesterday.ytd.date.time`.split(`.`)),Dl=e=>e.toLowerCase().replace(/([a-z])([A-Z])/g,`$1 $2`).split(/[^a-z0-9]+/).filter(Boolean).map(e=>e.length>3&&e.endsWith(`s`)?e.slice(0,-1):e);function Ol(e,t,n){let r=ss(t,n);if(!r)return;let i=new Set(e.options.flatMap(e=>Dl([e.label,e.value,...e.keywords??[]].join(` `)))),a=et(n,new Date)!==null;if(Dl(n).filter(e=>!i.has(e)&&!El.has(e)&&!(a&&(/^\d+$/.test(e)||/^q[1-4]$/.test(e)))).length)return;let o=r[e.field],s=Array.isArray(o)?o[0]:o;return e.options.find(e=>e.value===s)}var kl=(e,t)=>e.field===t.field&&e.prompt===t.prompt&&e.options.map(e=>e.value).join(`|`)===t.options.map(e=>e.value).join(`|`);function Al(e,t){return`Here is a preview of ${e} (${t} ${t===1?`row`:`rows`}). Approve it to save it under Saved reports.`}var jl=`item:reports:RuntimeReport`;function Ml(e,t,n){return t||(n||e.trim().endsWith(`?`)?e:[e,xl].filter(Boolean).join(` `))}function Nl(e,t,n){let r=n.find(e=>e.id===t)?.label??t,i=e.run({name:`focus`,input:{section:t}});return i.ok?`Opened ${r}.`:`Could not open ${r}: ${i.error.message}`}function Pl(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 Fl(e){let t=e.now??(()=>Date.now()),n=0,r=e=>`${e}-${++n}`,i={id:`planner`,title:ml,isResolved:!1,messageCount:0,lastMessageAt:null},a=[],o=new Map,s=new Set,c=new Set,l=!1,u=!1,d=0,f=()=>structuredClone(a),p=()=>{try{e.conversationStorage?.setItem(`smrt-planner:conversation:v1`,JSON.stringify({version:1,messages:a,sent:u,counter:n})),e.conversationStorage?.setItem(`smrt-planner:conversation-seed:v1`,JSON.stringify([...s]))}catch{}},m=()=>{p();for(let e of c)e(f())},h=()=>typeof e.cookbooks==`function`?e.cookbooks():e.cookbooks??[],g=null,_=e=>e.epoch===d&&g===e.controller,v=e=>_(e)&&!e.controller.signal.aborted,y=null,b=0;async function x(t,n,r,i,a){let o=await t.define(n,r);if(!a())return{added:[],text:`Stopped.`};if(o.ok)return y=null,{added:e.store.ids.includes(`reports.runtime`)?[]:Pl(E,{add:[dl],remove:[]}).added,ref:{name:Cl,phase:`preview`,result:o.proposal},text:Al(o.proposal.spec.title,o.proposal.preview.rowCount)};let s=o.followUp;if(!s)return y=null,{added:[],text:o.question};if(i&&kl(i,s)){let e=s.options.find(e=>e.value===s.default);if(e){let i=await x(t,Tl(n,e.apply),r,s,a);return a()?{...i,text:`I went with ${e.label}. ${i.text}`}:{added:[],text:`Stopped.`}}}let c=wl(s,`report-${++b}`);return y={intent:n,followUp:s,question:c,text:r},{added:[],ref:c,text:s.prompt}}function S(e,t){let n=t[e.field],r=Array.isArray(n)?n[0]:n;return e.options.find(e=>e.value===r)}async function C(t,n,r,i){let a=y;if(!a)return{content:``};let o=await x(t,Tl(a.intent,n.apply),`${a.text} ${r}`.trim(),a.followUp,i);if(!i())return{content:`Stopped.`};let s=[Gc({added:o.added,removed:[],kept:[]},e.recipes),o.text].filter(Boolean).join(` `);return s&&e.onReply?.(s),{content:s,refs:o.ref}}let w=()=>e.recipes.some(e=>e.id===`reports.runtime`)?e.reports?.()??null:null,T=(e,n,o,s,c=!0)=>{let l={id:r(`m`),threadId:i.id,content:n,role:e,createdAt:new Date(t()),...o?{clientRequestId:o}:{}};return s&&(l.toolCallData=s),a.push(l),i.messageCount=a.length,i.lastMessageAt=l.createdAt,c&&m(),l},E=e.controller??qe({store:e.store,settings:e.settings,theme:e.theme}),D=T(`assistant`,hl,void 0,void 0,!1);try{let t=e.conversationStorage?.getItem(`smrt-planner:conversation:v1`),r=t&&t.length<=2e6?JSON.parse(t):null;if(r?.version===1&&Array.isArray(r.messages)&&r.messages.length<=2e3&&r.messages.every(e=>e&&typeof e.id==`string`&&[`user`,`assistant`].includes(e.role)&&typeof e.content==`string`&&e.content.length<=1e5)&&Number.isSafeInteger(r.counter)&&r.counter>=r.messages.length&&typeof r.sent==`boolean`){a.splice(0,a.length,...structuredClone(r.messages)),n=r.counter,u=r.sent,D=a[0]??T(`assistant`,`What would you like to build?`);let t=JSON.parse(e.conversationStorage?.getItem(`smrt-planner:conversation-seed:v1`)??`[]`);if(Array.isArray(t)&&t.length<=2e3&&t.every(e=>typeof e==`string`&&e.length<=200))for(let e of t)s.add(e)}}catch{}async function O(t,n){let r=o.get(t.clientRequestId);if(r)return r;if(l)throw Error(`The assistant is still answering.`);u=!0,l=!0;let i={epoch:d,controller:new AbortController};g=i.controller;try{let r=T(`user`,t.content,t.clientRequestId),a=null;if(!n&&e.hostTurn){try{a=await e.hostTurn({userMessage:structuredClone(r),conversation:f(),signal:i.controller.signal})}catch{a={content:`Your request could not be confirmed. Please retry the same request.`}}if(!_(i))return{inProgress:!1};i.controller.signal.aborted&&(a={content:`Stopped.`})}if(a??=await k(t.content,i),!_(i))return{inProgress:!1};let s={inProgress:!1,userMessage:r,assistantMessage:T(`assistant`,a.content,void 0,a.refs)};return o.set(t.clientRequestId,s),s}finally{_(i)&&(g=null,l=!1,m())}}async function k(t,n){let r=y?w():null;if(y&&r){let e=Ol(y.followUp,y.question,t);if(e)return C(r,e,t,()=>v(n))}let i=e.model();if(!i)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.`};try{let r=h(),o=al(e.recipes,r,{theme:!!e.theme}),s=a.filter(e=>e!==D).slice(0,-1).slice(-6).map(e=>({role:e.role,content:e.content})),c=ol(o,t),l=e.menu?.()??[],u=w(),d=u?.sources()??[],f=y,p=(typeof e.acceptCommands==`function`?e.acceptCommands():e.acceptCommands)?E.snapshot().revision:void 0,m=await i.message(t,{history:[{role:`system`,content:pl(e.recipes,e.store.ids,r,e.settings?.read(),c,e.theme?{current:e.theme.read()}:void 0,l,d.map(({id:e,label:t})=>({id:e,label:t})),f?{source:f.intent.source,prompt:f.followUp.prompt,options:f.followUp.options.map(e=>e.label)}:void 0)},...s],responseSchema:Rc(e.recipes,r,!!e.settings,!!e.theme,l.map(e=>e.id),d.map(e=>e.id)),temperature:0,maxTokens:gl,signal:n.controller.signal});if(!v(n))return{content:`Stopped.`};if(p!==void 0&&E.snapshot().revision!==p)return{content:`The app changed while I was preparing that reply. I have kept your newer changes and applied nothing from this reply. Please try again.`};let g=Uc(m,e.recipes,r,{commands:typeof e.acceptCommands==`function`?e.acceptCommands():e.acceptCommands,sections:l.map(e=>e.id),reports:d.length>0});g.report&&(g.add=[],g.remove=[],delete g.open);let _=E.snapshot(),S=Pl(E,g),C=e.settings&&_l(g.settings)?yl(E,`set_settings`,g.settings):``,T=e.theme?.read(),O=e.theme&&_l(g.theme)?vl(E,`set_theme`,g.theme):null,k=O?.undoId&&e.themeUndos?e.themeUndos.record(T,O.undoId):void 0,A=(g.commands??[]).length?bl(E,g.commands??[]):{summary:``,results:[]};g.sampleContext&&A.results.length===g.commands?.length&&A.results.every(e=>e.ok)&&A.results.some(e=>e.ok&&e.receipt.changed)&&J(g.sampleContext);let j=A.summary,ee=Kc(_,E.snapshot(),A.results,e.recipes),M=c.some(e=>e.kind===`recipe`&&e.id===`reports.runtime`),N=E.snapshot().sections.find(e=>e.items.some(e=>e.id===jl))?.id,P=g.open&&(!M||g.open===N)?g.open:void 0,F=P?Nl(E,P,l):``,I=``,te,L=null,R=t;f&&g.report?(L=Tl(f.intent,g.report),R=`${f.text} ${t}`):g.report&&(L=g.report);let z=S.added.length>0||S.removed.length>0||!!C||!!O?.summary||!!j||!!F||!!g.cookbook;if(u&&L){let e=await x(u,L,R,f?.followUp??null,()=>v(n));if(!v(n))return{content:`Stopped.`};S.added.push(...e.added),I=e.text,te=e.ref}else if(u&&f&&!z){let e=f.followUp.options.find(e=>e.value===f.followUp.default);if(e){let t=await x(u,Tl(f.intent,e.apply),f.text,f.followUp,()=>v(n));if(!v(n))return{content:`Stopped.`};S.added.push(...t.added),I=`I went with ${e.label}. ${t.text}`,te=t.ref}}else f&&(y=null);let ne=[Gc(S,e.recipes),C,O?.summary??``,j,F].filter(Boolean).join(` `);if((M||S.added.includes(`reports.runtime`))&&!g.report&&!f&&!F&&!S.removed.length){let e=u?Ye(d):null;if(e){let n=wl(e,`report-${++b}`);y={intent:{source:``},followUp:e,question:n,text:t},I=e.prompt,te=n}else I=u?Ze(d):Sl}let re=[ne,I].filter(Boolean).join(` `),ie=c.find(e=>e.kind===`cookbook`&&e.confidence===`strong`)?.id,B=g.cookbook??(ie&&e.offers?.engaged?.()===!1?ie:null),ae=B?e.offers?.offer(B)??void 0:void 0,oe=ae?r.find(e=>e.id===B):void 0,V=[Ml(g.reply||(oe?`Set up ${oe.name}?`:``),re,!!ae),ee].filter(Boolean).join(` `);V&&e.onReply?.(V);let se=[ae,k,te].filter(Boolean);return{content:V,refs:se.length>1?se:se[0]}}catch(e){return v(n)?{content:`Sorry, the model could not answer: ${e instanceof Error?e.message:String(e)}`}:{content:`Stopped.`}}}return{conversation:f,get resetRevision(){return d},get busy(){return l},subscribeConversation(e){return c.add(e),e(f()),()=>c.delete(e)},seed(e){if(!e||typeof e.id!=`string`||!e.id.trim()||!Array.isArray(e.messages)||e.messages.some(e=>!e||![`user`,`assistant`].includes(e.role)||typeof e.content!=`string`)||s.has(e.id)||l||u)return!1;s.add(e.id);for(let t of e.messages)T(t.role,t.content,void 0,void 0,!1);return m(),!0},async listThreads(){return[i]},async createThread(){return i},async loadMessages(){return[...a]},sendMessage(e){return O(e,!1)},sendHostMessage(e){return O(e,!0)},reset(){d+=1,g?.abort(),g=null,y=null,a.splice(0),o.clear(),s.clear(),u=!1,l=!1,n=0,D=T(`assistant`,hl),m()},async answerQuestion(e){let t=o.get(e.clientRequestId);if(t)return t;if(l)throw Error(`The assistant is still answering.`);let n=w();if(!y||!n||y.question.id!==e.questionId)throw Error(`That question is no longer open. Ask again?`);let r=rs(y.question,e.values),i=r?S(y.followUp,r):void 0;if(!r||!i)throw Error(`Choose one of the options.`);u=!0,l=!0;let s={epoch:d,controller:new AbortController};g=s.controller;try{let t=a.find(t=>t.id===e.messageId);if(t){let n=t=>{let n=t;return n?.kind===`assistant-question`&&n.id===e.questionId?{...n,answer:r}:t};t.toolCallData=Array.isArray(t.toolCallData)?t.toolCallData.map(n):n(t.toolCallData)}let c=await C(n,i,``,()=>v(s));if(!_(s))return{inProgress:!1};let l={inProgress:!1,...t?{messages:[t]}:{},assistantMessage:T(`assistant`,c.content,void 0,c.refs)};return o.set(e.clientRequestId,l),l}finally{_(s)&&(g=null,l=!1,m())}},recordReportOutcome(e,t){for(let n of a){let r=Array.isArray(n.toolCallData)?n.toolCallData:[n.toolCallData];for(let n of r){let r=n;r?.name===`reports.runtime.define`&&r.result?.specHash===e&&(r.outcome=t)}}m()},async uploadAttachment(e){throw Error(`The assistant cannot take attachments (${e.name}).`)},abort(){g?.abort()}}}function Il(e,t){return/^qwen3/i.test(t)?{message:(t,n)=>e.message(`${t} /no_think`,n)}:e}var Ll=class{#e=A(`idle`);get status(){return e(this.#e)}set status(e){U(this.#e,e,!0)}#t=A(F({modelId:``,consented:[]}));get prefs(){return e(this.#t)}set prefs(e){U(this.#t,e,!0)}#n=A(F({progress:0,text:``}));get progress(){return e(this.#n)}set progress(e){U(this.#n,e,!0)}#r=A(``);get error(){return e(this.#r)}set error(e){U(this.#r,e,!0)}#i=A(`browser`);get mode(){return e(this.#i)}set mode(e){U(this.#i,e,!0)}#a=A(``);get remoteLabel(){return e(this.#a)}set remoteLabel(e){U(this.#a,e,!0)}transport;hostTurn;cookbookOffers=!0;offers=new Mn(nt);themeUndos;reports=null;loaded=null;chat=null;abort=null;loadGeneration=0;options;constructor(e){this.options=e,this.prefs=Fn(e.storage),this.status=(e.webgpu??xn)()?`idle`:`unsupported`,this.themeUndos=e.theme?new Rn(e.theme,e.controller):null,this.transport=Fl({model:()=>this.chat,conversationStorage:e.conversationStorage,hostTurn:async e=>this.hostTurn?.(e)??null,store:e.store,recipes:e.recipes,cookbooks:()=>this.cookbookOffers?tt:[],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.`:this.mode===`manual`?`Inference is off. 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),menu:e.menu,reports:()=>this.reports})}setMode(e){e!==this.mode&&this.unload(),this.mode=e,this.status=e===`browser`?(this.options.webgpu??xn)()?`idle`:`unsupported`:`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){qt(e)&&this.status!==`loading`&&(this.prefs={...this.prefs,modelId:e},In(this.options.storage,this.prefs))}async start(){if(this.status===`loading`||this.status===`unsupported`)return;let e=this.prefs.modelId;if(!qt(e))return;this.status=`loading`,this.error=``,this.progress={progress:0,text:`Starting`};let t=new AbortController,n=++this.loadGeneration;this.abort=t;try{let r=await An(e,e=>{this.progress=e},t.signal,this.options.host??kn);if(n!==this.loadGeneration||this.mode!==`browser`){r.dispose();return}this.loaded=r,this.prefs={...this.prefs,consented:[...new Set([...this.prefs.consented,e])]},In(this.options.storage,this.prefs),this.chat=Il(new wn({type:`webllm`,engine:r.engine,model:e}),e),this.status=`ready`}catch(e){if(n!==this.loadGeneration)return;t.signal.aborted?this.status=`idle`:(this.error=e instanceof Error?e.message:String(e),this.status=`error`)}finally{n===this.loadGeneration&&(this.abort=null)}}cancel(){this.abort?.abort()}unload(){this.loadGeneration+=1;let e=this.abort;this.abort=null,e?.abort(),this.transport.abort(),this.loaded?.dispose(),this.loaded=null,this.chat=null,this.status!==`unsupported`&&(this.status=`idle`)}},Rl=[{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}],zl=`moonshine-base`;function Bl(e){return Rl.find(t=>t.id===e)??Rl[0]}var Vl=`smrt-planner:voice:v1`;function Hl(e){try{let t=e?.getItem(Vl);if(t){let e=JSON.parse(t),n=e.local===!0,r=Rl.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:zl}}function Ul(e,t){try{e?.setItem(Vl,JSON.stringify(t))}catch{}}function Wl(e){return Hl(e).local}function Gl(e,t){Ul(e,{...Hl(e),local:t})}function Kl(e){return Hl(e).preferLocal}function ql(e){return Hl(e).model}function Jl(e,t,n){return e===`works`?`browser`:t&&n?`enable-cached`:`offer`}var Yl=class{#e=A(`checking`);get status(){return e(this.#e)}set status(e){U(this.#e,e,!0)}#t=A(!1);get cached(){return e(this.#t)}set cached(e){U(this.#t,e,!0)}#n=A(0);get progress(){return e(this.#n)}set progress(e){U(this.#n,e,!0)}#r=A(``);get error(){return e(this.#r)}set error(e){U(this.#r,e,!0)}#i=A(!1);get browserWorks(){return e(this.#i)}set browserWorks(e){U(this.#i,e,!0)}#a=A(!1);get preferLocal(){return e(this.#a)}set preferLocal(e){U(this.#a,e,!0)}#o=A(0);get size(){return e(this.#o)}set size(e){U(this.#o,e,!0)}#s=A(zl);get model(){return e(this.#s)}set model(e){U(this.#s,e,!0)}#c=A(!1);get preparing(){return e(this.#c)}set preparing(e){U(this.#c,e,!0)}#l=A(null);get dictation(){return e(this.#l)}set dictation(e){U(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??ct)();if(e!==this.generation)return;this.browserWorks=t===`works`,this.preferLocal=Kl(this.options.storage),this.model=ql(this.options.storage);let n=this.preferLocal&&t===`works`?`unreliable`:t;if(n===`works`){this.dictation=(this.options.browserSource??(()=>je({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,Jl(n,Wl(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;Gl(this.options.storage,!0),this.cached=!0;let r=Bl(this.model);this.dictation=(this.options.localSource??((e,t)=>je({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&&Rl.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,Ul(this.options.storage,{...Hl(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}},Xl=[`json_schema`,`json_object`,`none`],Zl=12e4;function Ql(e){try{let t=new URL(e.trim());if(t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password)return null;for(let e of t.searchParams.keys())if(/^(?:api[-_]?key|key|token|authorization|secret|password)$/i.test(e))return null;return`${t.origin}${t.pathname.replace(/\/+$/,``)}`}catch{return null}}function $l(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t)}function eu(e){try{let t=new URL(e.trim());return t.protocol===`https:`||t.protocol===`http:`&&$l(t.hostname)}catch{return!1}}function tu(e){try{return new URL(e.trim()).origin}catch{return null}}var nu=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`EndpointError`}};function ru(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 iu(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 nu(`the endpoint sent no reply text`)}function au(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 ou(e){let t=Ql(e.baseUrl);if(!t)throw new nu(`the address is not a valid http(s) URL`);if(e.apiKey&&!eu(t))throw new nu(`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,Xl.indexOf(e.jsonMode??`json_schema`));async function a(t,i){let a=AbortSignal.timeout(Zl);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 nu(`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?Xl[i]??`none`:`none`,s=au(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),iu(await c.json().catch(()=>null));if(r&&(c.status===400||c.status===422)&&i<Xl.length-1)i+=1;else throw new nu(ru(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 su(e){try{return{ok:!0,message:(await ou({...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 nu?`Could not connect: ${e.message}.`:`Could not connect.`}}}var cu=[{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 lu(e){if(!e?.length)return[...cu];let t=[];for(let n of e){let e=typeof n==`string`?cu.find(e=>e.id===n):n;e&&!t.some(t=>t.id===e.id)&&t.push(e)}return t.length?t:[...cu]}var uu=`smrt-planner:inference:v1`,du=`smrt-planner:inference-key:v1`,fu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function pu(e){let t={preset:``,active:!1,entries:{}};try{let n=e?.getItem(uu);if(!n)return t;let r=JSON.parse(n);if(!fu(r))return t;typeof r.preset==`string`&&(t.preset=r.preset),t.active=r.active===!0;let i=!1;if(fu(r.entries)){for(let[e,n]of Object.entries(r.entries))if(fu(n)&&typeof n.baseUrl==`string`&&typeof n.model==`string`){let r=Ql(n.baseUrl)??``;i||=r!==n.baseUrl,t.entries[e]={baseUrl:r,model:n.model}}}i&&(t.active=!1,e?.setItem(uu,JSON.stringify(t)))}catch{}return t}function mu(e){let t={};try{let n=e?.getItem(du),r=n?JSON.parse(n):null;if(fu(r))for(let[e,n]of Object.entries(r))fu(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 hu=class{presets;#e=A(``);get presetId(){return e(this.#e)}set presetId(e){U(this.#e,e,!0)}#t=A(F({}));get entries(){return e(this.#t)}set entries(e){U(this.#t,e,!0)}#n=A(F({}));get keys(){return e(this.#n)}set keys(e){U(this.#n,e,!0)}#r=A(!1);get active(){return e(this.#r)}set active(e){U(this.#r,e,!0)}#i=A(`idle`);get testStatus(){return e(this.#i)}set testStatus(e){U(this.#i,e,!0)}#a=A(``);get testMessage(){return e(this.#a)}set testMessage(e){U(this.#a,e,!0)}options;credentialStorage;constructor(e){if(this.options=e,this.credentialStorage=e.credentialPersistence===`memory`?null:e.storage,e.credentialPersistence===`memory`)try{e.storage?.removeItem(du)}catch{}this.presets=lu(e.presets);let t=pu(e.storage);this.keys=mu(this.credentialStorage),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===tu(this.baseUrl)?e.key:``}get keyForOtherAddress(){let e=this.keys[this.presetId];return!!e&&e.origin!==tu(this.baseUrl)}get complete(){let e=Ql(this.baseUrl);return!!e&&!!this.model.trim()&&(!!this.preset?.keyless||!!this.key.trim()&&eu(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=tu(this.baseUrl),n=e.trim();!n||!t?this.forgetKey():(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=Ql(this.baseUrl);return e?ou({baseUrl:e,model:this.model.trim(),apiKey:this.preset?.keyless?void 0:this.key,fetch:this.options.fetch}):null}async test(){let e=Ql(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&&!eu(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 su({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=Object.fromEntries(Object.entries(this.entries).map(([e,t])=>[e,{baseUrl:Ql(t.baseUrl)??``,model:t.model}])),t={preset:this.presetId,active:this.active,entries:e};this.options.storage?.setItem(uu,JSON.stringify(t)),this.credentialStorage?.setItem(du,JSON.stringify(this.keys))}catch{}}};function gu(e,t,n,r=`local`){let i=pu(e);if(!i.active)return null;let a=lu(t).find(e=>e.id===i.preset),o=i.entries[i.preset],s=Ql(o?.baseUrl??a?.baseUrl??``),c=(o?.model??a?.model??``).trim(),l=mu(r===`memory`?null:e)[i.preset],u=l&&l.origin===tu(s??``)?l.key:``;return!a||!s||!c||!a.keyless&&(!u||!eu(s))?null:ou({baseUrl:s,model:c,apiKey:a.keyless?void 0:u,fetch:n})}var _u=`my-app`;function vu(e){return(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function yu(e){return`${vu(e)||`my-app`}.cookbook.json`}function bu(e){return new TextEncoder().encode(Su(e)).length}function xu(e){if(e<1e3)return`${e} bytes`;let t=e/1024;return`${t<10?t.toFixed(1):Math.round(t)} KB`}function Su(e){return`${JSON.stringify(e,null,2)}\n`}function Cu(e){let t=URL.createObjectURL(new Blob([e.text],{type:`application/json`})),n=document.createElement(`a`);n.href=t,n.download=e.fileName,document.body.append(n),n.click(),n.remove(),URL.revokeObjectURL(t)}var wu=`x-kitchen-token`,Tu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Eu(e){if(typeof e!=`string`)return!1;let t=e.trim();try{let e=t.startsWith(`/`)&&!t.startsWith(`//`),n=new URL(t,e?`https://planner.invalid`:void 0);return!e&&n.protocol!==`http:`&&n.protocol!==`https:`||n.username||n.password||n.hash?!1:![...n.searchParams.keys()].some(e=>/^(?:api[-_]?key|key|token|authorization|secret|password)$/i.test(e))}catch{return!1}}function Du(e){if(!Tu(e))return;let{endpoint:t}=e;if(Eu(t))return{endpoint:t.trim(),...Object.hasOwn(e,`token`)?{tokenInConfig:!0}:{}}}var Ou=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[];async function ku(e,t,n=fetch){let r;try{r=await n(e.endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`,[wu]:e.token},body:Su(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&&Tu(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:Ou(i.added),nextSteps:Ou(i.nextSteps)}};let a=Tu(i)?Ou(i.errors):[];return Tu(i)&&typeof i.error==`string`&&a.push(i.error),{ok:!1,errors:a.length?a:[`The kitchen answered ${r.status}.`]}}var Au=[`manual`,`browser`,`host`,`byo`],ju={mode:`browser`},Mu={mode:`manual`},Nu=`planner.config.json`,Pu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Fu(e){if(typeof e!=`string`)return!1;let t=e.trim();if(!t)return!1;try{let e=t.startsWith(`/`)&&!t.startsWith(`//`),n=new URL(t,e?`https://planner.invalid`:void 0);if(!e&&n.protocol!==`http:`&&n.protocol!==`https:`||n.username||n.password||n.hash)return!1;for(let e of n.searchParams.keys())if(/^(?:api[-_]?key|key|token|authorization|secret|password)$/i.test(e))return!1;return!0}catch{return!1}}function Iu(e){if(!Pu(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()||!Fu(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 Lu=e=>({config:Mu,notice:`The assistant settings could not be used (${e}), so inference is off. The planner still works manually.`});function Ru(e,t){if(e===void 0)return[];if(!Array.isArray(e)||e.length===0)return null;let n=[];for(let r of e){if(typeof r!=`string`||!Au.includes(r)||r===t||n.includes(r))return null;n.push(r)}return n}function zu(e){if(e===void 0)return{};if(!Pu(e))return null;if(e.presets===void 0)return{};if(!Array.isArray(e.presets)||e.presets.length===0)return null;let t=[];for(let n of e.presets){if(typeof n==`string`&&n.trim()){t.push(n.trim());continue}let e=Iu(n);if(!e)return null;t.push(e)}return{presets:t}}function Bu(e){if(!Pu(e))return Lu(`not an object`);let t=e.inference;if(t===void 0)return{config:ju};if(!Pu(t))return Lu(`"inference" is not an object`);let n=t.mode;if(n===void 0)return{config:ju};if(!Au.includes(n))return Lu(`unknown mode "${String(n)}"`);let r=n,i=Ru(t.alternatives,r);if(!i)return Lu(`alternatives must be unique supported modes other than mode`);let a=t.credentialPersistence;if(a!==void 0&&a!==`local`&&a!==`memory`)return Lu(`credentialPersistence must be "local" or "memory"`);let o=[r,...i],s;if(o.includes(`host`)){let e=t.host;if(!Pu(e)||!Fu(e.endpoint))return Lu(`host mode needs host.endpoint, an http(s) URL or path`);s={endpoint:e.endpoint.trim()}}let c;return o.includes(`byo`)&&(c=zu(t.byo)??void 0,!c)?Lu(`byo.presets must be a non-empty valid list`):{config:{mode:r,...i.length?{alternatives:i}:{},...a?{credentialPersistence:a}:{},...s?{host:s}:{},...c?{byo:c}:{}}}}function Vu(e){try{let t=JSON.parse(e),n=Bu(t),r=Pu(t)?Du(t.kitchen):void 0;return r?{...n,kitchen:r}:n}catch{return Lu(`it is not valid JSON`)}}function Hu(e){return Bu({inference:e})}async function Uu(e=``,t=fetch){let n;try{n=await t(`${e.replace(/\/$/,``)}/${Nu}`,{headers:{accept:`application/json`},cache:`no-cache`})}catch{return{config:ju}}if(n.status===404)return{config:ju};if(!n.ok)return Lu(`the file answered ${n.status}`);let r=await n.text();return/^\s*</.test(r)?{config:ju}:Vu(r)}var Wu=1e3,Gu=2e3,Ku=6e4,qu=(e,t)=>e.length>t?e.slice(0,t):e;function Ju(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:qu(e.content,Wu)})),a={version:1,message:qu(n,Gu),snapshot:e.snapshot(),...i.length?{history:i}:{}},o=AbortSignal.timeout(Ku),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 Yu(e){return[Xu(e.think),Qu(e.hear),$u(e.speak)]}function Xu(e){let t={id:`think`,name:`Think`};if(e.mode===`manual`)return{...t,state:`off`,label:`Think: inference off`,where:`Off`};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{...Zu(e),where:`In browser`}}function Zu(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 Qu(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 $u(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 ed(e){return e.dismissed||e.built?!1:!(e.thinkDownloaded||e.hearDownloaded||e.readAloud)}var td=`smrt-planner:ai:v1`;function nd(e){let t={dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1};try{let n=e?.getItem(td);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 rd(e,t){try{e?.setItem(td,JSON.stringify(t))}catch{}}var id=new class{session;voice;#e=A(F({dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1}));get prefs(){return e(this.#e)}set prefs(e){U(this.#e,e,!0)}#t=A(!1);get hydrated(){return e(this.#t)}set hydrated(e){U(this.#t,e,!0)}#n=A(!1);get firstRun(){return e(this.#n)}set firstRun(e){U(this.#n,e,!0)}#r=A(!1);get speaking(){return e(this.#r)}set speaking(e){U(this.#r,e,!0)}#i=A(F(ju));get inference(){return e(this.#i)}set inference(e){U(this.#i,e,!0)}#a=A(F([`browser`]));get availableModes(){return e(this.#a)}set availableModes(e){U(this.#a,e,!0)}#o=A(``);get notice(){return e(this.#o)}set notice(e){U(this.#o,e,!0)}#s=A(null);get byo(){return e(this.#s)}set byo(e){U(this.#s,e,!0)}pending=0;generation=0;options;pendingConfig=!1;builtAtHydrate=!1;synth;mic;constructor(e){this.options=e,this.session=new Ll({...e.session,storage:e.storage,onReply:e=>this.speak(e)}),this.voice=new Yl({...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=nd(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;this.pendingConfig=!1,this.inference=t,this.notice=n??``;let r=[t.mode,...t.alternatives??[]];this.availableModes=[...r,...t.alternatives?.length&&!r.includes(`manual`)?[`manual`]:[]],this.byo=r.includes(`byo`)?new hu({storage:this.options.storage,credentialPersistence:t.credentialPersistence,presets:t.byo?.presets,fetch:this.options.fetch,onChange:()=>this.syncByo()}):null,this.applyMode(t.mode),this.hydrated&&this.decideFirstRun()}useChat(e,t){this.pendingConfig=!1,this.inference={mode:`host`},this.notice=``,this.availableModes=[`host`],this.byo=null,this.session.setMode(`host`);let n=()=>typeof e==`function`?e():e;this.session.useRemote({message:(e,t)=>{let r=n();if(!r)throw Error(`The host has not connected a model yet.`);return r.message(e,t)}},t),this.hydrated&&this.decideFirstRun()}get assistantReady(){return this.hydrated&&this.session.status===`ready`}selectInference(e){this.availableModes.includes(e)&&e!==this.inference.mode&&(this.inference={...this.inference,mode:e},this.notice=``,this.applyMode(e))}applyMode(e){if(this.session.setMode(e),e===`host`&&this.inference.host){let{controller:e,store:t,settings:n,theme:r}=this.options.session,i=e??qe({store:t,settings:n,theme:r});this.session.useRemote(Ju({endpoint:this.inference.host.endpoint,snapshot:()=>i.snapshot(),fetch:this.options.fetch}),`Server`)}else e===`byo`?this.syncByo():e===`manual`&&this.session.useRemote(null,``)}syncByo(){let e=this.byo;e&&this.session.useRemote(e.active?e.chat():null,e.model)}decideFirstRun(){this.firstRun=this.inference.mode!==`host`&&this.inference.mode!==`manual`&&ed({thinkDownloaded:this.session.prefs.consented.length>0||this.session.status===`ready`,hearDownloaded:Wl(this.options.storage),readAloud:this.prefs.readAloud,dismissed:this.prefs.dismissed,built:this.builtAtHydrate})}get capabilities(){let e=qt(this.session.prefs.modelId),t=this.hydrated;return Yu({think:{status:t?this.session.status:`idle`,model:e?Yt(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===`manual`?`Inference is off. Planning, validation and export still work without a model.`: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,rd(this.options.storage,e)}}({storage:Le(),session:{conversationStorage:pe(),store:Ge,recipes:We,controller:Xe,settings:{read:()=>Ve.settings(),write:e=>Ve.setSettings(e)},theme:{read:()=>Ve.snapshot().theme,write:e=>Ve.setTheme(e)},menu:()=>Je.openSection?Xe.snapshot().sections.filter(e=>!e.hidden).map(({id:e,label:t})=>({id:e,label:t})):[]},voice:{createModel:Wt}}),ad=`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`,od=`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`,sd=`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`;export{Yt as A,jn as C,qt as D,Jt as E,ct as M,Qt as O,Ln as S,Xt as T,Rl as _,Ju as a,Lc as b,ku as c,yu as d,bu as f,gu as g,vu as h,id as i,Ut as j,Zt as k,_u as l,Su as m,sd as n,Hu as o,xu as p,ad as r,Uu as s,od as t,Cu as u,Bl as v,Kt as w,Rn as x,Fl as y};
|