@happyvertical/smrt-planner 0.57.5 → 0.57.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/assistant.md +29 -2
- package/agents/shell.md +13 -0
- package/app/404.html +27 -30
- package/app/_app/immutable/assets/0.BaRFeYGU.css +1 -0
- package/app/_app/immutable/assets/AppShell.BkKNrxND.css +1 -0
- package/app/_app/immutable/assets/{ModelPage.FEM0ZnPM.css → ModelPage.SIoeO-AU.css} +1 -1
- package/app/_app/immutable/assets/app.BHwMQ9Zv.css +1 -0
- package/app/_app/immutable/assets/{forms.DXOeP4wZ.css → forms.BRdbPdvs.css} +1 -1
- package/app/_app/immutable/assets/icons.BDx21rPt.css +1 -0
- package/app/_app/immutable/assets/labels.Dxa6EyRI.css +1 -0
- package/app/_app/immutable/assets/planner.DOQVfcOi.css +1 -0
- package/app/_app/immutable/assets/state.C0UZEhxS.css +1 -0
- package/app/_app/immutable/chunks/{C1VofLtR.js → B2uXaQfZ.js} +1 -1
- package/app/_app/immutable/chunks/{DuZeZzOA.js → BQLQsso4.js} +1 -1
- package/app/_app/immutable/chunks/BdOPgmQ_.js +11 -0
- package/app/_app/immutable/chunks/BeL8dJx9.js +4 -0
- package/app/_app/immutable/chunks/{Bal1oPZu.js → Bhd-3niN.js} +1 -1
- package/app/_app/immutable/chunks/{CTlMHIE6.js → BqEBz5Vq.js} +1 -1
- package/app/_app/immutable/chunks/{GdHEbDDH.js → BxyJ_Q7v.js} +1 -1
- package/app/_app/immutable/chunks/{C3sRGrYK.js → C2OYATC6.js} +1 -1
- package/app/_app/immutable/chunks/C6AANt9H.js +26 -0
- package/app/_app/immutable/chunks/{BybfWt-B.js → C8FX0hli.js} +6 -6
- package/app/_app/immutable/chunks/{BDbFl7UA.js → CYhwv6d2.js} +1 -1
- package/app/_app/immutable/chunks/CdKHckEF.js +1 -0
- package/app/_app/immutable/chunks/CsaWd8kG.js +2 -0
- package/app/_app/immutable/chunks/Cwz7QFS4.js +2 -0
- package/app/_app/immutable/chunks/{BG9Gz_25.js → D3lXu_rt.js} +25 -25
- package/app/_app/immutable/chunks/{YGONf0jr.js → D8MqcCKq.js} +1 -1
- package/app/_app/immutable/chunks/DF-0MxNw.js +1 -0
- package/app/_app/immutable/chunks/DGaFQflg.js +1 -0
- package/app/_app/immutable/chunks/DIE02RSm.js +1 -0
- package/app/_app/immutable/chunks/DIgo5ngo.js +1 -0
- package/app/_app/immutable/chunks/{5ukUzDcw.js → Db12RzZi.js} +1 -1
- package/app/_app/immutable/chunks/{Cga8zF3r.js → DfN2k_EX.js} +1 -1
- package/app/_app/immutable/chunks/DmHVTNcC.js +4 -0
- package/app/_app/immutable/chunks/{gCpxN2IC.js → DmdvNG82.js} +2 -2
- package/app/_app/immutable/chunks/{DjJovMrk.js → DwIRC3h5.js} +1 -1
- package/app/_app/immutable/chunks/{nphy1MQF.js → FeyhlLIZ.js} +1 -1
- package/app/_app/immutable/chunks/ICDFUCZL.js +2 -0
- package/app/_app/immutable/chunks/IDZmjRDr.js +1 -0
- package/app/_app/immutable/chunks/JqlEoPqZ.js +1 -0
- package/app/_app/immutable/chunks/{BiEOJeYb.js → TcjpRcdI.js} +1 -1
- package/app/_app/immutable/chunks/Vt9hDpHd.js +1 -0
- package/app/_app/immutable/chunks/ezs6CGyc.js +1 -0
- package/app/_app/immutable/chunks/lUJaueNM.js +16 -0
- package/app/_app/immutable/entry/app.C5bxPKCP.js +2 -0
- package/app/_app/immutable/entry/start.CZvO61qD.js +1 -0
- package/app/_app/immutable/nodes/0.DFJFBCCB.js +7 -0
- package/app/_app/immutable/nodes/{1.DKP901Gn.js → 1.D_79m87b.js} +1 -1
- package/app/_app/immutable/nodes/{10.DNN0cVai.js → 10.20u2-jxn.js} +1 -1
- package/app/_app/immutable/nodes/{11.DgbmegX3.js → 11.CvMq32jC.js} +1 -1
- package/app/_app/immutable/nodes/{12.D5MtnJoE.js → 12.Cd0cy1AC.js} +1 -1
- package/app/_app/immutable/nodes/{13._rY66Xa_.js → 13.DYYS3YVQ.js} +1 -1
- package/app/_app/immutable/nodes/14.BEf5BJDn.js +1 -0
- package/app/_app/immutable/nodes/2.C_kLkHNl.js +24 -0
- package/app/_app/immutable/nodes/{3.V5uGCpGb.js → 3.CZw3hv8O.js} +1 -1
- package/app/_app/immutable/nodes/{4.CCwzLrgu.js → 4.WMU9NDex.js} +1 -1
- package/app/_app/immutable/nodes/{5.CgHzwpns.js → 5.CuqxSfl4.js} +1 -1
- package/app/_app/immutable/nodes/{6.CvQHLh_u.js → 6.BXLQB7tR.js} +1 -1
- package/app/_app/immutable/nodes/{7.7EIrly34.js → 7.BZvxNeL2.js} +1 -1
- package/app/_app/immutable/nodes/{8.DyyRBuTw.js → 8.Bj2O4pyx.js} +1 -1
- package/app/_app/immutable/nodes/{9.DcURs0gN.js → 9.yeFzeUHj.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +34 -35
- package/app/ai/index.html +39 -40
- package/app/blueprint/index.html +29 -32
- package/app/cookbook/index.html +29 -32
- package/app/index.html +39 -42
- package/app/m/ads/AdDeliveryTier/index.html +36 -37
- package/app/m/ads/AdEvent/index.html +36 -37
- package/app/m/ads/AdFormat/index.html +36 -37
- package/app/m/ads/AdGroup/index.html +36 -37
- package/app/m/ads/AdVariation/index.html +36 -37
- package/app/m/analytics/AnalyticsDataStream/index.html +36 -37
- package/app/m/analytics/AnalyticsEvent/index.html +36 -37
- package/app/m/analytics/AnalyticsProperty/index.html +36 -37
- package/app/m/analytics/AnalyticsReport/index.html +36 -37
- package/app/m/approvals/ApprovalEvent/index.html +36 -37
- package/app/m/approvals/ApprovalPolicy/index.html +36 -37
- package/app/m/approvals/ApprovalRequest/index.html +36 -37
- package/app/m/assets/Asset/attachments/index.html +38 -39
- package/app/m/assets/Asset/index.html +36 -37
- package/app/m/assets/AssetAssociation/index.html +36 -37
- package/app/m/assets/AssetMetafield/index.html +36 -37
- package/app/m/assets/AssetStatus/index.html +36 -37
- package/app/m/assets/AssetType/index.html +36 -37
- package/app/m/assets/Folder/index.html +36 -37
- package/app/m/chat/AgentSession/index.html +36 -37
- package/app/m/chat/ChatMessage/index.html +36 -37
- package/app/m/chat/ChatParticipant/index.html +36 -37
- package/app/m/chat/ChatReaction/index.html +36 -37
- package/app/m/chat/ChatRoom/index.html +36 -37
- package/app/m/chat/ChatThread/index.html +36 -37
- package/app/m/chat/VoiceGatewayTurn/index.html +36 -37
- package/app/m/chat/VoiceSession/index.html +36 -37
- package/app/m/commerce/Agreement/index.html +36 -37
- package/app/m/commerce/Cart/index.html +36 -37
- package/app/m/commerce/Contract/index.html +36 -37
- package/app/m/commerce/ContractLineItem/index.html +36 -37
- package/app/m/commerce/Customer/index.html +36 -37
- package/app/m/commerce/DocumentTax/index.html +36 -37
- package/app/m/commerce/Estimate/index.html +36 -37
- package/app/m/commerce/Fulfillment/index.html +36 -37
- package/app/m/commerce/FulfillmentLineItem/index.html +36 -37
- package/app/m/commerce/HistoricalCustomerFunds/index.html +36 -37
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +36 -37
- package/app/m/commerce/HistoricalSalesLine/index.html +36 -37
- package/app/m/commerce/Invoice/index.html +36 -37
- package/app/m/commerce/InvoiceLineItem/index.html +36 -37
- package/app/m/commerce/Lease/index.html +36 -37
- package/app/m/commerce/LicenseSale/index.html +36 -37
- package/app/m/commerce/Order/index.html +36 -37
- package/app/m/commerce/Payment/index.html +36 -37
- package/app/m/commerce/PaymentAllocation/index.html +36 -37
- package/app/m/commerce/PaymentInstrument/index.html +36 -37
- package/app/m/commerce/PaymentIntent/index.html +36 -37
- package/app/m/commerce/Payout/index.html +36 -37
- package/app/m/commerce/ProductionOrder/index.html +36 -37
- package/app/m/commerce/PurchaseContract/index.html +36 -37
- package/app/m/commerce/PurchaseOrder/index.html +36 -37
- package/app/m/commerce/SalesContract/index.html +36 -37
- package/app/m/commerce/SupplierQuote/index.html +36 -37
- package/app/m/commerce/TaxCode/index.html +36 -37
- package/app/m/commerce/TaxComponent/index.html +36 -37
- package/app/m/commerce/TaxSettings/index.html +36 -37
- package/app/m/commerce/TaxSummaryReport/index.html +36 -37
- package/app/m/commerce/Vendor/index.html +36 -37
- package/app/m/commerce/WholesaleOrder/index.html +36 -37
- package/app/m/content/Content/index.html +36 -37
- package/app/m/content/ContentContribution/index.html +36 -37
- package/app/m/content/ContentContributionAttachment/index.html +36 -37
- package/app/m/content/ContentContributionRevision/index.html +36 -37
- package/app/m/content/ContentContributionType/index.html +36 -37
- package/app/m/content/ContentContributor/index.html +36 -37
- package/app/m/content/ContentCorrection/index.html +36 -37
- package/app/m/content/ContentFeedSource/index.html +36 -37
- package/app/m/content/ContentGovernanceAssignment/index.html +36 -37
- package/app/m/content/ContentGovernancePolicy/index.html +36 -37
- package/app/m/content/ContentGovernanceProfile/index.html +36 -37
- package/app/m/content/ContentReference/index.html +36 -37
- package/app/m/content/ContentReview/index.html +36 -37
- package/app/m/content/ContentVersion/index.html +36 -37
- package/app/m/events/Event/index.html +36 -37
- package/app/m/events/EventParticipant/index.html +36 -37
- package/app/m/events/EventSeries/index.html +36 -37
- package/app/m/events/EventType/index.html +36 -37
- package/app/m/expenses/Expense/index.html +36 -37
- package/app/m/facts/Fact/index.html +36 -37
- package/app/m/facts/FactContent/index.html +36 -37
- package/app/m/facts/FactEvidence/index.html +36 -37
- package/app/m/facts/FactSource/index.html +36 -37
- package/app/m/facts/FactSubject/index.html +36 -37
- package/app/m/facts/FactTag/index.html +36 -37
- package/app/m/fields/FieldPolicy/index.html +36 -37
- package/app/m/fields/FieldPolicySuggestion/index.html +36 -37
- package/app/m/fields/FieldUsageCounter/index.html +36 -37
- package/app/m/images/Image/index.html +36 -37
- package/app/m/inventory/InventoryLocation/index.html +36 -37
- package/app/m/inventory/StockLevel/index.html +36 -37
- package/app/m/inventory/StockMovement/index.html +36 -37
- package/app/m/ledgers/Account/index.html +36 -37
- package/app/m/ledgers/Journal/index.html +36 -37
- package/app/m/ledgers/JournalEntry/index.html +36 -37
- package/app/m/ledgers/Ledger/index.html +36 -37
- package/app/m/manufacturing/Assembly/index.html +36 -37
- package/app/m/manufacturing/BillOfMaterials/index.html +36 -37
- package/app/m/manufacturing/BomLine/index.html +36 -37
- package/app/m/manufacturing/Operation/index.html +36 -37
- package/app/m/manufacturing/ProductionRun/index.html +36 -37
- package/app/m/manufacturing/ProductionRunCompletion/index.html +36 -37
- package/app/m/manufacturing/RoutingStep/index.html +36 -37
- package/app/m/marketing/Campaign/index.html +36 -37
- package/app/m/marketing/CampaignChannel/index.html +36 -37
- package/app/m/marketing/CampaignMetricSnapshot/index.html +36 -37
- package/app/m/messages/Account/index.html +36 -37
- package/app/m/messages/Attachment/index.html +36 -37
- package/app/m/messages/Blacklist/index.html +36 -37
- package/app/m/messages/Email/failed-sends/index.html +38 -39
- package/app/m/messages/Email/index.html +36 -37
- package/app/m/messages/Email/mailbox/index.html +38 -39
- package/app/m/messages/EmailAccount/index.html +36 -37
- package/app/m/messages/EmailAttachment/index.html +36 -37
- package/app/m/messages/EmailFolder/index.html +36 -37
- package/app/m/messages/Message/index.html +36 -37
- package/app/m/messages/MessagingEndpoint/index.html +36 -37
- package/app/m/messages/PersonaMessageRoute/index.html +36 -37
- package/app/m/messages/SlackAccount/index.html +36 -37
- package/app/m/messages/SlackMessage/index.html +36 -37
- package/app/m/messages/TelegramAccount/index.html +36 -37
- package/app/m/messages/Tweet/index.html +36 -37
- package/app/m/messages/TwitterAccount/index.html +36 -37
- package/app/m/messages/Whitelist/index.html +36 -37
- package/app/m/messages/ZulipAccount/index.html +36 -37
- package/app/m/places/Place/index.html +36 -37
- package/app/m/places/PlaceType/index.html +36 -37
- package/app/m/products/Category/index.html +36 -37
- package/app/m/products/Material/index.html +36 -37
- package/app/m/products/Product/index.html +36 -37
- package/app/m/products/Product/ingredients/index.html +38 -39
- package/app/m/products/ProductVariant/index.html +36 -37
- package/app/m/products/Sku/index.html +36 -37
- package/app/m/profiles/ApiKey/index.html +36 -37
- package/app/m/profiles/Bot/index.html +36 -37
- package/app/m/profiles/MagicLinkToken/index.html +36 -37
- package/app/m/profiles/NostrIdentity/index.html +36 -37
- package/app/m/profiles/OidcIdentity/index.html +36 -37
- package/app/m/profiles/Organization/index.html +36 -37
- package/app/m/profiles/Person/index.html +36 -37
- package/app/m/profiles/Profile/index.html +36 -37
- package/app/m/profiles/ProfileMetadata/index.html +36 -37
- package/app/m/profiles/ProfileMetafield/index.html +36 -37
- package/app/m/profiles/ProfileRelationship/index.html +36 -37
- package/app/m/profiles/ProfileRelationshipTerm/index.html +36 -37
- package/app/m/profiles/ProfileRelationshipType/index.html +36 -37
- package/app/m/profiles/ProfileType/index.html +36 -37
- package/app/m/projects/Comment/index.html +36 -37
- package/app/m/projects/Issue/index.html +36 -37
- package/app/m/projects/Label/index.html +36 -37
- package/app/m/projects/Project/index.html +36 -37
- package/app/m/projects/ProjectIntegration/index.html +36 -37
- package/app/m/projects/PullRequest/index.html +36 -37
- package/app/m/projects/Repository/index.html +36 -37
- package/app/m/properties/Property/index.html +36 -37
- package/app/m/properties/Zone/index.html +36 -37
- package/app/m/reports/RuntimeReport/index.html +39 -37
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +36 -37
- package/app/m/reports/SmrtReportLock/index.html +36 -37
- package/app/m/reports/SmrtReportRefreshTask/index.html +36 -37
- package/app/m/reports/SmrtReportRun/index.html +36 -37
- package/app/m/reports/SmrtReportSchedule/index.html +36 -37
- package/app/m/reports/SmrtReportWatermark/index.html +36 -37
- package/app/m/sales/Agreement/index.html +36 -37
- package/app/m/sales/AttributionException/index.html +36 -37
- package/app/m/sales/AttributionPolicy/index.html +36 -37
- package/app/m/sales/Commission/index.html +36 -37
- package/app/m/sales/CommissionAdjustment/index.html +36 -37
- package/app/m/sales/CommissionPayout/index.html +36 -37
- package/app/m/sales/CommissionPlan/index.html +36 -37
- package/app/m/sales/Earner/index.html +36 -37
- package/app/m/sales/EarnerSourceAttribution/index.html +36 -37
- package/app/m/sales/EarningEvent/index.html +36 -37
- package/app/m/sales/ExecutedAgreement/index.html +36 -37
- package/app/m/sales/Lead/index.html +36 -37
- package/app/m/sales/Opportunity/index.html +36 -37
- package/app/m/sales/OpportunityConversion/index.html +36 -37
- package/app/m/sales/PipelineDefinition/index.html +36 -37
- package/app/m/sales/PipelineStage/index.html +36 -37
- package/app/m/sales/Referral/index.html +36 -37
- package/app/m/sales/ReferralAgreement/index.html +36 -37
- package/app/m/sales/ReferralLink/index.html +36 -37
- package/app/m/sales/ReferralProgram/index.html +36 -37
- package/app/m/sales/ReferralTermSnapshot/index.html +36 -37
- package/app/m/sales/ReferralTouch/index.html +36 -37
- package/app/m/sales/Referrer/index.html +36 -37
- package/app/m/sales/SalesActivity/index.html +36 -37
- package/app/m/sales/SalesRepresentative/index.html +36 -37
- package/app/m/sites/Site/index.html +36 -37
- package/app/m/sites/SiteAgentBinding/index.html +36 -37
- package/app/m/social/OAuthState/index.html +36 -37
- package/app/m/social/SocialAccount/index.html +36 -37
- package/app/m/social/SocialPost/index.html +36 -37
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +36 -37
- package/app/m/subscriptions/BillingAdjustment/index.html +36 -37
- package/app/m/subscriptions/ClientCharge/index.html +36 -37
- package/app/m/subscriptions/CreditGrant/index.html +36 -37
- package/app/m/subscriptions/PricingRule/index.html +36 -37
- package/app/m/subscriptions/RetailCharge/index.html +36 -37
- package/app/m/subscriptions/SpendingPolicy/index.html +36 -37
- package/app/m/subscriptions/SubscriptionPlan/index.html +36 -37
- package/app/m/subscriptions/TenantSubscription/index.html +36 -37
- package/app/m/subscriptions/TenantUsageMetric/index.html +36 -37
- package/app/m/support/ServiceTimeEntry/index.html +36 -37
- package/app/m/support/SupportAiRun/index.html +36 -37
- package/app/m/support/SupportAvailability/index.html +36 -37
- package/app/m/support/SupportCase/index.html +36 -37
- package/app/m/support/SupportCaseEvent/index.html +36 -37
- package/app/m/support/SupportChannelBinding/index.html +36 -37
- package/app/m/support/SupportCharge/index.html +36 -37
- package/app/m/support/SupportCompensation/index.html +36 -37
- package/app/m/support/SupportCompensationPlan/index.html +36 -37
- package/app/m/support/SupportEscalation/index.html +36 -37
- package/app/m/support/SupportInteraction/index.html +36 -37
- package/app/m/support/SupportPlan/index.html +36 -37
- package/app/m/support/SupportPolicy/index.html +36 -37
- package/app/m/support/SupportQualification/index.html +36 -37
- package/app/m/support/SupportServiceTarget/index.html +36 -37
- package/app/m/support/SupportSpecialist/index.html +36 -37
- package/app/m/support/SupportWorkLink/index.html +36 -37
- package/app/m/tags/Tag/index.html +36 -37
- package/app/m/tags/TagAlias/index.html +36 -37
- package/app/m/timesheets/AttendanceBreak/index.html +36 -37
- package/app/m/timesheets/AttendancePunch/index.html +36 -37
- package/app/m/timesheets/AttendanceSegment/index.html +36 -37
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +36 -37
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +36 -37
- package/app/m/timesheets/ServiceTimeEntry/index.html +36 -37
- package/app/m/users/Group/index.html +36 -37
- package/app/m/users/GroupMember/index.html +36 -37
- package/app/m/users/GroupRole/index.html +36 -37
- package/app/m/users/Membership/index.html +36 -37
- package/app/m/users/MembershipOverride/index.html +36 -37
- package/app/m/users/Permission/index.html +36 -37
- package/app/m/users/Role/index.html +36 -37
- package/app/m/users/RolePermission/index.html +36 -37
- package/app/m/users/Session/index.html +36 -37
- package/app/m/users/Tenant/index.html +36 -37
- package/app/m/users/TenantIntegration/index.html +36 -37
- package/app/m/users/TenantPermissionOverride/index.html +36 -37
- package/app/m/users/User/index.html +36 -37
- package/app/m/video/Character/index.html +36 -37
- package/app/m/video/CharacterAsset/index.html +36 -37
- package/app/m/video/CompositeJob/index.html +36 -37
- package/app/m/video/Performer/index.html +36 -37
- package/app/m/video/PerformerAsset/index.html +36 -37
- package/app/m/video/Scene/index.html +36 -37
- package/app/m/video/SceneAsset/index.html +36 -37
- package/app/m/video/VideoComposition/index.html +36 -37
- package/app/m/video/VideoCompositionAsset/index.html +36 -37
- package/app/m/video/VideoSequence/index.html +36 -37
- package/app/m/video/VideoSequenceAsset/index.html +36 -37
- package/app/m/video/VideoShot/index.html +36 -37
- package/app/m/video/VideoShotAsset/index.html +36 -37
- package/app/m/video/VideoShotCharacter/index.html +36 -37
- package/app/m/video/VideoWorkflow/index.html +36 -37
- package/app/m/voice/VoiceOutput/index.html +36 -37
- package/app/m/voice/VoiceProfile/index.html +36 -37
- package/app/m/voice/VoiceSample/index.html +36 -37
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +30 -33
- package/app/packages/analytics/index.html +30 -33
- package/app/packages/approvals/index.html +30 -33
- package/app/packages/assets/index.html +30 -33
- package/app/packages/chat/index.html +30 -33
- package/app/packages/comments/index.html +30 -33
- package/app/packages/commerce/index.html +30 -33
- package/app/packages/content/index.html +30 -33
- package/app/packages/events/index.html +30 -33
- package/app/packages/expenses/index.html +30 -33
- package/app/packages/facts/index.html +30 -33
- package/app/packages/fields/index.html +30 -33
- package/app/packages/human-resources/index.html +30 -33
- package/app/packages/images/index.html +30 -33
- package/app/packages/index.html +30 -33
- package/app/packages/ingestion/index.html +30 -33
- package/app/packages/inventory/index.html +30 -33
- package/app/packages/ledgers/index.html +30 -33
- package/app/packages/manufacturing/index.html +30 -33
- package/app/packages/marketing/index.html +30 -33
- package/app/packages/messages/index.html +30 -33
- package/app/packages/places/index.html +30 -33
- package/app/packages/preferences/index.html +30 -33
- package/app/packages/products/index.html +30 -33
- package/app/packages/profiles/index.html +30 -33
- package/app/packages/projects/index.html +30 -33
- package/app/packages/properties/index.html +30 -33
- package/app/packages/reports/index.html +30 -33
- package/app/packages/sales/index.html +30 -33
- package/app/packages/sites/index.html +30 -33
- package/app/packages/social/index.html +30 -33
- package/app/packages/subscriptions/index.html +30 -33
- package/app/packages/support/index.html +30 -33
- package/app/packages/tags/index.html +30 -33
- package/app/packages/timesheets/index.html +30 -33
- package/app/packages/users/index.html +30 -33
- package/app/packages/video/index.html +30 -33
- package/app/packages/voice/index.html +30 -33
- package/app/packages/webhooks/index.html +30 -33
- package/app/recipes/account-access/help/index.html +32 -35
- package/app/recipes/account-access/index.html +36 -38
- package/app/recipes/activity/help/index.html +32 -35
- package/app/recipes/activity/index.html +36 -38
- package/app/recipes/agreements/help/index.html +32 -35
- package/app/recipes/agreements/index.html +36 -38
- package/app/recipes/analytics.reports/help/index.html +32 -35
- package/app/recipes/analytics.reports/index.html +36 -38
- package/app/recipes/assets/help/index.html +32 -35
- package/app/recipes/assets/index.html +36 -38
- package/app/recipes/billing/help/index.html +32 -35
- package/app/recipes/billing/index.html +36 -38
- package/app/recipes/chat.assistant/help/index.html +32 -35
- package/app/recipes/chat.assistant/index.html +36 -38
- package/app/recipes/comments/help/index.html +32 -35
- package/app/recipes/comments/index.html +36 -38
- package/app/recipes/commerce.customers/help/index.html +32 -35
- package/app/recipes/commerce.customers/index.html +36 -38
- package/app/recipes/commerce.estimates/help/index.html +32 -35
- package/app/recipes/commerce.estimates/index.html +36 -38
- package/app/recipes/commerce.purchases/help/index.html +32 -35
- package/app/recipes/commerce.purchases/index.html +36 -38
- package/app/recipes/commerce.sales/help/index.html +32 -35
- package/app/recipes/commerce.sales/index.html +36 -38
- package/app/recipes/commerce.vendors/help/index.html +32 -35
- package/app/recipes/commerce.vendors/index.html +36 -38
- package/app/recipes/commerce.wholesale/help/index.html +32 -35
- package/app/recipes/commerce.wholesale/index.html +36 -38
- package/app/recipes/events.calendar/help/index.html +32 -35
- package/app/recipes/events.calendar/index.html +36 -38
- package/app/recipes/expenses.tracking/help/index.html +32 -35
- package/app/recipes/expenses.tracking/index.html +36 -38
- package/app/recipes/fields.form-customization/help/index.html +32 -35
- package/app/recipes/fields.form-customization/index.html +36 -38
- package/app/recipes/ingestion/help/index.html +32 -35
- package/app/recipes/ingestion/index.html +36 -38
- package/app/recipes/integrations/help/index.html +32 -35
- package/app/recipes/integrations/index.html +36 -38
- package/app/recipes/inventory.stock/help/index.html +32 -35
- package/app/recipes/inventory.stock/index.html +36 -38
- package/app/recipes/ledgers.bookkeeping/help/index.html +32 -35
- package/app/recipes/ledgers.bookkeeping/index.html +36 -38
- package/app/recipes/messages/help/index.html +32 -35
- package/app/recipes/messages/index.html +36 -38
- package/app/recipes/products/help/index.html +32 -35
- package/app/recipes/products/index.html +36 -38
- package/app/recipes/projects.tracker/help/index.html +32 -35
- package/app/recipes/projects.tracker/index.html +36 -38
- package/app/recipes/reports.materialized/help/index.html +32 -35
- package/app/recipes/reports.materialized/index.html +36 -38
- package/app/recipes/reports.runtime/help/index.html +32 -35
- package/app/recipes/reports.runtime/index.html +37 -39
- package/app/recipes/sales.pipeline/help/index.html +32 -35
- package/app/recipes/sales.pipeline/index.html +36 -38
- package/app/recipes/tags.taxonomy/help/index.html +32 -35
- package/app/recipes/tags.taxonomy/index.html +36 -38
- package/app/recipes/team-collaboration/help/index.html +32 -35
- package/app/recipes/team-collaboration/index.html +36 -38
- package/app/recipes/timesheets.time-entries/help/index.html +32 -35
- package/app/recipes/timesheets.time-entries/index.html +36 -38
- package/app/s/custom-accounts/index.html +29 -32
- package/app/s/custom-appointments/index.html +29 -32
- package/app/s/custom-billing/index.html +29 -32
- package/app/s/custom-bookings/index.html +79 -0
- package/app/s/custom-buying/index.html +29 -32
- package/app/s/custom-checkout/index.html +29 -32
- package/app/s/custom-classes/index.html +29 -32
- package/app/s/custom-clients/index.html +29 -32
- package/app/s/custom-events/index.html +29 -32
- package/app/s/custom-fleet/index.html +29 -32
- package/app/s/custom-gigs/index.html +79 -0
- package/app/s/custom-giving/index.html +29 -32
- package/app/s/custom-instruments/index.html +79 -0
- package/app/s/custom-jobs/index.html +29 -32
- package/app/s/custom-kitchen/index.html +29 -32
- package/app/s/custom-lessons/index.html +79 -0
- package/app/s/custom-material/index.html +29 -32
- package/app/s/custom-meetings/index.html +29 -32
- package/app/s/custom-members/index.html +29 -32
- package/app/s/custom-merch/index.html +79 -0
- package/app/s/custom-money/index.html +79 -0
- package/app/s/custom-paint/index.html +29 -32
- package/app/s/custom-parts/index.html +29 -32
- package/app/s/custom-rentals/index.html +29 -32
- package/app/s/custom-roastery/index.html +29 -32
- package/app/s/custom-schedule/index.html +29 -32
- package/app/s/custom-shelf/index.html +29 -32
- package/app/s/custom-shop/index.html +29 -32
- package/app/s/custom-students/index.html +79 -0
- package/app/s/custom-wholesale/index.html +29 -32
- package/app/s/custom-work/index.html +29 -32
- package/app/s/custom-yard/index.html +29 -32
- package/app/s/section-access-control/index.html +29 -32
- package/app/s/section-account-security/index.html +29 -32
- package/app/s/section-accounting/index.html +29 -32
- package/app/s/section-activity/index.html +29 -32
- package/app/s/section-agreements/index.html +29 -32
- package/app/s/section-analytics/index.html +29 -32
- package/app/s/section-assets/index.html +29 -32
- package/app/s/section-billing/index.html +29 -32
- package/app/s/section-calendar/index.html +29 -32
- package/app/s/section-catalog/index.html +29 -32
- package/app/s/section-chat.assistant/index.html +29 -32
- package/app/s/section-comments/index.html +29 -32
- package/app/s/section-fields.form-customization/index.html +29 -32
- package/app/s/section-ingestion/index.html +29 -32
- package/app/s/section-integrations/index.html +29 -32
- package/app/s/section-messages/index.html +29 -32
- package/app/s/section-more/index.html +29 -32
- package/app/s/section-operations/index.html +29 -32
- package/app/s/section-projects/index.html +29 -32
- package/app/s/section-purchasing/index.html +29 -32
- package/app/s/section-reports.materialized/index.html +29 -32
- package/app/s/section-reports.runtime/index.html +29 -32
- package/app/s/section-sales/index.html +29 -32
- package/app/s/section-taxonomy/index.html +29 -32
- package/app/s/section-team/index.html +29 -32
- package/app/s/section-work/index.html +29 -32
- package/dist/assistant/change.d.ts +10 -1
- package/dist/assistant/change.d.ts.map +1 -1
- package/dist/assistant/change.js +6 -1
- package/dist/assistant/prompt.d.ts +10 -1
- package/dist/assistant/prompt.d.ts.map +1 -1
- package/dist/assistant/prompt.js +42 -7
- package/dist/assistant/session.svelte.d.ts +6 -0
- package/dist/assistant/session.svelte.d.ts.map +1 -1
- package/dist/assistant/session.svelte.js +6 -0
- package/dist/assistant/transport.d.ts +23 -3
- package/dist/assistant/transport.d.ts.map +1 -1
- package/dist/assistant/transport.js +356 -13
- package/dist/catalog/catalog.json +107 -41
- package/dist/components/BrowserAssistant.svelte +26 -0
- package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
- package/dist/components/ModelPage.svelte +36 -4
- package/dist/components/ModelPage.svelte.d.ts.map +1 -1
- package/dist/components/PlannerReports.svelte +61 -0
- package/dist/components/PlannerReports.svelte.d.ts +10 -0
- package/dist/components/PlannerReports.svelte.d.ts.map +1 -0
- package/dist/components/PlannerSavedReportsWidget.svelte +38 -0
- package/dist/components/PlannerSavedReportsWidget.svelte.d.ts +9 -0
- package/dist/components/PlannerSavedReportsWidget.svelte.d.ts.map +1 -0
- package/dist/components/ReportProposalCard.svelte +63 -0
- package/dist/components/ReportProposalCard.svelte.d.ts +17 -0
- package/dist/components/ReportProposalCard.svelte.d.ts.map +1 -0
- package/dist/components/SectionOverview.svelte +22 -1
- package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
- package/dist/components/ThemeBridge.svelte +2 -2
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +7 -1
- package/dist/core/reply.d.ts +6 -0
- package/dist/core/reply.d.ts.map +1 -1
- package/dist/core/reply.js +11 -0
- package/dist/data/packs.d.ts.map +1 -1
- package/dist/data/packs.js +415 -0
- package/dist/data/planner-source.d.ts.map +1 -1
- package/dist/data/planner-source.js +4 -1
- package/dist/library/icons.d.ts.map +1 -1
- package/dist/library/icons.js +10 -0
- package/dist/library/library.json +506 -0
- package/dist/overviews/definitions.d.ts.map +1 -1
- package/dist/overviews/definitions.js +6 -1
- package/dist/overviews/registry.d.ts.map +1 -1
- package/dist/overviews/registry.js +9 -5
- package/dist/planner/Planner.svelte +17 -0
- package/dist/planner/Planner.svelte.d.ts.map +1 -1
- package/dist/planner/instance.d.ts +6 -0
- package/dist/planner/instance.d.ts.map +1 -1
- package/dist/planner/shell.d.ts.map +1 -1
- package/dist/planner/shell.js +3 -1
- package/dist/reports/intent.d.ts +106 -0
- package/dist/reports/intent.d.ts.map +1 -0
- package/dist/reports/intent.js +667 -0
- package/dist/reports/planner.d.ts +33 -0
- package/dist/reports/planner.d.ts.map +1 -0
- package/dist/reports/planner.js +60 -0
- package/dist/reports/sources.d.ts +36 -0
- package/dist/reports/sources.d.ts.map +1 -0
- package/dist/reports/sources.js +125 -0
- package/dist/reports/store.d.ts +64 -0
- package/dist/reports/store.d.ts.map +1 -0
- package/dist/reports/store.js +214 -0
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +54 -54
- package/app/_app/immutable/assets/0.C8CwV4Fz.css +0 -1
- package/app/_app/immutable/assets/AppShell.Dnc9PAvY.css +0 -1
- package/app/_app/immutable/assets/app.4ScdTV_S.css +0 -1
- package/app/_app/immutable/assets/labels.DrQMsG17.css +0 -1
- package/app/_app/immutable/assets/state.CkVocVUJ.css +0 -1
- package/app/_app/immutable/chunks/9pRTae44.js +0 -1
- package/app/_app/immutable/chunks/BhU_yBI_.js +0 -1
- package/app/_app/immutable/chunks/Bsn3IIve.js +0 -4
- package/app/_app/immutable/chunks/C_3CJO_1.js +0 -1
- package/app/_app/immutable/chunks/Cr4byQts.js +0 -24
- package/app/_app/immutable/chunks/CtjBwCj8.js +0 -1
- package/app/_app/immutable/chunks/CyUSxz1P.js +0 -4
- package/app/_app/immutable/chunks/J9kOiFLO.js +0 -11
- package/app/_app/immutable/chunks/M-CuJzQN.js +0 -1
- package/app/_app/immutable/chunks/NppCG--v.js +0 -1
- package/app/_app/immutable/chunks/O8DAZ_le.js +0 -1
- package/app/_app/immutable/chunks/d_dqmeIr.js +0 -1
- package/app/_app/immutable/chunks/gMSmS-_y.js +0 -2
- package/app/_app/immutable/entry/app.B4gMiHwR.js +0 -2
- package/app/_app/immutable/entry/start.BXkBl20Z.js +0 -1
- package/app/_app/immutable/nodes/0.2MYMg80l.js +0 -9
- package/app/_app/immutable/nodes/14.B6TD25VU.js +0 -1
- package/app/_app/immutable/nodes/2.x9WyxQ1S.js +0 -24
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BbwIep6z.js","./uBIymjUX.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 L,lt as R,mt as z,n as te,nt as ne,ot as re,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"./uBIymjUX.js";import"./xihTtKlq.js";import{r as le}from"./Bv5jGtB8.js";import{a as ue,t as K}from"./YUSKx8_q.js";import{wt as q}from"./D3lXu_rt.js";import{n as J}from"./DK8Blf1Y.js";import{b as de,v as Y,x as fe,y as pe}from"./BeL8dJx9.js";import{n as me,r as X}from"./DF-0MxNw.js";import{i as he}from"./DfN2k_EX.js";import{_ as ge,b as _e,c as ve,d as ye,g as be,h as xe,i as Se,m as Ce,n as we,p as Te,s as Ee}from"./CsaWd8kG.js";import{n as De}from"./DmdvNG82.js";import{n as Oe,r as ke}from"./BxyJ_Q7v.js";import{a as Ae,t as je}from"./BQxY8kkL.js";import{_ as Me,a as Ne,g as Pe,h as Fe,l as Ie,n as Le,p as Re,u as ze}from"./Cwz7QFS4.js";import{Z,b as Be,t as Ve}from"./lUJaueNM.js";import{C as He,_ as Ue,h as We,i as Ge,m as Ke,o as qe,r as Je,t as Ye,u as Xe}from"./CdKHckEF.js";import{n as Ze,t as Qe}from"./FeyhlLIZ.js";function $e(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 et(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 tt(e,t){let n=et(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 nt=new WeakMap;async function rt(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=nt.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 it(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 at(e){return new Worker(new URL(`../workers/local-speech.worker-CU_DjhLr.js`,import.meta.url).href,{name:e?.name})}var ot=2**28,st=16,ct=.95;function lt(e){if(e===0)return 1;let t=Math.PI*e;return Math.sin(t)/t}function ut(e,t,n){for(let[e,r]of[[`fromRate`,t],[`toRate`,n]])if(!Number.isFinite(r)||r<=0)throw new Ae(`invalid_argument`,`${e} must be a positive finite number (got ${String(r)})`);let r=Math.floor(e.length*n/t);if(r>ot)throw new Ae(`invalid_argument`,`resampled output would be ${r} samples; the limit is ${ot}`);if(t===n)return e.slice();let i=new Float32Array(r),a=t/n,o=a>1?ct/a:1,s=st/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*lt(o*r)*i;u+=a*e[t],d+=a}i[t]=d===0?0:u/d}return i}var dt={silenceMs:800,minSpeechMs:150,preRollMs:300,maxUtteranceMs:3e4,sensitivity:.5,calibrateMs:300},ft=.0015,pt=.003,mt=.006,ht=.2,gt=.02,_t=2e3,vt=250;function yt(e,t,n){return Math.min(n,Math.max(t,e))}function bt(e={}){let t=(e,t,n)=>typeof e==`number`&&Number.isFinite(e)?Math.max(n,e):t;return{silenceMs:t(e.silenceMs,dt.silenceMs,20),minSpeechMs:t(e.minSpeechMs,dt.minSpeechMs,0),preRollMs:t(e.preRollMs,dt.preRollMs,0),maxUtteranceMs:t(e.maxUtteranceMs,dt.maxUtteranceMs,1e3),sensitivity:yt(typeof e.sensitivity==`number`&&Number.isFinite(e.sensitivity)?e.sensitivity:dt.sensitivity,0,1),calibrateMs:t(e.calibrateMs,dt.calibrateMs,0)}}function xt(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 St(e={}){let t=bt(e),n=6-4*t.sensitivity,r=.02-.015*t.sensitivity,i=pt,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=yt(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=yt(e[Math.min(e.length-1,Math.floor(e.length*ht))]??pt,ft,mt)}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/_t*(m<i?4:1);i=yt(i+(m-i)*Math.min(1,e),ft,gt)}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 Ct(e){let t=bt(e),n=St(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-vt)/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(xt(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 wt=44,Tt=4294967295,Et=1;function Dt(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 Ot(e,t){if(!Number.isInteger(e)||e<1||e*2>Tt)throw new Ae(`invalid_argument`,`${t} must be a positive integer sample rate (got ${String(e)})`)}function kt(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function At(e,t){Ot(t,`sampleRate`);let n=e.length*2;if(n+wt-8>Tt)throw new Ae(`invalid_argument`,`too many samples for a single WAV (4 GiB limit)`);let r=e instanceof Int16Array?e:Dt(e),i=new Uint8Array(wt+n),a=new DataView(i.buffer);kt(a,0,`RIFF`),a.setUint32(4,36+n,!0),kt(a,8,`WAVE`),kt(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,Et,!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),kt(a,36,`data`),a.setUint32(40,n,!0);for(let e=0;e<r.length;e+=1)a.setInt16(wt+e*2,r[e],!0);return i}var jt=`hv-pcm-tap`,Mt=`
|
|
3
|
+
class HvPcmTap extends AudioWorkletProcessor {
|
|
4
|
+
process(inputs) {
|
|
5
|
+
const channels = inputs[0];
|
|
6
|
+
if (channels && channels.length > 0 && channels[0].length > 0) {
|
|
7
|
+
const frames = channels[0].length;
|
|
8
|
+
const mono = new Float32Array(frames);
|
|
9
|
+
for (let c = 0; c < channels.length; c += 1) {
|
|
10
|
+
const data = channels[c];
|
|
11
|
+
for (let i = 0; i < frames; i += 1) mono[i] += data[i];
|
|
12
|
+
}
|
|
13
|
+
if (channels.length > 1) {
|
|
14
|
+
for (let i = 0; i < frames; i += 1) mono[i] /= channels.length;
|
|
15
|
+
}
|
|
16
|
+
this.port.postMessage(mono, [mono.buffer]);
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
registerProcessor('${jt}', HvPcmTap);
|
|
22
|
+
`;function Nt(){return typeof AudioContext<`u`&&typeof AudioWorkletNode<`u`&&typeof Blob<`u`&&typeof URL<`u`&&typeof URL.createObjectURL==`function`}function Pt(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(!Nt())throw new je(`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([Mt],{type:`text/javascript`}));try{await i.audioWorklet.addModule(f)}finally{_()}d||(p=i.createMediaStreamSource(e),m=new AudioWorkletNode(i,jt,{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 je(`setup_failed`,`PCM capture could not start`,e)}if(await v(),u)throw new je(`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=ut(e,i.sampleRate,n);return{samples:r,wav:At(r,n),truncated:c}})(),b},cancel(){u||(u=!0,o.length=0,v())}}}var Ft=16e3;function It(){return Nt()&&typeof navigator<`u`&&typeof navigator.mediaDevices?.getUserMedia==`function`}var Lt=36e5;async function Rt(e={}){let t=e.createCapture??Pt;if(!e.createCapture&&!It()&&!e.stream)throw new je(`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:Ft,maxDurationMs:Lt,retain:!1,onSamples:(t,n)=>{s||c||(l>0?l-=t.length/n*1e3:(o??=Ct({...e,sampleRate:n,onSpeaking:e=>{e&&a(`speechstart`,{})},onLevel:e=>a(`level`,{level:e}),onUtterance:e=>{let t=ut(e.pcm,e.sampleRate,Ft);a(`speechend`,{samples:t,sampleRate:Ft,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 je(`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 zt=e=>{let t=null,n=!1,r=!1,i=!1;return{async start(){let a=await Rt({...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 Bt(e){return ke({model:e,createWorker:()=>new at,loadSpeech:()=>G(()=>import(`./BbwIep6z.js`),__vite__mapDeps([0,1,2]),import.meta.url)})}var Vt=`Qwen3-1.7B-q4f16_1-MLC`,Ht=[{id:Vt,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 Ut(e){return Ht.find(t=>t.id===e)}function Wt(e){return e>=1e3?`about ${(e/1e3).toFixed(1)} GB`:`about ${e} MB`}function Gt(e){return e.label.replace(/\s*\(.*\)\s*$/,``)}var Kt=`Qwen3-4B-q4f16_1-MLC`;function qt(e,t){return t>=e.vramMB*1e6*1.2}async function Jt(e=typeof navigator>`u`?void 0:navigator){try{return(await e?.gpu?.requestAdapter())?.limits?.maxBufferSize??0}catch{return 0}}function Yt(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
23
|
+
`)}var Xt=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`}},Zt=class extends Xt{constructor(e,t){super(`Model not found: ${e}`,`MODEL_NOT_FOUND`,t,e,!1),this.name=`ModelNotFoundError`}},Qt=class extends Xt{constructor(e,t){super(`Input exceeds maximum context length`,`CONTEXT_LENGTH_EXCEEDED`,e,t,!1),this.name=`ContextLengthError`}},$t=class extends Xt{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`}},en=class extends Xt{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)}},tn=12e4,nn=Object.freeze({maxOutputTokens:131072,defaultOutputTokens:4096,maxReasoningTokens:1024,maxImagesPerRequest:1,onExceeded:`error`});function rn(e,t,n){if(e===void 0)return t;if(!Number.isFinite(e)||e<=0)throw new Xt(`${n} must be a positive finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e)}function an(e){let t=e.generationLimits||{},n={maxOutputTokens:rn(t.maxOutputTokens,nn.maxOutputTokens,`generationLimits.maxOutputTokens`),defaultOutputTokens:Math.min(rn(t.defaultOutputTokens,nn.defaultOutputTokens,`generationLimits.defaultOutputTokens`),rn(t.maxOutputTokens,nn.maxOutputTokens,`generationLimits.maxOutputTokens`)),maxReasoningTokens:rn(t.maxReasoningTokens,nn.maxReasoningTokens,`generationLimits.maxReasoningTokens`),maxImagesPerRequest:rn(t.maxImagesPerRequest,nn.maxImagesPerRequest,`generationLimits.maxImagesPerRequest`),onExceeded:t.onExceeded||nn.onExceeded};if(![`error`,`clamp`].includes(n.onExceeded))throw new Xt(`generationLimits.onExceeded must be "error" or "clamp"`,`AI_LIMIT_INVALID`);return{...e,timeout:rn(e.timeout,tn,`timeout`),maxRetries:(()=>{if(e.maxRetries===void 0)return 0;if(!Number.isFinite(e.maxRetries)||e.maxRetries<0)throw new Xt(`maxRetries must be a non-negative finite number`,`AI_LIMIT_INVALID`);return Math.trunc(e.maxRetries)})(),generationLimits:n}}function on(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 sn(e,t,n,r,i,a){if(!Number.isFinite(e)||e<0)throw new Xt(`${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 Xt(`${r} ${o} exceeds configured ceiling ${t}`,`AI_LIMIT_EXCEEDED`,i,a)}function cn(e,t,n,r){let i=an(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??on(t.reasoning?.effort??o)??i.maxReasoningTokens:0;return{...t,maxTokens:sn(a,i.maxOutputTokens,i.onExceeded,`maxTokens`,n,r),reasoning:{...t.reasoning,maxTokens:sn(s,i.maxReasoningTokens,i.onExceeded,`reasoning.maxTokens`,n,r),includeThoughts:t.reasoning?.includeThoughts??t.includeThoughts}}}function ln(e,t={}){let n=an(e),r=rn(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 un(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 dn=`webllm`,fn=4096,pn={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:fn,supportedOperations:[`chat`,`completion`,`streaming`,`functions`]},mn=new WeakMap,hn=new Map;async function gn(){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 en(e)}}function _n(){return!!globalThis.navigator?.gpu}function vn(e){throw new Xt(`${e} is not supported by the webllm provider.`,`NOT_SUPPORTED`,dn)}function yn(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var bn=class{options;explicitModel;factoryEngine;localEngines=new Map;constructor(e){this.explicitModel=e.defaultModel??e.model,this.options=an({...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}),wn(this.factoryEngine,t)):n;if(!_n())throw new $t(dn);let r=this.options.appConfig?this.localEngines:hn,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 wn(i.promise,t)}finally{a&&i.listeners.delete(a)}}async createEngine(e,t){return(await gn()).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=Yt(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`?yn({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 yn({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 Xt(`Generation was interrupted before it finished`,`AI_INTERRUPTED`,dn,t,!0)}mapError(e,t){if(e instanceof Xt)return e;let n=e?.name??``,r=e instanceof Error?e.message:String(e);if(n===`WebGPUNotAvailableError`||n===`WebGPUNotFoundError`)return new $t(dn,r);if(n===`ContextWindowSizeExceededError`||n===`PrefillChunkSizeSmallerThanImageError`)return new Qt(dn,t);if(n===`ModelNotFoundError`||n===`SpecifiedModelNotFoundError`||n===`UnsupportedModelIdError`||n===`ModelNotLoadedError`)return new Zt(t??r,dn);let i=new Xt(r,n===`DeviceLostError`?`WEBGPU_DEVICE_LOST`:`API_ERROR`,dn,t);return i.cause=e,i}abortError(e,t,n){if(e?.didTimeout())return new Xt(`AI request timed out after ${e.timeout}ms`,`AI_TIMEOUT`,dn,n);if(t.signal?.aborted)return new Xt(`AI request aborted by caller`,`AI_ABORTED`,dn,n)}async lockEngine(e,t){let n=mn.get(e)??Promise.resolve(),r=()=>{},i=new Promise(e=>{r=e});mn.set(e,n.then(()=>i));try{await wn(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=cn(this.options,t,dn,c);let l=await this.acquireEngine(c,t.signal);r=ln(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 wn(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 Xt(`No choices returned from webllm`,`NO_CHOICES`,dn);let h=this.mapUsage(p.usage);un(this.options,dn,`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?.(),Sn(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=cn(this.options,t,dn,u),a=await this.acquireEngine(u,t.signal),r=ln(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 wn(d,r.signal)}catch(e){throw l=d.then(e=>Cn(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)),un(this.options,dn,`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 xn(s)}i?.(),Sn(o,l),r?.cleanup()}}async countTokens(e){return Math.ceil(e.length/4)}async getModels(){let e=await gn(),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??fn,capabilities:[`text`,`chat`,...r?[`functions`]:[],...t?[`vision`]:[]],supportsFunctions:r,supportsVision:t}})}async getCapabilities(){return{...pn}}async embed(e,t={}){return vn(`Embeddings`)}async embedImage(e,t={}){return vn(`Image embeddings`)}async describeImage(e,t,n={}){return vn(`Image description`)}async generateImage(e,t={}){return vn(`Image generation`)}async submitVideoGenerationJob(e){return vn(`Video generation`)}async getVideoGenerationJob(e){return vn(`Video generation`)}async fetchVideoGenerationResult(e){return vn(`Video generation`)}async cancelVideoGenerationJob(e){return vn(`Video generation`)}async validateVideoGenerationAccess(){return vn(`Video generation`)}async synthesizeSpeech(e,t){return vn(`Text-to-speech`)}streamSpeech(e,t){let n=new Xt(`Text-to-speech streaming is not supported by the webllm provider.`,`NOT_SUPPORTED`,dn);return{[Symbol.asyncIterator]:()=>({next:()=>Promise.reject(n)})}}async cloneVoice(e){return vn(`Voice cloning`)}async designVoice(e){return vn(`Voice design`)}async getVoices(e){return vn(`Voice listing`)}};async function xn(e){try{for(;!(await e.next()).done;);}catch{}}function Sn(e,t){e&&(t?t.then(e,e):e())}async function Cn(e,t){try{if((await e.next()).done)return;await Promise.resolve(t?.interruptGenerate())}catch{return}await xn(e)}function wn(e,t){return t?t.aborted?Promise.reject(new Xt(`AI request aborted by caller`,`AI_ABORTED`,dn)):new Promise((n,r)=>{let i=()=>r(new Xt(`AI request aborted by caller`,`AI_ABORTED`,dn));t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}var Tn={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 En(e,t,n,r=Tn){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 Dn=e=>!!e&&typeof e==`object`&&e.kind===`cookbook-offer`&&typeof e.offerId==`string`,On=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`)}},kn=`smrt-planner:assistant:v1`;function An(){return{modelId:Vt,consented:[]}}function jn(e){let t=An();try{let n=e?.getItem(kn);if(!n)return t;let r=JSON.parse(n);typeof r.modelId==`string`&&Ut(r.modelId)&&(t.modelId=r.modelId),Array.isArray(r.consented)&&(t.consented=r.consented.filter(e=>typeof e==`string`&&!!Ut(e)))}catch{}return t}function Mn(e,t){try{e?.setItem(kn,JSON.stringify(t))}catch{}}var Nn=e=>!!e&&typeof e==`object`&&e.kind===`theme-undo`&&typeof e.undoId==`string`,Pn=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`)}},Fn={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.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 In(t,r){let i=O(r,`size`,3,`md`),a=n(()=>r.onlineStatus===`dnd`?`busy`:r.onlineStatus);q(t,{get name(){return r.name},get src(){return r.avatarUrl},get size(){return i()},get status(){return e(a)}})}function Ln(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 Rn=c(`<span class="tool-call__duration svelte-rtpofh"> </span>`),zn=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>`),Bn=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>`),Vn=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>`),Hn=c(`<div class="tool-call__running svelte-rtpofh"><div class="tool-call__spinner svelte-rtpofh"></div> <span class="svelte-rtpofh">Executing...</span></div>`),Un=c(`<pre class="tool-call__json svelte-rtpofh"> </pre>`),Wn=c(`<p class="tool-call__applied-fallback svelte-rtpofh"> </p>`),Gn=c(`<div class="tool-call__data-surface-action-buttons svelte-rtpofh"><!> <!></div>`),Kn=c(`<!> <!>`,1),qn=c(`<pre class="tool-call__json tool-call__json--error svelte-rtpofh"> </pre>`),Jn=c(`<div class="tool-call__section tool-call__data-surface-action svelte-rtpofh"><span class="tool-call__section-label svelte-rtpofh"> </span> <!></div>`),Yn=c(`<div class="tool-call__body svelte-rtpofh"><!> <!> <!> <!> <!></div>`),Xn=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 Zn(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=Xn(),S=P(b),w=P(S),T=I(w,2),E=z(T,!0),D=I(T,2),O=P(D),A=e=>{var t=Rn(),n=z(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=z(j,!0),N=I(j,2);let F;s(D),s(S);var ee=I(S,2),L=r=>{var i=Yn(),a=P(i),u=e=>{var t=zn(),n=I(P(t),2),r=z(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=Bn(),n=I(P(t),2),r=z(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=Vn(),n=I(P(t),2),r=z(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=Hn(),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=Jn(),r=P(n),i=z(r,!0),a=I(r,2),u=e=>{var n=Kn(),r=B(n),i=e=>{var t=Un(),n=z(t,!0);H(e=>l(n,e),[()=>v(o.actionResult.details)]),x(e,t)},a=e=>{var t=Wn(),n=z(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=Gn(),n=P(t);J(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);J(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=qn(),n=z(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(L)}),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 Qn=c(`<div class="agent-chat__inactive-notice svelte-h8qbdq"> </div>`),$n=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>`),er=c(`<!> <!>`,1),tr=c(`<div class="agent-chat__tool-row svelte-h8qbdq"><!></div>`),nr=c(`<span class="text-block svelte-h8qbdq"> </span>`),rr=c(`<div class="field-update-block svelte-h8qbdq"><span class="applied-badge svelte-h8qbdq"> </span> <!></div>`),ir=c(`<div class="markdown-block svelte-h8qbdq"><pre class="markdown-block__content svelte-h8qbdq"><code class="svelte-h8qbdq"> </code></pre> <!></div>`),ar=c(`<div><div><div class="agent-chat__msg-content svelte-h8qbdq"><!></div> <time class="agent-chat__msg-time svelte-h8qbdq"> </time></div></div>`),or=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>`),sr=c(`<div class="agent-chat__empty svelte-h8qbdq"><span class="agent-chat__empty-text svelte-h8qbdq"> </span></div>`),cr=c(`<div class="diff-field svelte-h8qbdq"><span class="diff-field__name svelte-h8qbdq"> </span> <pre class="diff-field__value svelte-h8qbdq"> </pre></div>`),lr=c(`<div class="diff-dialog__body svelte-h8qbdq"></div>`),ur=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 dr(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=ur(),F=B(N),ee=P(F);ye(ee,{class:`agent-chat__input-bar`,onsubmit:e=>E(e),children:(r,i)=>{var a=S(),s=B(a),u=e=>{var t=Qn(),n=z(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=er(),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`]));we(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`]));J(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=$n();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 L=I(ee,2),R=P(L);p(R,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=tr();Zn(P(n),{get toolCall(){return e(a).toolCallData}}),s(n),x(t,n)},y=n=>{var r=ar();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,()=>Ln(e(a).content||``),v,(n,r)=>{var i=S(),a=B(i),u=t=>{var n=nr(),i=z(n,!0);H(()=>l(i,e(r).content)),x(t,n)},f=t=>{var n=rr(),i=P(n),a=z(i,!0),o=I(i,2);J(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=ir(),a=P(i),c=P(a),u=z(c,!0);s(a);var f=I(a,2),p=t=>{J(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=z(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 te=I(R,2),ne=e=>{var t=or();x(e,t)};t(te,e=>{u()&&e(ne)});var re=I(te,2),ie=e=>{var t=sr(),n=P(t),r=z(n,!0);s(t),H(e=>l(r,e),[()=>c(Q[`chat.agent_chat.empty`])]),x(e,t)};t(re,e=>{o.messages.length===0&&!u()&&e(ie)}),s(L),j(L,e=>W(m,e),()=>e(m)),s(F);var V=I(F,2),ae=P(V),oe=P(ae),se=z(oe,!0),ce=I(oe,2);J(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=lr();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=cr(),u=P(c),d=z(u,!0),f=I(u,2),p=z(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(L,`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 fr=c(`<span class="agent-selector__unavailable-badge svelte-3xwzgp">Unavailable</span>`),pr=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>`),mr=c(`<div class="agent-selector__empty svelte-3xwzgp"><span class="agent-selector__empty-text svelte-3xwzgp"> </span></div>`),hr=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 gr(n,a){h(a,!0);let{t:o}=K();var c=hr(),u=P(c),d=z(u,!0),f=I(u,2);p(f,21,()=>a.agents,e=>e.id,(n,r)=>{var o=pr();let c;U(o,`aria-selected`,!1);var u=P(o);In(u,{get name(){return e(r).name},get avatarUrl(){return e(r).avatarUrl},size:`lg`});var d=I(u,2),f=P(d),p=z(f,!0),m=I(f,2),h=z(m,!0);s(d);var g=I(d,2),_=e=>{var t=fr();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=mr(),n=P(t),r=z(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 _r=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>`),vr=c(`<span class="session-panel__tool-chip svelte-1l3fy3e"> </span>`),yr=c(`<span class="session-panel__tool-chip session-panel__tool-chip--more svelte-1l3fy3e"> </span>`),br=c(`<div class="session-panel__item-tools svelte-1l3fy3e"><!> <!></div>`),xr=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>`),Sr=c(`<div class="session-panel__empty svelte-1l3fy3e"><span class="session-panel__empty-text svelte-1l3fy3e"> </span></div>`),Cr=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 wr(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=Cr(),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`]));J(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=_r();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=xr();let m;var h=P(f);In(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=z(y,!0),S=I(y,2),w=z(S,!0);s(_);var T=I(_,2),E=P(T);let D;var O=z(E,!0),k=I(E,2),A=z(k);s(T);var j=I(T,2),M=n=>{var r=br(),i=P(r);p(i,17,()=>e(a).allowedTools.slice(0,3),v,(t,n)=>{var r=vr(),i=z(r,!0);H(()=>l(i,e(n))),x(t,r)});var o=I(i,2),c=t=>{var n=yr(),r=z(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=Sr(),n=P(t),r=z(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 Tr=Symbol(`caption-overlay`),Er=c(`<div class="caption-overlay-controls svelte-x4r42u"><!> <!></div>`),Dr=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 Or(n,i){h(i,!0);let a=O(i,`label`,3,`Captions`),{t:c}=K();L(Tr,!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=Dr(),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=Er(),r=P(n);J(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);J(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 kr=c(`<p class="svelte-s0z1g9"> </p>`),Ar=c(`<p class="interim svelte-s0z1g9" aria-hidden="true"> </p>`),jr=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 Mr(i,o){h(o,!0);let c=n=>{var r=jr(),i=P(r),a=z(i,!0),o=I(i,2);p(o,21,()=>e(y),e=>e.id,(t,n)=>{var r=kr(),i=z(r,!0);H(()=>l(i,e(n).text)),x(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Ar(),n=z(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(Tr)??!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=>{Or(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 Nr=c(`<p class="svelte-1h07s25"> </p>`),Pr=c(`<p class="interim svelte-1h07s25" aria-hidden="true"> </p>`),Fr=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 Ir(i,o){h(o,!0);let c=n=>{var r=Fr(),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=Nr(),i=z(r,!0);H(()=>l(i,e(n).text)),x(t,r)}),s(o);var c=I(o,2),u=e=>{var t=Pr(),n=z(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(Tr)??!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=>{Or(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 Lr=c(`<!> <!>`,1),Rr=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>`),zr=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 Br(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=Lr(),i=B(r);J(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));J(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)=>{ye(t,{class:`dialog__form`,onsubmit:e=>{e.preventDefault(),y()},children:(t,r)=>{var a=zr(),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`]));me(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=z(C,!0),T=I(C,2);p(T,21,()=>v,e=>e.value,(t,n)=>{var r=Rr();let a;var c=P(r);E(c);var u,d=I(c,2),p=P(d),m=z(p,!0),h=I(p,2),g=z(h,!0);s(d),s(r),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`]));we(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=z(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 Vr=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>`),Hr=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>`),Ur=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>`),Wr=c(`<img class="result-item__avatar svelte-qy9dvp" alt=""/>`),Gr=c(`<span class="result-item__avatar-placeholder svelte-qy9dvp"> </span>`),Kr=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>`),qr=c(`<p class="results-count svelte-qy9dvp"> </p> <ul class="results-list svelte-qy9dvp"></ul>`,1),Jr=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>`),Yr=c(`<div class="search-empty svelte-qy9dvp" role="status"><p class="search-empty__text svelte-qy9dvp"> </p></div>`),Xr=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 Zr(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=Xr(),h=P(i),v=P(h),b=z(v,!0),S=I(v,2);{let t=n(()=>o(Q[`chat.search_messages.close`]));J(S,{variant:`ghost`,size:`sm`,class:`close-btn`,type:`button`,onclick:_,get"aria-label"(){return e(t)},children:(e,t)=>{var n=Vr();x(e,n)},$$slots:{default:!0}})}s(h);var T=I(h,2);ye(T,{class:`search-form`,onsubmit:e=>{e.preventDefault(),g()},children:(r,i)=>{var a=Ur(),l=I(P(a),2);{let t=n(()=>o(Q[`chat.search_messages.input_placeholder`])),r=n(()=>o(Q[`chat.search_messages.query`]));me(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`]));J(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=Hr();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=qr(),i=B(r),d=z(i,!0),f=I(i,2);p(f,21,()=>a.results,e=>e.id,(n,r)=>{var i=Kr(),o=P(i),d=P(o),f=P(d),p=t=>{var n=Wr();H(()=>U(n,`src`,e(r).senderAvatarUrl)),x(t,n)},m=t=>{var n=Gr(),i=z(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=z(h,!0),_=I(h,2),v=z(_,!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=Jr(),r=P(n),i=z(r,!0),a=I(r,2),u=z(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=Yr(),n=P(t),r=z(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`}),Qr=c(`<p class="message svelte-1ocwb6j"> </p>`),$r=c(`<p class="message svelte-1ocwb6j" role="status"> </p>`),ei=c(`<p> </p>`),ti=c(`<div class="preview svelte-1ocwb6j"></div>`),ni=c(`<div class="setup-actions svelte-1ocwb6j"></div>`),ri=c(`<section class="custom-setup svelte-1ocwb6j"><!> <!></section>`),ii=c(`<option> </option>`),ai=c(`<option> </option><option> </option>`,1),oi=c(`<label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <label class="svelte-1ocwb6j"> <!></label> <!> <!>`,1),si=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),ci=c(`<section class="helper-panel svelte-1ocwb6j" aria-labelledby="helper-panel-title" data-smrt-component="HelperControlPanel"><h2 id="helper-panel-title"> </h2> <!> <!> <!></section>`);function li(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),L=n(()=>!!e(b)&&(u()?.permissions.editableFields.length??0)>0),R=n(()=>u()?.preferences??null),te=n(()=>!!e(b)&&(!e(R)||e(b).offeringId!==e(R).offeringId||e(b).name!==e(R).name||e(b).voiceId!==e(R).voiceId||e(b).placement!==e(R).placement||e(b).heardSubtitles!==e(R).heardSubtitles||e(b).spokenSubtitles!==e(R).spokenSubtitles)),ne=n(()=>(u()?.offerings??[]).filter(e=>a.registry.get(e.styleId))),re=n(()=>ee(`offeringId`)?Math.max(0,e(ne).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(ne).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(ne).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(ne);if(!n.length)return;let r=Math.max(0,n.findIndex(t=>t.id===e(b)?.offeringId)),i=null;(t.key===`ArrowRight`||t.key===`ArrowDown`)&&(i=(r+1)%n.length),(t.key===`ArrowLeft`||t.key===`ArrowUp`)&&(i=(r-1+n.length)%n.length),t.key===`Home`&&(i=0),t.key===`End`&&(i=n.length-1),i!==null&&(t.preventDefault(),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{fe(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 Y(){if(!e(m)&&u()?.permissions.canReset){W(m,!0),W(v,null),W(y,!1);try{fe(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 fe(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 X=ci(),he=P(X),ge=z(he,!0),ve=I(he,2),ye=t=>{var n=Qr(),r=z(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(ve,t=>{e(v)&&t(ye)});var be=I(ve,2),xe=e=>{var t=$r(),n=z(t,!0);H(()=>l(n,u().recovery.message)),x(e,t)};t(be,e=>{u()?.recovery&&e(xe)});var Ce=I(be,2),we=e=>{var t=ei(),n=z(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.loading`])]),x(e,t)},Te=e=>{var t=ei(),n=z(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.unavailable`])]),x(e,t)},Ee=r=>{var i=si(),f=B(i),h=P(f),v=z(h,!0),y=I(h,2);p(y,23,()=>e(ne),e=>e.id,(t,r,i)=>{{let a=n(()=>`${o}-offering-${e(i)}`),s=n(()=>e(re)===e(i)?0:-1),c=n(()=>e(b)?.offeringId===e(r).id?`selected`:``),u=n(()=>e(b)?.offeringId===e(r).id),f=n(()=>!e(b)||!ee(`offeringId`));J(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=ti();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=$r(),r=z(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=ni();p(r,21,()=>e(V),e=>e.id,(t,r)=>{{let i=n(()=>`${o}-setup-${e(r).id}`),a=n(()=>!ee(`offeringId`));J(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 R=I(A,2),ie=r=>{let i=n(()=>a.registry.get(e(E))?.Setup);var o=ri(),u=P(o);J(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(R,t=>{e(ae)&&t(ie)});var ce=I(R,2),G=t=>{var r=oi(),i=B(r),a=P(i,!0),o=I(a);{let t=n(()=>!ee(`name`));me(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`));_e(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=ii(),i=z(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`));_e(_,{get value(){return e(b).placement},get disabled(){return e(t)},onchange:e=>se(`placement`,e.currentTarget.value),children:(e,t)=>{var n=ai(),r=B(n),i=z(r,!0);r.value=r.__value=`bottom-left`;var a=I(r),o=z(a,!0);a.value=a.__value=`bottom-right`,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`));Se(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`));Se(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=Qr(),n=z(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 fe=I(f,2),X=e=>{var t=$r(),n=z(t,!0);H(e=>l(n,e),[()=>c($[`chat.helper.unsaved_changes`])]),x(e,t)};t(fe,t=>{e(te)&&t(X)});var he=I(fe,2),ge=P(he),ve=t=>{{let r=n(()=>e(m)||!e(te));J(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(ge,t=>{e(L)&&t(ve)});var ye=I(ge),be=t=>{J(t,{type:`button`,variant:`secondary`,onclick:Y,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(ye,e=>{u().permissions.canReset&&e(be)}),s(he),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(Ce,t=>{e(f)?t(we):u()?t(Ee,-1):t(Te,1)}),s(X),H(t=>{U(X,`aria-busy`,e(f)||e(m)),l(ge,t)},[()=>c($[`chat.helper.title`])]),x(i,X),r()}w([`keydown`]);var ui=c(`<div class="room-list__header svelte-p0wx6n"><!></div>`),di=c(`<span class="unread-badge svelte-p0wx6n"> </span>`),fi=c(`<li><button type="button"><span class="room-item__icon svelte-p0wx6n"> </span> <span class="room-item__name svelte-p0wx6n"> </span> <!></button></li>`),pi=c(`<ul class="room-group__list svelte-p0wx6n" role="list"></ul>`),mi=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>`),hi=c(`<img class="room-item__avatar svelte-p0wx6n" alt=""/>`),gi=c(`<span class="room-item__avatar-placeholder svelte-p0wx6n"> </span>`),_i=c(`<span class="room-item__preview svelte-p0wx6n"> </span>`),vi=c(`<span class="room-item__time svelte-p0wx6n"> </span>`),yi=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>`),bi=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>`),xi=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>`),Si=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>`),Ci=c(`<div class="room-list__empty svelte-p0wx6n"><p class="svelte-p0wx6n"> </p> <!></div>`),wi=c(`<nav class="room-list svelte-p0wx6n" data-smrt-component="RoomList"><!> <!> <!> <!> <!></nav>`);function Ti(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=wi(),w=P(S),T=t=>{var r=ui(),i=P(r);{let t=n(()=>c($[`chat.room_list.create_new_room`]));J(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=mi(),a=P(r),d=P(a);let m;var h=I(d,4),g=z(h,!0);s(a);var _=I(a,2),b=n=>{var r=pi();p(r,21,()=>e(f),e=>e.id,(n,r)=>{var a=fi(),u=P(a);let d;var f=P(u),p=z(f,!0),m=I(f,2),h=z(m,!0),g=I(m,2),_=t=>{var n=di(),i=z(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=bi(),a=P(r),d=P(a);let f;var h=I(d,2),g=z(h,!0),_=I(h,2),y=z(_,!0);s(a);var S=I(a,2),w=n=>{var r=pi();p(r,21,()=>e(m),e=>e.id,(n,r)=>{var a=yi(),u=P(a);let d;var f=P(u),p=t=>{var n=hi();H(()=>U(n,`src`,e(r).avatarUrl)),x(t,n)},m=t=>{var n=gi(),i=z(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),_=z(g,!0),v=I(g,2),y=t=>{var n=_i(),i=z(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=vi(),i=z(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=di(),i=z(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=Si(),a=P(r),d=P(a);let f;var m=I(d,4),h=z(m,!0);s(a);var _=I(a,2),y=n=>{var r=pi();p(r,21,()=>e(g),e=>e.id,(n,r)=>{var a=xi(),u=P(a);let d;var f=I(P(u),2),p=z(f,!0),m=I(f,2),h=t=>{var n=di(),i=z(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=Ci(),r=P(n),i=z(r,!0),a=I(r,2),u=e=>{J(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 Ei=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 Di(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=Ei();let m;var g=P(p);let _;Ti(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 Oi=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>`),ki=c(`<img class="member-item__avatar svelte-dnjj1q" alt=""/>`),Ai=c(`<span class="member-item__avatar-placeholder svelte-dnjj1q"> </span>`),ji=c(`<span> </span>`),Mi=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>`),Ni=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>`),Pi=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>`),Fi=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>`),Ii=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>`),Li=c(`<p class="member-list__empty svelte-dnjj1q"> </p>`),Ri=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 zi(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=Ri(),y=P(v),S=I(P(y),2),C=z(S,!0),w=I(S,2);{let t=n(()=>c($[`chat.member_list.close`]));J(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=Oi();x(e,n)},$$slots:{default:!0}})}s(y);var T=I(y,2),E=P(T),D=r=>{var a=Ni(),o=P(a),c=I(P(o)),d=z(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(u),e=>e.id,(r,a)=>{var o=Mi(),c=P(o),u=P(c),d=t=>{var n=ki();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ai(),r=z(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=z(y,!0),C=I(y,2),w=t=>{var n=ji(),r=z(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=Pi(),o=P(a),c=I(P(o)),u=z(c,!0);s(o);var f=I(o,2);p(f,21,()=>e(d),e=>e.id,(r,a)=>{var o=Mi(),c=P(o),u=P(c),d=t=>{var n=ki();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ai(),r=z(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=z(y,!0),C=I(y,2),w=t=>{var n=ji(),r=z(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=Ii(),o=P(a),c=I(P(o)),u=z(c,!0);s(o);var d=I(o,2);p(d,21,()=>e(f),e=>e.id,(r,a)=>{var o=Fi(),c=P(o),u=P(c),d=t=>{var n=ki();H(()=>U(n,`src`,e(a).avatarUrl)),x(t,n)},f=t=>{var n=Ai(),r=z(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=z(y,!0),C=I(y,2),w=t=>{var n=ji(),r=z(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=Li(),n=z(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 Bi=c(`<span class="room-header__icon svelte-54tuky" aria-hidden="true"> </span>`),Vi=c(`<img class="room-header__avatar svelte-54tuky" alt=""/>`),Hi=c(`<span class="room-header__avatar-placeholder svelte-54tuky"> </span>`),Ui=c(`<p class="room-header__topic svelte-54tuky"> </p>`),Wi=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),Gi=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>`),Ki=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 qi(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=Ki(),f=P(d),p=P(f),m=P(p),g=t=>{var n=Bi(),r=z(n,!0);H(()=>l(r,e(c))),x(t,n)},_=e=>{var t=Vi();H(()=>U(t,`src`,a.room.avatarUrl)),x(e,t)},v=e=>{var t=Hi(),n=z(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=z(y,!0),S=I(y,2),C=z(S,!0);s(p);var w=I(p,2),T=e=>{var t=Ui(),n=z(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`]));J(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=Wi(),r=I(B(n),2),i=z(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`]));J(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=Gi();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 Ji=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>`),Yi=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>`),Xi=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 Zi(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=Xi();let b;var S=P(y),w=e=>{var n=Yi(),r=P(n),i=P(r),a=z(i,!0),u=I(i,2),d=z(u,!0);s(r);var p=I(r,2),m=e=>{var t=Ji();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`]));we(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 Qi(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`]));pe(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 $i=c(`<div class="message-item message-item--system svelte-1g4tgey" data-smrt-component="MessageItem"><!></div>`),ea=c(`<div class="message-item__avatar svelte-1g4tgey"><!></div>`),ta=c(`<span class="message-item__sender svelte-1g4tgey"> </span>`),na=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>`),ra=c(`<span class="message-item__tool-duration svelte-1g4tgey"> </span>`),ia=c(`<span class="message-item__tool-error svelte-1g4tgey"> </span>`),aa=c(`<div class="message-item__tool-call svelte-1g4tgey"><span class="message-item__tool-name svelte-1g4tgey"> </span> <span> </span> <!> <!></div>`),oa=c(`<span class="message-item__reaction-emoji svelte-1g4tgey"> </span> <span class="message-item__reaction-count svelte-1g4tgey"> </span>`,1),sa=c(`<div class="message-item__reactions svelte-1g4tgey"></div>`),ca=c(`<span class="message-item__edited svelte-1g4tgey">(edited)</span>`),la=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>`),ua=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>`),da=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>`),fa=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>`),pa=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>`),ma=c(`<div class="message-item__picker-popover svelte-1g4tgey"><!></div>`),ha=c(`<div class="message-item__actions svelte-1g4tgey" role="group"><!> <!> <!> <!></div> <!>`,1),ga=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 _a(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=$i(),n=P(t);de(n,{get content(){return o.message.content},own:!1,variant:`system`}),s(t),x(e,t)},N=r=>{var a=ga();let h;var S=P(a),D=e=>{var t=ea();In(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=ta(),n=z(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=na(),n=P(t),r=z(n,!0),i=I(n,2),a=z(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);de(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=aa(),r=P(n),a=z(r,!0),c=I(r,2),u=z(c,!0),d=I(c,2),f=e=>{var t=ra(),n=z(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=ia(),n=z(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 L=I(F,2),R=t=>{var r=sa();p(r,21,()=>o.message.reactions,v,(t,r)=>{{let i=n(()=>e(r).reacted?` message-item__reaction--active`:``);J(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=oa(),a=B(i),o=z(a,!0),s=I(a,2),c=z(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(L,e=>{o.message.reactions.length>0&&e(R)});var te=I(L,2),ne=P(te),re=z(ne,!0),ie=I(ne,2),V=e=>{var t=ca();x(e,t)};t(ie,e=>{o.message.isEdited&&e(V)}),s(te),s(O);var ae=I(O,2),oe=t=>{{let r=n(()=>c($[`chat.message_item.more_actions`]));J(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=la();x(e,n)},$$slots:{default:!0}})}};t(ae,t=>{e(g)&&t(oe)});var se=I(ae,2),ce=r=>{var i=ha(),a=B(i),l=P(a),d=t=>{{let r=n(()=>c($[`chat.message_item.add_reaction`]));J(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=ua();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`]));J(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=da();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`]));J(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=fa();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`]));J(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=pa();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=ma();Qi(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(re,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 va=c(`<div class="message-list__empty svelte-rbnc13"><span> </span></div>`),ya=c(`<div class="message-list__date-separator svelte-rbnc13" role="separator"><span class="message-list__date-label svelte-rbnc13"> </span></div> <!>`,1),ba=c(`<div class="message-list svelte-rbnc13" role="log" data-smrt-component="MessageList"><!></div>`);function xa(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=ba(),m=P(f),g=e=>{var t=va(),n=P(t),r=z(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=ya(),o=B(i),c=P(o),u=z(c,!0);s(o);var d=I(o,2);p(d,17,()=>e(r).messages,e=>e.id,(t,r)=>{{let i=n(()=>e(r).senderProfileId===a.currentProfileId);_a(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 Sa=c(`<span class="thread-panel__resolved svelte-o9q95w">Resolved</span>`),Ca=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>`),wa=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 Ta(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=wa(),p=P(f),m=P(p),g=P(m),_=z(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=Sa();x(e,t)};t(C,e=>{a.thread.isResolved&&e(w)});var T=I(C,2);{let t=n(()=>o($[`chat.thread_panel.close`]));J(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=Ca();x(e,n)},$$slots:{default:!0}})}s(p);var E=I(p,2);xa(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`]));Zi(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 Ea=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>`),Da=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>`),Oa=c(`<div class="file-upload__preview svelte-8f8u96"><!> <div class="file-upload__preview-actions svelte-8f8u96"><!> <!></div></div>`),ka=c(`<div class="file-upload__error svelte-8f8u96" role="alert"> </div>`),Aa=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 ja(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=Aa();let ee;var L=P(N),R=t=>{var r=Oa(),i=P(r);p(i,19,()=>e(g),(e,t)=>e.name+t,(t,r,i)=>{var a=Da(),o=P(a),u=z(o,!0),d=I(o,2),f=P(d),p=z(f,!0),m=I(f,2),h=z(m,!0);s(d);var g=I(d,2);{let t=n(()=>c(Q[`chat.file_upload.remove`],{name:e(r).name}));J(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=Ea();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);J(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);J(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(L,t=>{e(g).length>0&&t(R)});var te=I(L,2),ne=t=>{var n=ka(),r=z(n,!0);H(()=>l(r,e(v))),x(t,n)};t(te,t=>{e(v)&&t(ne)});var re=I(te,2);let B;var ie=P(re),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=z(G,!0);s(ie),s(re),s(N),H(t=>{ee=i(N,1,`file-upload svelte-8f8u96`,null,ee,{"file-upload--disabled":f()}),B=i(re,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`,re,b),T(`dragover`,re,S),T(`dragleave`,re,w),C(`change`,V,E),x(a,N),r()}w([`change`]);var Ma=c(`<div class="link-preview__image svelte-13jrn1d"><img class="svelte-13jrn1d"/></div>`),Na=c(`<span class="link-preview__title svelte-13jrn1d"> </span>`),Pa=c(`<span class="link-preview__description svelte-13jrn1d"> </span>`),Fa=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 Ia(i,a){h(a,!0);let o=n(()=>{try{return new URL(a.url).hostname}catch{return a.url}});var c=Fa(),u=P(c),d=e=>{var t=Ma(),n=z(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=Na(),n=z(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=Pa(),n=z(t,!0);H(()=>l(n,a.description)),x(e,t)};t(g,e=>{a.description&&e(_)});var v=I(g,2),y=z(v,!0);s(f),s(c),H(()=>{U(c,`href`,a.url),l(y,e(o))}),x(i,c),r()}var La=c(`<button type="button" role="option"><!> <span class="mention-autocomplete__name svelte-1cyjli3"> <mark class="mention-autocomplete__highlight svelte-1cyjli3"> </mark> </span></button>`),Ra=c(`<div class="mention-autocomplete svelte-1cyjli3" role="listbox" data-smrt-component="MentionAutocomplete"></div>`);function za(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=Ra();p(r,23,()=>o.suggestions,e=>e.id,(t,r,a)=>{let c=n(()=>f(e(r).name,o.query));var d=La();let p;var m=P(d);In(m,{get name(){return e(r).name},get avatarUrl(){return e(r).avatarUrl},size:`sm`});var h=I(m,2),g=P(h,!0),_=I(g),v=z(_,!0),y=I(_,1,!0);s(h),s(d),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 Ba=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>`),Va=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),Ha=c(`<img class="read-receipts__mini-avatar svelte-1sf2l8g"/>`),Ua=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--initials svelte-1sf2l8g"> </span>`),Wa=c(`<span class="read-receipts__mini-avatar read-receipts__mini-avatar--more svelte-1sf2l8g"> </span>`),Ga=c(`<span class="read-receipts__avatars svelte-1sf2l8g"><!> <!></span>`),Ka=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),qa=c(`<span class="read-receipts svelte-1sf2l8g" data-smrt-component="ReadReceipts"><!></span>`);function Ja(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=qa(),g=P(m),_=e=>{var t=Ba();x(e,t)},y=e=>{var t=Va(),n=I(B(t),2),r=z(n,!0);H(()=>l(r,o.readBy.length)),x(e,t)},b=n=>{var r=Ka(),a=B(r);let c;var d=I(a),m=n=>{var r=Ga(),i=P(r);p(i,17,()=>o.readBy.slice(0,3),v,(n,r)=>{var i=S(),a=B(i),o=t=>{var n=Ha();H(()=>{U(n,`src`,e(r).avatarUrl),U(n,`alt`,e(r).name)}),x(t,n)},s=t=>{var n=Ua(),i=z(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=Wa(),n=z(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 Ya=c(`<span class="presence__label svelte-k0r91z"> </span>`),Xa=c(`<span class="presence svelte-k0r91z" data-smrt-component="UserPresence"><span></span> <!></span>`);function Za(e,n){let r=O(n,`showLabel`,3,!1),a={online:`Online`,away:`Away`,dnd:`Do not disturb`,offline:`Offline`};var o=Xa(),c=P(o),u=I(c,2),d=e=>{var t=Ya(),r=z(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 Qa=c(`<span class="mini-chat__sender svelte-zo0sdr"> </span>`),$a=c(`<div><!> <div><!> <span class="mini-chat__text svelte-zo0sdr"> </span> <time class="mini-chat__time svelte-zo0sdr"> </time></div></div>`),eo=c(`<div class="mini-chat__empty svelte-zo0sdr"><span class="mini-chat__empty-text svelte-zo0sdr"> </span></div>`),to=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>`),no=c(`<!> <!>`,1),ro=c(`<div class="mini-chat svelte-zo0sdr" data-smrt-component="MiniChat"><div class="mini-chat__messages svelte-zo0sdr" role="log"><!> <!></div> <!></div>`);function io(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=ro(),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=$a();let d;var f=P(u),p=t=>{In(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=Qa(),r=z(n,!0);H(()=>l(r,e(a).senderName)),x(t,n)};t(g,t=>{e(c)||t(v)});var y=I(g,2),b=z(y,!0),S=I(y,2),C=z(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=eo(),n=P(t),r=z(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);ye(E,{class:`mini-chat__input-bar`,onsubmit:m,children:(t,r)=>{var i=no(),a=B(i);{let t=n(()=>c($[`chat.mini_chat.placeholder`])),r=n(()=>c($[`chat.mini_chat.input_label`]));me(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`]));J(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=to();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 ao=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>`),oo=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>`),so=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>`),co=c(`<span class="chat-tab__badge svelte-1krwmy5"> </span>`),lo=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 uo(i,a){h(a,!0);let{t:o}=K();var c=S(),u=B(c),d=t=>{var r=so(),i=P(r),c=P(i),u=P(c);In(u,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var d=I(u,2),f=z(d,!0);s(c);var p=I(c,2),m=P(p);{let t=n(()=>o($[`chat.chat_tab.minimize`])),r=n(()=>o($[`chat.chat_tab.minimize`]));J(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=ao();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`]));J(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=oo();x(e,n)},$$slots:{default:!0}})}s(p),s(i);var g=I(i,2);io(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=lo(),r=P(n);In(r,{get name(){return a.tab.room.name},get avatarUrl(){return a.tab.room.avatarUrl},size:`sm`});var i=I(r,2),c=z(i,!0),u=I(i,2),d=e=>{var t=co(),n=z(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 fo=c(`<span class="tab-list__badge svelte-jqiu29"> </span>`),po=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>`),mo=c(`<div class="tab-list__item svelte-jqiu29"><button class="tab-list__btn svelte-jqiu29" type="button"><!> <!></button> <!></div>`),ho=c(`<nav class="tab-list svelte-jqiu29" data-smrt-component="ChatTabList"></nav>`);function go(i,a){h(a,!0);let{t:o}=K();var c=S(),u=B(c),d=r=>{var i=ho();p(i,21,()=>a.tabs,e=>e.roomId,(r,i)=>{var c=mo(),u=P(c),d=P(u);In(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=fo(),r=z(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`]));J(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=po();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 _o=c(`<div class="chat-tabs svelte-1vavi4c" data-smrt-component="ChatTabs"><div class="chat-tabs__expanded svelte-1vavi4c"></div> <!></div>`);function vo(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=_o(),m=P(f);p(m,21,()=>e(u),e=>e.roomId,(t,r)=>{{let i=n(()=>c()[e(r).roomId]??[]);uo(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=>{go(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 yo=c(`<p class="assistant-dock-choices-status assistant-dock-choices-making svelte-hjhu1a" role="status"> </p>`),bo=c(`<img loading="lazy" class="svelte-hjhu1a"/>`),xo=c(`<span class="assistant-dock-choice-description svelte-hjhu1a"> </span>`),So=c(`<li class="svelte-hjhu1a"><button type="button"><!> <span class="assistant-dock-choice-label svelte-hjhu1a"> </span> <!></button></li>`),Co=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>`),wo=c(`<ul class="assistant-dock-choice-list svelte-hjhu1a"><!> <!></ul>`),To=c(`<p class="assistant-dock-choices-status svelte-hjhu1a"> </p>`),Eo=c(`<p class="assistant-dock-choices-status assistant-dock-choices-error svelte-hjhu1a" role="alert"> </p>`),Do=c(`<div class="assistant-dock-choices-actions assistant-dock-choices-commit svelte-hjhu1a"><!> <!></div> <!>`,1),Oo=c(`<div class="assistant-dock-choices-actions svelte-hjhu1a"><span class="svelte-hjhu1a"> </span> <!></div>`),ko=c(`<p class="assistant-dock-choices-status svelte-hjhu1a" role="status"> </p>`),Ao=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>`),jo=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 Mo(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=jo(),O=P(D),k=z(O,!0),A=I(O,2),j=t=>{var n=yo(),r=z(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=wo(),c=P(r);p(c,17,()=>e(E),e=>e.id,(n,r)=>{var c=So(),u=P(c);let d;var f=P(u),p=t=>{var n=bo();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=z(m,!0),g=I(m,2),_=t=>{var n=xo(),i=z(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=Co(),r=I(P(n),2),i=z(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=To(),r=z(n,!0);H(()=>l(r,e(a).note)),x(t,n)};t(F,t=>{e(a).note&&e(a).status===`waiting`&&t(ee)});var L=I(F,2),R=r=>{var i=Do(),c=B(i),f=P(c);{let t=n(()=>e(T)||!e(w)||e(w)===e(a).original?.id);J(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);J(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=Eo(),r=z(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)},te=t=>{var n=Oo(),r=P(n),i=z(r,!0),c=I(r,2);J(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)},ne=e=>{var t=ko(),n=z(t,!0);H(e=>l(n,e),[()=>m(Q[`chat.assistant_dock.choices_applying`])]),x(e,t)},re=t=>{var n=ko(),r=z(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=Eo(),r=z(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=Ao(),r=P(n),i=z(r,!0),c=I(r,2);J(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(L,t=>{e(y)&&e(b)?t(R):e(a).status===`waiting`?t(te,1):e(a).status===`applying`?t(ne,2):e(a).status===`applied`?t(re,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 No=c(`<p class="assistant-composer-error svelte-17lqa16" role="alert"> </p>`),Po=c(`<li class="assistant-composer-chip svelte-17lqa16"><span class="assistant-composer-chip-name svelte-17lqa16"> </span> <!></li>`),Fo=c(`<ul class="assistant-composer-attachments svelte-17lqa16"></ul>`),Io=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>`),Lo=c(`<!> <input type="file" class="assistant-composer-file-input svelte-17lqa16" multiple="" tabindex="-1"/>`,1),Ro=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 zo(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),L=k(null),re=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 Ce({source:()=>{if(!m())throw Error(`Speech input is not available.`);return m()()},onText:e=>{W(ce,!0);let t=oe();t?$e(t,e):f(f()?`${f()} ${e}`:e)}});R(()=>{q.setOptions({transcribe:g(),mode:v(),handsFreeCapture:y(),vad:a.handsFreeVad})}),te(()=>q.dispose()),A(()=>{let e=w();ne(()=>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 Y(e){e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`}A(()=>{f(),V??=e(ae)?.getElement()??void 0,V&&Y(V)});async function fe(t){let n=t.currentTarget,r=n.files;if(!r||r.length===0)return;W(M,!0),W(re,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(re,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(re,null);try{let t=await n(r);W(D,[...e(D),...t],!0)}catch(e){W(re,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(L,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(L,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,Y(t)}function _e(t){W(D,e(D).filter(e=>e.id!==t),!0)}var ve={focus:se},ye=Ro(),Se=P(ye),Te=t=>{var n=No(),r=z(n,!0);H(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.send_error`],{message:e(L)})]),x(t,n)};t(Se,t=>{e(L)&&t(Te)});var Ee=I(Se,2),De=t=>{var n=No(),r=z(n,!0);H(e=>l(r,e),[()=>o(Q[`chat.assistant_composer.upload_error`],{message:e(re)})]),x(t,n)};t(Ee,t=>{e(re)&&t(De)});var Oe=I(Ee,2),ke=t=>{var r=Fo();p(r,21,()=>e(D),e=>e.id,(t,r)=>{var i=Po(),a=P(i),c=z(a,!0),u=I(a,2);{let t=n(()=>o(Q[`chat.assistant_composer.remove_attachment`],{name:e(r).name}));J(u,{type:`button`,variant:`ghost`,size:`sm`,class:`assistant-composer-chip-remove`,onclick:()=>_e(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));xe(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=Lo(),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`]));J(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=Io();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,fe),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(we(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)=>tt?.(e,t),()=>({onPressStart:()=>ge(),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));be(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());J(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(ye),T(`drop`,ye,function(...e){(a.onupload?pe:void 0)?.apply(this,e)}),T(`dragover`,ye,function(...e){(a.onupload?e=>e.preventDefault():void 0)?.apply(this,e)}),x(i,ye),r(ve)}w([`change`]);var Bo=c(`<option> </option>`);function Vo(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`]));_e(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=Bo(),i=z(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 Ho=`assistant-question`,Uo=6,Wo=50,Go=200,Ko=12,qo=(e,t=Go)=>typeof e==`string`&&e.trim()&&e.trim().length<=t?e.trim():void 0;function Jo(e){if(!e||typeof e!=`object`)return null;let t=e,n=qo(t.value),r=qo(t.label);if(!n||!r)return null;let i=qo(t.hint),a=Array.isArray(t.keywords)?t.keywords.flatMap(e=>qo(e,60)??[]).slice(0,Ko):[];return{value:n,label:r,...i?{hint:i}:{},...a.length?{keywords:a}:{}}}function Yo(e){if(!e||typeof e!=`object`)return null;let t=e,n=qo(t.name,64),r=qo(t.label);if(!n||!r||t.type!==`choice`||!Array.isArray(t.options))return null;let i=t.options.slice(0,Wo).flatMap(e=>Jo(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 Xo(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.kind!==`assistant-question`)return null;let n=qo(t.id,120),r=qo(t.prompt,500);if(!n||!r||!Array.isArray(t.fields))return null;let i=t.fields.slice(0,Uo).flatMap(e=>Yo(e)??[]);if(i.length===0)return null;let a=qo(t.submitLabel,60),o={kind:Ho,id:n,prompt:r,fields:i,...a?{submitLabel:a}:{}},s=$o(o,t.answer);return s?{...o,answer:s}:o}function Zo(e){let t=e.toolCallData,n=Array.isArray(t)?t:[t];for(let e of n){let t=Xo(e);if(t)return t}return null}function Qo(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 $o(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 es(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 ts=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 ns(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,`$1 $2`).split(/[^a-z0-9]+/).filter(e=>e&&!ts.has(e)).map(e=>e.length>3&&e.endsWith(`s`)?e.slice(0,-1):e)}function rs(e,t){let n=new Set(ns(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(ns([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 is=c(`<p class="assistant-question-summary svelte-nrkrfu" role="status"><span class="assistant-question-prompt svelte-nrkrfu"> </span> </p>`),as=c(`<option disabled=""> </option>`),os=c(`<option> </option>`),ss=c(`<!> <!>`,1),cs=c(`<label class="assistant-question-select svelte-nrkrfu"><span> </span> <!></label>`),ls=c(`<!> <div class="assistant-question-actions svelte-nrkrfu"><!></div>`,1),us=c(`<div class="assistant-question svelte-nrkrfu" data-smrt-component="AssistantQuestionForm"><!></div>`);function ds(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(Qo(a.question))),v=k(!1),y=k(null),b=k(null),C=n(()=>c()??a.question.answer??e(y)),w=n(()=>$o(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=$o(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=us(),ee=P(N),L=t=>{var n=is(),r=P(n),i=z(r,!0),o=I(r);s(n),H(e=>{l(i,a.question.prompt),l(o,` ${e??``}`)},[()=>es(a.question,e(C))]),x(t,n)},R=r=>{ye(r,{class:`assistant-question-form`,onsubmit:M,get"aria-label"(){return a.question.prompt},children:(r,i)=>{var c=ls(),u=B(c);Te(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=>{Te(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));X(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=cs(),c=P(a),u=z(c,!0),d=I(c,2);{let r=n=>{var r=ss(),a=B(r),o=e=>{var t=as(),n=z(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=os(),i=z(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]:``);_e(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)=>{ve(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]:``);Ee(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));J(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(L):t(R,-1)}),s(N),j(N,e=>W(b,e),()=>e(b)),x(i,N),r()}var fs=c(`<span class="count svelte-1d7fq8s"> </span>`),ps=c(`<span class="title svelte-1d7fq8s"> </span> <!>`,1),ms=c(`<li><!></li>`),hs=c(`<nav class="assistant-thread-list svelte-1d7fq8s" data-smrt-component="AssistantThreadList"><!> <ul class="svelte-1d7fq8s"></ul></nav>`);function gs(i,a){h(a,!0);let{t:o}=K(),c=O(a,`activeThreadId`,3,null);var u=hs(),f=P(u),m=e=>{J(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=ms(),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);J(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=ps(),s=B(a),c=z(s,!0),u=I(s,2),d=t=>{var n=fs(),r=z(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 _s(e){return e===`failed`?`error`:e===`previewing`||e===`applying`?`running`:`success`}function vs(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 ys(e){return e.effect===`read`?`run`:e.effect===`destructive`?`confirm`:e.proposal===!0?`run`:`confirm`}function bs(e,t){return e.effect===`destructive`?`confirm`:t?t(e):ys(e)}function xs(e,t=64){return e.slice(0,t).map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema,effect:e.effect}))}var Ss=`assistant_propose_action`,Cs=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}},ws=`assistant_offer_`,Ts=/^[a-z][a-z0-9_]{0,39}$/;function Es(e){return`${ws}${e}`}function Ds(e){if(typeof e!=`string`)return null;let t=e.trim();return!/^\/(?![/\\])/.test(t)||/[\u0000-\u001f\s\\]/.test(t)?null:t}function Os(e,t){return typeof e==`string`?e.trim().slice(0,t):``}function ks(e){let t=new Set,n=[];for(let r of e){let e=Os(r?.id,120),i=Os(r?.label,80);if(!e||!i||t.has(e))continue;t.add(e);let a=Os(r.description,160),o=Ds(r.imageUrl);if(n.push({id:e,label:i,...a?{description:a}:{},...o?{imageUrl:o,imageAlt:Os(r.imageAlt,120)||i}:{},...r.value===void 0?{}:{value:r.value}}),n.length>=4)break}return n}var As=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=>Ts.test(e.id))}source(e){return this.sources().find(t=>t.id===e)}tools(){return this.sources().map(e=>({name:Es(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=ks(i?.options??[]);if(o.length===0&&!a)return{id:e.id,ok:!1,error:`Nothing to offer.`};let s=a?{message:Os(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?ks(i?.original?[i.original]:[])[0]:void 0,u={id:e.id,sourceId:n,title:Os(i.title,120)||`Pick one`,options:o.filter(e=>e.id!==l?.id),status:`waiting`,...c?{previewable:!0,...l?{original:l}:{},commitLabel:Os(i.commitLabel,40)||`Use this`,cancelLabel:Os(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=ks([...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=Os(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()}},js=Object.freeze([`idempotency_in_progress`,`outcome_unknown`]);function Ms(e){return e!==void 0&&js.includes(e)}function Ns(e){return`assistant-message-${e}-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}function Ps(e){return JSON.stringify([e.kind,e.surfaceId,e.subject?[e.subject.type,e.subject.id]:null])}function Fs(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 As(()=>t.choiceSources,e=>ae({id:`choice:${e.id}`,kind:`choice`,label:e.title})),O=k(null),j=new Cs,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){R(!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 L(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 R(e){let t=M;M=null,t?.(e)}function z(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 te(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),R(!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 Cs,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,J=null,de=null,Y=!1,fe=!1,pe=!1,me=0,X=0;function ge(){let e=t.registry.list().map(e=>e.identity);if(!t.surfaces){W(p,e,!0);return}let n=new Set(e.map(e=>Ps(e)));W(p,t.surfaces.filter(e=>n.has(Ps(e))),!0)}function _e(t){return e(p).some(e=>Ps(e)===Ps(t))}function ve(e){for(let[t,n]of G)Ps(n.request.identity)===Ps(e)&&(n.status===`previewed`||n.status===`previewing`)&&G.set(t,{...n,status:`failed`,error:`AssistantDock: surface "${Ps(e)}" was unmounted before this action was applied`})}function ye(e){return e.subscribe(e=>{(e.type===`registered`||e.type===`unregistered`)&&ge(),e.type===`unregistered`&&ve(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),fe=!1,me+=1,X+=1,ke(),Ae()}function xe(){if(Y)return;let e=t.registry;e!==J&&(q?.(),J=e,q=ye(e),ge(),be())}function Se(){if(Y)return;let e=t.transport;e!==de&&(de=e,be())}function Ce(){if(Y)return;let t=e(p);ge();for(let e of t)_e(e)||ve(e)}ge(),J=t.registry,q=ye(J),de=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(Y||!o()||!e(l))return;we();let n=e(l),r=X,i;try{i=await t.transport.loadMessages(n)}catch(e){if(Y||r!==X)return;fe||(fe=!0,W(g,e instanceof Error?e.message:String(e),!0));return}Y||pe||r!==X||e(l)===n&&(fe&&(fe=!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)&&L(`done`)),!a}),!0))}function Ee(e){K&&clearInterval(K),K=Y||pe?null:setInterval(()=>void Te(),e?r:i)}function De(){Y||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(Y||e!==X)return;W(s,n,!0),W(c,!1),W(g,null)}catch(t){if(Y||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(Y||n!==X)return;W(g,e instanceof Error?e.message:String(e),!0);return}Y||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(Y||n!==me||r!==X)return;W(l,e,!0),W(u,i,!0),W(g,null)}catch(e){if(Y||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!Y&&i===X&&(W(s,[...e(s),a],!0),W(g,null)),a}catch(e){throw!Y&&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(Y||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 z(u))break;let i=await Je(n.calls,u);if(u.signal.aborted||Y||l!==X||(await Be(u),u.signal.aborted||Y||l!==X)||!await z(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)}),Y||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`),!Y&&l===X&&W(f,e(f).filter(e=>e.clientRequestId!==a),!0);return}throw Ie(u,`error`,t),!Y&&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);R(!1),n!==`discarded`&&L(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(),R(!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(!(Y||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 Z(){if(!t.actionClient)return null;let e=t.registry.list().filter(e=>_e(e.identity)&&e.actions.length>0);return e.length===0?null:{name:Ss,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
|
+
`).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 Be(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 rt(t.registry,{timeoutMs:Math.max(0,r-(n()-i)),alsoWatch:[t.pageTools],signal:e.signal})}function Ve(){let e=t.pageTools?.list()??[],n=t.clientToolFilter;return n?e.filter(e=>{try{return n(e)}catch{return!1}}):e}function He(){let e=Ve(),t=Z();return[...e,...t?[t]:[],...D.tools()]}function Ue(e,t,n){let r=He();return{...r.length>0?{clientTools:xs(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&&_e(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 it(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`&&Z()){i.push(await qe(a));continue}if(D.isChoiceTool(a.name)){i.push(await D.offerFromCall(a,r.signal));continue}let n=Ve().find(e=>e.name===a.name);if(!n||!t.pageTools){i.push({id:a.id,ok:!1,error:`not_available`});continue}let o=bs(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}),te(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?re(()=>{A(()=>{let e=oe();ne(()=>{try{t.onRun?.(e)}catch{}})})}):null,Ze=t.onStatus?re(()=>{A(()=>{let e=Ye();ne(()=>{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=$o(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(es(r,o));else try{let e=await u.call(t.transport,{threadId:s,messageId:n,questionId:r.id,values:o,clientRequestId:t.createClientRequestId?.()??Ns(s)});!Y&&c===X&&(Re(s,e),W(g,null))}catch(t){if(!Y&&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?.()??Ns(i),le.set(a,o));let s=e(_),c=X;await Pe(i,n,o,r),!Y&&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),Y||r!==X)return;W(g,null)}catch(e){if(Y||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 it(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(!_e(e.identity)){G.set(tt(e),{request:e,status:`failed`,error:`AssistantDock: surface "${Ps(e.identity)}" is not mounted`,idempotencyKey:r});return}let i;try{if(!t.actionClient)throw Error(`AssistantDock: previewAction requires an actionClient`);i=he({...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 at(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(!_e(i.request.identity))G.set(r,{...i,status:`failed`,retryable:!0,error:`AssistantDock: surface "${Ps(i.request.identity)}" is not mounted`});else try{if(!t.actionClient)throw Error(`AssistantDock: applyAction requires an actionClient`);let a=he({...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&&Ms(s.reason)}),s.ok?(ot(a,s),st(a,{status:`applied`,result:s})):Ms(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),ot(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 ot(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(){Y||(Y=!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:it,applyAction:at,rejectAction:ct,startPolling:De,stopPolling:Oe,syncRegistry:xe,syncSurfaces:Ce,syncTransport:Se,dispose:lt}}var Is=c(`<!> <div class="assistant-dock-threads svelte-d0nc1n"><!></div>`,1),Ls=c(`<p class="assistant-dock-error svelte-d0nc1n" role="alert"> <!></p>`),Rs=c(`<span> </span>`),zs=c(`<div class="assistant-dock-run svelte-d0nc1n" role="status" aria-live="polite"><span> </span> <!></div>`),Bs=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>`),Vs=c(`<div class="assistant-dock-single-actions svelte-d0nc1n"><!></div>`),Hs=c(`<p class="assistant-dock-empty svelte-d0nc1n"> </p>`),Us=c(`<div class="assistant-dock-thread-state assistant-dock-thread-loading svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p></div>`),Ws=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <div class="assistant-dock-thread-state-actions svelte-d0nc1n"><!> <!></div>`,1),Gs=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p> <!>`,1),Ks=c(`<h2 class="svelte-d0nc1n"> </h2> <p class="svelte-d0nc1n"> </p>`,1),qs=c(`<section class="assistant-dock-thread-state svelte-d0nc1n"><!></section>`),Js=c(`<div class="assistant-dock-card svelte-d0nc1n"><!></div>`),Ys=c(`<a target="_blank" rel="noopener noreferrer" class="assistant-dock-attachment-link svelte-d0nc1n"> </a>`),Xs=c(`<span class="assistant-dock-attachment-name svelte-d0nc1n"> </span>`),Zs=c(`<span class="assistant-dock-attachment-size svelte-d0nc1n"> </span>`),Qs=c(`<li class="assistant-dock-attachment svelte-d0nc1n"><!> <!></li>`),$s=c(`<ul class="assistant-dock-attachments svelte-d0nc1n"></ul>`),ec=c(`<p class="assistant-dock-message-content svelte-d0nc1n"> </p> <!>`,1),tc=c(`<div class="assistant-dock-card assistant-dock-tool-call svelte-d0nc1n"><!></div>`),nc=c(`<li class="svelte-d0nc1n"><!> <!> <!></li>`),rc=c(`<p class="assistant-dock-message-content svelte-d0nc1n"> </p>`),ic=c(`<div class="assistant-dock-streaming svelte-d0nc1n"><!></div>`),ac=c(`<!> <ul class="assistant-dock-messages svelte-d0nc1n"></ul> <!>`,1),oc=c(`<p class="assistant-dock-tool-request-warning svelte-d0nc1n"> </p>`),sc=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>`),cc=c(`<div class="assistant-dock-action-unknown svelte-d0nc1n" role="status"><p class="svelte-d0nc1n"> </p> <!></div>`),lc=c(`<li><!> <!></li>`),uc=c(`<ul class="assistant-dock-actions svelte-d0nc1n"></ul>`),dc=c(`<div class="assistant-dock-stale svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),fc=c(`<div class="assistant-dock-failed svelte-d0nc1n"><p class="svelte-d0nc1n"> </p> <!></div>`),pc=c(`<div class="assistant-dock-status svelte-d0nc1n" role="status" aria-live="polite"><span class="assistant-dock-status-label"> </span> <!></div>`),mc=c(`<div class="assistant-dock-composer-header svelte-d0nc1n"><!></div>`),hc=c(`<div class="assistant-dock-composer"><!> <!></div>`),gc=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 _c(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,`contextMode`,3,`data-surfaces`),v=O(a,`visible`,3,!0),b=O(a,`presentation`,3,`full`),C=O(a,`conversations`,3,`multiple`),w=O(a,`threadList`,3,!0),T=O(a,`composerDisabled`,3,!1),E=O(a,`sendOnPause`,3,!1),D=O(a,`speaking`,3,!1),{t:M}=K(),N=Fs({get transport(){return a.transport},get registry(){return a.registry},get actionClient(){return a.actionClient},get surfaces(){return a.surfaces},visible:()=>v(),onActionApplied:(e,t)=>a.onactionapplied?.(e,t),onActionSettled:(e,t)=>a.onactionsettled?.(e,t),initialDraft:ne(()=>a.initialDraft),get pageTools(){return a.pageTools},clientToolPolicy:e=>(a.clientToolPolicy??ys)(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 F(e){try{return JSON.stringify(e,null,2)}catch{return``}}A(()=>(ne(()=>{N.loadThreads(),N.loadModels(),N.startPolling(),a.oncontroller?.(N)}),()=>N.dispose()));let ee=n(()=>N.run?.waitingFor?.kind===`choice`||N.toolRequests.some(e=>e.status===`waiting`)||[...N.actions.values()].some(e=>e.status===`previewed`||e.outcomeUnknown));A(()=>{a.onattentionchange?.(e(ee))});let L=k(0);A(()=>{a.registry,ne(()=>{oe(L),N.syncRegistry()})}),A(()=>{a.surfaces,ne(()=>N.syncSurfaces())}),A(()=>{a.transport,ne(()=>{oe(L),N.syncTransport()})});let R=k(!1),te=`assistant-dock-threads-${c}`,re=k(void 0),V=`${te}-toggle`;function se(){if(!e(R))return;let t=typeof document<`u`&&!!e(re)?.contains(document.activeElement);W(R,!1),t&&ae().then(()=>{e(re)&&e(re).offsetParent===null&&document.getElementById(V)?.focus()})}async function G(){W(R,!0),await ae(),e(re)?.querySelector(`.assistant-thread-list-item`)?.focus()}let le=k(void 0),ue=null;function q(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 Y(){let e;for(let t of N.threads){let n=q(t);(!e||n>=e.at)&&(e={id:t.id,at:n})}return e?.id}async function pe(e=!1){let t=a.transport;ue=t;try{let n=e?void 0:Y();if(!n){if(!t.createThread){N.setError(M(Q[`chat.assistant_dock.no_conversations`]));return}n=(await N.createThread(`Conversation`)).id}if(a.transport!==t)return;await N.openThread(n)}catch{}finally{ue===t&&(ue=null)}}async function me(){N.setError(null),await N.loadThreads()}A(()=>{C()===`single`&&(N.threadsLoading||N.activeThreadId||N.error||ue!==a.transport&&ne(()=>pe()))}),A(()=>{C()===`single`&&v()&&N.activeThreadId&&ae().then(()=>e(le)?.focus())}),A(()=>{if(typeof document>`u`)return;let t=t=>{let n=t.detail;t.defaultPrevented||typeof n?.prompt!=`string`||(t.preventDefault(),N.setDraft(n.prompt),ae().then(()=>e(le)?.focus()))};return document.addEventListener(fe,t),()=>document.removeEventListener(fe,t)});async function X(){se(),N.setError(null),await pe(!0)}async function he(e){se(),await N.openThread(e)}async function ge(){se();try{let e=await N.createThread(`New conversation`);await N.openThread(e.id)}catch{}}async function _e(e,t,n){try{await N.answerQuestion(e,t,n)}catch(e){throw N.setError(e instanceof Error?e.message:String(e)),e}}async function ve(e,t){try{await N.send(e,t),N.setError(null)}catch(e){throw N.setError(e instanceof Error?e.message:String(e)),e}}async function ye(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 N.setError(null),r}catch(e){throw i()&&N.setError(e instanceof Error?e.message:String(e)),e}}async function be(e){await N.applyAction(e)}var xe=gc(),Se=P(xe),Ce=P(Se),we=t=>{var r=Is(),i=B(r);J(i,{type:`button`,variant:`ghost`,get id(){return V},class:`assistant-dock-threads-toggle`,get"aria-expanded"(){return e(R)},get"aria-controls"(){return te},onclick:()=>W(R,!e(R)),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(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?ge:void 0);gs(c,{get threads(){return N.threads},get activeThreadId(){return N.activeThreadId},onselect:he,get oncreate(){return e(t)}})}s(o),j(o,e=>W(re,e),()=>e(re)),H(()=>U(o,`id`,te)),x(t,r)};t(Ce,e=>{b()===`full`&&C()!==`single`&&w()&&e(we)});var Te=I(Ce,2),Ee=P(Te),De=e=>{var n=Ls(),r=P(n),i=I(r),a=e=>{J(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:me,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.retry_conversation`])]),x(e,n)},$$slots:{default:!0}})};t(i,e=>{C()===`single`&&!N.activeThreadId&&e(a)}),s(n),H(e=>l(r,`${e??``} `),[()=>M(Q[`chat.assistant_dock.error`],{message:N.error})]),x(e,n)};t(Ee,e=>{N.error&&e(De)});var Oe=I(Ee,2),ke=e=>{var n=zs(),r=P(n),i=z(r,!0),a=I(r,2),o=e=>{J(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>N.pauseRun(),children:(e,t)=>{_();var n=d(`Pause`);x(e,n)},$$slots:{default:!0}})},c=e=>{J(e,{type:`button`,size:`sm`,onclick:()=>N.continueRun(),children:(e,t)=>{_();var n=d(`Continue`);x(e,n)},$$slots:{default:!0}})},u=e=>{var t=Rs(),n=z(t,!0);H(()=>l(n,N.run.waitingFor.label??`Waiting for ${N.run.waitingFor.kind}`)),x(e,t)};t(a,e=>{N.run.state===`running`?e(o):N.run.state===`paused`?e(c,1):N.run.state===`waiting`&&N.run.waitingFor&&e(u,2)}),s(n),H(()=>l(i,N.run.goal)),x(e,n)};t(Oe,e=>{N.run&&(b()===`controls`||N.run.state===`paused`)&&e(ke)});var Ae=I(Oe,2),je=t=>{var r=Vs(),i=P(r);{let t=n(()=>M(Q[`chat.assistant_dock.clear_conversation`])),r=n(()=>M(Q[`chat.assistant_dock.clear_conversation`]));J(i,{type:`button`,size:`sm`,variant:`ghost`,class:`assistant-dock-clear`,onclick:X,get"aria-label"(){return e(t)},get title(){return e(r)},children:(e,t)=>{var n=Bs();x(e,n)},$$slots:{default:!0}})}s(r),x(t,r)};t(Ae,e=>{C()===`single`&&N.activeThreadId&&a.transport.createThread&&N.messages.length>0&&e(je)});var Me=I(Ae,2),Ne=e=>{var t=Hs(),n=z(t,!0);H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.no_surfaces`])]),x(e,t)};t(Me,e=>{m()===`data-surfaces`&&N.surfaces.length===0&&!a.pageTools&&e(Ne)});var Pe=I(Me,2),Fe=P(Pe),Ie=r=>{var i=ac(),c=B(i),m=e=>{var n=S(),r=B(n),i=e=>{var t=Us(),n=P(t),r=z(n,!0);s(t),H((e,n)=>{U(t,`aria-label`,e),l(r,n)},[()=>M(Q[`chat.assistant_dock.opening_conversation`]),()=>M(Q[`chat.assistant_dock.opening_conversation`])]),x(e,t)};t(r,e=>{!N.activeThreadId&&!N.error&&e(i)}),x(e,n)},h=e=>{var t=Us(),n=P(t),r=z(n,!0);s(t),H((e,n)=>{U(t,`aria-label`,e),l(r,n)},[()=>M(Q[`chat.assistant_dock.loading_conversations`]),()=>M(Q[`chat.assistant_dock.loading_conversations`])]),x(e,t)},v=e=>{var n=qs(),r=P(n),i=e=>{var n=Ws(),r=B(n),i=z(r,!0),o=I(r,2),c=z(o,!0),u=I(o,2),f=P(u);J(f,{type:`button`,get"aria-controls"(){return te},onclick:G,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.view_conversations`])]),x(e,n)},$$slots:{default:!0}});var p=I(f,2),m=e=>{J(e,{type:`button`,variant:`ghost`,onclick:ge,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(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`,`${te}-empty-title`),l(i,e),l(c,t)},[()=>M(Q[`chat.assistant_dock.choose_conversation`]),()=>M(Q[`chat.assistant_dock.choose_conversation_hint`])]),x(e,n)},o=e=>{var t=Gs(),n=B(t),r=z(n,!0),i=I(n,2),a=z(i,!0),o=I(i,2);J(o,{type:`button`,onclick:ge,children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.start_new_conversation`])]),x(e,n)},$$slots:{default:!0}}),H((e,t)=>{U(n,`id`,`${te}-empty-title`),l(r,e),l(a,t)},[()=>M(Q[`chat.assistant_dock.start_conversation`]),()=>M(Q[`chat.assistant_dock.start_conversation_hint`])]),x(e,t)},c=e=>{var t=Ks(),n=B(t),r=z(n,!0),i=I(n,2),a=z(i,!0);H((e,t)=>{U(n,`id`,`${te}-empty-title`),l(r,e),l(a,t)},[()=>M(Q[`chat.assistant_dock.no_conversations`]),()=>M(Q[`chat.assistant_dock.no_conversations_hint`])]),x(e,t)};t(r,e=>{w()&&N.threads.length>0?e(i):a.transport.createThread?e(o,1):e(c,-1)}),s(n),H(()=>U(n,`aria-labelledby`,`${te}-empty-title`)),x(e,n)};t(c,e=>{C()===`single`?e(m):!N.activeThreadId&&N.threadsLoading?e(h,1):!N.activeThreadId&&!N.error&&e(v,2)});var y=I(c,2);p(y,21,()=>N.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`?Zo(e(i)):null);var m=nc(),h=P(m),_=t=>{var n=Js(),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=ec(),o=B(a),c=z(o,!0),u=I(o,2),d=r=>{var a=$s();p(a,21,()=>e(i).attachments,e=>e.id,(r,i)=>{let a=n(()=>vs(e(i).url));var o=Qs(),c=P(o),u=t=>{var n=Ys(),r=z(n,!0);H(()=>{U(n,`href`,e(a)),l(r,e(i).name)}),x(t,n)},d=t=>{var n=Xs(),r=z(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=Zs(),r=z(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),[()=>M(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`);de(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=Js(),a=P(r);{let t=n(()=>N.answeredQuestions[`${e(i).id}:${e(d).id}`]??null),r=n(()=>e(i).id===N.messages.at(-1)?.id);ds(a,{get question(){return e(d)},get answered(){return e(t)},get autofocus(){return e(r)},onsubmit:t=>_e(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=tc(),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(y);var b=I(y,2),T=e=>{var t=ic(),n=P(t);de(n,{variant:`agent`,own:!1,children:e=>{var t=rc(),n=z(t,!0);H(()=>l(n,N.streamingText)),x(e,t)},$$slots:{default:!0}}),s(t),H(e=>U(t,`aria-label`,e),[()=>M(Q[`chat.assistant_dock.reply_in_progress`])]),x(e,t)};t(b,e=>{N.streamingText&&e(T)}),x(r,i)};t(Fe,e=>{b()===`full`&&e(Ie)});var Le=I(Fe,2);p(Le,17,()=>N.toolRequests.filter(e=>e.status===`waiting`),e=>e.id,(n,r)=>{var i=sc(),a=P(i),o=z(a,!0),c=I(a,2),u=z(c,!0),f=I(c,2),p=e=>{var t=oc(),n=z(t,!0);H(e=>l(n,e),[()=>M(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=z(h,!0),v=I(h,2),y=z(v,!0);s(m);var b=I(m,2),S=P(b);J(S,{type:`button`,size:`sm`,onclick:()=>N.approveToolRequest(e(r).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.tool_request_allow`])]),x(e,n)},$$slots:{default:!0}});var C=I(S,2);J(C,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>N.declineToolRequest(e(r).id),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(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)},[()=>M(Q[`chat.assistant_dock.tool_request_title`]),()=>M(Q[`chat.assistant_dock.tool_request_title`]),()=>M(Q[`chat.assistant_dock.tool_request_details`]),()=>F(e(r).args)]),x(n,i)});var Re=I(Le,2);Mo(Re,{get choices(){return N.choices},onchoose:(e,t)=>void N.chooseOption(e,t),ondismiss:e=>N.dismissChoices(e),onpreview:(e,t)=>void N.previewOption(e,t),oncommit:e=>void N.commitOption(e),oncancel:e=>N.cancelChoices(e)});var ze=I(Re,2),Z=r=>{var i=uc();p(i,21,()=>[...N.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=lc(),f=P(u);{let t=n(()=>({toolName:c().request.actionId,toolCallId:o(),status:_s(c().status),error:c().error})),r=n(()=>c().applyResult??(c().status===`previewed`?c().previewResult:void 0));Zn(f,{get toolCall(){return e(t)},get actionResult(){return e(r)},onconfirmaction:()=>be(o()),onrejectaction:()=>N.rejectAction(o())})}var p=I(f,2),m=t=>{var r=cc(),i=P(r),a=z(i,!0),u=I(i,2);{let t=n(()=>c().status===`applying`);J(u,{type:`button`,size:`sm`,get disabled(){return e(t)},onclick:()=>be(o()),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.action_check_again`])]),x(e,n)},$$slots:{default:!0}})}s(r),H(e=>l(a,e),[()=>M(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(ze,e=>{N.actions.size>0&&e(Z)});var Be=I(ze,2),Ve=t=>{var n=dc(),r=P(n),i=z(r,!0),a=I(r,2);p(a,17,()=>N.pendingSends.filter(e=>e.status===`stale`),e=>e.clientRequestId,(t,n)=>{J(t,{type:`button`,size:`sm`,onclick:()=>N.retry(e(n).clientRequestId),children:(t,r)=>{_();var i=d();H(e=>l(i,e),[()=>M(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),x(t,i)},$$slots:{default:!0}})}),s(n),H(e=>l(i,e),[()=>M(Q[`chat.assistant_dock.taking_longer`])]),x(t,n)},He=n(()=>N.pendingSends.some(e=>e.status===`stale`));t(Be,t=>{e(He)&&t(Ve)});var Ue=I(Be,2),We=t=>{var n=fc(),r=P(n),i=z(r,!0),a=I(r,2);p(a,17,()=>N.pendingSends.filter(e=>e.status===`failed`),e=>e.clientRequestId,(t,n)=>{J(t,{type:`button`,size:`sm`,onclick:()=>N.retry(e(n).clientRequestId),children:(t,r)=>{_();var i=d();H(e=>l(i,e),[()=>M(Q[`chat.assistant_dock.retry`],{content:e(n).content})]),x(t,i)},$$slots:{default:!0}})}),s(n),H(e=>l(i,e),[()=>M(Q[`chat.assistant_dock.send_failed`])]),x(t,n)},Ge=n(()=>N.pendingSends.some(e=>e.status===`failed`));t(Ue,t=>{e(Ge)&&t(We)}),s(Pe);var Ke=I(Pe,2),qe=e=>{var n=pc(),r=P(n),i=z(r,!0),a=I(r,2),o=e=>{J(e,{type:`button`,size:`sm`,variant:`ghost`,onclick:()=>N.cancel(),children:(e,t)=>{_();var n=d();H(e=>l(n,e),[()=>M(Q[`chat.assistant_dock.stop`])]),x(e,n)},$$slots:{default:!0}})};t(a,e=>{N.status.cancellable&&e(o)}),s(n),H(()=>l(i,N.status.label)),x(e,n)};t(Ke,e=>{N.status.state===`working`&&e(qe)});var Je=I(Ke,2),Ye=r=>{var i=hc(),o=P(i),c=t=>{var r=mc(),i=P(r);{let t=n(()=>N.selectedModel??N.models[0].id);Vo(i,{get models(){return N.models},get value(){return e(t)},onchange:e=>N.setSelectedModel(e)})}s(r),x(t,r)};t(o,e=>{N.models.length>0&&e(c)});var l=I(o,2);ce(l,()=>e(L),t=>{var r=()=>N.draft,i=e=>N.setDraft(e);{let o=n(()=>a.transport.uploadAttachment?ye:void 0),s=n(()=>!N.activeThreadId||T());j(zo(t,{get value(){return r()},set value(e){i(e)},onsend:ve,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 E()},get sendOnPauseMs(){return a.sendOnPauseMs},get speaking(){return D()}}),e=>W(le,e,!0),()=>e(le))}}),s(i),x(r,i)};t(Je,e=>{b()===`full`&&e(Ye)}),s(Te),s(Se),s(xe),H(()=>U(Se,`data-threads-open`,e(R)||void 0)),x(i,xe),r()}Z.registerModule(Fn),Z.register(`@happyvertical/smrt-chat`,`chat-layout`,Di),Z.register(`@happyvertical/smrt-chat`,`room-list`,Ti),Z.register(`@happyvertical/smrt-chat`,`room-header`,qi),Z.register(`@happyvertical/smrt-chat`,`member-list`,zi),Z.register(`@happyvertical/smrt-chat`,`message-list`,xa),Z.register(`@happyvertical/smrt-chat`,`message-item`,_a),Z.register(`@happyvertical/smrt-chat`,`message-input`,Zi),Z.register(`@happyvertical/smrt-chat`,`thread-panel`,Ta),Z.register(`@happyvertical/smrt-chat`,`chat-tabs`,vo),Z.register(`@happyvertical/smrt-chat`,`chat-tab`,uo),Z.register(`@happyvertical/smrt-chat`,`chat-tab-list`,go),Z.register(`@happyvertical/smrt-chat`,`mini-chat`,io),Z.register(`@happyvertical/smrt-chat`,`agent-chat`,dr),Z.register(`@happyvertical/smrt-chat`,`agent-selector`,gr),Z.register(`@happyvertical/smrt-chat`,`agent-session-panel`,wr),Z.register(`@happyvertical/smrt-chat`,`tool-call-display`,Zn),Z.register(`@happyvertical/smrt-chat`,`heard-captions`,Mr),Z.register(`@happyvertical/smrt-chat`,`spoken-captions`,Ir),Z.register(`@happyvertical/smrt-chat`,`avatar`,In),Z.register(`@happyvertical/smrt-chat`,`file-upload`,ja),Z.register(`@happyvertical/smrt-chat`,`link-preview`,Ia),Z.register(`@happyvertical/smrt-chat`,`mention-autocomplete`,za),Z.register(`@happyvertical/smrt-chat`,`message-bubble`,de),Z.register(`@happyvertical/smrt-chat`,`reaction-picker`,Qi),Z.register(`@happyvertical/smrt-chat`,`read-receipts`,Ja),Z.register(`@happyvertical/smrt-chat`,`typing-indicator`,Y),Z.register(`@happyvertical/smrt-chat`,`user-presence`,Za),Z.register(`@happyvertical/smrt-chat`,`room-create-dialog`,Br),Z.register(`@happyvertical/smrt-chat`,`search-messages`,Zr),Z.register(`@happyvertical/smrt-chat`,`caption-overlay`,Or),Z.register(`@happyvertical/smrt-chat`,`helper-control-panel`,li);function vc(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:[...Fe]},primary:{type:`string`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`]},borderRadius:{enum:[...Ie]},density:{enum:[...Re]},contrast:{enum:[...ze]}},additionalProperties:!1}),i.length&&(c.open={enum:[...i,null]}),a.length&&(c.report=Je(a)),{type:`object`,properties:c,required:[`reply`,`add`,`remove`],additionalProperties:!1}}function yc(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();He.has(e)&&(t.currency=e)}let r=n.taxRate;if(typeof r==`number`&&Number.isFinite(r)&&r>=0&&r<=100&&(t.taxRate=r),typeof n.paymentTerms==`string`){let e=[...n.paymentTerms].map(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127?` `:e).join(``).trim();e&&e.length<=40&&(t.paymentTerms=e)}return typeof n.pricesIncludeTax==`boolean`&&(t.pricesIncludeTax=n.pricesIncludeTax),(n.taxRounding===`line`||n.taxRounding===`document`)&&(t.taxRounding=n.taxRounding),t}function bc(e){let t={};if(!e||typeof e!=`object`||Array.isArray(e))return t;let n=e;typeof n.preset==`string`&&Fe.includes(n.preset)&&(t.preset=n.preset);let r=Me(n.primary);return r&&(t.primary=r),(n.colorScheme===`light`||n.colorScheme===`dark`||n.colorScheme===`system`)&&(t.colorScheme=n.colorScheme),Ie.includes(n.borderRadius)&&(t.borderRadius=n.borderRadius),Re.includes(n.density)&&(t.density=n.density),ze.includes(n.contrast)&&(t.contrast=n.contrast),t}function xc(e){return e.replace(/<think>[\s\S]*?<\/think>/gi,``).replace(/<think>[\s\S]*$/i,``).trim()}function Sc(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 Cc(e,t,n=[],r={}){let i=new Set(t.map(e=>e.id)),a=xc(e),o=e=>({reply:e,add:[],remove:[],cookbook:null,settings:{},theme:{}}),s=/^[\s`]*[{[]/.test(a)||/"reply"\s*:/.test(a),c=()=>o(s?Sc(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?wc(u.commands):[],g=r.reports?Ye(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:yc(u.settings),theme:bc(u.theme),...h.length?{commands:h}:{},...typeof u.open==`string`&&r.sections?.includes(u.open)?{open:u.open}:{},...g?{report:g}:{}}}function wc(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(t.length>=8)break;if(!n||typeof n!=`object`)continue;let{name:e,input:r}=n;typeof e==`string`&&t.push({name:e,input:r??{}})}return t}function Tc(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(` `)}var Ec={name:10,synonym:6,keyword:4},Dc=1.5,Oc=new Set([`a`,`an`,`and`,`the`,`of`,`for`,`to`,`in`,`on`,`or`,`general`,`simple`]),kc=[`car`,`vehicle`,`metal`,`steel`,`gates`,`studio`,`classes`,`members`,`shop`,`order`,`item`,`material`,`customer`,`sales`,`stock`,`schedule`,`terms`];function Ac(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 jc(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(Ac).join(` `)}var Mc=new Set(kc.map(jc)),Nc={"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 Pc(e,t){let n=jc(e);if(!n)return null;let r=n.split(` `);return r.length===1&&Oc.has(n)?null:{text:n,tier:t,weak:t!==`name`&&r.every(e=>Mc.has(e)),words:r.length}}function Fc(e,t,n){let r=Pc(t,n);if(!r)return;let i=e.terms.find(e=>e.text===r.text);i?Ec[r.tier]>Ec[i.tier]&&(i.tier=r.tier,i.weak=r.weak):e.terms.push(r)}function Ic(e){return jc(e).split(` `).filter(e=>e&&!Oc.has(e))}var Lc=[`theme`,`colour`,`color`,`colour scheme`,`dark mode`,`light mode`,`brand`,`branding`,`style`,`warmer`,`cooler`,`font`];function Rc(e,t=[],n={}){let r=[];for(let t of e){let e={kind:`recipe`,id:t.id,terms:[],exact:jc(t.label)};Fc(e,t.label,`name`),Fc(e,(t.id.split(`.`).pop()??``).replace(/[-_]/g,` `),`name`);for(let n of Ic(t.label))Fc(e,n,`synonym`);for(let n of t.synonyms)Fc(e,n,`synonym`);for(let n of Nc[t.id]??[])Fc(e,n,`keyword`);r.push(e)}for(let e of t){let t={kind:`cookbook`,id:e.id,terms:[],exact:jc(e.name)};Fc(t,e.name,`name`),Fc(t,e.id.replace(/[-_]/g,` `),`name`);for(let n of e.keywords??[])Fc(t,n,`keyword`);r.push(t)}if(n.theme){let e={kind:`theme`,id:`theme`,terms:[]};for(let t of Lc)Fc(e,t,`keyword`);r.push(e)}return{entries:r}}function zc(e,t){let n=jc(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+=Ec[n.tier]*(n.words>1?Dc: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 Bc=5,Vc=2,Hc=[{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 Uc(e,t,n,r,i=new Set){return Hc.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 Wc=`reports.runtime`;function Gc(e){return`${Number((e*100).toFixed(4))}%`}function Kc(e,t,n=[],r,i,a,o=[],s=[],c){let l=i!==void 0,u=(i??[]).filter(e=>e.kind===`recipe`).slice(0,Bc).map(e=>e.id),d=(i??[]).filter(e=>e.kind===`cookbook`).slice(0,Vc).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.`];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 ${Wc} (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 ${Wc} (Reports): add it, and open only its section, never another. You cannot build the report itself here.`);let g=Uc(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 ${Gc(r.taxRate)}${e}${t}${n}.`)}return a&&h.push(`Theme: ${Pe(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
|
+
`)}var qc=`Plan your app`,Jc=`What would you like to build?`,Yc=400,Xc=e=>Object.keys(e).length>0;function Zc(e,t,n){let r=e.run({name:t,input:n});return r.ok?{summary:r.receipt.summary,undoId:r.receipt.undoId}:{summary:``}}var Qc=(e,t,n)=>Zc(e,t,n).summary;function $c(e,t){let n=[];for(let r of t){let t=e.run(r);if(!t.ok){n.push(`The server's ${r.name} was refused: ${t.error.message}`);break}t.receipt.summary&&n.push(t.receipt.summary)}return n.join(` `)}var el=`Nothing in the app changed.`,tl=`Building a report needs the planner app and its sample records; it will live under Reports.`,nl=`reports.runtime.define`;function rl(e,t){return{kind:Ho,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 il(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 al=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(`.`)),ol=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 sl(e,t,n){let r=rs(t,n);if(!r)return;let i=new Set(e.options.flatMap(e=>ol([e.label,e.value,...e.keywords??[]].join(` `)))),a=Xe(n,new Date)!==null;if(ol(n).filter(e=>!i.has(e)&&!al.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 cl=(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 ll(e,t){return`Here is a preview of ${e} (${t} ${t===1?`row`:`rows`}). Approve it to save it under Saved reports.`}var ul=`item:reports:RuntimeReport`;function dl(e,t,n){return t||(n||e.trim().endsWith(`?`)?e:[e,el].filter(Boolean).join(` `))}function fl(e,t,n){let r=n.find(e=>e.id===t)?.label??t,i=e.run({name:`focus`,input:{section:t}});return i.ok?`Opened ${r}.`:`Could not open ${r}: ${i.error.message}`}function pl(e,t){let n=t.add.length?e.run({name:`add_recipes`,input:{ids:t.add}}):null,r=t.remove.length?e.run({name:`remove_recipes`,input:{ids:t.remove}}):null,i=n?.ok?n.receipt.changes?.added??[]:[],a=r?.ok?r.receipt.changes?.removed??[]:[];return{added:i.filter(e=>!a.includes(e)),removed:a.filter(e=>!i.includes(e)),kept:r?.ok?r.receipt.changes?.kept??[]:[]}}function ml(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=null,c=null,l=0;async function u(t,n,r,i){let a=await t.define(n,r);if(a.ok)return c=null,{added:e.store.ids.includes(`reports.runtime`)?[]:pl(h,{add:[Wc],remove:[]}).added,ref:{name:nl,phase:`preview`,result:a.proposal},text:ll(a.proposal.spec.title,a.proposal.preview.rowCount)};let o=a.followUp;if(!o)return c=null,{added:[],text:a.question};if(i&&cl(i,o)){let e=o.options.find(e=>e.value===o.default);if(e){let i=await u(t,il(n,e.apply),r,o);return{...i,text:`I went with ${e.label}. ${i.text}`}}}let s=rl(o,`report-${++l}`);return c={intent:n,followUp:o,question:s,text:r},{added:[],ref:s,text:o.prompt}}function d(e,t){let n=t[e.field],r=Array.isArray(n)?n[0]:n;return e.options.find(e=>e.value===r)}async function f(t,n,r=``){let i=c;if(!i)return{content:``};let a=await u(t,il(i.intent,n.apply),`${i.text} ${r}`.trim(),i.followUp),o=[Tc({added:a.added,removed:[],kept:[]},e.recipes),a.text].filter(Boolean).join(` `);return o&&e.onReply?.(o),{content:o,refs:a.ref}}let p=()=>e.recipes.some(e=>e.id===`reports.runtime`)?e.reports?.()??null:null,m=(e,n,o,s)=>{let c={id:r(`m`),threadId:i.id,content:n,role:e,createdAt:new Date(t()),...o?{clientRequestId:o}:{}};return s&&(c.toolCallData=s),a.push(c),i.messageCount=a.length,i.lastMessageAt=c.createdAt,c},h=e.controller??Ue({store:e.store,settings:e.settings,theme:e.theme}),g=Rc(e.recipes,e.cookbooks??[],{theme:!!e.theme}),_=m(`assistant`,Jc);async function v(t){let n=c?p():null;if(c&&n){let e=sl(c.followUp,c.question,t);if(e)return f(n,e,t)}let r=e.model();if(!r)return{content:(typeof e.unavailable==`function`?e.unavailable():e.unavailable)??`Download a model first, then I can help. The cards on the Planner page work without one.`};s=new AbortController;try{let n=e.cookbooks??[],i=a.filter(e=>e!==_).slice(0,-1).slice(-6).map(e=>({role:e.role,content:e.content})),o=zc(g,t),d=e.menu?.()??[],f=p(),m=f?.sources()??[],v=c,y=Cc(await r.message(t,{history:[{role:`system`,content:Kc(e.recipes,e.store.ids,n,e.settings?.read(),o,e.theme?{current:e.theme.read()}:void 0,d,m.map(({id:e,label:t})=>({id:e,label:t})),v?{source:v.intent.source,prompt:v.followUp.prompt,options:v.followUp.options.map(e=>e.label)}:void 0)},...i],responseSchema:vc(e.recipes,n,!!e.settings,!!e.theme,d.map(e=>e.id),m.map(e=>e.id)),temperature:0,maxTokens:Yc,signal:s.signal}),e.recipes,n,{commands:typeof e.acceptCommands==`function`?e.acceptCommands():e.acceptCommands,sections:d.map(e=>e.id),reports:m.length>0});y.report&&(y.add=[],y.remove=[],delete y.open);let b=pl(h,y),x=e.settings&&Xc(y.settings)?Qc(h,`set_settings`,y.settings):``,S=e.theme?.read(),C=e.theme&&Xc(y.theme)?Zc(h,`set_theme`,y.theme):null,w=C?.undoId&&e.themeUndos?e.themeUndos.record(S,C.undoId):void 0,T=(y.commands??[]).length?$c(h,y.commands??[]):``,E=o.some(e=>e.kind===`recipe`&&e.id===`reports.runtime`),D=h.snapshot().sections.find(e=>e.items.some(e=>e.id===ul))?.id,O=y.open&&(!E||y.open===D)?y.open:void 0,k=O?fl(h,O,d):``,A=``,j,M=null,N=t;v&&y.report?(M=il(v.intent,y.report),N=`${v.text} ${t}`):y.report&&(M=y.report);let P=b.added.length>0||b.removed.length>0||!!x||!!C?.summary||!!T||!!k||!!y.cookbook;if(f&&M){let e=await u(f,M,N,v?.followUp??null);b.added.push(...e.added),A=e.text,j=e.ref}else if(f&&v&&!P){let e=v.followUp.options.find(e=>e.value===v.followUp.default);if(e){let t=await u(f,il(v.intent,e.apply),v.text,v.followUp);b.added.push(...t.added),A=`I went with ${e.label}. ${t.text}`,j=t.ref}}else v&&(c=null);let F=[Tc(b,e.recipes),x,C?.summary??``,T,k].filter(Boolean).join(` `);if((E||b.added.includes(`reports.runtime`))&&!y.report&&!v&&!k&&!b.removed.length){let e=f?Ge(m):null;if(e){let n=rl(e,`report-${++l}`);c={intent:{source:``},followUp:e,question:n,text:t},A=e.prompt,j=n}else A=f?qe(m):tl}let I=[F,A].filter(Boolean).join(` `),ee=o.find(e=>e.kind===`cookbook`&&e.confidence===`strong`)?.id,L=y.cookbook??(ee&&e.offers?.engaged?.()===!1?ee:null),R=L?e.offers?.offer(L)??void 0:void 0,z=R?n.find(e=>e.id===L):void 0,te=dl(y.reply||(z?`Set up ${z.name}?`:``),I,!!R);te&&e.onReply?.(te);let ne=[R,w,j].filter(Boolean);return{content:te,refs:ne.length>1?ne:ne[0]}}catch(e){return s?.signal.aborted?{content:`Stopped.`}:{content:`Sorry, the model could not answer: ${e instanceof Error?e.message:String(e)}`}}finally{s=null}}return{async listThreads(){return[i]},async createThread(){return i},async loadMessages(){return[...a]},async sendMessage(e){let t=o.get(e.clientRequestId);if(t)return t;let n=m(`user`,e.content,e.clientRequestId),r=await v(e.content),i={inProgress:!1,userMessage:n,assistantMessage:m(`assistant`,r.content,void 0,r.refs)};return o.set(e.clientRequestId,i),i},async answerQuestion(e){let t=o.get(e.clientRequestId);if(t)return t;let n=p();if(!c||!n||c.question.id!==e.questionId)throw Error(`That question is no longer open. Ask again?`);let r=$o(c.question,e.values),i=r?d(c.followUp,r):void 0;if(!r||!i)throw Error(`Choose one of the options.`);let s=a.find(t=>t.id===e.messageId);if(s){let t=t=>{let n=t;return n?.kind===`assistant-question`&&n.id===e.questionId?{...n,answer:r}:t};s.toolCallData=Array.isArray(s.toolCallData)?s.toolCallData.map(t):t(s.toolCallData)}let l=await f(n,i),u={inProgress:!1,...s?{messages:[s]}:{},assistantMessage:m(`assistant`,l.content,void 0,l.refs)};return o.set(e.clientRequestId,u),u},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)}}},async uploadAttachment(e){throw Error(`The assistant cannot take attachments (${e.name}).`)},abort(){s?.abort()}}}function hl(e,t){return/^qwen3/i.test(t)?{message:(t,n)=>e.message(`${t} /no_think`,n)}:e}var gl=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;offers=new On(Qe);themeUndos;reports=null;loaded=null;chat=null;abort=null;loadGeneration=0;options;constructor(e){this.options=e,this.prefs=jn(e.storage),this.status=(e.webgpu??_n)()?`idle`:`unsupported`,this.themeUndos=e.theme?new Pn(e.theme,e.controller):null,this.transport=ml({model:()=>this.chat,store:e.store,recipes:e.recipes,cookbooks:Ze,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??_n)()?`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){Ut(e)&&this.status!==`loading`&&(this.prefs={...this.prefs,modelId:e},Mn(this.options.storage,this.prefs))}async start(){if(this.status===`loading`||this.status===`unsupported`)return;let e=this.prefs.modelId;if(!Ut(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 En(e,e=>{this.progress=e},t.signal,this.options.host??Tn);if(n!==this.loadGeneration||this.mode!==`browser`){r.dispose();return}this.loaded=r,this.prefs={...this.prefs,consented:[...new Set([...this.prefs.consented,e])]},Mn(this.options.storage,this.prefs),this.chat=hl(new bn({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`)}},_l=[{id:`moonshine-base`,label:`Moonshine base`,note:`Accurate and still quick, best for talking as you go (default)`,adapter:`moonshine`,bytes:Oe[`moonshine-base`]?.bytes??0},{id:`moonshine-tiny`,label:`Moonshine tiny`,note:`Fastest, less accurate`,adapter:`moonshine`,bytes:Oe[`moonshine-tiny`]?.bytes??0},{id:`whisper-tiny.en`,label:`Whisper tiny`,note:`English, the original choice`,adapter:`whisper-local`,bytes:Oe[`whisper-tiny.en`]?.bytes??0}],vl=`moonshine-base`;function yl(e){return _l.find(t=>t.id===e)??_l[0]}var bl=`smrt-planner:voice:v1`;function xl(e){try{let t=e?.getItem(bl);if(t){let e=JSON.parse(t),n=e.local===!0,r=_l.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:vl}}function Sl(e,t){try{e?.setItem(bl,JSON.stringify(t))}catch{}}function Cl(e){return xl(e).local}function wl(e,t){Sl(e,{...xl(e),local:t})}function Tl(e){return xl(e).preferLocal}function El(e){return xl(e).model}function Dl(e,t,n){return e===`works`?`browser`:t&&n?`enable-cached`:`offer`}var Ol=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(vl);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??it)();if(e!==this.generation)return;this.browserWorks=t===`works`,this.preferLocal=Tl(this.options.storage),this.model=El(this.options.storage);let n=this.preferLocal&&t===`works`?`unreliable`:t;if(n===`works`){this.dictation=(this.options.browserSource??(()=>De({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,Dl(n,Cl(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;wl(this.options.storage,!0),this.cached=!0;let r=yl(this.model);this.dictation=(this.options.localSource??((e,t)=>De({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&&_l.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,Sl(this.options.storage,{...xl(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}},kl=[`json_schema`,`json_object`,`none`],Al=12e4;function jl(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 Ml(e){let t=e.toLowerCase().replace(/^\[|\]$/g,``);return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t)}function Nl(e){try{let t=new URL(e.trim());return t.protocol===`https:`||t.protocol===`http:`&&Ml(t.hostname)}catch{return!1}}function Pl(e){try{return new URL(e.trim()).origin}catch{return null}}var Fl=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`EndpointError`}};function Il(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 Ll(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 Fl(`the endpoint sent no reply text`)}function Rl(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 zl(e){let t=jl(e.baseUrl);if(!t)throw new Fl(`the address is not a valid http(s) URL`);if(e.apiKey&&!Nl(t))throw new Fl(`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,kl.indexOf(e.jsonMode??`json_schema`));async function a(t,i){let a=AbortSignal.timeout(Al);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 Fl(`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?kl[i]??`none`:`none`,s=Rl(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),Ll(await c.json().catch(()=>null));if(r&&(c.status===400||c.status===422)&&i<kl.length-1)i+=1;else throw new Fl(Il(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 Bl(e){try{return{ok:!0,message:(await zl({...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 Fl?`Could not connect: ${e.message}.`:`Could not connect.`}}}var Vl=[{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 Hl(e){if(!e?.length)return[...Vl];let t=[];for(let n of e){let e=typeof n==`string`?Vl.find(e=>e.id===n):n;e&&!t.some(t=>t.id===e.id)&&t.push(e)}return t.length?t:[...Vl]}var Ul=`smrt-planner:inference:v1`,Wl=`smrt-planner:inference-key:v1`,Gl=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function Kl(e){let t={preset:``,active:!1,entries:{}};try{let n=e?.getItem(Ul);if(!n)return t;let r=JSON.parse(n);if(!Gl(r))return t;typeof r.preset==`string`&&(t.preset=r.preset),t.active=r.active===!0;let i=!1;if(Gl(r.entries)){for(let[e,n]of Object.entries(r.entries))if(Gl(n)&&typeof n.baseUrl==`string`&&typeof n.model==`string`){let r=jl(n.baseUrl)??``;i||=r!==n.baseUrl,t.entries[e]={baseUrl:r,model:n.model}}}i&&(t.active=!1,e?.setItem(Ul,JSON.stringify(t)))}catch{}return t}function ql(e){let t={};try{let n=e?.getItem(Wl),r=n?JSON.parse(n):null;if(Gl(r))for(let[e,n]of Object.entries(r))Gl(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 Jl=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(Wl)}catch{}this.presets=Hl(e.presets);let t=Kl(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===Pl(this.baseUrl)?e.key:``}get keyForOtherAddress(){let e=this.keys[this.presetId];return!!e&&e.origin!==Pl(this.baseUrl)}get complete(){let e=jl(this.baseUrl);return!!e&&!!this.model.trim()&&(!!this.preset?.keyless||!!this.key.trim()&&Nl(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=Pl(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=jl(this.baseUrl);return e?zl({baseUrl:e,model:this.model.trim(),apiKey:this.preset?.keyless?void 0:this.key,fetch:this.options.fetch}):null}async test(){let e=jl(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&&!Nl(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 Bl({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:jl(t.baseUrl)??``,model:t.model}])),t={preset:this.presetId,active:this.active,entries:e};this.options.storage?.setItem(Ul,JSON.stringify(t)),this.credentialStorage?.setItem(Wl,JSON.stringify(this.keys))}catch{}}};function Yl(e,t,n,r=`local`){let i=Kl(e);if(!i.active)return null;let a=Hl(t).find(e=>e.id===i.preset),o=i.entries[i.preset],s=jl(o?.baseUrl??a?.baseUrl??``),c=(o?.model??a?.model??``).trim(),l=ql(r===`memory`?null:e)[i.preset],u=l&&l.origin===Pl(s??``)?l.key:``;return!a||!s||!c||!a.keyless&&(!u||!Nl(s))?null:zl({baseUrl:s,model:c,apiKey:a.keyless?void 0:u,fetch:n})}var Xl=`my-app`;function Zl(e){return(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function Ql(e){return`${Zl(e)||`my-app`}.cookbook.json`}function $l(e){return new TextEncoder().encode(tu(e)).length}function eu(e){if(e<1e3)return`${e} bytes`;let t=e/1024;return`${t<10?t.toFixed(1):Math.round(t)} KB`}function tu(e){return`${JSON.stringify(e,null,2)}\n`}function nu(e,t){let n=URL.createObjectURL(new Blob([tu(e)],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=Ql(t),document.body.append(r),r.click(),r.remove(),URL.revokeObjectURL(n)}var ru=`x-kitchen-token`,iu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function au(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 ou(e){if(!iu(e))return;let{endpoint:t}=e;if(au(t))return{endpoint:t.trim(),...Object.hasOwn(e,`token`)?{tokenInConfig:!0}:{}}}var su=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[];async function cu(e,t,n=fetch){let r;try{r=await n(e.endpoint,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`,[ru]:e.token},body:tu(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&&iu(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:su(i.added),nextSteps:su(i.nextSteps)}};let a=iu(i)?su(i.errors):[];return iu(i)&&typeof i.error==`string`&&a.push(i.error),{ok:!1,errors:a.length?a:[`The kitchen answered ${r.status}.`]}}var lu=[`manual`,`browser`,`host`,`byo`],uu={mode:`browser`},du={mode:`manual`},fu=`planner.config.json`,pu=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function mu(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 hu(e){if(!pu(e))return null;let{id:t,label:n,baseUrl:r,model:i,keyless:a,cors:o}=e;return typeof t!=`string`||!/^[a-z0-9][a-z0-9-]{0,31}$/.test(t)||typeof n!=`string`||!n.trim()||!mu(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 gu=e=>({config:du,notice:`The assistant settings could not be used (${e}), so inference is off. The planner still works manually.`});function _u(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`||!lu.includes(r)||r===t||n.includes(r))return null;n.push(r)}return n}function vu(e){if(e===void 0)return{};if(!pu(e))return null;if(e.presets===void 0)return{};if(!Array.isArray(e.presets)||e.presets.length===0)return null;let t=[];for(let n of e.presets){if(typeof n==`string`&&n.trim()){t.push(n.trim());continue}let e=hu(n);if(!e)return null;t.push(e)}return{presets:t}}function yu(e){if(!pu(e))return gu(`not an object`);let t=e.inference;if(t===void 0)return{config:uu};if(!pu(t))return gu(`"inference" is not an object`);let n=t.mode;if(n===void 0)return{config:uu};if(!lu.includes(n))return gu(`unknown mode "${String(n)}"`);let r=n,i=_u(t.alternatives,r);if(!i)return gu(`alternatives must be unique supported modes other than mode`);let a=t.credentialPersistence;if(a!==void 0&&a!==`local`&&a!==`memory`)return gu(`credentialPersistence must be "local" or "memory"`);let o=[r,...i],s;if(o.includes(`host`)){let e=t.host;if(!pu(e)||!mu(e.endpoint))return gu(`host mode needs host.endpoint, an http(s) URL or path`);s={endpoint:e.endpoint.trim()}}let c;return o.includes(`byo`)&&(c=vu(t.byo)??void 0,!c)?gu(`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 bu(e){try{let t=JSON.parse(e),n=yu(t),r=pu(t)?ou(t.kitchen):void 0;return r?{...n,kitchen:r}:n}catch{return gu(`it is not valid JSON`)}}function xu(e){return yu({inference:e})}async function Su(e=``,t=fetch){let n;try{n=await t(`${e.replace(/\/$/,``)}/${fu}`,{headers:{accept:`application/json`},cache:`no-cache`})}catch{return{config:uu}}if(n.status===404)return{config:uu};if(!n.ok)return gu(`the file answered ${n.status}`);let r=await n.text();return/^\s*</.test(r)?{config:uu}:bu(r)}var Cu=1e3,wu=2e3,Tu=6e4,Eu=(e,t)=>e.length>t?e.slice(0,t):e;function Du(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:Eu(e.content,Cu)})),a={version:1,message:Eu(n,wu),snapshot:e.snapshot(),...i.length?{history:i}:{}},o=AbortSignal.timeout(Tu),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 Ou(e){return[ku(e.think),ju(e.hear),Mu(e.speak)]}function ku(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{...Au(e),where:`In browser`}}function Au(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 ju(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 Mu(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 Nu(e){return e.dismissed||e.built?!1:!(e.thinkDownloaded||e.hearDownloaded||e.readAloud)}var Pu=`smrt-planner:ai:v1`;function Fu(e){let t={dismissed:!1,readAloud:!1,handsFree:!1,sendOnPause:!1};try{let n=e?.getItem(Pu);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 Iu(e,t){try{e?.setItem(Pu,JSON.stringify(t))}catch{}}var Lu=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(uu));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 gl({...e.session,storage:e.storage,onReply:e=>this.speak(e)}),this.voice=new Ol({...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=Fu(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 Jl({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??Ue({store:t,settings:n,theme:r});this.session.useRemote(Du({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`&&Nu({thinkDownloaded:this.session.prefs.consented.length>0||this.session.status===`ready`,hearDownloaded:Cl(this.options.storage),readAloud:this.prefs.readAloud,dismissed:this.prefs.dismissed,built:this.builtAtHydrate})}get capabilities(){let e=Ut(this.session.prefs.modelId),t=this.hydrated;return Ou({think:{status:t?this.session.status:`idle`,model:e?Gt(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,Iu(this.options.storage,e)}}({storage:Ne(),session:{store:Ve,recipes:Be,controller:Ke,settings:{read:()=>Le.settings(),write:e=>Le.setSettings(e)},theme:{read:()=>Le.snapshot().theme,write:e=>Le.setTheme(e)},menu:()=>We.openSection?Ke.snapshot().sections.filter(e=>!e.hidden).map(({id:e,label:t})=>({id:e,label:t})):[]},voice:{createModel:Bt}}),Ru=`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`,zu=`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`,Bu=`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{Gt as A,Dn as C,Ut as D,Wt as E,it as M,Jt as O,Nn as S,Kt as T,_l as _,Du as a,_c as b,cu as c,Ql as d,$l as f,Yl as g,Zl as h,Lu as i,zt as j,qt as k,Xl as l,tu as m,Bu as n,xu as o,eu as p,Ru as r,Su as s,zu as t,nu as u,yl as v,Ht as w,Pn as x,ml as y};
|