@happyvertical/smrt-planner 0.57.12 → 0.57.13
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/3dpUaAuL.js +1 -0
- package/app/_app/immutable/chunks/{BxyJ_Q7v.js → B7IsOdeU.js} +1 -1
- package/app/_app/immutable/chunks/{8MGlmWc0.js → BErRmq61.js} +1 -1
- package/app/_app/immutable/chunks/BFzGVZ83.js +1 -0
- package/app/_app/immutable/chunks/{DU3stPaX.js → BLDa0UGj.js} +1 -1
- package/app/_app/immutable/chunks/BMXU0KTB.js +1 -0
- package/app/_app/immutable/chunks/{B88mVEob.js → B_D0zDev.js} +1 -1
- package/app/_app/immutable/chunks/{2dmW8nz3.js → BmSVFsOo.js} +2 -2
- package/app/_app/immutable/chunks/{CsaWd8kG.js → Bs5WxZDd.js} +1 -1
- package/app/_app/immutable/chunks/By9nPosf.js +1 -0
- package/app/_app/immutable/chunks/CB9iikrD.js +4 -0
- package/app/_app/immutable/chunks/{pEiNEXSh.js → CBxjHrPs.js} +1 -1
- package/app/_app/immutable/chunks/CO-Ek-HE.js +1 -0
- package/app/_app/immutable/chunks/{oV81RcfI.js → COQfu_Wm.js} +1 -1
- package/app/_app/immutable/chunks/{DDtOXC2p.js → CQ3bytDT.js} +1 -1
- package/app/_app/immutable/chunks/{D4791-Ex.js → CQOJdp0U.js} +1 -1
- package/app/_app/immutable/chunks/{CQFoqqzT.js → CT1UgNrl.js} +1 -1
- package/app/_app/immutable/chunks/CrMrQCWf.js +1 -0
- package/app/_app/immutable/chunks/{BTm4M8Ke.js → CwTLkgbW.js} +1 -1
- package/app/_app/immutable/chunks/{BCvXlTRf.js → CyuTEXp6.js} +1 -1
- package/app/_app/immutable/chunks/CzqXjCHa.js +16 -0
- package/app/_app/immutable/chunks/DMDdJExi.js +10 -0
- package/app/_app/immutable/chunks/{_CcVkMEQ.js → DPbSjNti.js} +1 -1
- package/app/_app/immutable/chunks/{BgtC60Dj.js → DSKWzY3b.js} +2 -2
- package/app/_app/immutable/chunks/{ByKA-VaR.js → DcYfN1RJ.js} +1 -1
- package/app/_app/immutable/chunks/KILEpkAY.js +26 -0
- package/app/_app/immutable/chunks/Uwmgg65i.js +1 -0
- package/app/_app/immutable/chunks/XcCBLn0p.js +2 -0
- package/app/_app/immutable/chunks/{bBI0F4nt.js → aqYPhamJ.js} +1 -1
- package/app/_app/immutable/chunks/{38SS-Q6Y.js → c4Y8im5f.js} +22 -22
- package/app/_app/immutable/chunks/{DbH3RuTE.js → gObjQOc6.js} +1 -1
- package/app/_app/immutable/chunks/{BQgbhyQu.js → jY83yXmZ.js} +1 -1
- package/app/_app/immutable/chunks/k-HWowNp.js +2 -0
- package/app/_app/immutable/entry/{app.C8En00Ny.js → app.BFvVYIAu.js} +2 -2
- package/app/_app/immutable/entry/start.CjnnBAhi.js +1 -0
- package/app/_app/immutable/nodes/0.BV0A9Ub7.js +7 -0
- package/app/_app/immutable/nodes/{1.CoV_40km.js → 1.B8lnDjjl.js} +1 -1
- package/app/_app/immutable/nodes/10.Dga6nV_M.js +3 -0
- package/app/_app/immutable/nodes/{11.Csg6XAcG.js → 11.SN8IoTqm.js} +1 -1
- package/app/_app/immutable/nodes/{12.CuTHLuEu.js → 12.CmhheIVU.js} +1 -1
- package/app/_app/immutable/nodes/{13.CNdfx5uO.js → 13.Eh2aPgMP.js} +1 -1
- package/app/_app/immutable/nodes/14.ReLktgLz.js +1 -0
- package/app/_app/immutable/nodes/2.Dc32ZcWd.js +22 -0
- package/app/_app/immutable/nodes/{3.DC8-sgUI.js → 3.CuIErDvM.js} +1 -1
- package/app/_app/immutable/nodes/{4.DcX0DIX9.js → 4.62S4SMa5.js} +1 -1
- package/app/_app/immutable/nodes/{5.Opk77twi.js → 5.DZx2uQQp.js} +1 -1
- package/app/_app/immutable/nodes/{6.Uk9tXC7t.js → 6.Dzh2j8Eu.js} +1 -1
- package/app/_app/immutable/nodes/7.BndE5mEj.js +1 -0
- package/app/_app/immutable/nodes/{8.CacSxuCP.js → 8.B79dJpLW.js} +1 -1
- package/app/_app/immutable/nodes/{9.z7vXbrbH.js → 9.Di1DpDGF.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/5TDxHd66.js +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/dist/data/source.js
CHANGED
|
@@ -4,6 +4,7 @@ import { DEFAULT_SAMPLE_ROWS, DEFAULT_SAMPLE_TAX_RATE, EPOCH, fakeId, fakeRecord
|
|
|
4
4
|
import { defaultTaxCode, MoneyValidationError, moneyCurrency, sampleTaxCodes, settleDocument, } from "./money.js";
|
|
5
5
|
import { getSamplePricing, getSampleTaxRate } from "./packs.js";
|
|
6
6
|
import { fakeAllocations } from "./payments.js";
|
|
7
|
+
import { clearSampleContext } from "./sample-context.js";
|
|
7
8
|
export function isRecordRef(value) {
|
|
8
9
|
return (typeof value === 'object' &&
|
|
9
10
|
value !== null &&
|
|
@@ -573,6 +574,7 @@ export function createMemoryDataSource(options = {}) {
|
|
|
573
574
|
return true;
|
|
574
575
|
},
|
|
575
576
|
reset() {
|
|
577
|
+
clearSampleContext();
|
|
576
578
|
tables.clear();
|
|
577
579
|
created = 0;
|
|
578
580
|
clearStoredData(storage);
|
package/dist/index.d.ts
CHANGED
|
@@ -6,18 +6,25 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
export type { BrowserAssistantTransport, PlannerConversationSeed, } from './assistant/transport.ts';
|
|
9
10
|
export { type ByoPresetDefinition, type ConfigResult, type CredentialPersistence, type InferenceConfig, type InferenceMode, loadInferenceConfig, parseInferenceConfig, } from './inference/config.ts';
|
|
10
11
|
export { createHostChat, type HostChatOptions, type HostRequest, } from './inference/host.ts';
|
|
11
12
|
export { createOpenAIChat, testConnection } from './inference/openai.ts';
|
|
12
13
|
export { type KitchenConfig, type KitchenEndpoint, type KitchenOutcome, type KitchenResult, parseKitchenConfig, sendToKitchen, } from './kitchen/client.ts';
|
|
13
14
|
export { KITCHEN_FRAGMENT_KEY, type KitchenFragment, readKitchenFragment, } from './kitchen/fragment.ts';
|
|
14
15
|
export { createPlannerAssistant, type PlannerAssistant, type PlannerChatInference, type PlannerConfigInference, type PlannerInference, } from './planner/assistant.ts';
|
|
16
|
+
export type { PlannerBridgeApplyReply, PlannerBridgeContext, PlannerBridgeExecute, PlannerBridgeRequest, PlannerBridgeResult, PlannerBridgeSnapshot, PlannerCommandPortClient, } from './planner/bridge.ts';
|
|
17
|
+
export { bindPlannerCommandPort, connectPlannerCommandPort, } from './planner/bridge.ts';
|
|
15
18
|
export * from './planner/commands/index.ts';
|
|
19
|
+
export { capturePlannerExport } from './planner/export-context.ts';
|
|
20
|
+
export type { PlannerGuideHandle, PlannerGuideResult, } from './planner/guide.ts';
|
|
16
21
|
export { default as HostPlanner } from './planner/host/HostPlanner.svelte';
|
|
17
22
|
export { type CallKitchenTool, createHostSession, type HostPlan, type HostSession, } from './planner/host/session.svelte.ts';
|
|
23
|
+
export type { PlannerHostReplyResult } from './planner/host-reply.ts';
|
|
24
|
+
export { applyPlannerHostReply } from './planner/host-reply.ts';
|
|
18
25
|
export { plannerController } from './planner/instance.ts';
|
|
19
26
|
export { default as Planner } from './planner/Planner.svelte';
|
|
20
27
|
export { default as PlannerControls } from './planner/PlannerControls.svelte';
|
|
21
28
|
export { PLANNER_SHELL_EDGE_TOGGLES, PLANNER_SHELL_PANEL_DEFAULTS, plannerShellProps, } from './planner/shell.ts';
|
|
22
|
-
export type { PlannerBackLink, PlannerHandle, PlannerProps, } from './planner/types.ts';
|
|
29
|
+
export type { PlannerBackLink, PlannerExportAction, PlannerExportContext, PlannerHandle, PlannerProjectPersistence, PlannerProps, } from './planner/types.ts';
|
|
23
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,KAAK,eAAe,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,9 +12,12 @@ export { createOpenAIChat, testConnection } from "./inference/openai.js";
|
|
|
12
12
|
export { parseKitchenConfig, sendToKitchen, } from "./kitchen/client.js";
|
|
13
13
|
export { KITCHEN_FRAGMENT_KEY, readKitchenFragment, } from "./kitchen/fragment.js";
|
|
14
14
|
export { createPlannerAssistant, } from "./planner/assistant.js";
|
|
15
|
+
export { bindPlannerCommandPort, connectPlannerCommandPort, } from "./planner/bridge.js";
|
|
15
16
|
export * from "./planner/commands/index.js";
|
|
17
|
+
export { capturePlannerExport } from "./planner/export-context.js";
|
|
16
18
|
export { default as HostPlanner } from './planner/host/HostPlanner.svelte';
|
|
17
19
|
export { createHostSession, } from "./planner/host/session.svelte.js";
|
|
20
|
+
export { applyPlannerHostReply } from "./planner/host-reply.js";
|
|
18
21
|
export { plannerController } from "./planner/instance.js";
|
|
19
22
|
export { default as Planner } from './planner/Planner.svelte';
|
|
20
23
|
export { default as PlannerControls } from './planner/PlannerControls.svelte';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/library/state.svelte.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,cAAM,aAAa;IACjB,MAAM,gBAA+B;IACrC,oEAAoE;IACpE,WAAW,gBAA+B;IAE1C,iEAAiE;IACjE,IAAI,CAAC,OAAO,GAAE,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/library/state.svelte.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,eAAO,MAAM,YAAY,0BAA0B,CAAC;AACpD,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,cAAM,aAAa;IACjB,MAAM,gBAA+B;IACrC,oEAAoE;IACpE,WAAW,gBAA+B;IAE1C,iEAAiE;IACjE,IAAI,CAAC,OAAO,GAAE,OAAO,GAAG,IAAyB,GAAG,IAAI;IAYxD,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,OAAO,GAAG,IAAyB,GAC3C,IAAI;CAWR;AAED,eAAO,MAAM,YAAY,eAAsB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { browserStorage } from "../cookbook/storage.js";
|
|
2
1
|
import { setSamplePack } from "../data/packs.js";
|
|
2
|
+
import { workspaceStorage } from "../planner/workspace-storage.js";
|
|
3
3
|
/** Which cookbook the visitor last applied; a UI note, not part of the cookbook. */
|
|
4
4
|
export const COOKBOOK_KEY = 'smrt-planner:cookbook';
|
|
5
5
|
/** The `workFingerprint` of the document the visitor last applied, as applied. */
|
|
@@ -9,7 +9,7 @@ class CookbookState {
|
|
|
9
9
|
/** What applying `active` set up, to tell later edits from none. */
|
|
10
10
|
appliedWork = $state(null);
|
|
11
11
|
/** Read the remembered cookbook (browser only; never throws). */
|
|
12
|
-
load(storage =
|
|
12
|
+
load(storage = workspaceStorage()) {
|
|
13
13
|
try {
|
|
14
14
|
this.active = storage?.getItem(COOKBOOK_KEY) ?? null;
|
|
15
15
|
this.appliedWork = storage?.getItem(APPLIED_WORK_KEY) ?? null;
|
|
@@ -21,7 +21,7 @@ class CookbookState {
|
|
|
21
21
|
// The sample data follows the cookbook the visitor last applied.
|
|
22
22
|
setSamplePack(this.active);
|
|
23
23
|
}
|
|
24
|
-
select(id, work = null, storage =
|
|
24
|
+
select(id, work = null, storage = workspaceStorage()) {
|
|
25
25
|
this.active = id;
|
|
26
26
|
this.appliedWork = work;
|
|
27
27
|
try {
|
|
@@ -16,7 +16,7 @@ import type { CatalogModel } from '../catalog/types.ts';
|
|
|
16
16
|
* `undefined` for an id no overview can have (a hand-edited layout's custom
|
|
17
17
|
* section id outside the overview id pattern): the page then shows its menu.
|
|
18
18
|
*/
|
|
19
|
-
export declare function sectionOverview(sectionId: string): OverviewDefinition | undefined;
|
|
19
|
+
export declare function sectionOverview(sectionId: string, override?: unknown): OverviewDefinition | undefined;
|
|
20
20
|
/**
|
|
21
21
|
* A record view's overview id (smrt#3718): `detail:<pkg>.<Model>`, the
|
|
22
22
|
* catalog package id and class name, one per model kind. Spelled by the
|
|
@@ -53,7 +53,7 @@ export declare function detailOverview(id: string): OverviewDefinition | undefin
|
|
|
53
53
|
*/
|
|
54
54
|
export declare function detailOverviewFor(id: string, inApp: ReadonlySet<string>): OverviewDefinition | undefined;
|
|
55
55
|
/** The definition behind any overview id: a section's or a record view's. */
|
|
56
|
-
export declare function overviewDefinition(id: string): OverviewDefinition | undefined;
|
|
56
|
+
export declare function overviewDefinition(id: string, override?: unknown): OverviewDefinition | undefined;
|
|
57
57
|
/**
|
|
58
58
|
* Whether `id` names an overview in a cookbook with this layout: a section a
|
|
59
59
|
* recipe suggests, More, one of the layout's custom sections, or a record
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,KAAK,kBAAkB,EAOxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyDxD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,OAAO,GACjB,kBAAkB,GAAG,SAAS,CAkBhC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,GACT;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAOxD;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAsBzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,kBAAkB,GAAG,SAAS,CAmBhC;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,OAAO,GACjB,kBAAkB,GAAG,SAAS,CAIhC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAUtE"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* on), so a saved override always resolves against the same defaults: the
|
|
9
9
|
* cookbook loader, the import and the page agree on what is canonical.
|
|
10
10
|
*/
|
|
11
|
-
import { defineOverview, OVERVIEW_DEFAULT_MAX_WIDGETS, OVERVIEW_PAGE_ID_PATTERN, RECORD_OVERVIEW_MAX_METRICS, recordOverview, recordOverviewId, sectionDefaultWidget, } from '@happyvertical/smrt-svelte/overview';
|
|
11
|
+
import { defineOverview, OVERVIEW_DEFAULT_MAX_WIDGETS, OVERVIEW_PAGE_ID_PATTERN, RECORD_OVERVIEW_MAX_METRICS, recordOverview, recordOverviewId, sectionDefaultWidget, sectionOverviewDefaults, } from '@happyvertical/smrt-svelte/overview';
|
|
12
12
|
import { catalog, getModel } from "../catalog/index.js";
|
|
13
13
|
import { humanize, pluralize } from "../data/format.js";
|
|
14
14
|
import { FEATURE_SECTION } from "../recipes/features.js";
|
|
@@ -39,34 +39,15 @@ function leadModel(sectionId) {
|
|
|
39
39
|
}
|
|
40
40
|
return undefined;
|
|
41
41
|
}
|
|
42
|
-
function defaults(sectionId) {
|
|
43
|
-
// A recipe that declares its own section page (smrt-reports' saved reports)
|
|
44
|
-
// replaces the generic shortcuts, count and records.
|
|
42
|
+
function defaults(sectionId, override) {
|
|
45
43
|
const page = sectionDefaultWidget(NAV_SECTIONS.get(sectionId)?.recipes[0]);
|
|
46
|
-
if (page && RECIPE_WIDGET_TYPES.includes(page.type))
|
|
47
|
-
return [page];
|
|
48
|
-
const widgets = [
|
|
49
|
-
{ id: 'shortcuts', type: 'shortcuts', span: 4, options: {} },
|
|
50
|
-
];
|
|
51
44
|
const lead = leadModel(sectionId);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
title: pluralize(lead.name),
|
|
59
|
-
model: lead.id,
|
|
60
|
-
measure: 'count',
|
|
61
|
-
},
|
|
62
|
-
}, {
|
|
63
|
-
id: 'latest',
|
|
64
|
-
type: 'records',
|
|
65
|
-
span: 3,
|
|
66
|
-
options: { title: `${lead.name} records`, model: lead.id, limit: 5 },
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return widgets;
|
|
45
|
+
return sectionOverviewDefaults({
|
|
46
|
+
lead: lead ? { ...lead, plural: pluralize(lead.name) } : undefined,
|
|
47
|
+
dataWidgets: true,
|
|
48
|
+
page: page && RECIPE_WIDGET_TYPES.includes(page.type) ? page : undefined,
|
|
49
|
+
override,
|
|
50
|
+
});
|
|
70
51
|
}
|
|
71
52
|
const cache = new Map();
|
|
72
53
|
/**
|
|
@@ -74,7 +55,7 @@ const cache = new Map();
|
|
|
74
55
|
* `undefined` for an id no overview can have (a hand-edited layout's custom
|
|
75
56
|
* section id outside the overview id pattern): the page then shows its menu.
|
|
76
57
|
*/
|
|
77
|
-
export function sectionOverview(sectionId) {
|
|
58
|
+
export function sectionOverview(sectionId, override) {
|
|
78
59
|
if (!OVERVIEW_PAGE_ID_PATTERN.test(sectionId))
|
|
79
60
|
return undefined;
|
|
80
61
|
let definition = cache.get(sectionId);
|
|
@@ -87,7 +68,12 @@ export function sectionOverview(sectionId) {
|
|
|
87
68
|
});
|
|
88
69
|
cache.set(sectionId, definition);
|
|
89
70
|
}
|
|
90
|
-
return
|
|
71
|
+
return override === undefined
|
|
72
|
+
? definition
|
|
73
|
+
: defineOverview({
|
|
74
|
+
...definition,
|
|
75
|
+
defaults: defaults(sectionId, override),
|
|
76
|
+
});
|
|
91
77
|
}
|
|
92
78
|
/**
|
|
93
79
|
* A record view's overview id (smrt#3718): `detail:<pkg>.<Model>`, the
|
|
@@ -188,8 +174,10 @@ export function detailOverviewFor(id, inApp) {
|
|
|
188
174
|
return defineOverview({ ...full, defaults });
|
|
189
175
|
}
|
|
190
176
|
/** The definition behind any overview id: a section's or a record view's. */
|
|
191
|
-
export function overviewDefinition(id) {
|
|
192
|
-
return id.startsWith('detail:')
|
|
177
|
+
export function overviewDefinition(id, override) {
|
|
178
|
+
return id.startsWith('detail:')
|
|
179
|
+
? detailOverview(id)
|
|
180
|
+
: sectionOverview(id, override);
|
|
193
181
|
}
|
|
194
182
|
/**
|
|
195
183
|
* Whether `id` names an overview in a cookbook with this layout: a section a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;CAClE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,MAAM,oBAAoB,GACnC,kBAAkB,CAgBpB"}
|
package/dist/overviews/page.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* `SectionOverview.svelte` calls this; tests drive the same wiring.
|
|
6
6
|
*/
|
|
7
7
|
import { createOverview, loadOverview, } from '@happyvertical/smrt-svelte/overview';
|
|
8
|
+
import { sectionOverview } from "./definitions.js";
|
|
8
9
|
import { overviewRegistry } from "./registry.js";
|
|
9
10
|
/**
|
|
10
11
|
* One widget's data from the in-browser source, through the same
|
|
@@ -23,7 +24,9 @@ export async function loadSectionWidget(definition, context, widget, signal) {
|
|
|
23
24
|
export function createSectionOverview(definition, store, context) {
|
|
24
25
|
const id = definition.id;
|
|
25
26
|
return createOverview({
|
|
26
|
-
definition
|
|
27
|
+
definition: id.startsWith('detail:')
|
|
28
|
+
? definition
|
|
29
|
+
: (sectionOverview(id, store.overview(id)) ?? definition),
|
|
27
30
|
registry: overviewRegistry,
|
|
28
31
|
override: () => store.overview(id),
|
|
29
32
|
onchange: (override) => store.setOverview(id, override),
|
|
@@ -110,7 +110,7 @@ export declare const plannerLoaders: {
|
|
|
110
110
|
metric: typeof loadMetric;
|
|
111
111
|
records: typeof loadRecords;
|
|
112
112
|
chart: typeof loadChart;
|
|
113
|
-
shortcuts:
|
|
113
|
+
shortcuts: (_ctx: WidgetLoadContext, defaults: import("@happyvertical/smrt-svelte/overview").ShortcutEntry[]) => Promise<import("@happyvertical/smrt-svelte/overview").ShortcutEntry[]>;
|
|
114
114
|
};
|
|
115
115
|
/** The core widget types a section overview offers. */
|
|
116
116
|
export declare const CORE_WIDGET_TYPES: readonly ["shortcuts", "metric", "records", "chart", "note"];
|
|
@@ -279,7 +279,7 @@ async function loadRecords(options, ctx) {
|
|
|
279
279
|
: {}),
|
|
280
280
|
cells: cellsOf(row),
|
|
281
281
|
}))),
|
|
282
|
-
total: rows.length,
|
|
282
|
+
...(options.summaries === false ? {} : { total: rows.length }),
|
|
283
283
|
...(linked ? { href: listHref(href, found, parent) } : {}),
|
|
284
284
|
columns,
|
|
285
285
|
currency: currencyOf(model, rows),
|
|
@@ -500,11 +500,11 @@ export const plannerLoaders = {
|
|
|
500
500
|
metric: loadMetric,
|
|
501
501
|
records: loadRecords,
|
|
502
502
|
chart: loadChart,
|
|
503
|
-
shortcuts:
|
|
503
|
+
shortcuts: async (_ctx, defaults) => defaults,
|
|
504
504
|
};
|
|
505
505
|
registerCoreWidgets(overviewRegistry, {
|
|
506
506
|
...plannerLoaders,
|
|
507
|
-
shortcuts: composeShortcutsLoader(
|
|
507
|
+
shortcuts: composeShortcutsLoader(),
|
|
508
508
|
});
|
|
509
509
|
/**
|
|
510
510
|
* The record page's own widgets (smrt#3718), registered once on the shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAI/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAmCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,OAAO,GACX;IAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/lib/overviews/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAI/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAmCD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,OAAO,GACX;IAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CA4ChE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,eAAe,GAAG,IAAI,CAexB"}
|
|
@@ -39,7 +39,7 @@ function without(override, ids) {
|
|
|
39
39
|
* checked again, so one bad widget does not cost the visitor the others.
|
|
40
40
|
*/
|
|
41
41
|
export function checkStoredOverride(id, raw) {
|
|
42
|
-
const definition = overviewDefinition(id);
|
|
42
|
+
const definition = overviewDefinition(id, raw);
|
|
43
43
|
if (!definition) {
|
|
44
44
|
return {
|
|
45
45
|
override: null,
|
|
@@ -54,8 +54,21 @@ export function checkStoredOverride(id, raw) {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
const first = checkOverviewOverride(definition, raw, overviewRegistry);
|
|
57
|
-
if (first.ok)
|
|
57
|
+
if (first.ok) {
|
|
58
|
+
const count = parseOverviewOverride(raw).override?.changed?.count;
|
|
59
|
+
// Keep explicit legacy intent even when a version-only patch is otherwise
|
|
60
|
+
// normalized away. The entire override already passed existing validation.
|
|
61
|
+
if (count && definition.defaults.some((widget) => widget.id === 'count')) {
|
|
62
|
+
return {
|
|
63
|
+
override: {
|
|
64
|
+
...(first.override ?? { version: 1 }),
|
|
65
|
+
changed: { ...first.override?.changed, count },
|
|
66
|
+
},
|
|
67
|
+
issues: [],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
58
70
|
return { override: first.override, issues: [] };
|
|
71
|
+
}
|
|
59
72
|
const parsed = parseOverviewOverride(raw);
|
|
60
73
|
const bad = new Set(first.issues.flatMap((issue) => (issue.widgetId ? [issue.widgetId] : [])));
|
|
61
74
|
if (!parsed.override)
|
|
@@ -51,6 +51,7 @@ import { PLANNER_TAB_IDS } from './commands/index.js';
|
|
|
51
51
|
import { CHEF_HAT_ICON, EXPORT_ICON } from './header-icons.js';
|
|
52
52
|
import { plannerRuntime } from './instance.js';
|
|
53
53
|
import PlannerControls from './PlannerControls.svelte';
|
|
54
|
+
import PlannerHostAction from './PlannerHostAction.svelte';
|
|
54
55
|
import PlannerLifecycle from './PlannerLifecycle.svelte';
|
|
55
56
|
import { parseModelRoute, recordFilter, splitRoute } from './routes.js';
|
|
56
57
|
import { plannerAssistantToggle, plannerShellProps } from './shell.js';
|
|
@@ -64,11 +65,20 @@ let {
|
|
|
64
65
|
basePath,
|
|
65
66
|
inference,
|
|
66
67
|
persistence,
|
|
68
|
+
projectPersistence,
|
|
67
69
|
themeControls = true,
|
|
68
70
|
defaultTitle = DEFAULT_PLANNER_TITLE,
|
|
69
71
|
tabs,
|
|
70
72
|
backLink,
|
|
71
73
|
onready,
|
|
74
|
+
entryMode = 'browse',
|
|
75
|
+
exportAction,
|
|
76
|
+
headerAction,
|
|
77
|
+
initialConversation,
|
|
78
|
+
cookbookOffers,
|
|
79
|
+
conversationalAction,
|
|
80
|
+
onreset,
|
|
81
|
+
resetDisabledReason,
|
|
72
82
|
}: PlannerProps = $props();
|
|
73
83
|
|
|
74
84
|
/** The mount's links: its pages are fragment routes, so no host router. */
|
|
@@ -78,6 +88,12 @@ const hashHref = (path: string) => `#${path}`;
|
|
|
78
88
|
setBasePath(untrack(() => basePath) ?? '', 'hash');
|
|
79
89
|
/** The assistant exists only when the host gave the planner a model. */
|
|
80
90
|
const assistant = $derived(inference !== undefined);
|
|
91
|
+
function resetProject() {
|
|
92
|
+
// A hidden session has no public export capability, but still belongs to
|
|
93
|
+
// this project and must not reappear when inference is enabled later.
|
|
94
|
+
if (!assistant) aiState.session.transport.reset();
|
|
95
|
+
onreset?.();
|
|
96
|
+
}
|
|
81
97
|
|
|
82
98
|
const shellCatalog: ComponentProps<typeof CookbookApp>['catalog'] = {
|
|
83
99
|
recipes: recipes.map(({ id, label, nav, models, group, section }) => ({
|
|
@@ -328,6 +344,22 @@ function updateCookbook(next: ComponentProps<typeof CookbookApp>['cookbook']) {
|
|
|
328
344
|
}
|
|
329
345
|
|
|
330
346
|
const slotItems = $derived<ShellSlotItem[]>([
|
|
347
|
+
{
|
|
348
|
+
id: 'planner-project',
|
|
349
|
+
label: 'Project settings',
|
|
350
|
+
slot: 'leftSidebar.footer',
|
|
351
|
+
render: projectSettings,
|
|
352
|
+
},
|
|
353
|
+
...(headerAction
|
|
354
|
+
? [
|
|
355
|
+
{
|
|
356
|
+
id: 'planner-host-action',
|
|
357
|
+
label: headerAction.label,
|
|
358
|
+
slot: 'header.end' as const,
|
|
359
|
+
render: hostAction,
|
|
360
|
+
},
|
|
361
|
+
]
|
|
362
|
+
: []),
|
|
331
363
|
...(backLink
|
|
332
364
|
? [
|
|
333
365
|
{
|
|
@@ -361,6 +393,15 @@ const dockToggles = $derived(
|
|
|
361
393
|
);
|
|
362
394
|
</script>
|
|
363
395
|
|
|
396
|
+
{#snippet projectSettings()}
|
|
397
|
+
<HeaderIconLink href="#/configure/settings/" label="Project settings" icon="settings" transitionName="planner-project" current={configuring && plannerTab.active === 'settings'} />
|
|
398
|
+
{/snippet}
|
|
399
|
+
{#snippet hostAction()}
|
|
400
|
+
{#if headerAction}
|
|
401
|
+
<PlannerHostAction action={headerAction} {controller} nativeAssistant={assistant ? aiState.session.transport : undefined} />
|
|
402
|
+
{/if}
|
|
403
|
+
{/snippet}
|
|
404
|
+
|
|
364
405
|
{#snippet back()}
|
|
365
406
|
<a class="back" href={backLink?.href} data-planner-back>
|
|
366
407
|
<span aria-hidden="true">←</span>
|
|
@@ -419,7 +460,7 @@ const dockToggles = $derived(
|
|
|
419
460
|
`oncookbookchange` and lands in the cookbook's `layout` / `overviews`, so it
|
|
420
461
|
is saved, exported and imported with the rest of the plan. `loaders`,
|
|
421
462
|
`widgetContext` and `resolveExport` wire the framework's own section pages
|
|
422
|
-
(`CookbookSectionPage`,
|
|
463
|
+
(`CookbookSectionPage`, using existing themed cards with the planner's heading) to the
|
|
423
464
|
sample data; `loaders.shortcuts` adds the record counts.
|
|
424
465
|
-->
|
|
425
466
|
<svelte:head>
|
|
@@ -446,14 +487,13 @@ const dockToggles = $derived(
|
|
|
446
487
|
{...plannerShellProps()}
|
|
447
488
|
>
|
|
448
489
|
<ThemeBridge deferInitial={persistence === 'host'} presetOverride={applyCookbookTheme(shell.theme)} />
|
|
449
|
-
<PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} links="hash" />
|
|
490
|
+
<PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} {initialConversation} {cookbookOffers} {conversationalAction} nativeAssistant links="hash" />
|
|
450
491
|
<main class="content">
|
|
451
492
|
{#if sectionSlug}
|
|
452
493
|
{#if cookbookStore.loaded}
|
|
453
494
|
{#key `${sectionSlug}:${dataGeneration}`}
|
|
454
495
|
<CookbookSectionPage
|
|
455
496
|
sectionId={sectionIdFromSlug(sectionSlug)}
|
|
456
|
-
presentation="plain"
|
|
457
497
|
heading={sectionHeading}
|
|
458
498
|
/>
|
|
459
499
|
{/key}
|
|
@@ -480,8 +520,10 @@ const dockToggles = $derived(
|
|
|
480
520
|
{/key}
|
|
481
521
|
{:else if applied && model}
|
|
482
522
|
<ModelWorkspace model={applied.model} fields={applied.fields} {forms} {scope} {preset} title={entryWords.heading} noun={listNoun} href={hashHref} />
|
|
523
|
+
{:else if entryMode === 'planning' && recipeState.ids.length === 0 && recipeState.features.length === 0 && (!route || /^\/configure\/?$/.test(route))}
|
|
524
|
+
<section aria-label="App planning" role="status"><h1>Your app starts here</h1><p>The planner will show your app here as we plan it.</p><a href="#/configure/cookbooks/">Browse cookbooks</a></section>
|
|
483
525
|
{:else}
|
|
484
|
-
<PlannerControls {controller} {basePath} {inference} {persistence} {themeControls} {tabs} managedByParent layout="shell" advancedStylesHref="#/advanced-styles/" />
|
|
526
|
+
<PlannerControls onreset={resetProject} {resetDisabledReason} {exportAction} {projectPersistence} nativeAssistant={assistant ? aiState.session.transport : undefined} {controller} {basePath} {inference} {persistence} {themeControls} {tabs} managedByParent layout="shell" advancedStylesHref="#/advanced-styles/" />
|
|
485
527
|
{/if}
|
|
486
528
|
</main>
|
|
487
529
|
</CookbookApp>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Planner.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/Planner.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Planner.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/Planner.svelte.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAod/C,QAAA,MAAM,OAAO,kDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
} from '@happyvertical/smrt-svelte/workspace';
|
|
8
8
|
import { Tabs } from '@happyvertical/smrt-ui';
|
|
9
9
|
import { onMount, tick, untrack } from 'svelte';
|
|
10
|
+
import type { BrowserAssistantTransport } from '../assistant/transport.js';
|
|
10
11
|
import CookbooksPanel from '../components/CookbooksPanel.svelte';
|
|
11
12
|
import ExportPanel from '../components/ExportPanel.svelte';
|
|
12
13
|
import FeaturesPanel from '../components/FeaturesPanel.svelte';
|
|
@@ -23,6 +24,7 @@ import { plannerController } from './instance.js';
|
|
|
23
24
|
import PlannerLifecycle from './PlannerLifecycle.svelte';
|
|
24
25
|
import { plannerTab } from './tab.svelte.js';
|
|
25
26
|
import type { PlannerProps } from './types.js';
|
|
27
|
+
import { workspacePersistence } from './workspace.svelte.js';
|
|
26
28
|
|
|
27
29
|
/**
|
|
28
30
|
* The planner's customization controls alone (Cookbooks, Recipes, Theme,
|
|
@@ -36,6 +38,7 @@ interface PlannerControlsProps extends PlannerProps {
|
|
|
36
38
|
* controls do not mount a second one.
|
|
37
39
|
*/
|
|
38
40
|
managedByParent?: boolean;
|
|
41
|
+
nativeAssistant?: BrowserAssistantTransport;
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
const DEFAULT_TABS: PlannerTabId[] = [
|
|
@@ -53,13 +56,26 @@ let {
|
|
|
53
56
|
inference,
|
|
54
57
|
layout = 'own',
|
|
55
58
|
persistence = 'self',
|
|
59
|
+
projectPersistence,
|
|
56
60
|
themeControls = false,
|
|
57
61
|
advancedStylesHref,
|
|
58
62
|
tabs = DEFAULT_TABS,
|
|
59
63
|
onready,
|
|
64
|
+
exportAction,
|
|
65
|
+
nativeAssistant,
|
|
66
|
+
onreset,
|
|
67
|
+
resetDisabledReason,
|
|
60
68
|
managedByParent = false,
|
|
61
69
|
}: PlannerControlsProps = $props();
|
|
62
70
|
|
|
71
|
+
const projectStorage = $derived(
|
|
72
|
+
projectPersistence === undefined
|
|
73
|
+
? persistence === 'self'
|
|
74
|
+
? workspacePersistence
|
|
75
|
+
: null
|
|
76
|
+
: projectPersistence,
|
|
77
|
+
);
|
|
78
|
+
|
|
63
79
|
// Generated views and the Cookbooks tab read sample records from a data
|
|
64
80
|
// source: use the host's, else make the planner's own.
|
|
65
81
|
if (!tryUseDataSource()) provideDataSource(createPlannerDataSource());
|
|
@@ -183,10 +199,10 @@ $effect(() => {
|
|
|
183
199
|
<div hidden={active !== 'theme'}><ThemeSection provider={themeControls} {advancedStylesHref} /></div>
|
|
184
200
|
{/if}
|
|
185
201
|
{#if reachable.includes('settings')}
|
|
186
|
-
<div hidden={active !== 'settings'}><SettingsPanel /></div>
|
|
202
|
+
<div hidden={active !== 'settings'}><SettingsPanel projectPersistence={projectStorage} {controller} {nativeAssistant} {onreset} {resetDisabledReason} /></div>
|
|
187
203
|
{/if}
|
|
188
204
|
{#if reachable.includes('export')}
|
|
189
|
-
<div hidden={active !== 'export'}><ExportPanel /></div>
|
|
205
|
+
<div hidden={active !== 'export'}><ExportPanel {exportAction} {controller} {nativeAssistant} {onreset} {resetDisabledReason} /></div>
|
|
190
206
|
{/if}
|
|
191
207
|
</Tabs>
|
|
192
208
|
</div>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BrowserAssistantTransport } from '../assistant/transport.ts';
|
|
1
2
|
import type { PlannerProps } from './types.ts';
|
|
2
3
|
/**
|
|
3
4
|
* The planner's customization controls alone (Cookbooks, Recipes, Theme,
|
|
@@ -11,6 +12,7 @@ interface PlannerControlsProps extends PlannerProps {
|
|
|
11
12
|
* controls do not mount a second one.
|
|
12
13
|
*/
|
|
13
14
|
managedByParent?: boolean;
|
|
15
|
+
nativeAssistant?: BrowserAssistantTransport;
|
|
14
16
|
}
|
|
15
17
|
declare const PlannerControls: import("svelte").Component<PlannerControlsProps, {}, "">;
|
|
16
18
|
type PlannerControls = ReturnType<typeof PlannerControls>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlannerControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerControls.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlannerControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerControls.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAgB3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;GAIG;AACH,UAAU,oBAAqB,SAAQ,YAAY;IACjD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AA2MD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
shellTargetAction,
|
|
4
|
+
tryUseShellTargets,
|
|
5
|
+
} from '@happyvertical/smrt-svelte/workspace';
|
|
6
|
+
import { Button } from '@happyvertical/smrt-ui';
|
|
7
|
+
import type { BrowserAssistantTransport } from '../assistant/transport.js';
|
|
8
|
+
import type { PlannerController } from './commands/index.js';
|
|
9
|
+
import { capturePlannerExport } from './export-context.js';
|
|
10
|
+
import { plannerController } from './instance.js';
|
|
11
|
+
import type { PlannerExportAction } from './types.js';
|
|
12
|
+
|
|
13
|
+
interface Props {
|
|
14
|
+
action: PlannerExportAction;
|
|
15
|
+
controller?: PlannerController;
|
|
16
|
+
nativeAssistant?: BrowserAssistantTransport;
|
|
17
|
+
}
|
|
18
|
+
let {
|
|
19
|
+
action,
|
|
20
|
+
controller = plannerController,
|
|
21
|
+
nativeAssistant,
|
|
22
|
+
}: Props = $props();
|
|
23
|
+
const target = shellTargetAction(tryUseShellTargets());
|
|
24
|
+
let pending = $state(false);
|
|
25
|
+
let busy = $state(false);
|
|
26
|
+
let error = $state('');
|
|
27
|
+
$effect(() => {
|
|
28
|
+
busy = nativeAssistant?.busy ?? false;
|
|
29
|
+
return nativeAssistant?.subscribeConversation(() => {
|
|
30
|
+
busy = nativeAssistant?.busy ?? false;
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
async function run() {
|
|
34
|
+
if (pending || busy) return;
|
|
35
|
+
error = '';
|
|
36
|
+
pending = true;
|
|
37
|
+
try {
|
|
38
|
+
await action.run(capturePlannerExport(controller, nativeAssistant));
|
|
39
|
+
} catch (cause) {
|
|
40
|
+
error =
|
|
41
|
+
cause instanceof Error
|
|
42
|
+
? cause.message
|
|
43
|
+
: 'The action could not finish. Try again.';
|
|
44
|
+
} finally {
|
|
45
|
+
pending = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<div use:target={'item:planner-host-action'} class="host-action" data-planner-host-action>
|
|
51
|
+
<Button disabled={pending || busy} onclick={run}>{action.label}</Button>
|
|
52
|
+
{#if error}<span class="action-error" role="alert">{error}</span>{/if}
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<style>
|
|
56
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
57
|
+
@layer smrt.theme {
|
|
58
|
+
.host-action { position: relative; flex-shrink: 0; }
|
|
59
|
+
.action-error { position: absolute; inset-block-start: 100%; inset-inline-end: 0; inline-size: min(20rem, 80vw); padding: var(--smrt-spacing-2); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); border: var(--smrt-hairline); border-radius: var(--smrt-radius-small); z-index: var(--smrt-z-index-popover); }
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BrowserAssistantTransport } from '../assistant/transport.ts';
|
|
2
|
+
import type { PlannerController } from './commands/index.ts';
|
|
3
|
+
import type { PlannerExportAction } from './types.ts';
|
|
4
|
+
interface Props {
|
|
5
|
+
action: PlannerExportAction;
|
|
6
|
+
controller?: PlannerController;
|
|
7
|
+
nativeAssistant?: BrowserAssistantTransport;
|
|
8
|
+
}
|
|
9
|
+
declare const PlannerHostAction: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type PlannerHostAction = ReturnType<typeof PlannerHostAction>;
|
|
11
|
+
export default PlannerHostAction;
|
|
12
|
+
//# sourceMappingURL=PlannerHostAction.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlannerHostAction.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/planner/PlannerHostAction.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,UAAU,KAAK;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AAmDD,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|