@happyvertical/smrt-planner 0.57.12 → 0.57.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -0
- package/agents/assistant.md +49 -0
- package/agents/commands.md +2 -2
- package/agents/cookbook.md +3 -1
- package/agents/shell.md +9 -7
- package/app/404.html +21 -21
- package/app/_app/immutable/assets/2.D3Ee82Nk.css +1 -0
- package/app/_app/immutable/assets/AppShell.Y0ysizZK.css +1 -0
- package/app/_app/immutable/assets/{icons.BDx21rPt.css → icons.DFiHs25V.css} +1 -1
- package/app/_app/immutable/chunks/4U_CvE-d.js +16 -0
- package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
- package/app/_app/immutable/chunks/BLDKU4g5.js +1 -0
- package/app/_app/immutable/chunks/{_CcVkMEQ.js → BOSl48rY.js} +1 -1
- package/app/_app/immutable/chunks/{DbH3RuTE.js → Ba61AwfI.js} +1 -1
- package/app/_app/immutable/chunks/{DU3stPaX.js → BfEjkvw8.js} +1 -1
- package/app/_app/immutable/chunks/Bl9jYcfy.js +1 -0
- package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
- package/app/_app/immutable/chunks/BttZBU_f.js +10 -0
- package/app/_app/immutable/chunks/By9nPosf.js +1 -0
- package/app/_app/immutable/chunks/{2dmW8nz3.js → C8mMXUIO.js} +2 -2
- package/app/_app/immutable/chunks/{BQgbhyQu.js → C9ckpR0C.js} +1 -1
- package/app/_app/immutable/chunks/{D4791-Ex.js → CB4gakCD.js} +1 -1
- package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
- package/app/_app/immutable/chunks/{BCvXlTRf.js → CvjuXdyt.js} +1 -1
- package/app/_app/immutable/chunks/CxSE8nQW.js +1 -0
- package/app/_app/immutable/chunks/D-dgX3hb.js +2 -0
- package/app/_app/immutable/chunks/{bBI0F4nt.js → DDsrLsCW.js} +1 -1
- package/app/_app/immutable/chunks/{DDtOXC2p.js → DHw6VlGb.js} +1 -1
- package/app/_app/immutable/chunks/{BgtC60Dj.js → DQ1TECJo.js} +2 -2
- package/app/_app/immutable/chunks/{pEiNEXSh.js → DSHP6NMq.js} +1 -1
- package/app/_app/immutable/chunks/DYDheSdi.js +26 -0
- package/app/_app/immutable/chunks/Df-zyycv.js +2 -0
- package/app/_app/immutable/chunks/DkMzaPtY.js +4 -0
- package/app/_app/immutable/chunks/DmA8eomi.js +1 -0
- package/app/_app/immutable/chunks/{8MGlmWc0.js → DwlKnCAn.js} +1 -1
- package/app/_app/immutable/chunks/{B88mVEob.js → Mn4opCWg.js} +1 -1
- package/app/_app/immutable/chunks/{38SS-Q6Y.js → PiW3Dgjp.js} +22 -22
- package/app/_app/immutable/chunks/{ByKA-VaR.js → VIYltq2Y.js} +1 -1
- package/app/_app/immutable/chunks/{CQFoqqzT.js → fNkgk5Jb.js} +1 -1
- package/app/_app/immutable/chunks/{BTm4M8Ke.js → mdO5QRA9.js} +1 -1
- package/app/_app/immutable/chunks/{5TDxHd66.js → yTc1j36D.js} +1 -1
- package/app/_app/immutable/chunks/{oV81RcfI.js → yeJddwqn.js} +1 -1
- package/app/_app/immutable/entry/{app.C8En00Ny.js → app.N1QTpsMZ.js} +2 -2
- package/app/_app/immutable/entry/start.Dr_ALXsl.js +1 -0
- package/app/_app/immutable/nodes/0.inFgEPC5.js +7 -0
- package/app/_app/immutable/nodes/{1.CoV_40km.js → 1.BPYf0yDv.js} +1 -1
- package/app/_app/immutable/nodes/10.DScVn_7s.js +3 -0
- package/app/_app/immutable/nodes/{11.Csg6XAcG.js → 11.SWB4V_R-.js} +1 -1
- package/app/_app/immutable/nodes/{12.CuTHLuEu.js → 12.jNsVHfvB.js} +1 -1
- package/app/_app/immutable/nodes/{13.CNdfx5uO.js → 13.BAX1DbJ6.js} +1 -1
- package/app/_app/immutable/nodes/14.DFK_8SUc.js +1 -0
- package/app/_app/immutable/nodes/2.C-g07Oom.js +22 -0
- package/app/_app/immutable/nodes/{3.DC8-sgUI.js → 3.BYAVGln5.js} +1 -1
- package/app/_app/immutable/nodes/{4.DcX0DIX9.js → 4.xN8AMdJR.js} +1 -1
- package/app/_app/immutable/nodes/{5.Opk77twi.js → 5.BnO1oGgB.js} +1 -1
- package/app/_app/immutable/nodes/{6.Uk9tXC7t.js → 6.D3aEKeoZ.js} +1 -1
- package/app/_app/immutable/nodes/7.BZMihT_i.js +1 -0
- package/app/_app/immutable/nodes/{8.CacSxuCP.js → 8.DWwsczQn.js} +1 -1
- package/app/_app/immutable/nodes/{9.z7vXbrbH.js → 9.hCdhh_c2.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +24 -24
- package/app/ai/index.html +28 -28
- package/app/blueprint/index.html +22 -22
- package/app/cookbook/index.html +22 -22
- package/app/index.html +38 -40
- package/app/m/ads/AdDeliveryTier/index.html +27 -27
- package/app/m/ads/AdEvent/index.html +27 -27
- package/app/m/ads/AdFormat/index.html +27 -27
- package/app/m/ads/AdGroup/index.html +27 -27
- package/app/m/ads/AdVariation/index.html +27 -27
- package/app/m/analytics/AnalyticsDataStream/index.html +27 -27
- package/app/m/analytics/AnalyticsEvent/index.html +27 -27
- package/app/m/analytics/AnalyticsProperty/index.html +27 -27
- package/app/m/analytics/AnalyticsReport/index.html +27 -27
- package/app/m/approvals/ApprovalEvent/index.html +27 -27
- package/app/m/approvals/ApprovalPolicy/index.html +27 -27
- package/app/m/approvals/ApprovalRequest/index.html +27 -27
- package/app/m/assets/Asset/attachments/index.html +28 -28
- package/app/m/assets/Asset/index.html +27 -27
- package/app/m/assets/AssetAssociation/index.html +27 -27
- package/app/m/assets/AssetMetafield/index.html +27 -27
- package/app/m/assets/AssetStatus/index.html +27 -27
- package/app/m/assets/AssetType/index.html +27 -27
- package/app/m/assets/Folder/index.html +27 -27
- package/app/m/chat/AgentSession/index.html +27 -27
- package/app/m/chat/ChatMessage/index.html +27 -27
- package/app/m/chat/ChatParticipant/index.html +27 -27
- package/app/m/chat/ChatReaction/index.html +27 -27
- package/app/m/chat/ChatRoom/index.html +27 -27
- package/app/m/chat/ChatThread/index.html +27 -27
- package/app/m/chat/VoiceGatewayTurn/index.html +27 -27
- package/app/m/chat/VoiceSession/index.html +27 -27
- package/app/m/commerce/Agreement/index.html +27 -27
- package/app/m/commerce/Cart/index.html +27 -27
- package/app/m/commerce/Contract/index.html +27 -27
- package/app/m/commerce/ContractLineItem/index.html +27 -27
- package/app/m/commerce/Customer/index.html +27 -27
- package/app/m/commerce/DocumentTax/index.html +27 -27
- package/app/m/commerce/Estimate/index.html +27 -27
- package/app/m/commerce/Fulfillment/index.html +27 -27
- package/app/m/commerce/FulfillmentLineItem/index.html +27 -27
- package/app/m/commerce/HistoricalCustomerFunds/index.html +27 -27
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +27 -27
- package/app/m/commerce/HistoricalSalesLine/index.html +27 -27
- package/app/m/commerce/Invoice/index.html +27 -27
- package/app/m/commerce/InvoiceLineItem/index.html +27 -27
- package/app/m/commerce/Lease/index.html +27 -27
- package/app/m/commerce/LicenseSale/index.html +27 -27
- package/app/m/commerce/Order/index.html +27 -27
- package/app/m/commerce/Payment/index.html +27 -27
- package/app/m/commerce/PaymentAllocation/index.html +27 -27
- package/app/m/commerce/PaymentInstrument/index.html +27 -27
- package/app/m/commerce/PaymentIntent/index.html +27 -27
- package/app/m/commerce/Payout/index.html +27 -27
- package/app/m/commerce/ProductionOrder/index.html +27 -27
- package/app/m/commerce/PurchaseContract/index.html +27 -27
- package/app/m/commerce/PurchaseOrder/index.html +27 -27
- package/app/m/commerce/SalesContract/index.html +27 -27
- package/app/m/commerce/SupplierQuote/index.html +27 -27
- package/app/m/commerce/TaxCode/index.html +27 -27
- package/app/m/commerce/TaxComponent/index.html +27 -27
- package/app/m/commerce/TaxSettings/index.html +27 -27
- package/app/m/commerce/TaxSummaryReport/index.html +27 -27
- package/app/m/commerce/TenantPaymentAccount/index.html +27 -27
- package/app/m/commerce/Vendor/index.html +27 -27
- package/app/m/commerce/WholesaleOrder/index.html +27 -27
- package/app/m/content/Content/index.html +27 -27
- package/app/m/content/ContentContribution/index.html +27 -27
- package/app/m/content/ContentContributionAttachment/index.html +27 -27
- package/app/m/content/ContentContributionRevision/index.html +27 -27
- package/app/m/content/ContentContributionType/index.html +27 -27
- package/app/m/content/ContentContributor/index.html +27 -27
- package/app/m/content/ContentCorrection/index.html +27 -27
- package/app/m/content/ContentFeedSource/index.html +27 -27
- package/app/m/content/ContentGovernanceAssignment/index.html +27 -27
- package/app/m/content/ContentGovernancePolicy/index.html +27 -27
- package/app/m/content/ContentGovernanceProfile/index.html +27 -27
- package/app/m/content/ContentReference/index.html +27 -27
- package/app/m/content/ContentReview/index.html +27 -27
- package/app/m/content/ContentVersion/index.html +27 -27
- package/app/m/events/Event/index.html +27 -27
- package/app/m/events/EventParticipant/index.html +27 -27
- package/app/m/events/EventSeries/index.html +27 -27
- package/app/m/events/EventType/index.html +27 -27
- package/app/m/expenses/Expense/index.html +27 -27
- package/app/m/facts/Fact/index.html +27 -27
- package/app/m/facts/FactContent/index.html +27 -27
- package/app/m/facts/FactEvidence/index.html +27 -27
- package/app/m/facts/FactSource/index.html +27 -27
- package/app/m/facts/FactSubject/index.html +27 -27
- package/app/m/facts/FactTag/index.html +27 -27
- package/app/m/fields/FieldPolicy/index.html +27 -27
- package/app/m/fields/FieldPolicySuggestion/index.html +27 -27
- package/app/m/fields/FieldUsageCounter/index.html +27 -27
- package/app/m/images/Image/index.html +27 -27
- package/app/m/inventory/InventoryLocation/index.html +27 -27
- package/app/m/inventory/StockLevel/index.html +27 -27
- package/app/m/inventory/StockMovement/index.html +27 -27
- package/app/m/ledgers/Account/index.html +27 -27
- package/app/m/ledgers/Journal/index.html +27 -27
- package/app/m/ledgers/JournalEntry/index.html +27 -27
- package/app/m/ledgers/Ledger/index.html +27 -27
- package/app/m/manufacturing/Assembly/index.html +27 -27
- package/app/m/manufacturing/BillOfMaterials/index.html +27 -27
- package/app/m/manufacturing/BomLine/index.html +27 -27
- package/app/m/manufacturing/Operation/index.html +27 -27
- package/app/m/manufacturing/ProductionRun/index.html +27 -27
- package/app/m/manufacturing/ProductionRunCompletion/index.html +27 -27
- package/app/m/manufacturing/RoutingStep/index.html +27 -27
- package/app/m/marketing/Campaign/index.html +27 -27
- package/app/m/marketing/CampaignChannel/index.html +27 -27
- package/app/m/marketing/CampaignMetricSnapshot/index.html +27 -27
- package/app/m/messages/Account/index.html +27 -27
- package/app/m/messages/Attachment/index.html +27 -27
- package/app/m/messages/Blacklist/index.html +27 -27
- package/app/m/messages/Email/failed-sends/index.html +28 -28
- package/app/m/messages/Email/index.html +27 -27
- package/app/m/messages/Email/mailbox/index.html +28 -28
- package/app/m/messages/EmailAccount/index.html +27 -27
- package/app/m/messages/EmailAttachment/index.html +27 -27
- package/app/m/messages/EmailFolder/index.html +27 -27
- package/app/m/messages/Message/index.html +27 -27
- package/app/m/messages/MessagingEndpoint/index.html +27 -27
- package/app/m/messages/PersonaMessageRoute/index.html +27 -27
- package/app/m/messages/SlackAccount/index.html +27 -27
- package/app/m/messages/SlackMessage/index.html +27 -27
- package/app/m/messages/TelegramAccount/index.html +27 -27
- package/app/m/messages/Tweet/index.html +27 -27
- package/app/m/messages/TwitterAccount/index.html +27 -27
- package/app/m/messages/Whitelist/index.html +27 -27
- package/app/m/messages/ZulipAccount/index.html +27 -27
- package/app/m/places/Place/index.html +27 -27
- package/app/m/places/PlaceType/index.html +27 -27
- package/app/m/products/Category/index.html +27 -27
- package/app/m/products/Material/index.html +27 -27
- package/app/m/products/Product/index.html +27 -27
- package/app/m/products/Product/ingredients/index.html +28 -28
- package/app/m/products/ProductVariant/index.html +27 -27
- package/app/m/products/Sku/index.html +27 -27
- package/app/m/profiles/ApiKey/index.html +27 -27
- package/app/m/profiles/Bot/index.html +27 -27
- package/app/m/profiles/MagicLinkToken/index.html +27 -27
- package/app/m/profiles/NostrIdentity/index.html +27 -27
- package/app/m/profiles/OidcIdentity/index.html +27 -27
- package/app/m/profiles/Organization/index.html +27 -27
- package/app/m/profiles/Person/index.html +27 -27
- package/app/m/profiles/Profile/index.html +27 -27
- package/app/m/profiles/ProfileMetadata/index.html +27 -27
- package/app/m/profiles/ProfileMetafield/index.html +27 -27
- package/app/m/profiles/ProfileRelationship/index.html +27 -27
- package/app/m/profiles/ProfileRelationshipTerm/index.html +27 -27
- package/app/m/profiles/ProfileRelationshipType/index.html +27 -27
- package/app/m/profiles/ProfileType/index.html +27 -27
- package/app/m/projects/Comment/index.html +27 -27
- package/app/m/projects/Issue/index.html +27 -27
- package/app/m/projects/Label/index.html +27 -27
- package/app/m/projects/Project/index.html +27 -27
- package/app/m/projects/ProjectIntegration/index.html +27 -27
- package/app/m/projects/PullRequest/index.html +27 -27
- package/app/m/projects/Repository/index.html +27 -27
- package/app/m/properties/Property/index.html +27 -27
- package/app/m/properties/Zone/index.html +27 -27
- package/app/m/reports/RuntimeReport/index.html +27 -27
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +27 -27
- package/app/m/reports/SmrtReportLock/index.html +27 -27
- package/app/m/reports/SmrtReportRefreshTask/index.html +27 -27
- package/app/m/reports/SmrtReportRun/index.html +27 -27
- package/app/m/reports/SmrtReportSchedule/index.html +27 -27
- package/app/m/reports/SmrtReportWatermark/index.html +27 -27
- package/app/m/sales/Agreement/index.html +27 -27
- package/app/m/sales/AttributionException/index.html +27 -27
- package/app/m/sales/AttributionPolicy/index.html +27 -27
- package/app/m/sales/Commission/index.html +27 -27
- package/app/m/sales/CommissionAdjustment/index.html +27 -27
- package/app/m/sales/CommissionPayout/index.html +27 -27
- package/app/m/sales/CommissionPlan/index.html +27 -27
- package/app/m/sales/Earner/index.html +27 -27
- package/app/m/sales/EarnerSourceAttribution/index.html +27 -27
- package/app/m/sales/EarningEvent/index.html +27 -27
- package/app/m/sales/ExecutedAgreement/index.html +27 -27
- package/app/m/sales/Lead/index.html +27 -27
- package/app/m/sales/Opportunity/index.html +27 -27
- package/app/m/sales/OpportunityConversion/index.html +27 -27
- package/app/m/sales/PipelineDefinition/index.html +27 -27
- package/app/m/sales/PipelineStage/index.html +27 -27
- package/app/m/sales/Referral/index.html +27 -27
- package/app/m/sales/ReferralAgreement/index.html +27 -27
- package/app/m/sales/ReferralLink/index.html +27 -27
- package/app/m/sales/ReferralProgram/index.html +27 -27
- package/app/m/sales/ReferralTermSnapshot/index.html +27 -27
- package/app/m/sales/ReferralTouch/index.html +27 -27
- package/app/m/sales/Referrer/index.html +27 -27
- package/app/m/sales/SalesActivity/index.html +27 -27
- package/app/m/sales/SalesRepresentative/index.html +27 -27
- package/app/m/sites/Site/index.html +27 -27
- package/app/m/sites/SiteAgentBinding/index.html +27 -27
- package/app/m/social/OAuthState/index.html +27 -27
- package/app/m/social/SocialAccount/index.html +27 -27
- package/app/m/social/SocialPost/index.html +27 -27
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +27 -27
- package/app/m/subscriptions/BillingAdjustment/index.html +27 -27
- package/app/m/subscriptions/ClientCharge/index.html +27 -27
- package/app/m/subscriptions/CreditGrant/index.html +27 -27
- package/app/m/subscriptions/PricingRule/index.html +27 -27
- package/app/m/subscriptions/RetailCharge/index.html +27 -27
- package/app/m/subscriptions/SpendingPolicy/index.html +27 -27
- package/app/m/subscriptions/SubscriptionPlan/index.html +27 -27
- package/app/m/subscriptions/SubscriptionPlanVersion/index.html +27 -27
- package/app/m/subscriptions/TenantSubscription/index.html +27 -27
- package/app/m/subscriptions/TenantUsageMetric/index.html +27 -27
- package/app/m/support/ServiceTimeEntry/index.html +27 -27
- package/app/m/support/SupportAiRun/index.html +27 -27
- package/app/m/support/SupportAvailability/index.html +27 -27
- package/app/m/support/SupportCase/index.html +27 -27
- package/app/m/support/SupportCaseEvent/index.html +27 -27
- package/app/m/support/SupportChannelBinding/index.html +27 -27
- package/app/m/support/SupportCharge/index.html +27 -27
- package/app/m/support/SupportCompensation/index.html +27 -27
- package/app/m/support/SupportCompensationPlan/index.html +27 -27
- package/app/m/support/SupportEscalation/index.html +27 -27
- package/app/m/support/SupportInteraction/index.html +27 -27
- package/app/m/support/SupportPlan/index.html +27 -27
- package/app/m/support/SupportPolicy/index.html +27 -27
- package/app/m/support/SupportQualification/index.html +27 -27
- package/app/m/support/SupportServiceTarget/index.html +27 -27
- package/app/m/support/SupportSpecialist/index.html +27 -27
- package/app/m/support/SupportWorkLink/index.html +27 -27
- package/app/m/tags/Tag/index.html +27 -27
- package/app/m/tags/TagAlias/index.html +27 -27
- package/app/m/timesheets/AttendanceBreak/index.html +27 -27
- package/app/m/timesheets/AttendancePunch/index.html +27 -27
- package/app/m/timesheets/AttendanceSegment/index.html +27 -27
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +27 -27
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +27 -27
- package/app/m/timesheets/ServiceTimeEntry/index.html +27 -27
- package/app/m/users/Group/index.html +27 -27
- package/app/m/users/GroupMember/index.html +27 -27
- package/app/m/users/GroupRole/index.html +27 -27
- package/app/m/users/Membership/index.html +27 -27
- package/app/m/users/MembershipOverride/index.html +27 -27
- package/app/m/users/Permission/index.html +27 -27
- package/app/m/users/Role/index.html +27 -27
- package/app/m/users/RolePermission/index.html +27 -27
- package/app/m/users/Session/index.html +27 -27
- package/app/m/users/Tenant/index.html +27 -27
- package/app/m/users/TenantIntegration/index.html +27 -27
- package/app/m/users/TenantPermissionOverride/index.html +27 -27
- package/app/m/users/User/index.html +27 -27
- package/app/m/video/Character/index.html +27 -27
- package/app/m/video/CharacterAsset/index.html +27 -27
- package/app/m/video/CompositeJob/index.html +27 -27
- package/app/m/video/Performer/index.html +27 -27
- package/app/m/video/PerformerAsset/index.html +27 -27
- package/app/m/video/Scene/index.html +27 -27
- package/app/m/video/SceneAsset/index.html +27 -27
- package/app/m/video/VideoComposition/index.html +27 -27
- package/app/m/video/VideoCompositionAsset/index.html +27 -27
- package/app/m/video/VideoSequence/index.html +27 -27
- package/app/m/video/VideoSequenceAsset/index.html +27 -27
- package/app/m/video/VideoShot/index.html +27 -27
- package/app/m/video/VideoShotAsset/index.html +27 -27
- package/app/m/video/VideoShotCharacter/index.html +27 -27
- package/app/m/video/VideoWorkflow/index.html +27 -27
- package/app/m/voice/VoiceOutput/index.html +27 -27
- package/app/m/voice/VoiceProfile/index.html +27 -27
- package/app/m/voice/VoiceSample/index.html +27 -27
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +24 -24
- package/app/packages/analytics/index.html +24 -24
- package/app/packages/approvals/index.html +24 -24
- package/app/packages/assets/index.html +24 -24
- package/app/packages/chat/index.html +24 -24
- package/app/packages/comments/index.html +24 -24
- package/app/packages/commerce/index.html +24 -24
- package/app/packages/content/index.html +24 -24
- package/app/packages/events/index.html +24 -24
- package/app/packages/expenses/index.html +24 -24
- package/app/packages/facts/index.html +24 -24
- package/app/packages/fields/index.html +24 -24
- package/app/packages/human-resources/index.html +24 -24
- package/app/packages/images/index.html +24 -24
- package/app/packages/index.html +23 -23
- package/app/packages/ingestion/index.html +24 -24
- package/app/packages/inventory/index.html +24 -24
- package/app/packages/ledgers/index.html +24 -24
- package/app/packages/manufacturing/index.html +24 -24
- package/app/packages/marketing/index.html +24 -24
- package/app/packages/messages/index.html +24 -24
- package/app/packages/places/index.html +24 -24
- package/app/packages/preferences/index.html +24 -24
- package/app/packages/products/index.html +24 -24
- package/app/packages/profiles/index.html +24 -24
- package/app/packages/projects/index.html +24 -24
- package/app/packages/properties/index.html +24 -24
- package/app/packages/reports/index.html +24 -24
- package/app/packages/sales/index.html +24 -24
- package/app/packages/sites/index.html +24 -24
- package/app/packages/social/index.html +24 -24
- package/app/packages/subscriptions/index.html +24 -24
- package/app/packages/support/index.html +24 -24
- package/app/packages/tags/index.html +24 -24
- package/app/packages/timesheets/index.html +24 -24
- package/app/packages/users/index.html +24 -24
- package/app/packages/video/index.html +24 -24
- package/app/packages/voice/index.html +24 -24
- package/app/packages/webhooks/index.html +24 -24
- package/app/recipes/account-access/help/index.html +24 -24
- package/app/recipes/account-access/index.html +26 -26
- package/app/recipes/activity/help/index.html +24 -24
- package/app/recipes/activity/index.html +26 -26
- package/app/recipes/agreements/help/index.html +24 -24
- package/app/recipes/agreements/index.html +26 -26
- package/app/recipes/analytics.reports/help/index.html +24 -24
- package/app/recipes/analytics.reports/index.html +26 -26
- package/app/recipes/assets/help/index.html +24 -24
- package/app/recipes/assets/index.html +26 -26
- package/app/recipes/billing/help/index.html +24 -24
- package/app/recipes/billing/index.html +26 -26
- package/app/recipes/chat.assistant/help/index.html +24 -24
- package/app/recipes/chat.assistant/index.html +26 -26
- package/app/recipes/comments/help/index.html +24 -24
- package/app/recipes/comments/index.html +26 -26
- package/app/recipes/commerce.customers/help/index.html +24 -24
- package/app/recipes/commerce.customers/index.html +26 -26
- package/app/recipes/commerce.estimates/help/index.html +24 -24
- package/app/recipes/commerce.estimates/index.html +26 -26
- package/app/recipes/commerce.purchases/help/index.html +24 -24
- package/app/recipes/commerce.purchases/index.html +26 -26
- package/app/recipes/commerce.sales/help/index.html +24 -24
- package/app/recipes/commerce.sales/index.html +26 -26
- package/app/recipes/commerce.vendors/help/index.html +24 -24
- package/app/recipes/commerce.vendors/index.html +26 -26
- package/app/recipes/commerce.wholesale/help/index.html +24 -24
- package/app/recipes/commerce.wholesale/index.html +26 -26
- package/app/recipes/events.calendar/help/index.html +24 -24
- package/app/recipes/events.calendar/index.html +26 -26
- package/app/recipes/expenses.tracking/help/index.html +24 -24
- package/app/recipes/expenses.tracking/index.html +26 -26
- package/app/recipes/fields.form-customization/help/index.html +24 -24
- package/app/recipes/fields.form-customization/index.html +26 -26
- package/app/recipes/ingestion/help/index.html +24 -24
- package/app/recipes/ingestion/index.html +26 -26
- package/app/recipes/integrations/help/index.html +24 -24
- package/app/recipes/integrations/index.html +26 -26
- package/app/recipes/inventory.stock/help/index.html +24 -24
- package/app/recipes/inventory.stock/index.html +26 -26
- package/app/recipes/ledgers.bookkeeping/help/index.html +24 -24
- package/app/recipes/ledgers.bookkeeping/index.html +26 -26
- package/app/recipes/messages/help/index.html +24 -24
- package/app/recipes/messages/index.html +26 -26
- package/app/recipes/products/help/index.html +24 -24
- package/app/recipes/products/index.html +26 -26
- package/app/recipes/projects.tracker/help/index.html +24 -24
- package/app/recipes/projects.tracker/index.html +26 -26
- package/app/recipes/reports.materialized/help/index.html +24 -24
- package/app/recipes/reports.materialized/index.html +26 -26
- package/app/recipes/reports.runtime/help/index.html +24 -24
- package/app/recipes/reports.runtime/index.html +26 -26
- package/app/recipes/sales.pipeline/help/index.html +24 -24
- package/app/recipes/sales.pipeline/index.html +26 -26
- package/app/recipes/tags.taxonomy/help/index.html +24 -24
- package/app/recipes/tags.taxonomy/index.html +26 -26
- package/app/recipes/team-collaboration/help/index.html +24 -24
- package/app/recipes/team-collaboration/index.html +26 -26
- package/app/recipes/timesheets.time-entries/help/index.html +24 -24
- package/app/recipes/timesheets.time-entries/index.html +26 -26
- package/app/s/custom-accounts/index.html +23 -23
- package/app/s/custom-appointments/index.html +23 -23
- package/app/s/custom-billing/index.html +23 -23
- package/app/s/custom-bookings/index.html +23 -23
- package/app/s/custom-buying/index.html +23 -23
- package/app/s/custom-checkout/index.html +23 -23
- package/app/s/custom-classes/index.html +23 -23
- package/app/s/custom-clients/index.html +23 -23
- package/app/s/custom-events/index.html +23 -23
- package/app/s/custom-fleet/index.html +23 -23
- package/app/s/custom-gigs/index.html +23 -23
- package/app/s/custom-giving/index.html +23 -23
- package/app/s/custom-instruments/index.html +23 -23
- package/app/s/custom-jobs/index.html +23 -23
- package/app/s/custom-kitchen/index.html +23 -23
- package/app/s/custom-lessons/index.html +23 -23
- package/app/s/custom-material/index.html +23 -23
- package/app/s/custom-meetings/index.html +23 -23
- package/app/s/custom-members/index.html +23 -23
- package/app/s/custom-merch/index.html +23 -23
- package/app/s/custom-money/index.html +23 -23
- package/app/s/custom-paint/index.html +23 -23
- package/app/s/custom-parts/index.html +23 -23
- package/app/s/custom-rentals/index.html +23 -23
- package/app/s/custom-roastery/index.html +23 -23
- package/app/s/custom-schedule/index.html +23 -23
- package/app/s/custom-shelf/index.html +23 -23
- package/app/s/custom-shop/index.html +23 -23
- package/app/s/custom-students/index.html +23 -23
- package/app/s/custom-wholesale/index.html +23 -23
- package/app/s/custom-work/index.html +23 -23
- package/app/s/custom-yard/index.html +23 -23
- package/app/s/section-access-control/index.html +23 -23
- package/app/s/section-account-security/index.html +23 -23
- package/app/s/section-accounting/index.html +23 -23
- package/app/s/section-activity/index.html +23 -23
- package/app/s/section-agreements/index.html +23 -23
- package/app/s/section-analytics/index.html +23 -23
- package/app/s/section-assets/index.html +23 -23
- package/app/s/section-billing/index.html +23 -23
- package/app/s/section-calendar/index.html +23 -23
- package/app/s/section-catalog/index.html +23 -23
- package/app/s/section-chat.assistant/index.html +23 -23
- package/app/s/section-comments/index.html +23 -23
- package/app/s/section-fields.form-customization/index.html +23 -23
- package/app/s/section-ingestion/index.html +23 -23
- package/app/s/section-integrations/index.html +23 -23
- package/app/s/section-messages/index.html +23 -23
- package/app/s/section-more/index.html +23 -23
- package/app/s/section-operations/index.html +23 -23
- package/app/s/section-projects/index.html +23 -23
- package/app/s/section-purchasing/index.html +23 -23
- package/app/s/section-reports.materialized/index.html +23 -23
- package/app/s/section-reports.runtime/index.html +23 -23
- package/app/s/section-sales/index.html +23 -23
- package/app/s/section-taxonomy/index.html +23 -23
- package/app/s/section-team/index.html +23 -23
- package/app/s/section-work/index.html +23 -23
- package/dist/ai/instance.d.ts.map +1 -1
- package/dist/ai/instance.js +2 -0
- package/dist/assistant/change.d.ts +2 -0
- package/dist/assistant/change.d.ts.map +1 -1
- package/dist/assistant/change.js +5 -0
- package/dist/assistant/coaching.d.ts +7 -0
- package/dist/assistant/coaching.d.ts.map +1 -0
- package/dist/assistant/coaching.js +42 -0
- package/dist/assistant/prompt.d.ts.map +1 -1
- package/dist/assistant/prompt.js +1 -0
- package/dist/assistant/session.svelte.d.ts +4 -1
- package/dist/assistant/session.svelte.d.ts.map +1 -1
- package/dist/assistant/session.svelte.js +5 -1
- package/dist/assistant/starters.d.ts +7 -0
- package/dist/assistant/starters.d.ts.map +1 -0
- package/dist/assistant/starters.js +33 -0
- package/dist/assistant/transport.d.ts +37 -2
- package/dist/assistant/transport.d.ts.map +1 -1
- package/dist/assistant/transport.js +257 -56
- package/dist/catalog/catalog.json +38 -38
- package/dist/components/BrowserAssistant.svelte +20 -0
- package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
- package/dist/components/ExportPanel.svelte +176 -118
- package/dist/components/ExportPanel.svelte.d.ts +8 -0
- package/dist/components/ExportPanel.svelte.d.ts.map +1 -1
- package/dist/components/HeaderIconLink.svelte +8 -0
- package/dist/components/HeaderIconLink.svelte.d.ts +1 -0
- package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
- package/dist/components/ProjectControls.svelte +133 -0
- package/dist/components/ProjectControls.svelte.d.ts +15 -0
- package/dist/components/ProjectControls.svelte.d.ts.map +1 -0
- package/dist/components/SectionOverview.svelte +4 -5
- package/dist/components/SectionOverview.svelte.d.ts +1 -1
- package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
- package/dist/components/SettingsPanel.svelte +37 -1
- package/dist/components/SettingsPanel.svelte.d.ts +7 -1
- package/dist/components/SettingsPanel.svelte.d.ts.map +1 -1
- package/dist/cookbook/file.d.ts +5 -0
- package/dist/cookbook/file.d.ts.map +1 -1
- package/dist/cookbook/file.js +9 -2
- package/dist/cookbook/store.svelte.d.ts +4 -1
- package/dist/cookbook/store.svelte.d.ts.map +1 -1
- package/dist/cookbook/store.svelte.js +9 -10
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +10 -0
- package/dist/core/reply.d.ts +2 -0
- package/dist/core/reply.d.ts.map +1 -1
- package/dist/core/reply.js +4 -0
- package/dist/data/packs.d.ts.map +1 -1
- package/dist/data/packs.js +14 -7
- package/dist/data/planner-source.d.ts.map +1 -1
- package/dist/data/planner-source.js +4 -3
- package/dist/data/sample-context.d.ts +84 -0
- package/dist/data/sample-context.d.ts.map +1 -0
- package/dist/data/sample-context.js +106 -0
- package/dist/data/source.d.ts.map +1 -1
- package/dist/data/source.js +2 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/library/state.svelte.d.ts.map +1 -1
- package/dist/library/state.svelte.js +3 -3
- package/dist/overviews/definitions.d.ts +2 -2
- package/dist/overviews/definitions.d.ts.map +1 -1
- package/dist/overviews/definitions.js +19 -31
- package/dist/overviews/page.d.ts.map +1 -1
- package/dist/overviews/page.js +4 -1
- package/dist/overviews/registry.d.ts +1 -1
- package/dist/overviews/registry.js +3 -3
- package/dist/overviews/validate.d.ts.map +1 -1
- package/dist/overviews/validate.js +15 -2
- package/dist/planner/Planner.svelte +46 -4
- package/dist/planner/Planner.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerControls.svelte +18 -2
- package/dist/planner/PlannerControls.svelte.d.ts +2 -0
- package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerHostAction.svelte +61 -0
- package/dist/planner/PlannerHostAction.svelte.d.ts +12 -0
- package/dist/planner/PlannerHostAction.svelte.d.ts.map +1 -0
- package/dist/planner/PlannerLifecycle.svelte +75 -5
- package/dist/planner/PlannerLifecycle.svelte.d.ts +2 -1
- package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
- package/dist/planner/bridge.d.ts +73 -0
- package/dist/planner/bridge.d.ts.map +1 -0
- package/dist/planner/bridge.js +303 -0
- package/dist/planner/commands/adapter.d.ts +2 -0
- package/dist/planner/commands/adapter.d.ts.map +1 -1
- package/dist/planner/commands/adapter.js +19 -0
- package/dist/planner/export-context.d.ts +6 -0
- package/dist/planner/export-context.d.ts.map +1 -0
- package/dist/planner/export-context.js +14 -0
- package/dist/planner/guide.d.ts +69 -0
- package/dist/planner/guide.d.ts.map +1 -0
- package/dist/planner/guide.js +115 -0
- package/dist/planner/host-reply.d.ts +22 -0
- package/dist/planner/host-reply.d.ts.map +1 -0
- package/dist/planner/host-reply.js +71 -0
- package/dist/planner/shell.d.ts +6 -0
- package/dist/planner/shell.d.ts.map +1 -1
- package/dist/planner/shell.js +2 -0
- package/dist/planner/types.d.ts +39 -1
- package/dist/planner/types.d.ts.map +1 -1
- package/dist/planner/workspace-storage.d.ts +29 -0
- package/dist/planner/workspace-storage.d.ts.map +1 -0
- package/dist/planner/workspace-storage.js +355 -0
- package/dist/planner/workspace.svelte.d.ts +19 -0
- package/dist/planner/workspace.svelte.d.ts.map +1 -0
- package/dist/planner/workspace.svelte.js +52 -0
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +54 -54
- package/app/_app/immutable/assets/2.CdEXvRg0.css +0 -1
- package/app/_app/immutable/assets/AppShell.BkKNrxND.css +0 -1
- package/app/_app/immutable/chunks/9PL91wDk.js +0 -4
- package/app/_app/immutable/chunks/9iVbSlQr.js +0 -16
- package/app/_app/immutable/chunks/B-xSgl5J.js +0 -1
- package/app/_app/immutable/chunks/BDKUpjK6.js +0 -2
- package/app/_app/immutable/chunks/Bq35Wl4H.js +0 -2
- package/app/_app/immutable/chunks/Cu77BRmy.js +0 -1
- package/app/_app/immutable/chunks/CxZIUuYu.js +0 -1
- package/app/_app/immutable/chunks/CzHmSbsw.js +0 -1
- package/app/_app/immutable/chunks/D71UrO5c.js +0 -1
- package/app/_app/immutable/chunks/DF-0MxNw.js +0 -1
- package/app/_app/immutable/chunks/DaWOaOo5.js +0 -10
- package/app/_app/immutable/chunks/aDZBV4Ss.js +0 -26
- package/app/_app/immutable/entry/start.DQ2WMDJa.js +0 -1
- package/app/_app/immutable/nodes/0.CjivLsXS.js +0 -7
- package/app/_app/immutable/nodes/10.CRcxQ1FU.js +0 -3
- package/app/_app/immutable/nodes/14.CvNTiqf4.js +0 -1
- package/app/_app/immutable/nodes/2.D8ImYTF0.js +0 -24
- package/app/_app/immutable/nodes/7.Q7dzrAos.js +0 -1
package/README.md
CHANGED
|
@@ -259,3 +259,139 @@ the root `CHANGESETS.md`); it is never published on its own.
|
|
|
259
259
|
## License
|
|
260
260
|
|
|
261
261
|
MIT © Happy Vertical Corporation
|
|
262
|
+
|
|
263
|
+
### Native host context and Export actions
|
|
264
|
+
|
|
265
|
+
A mounted complete `Planner` can retain an earlier conversation and add its
|
|
266
|
+
host's first Export action while keeping the native cookbook download:
|
|
267
|
+
|
|
268
|
+
```svelte
|
|
269
|
+
<Planner
|
|
270
|
+
inference={{ mode: 'host', host: { endpoint: '/api/planner/chat' } }}
|
|
271
|
+
initialConversation={{
|
|
272
|
+
id: 'stable-handoff-id',
|
|
273
|
+
messages: [{ role: 'user', content: 'I run a repair workshop.' }],
|
|
274
|
+
}}
|
|
275
|
+
cookbookOffers={false}
|
|
276
|
+
exportAction={{
|
|
277
|
+
label: 'Continue with this app',
|
|
278
|
+
run: async ({ export: file, revision, conversation }) => {
|
|
279
|
+
// file is the existing ExportData: fileName, exact text, full cookbook.
|
|
280
|
+
// Store/submit the detached context according to your host's policy.
|
|
281
|
+
await savePlan({ file, revision, conversation });
|
|
282
|
+
},
|
|
283
|
+
}}
|
|
284
|
+
onready={({ nativeAssistant }) => {
|
|
285
|
+
// The same transport the visible native dock uses, not `assistant`.
|
|
286
|
+
nativeAssistant?.subscribeConversation((messages) => remember(messages));
|
|
287
|
+
}}
|
|
288
|
+
/>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
`onready.openAssistant()` opens and focuses the ready native dock using the
|
|
292
|
+
shell API and returns false if the dock/model is unavailable. It waits a Svelte
|
|
293
|
+
tick so shell registration can settle; seeding alone never opens the dock.
|
|
294
|
+
|
|
295
|
+
`onready.nativeAssistant` exposes `conversation()` (a detached full current
|
|
296
|
+
thread), `subscribeConversation(listener)` (immediate snapshot; returns an
|
|
297
|
+
unsubscribe), `busy`, `seed({ id, messages })`, and the existing chat transport
|
|
298
|
+
methods. The legacy `onready.assistant` remains a separate host-driven assistant;
|
|
299
|
+
it is not a way to read the visible native dock's messages.
|
|
300
|
+
|
|
301
|
+
Seed accepts only plain user/assistant text. It appends the complete input in
|
|
302
|
+
one notification, never executes it, and returns false for a repeated id,
|
|
303
|
+
malformed input, an in-flight turn or a thread that has already received native
|
|
304
|
+
sends. Supply `initialConversation` before opening the native dock; seeding is
|
|
305
|
+
not a way to replace an active conversation. The host retains the original
|
|
306
|
+
transcript separately when original message identities/provenance matter.
|
|
307
|
+
|
|
308
|
+
`headerAction={{ label, run }}` adds a primary button to the complete Planner header.
|
|
309
|
+
It uses the same capture and busy/error safeguards as `exportAction`; hosts may
|
|
310
|
+
pass the same callback to both entry points. The Export shortcut and native
|
|
311
|
+
download remain available. `PlannerControls` does not render a header action.
|
|
312
|
+
|
|
313
|
+
`PlannerExportContext` is `{ export: ExportData, revision, conversation }`.
|
|
314
|
+
The Export action captures document and thread synchronously and rejects an
|
|
315
|
+
in-flight conversation rather than submitting a partial turn. Host callback
|
|
316
|
+
failures are displayed inline; download remains available. Conversation export
|
|
317
|
+
has no inference history truncation, including native tool data and error
|
|
318
|
+
messages. The inference wire still sends only bounded recent turns. No server
|
|
319
|
+
persistence, iframe bridge, automatic app generation, or custom model/recipe
|
|
320
|
+
creation is implied. Sample records remain outside the cookbook.
|
|
321
|
+
|
|
322
|
+
`cookbookOffers={false}` removes library cookbook proposals from the native
|
|
323
|
+
assistant's vocabulary/schema; existing recipe/feature composition remains
|
|
324
|
+
available. This defaults to true and does not remove the Cookbooks tab.
|
|
325
|
+
`PlannerControls` also accepts `exportAction`; without a complete Planner its
|
|
326
|
+
export conversation is empty because it owns no native dock.
|
|
327
|
+
|
|
328
|
+
### External assistant on the same live app
|
|
329
|
+
|
|
330
|
+
An external host assistant can drive `onready.controller` through a dedicated
|
|
331
|
+
`MessagePort` without using, seeding, or writing the native assistant thread.
|
|
332
|
+
The host must first authenticate its window handshake by exact origin **and**
|
|
333
|
+
expected `event.source`, then transfer a fresh `MessageChannel` port. The
|
|
334
|
+
library intentionally does not install a broad window message listener.
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
// Inside the mounted Planner host, after a trusted port transfer:
|
|
338
|
+
const binding = bindPlannerCommandPort({
|
|
339
|
+
port,
|
|
340
|
+
controller: handle.controller,
|
|
341
|
+
allowedCommands: ['add_cookbook', 'add_recipes', 'add_features'],
|
|
342
|
+
source: 'external-assistant',
|
|
343
|
+
});
|
|
344
|
+
// Call binding.invalidate() in the workspace's synchronous onreset callback.
|
|
345
|
+
// Call binding.dispose() before replacing/unmounting the mounted Planner.
|
|
346
|
+
|
|
347
|
+
// On the external assistant side, using the other dedicated port:
|
|
348
|
+
const client = connectPlannerCommandPort(otherPort);
|
|
349
|
+
const before = await client.snapshot();
|
|
350
|
+
// Prepare a hosted model reply from before.snapshot and this assistant's own
|
|
351
|
+
// conversation. context() additionally exposes the canonical catalog/tools.
|
|
352
|
+
const result = await client.applyReply({
|
|
353
|
+
id: 'stable-request-id',
|
|
354
|
+
generation: before.generation,
|
|
355
|
+
expectedRevision: before.snapshot.revision,
|
|
356
|
+
reply: hostedReply,
|
|
357
|
+
});
|
|
358
|
+
// Speak/display result.content: it comes from actual command receipts/coaching.
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
`snapshot()` and `subscribe()` expose `{ generation, snapshot }` from the actual
|
|
362
|
+
mounted controller, including manual edits. `context()` adds the package's
|
|
363
|
+
published `catalog` and `tools`. `execute()` accepts a typed command array;
|
|
364
|
+
`applyReply()` accepts only `{ reply, commands?, sampleContext? }`. The latter
|
|
365
|
+
validates fictional sample context before executing an atomic canonical batch,
|
|
366
|
+
then installs it only after successful changed commands and before the next
|
|
367
|
+
render. It reuses native command receipts and coaching, with no assistant thread.
|
|
368
|
+
|
|
369
|
+
Every mutation requires the observed generation and revision. The binding
|
|
370
|
+
assigns source attribution, namespaces command ids, deduplicates the whole
|
|
371
|
+
request, rejects id reuse with changed input, and refuses stale/reset requests.
|
|
372
|
+
Allowed commands are explicit (an empty list denies all mutations). Envelopes
|
|
373
|
+
are limited to 32 KiB, 16 commands and 128-character request ids. Each generation
|
|
374
|
+
retains at most 256 receipts; at capacity new requests are rejected, never
|
|
375
|
+
silently evicted/reexecuted. Reconnect/invalidate deliberately to renew the
|
|
376
|
+
capability. The client bounds pending calls to 32 and times out unanswered calls
|
|
377
|
+
after ten seconds; disposal rejects pending calls and closes the port.
|
|
378
|
+
|
|
379
|
+
`invalidate()` changes only the connection generation and receipt cache; it
|
|
380
|
+
never resets the app itself. The canonical workspace reset increments the
|
|
381
|
+
controller revision and invokes host `onreset` synchronously, so a host binding
|
|
382
|
+
invalidated there cannot accept a delayed pre-reset reply. Do not automatically
|
|
383
|
+
retry a conflict with a newer revision: inspect the current plan first. A host
|
|
384
|
+
using an older release must feature-detect these exports and report unavailable
|
|
385
|
+
Planner control honestly while its external conversation continues.
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
When `persistence="host"`, Planner controls do not offer browser Remember or
|
|
389
|
+
legacy recovery by default: the host owns saving the current cookbook. An owner
|
|
390
|
+
that actually persists that cookbook may supply `projectPersistence`, the typed
|
|
391
|
+
canonical facade capability (`remembering`, `recoveryAvailable`, `setRemember`,
|
|
392
|
+
`recover`, `discardRecovery`). Self persistence uses the existing facade by
|
|
393
|
+
default. Reset remains available independently. The static app's layout supplies
|
|
394
|
+
its actual canonical storage capability; a live Kitchen-hosted plan supplies none.
|
|
395
|
+
Without `inference`, native assistant handles and action captures omit native
|
|
396
|
+
conversation data. Confirmed Reset still retires any private previous native
|
|
397
|
+
session so enabling inference for the next project cannot revive its thread.
|
package/agents/assistant.md
CHANGED
|
@@ -93,3 +93,52 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
93
93
|
First visit: `aiState.hydrate` decides once (nothing downloaded, no read-aloud,
|
|
94
94
|
nothing built, not dismissed) and the Planner page then shows the setup form
|
|
95
95
|
before the tabs; Continue is per visit, "I don't need AI" is remembered.
|
|
96
|
+
|
|
97
|
+
- Native mounted hosts may provide `conversationalAction`: a trusted callback
|
|
98
|
+
for the actual current user send, with a detached complete transcript and
|
|
99
|
+
AbortSignal. Returning null continues inference; returning content records
|
|
100
|
+
the host's outcome. Model replies, seeded/restored turns and explicit
|
|
101
|
+
`nativeAssistant.sendHostMessage` never invoke it. Domain consent and external
|
|
102
|
+
mutations belong to the host, never to the model. Callback failure does not
|
|
103
|
+
fall through into model execution. `nativeAssistant.reset()` aborts and
|
|
104
|
+
fences late completions, then clears native history and seed markers.
|
|
105
|
+
- Native transcript/seed persistence uses injected `conversationStorage`;
|
|
106
|
+
the mounted singleton receives the workspace storage facade. The optional
|
|
107
|
+
`PlannerHandle.workspaceStorage` lets a host draft follow the same session /
|
|
108
|
+
Remember policy. Restored data is provenance, never a new user event.
|
|
109
|
+
|
|
110
|
+
- Post-execution coaching (`src/lib/assistant/coaching.ts`) describes only the
|
|
111
|
+
actual successful initial app: fictional samples and a real visible page,
|
|
112
|
+
followed by “What else would you like your app to do?”. Later additions do
|
|
113
|
+
not trigger an automatic next-package suggestion. The shared browser/host
|
|
114
|
+
prompt grounds recommendations in the person's stated workflow or necessary
|
|
115
|
+
setup and actual catalog descriptions, never catalog order or a fixed domain
|
|
116
|
+
palette. Command receipts remain the authority for what changed.
|
|
117
|
+
|
|
118
|
+
- `entryMode: 'planning'` suppresses the empty cookbook chooser while a host-led
|
|
119
|
+
app is being conceived; default `'browse'` and deliberate cookbook navigation
|
|
120
|
+
retain browsing. The empty planning copy does not claim inference is pending.
|
|
121
|
+
- `PlannerHandle.guide` highlights actual scoped shell refs using the existing
|
|
122
|
+
highlight primitive. Arrival describes the real layout Edit control; addition
|
|
123
|
+
uses actual before/result snapshots. The command-port guide operation accepts
|
|
124
|
+
only a cached successful receipt ID, never a caller-selected menu target.
|
|
125
|
+
Guides do not focus, navigate, or mutate the app. Dismissal, timeout, reset,
|
|
126
|
+
disposal, and stale generations clear/refuse guidance. Hosts can narrate the
|
|
127
|
+
returned verified `description` in their existing conversation.
|
|
128
|
+
|
|
129
|
+
- Hosted actual application replies optionally include `spokenContent`, a short
|
|
130
|
+
literal receipt derived from successful changed controller state. Full
|
|
131
|
+
`content` remains authoritative for visible conversation and provider history.
|
|
132
|
+
Initial speech keeps fictional-demo clarity, one menu/record step, layout Edit
|
|
133
|
+
purpose, and the open app question within forty words. Later speech counts
|
|
134
|
+
actual new visible menu items; long names use a truthful generic location.
|
|
135
|
+
Hosts may speak this optional field without summarizing arbitrary model prose;
|
|
136
|
+
omitted fields retain backward-compatible full-content handling.
|
|
137
|
+
|
|
138
|
+
- Guidance uses `highlightControl` with `presentation: 'spotlight'`, not a
|
|
139
|
+
separate tour/controller. Its passive child-document veil cuts a hole around
|
|
140
|
+
the real semantic target, follows viewport/layout movement, and leaves app
|
|
141
|
+
controls and parent Happy available. The existing guide owns receipt authority,
|
|
142
|
+
Escape, timeout, reset and disposal; the primitive adds an accessible dismiss
|
|
143
|
+
button and idempotent DOM cleanup. Offscreen, hidden or detached targets remove
|
|
144
|
+
the veil. Geometry updates are immediate, with no animated movement.
|
package/agents/commands.md
CHANGED
|
@@ -31,8 +31,8 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
31
31
|
`persistence="host"`). The mount is a `CookbookApp` with `layoutEditing`, `plannerLoaders`,
|
|
32
32
|
`widgetContext` and `resolveExport`, routed by URL fragment (`setBasePath(base, 'hash')` makes
|
|
33
33
|
`appHref` write `#/...`); section pages are the framework's `CookbookSectionPage`
|
|
34
|
-
(
|
|
35
|
-
|
|
34
|
+
(the themed card default, a `heading` snippet drawing `SectionHeading`, shared count-free
|
|
35
|
+
overview defaults; remounted on a data reset), packages the planner's `PackagePage`.
|
|
36
36
|
`assistant.ts` builds a chat transport over any controller. The stores (`cookbookStore`,
|
|
37
37
|
`recipeState`) are still module singletons: one planner per page. Still planner-side and NOT yet
|
|
38
38
|
deleted because the UI uses them directly (follow-up: route the UI through commands):
|
package/agents/cookbook.md
CHANGED
|
@@ -8,7 +8,7 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
8
8
|
`https://s-m-r-t.dev/schemas/cookbook/v1.json`; import also accepts the old `.../blueprint/v1.json`)
|
|
9
9
|
holding recipes, options, layout and theme. `store.svelte.ts` is the single
|
|
10
10
|
source of truth (hydrate, debounced save, import/reset), `storage.ts` the
|
|
11
|
-
try/catch
|
|
11
|
+
try/catch document wrapper, using `planner/workspace-storage.ts` for tab-scoped session storage by default and explicit Remember opt-in local storage (key `smrt-planner:cookbook-doc:v1`; a value under the old
|
|
12
12
|
`smrt-planner:blueprint:v1` is read once, written to the new key and kept as a backup until the
|
|
13
13
|
next successful save removes it; `smrt-planner:cookbook` alone is the library selection),
|
|
14
14
|
`file.ts` the `<name>.cookbook.json` export (plus `slugify`, size and `formatSize`),
|
|
@@ -90,3 +90,5 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
90
90
|
the static layout pushes a shallow `?cookbook=<id>` entry, the mount a `#/configure/cookbooks/<id>/`
|
|
91
91
|
route, so browser Back returns to the grid and a link opens the detail. Applying regenerates the sample records from the cookbook's pack (the panel says so). Add a
|
|
92
92
|
library cookbook by adding an entry; use only existing recipe ids.
|
|
93
|
+
|
|
94
|
+
Workspace persistence retains the plan, library selection, sample context and rows in the current tab by default. Remember toggles move only those project values after destination writes succeed. Raw native conversation, seed markers, and host contact/frozen-lead drafts always remain session-only, including when Remember is enabled. A new tab restores the remembered plan with a fresh conversation and draft. Earlier durable raw thread/draft copies move safely into the current session and are excluded from durable legacy archives; conflicting old lead identifiers are retained in a session-only recovery value. Legacy local data is archived once for visible recovery before its live keys move to the current tab; explicit Remember OFF, discard recovery, and confirmed reset delete that archive. Reset preserves saved theme preferences and unrelated identity keys, invalidates native inference, and clears controller undo/replay history.
|
package/agents/shell.md
CHANGED
|
@@ -9,8 +9,8 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
9
9
|
icon, title (the layout's rename wins), description (`info.ts`: recipe `section.icon/description`,
|
|
10
10
|
`FEATURE_SECTION`, cookbook `sectionDescriptions`), Help/Options icons (`entries.ts` `optionGroups`),
|
|
11
11
|
and the section's editable overview (`SectionOverview.svelte`, see `src/lib/overviews/`; its
|
|
12
|
-
`shortcuts` widget replaces the menu cards; the grid
|
|
13
|
-
|
|
12
|
+
`shortcuts` widget replaces the menu cards; the grid defaults to `presentation="card"`, using existing themed frames;
|
|
13
|
+
explicit plain presentation remains available); in edit mode the entries follow as smrt-svelte's `ShellSectionMenu` list.
|
|
14
14
|
`SectionView.svelte` is the route page's body (the static shell is a plain `AppShell`, so it cannot
|
|
15
15
|
use `CookbookSectionPage`); `SectionHeading.svelte` is the icon/title/description heading it shares
|
|
16
16
|
with the mount. A section id outside the overview id pattern keeps the `ShellSectionMenu`
|
|
@@ -21,17 +21,19 @@ Part of the [planner guidance](../AGENTS.md). Paths are relative to `packages/pl
|
|
|
21
21
|
smrt-svelte's shell icon set (tests/section-pages.test.ts); visitor sections get `folder`.
|
|
22
22
|
- `src/lib/overviews/`: section pages as customisable overviews (smrt-svelte `./overview`, smrt#3727).
|
|
23
23
|
`definitions.ts`: one `defineOverview` per section, id = the section's layout id, static (never
|
|
24
|
-
depends on which recipes are on): `shortcuts`
|
|
25
|
-
|
|
26
|
-
`
|
|
27
|
-
|
|
24
|
+
depends on which recipes are on): `shortcuts` then the section's lead model as a full-width `records` list with
|
|
25
|
+
summaries off; automatic record counts are absent. The shared
|
|
26
|
+
`sectionOverviewDefaults` also drives CookbookApp. Explicit legacy changed.count
|
|
27
|
+
patches project the original metric definition on read, without store writes;
|
|
28
|
+
removed count wins, and unrelated overrides do not resurrect it. Custom metrics
|
|
29
|
+
and explicit record summaries remain available; `allowed` = the core types the planner
|
|
28
30
|
loads plus recipe `widget` surfaces, `models` = the catalog. `isOverviewId` is what a cookbook may
|
|
29
31
|
key: recipe sections, More, and the document's own `layout.customSections`. `registry.ts`: the one
|
|
30
32
|
registry, core widgets with loaders over the in-browser `DataSource` (capabilities in the load
|
|
31
33
|
context, never in options; a named `filter` is an error tile, the sample data has none; `chart`
|
|
32
34
|
groups the sample rows itself, the in-browser stand-in for a runtime report, for every chart style:
|
|
33
35
|
bar, line, table, pie and stat read the same points), `plannerLoaders` (metric, records, chart, and
|
|
34
|
-
`shortcuts`
|
|
36
|
+
`shortcuts` passes the shell entries through without count enrichment) for the mounted `Planner`'s `CookbookApp`, and
|
|
35
37
|
`registerRecipeWidgets` with a static, currently empty, module map. `models.ts`: the option
|
|
36
38
|
editor's model choices, shared by the page and the mount. `validate.ts`: the cookbook's
|
|
37
39
|
`overviews` field; every override goes through `checkOverviewOverride` on load and import, bad
|
package/app/404.html
CHANGED
|
@@ -3,35 +3,35 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<link href="/_app/immutable/entry/start.
|
|
7
|
-
<link href="/_app/immutable/chunks/
|
|
6
|
+
<link href="/_app/immutable/entry/start.Dr_ALXsl.js" rel="modulepreload">
|
|
7
|
+
<link href="/_app/immutable/chunks/yTc1j36D.js" rel="modulepreload">
|
|
8
8
|
<link href="/_app/immutable/chunks/DG3qFFTE.js" rel="modulepreload">
|
|
9
9
|
<link href="/_app/immutable/chunks/COiEfhsA.js" rel="modulepreload">
|
|
10
10
|
<link href="/_app/immutable/chunks/Dt-HX3Vu.js" rel="modulepreload">
|
|
11
|
-
<link href="/_app/immutable/entry/app.
|
|
11
|
+
<link href="/_app/immutable/entry/app.N1QTpsMZ.js" rel="modulepreload">
|
|
12
12
|
<link href="/_app/immutable/chunks/uBIymjUX.js" rel="modulepreload">
|
|
13
13
|
<link href="/_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
|
|
14
|
-
<link href="/_app/immutable/nodes/0.
|
|
15
|
-
<link href="/_app/immutable/chunks/
|
|
14
|
+
<link href="/_app/immutable/nodes/0.inFgEPC5.js" rel="modulepreload">
|
|
15
|
+
<link href="/_app/immutable/chunks/PiW3Dgjp.js" rel="modulepreload">
|
|
16
16
|
<link href="/_app/immutable/chunks/YUSKx8_q.js" rel="modulepreload">
|
|
17
17
|
<link href="/_app/immutable/chunks/DK8Blf1Y.js" rel="modulepreload">
|
|
18
|
-
<link href="/_app/immutable/chunks/
|
|
18
|
+
<link href="/_app/immutable/chunks/DkMzaPtY.js" rel="modulepreload">
|
|
19
19
|
<link href="/_app/immutable/chunks/Bv5jGtB8.js" rel="modulepreload">
|
|
20
|
-
<link href="/_app/immutable/chunks/
|
|
20
|
+
<link href="/_app/immutable/chunks/By9nPosf.js" rel="modulepreload">
|
|
21
21
|
<link href="/_app/immutable/chunks/DIE02RSm.js" rel="modulepreload">
|
|
22
|
-
<link href="/_app/immutable/chunks/
|
|
22
|
+
<link href="/_app/immutable/chunks/CB4gakCD.js" rel="modulepreload">
|
|
23
23
|
<link href="/_app/immutable/chunks/CUyVrfsu.js" rel="modulepreload">
|
|
24
|
-
<link href="/_app/immutable/chunks/
|
|
24
|
+
<link href="/_app/immutable/chunks/Bs5WxZDd.js" rel="modulepreload">
|
|
25
25
|
<link href="/_app/immutable/chunks/BYcBM-fh.js" rel="modulepreload">
|
|
26
|
-
<link href="/_app/immutable/chunks/
|
|
27
|
-
<link href="/_app/immutable/chunks/
|
|
28
|
-
<link href="/_app/immutable/chunks/
|
|
26
|
+
<link href="/_app/immutable/chunks/CxSE8nQW.js" rel="modulepreload">
|
|
27
|
+
<link href="/_app/immutable/chunks/BLDKU4g5.js" rel="modulepreload">
|
|
28
|
+
<link href="/_app/immutable/chunks/DwlKnCAn.js" rel="modulepreload">
|
|
29
29
|
<link href="/_app/immutable/chunks/d934w91N.js" rel="modulepreload">
|
|
30
|
-
<link href="/_app/immutable/chunks/
|
|
31
|
-
<link href="/_app/immutable/chunks/
|
|
32
|
-
<link href="/_app/immutable/chunks/
|
|
33
|
-
<link href="/_app/immutable/chunks/
|
|
34
|
-
<link href="/_app/immutable/chunks/
|
|
30
|
+
<link href="/_app/immutable/chunks/Bl9jYcfy.js" rel="modulepreload">
|
|
31
|
+
<link href="/_app/immutable/chunks/DmA8eomi.js" rel="modulepreload">
|
|
32
|
+
<link href="/_app/immutable/chunks/mdO5QRA9.js" rel="modulepreload">
|
|
33
|
+
<link href="/_app/immutable/chunks/C9ckpR0C.js" rel="modulepreload">
|
|
34
|
+
<link href="/_app/immutable/chunks/VIYltq2Y.js" rel="modulepreload">
|
|
35
35
|
<link href="/_app/immutable/chunks/BMgzWMdF.js" rel="modulepreload">
|
|
36
36
|
<link href="/_app/immutable/chunks/CgAkqYsL.js" rel="modulepreload">
|
|
37
37
|
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<link href="/_app/immutable/assets/webmcp-ui-context.hO24Ni5w.css" rel="stylesheet">
|
|
43
43
|
<link href="/_app/immutable/assets/data.CVlX_W0i.css" rel="stylesheet">
|
|
44
44
|
<link href="/_app/immutable/assets/forms.BRdbPdvs.css" rel="stylesheet">
|
|
45
|
-
<link href="/_app/immutable/assets/AppShell.
|
|
45
|
+
<link href="/_app/immutable/assets/AppShell.Y0ysizZK.css" rel="stylesheet">
|
|
46
46
|
<link href="/_app/immutable/assets/SectionIcons.BGFcFuOf.css" rel="stylesheet">
|
|
47
47
|
<link href="/_app/immutable/assets/SectionActions.BE1CPmxk.css" rel="stylesheet">
|
|
48
48
|
<link href="/_app/immutable/assets/0.BaRFeYGU.css" rel="stylesheet">
|
|
@@ -51,15 +51,15 @@
|
|
|
51
51
|
<div style="display: contents">
|
|
52
52
|
<script>
|
|
53
53
|
{
|
|
54
|
-
|
|
54
|
+
__sveltekit_12e5i1j = {
|
|
55
55
|
base: ""
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
const element = document.currentScript.parentElement;
|
|
59
59
|
|
|
60
60
|
Promise.all([
|
|
61
|
-
import("/_app/immutable/entry/start.
|
|
62
|
-
import("/_app/immutable/entry/app.
|
|
61
|
+
import("/_app/immutable/entry/start.Dr_ALXsl.js"),
|
|
62
|
+
import("/_app/immutable/entry/app.N1QTpsMZ.js")
|
|
63
63
|
]).then(([kit, app]) => {
|
|
64
64
|
kit.start(app, element);
|
|
65
65
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer smrt.reset,smrt.structure;@layer smrt.theme{.settings.svelte-1adyoey{gap:var(--smrt-spacing-4);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:end;display:grid}.field.svelte-1adyoey{gap:var(--smrt-spacing-1);display:grid}.percent.svelte-1adyoey{align-items:flex-end;gap:var(--smrt-spacing-2);display:flex}.percent.svelte-1adyoey .smrt-number{flex:1}.percent-sign.svelte-1adyoey{padding-bottom:var(--smrt-spacing-2);color:var(--smrt-color-on-surface-variant)}.switch.svelte-1adyoey small:where(.svelte-1adyoey),.meta.svelte-1adyoey{color:var(--smrt-color-on-surface-variant)}.tax-codes.svelte-1adyoey{gap:var(--smrt-spacing-2);margin-top:var(--smrt-spacing-4);display:grid}.tax-codes.svelte-1adyoey h3:where(.svelte-1adyoey),.tax-codes.svelte-1adyoey p:where(.svelte-1adyoey){margin:0}.tax-codes.svelte-1adyoey ul:where(.svelte-1adyoey){gap:var(--smrt-spacing-1) var(--smrt-spacing-4);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.tax-codes.svelte-1adyoey li:where(.svelte-1adyoey){display:grid}.tax-codes.svelte-1adyoey .rates:where(.svelte-1adyoey){color:var(--smrt-color-on-surface-variant);font-size:.875rem}.cookbooks.svelte-mzas8k{gap:var(--smrt-spacing-4);display:grid}h2.svelte-mzas8k,h3.svelte-mzas8k,h4.svelte-mzas8k,p.svelte-mzas8k{margin:0}h3.svelte-mzas8k,h4.svelte-mzas8k{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}.meta.svelte-mzas8k,.summary.svelte-mzas8k{color:var(--smrt-color-on-surface-variant)}.grid.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));margin:0;padding:0;list-style:none;display:grid}.card.svelte-mzas8k{gap:var(--smrt-spacing-2);width:100%;height:100%;padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);background:var(--smrt-surface-panel);color:inherit;font:inherit;text-align:start;cursor:pointer;justify-items:start;display:grid;position:relative}.card.svelte-mzas8k:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.icon.svelte-mzas8k{color:var(--smrt-color-primary);flex:none}.heading.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-2);min-inline-size:0;padding-inline-end:4rem;display:flex}.name.svelte-mzas8k{font-weight:var(--smrt-typography-weight-semibold)}.badge.svelte-mzas8k{top:var(--smrt-spacing-3);right:var(--smrt-spacing-3);padding:0 var(--smrt-spacing-2);border-radius:var(--smrt-radius-full);background:var(--smrt-color-primary);color:var(--smrt-color-on-primary);font-size:.75rem;position:absolute}.preview.svelte-mzas8k{gap:var(--smrt-spacing-4);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-lg,.75rem);display:grid}.block.svelte-mzas8k{gap:var(--smrt-spacing-2);display:grid}.chips.svelte-mzas8k,.menu.svelte-mzas8k ul:where(.svelte-mzas8k){margin:0;padding:0;list-style:none}.chips.svelte-mzas8k{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.chips.svelte-mzas8k li:where(.svelte-mzas8k){padding:0 var(--smrt-spacing-3);border-radius:var(--smrt-radius-full);background:var(--smrt-color-surface-container)}.menu.svelte-mzas8k{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));display:grid}.menu.svelte-mzas8k ul:where(.svelte-mzas8k){gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-1);display:grid}.actions.svelte-mzas8k{align-items:center;gap:var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.back.svelte-mzas8k{justify-self:start;margin-inline-start:calc(-1 * var(--smrt-spacing-2))}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus{outline:none}.preview.svelte-mzas8k h2:where(.svelte-mzas8k):focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}[data-smrt-view-transition] .swap.svelte-mzas8k{view-transition-name:planner-cookbooks}::view-transition-group(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-old(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}::view-transition-new(planner-cookbooks){animation-duration:var(--smrt-duration-short4);animation-timing-function:var(--smrt-easing-standard)}.project.svelte-1ij12un{gap:var(--smrt-spacing-3);display:grid}h2.svelte-1ij12un,p.svelte-1ij12un{margin:0}.meta.svelte-1ij12un{color:var(--smrt-color-on-surface-variant)}.actions.svelte-1ij12un{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.export.svelte-17nkvtk{gap:var(--smrt-spacing-5);min-inline-size:0;display:grid}h2.svelte-17nkvtk,h3.svelte-17nkvtk,p.svelte-17nkvtk,dl.svelte-17nkvtk,dd.svelte-17nkvtk,pre.svelte-17nkvtk{margin:0}h2.svelte-17nkvtk{font:var(--smrt-typography-title-medium-font)}h3.svelte-17nkvtk{font:var(--smrt-typography-title-small-font)}.eyebrow.svelte-17nkvtk{color:var(--smrt-color-on-surface-variant);font:var(--smrt-typography-label-large-font)}.export-intro.svelte-17nkvtk,.build-step.svelte-17nkvtk,.copy-step.svelte-17nkvtk{gap:var(--smrt-spacing-3);min-inline-size:0;display:grid}.next-steps.svelte-17nkvtk{gap:var(--smrt-spacing-4);display:grid}.build-step.svelte-17nkvtk{padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken)}.block.svelte-17nkvtk{gap:var(--smrt-spacing-3);min-inline-size:0;display:grid}.meta.svelte-17nkvtk,.notice.svelte-17nkvtk,.quiet.svelte-17nkvtk{color:var(--smrt-color-on-surface-variant)}.notice.svelte-17nkvtk:empty{display:none}.summary.svelte-17nkvtk{gap:var(--smrt-spacing-2) var(--smrt-spacing-4);grid-template-columns:max-content minmax(0,1fr);align-items:baseline;display:grid}dt.svelte-17nkvtk{font-weight:var(--smrt-typography-weight-semibold);white-space:nowrap}.chips.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.actions.svelte-17nkvtk{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.export.svelte-17nkvtk .prompt{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);white-space:pre-wrap;overflow-wrap:anywhere;resize:none;max-block-size:20rem;overflow:auto}code.svelte-17nkvtk{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);overflow-wrap:anywhere}.command.svelte-17nkvtk{align-items:center;gap:var(--smrt-spacing-2) var(--smrt-spacing-3);flex-wrap:wrap;display:flex}.command.svelte-17nkvtk code:where(.svelte-17nkvtk){min-inline-size:0;padding:var(--smrt-spacing-2) var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);flex:16rem}.json.svelte-17nkvtk{max-block-size:20rem;padding:var(--smrt-spacing-3);border:var(--smrt-hairline);border-radius:var(--smrt-control-radius);background:var(--smrt-surface-sunken);font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:var(--smrt-typography-body-small-size);white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto}.replace.svelte-17nkvtk{border-block-start:var(--smrt-hairline);padding-block-start:var(--smrt-spacing-4)}@media (width<=30rem){.summary.svelte-17nkvtk{grid-template-columns:minmax(0,1fr)}.actions.svelte-17nkvtk,.command.svelte-17nkvtk{flex-direction:column;align-items:stretch}.actions.svelte-17nkvtk>[data-smrt-component=Button],.command.svelte-17nkvtk>[data-smrt-component=Button]{inline-size:100%}}@media (forced-colors:active){.build-step.svelte-17nkvtk,.command.svelte-17nkvtk code:where(.svelte-17nkvtk),.json.svelte-17nkvtk{border-color:canvastext}}h3.svelte-1tvhds4,h4.svelte-1tvhds4,p.svelte-1tvhds4{margin:0}.card.svelte-1tvhds4{align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.card.selected.svelte-1tvhds4{border-color:var(--smrt-color-primary)}.head.svelte-1tvhds4{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-2);display:flex}h3.svelte-1tvhds4{font:var(--smrt-typography-title-medium-font);letter-spacing:var(--smrt-typography-title-medium-tracking)}h4.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font:var(--smrt-typography-label-medium-font);letter-spacing:var(--smrt-typography-label-medium-tracking);font-weight:var(--smrt-typography-weight-semibold);text-transform:uppercase}.meta.svelte-1tvhds4{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.plain.svelte-1tvhds4{gap:var(--smrt-spacing-1);font-size:var(--smrt-typography-body-medium-size);margin:0;padding:0;list-style:none;display:grid}.kind.svelte-1tvhds4{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size);margin-inline-end:var(--smrt-spacing-1)}.reasons.svelte-1tvhds4{margin-block-end:var(--smrt-spacing-2)}.foot.svelte-1tvhds4{gap:var(--smrt-spacing-1);margin-top:var(--smrt-spacing-2);display:grid}code.svelte-1tvhds4{font-family:var(--smrt-font-family-mono,ui-monospace, monospace);font-size:.85em}.where.svelte-1tvhds4{margin-inline-start:.35em}.summary.svelte-1tvhds4{font-size:var(--smrt-typography-body-medium-size)}@media (forced-colors:active){.card.selected.svelte-1tvhds4{border-color:highlight;outline:.125rem solid highlight}}.features.svelte-7kphei{gap:var(--smrt-spacing-3);display:grid}h2.svelte-7kphei,p.svelte-7kphei{margin:0}.meta.svelte-7kphei,.notice.svelte-7kphei,.empty.svelte-7kphei,.count.svelte-7kphei{color:var(--smrt-color-on-surface-variant)}.count.svelte-7kphei{font-size:var(--smrt-typography-body-medium-size);font-weight:400}.notice.svelte-7kphei:empty{display:none}.chips.svelte-7kphei{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.rows.svelte-7kphei{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.rows.svelte-7kphei li:where(.svelte-7kphei){align-items:center;gap:var(--smrt-spacing-3);padding:var(--smrt-spacing-3) var(--smrt-spacing-4);display:flex}.rows.svelte-7kphei li:where(.svelte-7kphei)+li:where(.svelte-7kphei){border-top:var(--smrt-hairline)}.rows.svelte-7kphei li.selected:where(.svelte-7kphei){background:color-mix(in srgb, currentColor calc(var(--smrt-state-selected) * 100%), transparent)}.includes.svelte-7kphei{color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-body-small-size)}.icon.svelte-7kphei{color:var(--smrt-color-on-surface-variant);display:inline-flex}.text.svelte-7kphei{flex:1;min-width:0;display:grid}.bar.svelte-7kphei{justify-content:space-between;align-items:center;gap:var(--smrt-spacing-3);display:flex}.name.svelte-7kphei{align-items:baseline;gap:var(--smrt-spacing-2);display:flex}.tag.svelte-7kphei{padding:0 var(--smrt-spacing-2);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);color:var(--smrt-color-on-surface-variant);font-size:var(--smrt-typography-label-small-size)}.text.svelte-7kphei a:where(.svelte-7kphei){width:fit-content;color:var(--smrt-color-on-surface);font-weight:500}.text.svelte-7kphei .meta:where(.svelte-7kphei){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (forced-colors:active){.rows.svelte-7kphei li.selected:where(.svelte-7kphei){outline-offset:-.125rem;outline:.125rem solid highlight}}.features.svelte-q9yl1j{gap:var(--smrt-spacing-3);display:grid}h2.svelte-q9yl1j,p.svelte-q9yl1j{margin:0}section.svelte-q9yl1j{gap:var(--smrt-spacing-2);display:grid}.meta.svelte-q9yl1j,.count.svelte-q9yl1j{color:var(--smrt-color-on-surface-variant)}.count.svelte-q9yl1j{font-size:var(--smrt-typography-body-medium-size)}.notice.svelte-q9yl1j:empty{display:none}.chips.svelte-q9yl1j{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}.cards.svelte-q9yl1j{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));margin:0;padding:0;list-style:none;display:grid}h2.svelte-1d5gge1,p.svelte-1d5gge1{margin:0}.meta.svelte-1d5gge1,.description.svelte-1d5gge1,.notice.svelte-1d5gge1{color:var(--smrt-color-on-surface-variant)}.notice.svelte-1d5gge1:empty{display:none}.cards.svelte-1d5gge1{gap:var(--smrt-spacing-3);grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));margin:0;padding:0;list-style:none;display:grid}.cards.svelte-1d5gge1 li:where(.svelte-1d5gge1){align-content:start;gap:var(--smrt-spacing-2);padding:var(--smrt-spacing-4);border:var(--smrt-hairline);border-radius:var(--smrt-radius-large);display:grid}.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:var(--smrt-color-primary)}.sub.svelte-1d5gge1{gap:var(--smrt-spacing-1);display:grid}@media (forced-colors:active){.cards.svelte-1d5gge1 li.selected:where(.svelte-1d5gge1){border-color:highlight;outline:.125rem solid highlight}}.pane.svelte-d580bl{gap:var(--smrt-spacing-4);display:grid}.meta.svelte-d580bl{color:var(--smrt-color-on-surface-variant);margin:0}.theme.svelte-18m8le4{gap:1.25rem;max-inline-size:72rem;display:grid}.cards.svelte-18m8le4{grid-template-columns:repeat(auto-fill,minmax(min(10rem,100%),1fr));gap:.75rem;display:grid}.choice.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);min-block-size:8.5rem;color:var(--smrt-color-on-surface);text-align:start;cursor:pointer;transition:border-color var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), background var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease), transform var(--smrt-duration-short3,.15s) var(--smrt-easing-standard,ease);align-content:start;gap:.8rem;padding:.85rem;display:grid}.choice.svelte-18m8le4:hover{border-color:var(--smrt-color-primary);background:var(--smrt-surface-raised);transform:translateY(-2px)}.choice.selected.svelte-18m8le4{border:2px solid var(--smrt-color-primary);background:var(--smrt-color-primary-container);color:var(--smrt-color-on-primary-container);padding:calc(.85rem - 1px)}.choice.svelte-18m8le4:focus-visible,.advanced.svelte-18m8le4:focus-visible,.wheel.svelte-18m8le4:focus-within,select.svelte-18m8le4:focus-visible{outline:var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color);outline-offset:var(--smrt-focus-ring-offset)}.choice-name.svelte-18m8le4{align-items:center;gap:.55rem;font-size:1rem;font-weight:700;line-height:1.2;display:inline-flex}.choice-icon.svelte-18m8le4{block-size:1.5rem;inline-size:1.5rem;color:var(--smrt-color-primary);flex:none;place-items:center;font-size:1.35rem;display:inline-grid}.preview.svelte-18m8le4{border:1px solid color-mix(in srgb, var(--smrt-planner-preview-ink) 20%, transparent);background:var(--smrt-planner-preview-bg);border-radius:.4rem;block-size:4.5rem;inline-size:100%;display:flex;overflow:hidden}.preview-sidebar.svelte-18m8le4{background:var(--smrt-planner-preview-primary);align-content:start;gap:.35rem;inline-size:23%;padding:.5rem .3rem;display:grid}.preview-sidebar.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-surface);opacity:.8;border-radius:1rem;block-size:.22rem}.preview-main.svelte-18m8le4{flex:1;align-content:start;gap:.4rem;padding:.6rem;display:grid}.preview-title.svelte-18m8le4{background:var(--smrt-planner-preview-ink);opacity:.7;border-radius:1rem;block-size:.32rem;inline-size:55%}.preview-body.svelte-18m8le4{background:var(--smrt-planner-preview-surface);border-radius:.2rem;gap:.25rem;padding:.35rem;display:grid}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4){background:var(--smrt-planner-preview-primary);opacity:.7;border-radius:1rem;block-size:.2rem}.preview-body.svelte-18m8le4 span:where(.svelte-18m8le4):last-child{opacity:.35;inline-size:70%}.scheme.svelte-18m8le4{min-block-size:8.5rem}.choice-hint.svelte-18m8le4{color:var(--smrt-color-on-surface-variant);font-size:.85rem}.brand.svelte-18m8le4,.shape.svelte-18m8le4{flex-wrap:wrap;align-items:end;gap:1rem;display:flex}.shape.svelte-18m8le4 .field:where(.svelte-18m8le4){min-inline-size:min(10rem,100%)}.field.svelte-18m8le4{gap:.4rem;display:grid}.pick.svelte-18m8le4{align-items:center;gap:.65rem;display:flex}.wheel.svelte-18m8le4{block-size:3rem;inline-size:3rem;box-shadow:0 0 0 1px var(--smrt-hairline-color);cursor:pointer;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.wheel.svelte-18m8le4:after{content:"";background:var(--smrt-planner-picked-color);block-size:1.7rem;inline-size:1.7rem;box-shadow:var(--smrt-elevation-1);pointer-events:none;border:2px solid #fff;border-radius:50%}.wheel.svelte-18m8le4 input:where(.svelte-18m8le4){opacity:0;cursor:pointer;block-size:100%;inline-size:100%;position:absolute;inset:0}.font-field.svelte-18m8le4{min-inline-size:min(14rem,100%)}select.svelte-18m8le4{border:var(--smrt-control-border);border-radius:var(--smrt-radius-medium,.5rem);background:var(--smrt-surface-control);min-block-size:3rem;color:var(--smrt-color-on-surface);font:inherit;cursor:pointer;padding:.6rem 2rem .6rem .8rem}.error.svelte-18m8le4{color:var(--smrt-color-error);margin:0}.advanced.svelte-18m8le4{border:var(--smrt-hairline);border-radius:var(--smrt-radius-large,.75rem);background:var(--smrt-surface-panel);color:var(--smrt-color-on-surface);align-items:center;gap:.8rem;padding:1rem;text-decoration:none;display:flex}.advanced.svelte-18m8le4:hover{border-color:var(--smrt-color-primary)}.advanced-icon.svelte-18m8le4{background:var(--smrt-color-primary-container);block-size:2.8rem;inline-size:2.8rem;color:var(--smrt-color-on-primary-container);border-radius:.65rem;flex:none;place-items:center;font:700 1rem ui-monospace,monospace;display:grid}.advanced.svelte-18m8le4 strong:where(.svelte-18m8le4),.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){display:block}.advanced.svelte-18m8le4 small:where(.svelte-18m8le4){color:var(--smrt-color-on-surface-variant);margin-top:.15rem}.arrow.svelte-18m8le4{margin-inline-start:auto;font-size:1.3rem}@media (forced-colors:active){.choice.selected.svelte-18m8le4{outline-offset:.125rem;border-color:highlight;outline:.125rem solid highlight}.preview.svelte-18m8le4,.wheel.svelte-18m8le4{forced-color-adjust:none}}.planner.svelte-zuxcuo .tab-panel{padding-top:var(--smrt-spacing-4)}[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-nav,[data-smrt-view-transition] .planner.svelte-zuxcuo .tabs-links{view-transition-name:planner-tabs}.planner.svelte-zuxcuo .smrt-tabs__nav{scroll-snap-type:x proximity;overscroll-behavior-x:contain}.planner.svelte-zuxcuo .smrt-tabs__tab-button{scroll-snap-align:start}@property --smrt-planner-controls-tabs-fade{syntax:"<length>";inherits:false;initial-value:0}@supports (animation-timeline:scroll()){.planner.svelte-zuxcuo .smrt-tabs__nav{-webkit-mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);mask-image:linear-gradient(to right, black calc(100% - var(--smrt-planner-controls-tabs-fade)), transparent);animation:linear both svelte-zuxcuo-planner-tabs-fade;animation-timeline:scroll(self inline)}@keyframes svelte-zuxcuo-planner-tabs-fade{0%{--smrt-planner-controls-tabs-fade:3rem}to{--smrt-planner-controls-tabs-fade:0rem}}}.pane.svelte-zuxcuo{gap:var(--smrt-spacing-3);display:grid}.pane[hidden].svelte-zuxcuo{display:none}.meta.svelte-zuxcuo{color:var(--smrt-color-on-surface-variant);margin:0}main.svelte-1uha8ag{width:min(100%,72rem);padding:var(--smrt-spacing-6);margin-inline:auto}.first-run.svelte-1uha8ag{gap:var(--smrt-spacing-4);display:grid}.first-run.svelte-1uha8ag h1:where(.svelte-1uha8ag),.first-run.svelte-1uha8ag p:where(.svelte-1uha8ag){margin:0}.actions.svelte-1uha8ag{gap:var(--smrt-spacing-2);flex-wrap:wrap;display:flex}}
|