@happyvertical/smrt-planner 0.57.32 → 0.57.34
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/app/404.html +18 -18
- package/app/_app/immutable/chunks/{C6EDaFgI.js → -ISFFgRZ.js} +1 -1
- package/app/_app/immutable/chunks/1YcLpNOc.js +1 -0
- package/app/_app/immutable/chunks/{P64B50zK.js → 9cAwBYAv.js} +1 -1
- package/app/_app/immutable/chunks/{DuPfGV_2.js → B8a8qgrX.js} +1 -1
- package/app/_app/immutable/chunks/{BgV1NsT5.js → BQTYU0bG.js} +3 -3
- package/app/_app/immutable/chunks/{D4B6nRF7.js → BSAulPpp.js} +2 -2
- package/app/_app/immutable/chunks/BfpExq-S.js +1 -0
- package/app/_app/immutable/chunks/{BNDklKoo.js → C4pQNjCl.js} +1 -1
- package/app/_app/immutable/chunks/{2gJIjKH3.js → CBiGoewq.js} +21 -21
- package/app/_app/immutable/chunks/{DK_gS9Jq.js → CCRFEm1Z.js} +1 -1
- package/app/_app/immutable/chunks/{C7nPrJqd.js → CMkhxHXO.js} +1 -1
- package/app/_app/immutable/chunks/{Da1iOMPr.js → CNPCEIe2.js} +1 -1
- package/app/_app/immutable/chunks/CPTDYg6b.js +1 -0
- package/app/_app/immutable/chunks/{C9jPOuwr.js → CSCLK1LQ.js} +2 -2
- package/app/_app/immutable/chunks/{5L5U3dxC.js → CU4a_rKX.js} +1 -1
- package/app/_app/immutable/chunks/{B6zNIkxP.js → CbL5XGqX.js} +1 -1
- package/app/_app/immutable/chunks/{CFwpvGfx.js → CzEZR3zk.js} +1 -1
- package/app/_app/immutable/chunks/{Cyt4Wwnv.js → D7lLDELj.js} +1 -1
- package/app/_app/immutable/chunks/{DTiq_LAz.js → DRrQW2LM.js} +1 -1
- package/app/_app/immutable/chunks/{DgGUHCii.js → DcgTbNcq.js} +1 -1
- package/app/_app/immutable/chunks/{6oQ8zEIv.js → Dy9Yriiq.js} +1 -1
- package/app/_app/immutable/chunks/{D3LzUFLO.js → EetkBuD2.js} +1 -1
- package/app/_app/immutable/chunks/{Cwqkgmip.js → I88OwmoF.js} +1 -1
- package/app/_app/immutable/chunks/{CBtW6PyB.js → INoVtrTs.js} +1 -1
- package/app/_app/immutable/chunks/{BS2nayke.js → ImF_qEDB.js} +1 -1
- package/app/_app/immutable/chunks/{ChywsM5W.js → RDu9Dr22.js} +1 -1
- package/app/_app/immutable/chunks/{B8mUqKzg.js → U0yodJsu.js} +1 -1
- package/app/_app/immutable/chunks/{oh3YT-yo.js → hZxLaVFg.js} +1 -1
- package/app/_app/immutable/chunks/{sw2qAWex.js → z9_H8vtF.js} +1 -1
- package/app/_app/immutable/entry/{app.gfNIwStd.js → app.BB8kamr7.js} +2 -2
- package/app/_app/immutable/entry/start.DO3OcZtK.js +1 -0
- package/app/_app/immutable/nodes/{0.BTo4xaMe.js → 0.CxrgFWGB.js} +1 -1
- package/app/_app/immutable/nodes/{1.BPxzEeDV.js → 1.B-YEVMRd.js} +1 -1
- package/app/_app/immutable/nodes/{10.D-z5tym9.js → 10.DO4mf8ht.js} +1 -1
- package/app/_app/immutable/nodes/{11.PYQSDHVR.js → 11.DHuE5aXH.js} +1 -1
- package/app/_app/immutable/nodes/{12.DyIYv75y.js → 12.DABuY5YN.js} +1 -1
- package/app/_app/immutable/nodes/{13.Db4mHjd8.js → 13.pSfaAqGR.js} +1 -1
- package/app/_app/immutable/nodes/{14.CF68miln.js → 14.CWcnN_Wa.js} +1 -1
- package/app/_app/immutable/nodes/{2.C2oAWKdQ.js → 2.BOAJAsyF.js} +3 -3
- package/app/_app/immutable/nodes/{3.TR0NBP-_.js → 3.Cb1niVXz.js} +1 -1
- package/app/_app/immutable/nodes/{4.OgwQyb7z.js → 4.uDmI9UhG.js} +1 -1
- package/app/_app/immutable/nodes/{5.BSceo--h.js → 5.CCHLOr5q.js} +1 -1
- package/app/_app/immutable/nodes/{6.BBhgay6p.js → 6.DSmMN1am.js} +1 -1
- package/app/_app/immutable/nodes/{7.YHOQp8rp.js → 7.CL8h_2hC.js} +1 -1
- package/app/_app/immutable/nodes/{8.BXrHRkhJ.js → 8.PuwnQt-2.js} +1 -1
- package/app/_app/immutable/nodes/{9.BumoDn18.js → 9.CtDJNLWL.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +21 -21
- package/app/ai/index.html +24 -24
- package/app/blueprint/index.html +19 -19
- package/app/cookbook/index.html +19 -19
- package/app/index.html +27 -27
- package/app/m/ads/AdDeliveryTier/index.html +23 -23
- package/app/m/ads/AdEvent/index.html +23 -23
- package/app/m/ads/AdFormat/index.html +23 -23
- package/app/m/ads/AdGroup/index.html +23 -23
- package/app/m/ads/AdVariation/index.html +23 -23
- package/app/m/analytics/AnalyticsDataStream/index.html +23 -23
- package/app/m/analytics/AnalyticsEvent/index.html +23 -23
- package/app/m/analytics/AnalyticsProperty/index.html +23 -23
- package/app/m/analytics/AnalyticsReport/index.html +23 -23
- package/app/m/approvals/ApprovalEvent/index.html +23 -23
- package/app/m/approvals/ApprovalPolicy/index.html +23 -23
- package/app/m/approvals/ApprovalRequest/index.html +23 -23
- package/app/m/assets/Asset/attachments/index.html +24 -24
- package/app/m/assets/Asset/index.html +23 -23
- package/app/m/assets/AssetAssociation/index.html +23 -23
- package/app/m/assets/AssetMetafield/index.html +23 -23
- package/app/m/assets/AssetStatus/index.html +23 -23
- package/app/m/assets/AssetType/index.html +23 -23
- package/app/m/assets/Folder/index.html +23 -23
- package/app/m/chat/AgentSession/index.html +23 -23
- package/app/m/chat/ChatMessage/index.html +23 -23
- package/app/m/chat/ChatParticipant/index.html +23 -23
- package/app/m/chat/ChatReaction/index.html +23 -23
- package/app/m/chat/ChatRoom/index.html +23 -23
- package/app/m/chat/ChatThread/index.html +23 -23
- package/app/m/chat/VoiceGatewayTurn/index.html +23 -23
- package/app/m/chat/VoiceSession/index.html +23 -23
- package/app/m/commerce/Agreement/index.html +23 -23
- package/app/m/commerce/Cart/index.html +23 -23
- package/app/m/commerce/Contract/index.html +23 -23
- package/app/m/commerce/ContractLineItem/index.html +23 -23
- package/app/m/commerce/Customer/index.html +23 -23
- package/app/m/commerce/DocumentTax/index.html +23 -23
- package/app/m/commerce/Estimate/index.html +23 -23
- package/app/m/commerce/Fulfillment/index.html +23 -23
- package/app/m/commerce/FulfillmentLineItem/index.html +23 -23
- package/app/m/commerce/HistoricalCustomerFunds/index.html +23 -23
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +23 -23
- package/app/m/commerce/HistoricalSalesLine/index.html +23 -23
- package/app/m/commerce/Invoice/index.html +23 -23
- package/app/m/commerce/InvoiceLineItem/index.html +23 -23
- package/app/m/commerce/Lease/index.html +23 -23
- package/app/m/commerce/LicenseSale/index.html +23 -23
- package/app/m/commerce/Order/index.html +23 -23
- package/app/m/commerce/Payment/index.html +23 -23
- package/app/m/commerce/PaymentAllocation/index.html +23 -23
- package/app/m/commerce/PaymentInstrument/index.html +23 -23
- package/app/m/commerce/PaymentIntent/index.html +23 -23
- package/app/m/commerce/Payout/index.html +23 -23
- package/app/m/commerce/ProductionOrder/index.html +23 -23
- package/app/m/commerce/PurchaseContract/index.html +23 -23
- package/app/m/commerce/PurchaseOrder/index.html +23 -23
- package/app/m/commerce/SalesContract/index.html +23 -23
- package/app/m/commerce/SupplierQuote/index.html +23 -23
- package/app/m/commerce/TaxCode/index.html +23 -23
- package/app/m/commerce/TaxComponent/index.html +23 -23
- package/app/m/commerce/TaxSettings/index.html +23 -23
- package/app/m/commerce/TaxSummaryReport/index.html +23 -23
- package/app/m/commerce/TenantPaymentAccount/index.html +23 -23
- package/app/m/commerce/Vendor/index.html +23 -23
- package/app/m/commerce/WholesaleOrder/index.html +23 -23
- package/app/m/content/Content/index.html +23 -23
- package/app/m/content/ContentContribution/index.html +23 -23
- package/app/m/content/ContentContributionAttachment/index.html +23 -23
- package/app/m/content/ContentContributionRevision/index.html +23 -23
- package/app/m/content/ContentContributionType/index.html +23 -23
- package/app/m/content/ContentContributor/index.html +23 -23
- package/app/m/content/ContentCorrection/index.html +23 -23
- package/app/m/content/ContentFeedSource/index.html +23 -23
- package/app/m/content/ContentGovernanceAssignment/index.html +23 -23
- package/app/m/content/ContentGovernancePolicy/index.html +23 -23
- package/app/m/content/ContentGovernanceProfile/index.html +23 -23
- package/app/m/content/ContentReference/index.html +23 -23
- package/app/m/content/ContentReview/index.html +23 -23
- package/app/m/content/ContentVersion/index.html +23 -23
- package/app/m/events/Event/index.html +23 -23
- package/app/m/events/EventParticipant/index.html +23 -23
- package/app/m/events/EventSeries/index.html +23 -23
- package/app/m/events/EventType/index.html +23 -23
- package/app/m/expenses/Expense/index.html +23 -23
- package/app/m/facts/Fact/index.html +23 -23
- package/app/m/facts/FactContent/index.html +23 -23
- package/app/m/facts/FactEvidence/index.html +23 -23
- package/app/m/facts/FactSource/index.html +23 -23
- package/app/m/facts/FactSubject/index.html +23 -23
- package/app/m/facts/FactTag/index.html +23 -23
- package/app/m/fields/FieldPolicy/index.html +23 -23
- package/app/m/fields/FieldPolicySuggestion/index.html +23 -23
- package/app/m/fields/FieldUsageCounter/index.html +23 -23
- package/app/m/images/Image/index.html +23 -23
- package/app/m/inventory/InventoryLocation/index.html +23 -23
- package/app/m/inventory/Lot/index.html +23 -23
- package/app/m/inventory/LotCorrection/index.html +23 -23
- package/app/m/inventory/LotDocument/index.html +23 -23
- package/app/m/inventory/LotStockLevel/index.html +23 -23
- package/app/m/inventory/LotUsage/index.html +23 -23
- package/app/m/inventory/StockLevel/index.html +23 -23
- package/app/m/inventory/StockMovement/index.html +23 -23
- package/app/m/ledgers/Account/index.html +23 -23
- package/app/m/ledgers/Journal/index.html +23 -23
- package/app/m/ledgers/JournalEntry/index.html +23 -23
- package/app/m/ledgers/Ledger/index.html +23 -23
- package/app/m/manufacturing/Assembly/index.html +23 -23
- package/app/m/manufacturing/BillOfMaterials/index.html +23 -23
- package/app/m/manufacturing/BomLine/index.html +23 -23
- package/app/m/manufacturing/Operation/index.html +23 -23
- package/app/m/manufacturing/ProductionRun/index.html +23 -23
- package/app/m/manufacturing/ProductionRunCompletion/index.html +23 -23
- package/app/m/manufacturing/RoutingStep/index.html +23 -23
- package/app/m/marketing/Campaign/index.html +23 -23
- package/app/m/marketing/CampaignChannel/index.html +23 -23
- package/app/m/marketing/CampaignMetricSnapshot/index.html +23 -23
- package/app/m/messages/Account/index.html +23 -23
- package/app/m/messages/Attachment/index.html +23 -23
- package/app/m/messages/Blacklist/index.html +23 -23
- package/app/m/messages/Email/failed-sends/index.html +24 -24
- package/app/m/messages/Email/index.html +23 -23
- package/app/m/messages/Email/mailbox/index.html +24 -24
- package/app/m/messages/EmailAccount/index.html +23 -23
- package/app/m/messages/EmailAttachment/index.html +23 -23
- package/app/m/messages/EmailFolder/index.html +23 -23
- package/app/m/messages/Message/index.html +23 -23
- package/app/m/messages/MessagingEndpoint/index.html +23 -23
- package/app/m/messages/PersonaMessageRoute/index.html +23 -23
- package/app/m/messages/SlackAccount/index.html +23 -23
- package/app/m/messages/SlackMessage/index.html +23 -23
- package/app/m/messages/TelegramAccount/index.html +23 -23
- package/app/m/messages/Tweet/index.html +23 -23
- package/app/m/messages/TwitterAccount/index.html +23 -23
- package/app/m/messages/Whitelist/index.html +23 -23
- package/app/m/messages/ZulipAccount/index.html +23 -23
- package/app/m/places/Place/index.html +23 -23
- package/app/m/places/PlaceType/index.html +23 -23
- package/app/m/products/Category/index.html +23 -23
- package/app/m/products/Material/index.html +23 -23
- package/app/m/products/Product/index.html +23 -23
- package/app/m/products/Product/ingredients/index.html +24 -24
- package/app/m/products/ProductVariant/index.html +23 -23
- package/app/m/products/Sku/index.html +23 -23
- package/app/m/profiles/ApiKey/index.html +23 -23
- package/app/m/profiles/Bot/index.html +23 -23
- package/app/m/profiles/MagicLinkToken/index.html +23 -23
- package/app/m/profiles/NostrIdentity/index.html +23 -23
- package/app/m/profiles/OidcIdentity/index.html +23 -23
- package/app/m/profiles/Organization/index.html +23 -23
- package/app/m/profiles/Person/index.html +23 -23
- package/app/m/profiles/Profile/index.html +23 -23
- package/app/m/profiles/ProfileMetadata/index.html +23 -23
- package/app/m/profiles/ProfileMetafield/index.html +23 -23
- package/app/m/profiles/ProfileRelationship/index.html +23 -23
- package/app/m/profiles/ProfileRelationshipTerm/index.html +23 -23
- package/app/m/profiles/ProfileRelationshipType/index.html +23 -23
- package/app/m/profiles/ProfileType/index.html +23 -23
- package/app/m/projects/Comment/index.html +23 -23
- package/app/m/projects/Issue/index.html +23 -23
- package/app/m/projects/Label/index.html +23 -23
- package/app/m/projects/Project/index.html +23 -23
- package/app/m/projects/ProjectIntegration/index.html +23 -23
- package/app/m/projects/PullRequest/index.html +23 -23
- package/app/m/projects/Repository/index.html +23 -23
- package/app/m/properties/Property/index.html +23 -23
- package/app/m/properties/Zone/index.html +23 -23
- package/app/m/reports/RuntimeReport/index.html +23 -23
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +23 -23
- package/app/m/reports/SmrtReportLock/index.html +23 -23
- package/app/m/reports/SmrtReportRefreshTask/index.html +23 -23
- package/app/m/reports/SmrtReportRun/index.html +23 -23
- package/app/m/reports/SmrtReportSchedule/index.html +23 -23
- package/app/m/reports/SmrtReportWatermark/index.html +23 -23
- package/app/m/sales/Agreement/index.html +23 -23
- package/app/m/sales/AttributionException/index.html +23 -23
- package/app/m/sales/AttributionPolicy/index.html +23 -23
- package/app/m/sales/Commission/index.html +23 -23
- package/app/m/sales/CommissionAdjustment/index.html +23 -23
- package/app/m/sales/CommissionPayout/index.html +23 -23
- package/app/m/sales/CommissionPlan/index.html +23 -23
- package/app/m/sales/Earner/index.html +23 -23
- package/app/m/sales/EarnerSourceAttribution/index.html +23 -23
- package/app/m/sales/EarningEvent/index.html +23 -23
- package/app/m/sales/ExecutedAgreement/index.html +23 -23
- package/app/m/sales/Lead/index.html +23 -23
- package/app/m/sales/Opportunity/index.html +23 -23
- package/app/m/sales/OpportunityConversion/index.html +23 -23
- package/app/m/sales/PipelineDefinition/index.html +23 -23
- package/app/m/sales/PipelineStage/index.html +23 -23
- package/app/m/sales/Referral/index.html +23 -23
- package/app/m/sales/ReferralAgreement/index.html +23 -23
- package/app/m/sales/ReferralLink/index.html +23 -23
- package/app/m/sales/ReferralProgram/index.html +23 -23
- package/app/m/sales/ReferralTermSnapshot/index.html +23 -23
- package/app/m/sales/ReferralTouch/index.html +23 -23
- package/app/m/sales/Referrer/index.html +23 -23
- package/app/m/sales/SalesActivity/index.html +23 -23
- package/app/m/sales/SalesRepresentative/index.html +23 -23
- package/app/m/sites/Site/index.html +23 -23
- package/app/m/sites/SiteAgentBinding/index.html +23 -23
- package/app/m/social/OAuthState/index.html +23 -23
- package/app/m/social/SocialAccount/index.html +23 -23
- package/app/m/social/SocialPost/index.html +23 -23
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +23 -23
- package/app/m/subscriptions/BillingAdjustment/index.html +23 -23
- package/app/m/subscriptions/ClientCharge/index.html +23 -23
- package/app/m/subscriptions/CreditGrant/index.html +23 -23
- package/app/m/subscriptions/PricingRule/index.html +23 -23
- package/app/m/subscriptions/RetailCharge/index.html +23 -23
- package/app/m/subscriptions/SpendingPolicy/index.html +23 -23
- package/app/m/subscriptions/SubscriptionPlan/index.html +23 -23
- package/app/m/subscriptions/SubscriptionPlanVersion/index.html +23 -23
- package/app/m/subscriptions/TenantSubscription/index.html +23 -23
- package/app/m/subscriptions/TenantUsageMetric/index.html +23 -23
- package/app/m/support/ServiceTimeEntry/index.html +23 -23
- package/app/m/support/SupportAiRun/index.html +23 -23
- package/app/m/support/SupportAvailability/index.html +23 -23
- package/app/m/support/SupportCase/index.html +23 -23
- package/app/m/support/SupportCaseEvent/index.html +23 -23
- package/app/m/support/SupportChannelBinding/index.html +23 -23
- package/app/m/support/SupportCharge/index.html +23 -23
- package/app/m/support/SupportCompensation/index.html +23 -23
- package/app/m/support/SupportCompensationPlan/index.html +23 -23
- package/app/m/support/SupportEscalation/index.html +23 -23
- package/app/m/support/SupportInteraction/index.html +23 -23
- package/app/m/support/SupportPlan/index.html +23 -23
- package/app/m/support/SupportPolicy/index.html +23 -23
- package/app/m/support/SupportQualification/index.html +23 -23
- package/app/m/support/SupportServiceTarget/index.html +23 -23
- package/app/m/support/SupportSpecialist/index.html +23 -23
- package/app/m/support/SupportWorkLink/index.html +23 -23
- package/app/m/tags/Tag/index.html +23 -23
- package/app/m/tags/TagAlias/index.html +23 -23
- package/app/m/timesheets/AttendanceBreak/index.html +23 -23
- package/app/m/timesheets/AttendancePunch/index.html +23 -23
- package/app/m/timesheets/AttendanceSegment/index.html +23 -23
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +23 -23
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +23 -23
- package/app/m/timesheets/ServiceTimeEntry/index.html +23 -23
- package/app/m/users/Group/index.html +23 -23
- package/app/m/users/GroupMember/index.html +23 -23
- package/app/m/users/GroupRole/index.html +23 -23
- package/app/m/users/Membership/index.html +23 -23
- package/app/m/users/MembershipOverride/index.html +23 -23
- package/app/m/users/Permission/index.html +23 -23
- package/app/m/users/Role/index.html +23 -23
- package/app/m/users/RolePermission/index.html +23 -23
- package/app/m/users/Session/index.html +23 -23
- package/app/m/users/Tenant/index.html +23 -23
- package/app/m/users/TenantIntegration/index.html +23 -23
- package/app/m/users/TenantPermissionOverride/index.html +23 -23
- package/app/m/users/User/index.html +23 -23
- package/app/m/video/Character/index.html +23 -23
- package/app/m/video/CharacterAsset/index.html +23 -23
- package/app/m/video/CompositeJob/index.html +23 -23
- package/app/m/video/Performer/index.html +23 -23
- package/app/m/video/PerformerAsset/index.html +23 -23
- package/app/m/video/Scene/index.html +23 -23
- package/app/m/video/SceneAsset/index.html +23 -23
- package/app/m/video/VideoComposition/index.html +23 -23
- package/app/m/video/VideoCompositionAsset/index.html +23 -23
- package/app/m/video/VideoSequence/index.html +23 -23
- package/app/m/video/VideoSequenceAsset/index.html +23 -23
- package/app/m/video/VideoShot/index.html +23 -23
- package/app/m/video/VideoShotAsset/index.html +23 -23
- package/app/m/video/VideoShotCharacter/index.html +23 -23
- package/app/m/video/VideoWorkflow/index.html +23 -23
- package/app/m/voice/VoiceOutput/index.html +23 -23
- package/app/m/voice/VoiceProfile/index.html +23 -23
- package/app/m/voice/VoiceSample/index.html +23 -23
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +21 -21
- package/app/packages/analytics/index.html +21 -21
- package/app/packages/approvals/index.html +21 -21
- package/app/packages/assets/index.html +21 -21
- package/app/packages/chat/index.html +21 -21
- package/app/packages/comments/index.html +21 -21
- package/app/packages/commerce/index.html +22 -22
- package/app/packages/content/index.html +21 -21
- package/app/packages/events/index.html +21 -21
- package/app/packages/expenses/index.html +21 -21
- package/app/packages/facts/index.html +21 -21
- package/app/packages/fields/index.html +21 -21
- package/app/packages/human-resources/index.html +21 -21
- package/app/packages/images/index.html +21 -21
- package/app/packages/index.html +20 -20
- package/app/packages/ingestion/index.html +21 -21
- package/app/packages/inventory/index.html +21 -21
- package/app/packages/ledgers/index.html +21 -21
- package/app/packages/manufacturing/index.html +21 -21
- package/app/packages/marketing/index.html +21 -21
- package/app/packages/messages/index.html +21 -21
- package/app/packages/places/index.html +21 -21
- package/app/packages/preferences/index.html +21 -21
- package/app/packages/products/index.html +21 -21
- package/app/packages/profiles/index.html +21 -21
- package/app/packages/projects/index.html +21 -21
- package/app/packages/properties/index.html +21 -21
- package/app/packages/reactions/index.html +21 -21
- package/app/packages/reports/index.html +21 -21
- package/app/packages/sales/index.html +21 -21
- package/app/packages/sites/index.html +21 -21
- package/app/packages/social/index.html +21 -21
- package/app/packages/subscriptions/index.html +21 -21
- package/app/packages/support/index.html +21 -21
- package/app/packages/tags/index.html +21 -21
- package/app/packages/timesheets/index.html +21 -21
- package/app/packages/users/index.html +21 -21
- package/app/packages/video/index.html +21 -21
- package/app/packages/voice/index.html +21 -21
- package/app/packages/webhooks/index.html +21 -21
- package/app/recipes/account-access/help/index.html +21 -21
- package/app/recipes/account-access/index.html +23 -23
- package/app/recipes/activity/help/index.html +21 -21
- package/app/recipes/activity/index.html +23 -23
- package/app/recipes/agreements/help/index.html +21 -21
- package/app/recipes/agreements/index.html +23 -23
- package/app/recipes/analytics.reports/help/index.html +21 -21
- package/app/recipes/analytics.reports/index.html +23 -23
- package/app/recipes/assets/help/index.html +21 -21
- package/app/recipes/assets/index.html +23 -23
- package/app/recipes/billing/help/index.html +21 -21
- package/app/recipes/billing/index.html +23 -23
- package/app/recipes/chat.assistant/help/index.html +21 -21
- package/app/recipes/chat.assistant/index.html +23 -23
- package/app/recipes/comments/help/index.html +21 -21
- package/app/recipes/comments/index.html +23 -23
- package/app/recipes/commerce.customers/help/index.html +22 -22
- package/app/recipes/commerce.customers/index.html +23 -23
- package/app/recipes/commerce.estimates/help/index.html +21 -21
- package/app/recipes/commerce.estimates/index.html +23 -23
- package/app/recipes/commerce.purchases/help/index.html +21 -21
- package/app/recipes/commerce.purchases/index.html +23 -23
- package/app/recipes/commerce.sales/help/index.html +21 -21
- package/app/recipes/commerce.sales/index.html +23 -23
- package/app/recipes/commerce.vendors/help/index.html +22 -22
- package/app/recipes/commerce.vendors/index.html +23 -23
- package/app/recipes/commerce.wholesale/help/index.html +21 -21
- package/app/recipes/commerce.wholesale/index.html +23 -23
- package/app/recipes/events.calendar/help/index.html +21 -21
- package/app/recipes/events.calendar/index.html +23 -23
- package/app/recipes/expenses.tracking/help/index.html +21 -21
- package/app/recipes/expenses.tracking/index.html +23 -23
- package/app/recipes/fields.form-customization/help/index.html +21 -21
- package/app/recipes/fields.form-customization/index.html +23 -23
- package/app/recipes/ingestion/help/index.html +21 -21
- package/app/recipes/ingestion/index.html +23 -23
- package/app/recipes/integrations/help/index.html +21 -21
- package/app/recipes/integrations/index.html +23 -23
- package/app/recipes/inventory.stock/help/index.html +21 -21
- package/app/recipes/inventory.stock/index.html +23 -23
- package/app/recipes/ledgers.bookkeeping/help/index.html +21 -21
- package/app/recipes/ledgers.bookkeeping/index.html +23 -23
- package/app/recipes/messages/help/index.html +21 -21
- package/app/recipes/messages/index.html +23 -23
- package/app/recipes/products/help/index.html +21 -21
- package/app/recipes/products/index.html +23 -23
- package/app/recipes/projects.tracker/help/index.html +21 -21
- package/app/recipes/projects.tracker/index.html +23 -23
- package/app/recipes/reports.materialized/help/index.html +21 -21
- package/app/recipes/reports.materialized/index.html +23 -23
- package/app/recipes/reports.runtime/help/index.html +21 -21
- package/app/recipes/reports.runtime/index.html +23 -23
- package/app/recipes/sales.pipeline/help/index.html +21 -21
- package/app/recipes/sales.pipeline/index.html +23 -23
- package/app/recipes/tags.taxonomy/help/index.html +21 -21
- package/app/recipes/tags.taxonomy/index.html +23 -23
- package/app/recipes/team-collaboration/help/index.html +21 -21
- package/app/recipes/team-collaboration/index.html +23 -23
- package/app/recipes/timesheets.time-entries/help/index.html +21 -21
- package/app/recipes/timesheets.time-entries/index.html +23 -23
- package/app/s/custom-accounts/index.html +19 -19
- package/app/s/custom-appointments/index.html +19 -19
- package/app/s/custom-billing/index.html +19 -19
- package/app/s/custom-bookings/index.html +19 -19
- package/app/s/custom-buying/index.html +19 -19
- package/app/s/custom-checkout/index.html +19 -19
- package/app/s/custom-classes/index.html +19 -19
- package/app/s/custom-clients/index.html +19 -19
- package/app/s/custom-events/index.html +19 -19
- package/app/s/custom-fleet/index.html +19 -19
- package/app/s/custom-gigs/index.html +19 -19
- package/app/s/custom-giving/index.html +19 -19
- package/app/s/custom-instruments/index.html +19 -19
- package/app/s/custom-jobs/index.html +19 -19
- package/app/s/custom-kitchen/index.html +19 -19
- package/app/s/custom-lessons/index.html +19 -19
- package/app/s/custom-material/index.html +19 -19
- package/app/s/custom-meetings/index.html +19 -19
- package/app/s/custom-members/index.html +19 -19
- package/app/s/custom-merch/index.html +19 -19
- package/app/s/custom-money/index.html +19 -19
- package/app/s/custom-paint/index.html +19 -19
- package/app/s/custom-parts/index.html +19 -19
- package/app/s/custom-rentals/index.html +19 -19
- package/app/s/custom-roastery/index.html +19 -19
- package/app/s/custom-schedule/index.html +19 -19
- package/app/s/custom-shelf/index.html +19 -19
- package/app/s/custom-shop/index.html +19 -19
- package/app/s/custom-students/index.html +19 -19
- package/app/s/custom-wholesale/index.html +19 -19
- package/app/s/custom-work/index.html +19 -19
- package/app/s/custom-yard/index.html +19 -19
- package/app/s/section-access-control/index.html +19 -19
- package/app/s/section-account-security/index.html +19 -19
- package/app/s/section-accounting/index.html +19 -19
- package/app/s/section-activity/index.html +19 -19
- package/app/s/section-agreements/index.html +19 -19
- package/app/s/section-analytics/index.html +19 -19
- package/app/s/section-assets/index.html +19 -19
- package/app/s/section-billing/index.html +19 -19
- package/app/s/section-calendar/index.html +19 -19
- package/app/s/section-catalog/index.html +19 -19
- package/app/s/section-chat.assistant/index.html +19 -19
- package/app/s/section-comments/index.html +19 -19
- package/app/s/section-fields.form-customization/index.html +19 -19
- package/app/s/section-ingestion/index.html +19 -19
- package/app/s/section-integrations/index.html +19 -19
- package/app/s/section-messages/index.html +19 -19
- package/app/s/section-more/index.html +19 -19
- package/app/s/section-operations/index.html +19 -19
- package/app/s/section-projects/index.html +19 -19
- package/app/s/section-purchasing/index.html +19 -19
- package/app/s/section-reports.materialized/index.html +19 -19
- package/app/s/section-reports.runtime/index.html +19 -19
- package/app/s/section-sales/index.html +19 -19
- package/app/s/section-taxonomy/index.html +19 -19
- package/app/s/section-team/index.html +19 -19
- package/app/s/section-work/index.html +19 -19
- package/dist/catalog/catalog.json +45 -41
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +55 -55
- package/app/_app/immutable/chunks/DG3xzII-.js +0 -1
- package/app/_app/immutable/chunks/DIHp2eQC.js +0 -1
- package/app/_app/immutable/chunks/DOo4VDTE.js +0 -1
- package/app/_app/immutable/entry/start.Ca19zzij.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Bcfb5I9y.js","./BaNbYf_w.js","./BQxY8kkL.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,Mt as m,Ot as h,P as g,Pt as _,R as v,Rt as y,T as b,U as x,W as S,X as C,Y as w,Z as T,_ as E,_t as D,a as O,bt as k,ct as A,d as j,dt as M,f as N,ft as P,gt as F,ht as I,k as ee,kt as te,lt as L,mt as R,n as ne,nt as re,ot as z,pt as B,q as ie,rt as V,st as H,tt as ae,v as U,vt as W,xt as oe,yt as se,z as ce}from"./DG3qFFTE.js";import{t as G}from"./BaNbYf_w.js";import"./xihTtKlq.js";import{r as le}from"./DptKR1hv.js";import{a as ue,t as K}from"./Bq8E3AWP.js";import{B as q,Mt as de,R as fe,W as J}from"./2gJIjKH3.js";import{n as Y}from"./DK8Blf1Y.js";import{C as pe,S as me,b as X,x as he}from"./BgV1NsT5.js";import{n as ge,r as _e}from"./CWmeIXvO.js";import{i as ve}from"./DG3xzII-.js";import{_ as ye,b as be,c as xe,d as Se,g as Ce,h as we,i as Te,m as Ee,n as De,p as Oe,s as ke}from"./BtoT2pqw.js";import{n as Ae}from"./DuPfGV_2.js";import{n as je,r as Me}from"./BqtRLibF.js";import{a as Ne,t as Pe}from"./BQxY8kkL.js";import{_ as Fe,a as Ie,g as Le,h as Re,l as ze,n as Be,p as Ve,u as He}from"./D4B6nRF7.js";import{Q as Z,b as Ue,t as We}from"./Cwqkgmip.js";import{C as Ge,_ as Ke,h as qe,i as Je,m as Ye,o as Xe,r as Ze,t as Qe,u as $e}from"./DTiq_LAz.js";import{n as et,t as tt}from"./C6EDaFgI.js";function nt(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 rt(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 it(e,t){let n=rt(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 at=new WeakMap;async function ot(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=at.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 st(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 ct(e){return new Worker(new URL(`../workers/local-speech.worker-CU_DjhLr.js`,import.meta.url).href,{name:e?.name})}var lt=2**28,ut=16,dt=.95;function ft(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function pt(e,t,n){for(let[e,r]of[[`fromRate`,t],[`toRate`,n]])if(!Number.isFinite(r)||r<=0)throw new Ne(`invalid_argument`,`${e} must be a positive finite number (got ${String(r)})`);let r=Math.floor(e.length*n/t);if(r>lt)throw new Ne(`invalid_argument`,`resampled output would be ${r} samples; the limit is ${lt}`);if(t===n)return e.slice();let i=new Float32Array(r),a=t/n,o=a>1?dt/a:1,s=ut/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*ft(o*r)*i;u+=a*e[t],d+=a}i[t]=d===0?0:u/d}return i}var mt={silenceMs:800,minSpeechMs:150,preRollMs:300,maxUtteranceMs:3e4,sensitivity:.5,calibrateMs:300},ht=.0015,gt=.003,_t=.006,vt=.2,yt=.02,bt=2e3,xt=250;function St(e,t,n){return Math.min(n,Math.max(t,e))}function Ct(e={}){let t=(e,t,n)=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,e):t;return{silenceMs:t(e.silenceMs,mt.silenceMs,20),minSpeechMs:t(e.minSpeechMs,mt.minSpeechMs,0),preRollMs:t(e.preRollMs,mt.preRollMs,0),maxUtteranceMs:t(e.maxUtteranceMs,mt.maxUtteranceMs,1e3),sensitivity:St(typeof e.sensitivity==`number`&&Number.isFinite(e.sensitivity)?e.sensitivity:mt.sensitivity,0,1),calibrateMs:t(e.calibrateMs,mt.calibrateMs,0)}}function wt(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 Tt(e={}){let t=Ct(e),n=6-4*t.sensitivity,r=.02-.015*t.sensitivity,i=gt,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=St(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=St(e[Math.min(e.length-1,Math.floor(e.length*vt))]??gt,ht,_t)}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/bt*(m<i?4:1);i=St(i+(m-i)*Math.min(1,e),ht,yt)}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 Et(e){let t=Ct(e),n=Tt(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-xt)/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(wt(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 Dt=44,Ot=4294967295,kt=1;function At(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 jt(e,t){if(!Number.isInteger(e)||e<1||e*2>Ot)throw new Ne(`invalid_argument`,`${t} must be a positive integer sample rate (got ${String(e)})`)}function Mt(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function Nt(e,t){jt(t,`sampleRate`);let n=e.length*2;if(n+Dt-8>Ot)throw new Ne(`invalid_argument`,`too many samples for a single WAV (4 GiB limit)`);let r=e instanceof Int16Array?e:At(e),i=new Uint8Array(Dt+n),a=new DataView(i.buffer);Mt(a,0,`RIFF`),a.setUint32(4,36+n,!0),Mt(a,8,`WAVE`),Mt(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,kt,!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),Mt(a,36,`data`),a.setUint32(40,n,!0);for(let e=0;e<r.length;e+=1)a.setInt16(Dt+e*2,r[e],!0);return i}var Pt=`hv-pcm-tap`,Ft=`
|
|
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,Mt as m,Ot as h,P as g,Pt as _,R as v,Rt as y,T as b,U as x,W as S,X as C,Y as w,Z as T,_ as E,_t as D,a as O,bt as k,ct as A,d as j,dt as M,f as N,ft as P,gt as F,ht as I,k as ee,kt as te,lt as L,mt as R,n as ne,nt as re,ot as z,pt as B,q as ie,rt as V,st as H,tt as ae,v as U,vt as W,xt as oe,yt as se,z as ce}from"./DG3qFFTE.js";import{t as G}from"./BaNbYf_w.js";import"./xihTtKlq.js";import{r as le}from"./DptKR1hv.js";import{a as ue,t as K}from"./Bq8E3AWP.js";import{B as q,Mt as de,R as fe,W as J}from"./CBiGoewq.js";import{n as Y}from"./DK8Blf1Y.js";import{C as pe,S as me,b as X,x as he}from"./BQTYU0bG.js";import{n as ge,r as _e}from"./CWmeIXvO.js";import{i as ve}from"./CPTDYg6b.js";import{_ as ye,b as be,c as xe,d as Se,g as Ce,h as we,i as Te,m as Ee,n as De,p as Oe,s as ke}from"./BtoT2pqw.js";import{n as Ae}from"./B8a8qgrX.js";import{n as je,r as Me}from"./BqtRLibF.js";import{a as Ne,t as Pe}from"./BQxY8kkL.js";import{_ as Fe,a as Ie,g as Le,h as Re,l as ze,n as Be,p as Ve,u as He}from"./BSAulPpp.js";import{Q as Z,b as Ue,t as We}from"./I88OwmoF.js";import{C as Ge,_ as Ke,h as qe,i as Je,m as Ye,o as Xe,r as Ze,t as Qe,u as $e}from"./DRrQW2LM.js";import{n as et,t as tt}from"./-ISFFgRZ.js";function nt(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 rt(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 it(e,t){let n=rt(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 at=new WeakMap;async function ot(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=at.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 st(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 ct(e){return new Worker(new URL(`../workers/local-speech.worker-CU_DjhLr.js`,import.meta.url).href,{name:e?.name})}var lt=2**28,ut=16,dt=.95;function ft(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function pt(e,t,n){for(let[e,r]of[[`fromRate`,t],[`toRate`,n]])if(!Number.isFinite(r)||r<=0)throw new Ne(`invalid_argument`,`${e} must be a positive finite number (got ${String(r)})`);let r=Math.floor(e.length*n/t);if(r>lt)throw new Ne(`invalid_argument`,`resampled output would be ${r} samples; the limit is ${lt}`);if(t===n)return e.slice();let i=new Float32Array(r),a=t/n,o=a>1?dt/a:1,s=ut/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*ft(o*r)*i;u+=a*e[t],d+=a}i[t]=d===0?0:u/d}return i}var mt={silenceMs:800,minSpeechMs:150,preRollMs:300,maxUtteranceMs:3e4,sensitivity:.5,calibrateMs:300},ht=.0015,gt=.003,_t=.006,vt=.2,yt=.02,bt=2e3,xt=250;function St(e,t,n){return Math.min(n,Math.max(t,e))}function Ct(e={}){let t=(e,t,n)=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,e):t;return{silenceMs:t(e.silenceMs,mt.silenceMs,20),minSpeechMs:t(e.minSpeechMs,mt.minSpeechMs,0),preRollMs:t(e.preRollMs,mt.preRollMs,0),maxUtteranceMs:t(e.maxUtteranceMs,mt.maxUtteranceMs,1e3),sensitivity:St(typeof e.sensitivity==`number`&&Number.isFinite(e.sensitivity)?e.sensitivity:mt.sensitivity,0,1),calibrateMs:t(e.calibrateMs,mt.calibrateMs,0)}}function wt(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 Tt(e={}){let t=Ct(e),n=6-4*t.sensitivity,r=.02-.015*t.sensitivity,i=gt,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=St(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=St(e[Math.min(e.length-1,Math.floor(e.length*vt))]??gt,ht,_t)}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/bt*(m<i?4:1);i=St(i+(m-i)*Math.min(1,e),ht,yt)}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 Et(e){let t=Ct(e),n=Tt(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-xt)/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(wt(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 Dt=44,Ot=4294967295,kt=1;function At(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 jt(e,t){if(!Number.isInteger(e)||e<1||e*2>Ot)throw new Ne(`invalid_argument`,`${t} must be a positive integer sample rate (got ${String(e)})`)}function Mt(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function Nt(e,t){jt(t,`sampleRate`);let n=e.length*2;if(n+Dt-8>Ot)throw new Ne(`invalid_argument`,`too many samples for a single WAV (4 GiB limit)`);let r=e instanceof Int16Array?e:At(e),i=new Uint8Array(Dt+n),a=new DataView(i.buffer);Mt(a,0,`RIFF`),a.setUint32(4,36+n,!0),Mt(a,8,`WAVE`),Mt(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,kt,!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),Mt(a,36,`data`),a.setUint32(40,n,!0);for(let e=0;e<r.length;e+=1)a.setInt16(Dt+e*2,r[e],!0);return i}var Pt=`hv-pcm-tap`,Ft=`
|
|
3
3
|
class HvPcmTap extends AudioWorkletProcessor {
|
|
4
4
|
process(inputs) {
|
|
5
5
|
const channels = inputs[0];
|
|
@@ -21,6 +21,6 @@ class HvPcmTap extends AudioWorkletProcessor {
|
|
|
21
21
|
registerProcessor('${Pt}', HvPcmTap);
|
|
22
22
|
`;function It(){return typeof AudioContext<`u`&&typeof AudioWorkletNode<`u`&&typeof Blob<`u`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}function Lt(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(!It())throw new Pe(`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([Ft],{type:`text/javascript`}));try{await i.audioWorklet.addModule(f)}finally{_()}d||(p=i.createMediaStreamSource(e),m=new AudioWorkletNode(i,Pt,{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 Pe(`setup_failed`,`PCM capture could not start`,e)}if(await v(),u)throw new Pe(`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=pt(e,i.sampleRate,n);return{samples:r,wav:Nt(r,n),truncated:c}})(),b},cancel(){u||(u=!0,o.length=0,v())}}}var Rt=16e3;function zt(){return It()&&typeof navigator<`u`&&typeof navigator.mediaDevices?.getUserMedia==`function`}var Bt=36e5;async function Vt(e={}){let t=e.createCapture??Lt;if(!e.createCapture&&!zt()&&!e.stream)throw new Pe(`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:Rt,maxDurationMs:Bt,retain:!1,onSamples:(t,n)=>{s||c||(l>0?l-=t.length/n*1e3:(o??=Et({...e,sampleRate:n,onSpeaking:e=>{e&&a(`speechstart`,{})},onLevel:e=>a(`level`,{level:e}),onUtterance:e=>{let t=pt(e.pcm,e.sampleRate,Rt);a(`speechend`,{samples:t,sampleRate:Rt,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 Pe(`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 Ht=e=>{let t=null,n=!1,r=!1,i=!1;return{async start(){let a=await Vt({...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 Ut(e){return Me({model:e,createWorker:()=>new ct,loadSpeech:()=>G(()=>import(`./Bcfb5I9y.js`),__vite__mapDeps([0,1,2]),import.meta.url)})}var Wt=`Qwen3-1.7B-q4f16_1-MLC`,Gt=[{id:Wt,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 Kt(e){return Gt.find(t=>t.id===e)}function qt(e){return e>=1e3?`about ${(e/1e3).toFixed(1)} GB`:`about ${e} MB`}function Jt(e){return e.label.replace(/\s*\(.*\)\s*$/,``)}var Yt=`Qwen3-4B-q4f16_1-MLC`;function Xt(e,t){return t>=e.vramMB*1e6*1.2}async function Zt(e=typeof navigator>`u`?void 0:navigator){try{return(await e?.gpu?.requestAdapter())?.limits?.maxBufferSize??0}catch{return 0}}function Qt(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
23
23
|
`)}var $t=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`}},en=class extends $t{constructor(e,t){super(`Model not found: ${e}`,`MODEL_NOT_FOUND`,t,e,!1),this.name=`ModelNotFoundError`}},tn=class extends $t{constructor(e,t){super(`Input exceeds maximum context length`,`CONTEXT_LENGTH_EXCEEDED`,e,t,!1),this.name=`ContextLengthError`}},nn=class extends $t{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`}},rn=class extends $t{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)}},an=12e4,on=Object.freeze({maxOutputTokens:131072,defaultOutputTokens:4096,maxReasoningTokens:1024,maxImagesPerRequest:1,onExceeded:`error`});function sn(e,t,n){if(e===void 0)return t;if(!Number.isFinite(e)||e<=0)throw new $t(`${n} must be a positive finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e)}function cn(e){let t=e.generationLimits||{},n={maxOutputTokens:sn(t.maxOutputTokens,on.maxOutputTokens,`generationLimits.maxOutputTokens`),defaultOutputTokens:Math.min(sn(t.defaultOutputTokens,on.defaultOutputTokens,`generationLimits.defaultOutputTokens`),sn(t.maxOutputTokens,on.maxOutputTokens,`generationLimits.maxOutputTokens`)),maxReasoningTokens:sn(t.maxReasoningTokens,on.maxReasoningTokens,`generationLimits.maxReasoningTokens`),maxImagesPerRequest:sn(t.maxImagesPerRequest,on.maxImagesPerRequest,`generationLimits.maxImagesPerRequest`),onExceeded:t.onExceeded||on.onExceeded};if(![`error`,`clamp`].includes(n.onExceeded))throw new $t(`generationLimits.onExceeded must be "error" or "clamp"`,`AI_LIMIT_INVALID`);return{...e,timeout:sn(e.timeout,an,`timeout`),maxRetries:(()=>{if(e.maxRetries===void 0)return 0;if(!Number.isFinite(e.maxRetries)||e.maxRetries<0)throw new $t(`maxRetries must be a non-negative finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e.maxRetries)})(),generationLimits:n}}function ln(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 un(e,t,n,r,i,a){if(!Number.isFinite(e)||e<0)throw new $t(`${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 $t(`${r} ${o} exceeds configured ceiling ${t}`,`AI_LIMIT_EXCEEDED`,i,a)}function dn(e,t,n,r){let i=cn(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??ln(t.reasoning?.effort??o)??i.maxReasoningTokens:0;return{...t,maxTokens:un(a,i.maxOutputTokens,i.onExceeded,`maxTokens`,n,r),reasoning:{...t.reasoning,maxTokens:un(s,i.maxReasoningTokens,i.onExceeded,`reasoning.maxTokens`,n,r),includeThoughts:t.reasoning?.includeThoughts??t.includeThoughts}}}function fn(e,t={}){let n=cn(e),r=sn(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 pn(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 mn=`webllm`,hn=4096,gn={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:hn,supportedOperations:[`chat`,`completion`,`streaming`,`functions`]},_n=new WeakMap,vn=new Map;async function yn(){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 rn(e)}}function bn(){return!!globalThis.navigator?.gpu}function xn(e){throw new $t(`${e} is not supported by the webllm provider.`,`NOT_SUPPORTED`,mn)}function Sn(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var Cn=class{options;explicitModel;factoryEngine;localEngines=new Map;constructor(e){this.explicitModel=e.defaultModel??e.model,this.options=cn({...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}),Dn(this.factoryEngine,t)):n;if(!bn())throw new nn(mn);let r=this.options.appConfig?this.localEngines:vn,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 Dn(i.promise,t)}finally{a&&i.listeners.delete(a)}}async createEngine(e,t){return(await yn()).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=Qt(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`?Sn({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 Sn({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 $t(`Generation was interrupted before it finished`,`AI_INTERRUPTED`,mn,t,!0)}mapError(e,t){if(e instanceof $t)return e;let n=e?.name??``,r=e instanceof Error?e.message:String(e);if(n===`WebGPUNotAvailableError`||n===`WebGPUNotFoundError`)return new nn(mn,r);if(n===`ContextWindowSizeExceededError`||n===`PrefillChunkSizeSmallerThanImageError`)return new tn(mn,t);if(n===`ModelNotFoundError`||n===`SpecifiedModelNotFoundError`||n===`UnsupportedModelIdError`||n===`ModelNotLoadedError`)return new en(t??r,mn);let i=new $t(r,n===`DeviceLostError`?`WEBGPU_DEVICE_LOST`:`API_ERROR`,mn,t);return i.cause=e,i}abortError(e,t,n){if(e?.didTimeout())return new $t(`AI request timed out after ${e.timeout}ms`,`AI_TIMEOUT`,mn,n);if(t.signal?.aborted)return new $t(`AI request aborted by caller`,`AI_ABORTED`,mn,n)}async lockEngine(e,t){let n=_n.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e});_n.set(e,n.then(()=>i));try{await Dn(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=dn(this.options,t,mn,c);let l=await this.acquireEngine(c,t.signal);r=fn(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 Dn(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 $t(`No choices returned from webllm`,`NO_CHOICES`,mn);let h=this.mapUsage(p.usage);pn(this.options,mn,`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?.(),Tn(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=dn(this.options,t,mn,u),a=await this.acquireEngine(u,t.signal),r=fn(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 Dn(d,r.signal)}catch(e){throw l=d.then(e=>En(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)),pn(this.options,mn,`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 wn(s)}i?.(),Tn(o,l),r?.cleanup()}}async countTokens(e){return Math.ceil(e.length/4)}async getModels(){let e=await yn(),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??hn,capabilities:[`text`,`chat`,...r?[`functions`]:[],...t?[`vision`]:[]],supportsFunctions:r,supportsVision:t}})}async getCapabilities(){return{...gn}}async embed(e,t={}){return xn(`Embeddings`)}async embedImage(e,t={}){return xn(`Image embeddings`)}async describeImage(e,t,n={}){return xn(`Image description`)}async generateImage(e,t={}){return xn(`Image generation`)}async submitVideoGenerationJob(e){return xn(`Video generation`)}async getVideoGenerationJob(e){return xn(`Video generation`)}async fetchVideoGenerationResult(e){return xn(`Video generation`)}async cancelVideoGenerationJob(e){return xn(`Video generation`)}async validateVideoGenerationAccess(){return xn(`Video generation`)}async synthesizeSpeech(e,t){return xn(`Text-to-speech`)}streamSpeech(e,t){let n=new $t(`Text-to-speech streaming is not supported by the webllm provider.`,`NOT_SUPPORTED`,mn);return{[Symbol.asyncIterator]:()=>({next:()=>Promise.reject(n)})}}async cloneVoice(e){return xn(`Voice cloning`)}async designVoice(e){return xn(`Voice design`)}async getVoices(e){return xn(`Voice listing`)}};async function wn(e){try{for(;!(await e.next()).done;);}catch{}}function Tn(e,t){e&&(t?t.then(e,e):e())}async function En(e,t){try{if((await e.next()).done)return;await Promise.resolve(t?.interruptGenerate())}catch{return}await wn(e)}function Dn(e,t){return t?t.aborted?Promise.reject(new $t(`AI request aborted by caller`,`AI_ABORTED`,mn)):new Promise((n,r)=>{let i=()=>r(new $t(`AI request aborted by caller`,`AI_ABORTED`,mn));t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}var On={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 kn(e,t,n,r=On){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 An=e=>!!e&&typeof e==`object`&&e.kind===`cookbook-offer`&&typeof e.offerId==`string`,jn=class{find;#e=k(F({}));get offers(){return e(this.#e)}set offers(e){W(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`)}},Mn=`smrt-planner:assistant:v1`;function Nn(){return{modelId:Wt,consented:[]}}function Pn(e){let t=Nn();try{let n=e?.getItem(Mn);if(!n)return t;let r=JSON.parse(n);typeof r.modelId==`string`&&Kt(r.modelId)&&(t.modelId=r.modelId),Array.isArray(r.consented)&&(t.consented=r.consented.filter(e=>typeof e==`string`&&!!Kt(e)))}catch{}return t}function Fn(e,t){try{e?.setItem(Mn,JSON.stringify(t))}catch{}}var In=e=>!!e&&typeof e==`object`&&e.kind===`theme-undo`&&typeof e.undoId==`string`,Ln=class{store;controller;#e=k(F({}));get undos(){return e(this.#e)}set undos(e){W(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(m(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`)}},Rn={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=ue({"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 zn(t,r){let i=O(r,`size`,3,`md`),a=n(()=>r.onlineStatus===`dnd`?`busy`:r.onlineStatus);de(t,{get name(){return r.name},get src(){return r.avatarUrl},get size(){return i()},get status(){return e(a)}})}function Bn(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 Vn=c(`<span class="tool-call__duration svelte-rtpofh"> </span>`),Hn=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>`),Un=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>`),Wn=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>`),Gn=c(`<div class="tool-call__running svelte-rtpofh"><div class="tool-call__spinner svelte-rtpofh"></div> <span class="svelte-rtpofh">Executing...</span></div>`),Kn=c(`<pre class="tool-call__json svelte-rtpofh"> </pre>`),qn=c(`<p class="tool-call__applied-fallback svelte-rtpofh"> </p>`),Jn=c(`<div class="tool-call__data-surface-action-buttons svelte-rtpofh"><!> <!></div>`),Yn=c(`<!> <!>`,1),Xn=c(`<pre class="tool-call__json tool-call__json--error svelte-rtpofh"> </pre>`),Zn=c(`<div class="tool-call__section tool-call__data-surface-action svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh"> </span> <!></div>`),Qn=c(`<div class="tool-call__body svelte-rtpofh"><!> <!> <!> <!> <!></div>`),$n=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 er(a,o){h(o,!0);let{t:c}=K(),u=n(()=>o.actionResult?o.actionResult.ok?o.actionResult.phase===`preview`?`awaiting-confirmation`:`applied`:`error`:o.toolCall.status),f=k(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)),g=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 v(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=$n(),S=P(b),w=P(S),T=I(w,2),E=R(T,!0),D=I(T,2),O=P(D),A=e=>{var t=Vn(),n=R(t,!0);H(e=>l(n,e),[()=>y(o.toolCall.duration)]),x(e,t)};t(O,e=>{o.toolCall.duration!==void 0&&e(A)});var j=I(O,2),M=R(j,!0),N=I(j,2);let F;s(D),s(S);var ee=I(S,2),te=r=>{var i=Qn(),a=P(i),u=e=>{var t=Hn(),n=I(P(t),2),r=R(n,!0);s(t),H(e=>l(r,e),[()=>v(o.toolCall.arguments)]),x(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=Un(),n=I(P(t),2),r=R(n,!0);s(t),H(e=>l(r,e),[()=>v(o.toolCall.result)]),x(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=Wn(),n=I(P(t),2),r=R(n,!0);s(t),H(()=>l(r,o.toolCall.error)),x(e,t)};t(h,e=>{o.toolCall.status===`error`&&o.toolCall.error&&e(g)});var y=I(h,2),b=e=>{var t=Gn(),n=P(t);_(2),s(t),H(e=>U(n,`aria-label`,e),[()=>c(Q[`chat.tool_call_display.running`])]),x(e,t)};t(y,e=>{o.toolCall.status===`running`&&e(b)});var S=I(y,2),C=e=>{var n=Zn(),r=P(n),i=R(r,!0),a=I(r,2),u=e=>{var n=Yn(),r=B(n),i=e=>{var t=Kn(),n=R(t,!0);H(e=>l(n,e),[()=>v(o.actionResult.details)]),x(e,t)},a=e=>{var t=qn(),n=R(t,!0);H(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.applied_successfully`])]),x(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=Jn(),n=P(t);Y(n,{type:`button`,size:`sm`,onclick:()=>o.onconfirmaction?.(),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.confirm`])]),x(e,n)},$$slots:{default:!0}});var r=I(n,2);Y(r,{type:`button`,variant:`secondary`,size:`sm`,onclick:()=>o.onrejectaction?.(),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c(Q[`chat.tool_call_display.reject`])]),x(e,n)},$$slots:{default:!0}}),s(t),x(e,t)};t(u,e=>{o.actionResult.phase===`preview`&&e(f)}),x(e,n)},f=e=>{var t=Xn(),n=R(t,!0);H(()=>l(n,o.actionResult.reason??`Action failed`)),x(e,t)};t(a,e=>{o.actionResult.ok?e(u):e(f,-1)}),s(n),H(()=>{U(n,`data-phase`,o.actionResult.phase),U(n,`data-ok`,o.actionResult.ok),l(i,o.actionResult.phase===`preview`?`Proposed change`:`Applied change`)}),x(e,n)};t(S,e=>{o.actionResult&&e(C)}),s(i),H(()=>U(i,`id`,`tool-call-body-${o.toolCall.toolCallId??``}`)),x(r,i)};t(ee,t=>{e(m)&&t(te)}),s(b),H(t=>{i(b,1,`tool-call tool-call--${e(u)??``}`,`svelte-rtpofh`),U(b,`aria-label`,t),U(S,`aria-expanded`,e(m)),U(S,`aria-controls`,`tool-call-body-${o.toolCall.toolCallId??``}`),U(w,`aria-label`,e(g)),l(E,o.toolCall.toolName),l(M,e(g)),F=i(N,0,`tool-call__chevron svelte-rtpofh`,null,F,{"tool-call__chevron--open":e(m)})},[()=>c(Q[`chat.tool_call_display.tool_call`],{toolName:o.toolCall.toolName})]),C(`click`,S,()=>W(f,!e(m))),x(a,b),r()}w([`click`]);var tr=c(`<div class="agent-chat__inactive-notice svelte-h8qbdq"> </div>`),nr=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>`),rr=c(`<!> <!>`,1),ir=c(`<div class="agent-chat__tool-row svelte-h8qbdq"><!></div>`),ar=c(`<span class="text-block svelte-h8qbdq"> </span>`),or=c(`<div class="field-update-block svelte-h8qbdq"><span class="applied-badge svelte-h8qbdq"> </span> <!></div>`),sr=c(`<div class="markdown-block svelte-h8qbdq"><pre class="markdown-block__content svelte-h8qbdq"><code class="svelte-h8qbdq"> </code></pre> <!></div>`),cr=c(`<div><div><div class="agent-chat__msg-content svelte-h8qbdq"><!></div> <time class="agent-chat__msg-time svelte-h8qbdq"> </time></div></div>`),lr=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>`),ur=c(`<div class="agent-chat__empty svelte-h8qbdq"><span class="agent-chat__empty-text svelte-h8qbdq"> </span></div>`),dr=c(`<div class="diff-field svelte-h8qbdq"><span class="diff-field__name svelte-h8qbdq"> </span> <pre class="diff-field__value svelte-h8qbdq"> </pre></div>`),fr=c(`<div class="diff-dialog__body svelte-h8qbdq"></div>`),pr=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 mr(a,o){h(o,!0);let{t:c}=K(),u=O(o,`loading`,3,!1),f=k(``),m=k(void 0),g=n(()=>o.session.status===`active`),b=k(null),C=k(void 0);function w(t){W(b,t,!0),e(C)?.showModal()}function T(){e(C)?.close(),W(b,null)}function E(t){t.preventDefault();let n=e(f).trim();n&&e(g)&&(o.onsend(n),W(f,``))}function D(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),E(e))}function M(e){return(typeof e==`string`?new Date(e):e).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`})}A(()=>{o.messages.length&&e(m)&&(e(m).scrollTop=0)});var N=pr(),F=B(N),ee=P(F);Se(ee,{class:`agent-chat__input-bar`,onsubmit:e=>E(e),children:(r,i)=>{var a=S(),s=B(a),u=e=>{var t=tr(),n=R(t,!0);H(e=>l(n,e),[()=>c(Q[`chat.agent_chat.inactive_notice`],{status:o.session.status})]),x(e,t)},d=t=>{var r=rr(),i=B(r);{let t=n(()=>c(Q[`chat.agent_chat.input_placeholder`])),r=n(()=>!e(g)),a=n(()=>c(Q[`chat.agent_chat.message_input`]));De(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){W(f,e,!0)}})}var a=I(i,2);{let t=n(()=>!e(f).trim()||!e(g)),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=nr();x(e,n)},$$slots:{default:!0}})}x(t,r)};t(s,t=>{e(g)?t(d,-1):t(u)}),x(r,a)},$$slots:{default:!0}});var te=I(ee,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=S(),h=B(m),g=t=>{var n=ir();er(P(n),{get toolCall(){return e(a).toolCallData}}),s(n),x(t,n)},y=n=>{var r=cr();let m;var h=P(r);let g;var y=P(h),b=P(y),C=t=>{var n=d();H(()=>l(n,e(a).content)),x(t,n)},T=n=>{var r=S(),i=B(r);p(i,17,()=>Bn(e(a).content||``),v,(n,r)=>{var i=S(),a=B(i),u=t=>{var n=ar(),i=R(n,!0);H(()=>l(i,e(r).content)),x(t,n)},f=t=>{var n=or(),i=P(n),a=R(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)=>{_();var n=d(`Diff`);x(e,n)},$$slots:{default:!0}}),s(n),H(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`})]),x(t,n)},p=n=>{var i=sr(),a=P(i),c=P(a),u=R(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)=>{_();var n=d(`Apply`);x(e,n)},$$slots:{default:!0}})};t(f,e=>{o.onapplychange&&e(p)}),s(i),H(()=>l(u,e(r).content)),x(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)}),x(n,i)}),x(n,r)};t(b,t=>{e(u)?t(C):t(T,-1)}),s(y);var E=I(y,2),D=R(E,!0);s(h),s(r),H(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)},[()=>M(e(a).createdAt)]),x(n,r)};t(h,t=>{e(f)&&e(a).toolCallData?t(g):t(y,-1)}),x(r,m)});var ne=I(L,2),re=e=>{var t=lr();x(e,t)};t(ne,e=>{u()&&e(re)});var z=I(ne,2),ie=e=>{var t=ur(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>c(Q[`chat.agent_chat.empty`])]),x(e,t)};t(z,e=>{o.messages.length===0&&!u()&&e(ie)}),s(te),j(te,e=>W(m,e),()=>e(m)),s(F);var V=I(F,2),ae=P(V),oe=P(ae),se=R(oe,!0),ce=I(oe,2);Y(ce,{variant:`ghost`,size:`sm`,class:`diff-dialog__close`,type:`button`,onclick:T,children:(e,t)=>{_();var n=d(`✕`);x(e,n)},$$slots:{default:!0}}),s(ae);var G=I(ae,2),le=t=>{var r=fr();p(r,21,()=>Object.entries(e(b)),v,(t,r)=>{var i=n(()=>y(e(r),2));let a=()=>e(i)[0],o=()=>e(i)[1];var c=dr(),u=P(c),d=R(u,!0),f=I(u,2),p=R(f,!0);s(c),H(()=>{l(d,a()),l(p,o())}),x(t,c)}),s(r),x(t,r)};t(G,t=>{e(b)&&t(le)}),s(V),j(V,e=>W(C,e),()=>e(C)),H((e,t,n)=>{U(F,`aria-label`,e),U(te,`aria-label`,t),l(se,n)},[()=>c(Q[`chat.agent_chat.conversation`]),()=>c(Q[`chat.agent_chat.messages`]),()=>c(Q[`chat.agent_chat.field_changes`])]),x(a,N),r()}var hr=c(`<span class="agent-selector__unavailable-badge svelte-3xwzgp">Unavailable</span>`),gr=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>`),_r=c(`<div class="agent-selector__empty svelte-3xwzgp"><span class="agent-selector__empty-text svelte-3xwzgp"> </span></div>`),vr=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 yr(n,a){h(a,!0);let{t:o}=K();var c=vr(),u=P(c),d=R(u,!0),f=I(u,2);p(f,21,()=>a.agents,e=>e.id,(n,r)=>{var o=gr();let c;U(o,`aria-selected`,!1);var u=P(o);zn(u,{get name(){return e(r).name},get avatarUrl(){return e(r).avatarUrl},size:`lg`});var d=I(u,2),f=P(d),p=R(f,!0),m=I(f,2),h=R(m,!0);s(d);var g=I(d,2),_=e=>{var t=hr();x(e,t)};t(g,t=>{e(r).isAvailable||t(_)}),s(o),H(()=>{c=i(o,1,`agent-selector__card svelte-3xwzgp`,null,c,{"agent-selector__card--unavailable":!e(r).isAvailable}),U(o,`aria-disabled`,!e(r).isAvailable),o.disabled=!e(r).isAvailable,l(p,e(r).name),l(h,e(r).description)}),C(`click`,o,()=>a.onselect(e(r).id)),x(n,o)}),s(f);var m=I(f,2),g=e=>{var t=_r(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>o(Q[`chat.agent_selector.empty`])]),x(e,t)};t(m,e=>{a.agents.length===0&&e(g)}),s(c),H((e,t,n)=>{U(c,`aria-label`,e),l(d,t),U(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`])]),x(n,c),r()}w([`click`]);var br=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>`),xr=c(`<span class="session-panel__tool-chip svelte-1l3fy3e"> </span>`),Sr=c(`<span class="session-panel__tool-chip session-panel__tool-chip--more svelte-1l3fy3e"> </span>`),Cr=c(`<div class="session-panel__item-tools svelte-1l3fy3e"><!> <!></div>`),wr=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>`),Tr=c(`<div class="session-panel__empty svelte-1l3fy3e"><span class="session-panel__empty-text svelte-1l3fy3e"> </span></div>`),Er=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 Dr(a,o){h(o,!0);let{t:c}=K();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=Er(),m=P(f),g=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=br();x(e,n)},$$slots:{default:!0}})}};t(g,e=>{o.onnewsession&&e(_)}),s(m);var y=I(m,2),b=P(y);p(b,17,()=>o.sessions,e=>e.id,(r,a)=>{let c=n(()=>e(a).id===o.currentSessionId);var f=wr();let m;var h=P(f);zn(h,{get name(){return e(a).agentName},get avatarUrl(){return e(a).agentAvatarUrl},size:`sm`});var g=I(h,2),_=P(g),y=P(_),b=R(y,!0),S=I(y,2),w=R(S,!0);s(_);var T=I(_,2),E=P(T);let D;var O=R(E,!0),k=I(E,2),A=R(k);s(T);var j=I(T,2),M=n=>{var r=Cr(),i=P(r);p(i,17,()=>e(a).allowedTools.slice(0,3),v,(t,n)=>{var r=xr(),i=R(r,!0);H(()=>l(i,e(n))),x(t,r)});var o=I(i,2),c=t=>{var n=Sr(),r=R(n);H(()=>l(r,`+${e(a).allowedTools.length-3}`)),x(t,n)};t(o,t=>{e(a).allowedTools.length>3&&t(c)}),s(r),x(n,r)};t(j,t=>{e(a).allowedTools.length>0&&t(M)}),s(g),s(f),H(t=>{m=i(f,1,`session-panel__item svelte-1l3fy3e`,null,m,{"session-panel__item--active":e(c)}),U(f,`aria-selected`,e(c)),l(b,e(a).agentName),l(w,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)]),C(`click`,f,()=>o.onselectsession(e(a).id)),x(r,f)});var S=I(b,2),w=e=>{var t=Tr(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>c(Q[`chat.agent_session_panel.empty`])]),x(e,t)};t(S,e=>{o.sessions.length===0&&e(w)}),s(y),s(f),H((e,t)=>{U(f,`aria-label`,e),U(y,`aria-label`,t)},[()=>c(Q[`chat.agent_session_panel.sessions`]),()=>c(Q[`chat.agent_session_panel.session_list`])]),x(a,f),r()}w([`click`]);var Or=Symbol(`caption-overlay`),kr=c(`<div class="caption-overlay-controls svelte-x4r42u"><!> <!></div>`),Ar=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 jr(n,i){h(i,!0);let a=O(i,`label`,3,`Captions`),{t:c}=K();te(Or,!0);let u,f,p,m=k(!1),g=k(!0),v=k(!1);function y(){W(g,f.scrollTop<=0),W(v,Math.ceil(f.scrollTop+f.clientHeight)>=f.scrollHeight)}function b(e){f.scrollBy({top:e*f.clientHeight,behavior:`instant`}),y()}A(()=>{let e=new ResizeObserver(()=>{W(m,p.scrollHeight>u.clientHeight),y()});return e.observe(u),e.observe(f),e.observe(p),()=>e.disconnect()});var S=Ar(),C=P(S),w=P(C),E=P(w);o(E,()=>i.children),s(w),j(w,e=>p=e,()=>p),s(C),j(C,e=>f=e,()=>f);var D=I(C,2),M=t=>{var n=kr(),r=P(n);Y(r,{size:`sm`,get disabled(){return e(g)},onclick:()=>b(-1),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c(Q[`chat.caption_overlay.scroll_up`])]),x(e,n)},$$slots:{default:!0}});var i=I(r,2);Y(i,{size:`sm`,get disabled(){return e(v)},onclick:()=>b(1),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c(Q[`chat.caption_overlay.scroll_down`])]),x(e,n)},$$slots:{default:!0}}),s(n),x(t,n)};t(D,t=>{e(m)&&t(M)}),s(S),j(S,e=>u=e,()=>u),H(()=>U(S,`aria-label`,a())),T(`scroll`,C,y),x(n,S),r()}var Mr=c(`<p class="svelte-s0z1g9"> </p>`),Nr=c(`<p class="interim svelte-s0z1g9" aria-hidden="true"> </p>`),Pr=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 Fr(i,o){h(o,!0);let c=n=>{var r=Pr(),i=P(r),a=R(i,!0),o=I(i,2);p(o,21,()=>e(y),e=>e.id,(t,n)=>{var r=Mr(),i=R(r,!0);H(()=>l(i,e(n).text)),x(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Nr(),n=R(t,!0);H(()=>l(n,f())),x(e,t)};t(c,e=>{f()&&e(u)}),s(r),H(()=>{U(r,`aria-label`,_()),l(a,_())}),x(n,r)},u=O(o,`enabled`,3,!1),d=O(o,`lines`,19,()=>[]),f=O(o,`interim`,3,``),m=O(o,`placement`,3,`bottom`),g=O(o,`maxLines`,3,3),_=O(o,`speakerLabel`,3,`You said`),v=a(Or)??!1,y=n(()=>d().slice(-Math.max(1,g())));var b=S(),C=B(b),w=e=>{var n=S(),r=B(n),i=e=>{jr(e,{children:(e,t)=>{c(e)},$$slots:{default:!0}})},a=e=>{c(e)};t(r,e=>{m()===`bottom`&&!v?e(i):e(a,-1)}),x(e,n)};t(C,t=>{u()&&(e(y).length>0||f())&&t(w)}),x(i,b),r()}var Ir=c(`<p class="svelte-1h07s25"> </p>`),Lr=c(`<p class="interim svelte-1h07s25" aria-hidden="true"> </p>`),Rr=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 zr(i,o){h(o,!0);let c=n=>{var r=Rr(),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=Ir(),i=R(r,!0);H(()=>l(i,e(n).text)),x(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Lr(),n=R(t,!0);H(()=>l(n,f())),x(e,t)};t(c,e=>{f()&&e(u)}),s(r),H(()=>{U(r,`aria-label`,_()),l(a,` ${_()??``}`),U(o,`aria-live`,v()?`polite`:`off`)}),x(n,r)},u=O(o,`enabled`,3,!1),d=O(o,`lines`,19,()=>[]),f=O(o,`interim`,3,``),m=O(o,`placement`,3,`bottom`),g=O(o,`maxLines`,3,3),_=O(o,`speakerLabel`,3,`Assistant is speaking`),v=O(o,`announce`,3,!1),y=a(Or)??!1,b=n(()=>d().slice(-Math.max(1,g())));var C=S(),w=B(C),T=e=>{var n=S(),r=B(n),i=e=>{jr(e,{children:(e,t)=>{c(e)},$$slots:{default:!0}})},a=e=>{c(e)};t(r,e=>{m()===`bottom`&&!y?e(i):e(a,-1)}),x(e,n)};t(w,t=>{u()&&(e(b).length>0||f())&&t(T)}),x(i,C),r()}var Br=c(`<!> <!>`,1),Vr=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>`),Hr=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 Ur(t,a){h(a,!0);let o=[],{t:c}=K(),u=k(``),f=k(`public`),m=k(``),g=n(()=>e(u).trim().length>0),v=[{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(g)&&(a.oncreate({name:e(u).trim(),roomType:e(f),description:e(m).trim()}),S())}function b(){S(),a.onclose()}function S(){W(u,``),W(f,`public`),W(m,``)}A(()=>{if(a.isOpen&&typeof document<`u`){let e=requestAnimationFrame(()=>{document.getElementById(`room-name`)?.focus()});return()=>cancelAnimationFrame(e)}});{let r=t=>{var r=Br(),i=B(r);Y(i,{variant:`secondary`,type:`button`,onclick:b,children:(e,t)=>{_();var n=d(`Cancel`);x(e,n)},$$slots:{default:!0}});var a=I(i,2);{let t=n(()=>!e(g));Y(a,{variant:`primary`,type:`button`,get disabled(){return e(t)},onclick:y,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c(Q[`chat.room_create_dialog.create_room`])]),x(e,n)},$$slots:{default:!0}})}x(t,r)},h=n(()=>c(Q[`chat.room_create_dialog.title`])),S=n(()=>c(Q[`chat.room_create_dialog.title`]));le(t,{get open(){return a.isOpen},onClose:b,get title(){return e(h)},size:`md`,get ariaLabel(){return e(S)},footer:r,children:(t,r)=>{Se(t,{class:`dialog__form`,onsubmit:e=>{e.preventDefault(),y()},children:(t,r)=>{var a=Hr(),d=B(a),h=P(d),_=P(h),y=I(_);s(h);var b=I(h,2);{let t=n(()=>c(Q[`chat.room_create_dialog.name_placeholder`]));ge(b,{id:`room-name`,type:`text`,get placeholder(){return e(t)},maxlength:100,autocomplete:`off`,get value(){return e(u)},set value(e){W(u,e,!0)}})}s(d);var S=I(d,2),C=P(S),w=R(C,!0),T=I(C,2);p(T,21,()=>v,e=>e.value,(t,n)=>{var r=Vr();let a;var c=P(r);E(c);var u,d=I(c,2),p=P(d),m=R(p,!0),h=I(p,2),g=R(h,!0);s(d),s(r),H(()=>{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=>W(f,e)),x(t,r)}),s(T),s(S);var D=I(S,2),O=I(P(D),2);{let t=n(()=>c(Q[`chat.room_create_dialog.description_placeholder`]));De(O,{id:`room-description`,get placeholder(){return e(t)},rows:3,maxlength:500,get value(){return e(m)},set value(e){W(m,e,!0)}})}var k=I(O,2),A=R(k);s(D);var j=I(D,2);H((t,n,r)=>{l(_,`${t??``} `),U(y,`aria-label`,n),l(w,r),l(A,`${e(m).length??``}/500`),j.disabled=!e(g)},[()=>c(Q[`chat.room_create_dialog.room_name`]),()=>c(Q[`chat.room_create_dialog.required`]),()=>c(Q[`chat.room_create_dialog.room_type`])]),x(t,a)},$$slots:{default:!0}})},$$slots:{footer:!0,default:!0}})}r()}var Wr=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>`),Gr=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>`),Kr=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>`),qr=c(`<img class="result-item__avatar svelte-qy9dvp" alt=""/>`),Jr=c(`<span class="result-item__avatar-placeholder svelte-qy9dvp"> </span>`),Yr=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>`),Xr=c(`<p class="results-count svelte-qy9dvp"> </p> <ul class="results-list svelte-qy9dvp"></ul>`,1),Zr=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>`),Qr=c(`<div class="search-empty svelte-qy9dvp" role="status"><p class="search-empty__text svelte-qy9dvp"> </p></div>`),$r=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 ei(i,a){h(a,!0);let{t:o}=K(),c=k(``),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 g(){let t=e(c).trim();t.length>0&&a.onsearch(t)}function _(){W(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 w(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>`)}A(()=>{if(!a.isOpen||typeof window>`u`)return;let e=e=>{v(e)};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}}),A(()=>{if(a.isOpen){let e=requestAnimationFrame(m);return()=>cancelAnimationFrame(e)}});var T=S(),E=B(T),D=r=>{var i=$r(),h=P(i),v=P(h),b=R(v,!0),S=I(v,2);{let t=n(()=>o(Q[`chat.search_messages.close`]));Y(S,{variant:`ghost`,size:`sm`,class:`close-btn`,type:`button`,onclick:_,get"aria-label"(){return e(t)},children:(e,t)=>{var n=Wr();x(e,n)},$$slots:{default:!0}})}s(h);var T=I(h,2);Se(T,{class:`search-form`,onsubmit:e=>{e.preventDefault(),g()},children:(r,i)=>{var a=Kr(),l=I(P(a),2);{let t=n(()=>o(Q[`chat.search_messages.input_placeholder`])),r=n(()=>o(Q[`chat.search_messages.query`]));ge(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){W(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:()=>{W(c,``),m()},get"aria-label"(){return e(r)},children:(e,t)=>{var n=Gr();x(e,n)},$$slots:{default:!0}})}};t(u,t=>{e(f)&&t(d)}),s(a),x(r,a)},$$slots:{default:!0}});var E=I(T,2),D=P(E),O=n=>{var r=Xr(),i=B(r),d=R(i,!0),f=I(i,2);p(f,21,()=>a.results,e=>e.id,(n,r)=>{var i=Yr(),o=P(i),d=P(o),f=P(d),p=t=>{var n=qr();H(()=>U(n,`src`,e(r).senderAvatarUrl)),x(t,n)},m=t=>{var n=Jr(),i=R(n,!0);H(e=>l(i,e),[()=>e(r).senderName.charAt(0).toUpperCase()]),x(t,n)};t(f,t=>{e(r).senderAvatarUrl?t(p):t(m,-1)});var h=I(f,2),g=R(h,!0),_=I(h,2),v=R(_,!0);s(d);var b=I(d,2);u(b,()=>w(e(r).content.length>200?e(r).content.slice(0,200)+`...`:e(r).content,e(c)),!0),s(b),s(o),s(i),H(t=>{l(g,e(r).senderName),l(v,t)},[()=>y(e(r).createdAt)]),C(`click`,o,()=>a.onselectresult?.(e(r).id)),x(n,i)}),s(f),H((e,t)=>{l(d,e),U(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`])]),x(n,r)},k=t=>{var n=Zr(),r=P(n),i=R(r,!0),a=I(r,2),u=R(a,!0);s(n),H((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`])]),x(t,n)},A=e=>{var t=Qr(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>o(Q[`chat.search_messages.empty`])]),x(e,t)};t(D,t=>{e(d)?t(O):e(f)?t(k,1):t(A,-1)}),s(E),s(i),H((e,t,n)=>{U(i,`aria-label`,e),l(b,t),U(E,`aria-label`,n)},[()=>o(Q[`chat.search_messages.search`]),()=>o(Q[`chat.search_messages.title`]),()=>o(Q[`chat.search_messages.results`])]),x(r,i)};t(E,e=>{a.isOpen&&e(D)}),x(i,T),r()}w([`click`]);var $=ue({"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`}),ti=c(`<p class="message svelte-1ocwb6j"> </p>`),ni=c(`<p class="message svelte-1ocwb6j" role="status"> </p>`),ri=c(`<p> </p>`),ii=c(`<div class="preview svelte-1ocwb6j"></div>`),ai=c(`<div class="setup-actions svelte-1ocwb6j"></div>`),oi=c(`<section class="custom-setup svelte-1ocwb6j"><!> <!></section>`),si=c(`<option> </option>`),ci=c(`<option> </option><option> </option>`,1),li=c(`<label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <!> <!>`,1),ui=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),di=c(`<section class="helper-panel svelte-1ocwb6j" aria-labelledby="helper-panel-title" data-smrt-component="HelperControlPanel"><h2 id="helper-panel-title"> </h2> <!> <!> <!></section>`);function fi(i,a){let o=ie();h(a,!0);let{t:c}=K(),u=O(a,`snapshot`,15),f=k(!u()),m=k(!1),v=k(null),y=k(!1),b=k(F(u()?.preferences?{...u().preferences}:u()?.recoveryDraft?{...u().recoveryDraft}:null)),w=null,T=null,E=k(null),D=k(void 0),M=k(void 0),N=k(null);A(()=>{if(!u())return;let e=T===ce(u())?w:null;e||(w=null,T=null),W(b,e??(u().preferences?{...u().preferences}:u().recoveryDraft?{...u().recoveryDraft}:null),!0)}),A(()=>{if(u()){W(f,!1);return}let e=!0;return a.client.load().then(t=>{e&&(u(t),W(b,t.preferences?{...t.preferences}:t.recoveryDraft?{...t.recoveryDraft}:null,!0))}).catch(t=>{e&&W(v,t instanceof Error?t.message:c($[`chat.helper.load_failed`]),!0)}).finally(()=>{e&&W(f,!1)}),()=>{e=!1}});let ee=e=>!!u()?.permissions.editableFields.includes(e),te=n(()=>!!e(b)&&(u()?.permissions.editableFields.length??0)>0),L=n(()=>u()?.preferences??null),ne=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)),re=n(()=>(u()?.offerings??[]).filter(e=>a.registry.get(e.styleId))),z=n(()=>ee(`offeringId`)?Math.max(0,e(re).findIndex(t=>t.id===e(b)?.offeringId)):-1),V=n(()=>a.registry.list().filter(e=>e.Setup&&u()?.permissions.customStyleIds.includes(e.id))),oe=n(()=>e(b)?e(re).find(t=>t.id===e(b)?.offeringId)??null:u()?.offering??null);A(()=>{let t=e(oe),n=t?a.registry.get(t.styleId):void 0,r=e(M),i=!1,o=null;if(W(N,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||W(N,e instanceof Error?e.message:c($[`chat.helper.preview_failed`]),!0)}})(),()=>{i=!0,o?.destroy(),o=null}});function se(t,n){e(b)&&(W(b,{...e(b),[t]:n},!0),e(y)||W(v,null))}function ce(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 G(t){let n=e(re).findIndex(e=>e.id===t);ae().then(()=>document.getElementById(`${o}-offering-${n}`)?.focus())}function le(){let t=e(E);W(E,null),t&&ae().then(()=>document.getElementById(`${o}-setup-${t}`)?.focus())}function ue(t){W(E,t,!0),ae().then(()=>e(D)?.querySelector(`button`)?.focus())}function q(t){if(!e(b)||!ee(`offeringId`))return;let n=e(re);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(),se(`offeringId`,n[i].id),G(n[i].id))}async function de(){if(e(b)&&!e(m)){W(m,!0),W(v,null),W(y,!1);try{J(await a.client.save(e(b))),W(v,c($[`chat.helper.saved`]),!0)}catch(e){W(v,e instanceof Error?e.message:c($[`chat.helper.save_failed`]),!0),W(y,!0)}finally{W(m,!1)}}}async function fe(){if(!e(m)&&u()?.permissions.canReset){W(m,!0),W(v,null),W(y,!1);try{J(await a.client.reset()),W(v,c($[`chat.helper.reset`]),!0)}catch(e){W(v,e instanceof Error?e.message:c($[`chat.helper.reset_failed`]),!0),W(y,!0)}finally{W(m,!1)}}}function J(e){w=null,T=null,u(e),W(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]);w={...e,offeringId:o.id},T=ce(r)}else w=null,T=null;W(b,w??(i?{...i}:null),!0),a.onchanged?.(r),W(E,null),W(v,c($[`chat.helper.photo_saved_apply`]),!0),W(y,!1),o&&G(o.id)}catch(e){W(v,e instanceof Error?e.message:c($[`chat.helper.load_failed`]),!0),W(y,!0)}}var me=di(),X=P(me),he=R(X,!0),_e=I(X,2),ve=t=>{var n=ti(),r=R(n,!0);H(()=>{U(n,`role`,e(y)?`alert`:`status`),U(n,`aria-live`,e(y)?`assertive`:`polite`),l(r,e(v))}),x(t,n)};t(_e,t=>{e(v)&&t(ve)});var ye=I(_e,2),xe=e=>{var t=ni(),n=R(t,!0);H(()=>l(n,u().recovery.message)),x(e,t)};t(ye,e=>{u()?.recovery&&e(xe)});var Se=I(ye,2),Ce=e=>{var t=ri(),n=R(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.loading`])]),x(e,t)},we=e=>{var t=ri(),n=R(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.unavailable`])]),x(e,t)},Ee=r=>{var i=ui(),f=B(i),h=P(f),v=R(h,!0),y=I(h,2);p(y,23,()=>e(re),e=>e.id,(t,r,i)=>{{let a=n(()=>`${o}-offering-${e(i)}`),s=n(()=>e(z)===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)||!ee(`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:()=>se(`offeringId`,e(r).id),children:(t,n)=>{_();var i=d();H(()=>l(i,e(r).label)),x(t,i)},$$slots:{default:!0}})}}),s(y);var w=I(y,2),T=t=>{var n=ii();j(n,e=>W(M,e),()=>e(M)),H(e=>U(n,`aria-label`,e),[()=>c($[`chat.helper.preview`])]),x(t,n)};t(w,t=>{e(oe)&&t(T)});var O=I(w,2),k=t=>{var n=ni(),r=R(n,!0);H(()=>l(r,e(N))),x(t,n)};t(O,t=>{e(N)&&t(k)});var A=I(O,2),F=t=>{var r=ai();p(r,21,()=>e(V),e=>e.id,(t,r)=>{{let i=n(()=>`${o}-setup-${e(r).id}`),a=n(()=>!ee(`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)=>{_();var i=d();H(e=>l(i,e),[()=>c($[`chat.helper.add_style`],{style:e(r).label})]),x(t,i)},$$slots:{default:!0}})}}),s(r),x(t,r)};t(A,t=>{e(V).length&&t(F)});var L=I(A,2),ie=r=>{let i=n(()=>a.registry.get(e(E))?.Setup);var o=oi(),u=P(o);Y(u,{type:`button`,variant:`secondary`,onclick:le,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c($[`chat.helper.back_to_settings`])]),x(e,n)},$$slots:{default:!0}});var f=I(u,2),p=t=>{var n=S(),r=B(n);g(r,()=>e(i),(e,t)=>{t(e,{onsaved:pe,oncancel:le})}),x(t,n)};t(f,t=>{e(i)&&t(p)}),s(o),j(o,e=>W(D,e),()=>e(D)),H(e=>U(o,`aria-label`,e),[()=>c($[`chat.helper.custom_setup`])]),x(r,o)},ae=n(()=>e(E)&&a.registry.get(e(E))?.Setup);t(L,t=>{e(ae)&&t(ie)});var ce=I(L,2),G=t=>{var r=li(),i=B(r),a=P(i,!0),o=I(a);{let t=n(()=>!ee(`name`));ge(o,{get value(){return e(b).name},get disabled(){return e(t)},oninput:e=>se(`name`,e.currentTarget.value)})}s(i);var d=I(i,2),f=P(d,!0),m=I(f);{let t=n(()=>!ee(`voiceId`));be(m,{get value(){return e(b).voiceId},get disabled(){return e(t)},onchange:e=>se(`voiceId`,e.currentTarget.value),children:(t,n)=>{var r=S(),i=B(r);p(i,17,()=>u().voices,e=>e.id,(t,n)=>{var r=si(),i=R(r,!0),a={};H(()=>{l(i,e(n).label),a!==(a=e(n).id)&&(r.value=(r.__value=a)??``)}),x(t,r)}),x(t,r)},$$slots:{default:!0}})}s(d);var h=I(d,2),g=P(h,!0),_=I(g);{let t=n(()=>!ee(`placement`));be(_,{get value(){return e(b).placement},get disabled(){return e(t)},onchange:e=>se(`placement`,e.currentTarget.value),children:(e,t)=>{var n=ci(),r=B(n),i=R(r,!0);r.value=r.__value=`bottom-left`;var a=I(r),o=R(a,!0);a.value=a.__value=`bottom-right`,H((e,t)=>{l(i,e),l(o,t)},[()=>c($[`chat.helper.bottom_left`]),()=>c($[`chat.helper.bottom_right`])]),x(e,n)},$$slots:{default:!0}})}s(h);var v=I(h,2);{let t=n(()=>c($[`chat.helper.heard_subtitles`])),r=n(()=>!ee(`heardSubtitles`));Te(v,{get label(){return e(t)},get checked(){return e(b).heardSubtitles},get disabled(){return e(r)},onchange:e=>se(`heardSubtitles`,e.currentTarget.checked)})}var y=I(v,2);{let t=n(()=>c($[`chat.helper.spoken_subtitles`])),r=n(()=>!ee(`spokenSubtitles`));Te(y,{get label(){return e(t)},get checked(){return e(b).spokenSubtitles},get disabled(){return e(r)},onchange:e=>se(`spokenSubtitles`,e.currentTarget.checked)})}H((e,t,n)=>{l(a,e),l(f,t),l(g,n)},[()=>c($[`chat.helper.name`]),()=>c($[`chat.helper.voice`]),()=>c($[`chat.helper.placement`])]),x(t,r)},K=e=>{var t=ti(),n=R(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.unavailable`])]),x(e,t)};t(ce,t=>{e(b)?t(G):t(K,-1)}),s(f);var J=I(f,2),me=e=>{var t=ni(),n=R(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.unsaved_changes`])]),x(e,t)};t(J,t=>{e(ne)&&t(me)});var X=I(J,2),he=P(X),_e=t=>{{let r=n(()=>e(m)||!e(ne));Y(t,{type:`button`,onclick:de,get disabled(){return e(r)},children:(t,n)=>{_();var r=d();H(e=>l(r,e),[()=>e(m)?c($[`chat.helper.saving`]):c($[`chat.helper.save_changes`])]),x(t,r)},$$slots:{default:!0}})}};t(he,t=>{e(te)&&t(_e)});var ve=I(he),ye=t=>{Y(t,{type:`button`,variant:`secondary`,onclick:fe,get disabled(){return e(m)},children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>c($[`chat.helper.reset_button`])]),x(e,n)},$$slots:{default:!0}})};t(ve,e=>{u().permissions.canReset&&e(ye)}),s(X),H((t,n)=>{f.disabled=e(m),l(v,t),U(y,`aria-label`,n)},[()=>c($[`chat.helper.gallery`]),()=>c($[`chat.helper.gallery`])]),C(`keydown`,y,q),x(r,i)};t(Se,t=>{e(f)?t(Ce):u()?t(Ee,-1):t(we,1)}),s(me),H(t=>{U(me,`aria-busy`,e(f)||e(m)),l(he,t)},[()=>c($[`chat.helper.title`])]),x(i,me),r()}w([`keydown`]);var pi=c(`<div class="room-list__header svelte-p0wx6n"><!></div>`),mi=c(`<span class="unread-badge svelte-p0wx6n"> </span>`),hi=c(`<li><button type="button"><span class="room-item__icon svelte-p0wx6n"> </span> <span class="room-item__name svelte-p0wx6n"> </span> <!></button></li>`),gi=c(`<ul class="room-group__list svelte-p0wx6n" role="list"></ul>`),_i=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>`),vi=c(`<img class="room-item__avatar svelte-p0wx6n" alt=""/>`),yi=c(`<span class="room-item__avatar-placeholder svelte-p0wx6n"> </span>`),bi=c(`<span class="room-item__preview svelte-p0wx6n"> </span>`),xi=c(`<span class="room-item__time svelte-p0wx6n"> </span>`),Si=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>`),Ci=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>`),wi=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>`),Ti=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>`),Ei=c(`<div class="room-list__empty svelte-p0wx6n"><p class="svelte-p0wx6n"> </p> <!></div>`),Di=c(`<nav class="room-list svelte-p0wx6n" data-smrt-component="RoomList"><!> <!> <!> <!> <!></nav>`);function Oi(a,o){h(o,!0);let{t:c}=K(),u=F({}),f=n(()=>o.rooms.filter(e=>e.roomType===`public`||e.roomType===`private`)),m=n(()=>o.rooms.filter(e=>e.roomType===`dm`)),g=n(()=>o.rooms.filter(e=>e.roomType===`agent`));function v(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 S=Di(),w=P(S),T=t=>{var r=pi(),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)=>{_();var n=d();H(e=>l(n,e),[()=>c($[`chat.room_list.new_room`])]),x(e,n)},$$slots:{default:!0}})}s(r),x(t,r)};t(w,e=>{o.oncreateroom&&e(T)});var E=I(w,2),D=n=>{var r=_i(),a=P(r),d=P(a);let m;var h=I(d,4),g=R(h,!0);s(a);var _=I(a,2),b=n=>{var r=gi();p(r,21,()=>e(f),e=>e.id,(n,r)=>{var a=hi(),u=P(a);let d;var f=P(u),p=R(f,!0),m=I(f,2),h=R(m,!0),g=I(m,2),_=t=>{var n=mi(),i=R(n,!0);H(t=>{U(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),x(t,n)};t(g,t=>{e(r).unreadCount>0&&t(_)}),s(u),s(a),H(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}),U(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(p,t),l(h,e(r).name)},[()=>y(e(r))]),C(`click`,u,()=>o.onselectroom(e(r).id)),x(n,a)}),s(r),x(n,r)};t(_,e=>{u.channels||e(b)}),s(r),H(()=>{U(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)}),C(`click`,a,()=>v(`channels`)),x(n,r)};t(E,t=>{e(f).length>0&&t(D)});var O=I(E,2),k=n=>{var r=Ci(),a=P(r),d=P(a);let f;var h=I(d,2),g=R(h,!0),_=I(h,2),y=R(_,!0);s(a);var S=I(a,2),w=n=>{var r=gi();p(r,21,()=>e(m),e=>e.id,(n,r)=>{var a=Si(),u=P(a);let d;var f=P(u),p=t=>{var n=vi();H(()=>U(n,`src`,e(r).avatarUrl)),x(t,n)},m=t=>{var n=yi(),i=R(n,!0);H(e=>l(i,e),[()=>e(r).name.charAt(0).toUpperCase()]),x(t,n)};t(f,t=>{e(r).avatarUrl?t(p):t(m,-1)});var h=I(f,2),g=P(h),_=R(g,!0),v=I(g,2),y=t=>{var n=bi(),i=R(n,!0);H(()=>l(i,e(r).lastMessage.content)),x(t,n)};t(v,t=>{e(r).lastMessage&&t(y)}),s(h);var S=I(h,2),w=P(S),T=t=>{var n=xi(),i=R(n,!0);H(e=>l(i,e),[()=>b(e(r).lastMessageAt)]),x(t,n)};t(w,t=>{e(r).lastMessageAt&&t(T)});var E=I(w,2),D=t=>{var n=mi(),i=R(n,!0);H(t=>{U(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),x(t,n)};t(E,t=>{e(r).unreadCount>0&&t(D)}),s(S),s(u),s(a),H(()=>{d=i(u,1,`room-item svelte-p0wx6n`,null,d,{"room-item--active":e(r).id===o.currentRoomId,"room-item--muted":e(r).isMuted}),U(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(_,e(r).name)}),C(`click`,u,()=>o.onselectroom(e(r).id)),x(n,a)}),s(r),x(n,r)};t(S,e=>{u.dms||e(w)}),s(r),H(t=>{U(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`])]),C(`click`,a,()=>v(`dms`)),x(n,r)};t(O,t=>{e(m).length>0&&t(k)});var A=I(O,2),j=n=>{var r=Ti(),a=P(r),d=P(a);let f;var m=I(d,4),h=R(m,!0);s(a);var _=I(a,2),y=n=>{var r=gi();p(r,21,()=>e(g),e=>e.id,(n,r)=>{var a=wi(),u=P(a);let d;var f=I(P(u),2),p=R(f,!0),m=I(f,2),h=t=>{var n=mi(),i=R(n,!0);H(t=>{U(n,`aria-label`,t),l(i,e(r).unreadCount>99?`99+`:e(r).unreadCount)},[()=>c($[`chat.room_list.unread_messages`],{count:e(r).unreadCount})]),x(t,n)};t(m,t=>{e(r).unreadCount>0&&t(h)}),s(u),s(a),H(()=>{d=i(u,1,`room-item svelte-p0wx6n`,null,d,{"room-item--active":e(r).id===o.currentRoomId}),U(u,`aria-current`,e(r).id===o.currentRoomId?`true`:void 0),l(p,e(r).name)}),C(`click`,u,()=>o.onselectroom(e(r).id)),x(n,a)}),s(r),x(n,r)};t(_,e=>{u.agents||e(y)}),s(r),H(()=>{U(a,`aria-expanded`,!u.agents),f=i(d,1,`room-group__chevron svelte-p0wx6n`,null,f,{"room-group__chevron--collapsed":u.agents}),l(h,e(g).length)}),C(`click`,a,()=>v(`agents`)),x(n,r)};t(A,t=>{e(g).length>0&&t(j)});var M=I(A,2),N=e=>{var n=Ei(),r=P(n),i=R(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)=>{_();var n=d();H(e=>l(n,e),[()=>c($[`chat.room_list.create_first_room`])]),x(e,n)},$$slots:{default:!0}})};t(a,e=>{o.oncreateroom&&e(u)}),s(n),H(e=>l(i,e),[()=>c($[`chat.room_list.no_rooms`])]),x(e,n)};t(M,e=>{o.rooms.length===0&&e(N)}),s(S),H(e=>U(S,`aria-label`,e),[()=>c($[`chat.room_list.rooms_label`])]),x(a,S),r()}w([`click`]);var ki=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 Ai(t,n){h(n,!0);let{t:a}=K(),c=k(260),l=k(!1);function u(e){W(l,!0),e.currentTarget.setPointerCapture(e.pointerId)}function d(t){if(!e(l))return;let n=Math.min(400,Math.max(200,t.clientX));W(c,n,!0)}function f(){W(l,!1)}var p=ki();let m;var g=P(p);let _;Oi(P(g),{get rooms(){return n.rooms},get currentRoomId(){return n.currentRoomId},get onselectroom(){return n.onselectroom},get oncreateroom(){return n.oncreateroom}}),s(g);var v=I(g,2),y=I(v,2),S=P(y);o(S,()=>n.children),s(y),s(p),H((t,n)=>{m=i(p,1,`chat-layout svelte-bpwn8w`,null,m,{"chat-layout--resizing":e(l)}),U(g,`aria-label`,t),_=b(g,``,_,{"--smrt-chat-layout-sidebar-width":`${e(c)??``}px`}),U(v,`aria-label`,n)},[()=>a($[`chat.chat_layout.rooms_label`]),()=>a($[`chat.chat_layout.resize_sidebar`])]),C(`pointerdown`,v,u),C(`pointermove`,v,d),C(`pointerup`,v,f),C(`keydown`,v,t=>{t.key===`ArrowLeft`&&W(c,Math.max(200,e(c)-10),!0),t.key===`ArrowRight`&&W(c,Math.min(400,e(c)+10),!0)}),x(t,p),r()}w([`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var ji=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>`),Mi=c(`<img class="member-item__avatar svelte-dnjj1q" alt=""/>`),Ni=c(`<span class="member-item__avatar-placeholder svelte-dnjj1q"> </span>`),Pi=c(`<span> </span>`),Fi=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>`),Ii=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>`),Li=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>`),Ri=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>`),zi=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>`),Bi=c(`<p class="member-list__empty svelte-dnjj1q"> </p>`),Vi=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 Hi(a,o){h(o,!0);let{t:c}=K(),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 g(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=Vi(),y=P(v),S=I(P(y),2),C=R(S,!0),w=I(S,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=ji();x(e,n)},$$slots:{default:!0}})}s(y);var T=I(y,2),E=P(T),D=r=>{var a=Ii(),o=P(a),c=I(P(o)),d=R(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(u),e=>e.id,(r,a)=>{var o=Fi(),c=P(o),u=P(c),d=t=>{var n=Mi();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ni(),r=R(n,!0);H(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),x(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let h;s(c);var v=I(c,2),y=P(v),S=R(y,!0),C=I(y,2),w=t=>{var n=Pi(),r=R(n,!0);H(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),x(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),H((t,n)=>{U(p,`aria-label`,t),h=b(p,``,h,{background:n}),l(S,e(a).nickname||e(a).name)},[()=>g(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),x(r,o)}),s(f),s(a),H(()=>l(d,e(u).length)),x(r,a)};t(E,t=>{e(u).length>0&&t(D)});var O=I(E,2),k=r=>{var a=Li(),o=P(a),c=I(P(o)),u=R(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(d),e=>e.id,(r,a)=>{var o=Fi(),c=P(o),u=P(c),d=t=>{var n=Mi();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ni(),r=R(n,!0);H(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),x(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let h;s(c);var v=I(c,2),y=P(v),S=R(y,!0),C=I(y,2),w=t=>{var n=Pi(),r=R(n,!0);H(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),x(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),H((t,n)=>{U(p,`aria-label`,t),h=b(p,``,h,{background:n}),l(S,e(a).nickname||e(a).name)},[()=>g(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),x(r,o)}),s(f),s(a),H(()=>l(u,e(d).length)),x(r,a)};t(O,t=>{e(d).length>0&&t(k)});var A=I(O,2),j=r=>{var a=zi(),o=P(a),c=I(P(o)),u=R(c,!0);s(o);var d=I(o,2);p(d,21,()=>e(f),e=>e.id,(r,a)=>{var o=Ri(),c=P(o),u=P(c),d=t=>{var n=Mi();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ni(),r=R(n,!0);H(e=>l(r,e),[()=>(e(a).nickname||e(a).name).charAt(0).toUpperCase()]),x(t,n)};t(u,t=>{e(a).avatarUrl?t(d):t(f,-1)});var p=I(u,2);let h;s(c);var v=I(c,2),y=P(v),S=R(y,!0),C=I(y,2),w=t=>{var n=Pi(),r=R(n,!0);H(t=>{i(n,1,`role-badge role-badge--${e(a).role??``}`,`svelte-dnjj1q`),l(r,t)},[()=>_(e(a).role)]),x(t,n)},T=n(()=>_(e(a).role));t(C,t=>{e(T)&&t(w)}),s(v),s(o),H((t,n)=>{U(p,`aria-label`,t),h=b(p,``,h,{background:n}),l(S,e(a).nickname||e(a).name)},[()=>g(e(a).onlineStatus),()=>m(e(a).onlineStatus)]),x(r,o)}),s(d),s(a),H(()=>l(u,e(f).length)),x(r,a)};t(A,t=>{e(f).length>0&&t(j)});var M=I(A,2),N=e=>{var t=Bi(),n=R(t,!0);H(e=>l(n,e),[()=>c($[`chat.member_list.empty`])]),x(e,t)};t(M,e=>{o.participants.length===0&&e(N)}),s(T),s(v),H(e=>{U(v,`aria-label`,e),l(C,o.participants.length)},[()=>c($[`chat.member_list.room_members`])]),x(a,v),r()}var Ui=c(`<span class="room-header__icon svelte-54tuky" aria-hidden="true"> </span>`),Wi=c(`<img class="room-header__avatar svelte-54tuky" alt=""/>`),Gi=c(`<span class="room-header__avatar-placeholder svelte-54tuky"> </span>`),Ki=c(`<p class="room-header__topic svelte-54tuky"> </p>`),qi=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),Ji=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>`),Yi=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 Xi(i,a){h(a,!0);let{t:o}=K(),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=Yi(),f=P(d),p=P(f),m=P(p),g=t=>{var n=Ui(),r=R(n,!0);H(()=>l(r,e(c))),x(t,n)},_=e=>{var t=Wi();H(()=>U(t,`src`,a.room.avatarUrl)),x(e,t)},v=e=>{var t=Gi(),n=R(t,!0);H(e=>l(n,e),[()=>a.room.name.charAt(0).toUpperCase()]),x(e,t)};t(m,e=>{a.room.roomType===`dm`?a.room.avatarUrl?e(_,1):e(v,-1):e(g)});var y=I(m,2),b=R(y,!0),S=I(y,2),C=R(S,!0);s(p);var w=I(p,2),T=e=>{var t=Ki(),n=R(t,!0);H(()=>{U(t,`title`,a.room.topic),l(n,a.room.topic)}),x(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=qi(),r=I(B(n),2),i=R(r,!0);H(()=>l(i,a.participantCount)),x(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=Ji();x(e,n)},$$slots:{default:!0}})}};t(k,e=>{a.onshowsearch&&e(A)}),s(E),s(d),H(t=>{U(d,`aria-label`,t),l(b,a.room.name),l(C,e(u))},[()=>o($[`chat.room_header.room_label`],{name:a.room.name})]),x(i,d),r()}var Zi=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>`),Qi=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>`),$i=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 ea(a,o){h(o,!0);let{t:c}=K(),u=O(o,`placeholder`,3,`Type a message...`),d=O(o,`disabled`,3,!1),f=O(o,`replyTo`,3,null),p=k(``),m;function g(){let t=e(p).trim();t&&!d()&&(o.onsend(t),W(p,``),m&&(m.style.height=`auto`))}function _(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),g())}function v(e){let t=e.currentTarget;m=t,t.style.height=`auto`,t.style.height=`${Math.min(t.scrollHeight,120)}px`}var y=$i();let b;var S=P(y),w=e=>{var n=Qi(),r=P(n),i=P(r),a=R(i,!0),u=I(i,2),d=R(u,!0);s(r);var p=I(r,2),m=e=>{var t=Zi();H(e=>U(t,`aria-label`,e),[()=>c($[`chat.message_input.cancel_reply`])]),C(`click`,t,function(...e){o.oncancelreply?.apply(this,e)}),x(e,t)};t(p,e=>{o.oncancelreply&&e(m)}),s(n),H(()=>{l(a,f().senderName),l(d,f().content)}),x(e,n)};t(S,e=>{f()&&e(w)});var T=I(S,2),E=P(T);{let t=n(()=>c($[`chat.message_input.input_label`]));De(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){W(p,e,!0)}})}var D=I(E,2);s(T),s(y),H((e,t)=>{b=i(y,1,`message-input svelte-ucy6mj`,null,b,{disabled:d()}),D.disabled=e,U(D,`aria-label`,t)},[()=>d()||e(p).trim().length===0,()=>c($[`chat.message_input.send`])]),C(`click`,D,g),x(a,y),r()}w([`click`]);function ta(t,i){h(i,!0);let{t:a}=K(),o=O(i,`isOpen`,3,!1),s=[`👍`,`👎`,`❤️`,`😂`,`😮`,`😢`,`🔥`,`🎉`,`👏`,`🤔`,`😍`,`🚀`,`👀`,`✅`,`❌`,`💯`];{let r=n(()=>a(Q[`chat.reaction_picker.reactions`]));he(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 na=c(`<div class="message-item message-item--system svelte-1g4tgey" data-smrt-component="MessageItem"><!></div>`),ra=c(`<div class="message-item__avatar svelte-1g4tgey"><!></div>`),ia=c(`<span class="message-item__sender svelte-1g4tgey"> </span>`),aa=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>`),oa=c(`<span class="message-item__tool-duration svelte-1g4tgey"> </span>`),sa=c(`<span class="message-item__tool-error svelte-1g4tgey"> </span>`),ca=c(`<div class="message-item__tool-call svelte-1g4tgey"><span class="message-item__tool-name svelte-1g4tgey"> </span> <span> </span> <!> <!></div>`),la=c(`<span class="message-item__reaction-emoji svelte-1g4tgey"> </span> <span class="message-item__reaction-count svelte-1g4tgey"> </span>`,1),ua=c(`<div class="message-item__reactions svelte-1g4tgey"></div>`),da=c(`<span class="message-item__edited svelte-1g4tgey">(edited)</span>`),fa=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>`),pa=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>`),ma=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>`),ha=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>`),ga=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>`),_a=c(`<div class="message-item__picker-popover svelte-1g4tgey"><!></div>`),va=c(`<div class="message-item__actions svelte-1g4tgey" role="group"><!> <!> <!> <!></div> <!>`,1),ya=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 ba(a,o){h(o,!0);let{t:c}=K(),u=k(!1),d=k(!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`})),g=n(()=>!!(o.onreact||o.onreply||o.isOwn&&(o.onedit||o.ondelete))),_=n(()=>`message-actions-${o.message.id}`);function y(e){o.onreact?.(o.message.id,e),W(u,!1)}function b(){W(u,!e(u))}function w(){W(d,!0)}function E(e){let t=e.relatedTarget,n=e.currentTarget;t&&n.contains(t)||(W(d,!1),W(u,!1))}function D(e){e.key===`Escape`&&(W(u,!1),W(d,!1))}var O=S();T(`keydown`,M,function(...t){(e(d)||e(u)?D:void 0)?.apply(this,t)});var A=B(O),j=e=>{var t=na(),n=P(t);me(n,{get content(){return o.message.content},own:!1,variant:`system`}),s(t),x(e,t)},N=r=>{var a=ya();let h;var S=P(a),D=e=>{var t=ra();zn(P(t),{get name(){return o.message.senderName},get avatarUrl(){return o.message.senderAvatarUrl},size:`sm`}),s(t),x(e,t)};t(S,e=>{o.isOwn||e(D)});var O=I(S,2),k=P(O),A=e=>{var t=ia(),n=R(t,!0);H(()=>l(n,o.message.senderName)),x(e,t)};t(k,e=>{o.isOwn||e(A)});var j=I(k,2),M=e=>{var t=aa(),n=P(t),r=R(n,!0),i=I(n,2),a=R(i,!0);s(t),H(()=>{l(r,o.message.replyTo.senderName),l(a,o.message.replyTo.content)}),x(e,t)};t(j,e=>{o.message.replyTo&&e(M)});var N=I(j,2);me(N,{get content(){return o.message.content},get own(){return o.isOwn},get variant(){return e(f)}});var F=I(N,2),ee=e=>{var n=ca(),r=P(n),a=R(r,!0),c=I(r,2),u=R(c,!0),d=I(c,2),f=e=>{var t=oa(),n=R(t);H(()=>l(n,`${o.message.toolCallData.duration??``}ms`)),x(e,t)};t(d,e=>{o.message.toolCallData.duration&&e(f)});var p=I(d,2),m=e=>{var t=sa(),n=R(t,!0);H(()=>l(n,o.message.toolCallData.error)),x(e,t)};t(p,e=>{o.message.toolCallData.error&&e(m)}),s(n),H(()=>{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)}),x(e,n)};t(F,e=>{o.message.toolCallData&&e(ee)});var te=I(F,2),L=t=>{var r=ua();p(r,21,()=>o.message.reactions,v,(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=la(),a=B(i),o=R(a,!0),s=I(a,2),c=R(s,!0);H(()=>{l(o,e(r).emoji),l(c,e(r).count)}),x(t,i)},$$slots:{default:!0}})}}),s(r),x(t,r)};t(te,e=>{o.message.reactions.length>0&&e(L)});var ne=I(te,2),re=P(ne),z=R(re,!0),ie=I(re,2),V=e=>{var t=da();x(e,t)};t(ie,e=>{o.message.isEdited&&e(V)}),s(ne),s(O);var ae=I(O,2),oe=t=>{{let r=n(()=>c($[`chat.message_item.more_actions`]));Y(t,{variant:`ghost`,size:`sm`,class:`message-item__more-btn`,type:`button`,onclick:w,onfocus:w,get"aria-label"(){return e(r)},get"aria-expanded"(){return e(d)},get"aria-controls"(){return e(_)},children:(e,t)=>{var n=fa();x(e,n)},$$slots:{default:!0}})}};t(ae,t=>{e(g)&&t(oe)});var se=I(ae,2),ce=r=>{var i=va(),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=pa();x(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=ma();x(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=ha();x(e,n)},$$slots:{default:!0}})}};t(m,e=>{o.isOwn&&o.onedit&&e(h)});var g=I(m,2),v=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=ga();x(e,n)},$$slots:{default:!0}})}};t(g,e=>{o.isOwn&&o.ondelete&&e(v)}),s(a);var S=I(a,2),C=e=>{var t=_a();ta(P(t),{isOpen:!0,onreact:y}),s(t),x(e,t)};t(S,t=>{e(u)&&t(C)}),H(t=>{U(a,`id`,e(_)),U(a,`aria-label`,t)},[()=>c($[`chat.message_item.more_actions`])]),x(r,i)};t(se,t=>{e(d)&&t(ce)}),s(a),H(t=>{h=i(a,1,`message-item svelte-1g4tgey`,null,h,{"message-item--own":o.isOwn}),U(a,`aria-label`,t),l(z,e(m))},[()=>c($[`chat.message_item.message_from`],{name:o.message.senderName})]),T(`mouseenter`,a,()=>W(d,!0)),T(`mouseleave`,a,()=>{W(d,!1),W(u,!1)}),C(`focusout`,a,E),x(r,a)};t(A,e=>{o.message.messageType===`system`||o.message.messageType===`action`?e(j):e(N,-1)}),x(a,O),r()}w([`focusout`]);var xa=c(`<div class="message-list__empty svelte-rbnc13"><span> </span></div>`),Sa=c(`<div class="message-list__date-separator svelte-rbnc13" role="separator"><span class="message-list__date-label svelte-rbnc13"> </span></div> <!>`,1),Ca=c(`<div class="message-list svelte-rbnc13" role="log" data-smrt-component="MessageList"><!></div>`);function wa(i,a){h(a,!0);let{t:o}=K(),c=k(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=Ca(),m=P(f),g=e=>{var t=xa(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>o($[`chat.message_list.no_messages`])]),x(e,t)},_=t=>{var r=S(),i=B(r);p(i,17,()=>e(u),v,(t,r)=>{var i=Sa(),o=B(i),c=P(o),u=R(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);ba(t,{get message(){return e(r)},get isOwn(){return e(i)},get onreply(){return a.onreply},get onreact(){return a.onreact}})}}),H(()=>l(u,e(r).dateLabel)),x(t,i)}),x(t,r)};t(m,e=>{a.messages.length===0?e(g):e(_,-1)}),s(f),j(f,e=>W(c,e),()=>e(c)),H(e=>U(f,`aria-label`,e),[()=>o($[`chat.message_list.messages_label`])]),T(`scroll`,f,d),x(i,f),r()}var Ta=c(`<span class="thread-panel__resolved svelte-o9q95w">Resolved</span>`),Ea=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>`),Da=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 Oa(i,a){h(a,!0);let{t:o}=K(),c=n(()=>a.thread.title||`Thread`),u=n(()=>a.thread.messageCount>0?a.thread.messageCount-1:0);var f=Da(),p=P(f),m=P(p),g=P(m),_=R(g,!0),v=I(g,2),y=P(v),b=I(y),S=e=>{var t=d();H(()=>l(t,`· ${a.thread.participantCount??``} ${a.thread.participantCount===1?`participant`:`participants`}`)),x(e,t)};t(b,e=>{a.thread.participantCount>0&&e(S)}),s(v),s(m);var C=I(m,2),w=e=>{var t=Ta();x(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=Ea();x(e,n)},$$slots:{default:!0}})}s(p);var E=I(p,2);wa(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`]));ea(O,{get onsend(){return a.onsend},get placeholder(){return e(t)}})}s(D),s(f),H(t=>{U(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)})]),x(i,f),r()}var ka=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>`),Aa=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>`),ja=c(`<div class="file-upload__preview svelte-8f8u96"><!> <div class="file-upload__preview-actions svelte-8f8u96"><!> <!></div></div>`),Ma=c(`<div class="file-upload__error svelte-8f8u96" role="alert"> </div>`),Na=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 Pa(a,o){h(o,!0);let{t:c}=K(),u=O(o,`maxSize`,3,26214400),f=O(o,`disabled`,3,!1),m=k(!1),g=k(F([])),v=k(``);function y(t){if(!t||t.length===0)return;W(v,``);let n=[],r=[];for(let e of Array.from(t))e.size>u()?r.push(e.name):n.push(e);r.length>0&&W(v,`${r.join(`, `)} exceed${r.length===1?`s`:``} the ${j(u())} limit`),W(g,[...e(g),...n],!0)}function b(e){e.preventDefault(),W(m,!1),!f()&&y(e.dataTransfer?.files??null)}function S(e){e.preventDefault(),f()||W(m,!0)}function w(){W(m,!1)}function E(e){let t=e.target;y(t.files),t.value=``}function D(t){W(g,e(g).filter((e,n)=>n!==t),!0),e(g).length===0&&W(v,``)}function A(){if(e(g).length===0)return;let t=new DataTransfer;for(let n of e(g))t.items.add(n);o.onupload(t.files),W(g,[],!0),W(v,``)}function j(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function M(e){return e.startsWith(`image/`)?`img`:e.startsWith(`video/`)?`vid`:e.startsWith(`audio/`)?`aud`:e===`application/pdf`?`pdf`:`file`}var N=Na();let ee;var te=P(N),L=t=>{var r=ja(),i=P(r);p(i,19,()=>e(g),(e,t)=>e.name+t,(t,r,i)=>{var a=Aa(),o=P(a),u=R(o,!0),d=I(o,2),f=P(d),p=R(f,!0),m=I(f,2),h=R(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=ka();x(e,n)},$$slots:{default:!0}})}s(a),H((t,n)=>{l(u,t),l(p,e(r).name),l(h,n)},[()=>M(e(r).type),()=>j(e(r).size)]),x(t,a)});var a=I(i,2),o=P(a);Y(o,{variant:`primary`,size:`sm`,type:`button`,onclick:A,children:(t,n)=>{_();var r=d();H(e=>l(r,e),[()=>c(Q[`chat.file_upload.upload_files`],{count:e(g).length,plural:e(g).length===1?``:`s`})]),x(t,r)},$$slots:{default:!0}});var u=I(o,2);Y(u,{variant:`secondary`,size:`sm`,type:`button`,onclick:()=>{W(g,[],!0),W(v,``)},children:(e,t)=>{_();var n=d(`Clear`);x(e,n)},$$slots:{default:!0}}),s(a),s(r),H(e=>U(r,`aria-label`,e),[()=>c(Q[`chat.file_upload.preview`])]),x(t,r)};t(te,t=>{e(g).length>0&&t(L)});var ne=I(te,2),re=t=>{var n=Ma(),r=R(n,!0);H(()=>l(r,e(v))),x(t,n)};t(ne,t=>{e(v)&&t(re)});var z=I(ne,2);let B;var ie=P(z),V=P(ie),ae=I(V,4),oe=P(ae),se=e=>{var t=d();H(e=>l(t,e),[()=>c(Q[`chat.file_upload.disabled`])]),x(e,t)},ce=e=>{var t=d();H(e=>l(t,e),[()=>c(Q[`chat.file_upload.drop_files`])]),x(e,t)};t(oe,e=>{f()?e(se):e(ce,-1)}),s(ae);var G=I(ae,2),le=R(G,!0);s(ie),s(z),s(N),H(t=>{ee=i(N,1,`file-upload svelte-8f8u96`,null,ee,{"file-upload--disabled":f()}),B=i(z,1,`file-upload__drop-zone svelte-8f8u96`,null,B,{"file-upload__drop-zone--active":e(m),"file-upload__drop-zone--disabled":f()}),U(V,`accept`,o.accept),V.disabled=f(),l(le,t)},[()=>c(Q[`chat.file_upload.max_size`],{size:j(u())})]),T(`drop`,z,b),T(`dragover`,z,S),T(`dragleave`,z,w),C(`change`,V,E),x(a,N),r()}w([`change`]);var Fa=c(`<div class="link-preview__image svelte-13jrn1d"><img class="svelte-13jrn1d"/></div>`),Ia=c(`<span class="link-preview__title svelte-13jrn1d"> </span>`),La=c(`<span class="link-preview__description svelte-13jrn1d"> </span>`),Ra=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 za(i,a){h(a,!0);let o=n(()=>{try{return new URL(a.url).hostname}catch{return a.url}});var c=Ra(),u=P(c),d=e=>{var t=Fa(),n=R(t);H(()=>{U(n,`src`,a.imageUrl),U(n,`alt`,a.title??``)}),x(e,t)};t(u,e=>{a.imageUrl&&e(d)});var f=I(u,2),p=P(f),m=e=>{var t=Ia(),n=R(t,!0);H(()=>l(n,a.title)),x(e,t)};t(p,e=>{a.title&&e(m)});var g=I(p,2),_=e=>{var t=La(),n=R(t,!0);H(()=>l(n,a.description)),x(e,t)};t(g,e=>{a.description&&e(_)});var v=I(g,2),y=R(v,!0);s(f),s(c),H(()=>{U(c,`href`,a.url),l(y,e(o))}),x(i,c),r()}var Ba=c(`<button type="button" role="option"><!> <span class="mention-autocomplete__name svelte-1cyjli3"> <mark class="mention-autocomplete__highlight svelte-1cyjli3"> </mark> </span></button>`),Va=c(`<div class="mention-autocomplete svelte-1cyjli3" role="listbox" data-smrt-component="MentionAutocomplete"></div>`);function Ha(a,o){h(o,!0);let{t:c}=K(),u=k(0);A(()=>{o.suggestions.length&&W(u,0)});function d(t){if(o.isVisible&&o.suggestions.length!==0)switch(t.key){case`ArrowDown`:t.preventDefault(),W(u,(e(u)+1)%o.suggestions.length);break;case`ArrowUp`:t.preventDefault(),W(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=S();T(`keydown`,M,function(...e){(o.isVisible?d:void 0)?.apply(this,e)});var g=B(m),_=t=>{var r=Va();p(r,23,()=>o.suggestions,e=>e.id,(t,r,a)=>{let c=n(()=>f(e(r).name,o.query));var d=Ba();let p;var m=P(d);zn(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=R(_,!0),y=I(_,1,!0);s(h),s(d),H(()=>{p=i(d,1,`mention-autocomplete__item svelte-1cyjli3`,null,p,{"mention-autocomplete__item--active":e(a)===e(u)}),U(d,`aria-selected`,e(a)===e(u)),l(g,e(c).before),l(v,e(c).match),l(y,e(c).after)}),C(`click`,d,()=>o.onselect(e(r).id)),T(`pointerenter`,d,()=>W(u,e(a),!0)),x(t,d)}),s(r),H(e=>U(r,`aria-label`,e),[()=>c(Q[`chat.mention_autocomplete.suggestions`])]),x(t,r)};t(g,e=>{o.isVisible&&o.suggestions.length>0&&e(_)}),x(a,m),r()}w([`click`]);var Ua=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>`),Wa=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),Ga=c(`<img class="read-receipts__mini-avatar svelte-1sf2l8g"/>`),Ka=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--initials svelte-1sf2l8g"> </span>`),qa=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--more svelte-1sf2l8g"> </span>`),Ja=c(`<span class="read-receipts__avatars svelte-1sf2l8g"><!> <!></span>`),Ya=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),Xa=c(`<span class="read-receipts svelte-1sf2l8g" data-smrt-component="ReadReceipts"><!></span>`);function Za(a,o){h(o,!0);let{t:c}=K(),u=n(()=>o.readBy.length>=o.totalParticipants-1),d=n(()=>o.readBy.length<=5);function f(e){return(e[0]??`?`).toUpperCase()}var m=Xa(),g=P(m),_=e=>{var t=Ua();x(e,t)},y=e=>{var t=Wa(),n=I(B(t),2),r=R(n,!0);H(()=>l(r,o.readBy.length)),x(e,t)},b=n=>{var r=Ya(),a=B(r);let c;var d=I(a),m=n=>{var r=Ja(),i=P(r);p(i,17,()=>o.readBy.slice(0,3),v,(n,r)=>{var i=S(),a=B(i),o=t=>{var n=Ga();H(()=>{U(n,`src`,e(r).avatarUrl),U(n,`alt`,e(r).name)}),x(t,n)},s=t=>{var n=Ka(),i=R(n,!0);H(t=>{U(n,`title`,e(r).name),l(i,t)},[()=>f(e(r).name)]),x(t,n)};t(a,t=>{e(r).avatarUrl?t(o):t(s,-1)}),x(n,i)});var a=I(i,2),c=e=>{var t=qa(),n=R(t);H(()=>l(n,`+${o.readBy.length-3}`)),x(e,t)};t(a,e=>{o.readBy.length>3&&e(c)}),s(r),x(n,r)};t(d,e=>{o.readBy.length>0&&e(m)}),H(()=>c=i(a,0,`read-receipts__icon svelte-1sf2l8g`,null,c,{"read-receipts__icon--read":e(u)})),x(n,r)};t(g,t=>{o.readBy.length===0?t(_):e(d)?t(b,-1):t(y,1)}),s(m),H(e=>U(m,`aria-label`,e),[()=>c(Q[`chat.read_receipts.read_status`],{readCount:o.readBy.length,total:o.totalParticipants})]),x(a,m),r()}var Qa=c(`<span class="presence__label svelte-k0r91z"> </span>`),$a=c(`<span class="presence svelte-k0r91z" data-smrt-component="UserPresence"><span></span> <!></span>`);function eo(e,n){let r=O(n,`showLabel`,3,!1),a={online:`Online`,away:`Away`,dnd:`Do not disturb`,offline:`Offline`};var o=$a(),c=P(o),u=I(c,2),d=e=>{var t=Qa(),r=R(t,!0);H(()=>l(r,a[n.status])),x(e,t)};t(u,e=>{r()&&e(d)}),s(o),H(()=>{U(o,`aria-label`,a[n.status]),i(c,1,`presence__dot ${n.status??``}`,`svelte-k0r91z`)}),x(e,o)}var to=c(`<span class="mini-chat__sender svelte-zo0sdr"> </span>`),no=c(`<div><!> <div><!> <span class="mini-chat__text svelte-zo0sdr"> </span> <time class="mini-chat__time svelte-zo0sdr"> </time></div></div>`),ro=c(`<div class="mini-chat__empty svelte-zo0sdr"><span class="mini-chat__empty-text svelte-zo0sdr"> </span></div>`),io=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>`),ao=c(`<!> <!>`,1),oo=c(`<div class="mini-chat svelte-zo0sdr" data-smrt-component="MiniChat"><div class="mini-chat__messages svelte-zo0sdr" role="log"><!> <!></div> <!></div>`);function so(a,o){h(o,!0);let{t:c}=K(),u=O(o,`maxHeight`,3,360),d=k(``),f=k(void 0);function m(t){t.preventDefault();let n=e(d).trim();n&&(o.onsend(n),W(d,``))}function g(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`})}A(()=>{o.messages.length&&e(f)&&(e(f).scrollTop=e(f).scrollHeight)});var v=oo(),y=P(v);let S;var C=P(y);p(C,17,()=>o.messages,e=>e.id,(r,a)=>{let c=n(()=>e(a).senderProfileId===o.currentProfileId);var u=no();let d;var f=P(u),p=t=>{zn(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=to(),r=R(n,!0);H(()=>l(r,e(a).senderName)),x(t,n)};t(g,t=>{e(c)||t(v)});var y=I(g,2),b=R(y,!0),S=I(y,2),C=R(S,!0);s(m),s(u),H(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)]),x(r,u)});var w=I(C,2),T=e=>{var t=ro(),n=P(t),r=R(n,!0);s(t),H(e=>l(r,e),[()=>c($[`chat.mini_chat.no_messages`])]),x(e,t)};t(w,e=>{o.messages.length===0&&e(T)}),s(y),j(y,e=>W(f,e),()=>e(f));var E=I(y,2);Se(E,{class:`mini-chat__input-bar`,onsubmit:m,children:(t,r)=>{var i=ao(),a=B(i);{let t=n(()=>c($[`chat.mini_chat.placeholder`])),r=n(()=>c($[`chat.mini_chat.input_label`]));ge(a,{class:`mini-chat__input`,type:`text`,get placeholder(){return e(t)},onkeydown:g,get"aria-label"(){return e(r)},get value(){return e(d)},set value(e){W(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=io();x(e,n)},$$slots:{default:!0}})}x(t,i)},$$slots:{default:!0}}),s(v),H(e=>{U(y,`aria-label`,e),S=b(y,``,S,{"max-height":`${u()??``}px`})},[()=>c($[`chat.mini_chat.messages_label`])]),x(a,v),r()}var co=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>`),lo=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>`),uo=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>`),fo=c(`<span class="chat-tab__badge svelte-1krwmy5"> </span>`),po=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 mo(i,a){h(a,!0);let{t:o}=K();var c=S(),u=B(c),d=t=>{var r=uo(),i=P(r),c=P(i),u=P(c);zn(u,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var d=I(u,2),f=R(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=co();x(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=lo();x(e,n)},$$slots:{default:!0}})}s(p),s(i);var g=I(i,2);so(P(g),{get messages(){return a.messages},get currentProfileId(){return a.currentProfileId},get onsend(){return a.onsend},maxHeight:320}),s(g),s(r),H((e,t)=>{U(r,`aria-label`,e),U(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`])]),C(`click`,c,function(...e){a.oncollapse?.apply(this,e)}),x(t,r)},f=e=>{var n=po(),r=P(n);zn(r,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var i=I(r,2),c=R(i,!0),u=I(i,2),d=e=>{var t=fo(),n=R(t,!0);H(e=>{U(t,`aria-label`,e),l(n,a.tab.unreadCount)},[()=>o($[`chat.chat_tab.unread`],{count:a.tab.unreadCount})]),x(e,t)};t(u,e=>{a.tab.unreadCount>0&&e(d)}),s(n),H(e=>{U(n,`aria-label`,e),l(c,a.tab.room.name)},[()=>o($[`chat.chat_tab.open_chat_with`],{name:a.tab.room.name})]),C(`click`,n,function(...e){a.onexpand?.apply(this,e)}),x(e,n)};t(u,e=>{a.tab.isExpanded?e(d):e(f,-1)}),x(i,c),r()}w([`click`]);var ho=c(`<span class="tab-list__badge svelte-jqiu29"> </span>`),go=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>`),_o=c(`<div class="tab-list__item svelte-jqiu29"><button class="tab-list__btn svelte-jqiu29" type="button"><!> <!></button> <!></div>`),vo=c(`<nav class="tab-list svelte-jqiu29" data-smrt-component="ChatTabList"></nav>`);function yo(i,a){h(a,!0);let{t:o}=K();var c=S(),u=B(c),d=r=>{var i=vo();p(i,21,()=>a.tabs,e=>e.roomId,(r,i)=>{var c=_o(),u=P(c),d=P(u);zn(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=ho(),r=R(n,!0);H(t=>{U(n,`aria-label`,t),l(r,e(i).unreadCount>99?`99+`:e(i).unreadCount)},[()=>o($[`chat.chat_tab_list.unread`],{count:e(i).unreadCount})]),x(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=go();x(e,n)},$$slots:{default:!0}})}s(c),H(t=>{U(u,`aria-label`,t),U(u,`title`,e(i).room.name)},[()=>o($[`chat.chat_tab_list.open_chat_with`],{name:e(i).room.name})]),C(`click`,u,()=>a.onselect(e(i).roomId)),x(r,c)}),s(i),H(e=>U(i,`aria-label`,e),[()=>o($[`chat.chat_tab_list.minimized_chats`])]),x(r,i)};t(u,e=>{a.tabs.length>0&&e(d)}),x(i,c),r()}w([`click`]);var bo=c(`<div class="chat-tabs svelte-1vavi4c" data-smrt-component="ChatTabs"><div class="chat-tabs__expanded svelte-1vavi4c"></div> <!></div>`);function xo(i,a){h(a,!0);let{t:o}=K(),c=O(a,`messagesByRoom`,19,()=>({})),l=O(a,`currentProfileId`,3,``),u=n(()=>a.tabs.filter(e=>e.isExpanded)),d=n(()=>a.tabs.filter(e=>!e.isExpanded));var f=bo(),m=P(f);p(m,21,()=>e(u),e=>e.roomId,(t,r)=>{{let i=n(()=>c()[e(r).roomId]??[]);mo(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 g=I(m,2),_=t=>{yo(t,{get tabs(){return e(d)},onselect:e=>a.onexpand(e),onclose:e=>a.onclose(e)})};t(g,t=>{e(d).length>0&&t(_)}),s(f),H(e=>U(f,`aria-label`,e),[()=>o($[`chat.chat_tabs.tabs_label`])]),x(i,f),r()}var So=c(`<p class="assistant-dock-choices-status assistant-dock-choices-making svelte-hjhu1a" role="status"> </p>`),Co=c(`<img loading="lazy" class="svelte-hjhu1a"/>`),wo=c(`<span class="assistant-dock-choice-description svelte-hjhu1a"> </span>`),To=c(`<li class="svelte-hjhu1a"><button type="button"><!> <span class="assistant-dock-choice-label svelte-hjhu1a"> </span> <!></button></li>`),Eo=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>`),Do=c(`<ul class="assistant-dock-choice-list svelte-hjhu1a"><!> <!></ul>`),Oo=c(`<p class="assistant-dock-choices-status svelte-hjhu1a"> </p>`),ko=c(`<p class="assistant-dock-choices-status assistant-dock-choices-error svelte-hjhu1a" role="alert"> </p>`),Ao=c(`<div class="assistant-dock-choices-actions assistant-dock-choices-commit svelte-hjhu1a"><!> <!></div> <!>`,1),jo=c(`<div class="assistant-dock-choices-actions svelte-hjhu1a"><span class="svelte-hjhu1a"> </span> <!></div>`),Mo=c(`<p class="assistant-dock-choices-status svelte-hjhu1a" role="status"> </p>`),No=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>`),Po=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 Fo(a,o){h(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}=K();var g=S(),y=B(g);p(y,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),y=n(()=>c(e(a))),b=n(()=>e(a).status===`waiting`||e(a).status===`failed`),w=n(()=>e(a).previewOptionId),T=n(()=>e(y)&&e(a).previewPendingId!==void 0),E=n(()=>e(y)&&e(a).original?[e(a).original,...e(a).options]:e(a).options);var D=Po(),O=P(D),k=R(O,!0),A=I(O,2),j=t=>{var n=So(),r=R(n,!0);H(()=>l(r,e(g).message)),x(t,n)};t(A,t=>{e(g)&&t(j)});var M=I(A,2),N=n=>{var r=Do(),c=P(r);p(c,17,()=>e(E),e=>e.id,(n,r)=>{var c=To(),u=P(c);let d;var f=P(u),p=t=>{var n=Co();H(()=>{U(n,`src`,e(r).imageUrl),U(n,`alt`,e(r).imageAlt??e(r).label)}),x(t,n)};t(f,t=>{e(r).imageUrl&&t(p)});var m=I(f,2),h=R(m,!0),g=I(m,2),_=t=>{var n=wo(),i=R(n,!0);H(()=>l(i,e(r).description)),x(t,n)};t(g,t=>{e(r).description&&t(_)}),s(u),s(c),H(()=>{d=i(u,1,`assistant-dock-choice svelte-hjhu1a`,null,d,{chosen:e(y)?e(w)===e(r).id:e(a).chosenOptionId===e(r).id}),U(u,`aria-pressed`,e(y)?e(w)===e(r).id:e(a).chosenOptionId===e(r).id),U(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)}),C(`click`,u,()=>e(y)?o.onpreview?.(e(a).id,e(r).id):o.onchoose(e(a).id,e(r).id)),x(n,c)});var u=I(c,2),d=t=>{var n=S(),r=B(n);p(r,17,()=>({length:e(g).expected}),v,(e,t)=>{var n=Eo(),r=I(P(n),2),i=R(r,!0);s(n),H(e=>l(i,e),[()=>m(Q[`chat.assistant_dock.choices_making`])]),x(e,n)}),x(t,n)};t(u,t=>{e(g)&&t(d)}),s(r),x(n,r)};t(M,t=>{e(y)&&e(a).status===`applied`||t(N)});var F=I(M,2),ee=t=>{var n=Oo(),r=R(n,!0);H(()=>l(r,e(a).note)),x(t,n)};t(F,t=>{e(a).note&&e(a).status===`waiting`&&t(ee)});var te=I(F,2),L=r=>{var i=Ao(),c=B(i),f=P(c);{let t=n(()=>e(T)||!e(w)||e(w)===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)=>{_();var r=d();H(()=>l(r,e(a).commitLabel)),x(t,r)},$$slots:{default:!0}})}var p=I(f,2);Y(p,{type:`button`,variant:`ghost`,onclick:()=>u(e(a)),children:(t,n)=>{_();var r=d();H(()=>l(r,e(a).cancelLabel)),x(t,r)},$$slots:{default:!0}}),s(c);var h=I(c,2),g=t=>{var n=ko(),r=R(n,!0);H(e=>l(r,e),[()=>m(Q[`chat.assistant_dock.choices_failed`],{message:e(a).error??``})]),x(t,n)};t(h,t=>{e(a).status===`failed`&&t(g)}),x(r,i)},ne=t=>{var n=jo(),r=P(n),i=R(r,!0),c=I(r,2);Y(c,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>o.ondismiss(e(a).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_none`])]),x(e,n)},$$slots:{default:!0}}),s(n),H(e=>l(i,e),[()=>e(a).options.length>0?m(Q[`chat.assistant_dock.choices_pick`]):``]),x(t,n)},re=e=>{var t=Mo(),n=R(t,!0);H(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_applying`])]),x(e,t)},z=t=>{var n=Mo(),r=R(n,!0);H(e=>l(r,e),[()=>e(a).outcome??m(Q[`chat.assistant_dock.choices_applied`],{label:e(h)?.label??``})]),x(t,n)},ie=t=>{var n=ko(),r=R(n,!0);H(e=>l(r,e),[()=>m(Q[`chat.assistant_dock.choices_failed`],{message:e(a).error??``})]),x(t,n)},V=t=>{var n=No(),r=P(n),i=R(r,!0),c=I(r,2);Y(c,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>o.ondismiss(e(a).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_none`])]),x(e,n)},$$slots:{default:!0}}),s(n),H(e=>l(i,e),[()=>m(Q[`chat.assistant_dock.choices_unavailable`],{message:e(a).error??``})]),x(t,n)};t(te,t=>{e(y)&&e(b)?t(L):e(a).status===`waiting`?t(ne,1):e(a).status===`applying`?t(re,2):e(a).status===`applied`?t(z,3):e(a).status===`failed`&&!e(y)?t(ie,4):e(a).status===`unavailable`&&t(V,5)}),s(D),H(()=>{U(D,`aria-label`,e(a).title),U(D,`aria-busy`,e(g)?`true`:void 0),l(k,e(a).title)}),C(`keydown`,D,t=>f(t,e(a))),x(r,D)}),x(a,g),r()}w([`keydown`,`click`]);var Io=c(`<p class="assistant-composer-error svelte-17lqa16" role="alert"> </p>`),Lo=c(`<li class="assistant-composer-chip svelte-17lqa16"><span class="assistant-composer-chip-name svelte-17lqa16"> </span> <!></li>`),Ro=c(`<ul class="assistant-composer-attachments svelte-17lqa16"></ul>`),zo=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>`),Bo=c(`<!> <input type="file" class="assistant-composer-file-input svelte-17lqa16" multiple="" tabindex="-1"/>`,1),Vo=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 Ho(i,a){h(a,!0);let{t:o}=K(),c=O(a,`disabled`,3,!1),u=O(a,`placeholder`,3,`Ask the assistant…`),f=O(a,`value`,15,``),m=O(a,`dictation`,3,null),g=O(a,`transcribe`,3,null),v=O(a,`dictationMode`,3,`push`),y=O(a,`handsFreeCapture`,3,null),b=O(a,`sendOnPause`,3,!1),S=O(a,`sendOnPauseMs`,3,1200),w=O(a,`speaking`,3,!1),E=n(()=>!!(m()||g())),D=k(F([])),M=k(!1),N=k(!1),te=k(null),z=k(null),ie=k(void 0),V,ae=k(void 0);function oe(){return V??=e(ae)?.getElement()??void 0,V??null}function se(){oe()?.focus()}let ce=k(!1),G=k(!1),le=k(!1);function ue(){W(ce,!1),W(G,!1),W(le,!1)}let q=new Ee({source:()=>{if(!m())throw Error(`Speech input is not available.`);return m()()},onText:e=>{W(ce,!0);let t=oe();t?nt(t,e):f(f()?`${f()} ${e}`:e)}});L(()=>{q.setOptions({transcribe:g(),mode:v(),handsFreeCapture:y(),vad:a.handsFreeVad})}),ne(()=>q.dispose()),A(()=>{let e=w();re(()=>e?q.suspend():q.resume())}),A(()=>{if(!(b()&&e(ce)&&q.handsFree&&q.state===`listening`&&!q.speaking&&q.queued===0&&f().trim().length>0)){W(G,!1);return}W(G,!0);let t=setTimeout(()=>{W(G,!1),W(ce,!1),W(le,!0)},Math.max(0,S()));return()=>clearTimeout(t)}),A(()=>{e(le)&&(!b()||!q.handsFree||!f().trim()?W(le,!1):q.speaking||q.queued>0?(W(le,!1),W(ce,!0)):e(N)||c()||e(M)||(W(le,!1),me(!0)))}),A(()=>{q.handsFree||ue()});function de(){c()||e(M)||q.active||q.start()}function fe(e){e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`}A(()=>{f(),V??=e(ae)?.getElement()??void 0,V&&fe(V)});async function J(t){let n=t.currentTarget,r=n.files;if(!r||r.length===0)return;W(M,!0),W(z,null);let i=a.onupload;if(!i)W(M,!1),n.value=``;else try{let t=await i(r);W(D,[...e(D),...t],!0)}catch(e){W(z,e instanceof Error?e.message:o(Q[`chat.assistant_composer.upload_failed`]),!0)}finally{W(M,!1),n.value=``}}async function pe(t){let n=a.onupload;if(!n||(t.preventDefault(),c()||e(M)))return;let r=t.dataTransfer?.files;if(r&&r.length!==0){W(M,!0),W(z,null);try{let t=await n(r);W(D,[...e(D),...t],!0)}catch(e){W(z,e instanceof Error?e.message:o(Q[`chat.assistant_composer.upload_failed`]),!0)}finally{W(M,!1)}}}async function me(t=!1){if(c()||e(N))return;ue(),q.active&&!t&&(await q.stop(),await q.whenSettled());let n=f().trim();if(!n||c()||e(N))return;W(te,null),W(N,!0);let r=e(D);f(``),W(D,[],!0),V&&(V.style.height=`auto`);try{await a.onsend(n,r)}catch(t){let i=f().trim();f(i?`${n}\n${i}`:n),W(D,[...r,...e(D)],!0),W(te,t instanceof Error?t.message:o(Q[`chat.assistant_composer.send_failed`]),!0)}finally{W(N,!1)}}function X(t){t.key===`Escape`&&(q.active||e(ce))?(t.preventDefault(),ue(),q.active&&q.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;V=t,fe(t)}function ge(t){W(D,e(D).filter(e=>e.id!==t),!0)}var _e={focus:se},ve=Vo(),be=P(ve),xe=t=>{var n=Io(),r=R(n,!0);H(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.send_error`],{message:e(te)})]),x(t,n)};t(be,t=>{e(te)&&t(xe)});var Se=I(be,2),Te=t=>{var n=Io(),r=R(n,!0);H(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.upload_error`],{message:e(z)})]),x(t,n)};t(Se,t=>{e(z)&&t(Te)});var Oe=I(Se,2),ke=t=>{var r=Ro();p(r,21,()=>e(D),e=>e.id,(t,r)=>{var i=Lo(),a=P(i),c=R(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)=>{_();var n=d(`×`);x(e,n)},$$slots:{default:!0}})}s(i),H(()=>l(c,e(r).name)),x(t,i)}),s(r),x(t,r)};t(Oe,t=>{e(D).length>0&&t(ke)});var Ae=I(Oe,2),je=t=>{{let r=n(()=>e(G)||e(le));we(t,{get dictation(){return q},get sending(){return e(r)}})}};t(Ae,t=>{e(E)&&t(je)});var Me=I(Ae,2),Ne=P(Me),Pe=t=>{var r=Bo(),i=B(r);{let t=n(()=>c()||e(M)),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=zo();x(e,n)},$$slots:{default:!0}})}var a=I(i,2);j(a,e=>W(ie,e),()=>e(ie)),H(t=>{a.disabled=c()||e(M),U(a,`aria-label`,t)},[()=>o(Q[`chat.assistant_composer.attach_files`])]),C(`change`,a,J),x(t,r)};t(Ne,e=>{a.onupload&&e(Pe)});var Fe=I(Ne,2),Ie=P(Fe);{let t=n(()=>c()||e(M)),r=n(()=>o(Q[`chat.assistant_composer.message_label`]));j(De(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=>W(ae,e,!0),()=>e(ae))}s(Fe),ee(Fe,(e,t)=>it?.(e,t),()=>({onPressStart:()=>ye(),onLongPress:de,onRelease:()=>void q.unlock(),disabled:!e(E)||c()||e(M)}));var Le=I(Fe,2),Re=t=>{{let r=n(()=>c()||e(M));Ce(t,{get dictation(){return q},get disabled(){return e(r)}})}};t(Le,t=>{e(E)&&t(Re)});var ze=I(Le,2);{let t=n(()=>c()||e(M)||e(N)||!f().trim());Y(ze,{type:`button`,class:`assistant-composer-send`,onclick:()=>me(),get disabled(){return e(t)},children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>o(Q[`chat.assistant_composer.send`])]),x(e,n)},$$slots:{default:!0}})}return s(Me),s(ve),T(`drop`,ve,function(...e){(a.onupload?pe:void 0)?.apply(this,e)}),T(`dragover`,ve,function(...e){(a.onupload?e=>e.preventDefault():void 0)?.apply(this,e)}),x(i,ve),r(_e)}w([`change`]);var Uo=c(`<option> </option>`);function Wo(t,i){h(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=O(i,`models`,3,a),s=O(i,`allowedModelIds`,19,()=>[]),c=O(i,`value`,15),{t:u}=K(),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`]));be(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=S(),i=B(r);p(i,17,()=>e(d),e=>e.id,(t,n)=>{var r=Uo(),i=R(r,!0),a={};H(()=>{l(i,e(n).label),a!==(a=e(n).id)&&(r.value=(r.__value=a)??``)}),x(t,r)}),x(t,r)},$$slots:{default:!0}})}return r(m)}var Go=`assistant-question`,Ko=6,qo=50,Jo=200,Yo=12,Xo=(e,t=Jo)=>typeof e==`string`&&e.trim()&&e.trim().length<=t?e.trim():void 0;function Zo(e){if(!e||typeof e!=`object`)return null;let t=e,n=Xo(t.value),r=Xo(t.label);if(!n||!r)return null;let i=Xo(t.hint),a=Array.isArray(t.keywords)?t.keywords.flatMap(e=>Xo(e,60)??[]).slice(0,Yo):[];return{value:n,label:r,...i?{hint:i}:{},...a.length?{keywords:a}:{}}}function Qo(e){if(!e||typeof e!=`object`)return null;let t=e,n=Xo(t.name,64),r=Xo(t.label);if(!n||!r||t.type!==`choice`||!Array.isArray(t.options))return null;let i=t.options.slice(0,qo).flatMap(e=>Zo(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 $o(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.kind!==`assistant-question`)return null;let n=Xo(t.id,120),r=Xo(t.prompt,500);if(!n||!r||!Array.isArray(t.fields))return null;let i=t.fields.slice(0,Ko).flatMap(e=>Qo(e)??[]);if(i.length===0)return null;let a=Xo(t.submitLabel,60),o={kind:Go,id:n,prompt:r,fields:i,...a?{submitLabel:a}:{}},s=ns(o,t.answer);return s?{...o,answer:s}:o}function es(e){let t=e.toolCallData,n=Array.isArray(t)?t:[t];for(let e of n){let t=$o(e);if(t)return t}return null}function ts(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 ns(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 rs(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 is=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 as(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,`$1 $2`).split(/[^a-z0-9]+/).filter(e=>e&&!is.has(e)).map(e=>e.length>3&&e.endsWith(`s`)?e.slice(0,-1):e)}function os(e,t){let n=new Set(as(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(as([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 ss=c(`<p class="assistant-question-summary svelte-nrkrfu" role="status"><span class="assistant-question-prompt svelte-nrkrfu"> </span> </p>`),cs=c(`<option disabled=""> </option>`),ls=c(`<option> </option>`),us=c(`<!> <!>`,1),ds=c(`<label class="assistant-question-select svelte-nrkrfu"><span> </span> <!></label>`),fs=c(`<!> <div class="assistant-question-actions svelte-nrkrfu"><!></div>`,1),ps=c(`<div class="assistant-question svelte-nrkrfu" data-smrt-component="AssistantQuestionForm"><!></div>`);function ms(i,a){let o=ie();h(a,!0);let c=O(a,`answered`,3,null),u=O(a,`autofocus`,3,!1),f=O(a,`disabled`,3,!1),{t:m}=K(),g=k(F(ts(a.question))),v=k(!1),y=k(null),b=k(null),C=n(()=>c()??a.question.answer??e(y)),w=n(()=>ns(a.question,e(g)));A(()=>{u()&&e(b)&&!e(C)&&e(b).querySelector(`input:not(:disabled), select:not(:disabled)`)?.focus()});function T(t,n){W(g,{...e(g),[t]:n},!0)}function E(t,n,r){let i=e(g)[t],a=Array.isArray(i)?i:i?[i]:[];W(g,{...e(g),[t]:r?[...new Set([...a,n])]:a.filter(e=>e!==n)},!0)}let D=(t,n)=>{let r=e(g)[t];return Array.isArray(r)?r.includes(n):r===n};async function M(){let t=ns(a.question,e(g));if(!(!t||e(v)||e(C))){W(v,!0);try{await a.onsubmit(t),W(y,t,!0)}catch{}finally{W(v,!1)}}}var N=ps(),ee=P(N),te=t=>{var n=ss(),r=P(n),i=R(r,!0),o=I(r);s(n),H(e=>{l(i,a.question.prompt),l(o,` ${e??``}`)},[()=>rs(a.question,e(C))]),x(t,n)},L=r=>{Se(r,{class:`assistant-question-form`,onsubmit:M,get"aria-label"(){return a.question.prompt},children:(r,i)=>{var c=fs(),u=B(c);Oe(u,{get legend(){return a.question.prompt},stack:!0,children:r=>{var i=S(),c=B(i);p(c,17,()=>a.question.fields,e=>e.name,(r,i)=>{var a=S(),c=B(a),u=t=>{Oe(t,{get legend(){return e(i).label},stack:!0,children:t=>{var r=S(),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));_e(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)})}}),x(t,r)},$$slots:{default:!0}})},d=r=>{var a=ds(),c=P(a),u=R(c,!0),d=I(c,2);{let r=n=>{var r=us(),a=B(r),o=e=>{var t=cs(),n=R(t,!0);t.value=t.__value=``,H(e=>l(n,e),[()=>m(Q[`chat.assistant_question.choose`])]),x(e,t)};t(a,t=>{e(g)[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=ls(),i=R(r,!0),a={};H(()=>{l(i,e(n).label),a!==(a=e(n).value)&&(r.value=(r.__value=a)??``)}),x(t,r)}),x(n,r)},a=n(()=>`${o}-${e(i).name}`),s=n(()=>typeof e(g)[e(i).name]==`string`?e(g)[e(i).name]:``);be(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),H(()=>l(u,e(i).label)),x(r,a)},h=t=>{{let r=t=>{var n=S(),r=B(n);p(r,17,()=>e(i).options,e=>e.value,(t,n)=>{xe(t,{get value(){return e(n).value},get label(){return e(n).label}})}),x(t,n)},a=n(()=>`${o}-${e(i).name}`),s=n(()=>typeof e(g)[e(i).name]==`string`?e(g)[e(i).name]:``);ke(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(h,-1)}),x(r,a)}),x(r,i)},$$slots:{default:!0}});var h=I(u,2),y=P(h);{let t=n(()=>f()||e(v)||!e(w));Y(y,{type:`submit`,get disabled(){return e(t)},children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>a.question.submitLabel??m(Q[`chat.assistant_question.submit`])]),x(e,n)},$$slots:{default:!0}})}s(h),x(r,c)},$$slots:{default:!0}})};t(ee,t=>{e(C)?t(te):t(L,-1)}),s(N),j(N,e=>W(b,e),()=>e(b)),x(i,N),r()}var hs=c(`<span class="count svelte-1d7fq8s"> </span>`),gs=c(`<span class="title svelte-1d7fq8s"> </span> <!>`,1),_s=c(`<li><!></li>`),vs=c(`<nav class="assistant-thread-list svelte-1d7fq8s" data-smrt-component="AssistantThreadList"><!> <ul class="svelte-1d7fq8s"></ul></nav>`);function ys(i,a){h(a,!0);let{t:o}=K(),c=O(a,`activeThreadId`,3,null);var u=vs(),f=P(u),m=e=>{Y(e,{type:`button`,variant:`ghost`,class:`assistant-thread-list-new`,get onclick(){return a.oncreate},children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>o(Q[`chat.assistant_thread_list.new_conversation`])]),x(e,n)},$$slots:{default:!0}})};t(f,e=>{a.oncreate&&e(m)});var g=I(f,2);p(g,21,()=>a.threads,e=>e.id,(r,i)=>{var u=_s(),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=gs(),s=B(a),c=R(s,!0),u=I(s,2),d=t=>{var n=hs(),r=R(n,!0);H(()=>l(r,e(i).messageCount)),x(t,n)};t(u,t=>{e(i).messageCount>0&&t(d)}),H(e=>l(c,e),[()=>e(i).title||o(Q[`chat.assistant_thread_list.untitled`])]),x(n,a)},$$slots:{default:!0}})}s(u),x(r,u)}),s(g),s(u),H(e=>U(u,`aria-label`,e),[()=>o(Q[`chat.assistant_thread_list.conversations_label`])]),x(i,u),r()}function bs(e){return e===`failed`?`error`:e===`previewing`||e===`applying`?`running`:`success`}function xs(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 Ss(e){return e.effect===`read`?`run`:e.effect===`destructive`?`confirm`:e.proposal===!0?`run`:`confirm`}function Cs(e,t){return e.effect===`destructive`?`confirm`:t?t(e):Ss(e)}function ws(e,t=64){return e.slice(0,t).map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema,effect:e.effect}))}var Ts=`assistant_propose_action`,Es=class extends Map{#e=new Map;#t=k(0);#n=k(0);#r=V||-1;constructor(e){if(super(),e){for(var[t,n]of e)super.set(t,n);this.#n.v=super.size}}#i(e){return V===this.#r?k(e):se(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),W(this.#n,super.size),D(o);else if(i!==t){D(r);var s=o.reactions===null?null:new Set(o.reactions);(s===null||!r.reactions?.every(e=>s.has(e)))&&D(o)}return a}delete(e){var t=this.#e,n=t.get(e),r=super.delete(e);return n!==void 0&&(t.delete(e),W(n,-1)),r&&(W(this.#n,super.size),D(this.#t)),r}clear(){if(super.size!==0){super.clear();var e=this.#e;W(this.#n,0);for(var t of e.values())W(t,-1);D(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}},Ds=`assistant_offer_`,Os=/^[a-z][a-z0-9_]{0,39}$/;function ks(e){return`${Ds}${e}`}function As(e){if(typeof e!=`string`)return null;let t=e.trim();return!/^\/(?![/\\])/.test(t)||/[\u0000-\u001f\s\\]/.test(t)?null:t}function js(e,t){return typeof e==`string`?e.trim().slice(0,t):``}function Ms(e){let t=new Set,n=[];for(let r of e){let e=js(r?.id,120),i=js(r?.label,80);if(!e||!i||t.has(e))continue;t.add(e);let a=js(r.description,160),o=As(r.imageUrl);if(n.push({id:e,label:i,...a?{description:a}:{},...o?{imageUrl:o,imageAlt:js(r.imageAlt,120)||i}:{},...r.value===void 0?{}:{value:r.value}}),n.length>=4)break}return n}var Ns=class{getRegistry;hold;#e=k(F([]));get sets(){return e(this.#e)}set sets(e){W(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=>Os.test(e.id))}source(e){return this.sources().find(t=>t.id===e)}tools(){return this.sources().map(e=>({name:ks(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(`
|
|
24
|
-
`),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=Ms(i?.options??[]);if(o.length===0&&!a)return{id:e.id,ok:!1,error:`Nothing to offer.`};let s=a?{message:js(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?Ms(i?.original?[i.original]:[])[0]:void 0,u={id:e.id,sourceId:n,title:js(i.title,120)||`Pick one`,options:o.filter(e=>e.id!==l?.id),status:`waiting`,...c?{previewable:!0,...l?{original:l}:{},commitLabel:js(i.commitLabel,40)||`Use this`,cancelLabel:js(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=Ms([...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=js(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()}},Ps=Object.freeze([`idempotency_in_progress`,`outcome_unknown`]);function Fs(e){return e!==void 0&&Ps.includes(e)}function Is(e){return`assistant-message-${e}-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}function Ls(e){return JSON.stringify([e.kind,e.surfaceId,e.subject?[e.subject.type,e.subject.id]:null])}function Rs(t){let n=t.now??(()=>Date.now()),r=t.activePollIntervalMs??3e3,i=t.idlePollIntervalMs??15e3,a=t.staleAfterMs??9e4,o=t.visible??(()=>!0),s=k(F([])),c=k(!0),l=k(null),u=k(F([])),d=k(F({})),f=k(F([])),p=k(F(t.surfaces??[])),m=k(F([])),h=k(void 0),g=k(null),_=k(F(t.initialDraft??``)),v=k(!1),y=k(null),b=k(F({state:`idle`,label:null})),x=k(0),S=k(F([])),C=k(``),w=k(F([])),T=null,E=new Map,D=new Ns(()=>t.choiceSources,e=>ae({id:`choice:${e.id}`,kind:`choice`,label:e.title})),O=k(null),j=new Es,M=null,N=0,P=()=>t.maxPauseMs??9e5;function I(e){let t=e.replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,79).trimEnd()}…`:t}function ee(e,t){L(!1),W(O,{id:e,goal:I(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&&W(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=M;M=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)&&W(O,{...e(O),stoppedReason:`paused_too_long`},!0),Le()},Math.max(0,N+P()-n()));M=e=>{clearTimeout(i),r(e&&!t.signal.aborted)}}):Promise.resolve(!0)}function ne(t,n){let r=e(O);r&&r.endedAt===null&&W(O,{...r,pageTools:[...r.pageTools,t.name].slice(-50),staged:t.effect===`write`&&n===`run`?r.staged+1:r.staged},!0)}function B(){e(v)&&e(O)?.state===`running`&&(N=n(),W(O,{...e(O),state:`paused`},!0))}function ie(){e(O)?.state===`paused`&&(W(O,{...e(O),state:`running`},!0),L(!0))}function V(){e(O)&&!e(O).acknowledged&&W(O,{...e(O),acknowledged:!0},!0)}function H(){e(v)||W(O,null)}function ae(e){let t={...e};return j.set(t.id,t),()=>{j.get(t.id)===t&&j.delete(t.id)}}function U(t){let n=e(v)?e(w).filter(e=>e.status===`waiting`).length:0;if(n>0)return{kind:`confirm`,count:n};let r=[...j.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=[...G.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 oe(){let t=e(O);if(!t)return null;let n=t.state===`running`||t.state===`done`?U(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 se(e){W(g,e,!0)}function ce(e){W(_,e,!0)}let G=new Es,le=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,Y=!1,pe=!1,me=0,X=0;function he(){let e=t.registry.list().map(e=>e.identity);if(!t.surfaces){W(p,e,!0);return}let n=new Set(e.map(e=>Ls(e)));W(p,t.surfaces.filter(e=>n.has(Ls(e))),!0)}function ge(t){return e(p).some(e=>Ls(e)===Ls(t))}function _e(e){for(let[t,n]of G)Ls(n.request.identity)===Ls(e)&&(n.status===`previewed`||n.status===`previewing`)&&G.set(t,{...n,status:`failed`,error:`AssistantDock: surface "${Ls(e)}" was unmounted before this action was applied`})}function ye(e){return e.subscribe(e=>{(e.type===`registered`||e.type===`unregistered`)&&he(),e.type===`unregistered`&&_e(e.identity)})}function be(){Le(),W(O,null),j.clear(),W(s,[],!0),W(c,!0),W(l,null),W(u,[],!0),W(d,{},!0),W(f,[],!0),G.clear(),D.clear(),W(g,null),le.clear(),W(m,[],!0),W(h,void 0),Y=!1,me+=1,X+=1,ke(),Ae()}function xe(){if(J)return;let e=t.registry;e!==de&&(q?.(),de=e,q=ye(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=ye(de),fe=t.transport;function we(){let t=n()-a;W(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;Y||(Y=!0,W(g,e instanceof Error?e.message:String(e),!0));return}J||pe||r!==X||e(l)===n&&(Y&&(Y=!1,W(g,null)),W(u,i,!0),Ee(e(f).some(e=>e.status===`processing`)),W(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&&(le.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||pe?null:setInterval(()=>void Te(),e?r:i)}function De(){J||K||(pe=!1,Ee(e(f).some(e=>e.status===`processing`)))}function Oe(){pe=!0,K&&=(clearInterval(K),null)}async function ke(){let e=X;W(c,!0);try{let n=await t.transport.listThreads();if(J||e!==X)return;W(s,n,!0),W(c,!1),W(g,null)}catch(t){if(J||e!==X)return;W(c,!1),W(g,t instanceof Error?t.message:String(t),!0)}}async function Ae(){if(!t.transport.listModels){W(m,[],!0);return}let n=X,r;try{r=await t.transport.listModels()}catch(e){if(J||n!==X)return;W(g,e instanceof Error?e.message:String(e),!0);return}J||n!==X||(W(m,r,!0),e(m).length>0&&!e(h)&&W(h,e(m)[0].id,!0))}function je(e){W(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;W(l,e,!0),W(u,i,!0),W(g,null)}catch(e){if(J||n!==me||r!==X)return;W(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&&(W(s,[...e(s),a],!0),W(g,null)),a}catch(e){throw!J&&i===X&&W(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};W(f,s>=0?e(f).map((e,t)=>t===s?c:e):[...e(f),c],!0);let l=X,u=Fe();ee(a,i);try{let n=await t.transport.sendMessage({threadId:r,content:i,attachments:o,clientRequestId:a,model:e(h),...Ue(r,u,l)});if(J||l!==X){Ie(u,`discarded`);return}if(n.inProgress){Ie(u,`discarded`),W(f,e(f).map(e=>e.clientRequestId===a?{...e,status:`processing`}:e),!0),De();return}le.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),...Ue(r,u,l)}),J||l!==X)break;Re(r,s)}W(f,e(f).filter(e=>e.clientRequestId!==a),!0),Ie(u,u.signal.aborted?`cancelled`:`done`)}catch(t){if(le.delete(ue(r,i,o)),u.signal.aborted){Ie(u,`cancelled`),!J&&l===X&&W(f,e(f).filter(e=>e.clientRequestId!==a),!0);return}throw Ie(u,`error`,t),!J&&l===X&&W(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,W(v,!0),W(y,{state:`working`,label:`Sending…`,cancellable:!0},!0),W(x,0),W(S,[],!0),W(C,``),W(w,[],!0),D.supersedeWaiting(),e}function Ie(t,n,r){if(T===t){T=null,W(v,!1),W(y,null),W(C,``);for(let[e,t]of E)E.delete(e),t(!1);L(!1),n!==`discarded`&&te(n,r),n!==`discarded`&&W(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&&W(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);W(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`&&(W(y,{...i.status,cancellable:!0},!0),e(O)&&i.status.label&&W(O,{...e(O),step:i.status.label},!0));return;case`token`:W(C,(e(C)+i.text).slice(-2e4),!0);return;case`step`:W(S,[...e(S),i.step].slice(-30),!0),e(O)&&i.step.kind===`tool_call`&&W(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),W(u,Array.from(t.values()),!0)}i.message.role===`assistant`&&W(C,``);return;case`done`:W(C,``),e(O)&&(i.stoppedReason===`max_steps`||i.stoppedReason===`budget`)&&W(O,{...e(O),stoppedReason:i.stoppedReason},!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:Ts,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(`
|
|
24
|
+
`),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=Ms(i?.options??[]);if(o.length===0&&!a)return{id:e.id,ok:!1,error:`Nothing to offer.`};let s=a?{message:js(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?Ms(i?.original?[i.original]:[])[0]:void 0,u={id:e.id,sourceId:n,title:js(i.title,120)||`Pick one`,options:o.filter(e=>e.id!==l?.id),status:`waiting`,...c?{previewable:!0,...l?{original:l}:{},commitLabel:js(i.commitLabel,40)||`Use this`,cancelLabel:js(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=Ms([...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=js(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()}},Ps=Object.freeze([`idempotency_in_progress`,`outcome_unknown`]);function Fs(e){return e!==void 0&&Ps.includes(e)}function Is(e){return`assistant-message-${e}-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}function Ls(e){return JSON.stringify([e.kind,e.surfaceId,e.subject?[e.subject.type,e.subject.id]:null])}function Rs(t){let n=t.now??(()=>Date.now()),r=t.activePollIntervalMs??3e3,i=t.idlePollIntervalMs??15e3,a=t.staleAfterMs??9e4,o=t.visible??(()=>!0),s=k(F([])),c=k(!0),l=k(null),u=k(F([])),d=k(F({})),f=k(F([])),p=k(F(t.surfaces??[])),m=k(F([])),h=k(void 0),g=k(null),_=k(F(t.initialDraft??``)),v=k(!1),y=k(null),b=k(F({state:`idle`,label:null})),x=k(0),S=k(F([])),C=k(``),w=k(F([])),T=null,E=new Map,D=new Ns(()=>t.choiceSources,e=>ae({id:`choice:${e.id}`,kind:`choice`,label:e.title})),O=k(null),j=new Es,M=null,N=0,P=()=>t.maxPauseMs??9e5;function I(e){let t=e.replace(/\s+/g,` `).trim();return t.length>80?`${t.slice(0,79).trimEnd()}…`:t}function ee(e,t){L(!1),W(O,{id:e,goal:I(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&&W(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=M;M=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)&&W(O,{...e(O),stoppedReason:`paused_too_long`},!0),Le()},Math.max(0,N+P()-n()));M=e=>{clearTimeout(i),r(e&&!t.signal.aborted)}}):Promise.resolve(!0)}function ne(t,n){let r=e(O);r&&r.endedAt===null&&W(O,{...r,pageTools:[...r.pageTools,t.name].slice(-50),staged:t.effect===`write`&&n===`run`?r.staged+1:r.staged},!0)}function B(){e(v)&&e(O)?.state===`running`&&(N=n(),W(O,{...e(O),state:`paused`},!0))}function ie(){e(O)?.state===`paused`&&(W(O,{...e(O),state:`running`},!0),L(!0))}function V(){e(O)&&!e(O).acknowledged&&W(O,{...e(O),acknowledged:!0},!0)}function H(){e(v)||W(O,null)}function ae(e){let t={...e};return j.set(t.id,t),()=>{j.get(t.id)===t&&j.delete(t.id)}}function U(t){let n=e(v)?e(w).filter(e=>e.status===`waiting`).length:0;if(n>0)return{kind:`confirm`,count:n};let r=[...j.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=[...G.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 oe(){let t=e(O);if(!t)return null;let n=t.state===`running`||t.state===`done`?U(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 se(e){W(g,e,!0)}function ce(e){W(_,e,!0)}let G=new Es,le=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,Y=!1,pe=!1,me=0,X=0;function he(){let e=t.registry.list().map(e=>e.identity);if(!t.surfaces){W(p,e,!0);return}let n=new Set(e.map(e=>Ls(e)));W(p,t.surfaces.filter(e=>n.has(Ls(e))),!0)}function ge(t){return e(p).some(e=>Ls(e)===Ls(t))}function _e(e){for(let[t,n]of G)Ls(n.request.identity)===Ls(e)&&(n.status===`previewed`||n.status===`previewing`)&&G.set(t,{...n,status:`failed`,error:`AssistantDock: surface "${Ls(e)}" was unmounted before this action was applied`})}function ye(e){return e.subscribe(e=>{(e.type===`registered`||e.type===`unregistered`)&&he(),e.type===`unregistered`&&_e(e.identity)})}function be(){Le(),W(O,null),j.clear(),W(s,[],!0),W(c,!0),W(l,null),W(u,[],!0),W(d,{},!0),W(f,[],!0),G.clear(),D.clear(),W(g,null),le.clear(),W(m,[],!0),W(h,void 0),Y=!1,me+=1,X+=1,ke(),Ae()}function xe(){if(J)return;let e=t.registry;e!==de&&(q?.(),de=e,q=ye(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=ye(de),fe=t.transport;function we(){let t=n()-a;W(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;Y||(Y=!0,W(g,e instanceof Error?e.message:String(e),!0));return}J||pe||r!==X||e(l)===n&&(Y&&(Y=!1,W(g,null)),W(u,i,!0),Ee(e(f).some(e=>e.status===`processing`)),W(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&&(le.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||pe?null:setInterval(()=>void Te(),e?r:i)}function De(){J||K||(pe=!1,Ee(e(f).some(e=>e.status===`processing`)))}function Oe(){pe=!0,K&&=(clearInterval(K),null)}async function ke(){let e=X;W(c,!0);try{let n=await t.transport.listThreads();if(J||e!==X)return;W(s,n,!0),W(c,!1),W(g,null)}catch(t){if(J||e!==X)return;W(c,!1),W(g,t instanceof Error?t.message:String(t),!0)}}async function Ae(){if(!t.transport.listModels){W(m,[],!0);return}let n=X,r;try{r=await t.transport.listModels()}catch(e){if(J||n!==X)return;W(g,e instanceof Error?e.message:String(e),!0);return}J||n!==X||(W(m,r,!0),e(m).length>0&&!e(h)&&W(h,e(m)[0].id,!0))}function je(e){W(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;W(l,e,!0),W(u,i,!0),W(g,null)}catch(e){if(J||n!==me||r!==X)return;W(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&&(W(s,[...e(s),a],!0),W(g,null)),a}catch(e){throw!J&&i===X&&W(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};W(f,s>=0?e(f).map((e,t)=>t===s?c:e):[...e(f),c],!0);let l=X,u=Fe();ee(a,i);try{let n=await t.transport.sendMessage({threadId:r,content:i,attachments:o,clientRequestId:a,model:e(h),...Ue(r,u,l)});if(J||l!==X){Ie(u,`discarded`);return}if(n.inProgress){Ie(u,`discarded`),W(f,e(f).map(e=>e.clientRequestId===a?{...e,status:`processing`}:e),!0),De();return}le.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),...Ue(r,u,l)}),J||l!==X)break;Re(r,s)}W(f,e(f).filter(e=>e.clientRequestId!==a),!0),Ie(u,u.signal.aborted?`cancelled`:`done`)}catch(t){if(le.delete(ue(r,i,o)),u.signal.aborted){Ie(u,`cancelled`),!J&&l===X&&W(f,e(f).filter(e=>e.clientRequestId!==a),!0);return}throw Ie(u,`error`,t),!J&&l===X&&W(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,W(v,!0),W(y,{state:`working`,label:`Sending…`,cancellable:!0},!0),W(x,0),W(S,[],!0),W(C,``),W(w,[],!0),D.supersedeWaiting(),e}function Ie(t,n,r){if(T===t){T=null,W(v,!1),W(y,null),W(C,``);for(let[e,t]of E)E.delete(e),t(!1);L(!1),n!==`discarded`&&te(n,r),n!==`discarded`&&W(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&&W(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);W(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`&&(W(y,{...i.status,cancellable:!0},!0),e(O)&&i.status.label&&W(O,{...e(O),step:i.status.label},!0));return;case`token`:W(C,(e(C)+i.text).slice(-2e4),!0);return;case`step`:W(S,[...e(S),i.step].slice(-30),!0),e(O)&&i.step.kind===`tool_call`&&W(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),W(u,Array.from(t.values()),!0)}i.message.role===`assistant`&&W(C,``);return;case`done`:W(C,``);{let t=i.stoppedReason===`max_steps`||i.stoppedReason===`budget`?i.stoppedReason:i.capReason;e(O)&&t&&W(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:Ts,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(`
|
|
25
25
|
`).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 ot(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 Z(){let e=He(),t=Be();return[...e,...t?[t]:[],...D.tools()]}function Ue(e,t,n){let r=Z();return{...r.length>0?{clientTools:ws(r)}:{},onEvent:r=>ze(e,t,n,r),signal:t.signal}}function We(t,n){W(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=G.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=Cs(n,t.clientToolPolicy);if(o===`confirm`){if(W(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`&&W(x,e(x)+1)),i.push({id:a.id,ok:!0,result:s}),ne(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=[...G.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?z(()=>{A(()=>{let e=oe();re(()=>{try{t.onRun?.(e)}catch{}})})}):null,Ze=t.onStatus?z(()=>{A(()=>{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=ns(r,i);if(!o||e(d)[a])return;let s=e(l),c=X;W(d,{...e(d),[a]:o},!0);let u=t.transport.answerQuestion;if(!u)await $e(rs(r,o));else try{let e=await u.call(t.transport,{threadId:s,messageId:n,questionId:r.id,values:o,clientRequestId:t.createClientRequestId?.()??Is(s)});!J&&c===X&&(Re(s,e),W(g,null))}catch(t){if(!J&&c===X){let{[a]:n,...r}=e(d);W(d,r,!0),W(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=le.get(a);o||(o=t.createClientRequestId?.()??Is(i),le.set(a,o));let s=e(_),c=X;await Pe(i,n,o,r),!J&&c===X&&e(_)===s&&e(_).trim()===n.trim()&&W(_,``)}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;W(g,null)}catch(e){if(J||r!==X)return;W(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=G.get(tt(e));if(n&&(n.status===`applying`||n.outcomeUnknown===!0)){W(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)){G.set(tt(e),{request:e,status:`failed`,error:`AssistantDock: surface "${Ls(e.identity)}" is not mounted`,idempotencyKey:r});return}let i;try{if(!t.actionClient)throw Error(`AssistantDock: previewAction requires an actionClient`);i=ve({...e,phase:`preview`})}catch(t){G.set(tt(e),{request:e,status:`failed`,error:t instanceof Error?t.message:String(t),idempotencyKey:r});return}G.set(tt(i),{request:i,status:`previewing`,idempotencyKey:r});let a=X,o;try{o=await t.actionClient.preview(i)}catch(e){let t=G.get(tt(i));t&&t.status===`previewing`&&t.idempotencyKey===r&&a===X&&G.set(tt(i),{request:i,status:`failed`,error:e instanceof Error?e.message:String(e),idempotencyKey:r});return}let s=G.get(tt(i));s&&a===X&&s.status===`previewing`&&s.idempotencyKey===r&&G.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=G.get(r);if(!i||i.status===`applying`)return;let a=i.status===`failed`&&i.retryable===!0;if(i.status!==`previewed`&&!a){W(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))G.set(r,{...i,status:`failed`,retryable:!0,error:`AssistantDock: surface "${Ls(i.request.identity)}" is not mounted`});else try{if(!t.actionClient)throw Error(`AssistantDock: applyAction requires an actionClient`);let a=ve({...i.request,phase:`apply`,...i.previewResult?.confirmationToken?{confirmationToken:i.previewResult.confirmationToken}:{}});G.set(r,{...i,request:a,status:`applying`});let s=await t.actionClient.apply(a,i.idempotencyKey),c=G.get(r);c&&c.status===`applying`&&o===X?(G.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&&Fs(s.reason)}),s.ok?(at(a,s),st(a,{status:`applied`,result:s})):Fs(s.reason)?st(a,{status:`unknown`,result:s}):st(a,{status:`rejected`,by:`server`,result:s})):!c&&s.ok&&o===X&&(e(l)&&W(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),st(a,{status:`applied`,result:s}))}catch(e){let t=G.get(r);if(t&&t.status===`applying`&&o===X){let n=e instanceof Error?e.message:String(e);G.set(r,{...t,status:`failed`,error:n,retryable:!0,outcomeUnknown:!0}),st(t.request,{status:`unknown`,error:n})}}}function at(e,n){try{t.onActionApplied?.(e,n)}catch{}}function st(n,r){r.status===`applied`&&(e(v)?W(x,e(x)+1):W(b,{state:`done`,label:`Done`,changes:1},!0));try{t.onActionSettled?.(n,r)}catch{}}function ct(e){let t=G.get(e);t&&(t.status===`applying`||t.outcomeUnknown===!0?W(g,`AssistantDock: rejectAction refused — action "${e}" `+(t.status===`applying`?`is still applying.`:`has an unknown outcome; retry it to learn whether it applied.`)):(G.delete(e),st(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 G},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 oe()},pauseRun:B,continueRun:ie,acknowledgeRun:V,dismissRun:H,holdForUser:ae,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:ce,setError:se,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 zs=c(`<!> <div class="assistant-dock-threads svelte-d0nc1n"><!></div>`,1),Bs=c(`<p class="assistant-dock-error svelte-d0nc1n" role="alert"> <!></p>`),Vs=c(`<span> </span>`),Hs=c(`<div class="assistant-dock-run svelte-d0nc1n" role="status" aria-live="polite"><span> </span> <!></div>`),Us=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>`),Ws=c(`<div class="assistant-dock-single-actions svelte-d0nc1n"><!></div>`),Gs=c(`<p class="assistant-dock-empty svelte-d0nc1n"> </p>`),Ks=c(`<div class="assistant-dock-thread-state assistant-dock-thread-loading svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p></div>`),qs=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <div class="assistant-dock-thread-state-actions svelte-d0nc1n"><!> <!></div>`,1),Js=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <!>`,1),Ys=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p>`,1),Xs=c(`<section class="assistant-dock-thread-state svelte-d0nc1n"><!></section>`),Zs=c(`<div class="assistant-dock-suggestions svelte-d0nc1n" role="group"></div>`),Qs=c(`<div class="assistant-dock-card svelte-d0nc1n"><!></div>`),$s=c(`<a target="_blank" rel="noopener noreferrer" class="assistant-dock-attachment-link svelte-d0nc1n"> </a>`),ec=c(`<span class="assistant-dock-attachment-name svelte-d0nc1n"> </span>`),tc=c(`<span class="assistant-dock-attachment-size svelte-d0nc1n"> </span>`),nc=c(`<li class="assistant-dock-attachment svelte-d0nc1n"><!> <!></li>`),rc=c(`<ul class="assistant-dock-attachments svelte-d0nc1n"></ul>`),ic=c(`<p class="assistant-dock-message-content svelte-d0nc1n"> </p> <!>`,1),ac=c(`<div class="assistant-dock-card assistant-dock-tool-call svelte-d0nc1n"><!></div>`),oc=c(`<li class="svelte-d0nc1n"><!> <!> <!></li>`),sc=c(`<p class="assistant-dock-message-content svelte-d0nc1n"> </p>`),cc=c(`<div class="assistant-dock-streaming svelte-d0nc1n"><!></div>`),lc=c(`<!> <!> <ul class="assistant-dock-messages svelte-d0nc1n"></ul> <!>`,1),uc=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>`),fc=c(`<div class="assistant-dock-action-unknown svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p> <!></div>`),pc=c(`<li><!> <!></li>`),mc=c(`<ul class="assistant-dock-actions svelte-d0nc1n"></ul>`),hc=c(`<div class="assistant-dock-stale svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),gc=c(`<div class="assistant-dock-failed svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),_c=c(`<div class="assistant-dock-status svelte-d0nc1n" role="status" aria-live="polite"><span class="assistant-dock-status-label"> </span> <!></div>`),vc=c(`<div class="assistant-dock-composer-header svelte-d0nc1n"><!></div>`),yc=c(`<div class="assistant-dock-composer"><!> <!></div>`),bc=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 xc(i,a){let c=ie();h(a,!0);function u(e){return e===`system`?`system`:e===`user`?`default`:`agent`}function f(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}let m=O(a,`suggestions`,19,()=>[]),v=O(a,`contextMode`,3,`data-surfaces`),b=O(a,`visible`,3,!0),C=O(a,`presentation`,3,`full`),w=O(a,`conversations`,3,`multiple`),T=O(a,`threadList`,3,!0),E=O(a,`composerDisabled`,3,!1),D=O(a,`sendOnPause`,3,!1),M=O(a,`speaking`,3,!1),{t:N}=K(),F=Rs({get transport(){return a.transport},get registry(){return a.registry},get actionClient(){return a.actionClient},get surfaces(){return a.surfaces},visible:()=>b(),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??Ss)(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 ee(e){try{return JSON.stringify(e,null,2)}catch{return``}}A(()=>(re(()=>{F.loadThreads(),F.loadModels(),F.startPolling(),a.oncontroller?.(F)}),()=>F.dispose()));let te=n(()=>F.run?.waitingFor?.kind===`choice`||F.toolRequests.some(e=>e.status===`waiting`)||[...F.actions.values()].some(e=>e.status===`previewed`||e.outcomeUnknown));A(()=>{a.onattentionchange?.(e(te))});let L=k(0);A(()=>{a.registry,re(()=>{oe(L),F.syncRegistry()})}),A(()=>{a.surfaces,re(()=>F.syncSurfaces())}),A(()=>{a.transport,re(()=>{oe(L),F.syncTransport()})});let ne=k(!1),z=`assistant-dock-threads-${c}`,V=k(void 0),se=`${z}-toggle`;function G(){if(!e(ne))return;let t=typeof document<`u`&&!!e(V)?.contains(document.activeElement);W(ne,!1),t&&ae().then(()=>{e(V)&&e(V).offsetParent===null&&document.getElementById(se)?.focus()})}async function le(){W(ne,!0),await ae(),e(V)?.querySelector(`.assistant-thread-list-item`)?.focus()}let ue=k(void 0),q=null;function de(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 fe(){let e;for(let t of F.threads){let n=de(t);(!e||n>=e.at)&&(e={id:t.id,at:n})}return e?.id}async function J(e=!1){let t=a.transport;q=t;try{let n=e?void 0:fe();if(!n){if(!t.createThread){F.setError(N(Q[`chat.assistant_dock.no_conversations`]));return}n=(await F.createThread(`Conversation`)).id}if(a.transport!==t)return;await F.openThread(n)}catch{}finally{q===t&&(q=null)}}async function X(){F.setError(null),await F.loadThreads()}A(()=>{w()===`single`&&(F.threadsLoading||F.activeThreadId||F.error||q!==a.transport&&re(()=>J()))}),A(()=>{w()===`single`&&b()&&F.activeThreadId&&ae().then(()=>e(ue)?.focus())}),A(()=>{if(typeof document>`u`)return;let t=t=>{let n=t.detail;t.defaultPrevented||typeof n?.prompt!=`string`||(t.preventDefault(),F.setDraft(n.prompt),ae().then(()=>e(ue)?.focus()))};return document.addEventListener(pe,t),()=>document.removeEventListener(pe,t)});async function he(){G(),F.setError(null),await J(!0)}async function ge(e){G(),await F.openThread(e)}async function _e(){G();try{let e=await F.createThread(`New conversation`);await F.openThread(e.id)}catch{}}async function ve(e,t,n){try{await F.answerQuestion(e,t,n)}catch(e){throw F.setError(e instanceof Error?e.message:String(e)),e}}async function ye(e,t){try{await F.send(e,t),F.setError(null)}catch(e){throw F.setError(e instanceof Error?e.message:String(e)),e}}async function be(t){let n=a.transport,r=e(L),i=()=>a.transport===n&&e(L)===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 F.setError(null),r}catch(e){throw i()&&F.setError(e instanceof Error?e.message:String(e)),e}}async function xe(e){await F.applyAction(e)}var Se=bc(),Ce=P(Se),we=P(Ce),Te=t=>{var r=zs(),i=B(r);Y(i,{type:`button`,variant:`ghost`,get id(){return se},class:`assistant-dock-threads-toggle`,get"aria-expanded"(){return e(ne)},get"aria-controls"(){return z},onclick:()=>W(ne,!e(ne)),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.conversations_toggle`])]),x(e,n)},$$slots:{default:!0}});var o=I(i,2),c=P(o);{let t=n(()=>a.transport.createThread?_e:void 0);ys(c,{get threads(){return F.threads},get activeThreadId(){return F.activeThreadId},onselect:ge,get oncreate(){return e(t)}})}s(o),j(o,e=>W(V,e),()=>e(V)),H(()=>U(o,`id`,z)),x(t,r)};t(we,e=>{C()===`full`&&w()!==`single`&&T()&&e(Te)});var Ee=I(we,2),De=P(Ee),Oe=e=>{var n=Bs(),r=P(n),i=I(r),a=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:X,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.retry_conversation`])]),x(e,n)},$$slots:{default:!0}})};t(i,e=>{w()===`single`&&!F.activeThreadId&&e(a)}),s(n),H(e=>l(r,`${e??``} `),[()=>N(Q[`chat.assistant_dock.error`],{message:F.error})]),x(e,n)};t(De,e=>{F.error&&e(Oe)});var ke=I(De,2),Ae=e=>{var n=Hs(),r=P(n),i=R(r,!0),a=I(r,2),o=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>F.pauseRun(),children:(e,t)=>{_();var n=d(`Pause`);x(e,n)},$$slots:{default:!0}})},c=e=>{Y(e,{type:`button`,size:`sm`,onclick:()=>F.continueRun(),children:(e,t)=>{_();var n=d(`Continue`);x(e,n)},$$slots:{default:!0}})},u=e=>{var t=Vs(),n=R(t,!0);H(()=>l(n,F.run.waitingFor.label??`Waiting for ${F.run.waitingFor.kind}`)),x(e,t)};t(a,e=>{F.run.state===`running`?e(o):F.run.state===`paused`?e(c,1):F.run.state===`waiting`&&F.run.waitingFor&&e(u,2)}),s(n),H(()=>l(i,F.run.goal)),x(e,n)};t(ke,e=>{F.run&&(C()===`controls`||F.run.state===`paused`)&&e(Ae)});var je=I(ke,2),Me=t=>{var r=Ws(),i=P(r);{let t=n(()=>N(Q[`chat.assistant_dock.clear_conversation`])),r=n(()=>N(Q[`chat.assistant_dock.clear_conversation`]));Y(i,{type:`button`,size:`sm`,variant:`ghost`,class:`assistant-dock-clear`,onclick:he,get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=Us();x(e,n)},$$slots:{default:!0}})}s(r),x(t,r)};t(je,e=>{w()===`single`&&F.activeThreadId&&a.transport.createThread&&F.messages.length>0&&e(Me)});var Ne=I(je,2),Pe=e=>{var t=Gs(),n=R(t,!0);H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.no_surfaces`])]),x(e,t)};t(Ne,e=>{v()===`data-surfaces`&&F.surfaces.length===0&&!a.pageTools&&e(Pe)});var Fe=I(Ne,2),Ie=P(Fe),Le=r=>{var i=lc(),c=B(i),h=e=>{var n=S(),r=B(n),i=e=>{var t=Ks(),n=P(t),r=R(n,!0);s(t),H((e,n)=>{U(t,`aria-label`,e),l(r,n)},[()=>N(Q[`chat.assistant_dock.opening_conversation`]),()=>N(Q[`chat.assistant_dock.opening_conversation`])]),x(e,t)};t(r,e=>{!F.activeThreadId&&!F.error&&e(i)}),x(e,n)},v=e=>{var t=Ks(),n=P(t),r=R(n,!0);s(t),H((e,n)=>{U(t,`aria-label`,e),l(r,n)},[()=>N(Q[`chat.assistant_dock.loading_conversations`]),()=>N(Q[`chat.assistant_dock.loading_conversations`])]),x(e,t)},y=e=>{var n=Xs(),r=P(n),i=e=>{var n=qs(),r=B(n),i=R(r,!0),o=I(r,2),c=R(o,!0),u=I(o,2),f=P(u);Y(f,{type:`button`,get"aria-controls"(){return z},onclick:le,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.view_conversations`])]),x(e,n)},$$slots:{default:!0}});var p=I(f,2),m=e=>{Y(e,{type:`button`,variant:`ghost`,onclick:_e,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.start_new_conversation`])]),x(e,n)},$$slots:{default:!0}})};t(p,e=>{a.transport.createThread&&e(m)}),s(u),H((e,t)=>{U(r,`id`,`${z}-empty-title`),l(i,e),l(c,t)},[()=>N(Q[`chat.assistant_dock.choose_conversation`]),()=>N(Q[`chat.assistant_dock.choose_conversation_hint`])]),x(e,n)},o=e=>{var t=Js(),n=B(t),r=R(n,!0),i=I(n,2),a=R(i,!0),o=I(i,2);Y(o,{type:`button`,onclick:_e,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.start_new_conversation`])]),x(e,n)},$$slots:{default:!0}}),H((e,t)=>{U(n,`id`,`${z}-empty-title`),l(r,e),l(a,t)},[()=>N(Q[`chat.assistant_dock.start_conversation`]),()=>N(Q[`chat.assistant_dock.start_conversation_hint`])]),x(e,t)},c=e=>{var t=Ys(),n=B(t),r=R(n,!0),i=I(n,2),a=R(i,!0);H((e,t)=>{U(n,`id`,`${z}-empty-title`),l(r,e),l(a,t)},[()=>N(Q[`chat.assistant_dock.no_conversations`]),()=>N(Q[`chat.assistant_dock.no_conversations_hint`])]),x(e,t)};t(r,e=>{T()&&F.threads.length>0?e(i):a.transport.createThread?e(o,1):e(c,-1)}),s(n),H(()=>U(n,`aria-labelledby`,`${z}-empty-title`)),x(e,n)};t(c,e=>{w()===`single`?e(h):!F.activeThreadId&&F.threadsLoading?e(v,1):!F.activeThreadId&&!F.error&&e(y,2)});var b=I(c,2),C=t=>{var n=Zs();p(n,21,m,e=>e.prompt,(t,n)=>{Y(t,{variant:`secondary`,get disabled(){return E()},onclick:()=>{ye(e(n).prompt,[]).catch(()=>{})},children:(t,r)=>{_();var i=d();H(()=>l(i,e(n).label)),x(t,i)},$$slots:{default:!0}})}),s(n),H(e=>U(n,`aria-label`,e),[()=>N(Q[`chat.assistant_dock.conversation_starters`])]),x(t,n)},D=n(()=>F.activeThreadId&&!F.threadsLoading&&!F.messages.some(e=>e.role===`user`||e.role===`tool`)&&F.pendingSends.length===0&&m().length>0);t(b,t=>{e(D)&&t(C)});var O=I(b,2);p(O,21,()=>F.messages,e=>e.id,(r,i)=>{let c=n(()=>e(i).role===`tool`?a.toolResultComponent?.(e(i)):void 0),d=n(()=>e(i).role===`assistant`?es(e(i)):null);var m=oc(),h=P(m),_=t=>{var n=Qs(),r=P(n);g(r,()=>e(c),(t,n)=>{n(t,{get message(){return e(i)}})}),s(n),x(t,n)},v=r=>{{let a=r=>{var a=ic(),o=B(a),c=R(o,!0),u=I(o,2),d=r=>{var a=rc();p(a,21,()=>e(i).attachments,e=>e.id,(r,i)=>{let a=n(()=>xs(e(i).url));var o=nc(),c=P(o),u=t=>{var n=$s(),r=R(n,!0);H(()=>{U(n,`href`,e(a)),l(r,e(i).name)}),x(t,n)},d=t=>{var n=ec(),r=R(n,!0);H(()=>l(r,e(i).name)),x(t,n)};t(c,t=>{e(a)?t(u):t(d,-1)});var p=I(c,2),m=t=>{var n=tc(),r=R(n,!0);H(e=>l(r,e),[()=>f(e(i).size)]),x(t,n)};t(p,t=>{e(i).size!==void 0&&t(m)}),s(o),x(r,o)}),s(a),H(e=>U(a,`aria-label`,e),[()=>N(Q[`chat.assistant_dock.attachments`])]),x(r,a)};t(u,t=>{e(i).attachments&&e(i).attachments.length>0&&t(d)}),H(()=>l(c,e(i).content)),x(r,a)},o=n(()=>u(e(i).role)),c=n(()=>e(i).role===`user`);me(r,{get variant(){return e(o)},get own(){return e(c)},children:a,$$slots:{default:!0}})}};t(h,t=>{e(c)?t(_):t(v,-1)});var y=I(h,2),b=t=>{var r=Qs(),a=P(r);{let t=n(()=>F.answeredQuestions[`${e(i).id}:${e(d).id}`]??null),r=n(()=>e(i).id===F.messages.at(-1)?.id);ms(a,{get question(){return e(d)},get answered(){return e(t)},get autofocus(){return e(r)},onsubmit:t=>ve(e(i).id,e(d),t)})}s(r),x(t,r)};t(y,t=>{e(d)&&t(b)});var S=I(y,2),C=t=>{var n=ac(),r=P(n);o(r,()=>a.toolCall,()=>e(i)),s(n),x(t,n)};t(S,t=>{a.toolCall&&e(i).toolCallData!=null&&t(C)}),s(m),H(()=>U(m,`data-role`,e(i).role)),x(r,m)}),s(O);var k=I(O,2),A=e=>{var t=cc(),n=P(t);me(n,{variant:`agent`,own:!1,children:e=>{var t=sc(),n=R(t,!0);H(()=>l(n,F.streamingText)),x(e,t)},$$slots:{default:!0}}),s(t),H(e=>U(t,`aria-label`,e),[()=>N(Q[`chat.assistant_dock.reply_in_progress`])]),x(e,t)};t(k,e=>{F.streamingText&&e(A)}),x(r,i)};t(Ie,e=>{C()===`full`&&e(Le)});var Re=I(Ie,2);p(Re,17,()=>F.toolRequests.filter(e=>e.status===`waiting`),e=>e.id,(n,r)=>{var i=dc(),a=P(i),o=R(a,!0),c=I(a,2),u=R(c,!0),f=I(c,2),p=e=>{var t=uc(),n=R(t,!0);H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.tool_request_destructive`])]),x(e,t)};t(f,t=>{e(r).effect===`destructive`&&t(p)});var m=I(f,2),h=P(m),g=R(h,!0),v=I(h,2),y=R(v,!0);s(m);var b=I(m,2),S=P(b);Y(S,{type:`button`,size:`sm`,onclick:()=>F.approveToolRequest(e(r).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.tool_request_allow`])]),x(e,n)},$$slots:{default:!0}});var C=I(S,2);Y(C,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>F.declineToolRequest(e(r).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.tool_request_decline`])]),x(e,n)},$$slots:{default:!0}}),s(b),s(i),H((t,n,a,s)=>{U(i,`aria-label`,t),l(o,n),l(u,e(r).description||e(r).name),l(g,a),l(y,s)},[()=>N(Q[`chat.assistant_dock.tool_request_title`]),()=>N(Q[`chat.assistant_dock.tool_request_title`]),()=>N(Q[`chat.assistant_dock.tool_request_details`]),()=>ee(e(r).args)]),x(n,i)});var ze=I(Re,2);Fo(ze,{get choices(){return F.choices},onchoose:(e,t)=>void F.chooseOption(e,t),ondismiss:e=>F.dismissChoices(e),onpreview:(e,t)=>void F.previewOption(e,t),oncommit:e=>void F.commitOption(e),oncancel:e=>F.cancelChoices(e)});var Be=I(ze,2),Ve=r=>{var i=mc();p(i,21,()=>[...F.actions.entries()],([e,t])=>e,(r,i)=>{var a=n(()=>y(e(i),2));let o=()=>e(a)[0],c=()=>e(a)[1];var u=pc(),f=P(u);{let t=n(()=>({toolName:c().request.actionId,toolCallId:o(),status:bs(c().status),error:c().error})),r=n(()=>c().applyResult??(c().status===`previewed`?c().previewResult:void 0));er(f,{get toolCall(){return e(t)},get actionResult(){return e(r)},onconfirmaction:()=>xe(o()),onrejectaction:()=>F.rejectAction(o())})}var p=I(f,2),m=t=>{var r=fc(),i=P(r),a=R(i,!0),u=I(i,2);{let t=n(()=>c().status===`applying`);Y(u,{type:`button`,size:`sm`,get disabled(){return e(t)},onclick:()=>xe(o()),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.action_check_again`])]),x(e,n)},$$slots:{default:!0}})}s(r),H(e=>l(a,e),[()=>N(Q[`chat.assistant_dock.action_outcome_unknown`])]),x(t,r)};t(p,e=>{c().outcomeUnknown&&e(m)}),s(u),x(r,u)}),s(i),x(r,i)};t(Be,e=>{F.actions.size>0&&e(Ve)});var He=I(Be,2),Z=t=>{var n=hc(),r=P(n),i=R(r,!0),a=I(r,2);p(a,17,()=>F.pendingSends.filter(e=>e.status===`stale`),e=>e.clientRequestId,(t,n)=>{Y(t,{type:`button`,size:`sm`,onclick:()=>F.retry(e(n).clientRequestId),children:(t,r)=>{_();var i=d();H(e=>l(i,e),[()=>N(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),x(t,i)},$$slots:{default:!0}})}),s(n),H(e=>l(i,e),[()=>N(Q[`chat.assistant_dock.taking_longer`])]),x(t,n)},Ue=n(()=>F.pendingSends.some(e=>e.status===`stale`));t(He,t=>{e(Ue)&&t(Z)});var We=I(He,2),Ge=t=>{var n=gc(),r=P(n),i=R(r,!0),a=I(r,2);p(a,17,()=>F.pendingSends.filter(e=>e.status===`failed`),e=>e.clientRequestId,(t,n)=>{Y(t,{type:`button`,size:`sm`,onclick:()=>F.retry(e(n).clientRequestId),children:(t,r)=>{_();var i=d();H(e=>l(i,e),[()=>N(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),x(t,i)},$$slots:{default:!0}})}),s(n),H(e=>l(i,e),[()=>N(Q[`chat.assistant_dock.send_failed`])]),x(t,n)},Ke=n(()=>F.pendingSends.some(e=>e.status===`failed`));t(We,t=>{e(Ke)&&t(Ge)}),s(Fe);var qe=I(Fe,2),Je=e=>{var n=_c(),r=P(n),i=R(r,!0),a=I(r,2),o=e=>{Y(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>F.cancel(),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>N(Q[`chat.assistant_dock.stop`])]),x(e,n)},$$slots:{default:!0}})};t(a,e=>{F.status.cancellable&&e(o)}),s(n),H(()=>l(i,F.status.label)),x(e,n)};t(qe,e=>{F.status.state===`working`&&e(Je)});var Ye=I(qe,2),Xe=r=>{var i=yc(),o=P(i),c=t=>{var r=vc(),i=P(r);{let t=n(()=>F.selectedModel??F.models[0].id);Wo(i,{get models(){return F.models},get value(){return e(t)},onchange:e=>F.setSelectedModel(e)})}s(r),x(t,r)};t(o,e=>{F.models.length>0&&e(c)});var l=I(o,2);ce(l,()=>e(L),t=>{var r=()=>F.draft,i=e=>F.setDraft(e);{let o=n(()=>a.transport.uploadAttachment?be:void 0),s=n(()=>!F.activeThreadId||E());j(Ho(t,{get value(){return r()},set value(e){i(e)},onsend:ye,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 D()},get sendOnPauseMs(){return a.sendOnPauseMs},get speaking(){return M()}}),e=>W(ue,e,!0),()=>e(ue))}}),s(i),x(r,i)};t(Ye,e=>{C()===`full`&&e(Xe)}),s(Ee),s(Ce),s(Se),H(()=>U(Ce,`data-threads-open`,e(ne)||void 0)),x(i,Se),r()}Z.registerModule(Rn),Z.register(`@happyvertical/smrt-chat`,`chat-layout`,Ai),Z.register(`@happyvertical/smrt-chat`,`room-list`,Oi),Z.register(`@happyvertical/smrt-chat`,`room-header`,Xi),Z.register(`@happyvertical/smrt-chat`,`member-list`,Hi),Z.register(`@happyvertical/smrt-chat`,`message-list`,wa),Z.register(`@happyvertical/smrt-chat`,`message-item`,ba),Z.register(`@happyvertical/smrt-chat`,`message-input`,ea),Z.register(`@happyvertical/smrt-chat`,`thread-panel`,Oa),Z.register(`@happyvertical/smrt-chat`,`chat-tabs`,xo),Z.register(`@happyvertical/smrt-chat`,`chat-tab`,mo),Z.register(`@happyvertical/smrt-chat`,`chat-tab-list`,yo),Z.register(`@happyvertical/smrt-chat`,`mini-chat`,so),Z.register(`@happyvertical/smrt-chat`,`agent-chat`,mr),Z.register(`@happyvertical/smrt-chat`,`agent-selector`,yr),Z.register(`@happyvertical/smrt-chat`,`agent-session-panel`,Dr),Z.register(`@happyvertical/smrt-chat`,`tool-call-display`,er),Z.register(`@happyvertical/smrt-chat`,`heard-captions`,Fr),Z.register(`@happyvertical/smrt-chat`,`spoken-captions`,zr),Z.register(`@happyvertical/smrt-chat`,`avatar`,zn),Z.register(`@happyvertical/smrt-chat`,`file-upload`,Pa),Z.register(`@happyvertical/smrt-chat`,`link-preview`,za),Z.register(`@happyvertical/smrt-chat`,`mention-autocomplete`,Ha),Z.register(`@happyvertical/smrt-chat`,`message-bubble`,me),Z.register(`@happyvertical/smrt-chat`,`reaction-picker`,ta),Z.register(`@happyvertical/smrt-chat`,`read-receipts`,Za),Z.register(`@happyvertical/smrt-chat`,`typing-indicator`,X),Z.register(`@happyvertical/smrt-chat`,`user-presence`,eo),Z.register(`@happyvertical/smrt-chat`,`room-create-dialog`,Ur),Z.register(`@happyvertical/smrt-chat`,`search-messages`,ei),Z.register(`@happyvertical/smrt-chat`,`caption-overlay`,jr),Z.register(`@happyvertical/smrt-chat`,`helper-control-panel`,fi);function Sc(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:[...Re]},primary:{type:`string`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`]},borderRadius:{enum:[...ze]},density:{enum:[...Ve]},contrast:{enum:[...He]}},additionalProperties:!1}),i.length&&(c.open={enum:[...i,null]}),a.length&&(c.report=Ze(a)),{type:`object`,properties:c,required:[`reply`,`add`,`remove`],additionalProperties:!1}}function Cc(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();Ge.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 wc(e){let t={};if(!e||typeof e!=`object`||Array.isArray(e))return t;let n=e;typeof n.preset==`string`&&Re.includes(n.preset)&&(t.preset=n.preset);let r=Fe(n.primary);return r&&(t.primary=r),(n.colorScheme===`light`||n.colorScheme===`dark`||n.colorScheme===`system`)&&(t.colorScheme=n.colorScheme),ze.includes(n.borderRadius)&&(t.borderRadius=n.borderRadius),Ve.includes(n.density)&&(t.density=n.density),He.includes(n.contrast)&&(t.contrast=n.contrast),t}function Tc(e){return e.replace(/<think>[\s\S]*?<\/think>/gi,``).replace(/<think>[\s\S]*$/i,``).trim()}function Ec(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 Dc(e,t,n=[],r={}){let i=new Set(t.map(e=>e.id)),a=Tc(e),o=e=>({reply:e,add:[],remove:[],cookbook:null,settings:{},theme:{}}),s=/^[\s`]*[{[]/.test(a)||/"reply"\s*:/.test(a),c=()=>o(s?Ec(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?q(u.sampleContext):void 0,g=r.commands?Oc(u.commands):[],_=r.reports?Qe(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:Cc(u.settings),theme:wc(u.theme),...g.length?{commands:g}:{},...h?{sampleContext:h}:{},...typeof u.open==`string`&&r.sections?.includes(u.open)?{open:u.open}:{},..._?{report:_}:{}}}function Oc(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 kc(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 Ac(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 jc={name:10,synonym:6,keyword:4},Mc=1.5,Nc=new Set([`a`,`an`,`and`,`the`,`of`,`for`,`to`,`in`,`on`,`or`,`general`,`simple`]),Pc=[`car`,`vehicle`,`metal`,`steel`,`gates`,`studio`,`classes`,`members`,`shop`,`order`,`item`,`material`,`customer`,`sales`,`stock`,`schedule`,`terms`];function Fc(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 Ic(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(Fc).join(` `)}var Lc=new Set(Pc.map(Ic)),Rc={"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 zc(e,t){let n=Ic(e);if(!n)return null;let r=n.split(` `);return r.length===1&&Nc.has(n)?null:{text:n,tier:t,weak:t!==`name`&&r.every(e=>Lc.has(e)),words:r.length}}function Bc(e,t,n){let r=zc(t,n);if(!r)return;let i=e.terms.find(e=>e.text===r.text);i?jc[r.tier]>jc[i.tier]&&(i.tier=r.tier,i.weak=r.weak):e.terms.push(r)}function Vc(e){return Ic(e).split(` `).filter(e=>e&&!Nc.has(e))}var Hc=[`theme`,`colour`,`color`,`colour scheme`,`dark mode`,`light mode`,`brand`,`branding`,`style`,`warmer`,`cooler`,`font`];function Uc(e,t=[],n={}){let r=[];for(let t of e){let e={kind:`recipe`,id:t.id,terms:[],exact:Ic(t.label)};Bc(e,t.label,`name`),Bc(e,(t.id.split(`.`).pop()??``).replace(/[-_]/g,` `),`name`);for(let n of Vc(t.label))Bc(e,n,`synonym`);for(let n of t.synonyms)Bc(e,n,`synonym`);for(let n of Rc[t.id]??[])Bc(e,n,`keyword`);r.push(e)}for(let e of t){let t={kind:`cookbook`,id:e.id,terms:[],exact:Ic(e.name)};Bc(t,e.name,`name`),Bc(t,e.id.replace(/[-_]/g,` `),`name`);for(let n of e.keywords??[])Bc(t,n,`keyword`);r.push(t)}if(n.theme){let e={kind:`theme`,id:`theme`,terms:[]};for(let t of Hc)Bc(e,t,`keyword`);r.push(e)}return{entries:r}}function Wc(e,t){let n=Ic(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+=jc[n.tier]*(n.words>1?Mc: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 Gc=5,Kc=2,qc=[{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 Jc(e,t,n,r,i=new Set){return qc.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 Yc=`reports.runtime`;function Xc(e){return`${Number((e*100).toFixed(4))}%`}function Zc(e,t,n=[],r,i,a,o=[],s=[],c){let l=i!==void 0,u=(i??[]).filter(e=>e.kind===`recipe`).slice(0,Gc).map(e=>e.id),d=(i??[]).filter(e=>e.kind===`cookbook`).slice(0,Kc).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 ${Yc} (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 ${Yc} (Reports): add it, and open only its section, never another. You cannot build the report itself here.`);let g=Jc(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 ${Xc(r.taxRate)}${e}${t}${n}.`)}return a&&h.push(`Theme: ${Le(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(`
|
|
26
26
|
`)}var Qc=`Plan your app`,$c=`What would you like to build?`,el=400,tl=e=>Object.keys(e).length>0;function nl(e,t,n){let r=e.run({name:t,input:n});return r.ok?{summary:r.receipt.summary,undoId:r.receipt.undoId}:{summary:``}}var rl=(e,t,n)=>nl(e,t,n).summary;function il(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 al=`Nothing in the app changed.`,ol=`Building a report needs the planner app and its sample records; it will live under Reports.`,sl=`reports.runtime.define`;function cl(e,t){return{kind:Go,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 ll(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 ul=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 fl(e,t,n){let r=os(t,n);if(!r)return;let i=new Set(e.options.flatMap(e=>dl([e.label,e.value,...e.keywords??[]].join(` `)))),a=$e(n,new Date)!==null;if(dl(n).filter(e=>!i.has(e)&&!ul.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 pl=(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 ml(e,t){return`Here is a preview of ${e} (${t} ${t===1?`row`:`rows`}). Approve it to save it under Saved reports.`}var hl=`item:reports:RuntimeReport`;function gl(e,t,n){return t||(n||e.trim().endsWith(`?`)?e:[e,al].filter(Boolean).join(` `))}function _l(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 vl(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 yl(e){let t=e.now??(()=>Date.now()),n=0,r=e=>`${e}-${++n}`,i={id:`planner`,title:Qc,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`)?[]:vl(E,{add:[Yc],remove:[]}).added,ref:{name:sl,phase:`preview`,result:o.proposal},text:ml(o.proposal.spec.title,o.proposal.preview.rowCount)};let s=o.followUp;if(!s)return y=null,{added:[],text:o.question};if(i&&pl(i,s)){let e=s.options.find(e=>e.value===s.default);if(e){let i=await x(t,ll(n,e.apply),r,s,a);return a()?{...i,text:`I went with ${e.label}. ${i.text}`}:{added:[],text:`Stopped.`}}}let c=cl(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,ll(a.intent,n.apply),`${a.text} ${r}`.trim(),a.followUp,i);if(!i())return{content:`Stopped.`};let s=[kc({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??Ke({store:e.store,settings:e.settings,theme:e.theme}),D=T(`assistant`,$c,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=fl(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=Uc(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=Wc(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:Zc(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:Sc(e.recipes,r,!!e.settings,!!e.theme,l.map(e=>e.id),d.map(e=>e.id)),temperature:0,maxTokens:el,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=Dc(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=vl(E,g),C=e.settings&&tl(g.settings)?rl(E,`set_settings`,g.settings):``,T=e.theme?.read(),O=e.theme&&tl(g.theme)?nl(E,`set_theme`,g.theme):null,k=O?.undoId&&e.themeUndos?e.themeUndos.record(T,O.undoId):void 0,A=(g.commands??[]).length?il(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)&&fe(g.sampleContext);let j=A.summary,M=Ac(_,E.snapshot(),A.results,e.recipes),N=c.some(e=>e.kind===`recipe`&&e.id===`reports.runtime`),P=E.snapshot().sections.find(e=>e.items.some(e=>e.id===hl))?.id,F=g.open&&(!N||g.open===P)?g.open:void 0,I=F?_l(E,F,l):``,ee=``,te,L=null,R=t;f&&g.report?(L=ll(f.intent,g.report),R=`${f.text} ${t}`):g.report&&(L=g.report);let ne=S.added.length>0||S.removed.length>0||!!C||!!O?.summary||!!j||!!I||!!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),ee=e.text,te=e.ref}else if(u&&f&&!ne){let e=f.followUp.options.find(e=>e.value===f.followUp.default);if(e){let t=await x(u,ll(f.intent,e.apply),f.text,f.followUp,()=>v(n));if(!v(n))return{content:`Stopped.`};S.added.push(...t.added),ee=`I went with ${e.label}. ${t.text}`,te=t.ref}}else f&&(y=null);let re=[kc(S,e.recipes),C,O?.summary??``,j,I].filter(Boolean).join(` `);if((N||S.added.includes(`reports.runtime`))&&!g.report&&!f&&!I&&!S.removed.length){let e=u?Je(d):null;if(e){let n=cl(e,`report-${++b}`);y={intent:{source:``},followUp:e,question:n,text:t},ee=e.prompt,te=n}else ee=u?Xe(d):ol}let z=[re,ee].filter(Boolean).join(` `),B=c.find(e=>e.kind===`cookbook`&&e.confidence===`strong`)?.id,ie=g.cookbook??(B&&e.offers?.engaged?.()===!1?B:null),V=ie?e.offers?.offer(ie)??void 0:void 0,H=V?r.find(e=>e.id===ie):void 0,ae=[gl(g.reply||(H?`Set up ${H.name}?`:``),z,!!V),M].filter(Boolean).join(` `);ae&&e.onReply?.(ae);let U=[V,k,te].filter(Boolean);return{content:ae,refs:U.length>1?U:U[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`,$c),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=ns(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 bl(e,t){return/^qwen3/i.test(t)?{message:(t,n)=>e.message(`${t} /no_think`,n)}:e}var xl=class{#e=k(`idle`);get status(){return e(this.#e)}set status(e){W(this.#e,e,!0)}#t=k(F({modelId:``,consented:[]}));get prefs(){return e(this.#t)}set prefs(e){W(this.#t,e,!0)}#n=k(F({progress:0,text:``}));get progress(){return e(this.#n)}set progress(e){W(this.#n,e,!0)}#r=k(``);get error(){return e(this.#r)}set error(e){W(this.#r,e,!0)}#i=k(`browser`);get mode(){return e(this.#i)}set mode(e){W(this.#i,e,!0)}#a=k(``);get remoteLabel(){return e(this.#a)}set remoteLabel(e){W(this.#a,e,!0)}transport;hostTurn;cookbookOffers=!0;offers=new jn(tt);themeUndos;reports=null;loaded=null;chat=null;abort=null;loadGeneration=0;options;constructor(e){this.options=e,this.prefs=Pn(e.storage),this.status=(e.webgpu??bn)()?`idle`:`unsupported`,this.themeUndos=e.theme?new Ln(e.theme,e.controller):null,this.transport=yl({model:()=>this.chat,conversationStorage:e.conversationStorage,hostTurn:async e=>this.hostTurn?.(e)??null,store:e.store,recipes:e.recipes,cookbooks:()=>this.cookbookOffers?et:[],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??bn)()?`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){Kt(e)&&this.status!==`loading`&&(this.prefs={...this.prefs,modelId:e},Fn(this.options.storage,this.prefs))}async start(){if(this.status===`loading`||this.status===`unsupported`)return;let e=this.prefs.modelId;if(!Kt(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 kn(e,e=>{this.progress=e},t.signal,this.options.host??On);if(n!==this.loadGeneration||this.mode!==`browser`){r.dispose();return}this.loaded=r,this.prefs={...this.prefs,consented:[...new Set([...this.prefs.consented,e])]},Fn(this.options.storage,this.prefs),this.chat=bl(new Cn({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`)}},Sl=[{id:`moonshine-base`,label:`Moonshine base`,note:`Accurate and still quick, best for talking as you go (default)`,adapter:`moonshine`,bytes:je[`moonshine-base`]?.bytes??0},{id:`moonshine-tiny`,label:`Moonshine tiny`,note:`Fastest, less accurate`,adapter:`moonshine`,bytes:je[`moonshine-tiny`]?.bytes??0},{id:`whisper-tiny.en`,label:`Whisper tiny`,note:`English, the original choice`,adapter:`whisper-local`,bytes:je[`whisper-tiny.en`]?.bytes??0}],Cl=`moonshine-base`;function wl(e){return Sl.find(t=>t.id===e)??Sl[0]}var Tl=`smrt-planner:voice:v1`;function El(e){try{let t=e?.getItem(Tl);if(t){let e=JSON.parse(t),n=e.local===!0,r=Sl.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:Cl}}function Dl(e,t){try{e?.setItem(Tl,JSON.stringify(t))}catch{}}function Ol(e){return El(e).local}function kl(e,t){Dl(e,{...El(e),local:t})}function Al(e){return El(e).preferLocal}function jl(e){return El(e).model}function Ml(e,t,n){return e===`works`?`browser`:t&&n?`enable-cached`:`offer`}var Nl=class{#e=k(`checking`);get status(){return e(this.#e)}set status(e){W(this.#e,e,!0)}#t=k(!1);get cached(){return e(this.#t)}set cached(e){W(this.#t,e,!0)}#n=k(0);get progress(){return e(this.#n)}set progress(e){W(this.#n,e,!0)}#r=k(``);get error(){return e(this.#r)}set error(e){W(this.#r,e,!0)}#i=k(!1);get browserWorks(){return e(this.#i)}set browserWorks(e){W(this.#i,e,!0)}#a=k(!1);get preferLocal(){return e(this.#a)}set preferLocal(e){W(this.#a,e,!0)}#o=k(0);get size(){return e(this.#o)}set size(e){W(this.#o,e,!0)}#s=k(Cl);get model(){return e(this.#s)}set model(e){W(this.#s,e,!0)}#c=k(!1);get preparing(){return e(this.#c)}set preparing(e){W(this.#c,e,!0)}#l=k(null);get dictation(){return e(this.#l)}set dictation(e){W(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??st)();if(e!==this.generation)return;this.browserWorks=t===`works`,this.preferLocal=Al(this.options.storage),this.model=jl(this.options.storage);let n=this.preferLocal&&t===`works`?`unreliable`:t;if(n===`works`){this.dictation=(this.options.browserSource??(()=>Ae({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,Ml(n,Ol(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;kl(this.options.storage,!0),this.cached=!0;let r=wl(this.model);this.dictation=(this.options.localSource??((e,t)=>Ae({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&&Sl.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,Dl(this.options.storage,{...El(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}},Pl=[`json_schema`,`json_object`,`none`],Fl=12e4;function Il(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 Ll(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t)}function Rl(e){try{let t=new URL(e.trim());return t.protocol===`https:`||t.protocol===`http:`&&Ll(t.hostname)}catch{return!1}}function zl(e){try{return new URL(e.trim()).origin}catch{return null}}var Bl=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`EndpointError`}};function Vl(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 Hl(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 Bl(`the endpoint sent no reply text`)}function Ul(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 Wl(e){let t=Il(e.baseUrl);if(!t)throw new Bl(`the address is not a valid http(s) URL`);if(e.apiKey&&!Rl(t))throw new Bl(`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,Pl.indexOf(e.jsonMode??`json_schema`));async function a(t,i){let a=AbortSignal.timeout(Fl);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 Bl(`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?Pl[i]??`none`:`none`,s=Ul(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),Hl(await c.json().catch(()=>null));if(r&&(c.status===400||c.status===422)&&i<Pl.length-1)i+=1;else throw new Bl(Vl(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 Gl(e){try{return{ok:!0,message:(await Wl({...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 Bl?`Could not connect: ${e.message}.`:`Could not connect.`}}}var Kl=[{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 ql(e){if(!e?.length)return[...Kl];let t=[];for(let n of e){let e=typeof n==`string`?Kl.find(e=>e.id===n):n;e&&!t.some(t=>t.id===e.id)&&t.push(e)}return t.length?t:[...Kl]}var Jl=`smrt-planner:inference:v1`,Yl=`smrt-planner:inference-key:v1`,Xl=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Zl(e){let t={preset:``,active:!1,entries:{}};try{let n=e?.getItem(Jl);if(!n)return t;let r=JSON.parse(n);if(!Xl(r))return t;typeof r.preset==`string`&&(t.preset=r.preset),t.active=r.active===!0;let i=!1;if(Xl(r.entries)){for(let[e,n]of Object.entries(r.entries))if(Xl(n)&&typeof n.baseUrl==`string`&&typeof n.model==`string`){let r=Il(n.baseUrl)??``;i||=r!==n.baseUrl,t.entries[e]={baseUrl:r,model:n.model}}}i&&(t.active=!1,e?.setItem(Jl,JSON.stringify(t)))}catch{}return t}function Ql(e){let t={};try{let n=e?.getItem(Yl),r=n?JSON.parse(n):null;if(Xl(r))for(let[e,n]of Object.entries(r))Xl(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 $l=class{presets;#e=k(``);get presetId(){return e(this.#e)}set presetId(e){W(this.#e,e,!0)}#t=k(F({}));get entries(){return e(this.#t)}set entries(e){W(this.#t,e,!0)}#n=k(F({}));get keys(){return e(this.#n)}set keys(e){W(this.#n,e,!0)}#r=k(!1);get active(){return e(this.#r)}set active(e){W(this.#r,e,!0)}#i=k(`idle`);get testStatus(){return e(this.#i)}set testStatus(e){W(this.#i,e,!0)}#a=k(``);get testMessage(){return e(this.#a)}set testMessage(e){W(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(Yl)}catch{}this.presets=ql(e.presets);let t=Zl(e.storage);this.keys=Ql(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===zl(this.baseUrl)?e.key:``}get keyForOtherAddress(){let e=this.keys[this.presetId];return!!e&&e.origin!==zl(this.baseUrl)}get complete(){let e=Il(this.baseUrl);return!!e&&!!this.model.trim()&&(!!this.preset?.keyless||!!this.key.trim()&&Rl(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=zl(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=Il(this.baseUrl);return e?Wl({baseUrl:e,model:this.model.trim(),apiKey:this.preset?.keyless?void 0:this.key,fetch:this.options.fetch}):null}async test(){let e=Il(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&&!Rl(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 Gl({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:Il(t.baseUrl)??``,model:t.model}])),t={preset:this.presetId,active:this.active,entries:e};this.options.storage?.setItem(Jl,JSON.stringify(t)),this.credentialStorage?.setItem(Yl,JSON.stringify(this.keys))}catch{}}};function eu(e,t,n,r=`local`){let i=Zl(e);if(!i.active)return null;let a=ql(t).find(e=>e.id===i.preset),o=i.entries[i.preset],s=Il(o?.baseUrl??a?.baseUrl??``),c=(o?.model??a?.model??``).trim(),l=Ql(r===`memory`?null:e)[i.preset],u=l&&l.origin===zl(s??``)?l.key:``;return!a||!s||!c||!a.keyless&&(!u||!Rl(s))?null:Wl({baseUrl:s,model:c,apiKey:a.keyless?void 0:u,fetch:n})}var tu=`my-app`;function nu(e){return(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function ru(e){return`${nu(e)||`my-app`}.cookbook.json`}function iu(e){return new TextEncoder().encode(ou(e)).length}function au(e){if(e<1e3)return`${e} bytes`;let t=e/1024;return`${t<10?t.toFixed(1):Math.round(t)} KB`}function ou(e){return`${JSON.stringify(e,null,2)}\n`}function su(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 cu=`x-kitchen-token`,lu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function uu(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(!lu(e))return;let{endpoint:t}=e;if(uu(t))return{endpoint:t.trim(),...Object.hasOwn(e,`token`)?{tokenInConfig:!0}:{}}}var fu=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[];async function pu(e,t,n=fetch){let r;try{r=await n(e.endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`,[cu]:e.token},body:ou(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&&lu(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:fu(i.added),nextSteps:fu(i.nextSteps)}};let a=lu(i)?fu(i.errors):[];return lu(i)&&typeof i.error==`string`&&a.push(i.error),{ok:!1,errors:a.length?a:[`The kitchen answered ${r.status}.`]}}var mu=[`manual`,`browser`,`host`,`byo`],hu={mode:`browser`},gu={mode:`manual`},_u=`planner.config.json`,vu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function yu(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 bu(e){if(!vu(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()||!yu(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 xu=e=>({config:gu,notice:`The assistant settings could not be used (${e}), so inference is off. The planner still works manually.`});function Su(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`||!mu.includes(r)||r===t||n.includes(r))return null;n.push(r)}return n}function Cu(e){if(e===void 0)return{};if(!vu(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=bu(n);if(!e)return null;t.push(e)}return{presets:t}}function wu(e){if(!vu(e))return xu(`not an object`);let t=e.inference;if(t===void 0)return{config:hu};if(!vu(t))return xu(`"inference" is not an object`);let n=t.mode;if(n===void 0)return{config:hu};if(!mu.includes(n))return xu(`unknown mode "${String(n)}"`);let r=n,i=Su(t.alternatives,r);if(!i)return xu(`alternatives must be unique supported modes other than mode`);let a=t.credentialPersistence;if(a!==void 0&&a!==`local`&&a!==`memory`)return xu(`credentialPersistence must be "local" or "memory"`);let o=[r,...i],s;if(o.includes(`host`)){let e=t.host;if(!vu(e)||!yu(e.endpoint))return xu(`host mode needs host.endpoint, an http(s) URL or path`);s={endpoint:e.endpoint.trim()}}let c;return o.includes(`byo`)&&(c=Cu(t.byo)??void 0,!c)?xu(`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 Tu(e){try{let t=JSON.parse(e),n=wu(t),r=vu(t)?du(t.kitchen):void 0;return r?{...n,kitchen:r}:n}catch{return xu(`it is not valid JSON`)}}function Eu(e){return wu({inference:e})}async function Du(e=``,t=fetch){let n;try{n=await t(`${e.replace(/\/$/,``)}/${_u}`,{headers:{accept:`application/json`},cache:`no-cache`})}catch{return{config:hu}}if(n.status===404)return{config:hu};if(!n.ok)return xu(`the file answered ${n.status}`);let r=await n.text();return/^\s*</.test(r)?{config:hu}:Tu(r)}var Ou=1e3,ku=2e3,Au=6e4,ju=(e,t)=>e.length>t?e.slice(0,t):e;function Mu(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:ju(e.content,Ou)})),a={version:1,message:ju(n,ku),snapshot:e.snapshot(),...i.length?{history:i}:{}},o=AbortSignal.timeout(Au),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 Nu(e){return[Pu(e.think),Iu(e.hear),Lu(e.speak)]}function Pu(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{...Fu(e),where:`In browser`}}function Fu(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 Iu(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 Lu(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 Ru(e){return e.dismissed||e.built?!1:!(e.thinkDownloaded||e.hearDownloaded||e.readAloud)}var zu=`smrt-planner:ai:v1`;function Bu(e){let t={dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1};try{let n=e?.getItem(zu);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 Vu(e,t){try{e?.setItem(zu,JSON.stringify(t))}catch{}}var Hu=new class{session;voice;#e=k(F({dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1}));get prefs(){return e(this.#e)}set prefs(e){W(this.#e,e,!0)}#t=k(!1);get hydrated(){return e(this.#t)}set hydrated(e){W(this.#t,e,!0)}#n=k(!1);get firstRun(){return e(this.#n)}set firstRun(e){W(this.#n,e,!0)}#r=k(!1);get speaking(){return e(this.#r)}set speaking(e){W(this.#r,e,!0)}#i=k(F(hu));get inference(){return e(this.#i)}set inference(e){W(this.#i,e,!0)}#a=k(F([`browser`]));get availableModes(){return e(this.#a)}set availableModes(e){W(this.#a,e,!0)}#o=k(``);get notice(){return e(this.#o)}set notice(e){W(this.#o,e,!0)}#s=k(null);get byo(){return e(this.#s)}set byo(e){W(this.#s,e,!0)}pending=0;generation=0;options;pendingConfig=!1;builtAtHydrate=!1;synth;mic;constructor(e){this.options=e,this.session=new xl({...e.session,storage:e.storage,onReply:e=>this.speak(e)}),this.voice=new Nl({...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=Bu(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 $l({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??Ke({store:t,settings:n,theme:r});this.session.useRemote(Mu({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`&&Ru({thinkDownloaded:this.session.prefs.consented.length>0||this.session.status===`ready`,hearDownloaded:Ol(this.options.storage),readAloud:this.prefs.readAloud,dismissed:this.prefs.dismissed,built:this.builtAtHydrate})}get capabilities(){let e=Kt(this.session.prefs.modelId),t=this.hydrated;return Nu({think:{status:t?this.session.status:`idle`,model:e?Jt(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,Vu(this.options.storage,e)}}({storage:Ie(),session:{conversationStorage:J(),store:We,recipes:Ue,controller:Ye,settings:{read:()=>Be.settings(),write:e=>Be.setSettings(e)},theme:{read:()=>Be.snapshot().theme,write:e=>Be.setTheme(e)},menu:()=>qe.openSection?Ye.snapshot().sections.filter(e=>!e.hidden).map(({id:e,label:t})=>({id:e,label:t})):[]},voice:{createModel:Ut}}),Uu=`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`,Wu=`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`,Gu=`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{Jt as A,An as C,Kt as D,qt as E,st as M,Zt as O,In as S,Yt as T,Sl as _,Mu as a,xc as b,pu as c,ru as d,iu as f,eu as g,nu as h,Hu as i,Ht as j,Xt as k,tu as l,ou as m,Gu as n,Eu as o,au as p,Uu as r,Du as s,Wu as t,su as u,wl as v,Gt as w,Ln as x,yl as y};
|