@happyvertical/smrt-planner 0.0.0-stage → 0.0.1
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/LICENSE +21 -0
- package/README.md +170 -2
- package/app/404.html +80 -0
- package/app/_app/immutable/assets/0.B5zXkXe_.css +1 -0
- package/app/_app/immutable/assets/10.hpcnxvK1.css +1 -0
- package/app/_app/immutable/assets/11.D7zoXfVV.css +1 -0
- package/app/_app/immutable/assets/12.CPobm1ED.css +1 -0
- package/app/_app/immutable/assets/2.CyaWdRdI.css +1 -0
- package/app/_app/immutable/assets/3.BlPQOes8.css +1 -0
- package/app/_app/immutable/assets/8.2gQeKBp_.css +1 -0
- package/app/_app/immutable/assets/9.HOPT4xtg.css +1 -0
- package/app/_app/immutable/assets/AiSetup.Cb22AigN.css +1 -0
- package/app/_app/immutable/assets/Button.DkP0qkG9.css +1 -0
- package/app/_app/immutable/assets/ConnectTools.BgIJOOGW.css +1 -0
- package/app/_app/immutable/assets/FieldMapForm.BCU-4pO4.css +1 -0
- package/app/_app/immutable/assets/ModelPage.Dd3LcMta.css +1 -0
- package/app/_app/immutable/assets/SectionActions.CTkVuNMF.css +1 -0
- package/app/_app/immutable/assets/SectionIcons.5Udq9vN-.css +1 -0
- package/app/_app/immutable/assets/SegmentedControl.B8SrQacd.css +1 -0
- package/app/_app/immutable/assets/dist.C5nHBk_O.css +1 -0
- package/app/_app/immutable/assets/feedback.BVKAwFck.css +1 -0
- package/app/_app/immutable/assets/forms.BChZ2RWM.css +1 -0
- package/app/_app/immutable/assets/inter-latin-ext.B_-bZUTo.woff2 +0 -0
- package/app/_app/immutable/assets/inter-latin.8kRkwJBP.woff2 +0 -0
- package/app/_app/immutable/assets/jetbrains-mono-latin-ext.Bnd2h4Br.woff2 +0 -0
- package/app/_app/immutable/assets/jetbrains-mono-latin.Db4Uuiha.woff2 +0 -0
- package/app/_app/immutable/assets/ort-wasm-simd-threaded.asyncify.CxOG5pUO.wasm +0 -0
- package/app/_app/immutable/assets/percent.LH0z-ozZ.css +1 -0
- package/app/_app/immutable/assets/space-grotesk-latin-ext.wJGaI8U0.woff2 +0 -0
- package/app/_app/immutable/assets/space-grotesk-latin.DPT1xrvW.woff2 +0 -0
- package/app/_app/immutable/assets/store.CGDwHkkF.css +1 -0
- package/app/_app/immutable/assets/ui.B1A1Zl2p.css +1 -0
- package/app/_app/immutable/assets/workspace.BIMkuZDb.css +1 -0
- package/app/_app/immutable/chunks/1okeBSoq.js +1 -0
- package/app/_app/immutable/chunks/B32EWqI8.js +9 -0
- package/app/_app/immutable/chunks/B4Kevpe0.js +1 -0
- package/app/_app/immutable/chunks/BJfAXhak.js +3 -0
- package/app/_app/immutable/chunks/BKwRT_1p.js +1 -0
- package/app/_app/immutable/chunks/BQxY8kkL.js +1 -0
- package/app/_app/immutable/chunks/BS4h9ES-.js +1 -0
- package/app/_app/immutable/chunks/BWPhGFHl.js +1 -0
- package/app/_app/immutable/chunks/BYcBM-fh.js +1 -0
- package/app/_app/immutable/chunks/BYde9M_U.js +1 -0
- package/app/_app/immutable/chunks/BegKiy2G.js +1 -0
- package/app/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/app/_app/immutable/chunks/C7zBd-pD.js +1 -0
- package/app/_app/immutable/chunks/CA-A9Ngs.js +1 -0
- package/app/_app/immutable/chunks/CMhpRMKg.js +1 -0
- package/app/_app/immutable/chunks/CPRHZZeW.js +1 -0
- package/app/_app/immutable/chunks/CRQ1Pmzr.js +1 -0
- package/app/_app/immutable/chunks/CV-2zt0K.js +2 -0
- package/app/_app/immutable/chunks/CWtfVMDz.js +1 -0
- package/app/_app/immutable/chunks/CgAkqYsL.js +1 -0
- package/app/_app/immutable/chunks/Chyo8rdT.js +3 -0
- package/app/_app/immutable/chunks/CmmuWmp6.js +2 -0
- package/app/_app/immutable/chunks/CrFNLK0f.js +1 -0
- package/app/_app/immutable/chunks/CrO3W89x.js +1 -0
- package/app/_app/immutable/chunks/CyUMm_Wp.js +1 -0
- package/app/_app/immutable/chunks/CygC84VT.js +2 -0
- package/app/_app/immutable/chunks/D0VgZnk1.js +1 -0
- package/app/_app/immutable/chunks/D333l2GL.js +2 -0
- package/app/_app/immutable/chunks/D71UrO5c.js +1 -0
- package/app/_app/immutable/chunks/D7hhQvDO.js +1 -0
- package/app/_app/immutable/chunks/DD7gpKb2.js +1 -0
- package/app/_app/immutable/chunks/DJtH-lRi.js +3 -0
- package/app/_app/immutable/chunks/DNRgqfTx.js +1 -0
- package/app/_app/immutable/chunks/DRByVC-c.js +1 -0
- package/app/_app/immutable/chunks/DVRKjN-E.js +1 -0
- package/app/_app/immutable/chunks/D_J_XtJy.js +846 -0
- package/app/_app/immutable/chunks/Dbjm4OuC.js +1 -0
- package/app/_app/immutable/chunks/Dc4q22LH.js +42 -0
- package/app/_app/immutable/chunks/Dd_uD5pT.js +1 -0
- package/app/_app/immutable/chunks/Dp9GVO-9.js +1 -0
- package/app/_app/immutable/chunks/DqcD-WtP.js +1 -0
- package/app/_app/immutable/chunks/Dt-HX3Vu.js +1 -0
- package/app/_app/immutable/chunks/DyGfbRG-.js +1 -0
- package/app/_app/immutable/chunks/FbOxj-PF.js +69 -0
- package/app/_app/immutable/chunks/OJ_lLTHH.js +1 -0
- package/app/_app/immutable/chunks/QukgIHDX.js +1 -0
- package/app/_app/immutable/chunks/WxSPP8QW.js +4 -0
- package/app/_app/immutable/chunks/iET62IRm.js +2 -0
- package/app/_app/immutable/chunks/leQCwW2d.js +1 -0
- package/app/_app/immutable/chunks/p6bgzXiY.js +1 -0
- package/app/_app/immutable/chunks/uBIymjUX.js +1 -0
- package/app/_app/immutable/chunks/ufuM4XBq.js +33 -0
- package/app/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/app/_app/immutable/entry/app.D5JJain6.js +2 -0
- package/app/_app/immutable/entry/start.CH9DJLgI.js +1 -0
- package/app/_app/immutable/nodes/0.CL1MxOva.js +10 -0
- package/app/_app/immutable/nodes/1.BO731RRg.js +1 -0
- package/app/_app/immutable/nodes/10.1nQxyH9H.js +4 -0
- package/app/_app/immutable/nodes/11.Cw0JnQF3.js +1 -0
- package/app/_app/immutable/nodes/12.BmZyLHbM.js +1 -0
- package/app/_app/immutable/nodes/2.BEw046av.js +17 -0
- package/app/_app/immutable/nodes/3.DvwpTAQA.js +1 -0
- package/app/_app/immutable/nodes/4.qrT4bnmS.js +1 -0
- package/app/_app/immutable/nodes/5.DDLa2uhV.js +1 -0
- package/app/_app/immutable/nodes/6.DN0QTY6z.js +1 -0
- package/app/_app/immutable/nodes/7.C_8N82Wq.js +1 -0
- package/app/_app/immutable/nodes/8.D2Mszsua.js +3 -0
- package/app/_app/immutable/nodes/9.CLYsywul.js +1 -0
- package/app/_app/immutable/workers/assets/ort-wasm-simd-threaded.asyncify-CxOG5pUO.wasm +0 -0
- package/app/_app/immutable/workers/llm.worker-wfCOG_uk.js +69 -0
- package/app/_app/immutable/workers/local-speech.worker-DWbfmFUk.js +51 -0
- package/app/_app/version.json +1 -0
- package/app/ai/index.html +89 -0
- package/app/blueprint/index.html +87 -0
- package/app/cookbook/index.html +87 -0
- package/app/index.html +103 -0
- package/app/m/ads/AdDeliveryTier/index.html +96 -0
- package/app/m/ads/AdEvent/index.html +96 -0
- package/app/m/ads/AdFormat/index.html +96 -0
- package/app/m/ads/AdGroup/index.html +96 -0
- package/app/m/ads/AdVariation/index.html +96 -0
- package/app/m/analytics/AnalyticsDataStream/index.html +96 -0
- package/app/m/analytics/AnalyticsEvent/index.html +96 -0
- package/app/m/analytics/AnalyticsProperty/index.html +96 -0
- package/app/m/analytics/AnalyticsReport/index.html +96 -0
- package/app/m/approvals/ApprovalEvent/index.html +96 -0
- package/app/m/approvals/ApprovalPolicy/index.html +96 -0
- package/app/m/approvals/ApprovalRequest/index.html +96 -0
- package/app/m/assets/Asset/index.html +96 -0
- package/app/m/assets/AssetAssociation/index.html +97 -0
- package/app/m/assets/AssetMetafield/index.html +96 -0
- package/app/m/assets/AssetStatus/index.html +96 -0
- package/app/m/assets/AssetType/index.html +96 -0
- package/app/m/assets/Folder/index.html +96 -0
- package/app/m/chat/AgentSession/index.html +96 -0
- package/app/m/chat/ChatMessage/index.html +97 -0
- package/app/m/chat/ChatParticipant/index.html +97 -0
- package/app/m/chat/ChatReaction/index.html +96 -0
- package/app/m/chat/ChatRoom/index.html +96 -0
- package/app/m/chat/ChatThread/index.html +97 -0
- package/app/m/chat/VoiceGatewayTurn/index.html +96 -0
- package/app/m/chat/VoiceSession/index.html +96 -0
- package/app/m/commerce/Agreement/index.html +96 -0
- package/app/m/commerce/Cart/index.html +96 -0
- package/app/m/commerce/Contract/index.html +96 -0
- package/app/m/commerce/ContractLineItem/index.html +97 -0
- package/app/m/commerce/Customer/index.html +96 -0
- package/app/m/commerce/Estimate/index.html +96 -0
- package/app/m/commerce/Fulfillment/index.html +96 -0
- package/app/m/commerce/FulfillmentLineItem/index.html +97 -0
- package/app/m/commerce/Invoice/index.html +96 -0
- package/app/m/commerce/InvoiceLineItem/index.html +97 -0
- package/app/m/commerce/Lease/index.html +96 -0
- package/app/m/commerce/LicenseSale/index.html +96 -0
- package/app/m/commerce/Order/index.html +96 -0
- package/app/m/commerce/Payment/index.html +96 -0
- package/app/m/commerce/PaymentAllocation/index.html +97 -0
- package/app/m/commerce/PaymentInstrument/index.html +96 -0
- package/app/m/commerce/PaymentIntent/index.html +96 -0
- package/app/m/commerce/Payout/index.html +96 -0
- package/app/m/commerce/ProductionOrder/index.html +96 -0
- package/app/m/commerce/PurchaseOrder/index.html +96 -0
- package/app/m/commerce/Vendor/index.html +96 -0
- package/app/m/commerce/WholesaleOrder/index.html +96 -0
- package/app/m/content/Content/index.html +96 -0
- package/app/m/content/ContentContribution/index.html +96 -0
- package/app/m/content/ContentContributionAttachment/index.html +96 -0
- package/app/m/content/ContentContributionRevision/index.html +96 -0
- package/app/m/content/ContentContributionType/index.html +96 -0
- package/app/m/content/ContentContributor/index.html +96 -0
- package/app/m/content/ContentCorrection/index.html +96 -0
- package/app/m/content/ContentFeedSource/index.html +96 -0
- package/app/m/content/ContentGovernanceAssignment/index.html +96 -0
- package/app/m/content/ContentGovernancePolicy/index.html +96 -0
- package/app/m/content/ContentGovernanceProfile/index.html +96 -0
- package/app/m/content/ContentReference/index.html +96 -0
- package/app/m/content/ContentReview/index.html +96 -0
- package/app/m/content/ContentVersion/index.html +96 -0
- package/app/m/content/Contents/index.html +96 -0
- package/app/m/events/Event/index.html +96 -0
- package/app/m/events/EventParticipant/index.html +97 -0
- package/app/m/events/EventSeries/index.html +96 -0
- package/app/m/events/EventType/index.html +96 -0
- package/app/m/facts/Fact/index.html +96 -0
- package/app/m/facts/FactContent/index.html +96 -0
- package/app/m/facts/FactEvidence/index.html +96 -0
- package/app/m/facts/FactSource/index.html +96 -0
- package/app/m/facts/FactSubject/index.html +96 -0
- package/app/m/facts/FactTag/index.html +96 -0
- package/app/m/fields/FieldPolicy/index.html +96 -0
- package/app/m/fields/FieldPolicySuggestion/index.html +96 -0
- package/app/m/fields/FieldUsageCounter/index.html +96 -0
- package/app/m/images/Image/index.html +96 -0
- package/app/m/inventory/InventoryLocation/index.html +96 -0
- package/app/m/inventory/StockLevel/index.html +96 -0
- package/app/m/inventory/StockMovement/index.html +96 -0
- package/app/m/ledgers/Account/index.html +96 -0
- package/app/m/ledgers/Journal/index.html +96 -0
- package/app/m/ledgers/JournalEntry/index.html +97 -0
- package/app/m/manufacturing/Assembly/index.html +96 -0
- package/app/m/manufacturing/BillOfMaterials/index.html +96 -0
- package/app/m/manufacturing/BomLine/index.html +96 -0
- package/app/m/manufacturing/Operation/index.html +96 -0
- package/app/m/manufacturing/ProductionRun/index.html +96 -0
- package/app/m/manufacturing/ProductionRunCompletion/index.html +96 -0
- package/app/m/manufacturing/RoutingStep/index.html +96 -0
- package/app/m/marketing/Campaign/index.html +96 -0
- package/app/m/marketing/CampaignChannel/index.html +96 -0
- package/app/m/marketing/CampaignMetricSnapshot/index.html +96 -0
- package/app/m/messages/Account/index.html +96 -0
- package/app/m/messages/Attachment/index.html +96 -0
- package/app/m/messages/Blacklist/index.html +96 -0
- package/app/m/messages/Email/failed-sends/index.html +96 -0
- package/app/m/messages/Email/index.html +96 -0
- package/app/m/messages/Email/mailbox/index.html +96 -0
- package/app/m/messages/EmailAccount/index.html +96 -0
- package/app/m/messages/EmailFolder/index.html +96 -0
- package/app/m/messages/Message/index.html +96 -0
- package/app/m/messages/MessagingEndpoint/index.html +96 -0
- package/app/m/messages/PersonaMessageRoute/index.html +96 -0
- package/app/m/messages/SlackAccount/index.html +96 -0
- package/app/m/messages/SlackMessage/index.html +96 -0
- package/app/m/messages/TelegramAccount/index.html +96 -0
- package/app/m/messages/Tweet/index.html +96 -0
- package/app/m/messages/TwitterAccount/index.html +96 -0
- package/app/m/messages/Whitelist/index.html +96 -0
- package/app/m/messages/ZulipAccount/index.html +96 -0
- package/app/m/places/Place/index.html +96 -0
- package/app/m/places/PlaceType/index.html +96 -0
- package/app/m/preferences/UiPreferenceRecord/index.html +96 -0
- package/app/m/products/Category/index.html +96 -0
- package/app/m/products/Material/index.html +96 -0
- package/app/m/products/Product/index.html +96 -0
- package/app/m/products/Product/ingredients/index.html +96 -0
- package/app/m/products/ProductVariant/index.html +97 -0
- package/app/m/products/Sku/index.html +97 -0
- package/app/m/profiles/ApiKey/index.html +96 -0
- package/app/m/profiles/Bot/index.html +96 -0
- package/app/m/profiles/MagicLinkToken/index.html +96 -0
- package/app/m/profiles/NostrIdentity/index.html +96 -0
- package/app/m/profiles/OidcIdentity/index.html +96 -0
- package/app/m/profiles/Organization/index.html +96 -0
- package/app/m/profiles/Person/index.html +96 -0
- package/app/m/profiles/Profile/index.html +96 -0
- package/app/m/profiles/ProfileMetadata/index.html +96 -0
- package/app/m/profiles/ProfileMetafield/index.html +96 -0
- package/app/m/profiles/ProfileRelationship/index.html +96 -0
- package/app/m/profiles/ProfileRelationshipTerm/index.html +96 -0
- package/app/m/profiles/ProfileRelationshipType/index.html +96 -0
- package/app/m/profiles/ProfileType/index.html +96 -0
- package/app/m/projects/Comment/index.html +97 -0
- package/app/m/projects/Issue/index.html +96 -0
- package/app/m/projects/Label/index.html +96 -0
- package/app/m/projects/Project/index.html +96 -0
- package/app/m/projects/ProjectIntegration/index.html +96 -0
- package/app/m/projects/PullRequest/index.html +96 -0
- package/app/m/projects/Repository/index.html +96 -0
- package/app/m/properties/Property/index.html +96 -0
- package/app/m/properties/Zone/index.html +96 -0
- package/app/m/reports/RuntimeReport/index.html +96 -0
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +96 -0
- package/app/m/reports/SmrtReportLock/index.html +96 -0
- package/app/m/reports/SmrtReportRefreshTask/index.html +96 -0
- package/app/m/reports/SmrtReportRun/index.html +96 -0
- package/app/m/reports/SmrtReportSchedule/index.html +96 -0
- package/app/m/reports/SmrtReportWatermark/index.html +96 -0
- package/app/m/sales/AttributionException/index.html +96 -0
- package/app/m/sales/AttributionPolicy/index.html +96 -0
- package/app/m/sales/Commission/index.html +96 -0
- package/app/m/sales/CommissionAdjustment/index.html +96 -0
- package/app/m/sales/CommissionPayout/index.html +96 -0
- package/app/m/sales/CommissionPlan/index.html +96 -0
- package/app/m/sales/Earner/index.html +96 -0
- package/app/m/sales/EarnerSourceAttribution/index.html +96 -0
- package/app/m/sales/EarningEvent/index.html +96 -0
- package/app/m/sales/ExecutedAgreement/index.html +96 -0
- package/app/m/sales/Lead/index.html +96 -0
- package/app/m/sales/Opportunity/index.html +96 -0
- package/app/m/sales/OpportunityConversion/index.html +96 -0
- package/app/m/sales/PipelineDefinition/index.html +96 -0
- package/app/m/sales/PipelineStage/index.html +97 -0
- package/app/m/sales/Referral/index.html +96 -0
- package/app/m/sales/ReferralAgreement/index.html +96 -0
- package/app/m/sales/ReferralLink/index.html +96 -0
- package/app/m/sales/ReferralProgram/index.html +96 -0
- package/app/m/sales/ReferralTermSnapshot/index.html +96 -0
- package/app/m/sales/ReferralTouch/index.html +96 -0
- package/app/m/sales/Referrer/index.html +96 -0
- package/app/m/sales/SalesActivity/index.html +96 -0
- package/app/m/sales/SalesRepresentative/index.html +96 -0
- package/app/m/sites/Site/index.html +96 -0
- package/app/m/sites/SiteAgentBinding/index.html +96 -0
- package/app/m/social/OAuthState/index.html +96 -0
- package/app/m/social/SocialAccount/index.html +96 -0
- package/app/m/social/SocialPost/index.html +96 -0
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +96 -0
- package/app/m/subscriptions/BillingAdjustment/index.html +96 -0
- package/app/m/subscriptions/ClientCharge/index.html +96 -0
- package/app/m/subscriptions/CreditGrant/index.html +96 -0
- package/app/m/subscriptions/PricingRule/index.html +96 -0
- package/app/m/subscriptions/RetailCharge/index.html +96 -0
- package/app/m/subscriptions/SpendingPolicy/index.html +96 -0
- package/app/m/subscriptions/SubscriptionPlan/index.html +96 -0
- package/app/m/subscriptions/TenantSubscription/index.html +96 -0
- package/app/m/subscriptions/TenantUsageMetric/index.html +96 -0
- package/app/m/support/ServiceTimeEntry/index.html +96 -0
- package/app/m/support/SupportAiRun/index.html +96 -0
- package/app/m/support/SupportAvailability/index.html +96 -0
- package/app/m/support/SupportCase/index.html +96 -0
- package/app/m/support/SupportCaseEvent/index.html +96 -0
- package/app/m/support/SupportChannelBinding/index.html +96 -0
- package/app/m/support/SupportCharge/index.html +96 -0
- package/app/m/support/SupportCompensation/index.html +96 -0
- package/app/m/support/SupportCompensationPlan/index.html +96 -0
- package/app/m/support/SupportEscalation/index.html +96 -0
- package/app/m/support/SupportInteraction/index.html +96 -0
- package/app/m/support/SupportPlan/index.html +96 -0
- package/app/m/support/SupportPolicy/index.html +96 -0
- package/app/m/support/SupportQualification/index.html +96 -0
- package/app/m/support/SupportServiceTarget/index.html +96 -0
- package/app/m/support/SupportSpecialist/index.html +96 -0
- package/app/m/support/SupportWorkLink/index.html +96 -0
- package/app/m/tags/Tag/index.html +96 -0
- package/app/m/tags/TagAlias/index.html +96 -0
- package/app/m/timesheets/AttendanceBreak/index.html +96 -0
- package/app/m/timesheets/AttendancePunch/index.html +96 -0
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +96 -0
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +96 -0
- package/app/m/timesheets/ServiceTimeEntry/index.html +96 -0
- package/app/m/users/AccessRequest/index.html +96 -0
- package/app/m/users/Group/index.html +96 -0
- package/app/m/users/GroupMember/index.html +96 -0
- package/app/m/users/GroupRole/index.html +96 -0
- package/app/m/users/Membership/index.html +97 -0
- package/app/m/users/MembershipOverride/index.html +96 -0
- package/app/m/users/Permission/index.html +96 -0
- package/app/m/users/ResourceGrant/index.html +96 -0
- package/app/m/users/Role/index.html +96 -0
- package/app/m/users/RolePermission/index.html +96 -0
- package/app/m/users/Session/index.html +96 -0
- package/app/m/users/Tenant/index.html +96 -0
- package/app/m/users/TenantIntegration/index.html +96 -0
- package/app/m/users/TenantPermissionOverride/index.html +96 -0
- package/app/m/users/User/index.html +96 -0
- package/app/m/users/UsersCliAuthRequest/index.html +96 -0
- package/app/m/users/UsersMagicLinkToken/index.html +96 -0
- package/app/m/video/Character/index.html +96 -0
- package/app/m/video/CharacterAsset/index.html +96 -0
- package/app/m/video/CompositeJob/index.html +96 -0
- package/app/m/video/Performer/index.html +96 -0
- package/app/m/video/PerformerAsset/index.html +96 -0
- package/app/m/video/Scene/index.html +96 -0
- package/app/m/video/SceneAsset/index.html +96 -0
- package/app/m/video/VideoComposition/index.html +96 -0
- package/app/m/video/VideoCompositionAsset/index.html +96 -0
- package/app/m/video/VideoSequence/index.html +96 -0
- package/app/m/video/VideoSequenceAsset/index.html +96 -0
- package/app/m/video/VideoShot/index.html +96 -0
- package/app/m/video/VideoShotAsset/index.html +96 -0
- package/app/m/video/VideoShotCharacter/index.html +96 -0
- package/app/m/video/VideoWorkflow/index.html +96 -0
- package/app/m/voice/VoiceOutput/index.html +96 -0
- package/app/m/voice/VoiceProfile/index.html +96 -0
- package/app/m/voice/VoiceSample/index.html +96 -0
- package/app/packages/ads/index.html +92 -0
- package/app/packages/analytics/index.html +92 -0
- package/app/packages/approvals/index.html +92 -0
- package/app/packages/assets/index.html +92 -0
- package/app/packages/chat/index.html +92 -0
- package/app/packages/comments/index.html +92 -0
- package/app/packages/commerce/index.html +92 -0
- package/app/packages/content/index.html +92 -0
- package/app/packages/events/index.html +92 -0
- package/app/packages/expenses/index.html +92 -0
- package/app/packages/facts/index.html +92 -0
- package/app/packages/fields/index.html +92 -0
- package/app/packages/human-resources/index.html +92 -0
- package/app/packages/images/index.html +92 -0
- package/app/packages/index.html +90 -0
- package/app/packages/inventory/index.html +92 -0
- package/app/packages/ledgers/index.html +92 -0
- package/app/packages/manufacturing/index.html +92 -0
- package/app/packages/marketing/index.html +92 -0
- package/app/packages/messages/index.html +92 -0
- package/app/packages/places/index.html +92 -0
- package/app/packages/preferences/index.html +92 -0
- package/app/packages/products/index.html +92 -0
- package/app/packages/profiles/index.html +92 -0
- package/app/packages/projects/index.html +92 -0
- package/app/packages/properties/index.html +92 -0
- package/app/packages/reports/index.html +92 -0
- package/app/packages/sales/index.html +92 -0
- package/app/packages/sites/index.html +92 -0
- package/app/packages/social/index.html +92 -0
- package/app/packages/subscriptions/index.html +92 -0
- package/app/packages/support/index.html +92 -0
- package/app/packages/tags/index.html +92 -0
- package/app/packages/timesheets/index.html +92 -0
- package/app/packages/users/index.html +92 -0
- package/app/packages/video/index.html +92 -0
- package/app/packages/voice/index.html +92 -0
- package/app/recipes/account-access/help/index.html +93 -0
- package/app/recipes/account-access/index.html +95 -0
- package/app/recipes/activity/help/index.html +93 -0
- package/app/recipes/activity/index.html +94 -0
- package/app/recipes/agreements/help/index.html +93 -0
- package/app/recipes/agreements/index.html +96 -0
- package/app/recipes/analytics.reports/help/index.html +93 -0
- package/app/recipes/analytics.reports/index.html +94 -0
- package/app/recipes/assets/help/index.html +93 -0
- package/app/recipes/assets/index.html +95 -0
- package/app/recipes/billing/help/index.html +93 -0
- package/app/recipes/billing/index.html +95 -0
- package/app/recipes/chat.assistant/help/index.html +93 -0
- package/app/recipes/chat.assistant/index.html +94 -0
- package/app/recipes/comments/help/index.html +93 -0
- package/app/recipes/comments/index.html +94 -0
- package/app/recipes/commerce.customers/help/index.html +93 -0
- package/app/recipes/commerce.customers/index.html +94 -0
- package/app/recipes/commerce.estimates/help/index.html +93 -0
- package/app/recipes/commerce.estimates/index.html +94 -0
- package/app/recipes/commerce.purchases/help/index.html +93 -0
- package/app/recipes/commerce.purchases/index.html +94 -0
- package/app/recipes/commerce.sales/help/index.html +93 -0
- package/app/recipes/commerce.sales/index.html +94 -0
- package/app/recipes/commerce.vendors/help/index.html +93 -0
- package/app/recipes/commerce.vendors/index.html +94 -0
- package/app/recipes/commerce.wholesale/help/index.html +93 -0
- package/app/recipes/commerce.wholesale/index.html +94 -0
- package/app/recipes/events.calendar/help/index.html +93 -0
- package/app/recipes/events.calendar/index.html +94 -0
- package/app/recipes/fields.form-customization/help/index.html +93 -0
- package/app/recipes/fields.form-customization/index.html +94 -0
- package/app/recipes/inventory.stock/help/index.html +93 -0
- package/app/recipes/inventory.stock/index.html +94 -0
- package/app/recipes/ledgers.bookkeeping/help/index.html +93 -0
- package/app/recipes/ledgers.bookkeeping/index.html +94 -0
- package/app/recipes/messages/help/index.html +93 -0
- package/app/recipes/messages/index.html +95 -0
- package/app/recipes/products/help/index.html +93 -0
- package/app/recipes/products/index.html +96 -0
- package/app/recipes/projects.tracker/help/index.html +93 -0
- package/app/recipes/projects.tracker/index.html +94 -0
- package/app/recipes/reports.materialized/help/index.html +93 -0
- package/app/recipes/reports.materialized/index.html +94 -0
- package/app/recipes/sales.pipeline/help/index.html +93 -0
- package/app/recipes/sales.pipeline/index.html +94 -0
- package/app/recipes/tags.taxonomy/help/index.html +93 -0
- package/app/recipes/tags.taxonomy/index.html +94 -0
- package/app/recipes/team-collaboration/help/index.html +93 -0
- package/app/recipes/team-collaboration/index.html +94 -0
- package/app/s/custom-billing/index.html +89 -0
- package/app/s/custom-buying/index.html +89 -0
- package/app/s/custom-classes/index.html +89 -0
- package/app/s/custom-jobs/index.html +89 -0
- package/app/s/custom-kitchen/index.html +89 -0
- package/app/s/custom-material/index.html +89 -0
- package/app/s/custom-members/index.html +89 -0
- package/app/s/custom-parts/index.html +89 -0
- package/app/s/custom-schedule/index.html +89 -0
- package/app/s/custom-shop/index.html +89 -0
- package/app/s/custom-wholesale/index.html +89 -0
- package/app/s/section-access-control/index.html +89 -0
- package/app/s/section-account-security/index.html +89 -0
- package/app/s/section-accounting/index.html +89 -0
- package/app/s/section-activity/index.html +89 -0
- package/app/s/section-agreements/index.html +89 -0
- package/app/s/section-analytics/index.html +89 -0
- package/app/s/section-assets/index.html +89 -0
- package/app/s/section-billing/index.html +89 -0
- package/app/s/section-calendar/index.html +89 -0
- package/app/s/section-catalog/index.html +89 -0
- package/app/s/section-chat.assistant/index.html +89 -0
- package/app/s/section-comments/index.html +89 -0
- package/app/s/section-fields.form-customization/index.html +89 -0
- package/app/s/section-messages/index.html +89 -0
- package/app/s/section-more/index.html +89 -0
- package/app/s/section-operations/index.html +89 -0
- package/app/s/section-projects/index.html +89 -0
- package/app/s/section-purchasing/index.html +89 -0
- package/app/s/section-reports.materialized/index.html +89 -0
- package/app/s/section-sales/index.html +89 -0
- package/app/s/section-taxonomy/index.html +89 -0
- package/app/s/section-team/index.html +89 -0
- package/dist/ai/echo-gate.d.ts +13 -0
- package/dist/ai/echo-gate.js +21 -0
- package/dist/ai/icons.d.ts +9 -0
- package/dist/ai/icons.js +9 -0
- package/dist/ai/instance.d.ts +3 -0
- package/dist/ai/instance.js +25 -0
- package/dist/ai/state.svelte.d.ts +125 -0
- package/dist/ai/state.svelte.js +286 -0
- package/dist/ai/status.d.ts +67 -0
- package/dist/ai/status.js +117 -0
- package/dist/assets/smrt-mark.svg +38 -0
- package/dist/assistant/change.d.ts +101 -0
- package/dist/assistant/change.js +209 -0
- package/dist/assistant/engine.d.ts +20 -0
- package/dist/assistant/engine.js +43 -0
- package/dist/assistant/llm.worker.d.ts +1 -0
- package/dist/assistant/llm.worker.js +7 -0
- package/dist/assistant/match.d.ts +59 -0
- package/dist/assistant/match.js +271 -0
- package/dist/assistant/models.d.ts +38 -0
- package/dist/assistant/models.js +57 -0
- package/dist/assistant/offers.svelte.d.ts +36 -0
- package/dist/assistant/offers.svelte.js +59 -0
- package/dist/assistant/prefs.d.ts +14 -0
- package/dist/assistant/prefs.js +32 -0
- package/dist/assistant/prompt.d.ts +23 -0
- package/dist/assistant/prompt.js +163 -0
- package/dist/assistant/session.svelte.d.ts +73 -0
- package/dist/assistant/session.svelte.js +163 -0
- package/dist/assistant/theme-undo.svelte.d.ts +38 -0
- package/dist/assistant/theme-undo.svelte.js +50 -0
- package/dist/assistant/transport.d.ts +73 -0
- package/dist/assistant/transport.js +231 -0
- package/dist/assistant/voice-host.d.ts +10 -0
- package/dist/assistant/voice-host.js +17 -0
- package/dist/assistant/voice.svelte.d.ts +107 -0
- package/dist/assistant/voice.svelte.js +261 -0
- package/dist/catalog/catalog.json +89663 -0
- package/dist/catalog/generate/build.d.ts +33 -0
- package/dist/catalog/generate/build.js +131 -0
- package/dist/catalog/generate/exclusions.d.ts +18 -0
- package/dist/catalog/generate/exclusions.js +33 -0
- package/dist/catalog/generate/extract.d.ts +90 -0
- package/dist/catalog/generate/extract.js +326 -0
- package/dist/catalog/generate/local.d.ts +8 -0
- package/dist/catalog/generate/local.js +45 -0
- package/dist/catalog/generate/recipe-demo.d.ts +11 -0
- package/dist/catalog/generate/recipe-demo.js +29 -0
- package/dist/catalog/generate/recipe-metadata.d.ts +12 -0
- package/dist/catalog/generate/recipe-metadata.js +138 -0
- package/dist/catalog/generate/registry.d.ts +14 -0
- package/dist/catalog/generate/registry.js +83 -0
- package/dist/catalog/index.d.ts +21 -0
- package/dist/catalog/index.js +53 -0
- package/dist/catalog/types.d.ts +141 -0
- package/dist/catalog/types.js +8 -0
- package/dist/components/AiSetup.svelte +499 -0
- package/dist/components/AiSetup.svelte.d.ts +8 -0
- package/dist/components/AiStatusIcons.svelte +86 -0
- package/dist/components/AiStatusIcons.svelte.d.ts +18 -0
- package/dist/components/AppSettings.svelte +100 -0
- package/dist/components/AppSettings.svelte.d.ts +10 -0
- package/dist/components/BrowserAssistant.svelte +314 -0
- package/dist/components/BrowserAssistant.svelte.d.ts +8 -0
- package/dist/components/ChildRecords.svelte +331 -0
- package/dist/components/ChildRecords.svelte.d.ts +15 -0
- package/dist/components/ConnectTools.svelte +145 -0
- package/dist/components/ConnectTools.svelte.d.ts +8 -0
- package/dist/components/CookbooksPanel.svelte +308 -0
- package/dist/components/CookbooksPanel.svelte.d.ts +3 -0
- package/dist/components/ExportPanel.svelte +217 -0
- package/dist/components/ExportPanel.svelte.d.ts +3 -0
- package/dist/components/FeatureCard.svelte +197 -0
- package/dist/components/FeatureCard.svelte.d.ts +13 -0
- package/dist/components/FeaturesPanel.svelte +155 -0
- package/dist/components/FeaturesPanel.svelte.d.ts +3 -0
- package/dist/components/FieldInput.svelte +307 -0
- package/dist/components/FieldInput.svelte.d.ts +24 -0
- package/dist/components/FieldMapForm.svelte +173 -0
- package/dist/components/FieldMapForm.svelte.d.ts +18 -0
- package/dist/components/FormWorkspace.svelte +274 -0
- package/dist/components/FormWorkspace.svelte.d.ts +19 -0
- package/dist/components/HelpView.svelte +129 -0
- package/dist/components/HelpView.svelte.d.ts +12 -0
- package/dist/components/ModelOptions.svelte +239 -0
- package/dist/components/ModelOptions.svelte.d.ts +12 -0
- package/dist/components/ModelPage.svelte +295 -0
- package/dist/components/ModelPage.svelte.d.ts +9 -0
- package/dist/components/ModelWorkspace.svelte +488 -0
- package/dist/components/ModelWorkspace.svelte.d.ts +32 -0
- package/dist/components/PlannerEditBridge.svelte +36 -0
- package/dist/components/PlannerEditBridge.svelte.d.ts +3 -0
- package/dist/components/PlannerPalette.svelte +38 -0
- package/dist/components/PlannerPalette.svelte.d.ts +18 -0
- package/dist/components/RecipeCards.svelte +145 -0
- package/dist/components/RecipeCards.svelte.d.ts +3 -0
- package/dist/components/RecipeHelp.svelte +54 -0
- package/dist/components/RecipeHelp.svelte.d.ts +9 -0
- package/dist/components/RecipeOptions.svelte +160 -0
- package/dist/components/RecipeOptions.svelte.d.ts +9 -0
- package/dist/components/RecordFeatures.svelte +240 -0
- package/dist/components/RecordFeatures.svelte.d.ts +3 -0
- package/dist/components/RelationField.svelte +175 -0
- package/dist/components/RelationField.svelte.d.ts +16 -0
- package/dist/components/SectionActions.svelte +91 -0
- package/dist/components/SectionActions.svelte.d.ts +12 -0
- package/dist/components/SectionIcons.svelte +98 -0
- package/dist/components/SectionIcons.svelte.d.ts +15 -0
- package/dist/components/SectionOverview.svelte +65 -0
- package/dist/components/SectionOverview.svelte.d.ts +14 -0
- package/dist/components/SectionPage.svelte +230 -0
- package/dist/components/SectionPage.svelte.d.ts +7 -0
- package/dist/components/SettingsPanel.svelte +60 -0
- package/dist/components/SettingsPanel.svelte.d.ts +7 -0
- package/dist/components/ThemeBridge.svelte +56 -0
- package/dist/components/ThemeBridge.svelte.d.ts +3 -0
- package/dist/components/ThemeSection.svelte +167 -0
- package/dist/components/ThemeSection.svelte.d.ts +11 -0
- package/dist/components/VariantGridForm.svelte +309 -0
- package/dist/components/VariantGridForm.svelte.d.ts +12 -0
- package/dist/components/VoiceTyping.svelte +108 -0
- package/dist/components/VoiceTyping.svelte.d.ts +7 -0
- package/dist/cookbook/assemble.d.ts +16 -0
- package/dist/cookbook/assemble.js +29 -0
- package/dist/cookbook/file.d.ts +7 -0
- package/dist/cookbook/file.js +25 -0
- package/dist/cookbook/legacy.d.ts +9 -0
- package/dist/cookbook/legacy.js +87 -0
- package/dist/cookbook/migrate.d.ts +22 -0
- package/dist/cookbook/migrate.js +106 -0
- package/dist/cookbook/parse.d.ts +16 -0
- package/dist/cookbook/parse.js +246 -0
- package/dist/cookbook/storage.d.ts +45 -0
- package/dist/cookbook/storage.js +98 -0
- package/dist/cookbook/store.svelte.d.ts +94 -0
- package/dist/cookbook/store.svelte.js +231 -0
- package/dist/cookbook/types.d.ts +76 -0
- package/dist/cookbook/types.js +11 -0
- package/dist/cookbook/validate.d.ts +14 -0
- package/dist/cookbook/validate.js +29 -0
- package/dist/core/app.d.ts +12 -0
- package/dist/core/app.js +15 -0
- package/dist/core/catalog.d.ts +19 -0
- package/dist/core/catalog.js +9 -0
- package/dist/core/headless.d.ts +52 -0
- package/dist/core/headless.js +39 -0
- package/dist/core/index.d.ts +28 -0
- package/dist/core/index.js +28 -0
- package/dist/core/prompt.d.ts +38 -0
- package/dist/core/prompt.js +95 -0
- package/dist/core/reply.d.ts +60 -0
- package/dist/core/reply.js +89 -0
- package/dist/core/request.d.ts +15 -0
- package/dist/core/request.js +55 -0
- package/dist/data/children.d.ts +20 -0
- package/dist/data/children.js +80 -0
- package/dist/data/columns.d.ts +56 -0
- package/dist/data/columns.js +150 -0
- package/dist/data/context.d.ts +8 -0
- package/dist/data/context.js +19 -0
- package/dist/data/derived.d.ts +79 -0
- package/dist/data/derived.js +139 -0
- package/dist/data/display.d.ts +23 -0
- package/dist/data/display.js +84 -0
- package/dist/data/fakes.d.ts +52 -0
- package/dist/data/fakes.js +443 -0
- package/dist/data/format.d.ts +48 -0
- package/dist/data/format.js +121 -0
- package/dist/data/labels.d.ts +45 -0
- package/dist/data/labels.js +179 -0
- package/dist/data/packs.d.ts +95 -0
- package/dist/data/packs.js +830 -0
- package/dist/data/payments.d.ts +17 -0
- package/dist/data/payments.js +60 -0
- package/dist/data/planner-source.d.ts +7 -0
- package/dist/data/planner-source.js +32 -0
- package/dist/data/source.d.ts +119 -0
- package/dist/data/source.js +432 -0
- package/dist/features/catalogue.d.ts +96 -0
- package/dist/features/catalogue.js +225 -0
- package/dist/features/demo.d.ts +36 -0
- package/dist/features/demo.js +66 -0
- package/dist/features/palette.d.ts +39 -0
- package/dist/features/palette.js +53 -0
- package/dist/fields/address.d.ts +23 -0
- package/dist/fields/address.js +39 -0
- package/dist/fields/invalid.d.ts +2 -0
- package/dist/fields/invalid.js +8 -0
- package/dist/fields/modal.d.ts +7 -0
- package/dist/fields/modal.js +14 -0
- package/dist/fields/percent.d.ts +8 -0
- package/dist/fields/percent.js +16 -0
- package/dist/fields/renderer.d.ts +17 -0
- package/dist/fields/renderer.js +43 -0
- package/dist/forms/active.d.ts +16 -0
- package/dist/forms/active.js +24 -0
- package/dist/forms/fieldMap.d.ts +44 -0
- package/dist/forms/fieldMap.js +134 -0
- package/dist/forms/shared.d.ts +41 -0
- package/dist/forms/shared.js +138 -0
- package/dist/forms/stock.d.ts +28 -0
- package/dist/forms/stock.js +104 -0
- package/dist/forms/variantGrid.d.ts +83 -0
- package/dist/forms/variantGrid.js +283 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +16 -0
- package/dist/inference/byo.svelte.d.ts +86 -0
- package/dist/inference/byo.svelte.js +267 -0
- package/dist/inference/config.d.ts +70 -0
- package/dist/inference/config.js +149 -0
- package/dist/inference/host.d.ts +40 -0
- package/dist/inference/host.js +57 -0
- package/dist/inference/openai.d.ts +59 -0
- package/dist/inference/openai.js +202 -0
- package/dist/inference/presets.d.ts +5 -0
- package/dist/inference/presets.js +46 -0
- package/dist/kitchen/client.d.ts +39 -0
- package/dist/kitchen/client.js +109 -0
- package/dist/kitchen/fragment.d.ts +30 -0
- package/dist/kitchen/fragment.js +49 -0
- package/dist/kitchen/state.svelte.d.ts +26 -0
- package/dist/kitchen/state.svelte.js +45 -0
- package/dist/library/apply.d.ts +17 -0
- package/dist/library/apply.js +32 -0
- package/dist/library/document.d.ts +12 -0
- package/dist/library/document.js +27 -0
- package/dist/library/icons.d.ts +6 -0
- package/dist/library/icons.js +26 -0
- package/dist/library/index.d.ts +8 -0
- package/dist/library/index.js +12 -0
- package/dist/library/library.json +788 -0
- package/dist/library/menu.d.ts +18 -0
- package/dist/library/menu.js +72 -0
- package/dist/library/state.svelte.d.ts +10 -0
- package/dist/library/state.svelte.js +28 -0
- package/dist/library/types.d.ts +57 -0
- package/dist/library/types.js +1 -0
- package/dist/overviews/definitions.d.ts +24 -0
- package/dist/overviews/definitions.js +97 -0
- package/dist/overviews/page.d.ts +21 -0
- package/dist/overviews/page.js +36 -0
- package/dist/overviews/registry.d.ts +44 -0
- package/dist/overviews/registry.js +191 -0
- package/dist/overviews/validate.d.ts +32 -0
- package/dist/overviews/validate.js +91 -0
- package/dist/planner/Planner.svelte +204 -0
- package/dist/planner/Planner.svelte.d.ts +4 -0
- package/dist/planner/app.svelte.d.ts +6 -0
- package/dist/planner/app.svelte.js +23 -0
- package/dist/planner/assistant.d.ts +46 -0
- package/dist/planner/assistant.js +122 -0
- package/dist/planner/commands/adapter.d.ts +121 -0
- package/dist/planner/commands/adapter.js +597 -0
- package/dist/planner/commands/catalog.d.ts +19 -0
- package/dist/planner/commands/catalog.js +54 -0
- package/dist/planner/commands/controller.svelte.d.ts +13 -0
- package/dist/planner/commands/controller.svelte.js +77 -0
- package/dist/planner/commands/index.d.ts +15 -0
- package/dist/planner/commands/index.js +15 -0
- package/dist/planner/commands/schemas.d.ts +25 -0
- package/dist/planner/commands/schemas.js +67 -0
- package/dist/planner/commands/slices.d.ts +18 -0
- package/dist/planner/commands/slices.js +49 -0
- package/dist/planner/commands/types.d.ts +80 -0
- package/dist/planner/commands/types.js +18 -0
- package/dist/planner/create.d.ts +4 -0
- package/dist/planner/create.js +22 -0
- package/dist/planner/instance.d.ts +15 -0
- package/dist/planner/instance.js +22 -0
- package/dist/planner/query.d.ts +16 -0
- package/dist/planner/query.js +28 -0
- package/dist/planner/selection.d.ts +15 -0
- package/dist/planner/selection.js +38 -0
- package/dist/planner/selection.svelte.d.ts +29 -0
- package/dist/planner/selection.svelte.js +54 -0
- package/dist/planner/tab.svelte.d.ts +11 -0
- package/dist/planner/tab.svelte.js +22 -0
- package/dist/planner/types.d.ts +41 -0
- package/dist/planner/types.js +1 -0
- package/dist/recipes/cards.d.ts +55 -0
- package/dist/recipes/cards.js +80 -0
- package/dist/recipes/features.d.ts +53 -0
- package/dist/recipes/features.js +97 -0
- package/dist/recipes/help/descriptions.json +373 -0
- package/dist/recipes/help.d.ts +121 -0
- package/dist/recipes/help.js +262 -0
- package/dist/recipes/index.d.ts +65 -0
- package/dist/recipes/index.js +95 -0
- package/dist/recipes/merge.d.ts +26 -0
- package/dist/recipes/merge.js +21 -0
- package/dist/recipes/overlay.json +409 -0
- package/dist/recipes/plan-data.d.ts +41 -0
- package/dist/recipes/plan-data.js +97 -0
- package/dist/recipes/plumbing.d.ts +70 -0
- package/dist/recipes/plumbing.js +185 -0
- package/dist/recipes/policy.d.ts +118 -0
- package/dist/recipes/policy.js +268 -0
- package/dist/recipes/resolve.d.ts +19 -0
- package/dist/recipes/resolve.js +65 -0
- package/dist/recipes/scope.d.ts +25 -0
- package/dist/recipes/scope.js +31 -0
- package/dist/recipes/sections.d.ts +49 -0
- package/dist/recipes/sections.js +84 -0
- package/dist/recipes/state.svelte.d.ts +67 -0
- package/dist/recipes/state.svelte.js +112 -0
- package/dist/recipes/types.d.ts +322 -0
- package/dist/recipes/types.js +8 -0
- package/dist/sections/entries.d.ts +30 -0
- package/dist/sections/entries.js +57 -0
- package/dist/sections/info.d.ts +16 -0
- package/dist/sections/info.js +39 -0
- package/dist/sections/path.d.ts +12 -0
- package/dist/sections/path.js +18 -0
- package/dist/settings/app-settings.d.ts +44 -0
- package/dist/settings/app-settings.js +138 -0
- package/dist/settings/currencies.d.ts +2 -0
- package/dist/settings/currencies.js +8 -0
- package/dist/theme/runtime.d.ts +14 -0
- package/dist/theme/runtime.js +27 -0
- package/dist/theme/theme.d.ts +47 -0
- package/dist/theme/theme.js +122 -0
- package/dist/upstream/CustomerSelect.svelte +60 -0
- package/dist/upstream/CustomerSelect.svelte.d.ts +17 -0
- package/dist/upstream/VendorSelect.svelte +60 -0
- package/dist/upstream/VendorSelect.svelte.d.ts +17 -0
- package/dist/upstream/overlay.d.ts +10 -0
- package/dist/upstream/overlay.js +49 -0
- package/dist/upstream/partySelect.d.ts +8 -0
- package/dist/upstream/partySelect.js +21 -0
- package/dist/upstream/partyTypes.d.ts +64 -0
- package/dist/upstream/partyTypes.js +8 -0
- package/dist/upstream/relations.d.ts +2 -0
- package/dist/upstream/relations.js +24 -0
- package/dist/upstream/selects.d.ts +26 -0
- package/dist/upstream/selects.js +20 -0
- package/dist/upstream/widgets.d.ts +20 -0
- package/dist/upstream/widgets.js +30 -0
- package/package.json +80 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CatalogPackage } from '../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Adds `effectiveDemo` to every recipe whose browser-demo answer changes once
|
|
4
|
+
* what it requires is counted: the worst mode of its own `demo` and of every
|
|
5
|
+
* recipe it needs, across packages (smrt#3709). The rule is smrt-core's
|
|
6
|
+
* `effectiveRecipeDemo`, not a copy: it runs here, in the node-side
|
|
7
|
+
* generator, because core is not safe to import into the browser bundle. A
|
|
8
|
+
* recipe whose own `demo` already is its effective one gets no key, and a
|
|
9
|
+
* recipe with no `demo` gets none (nothing was measured).
|
|
10
|
+
*/
|
|
11
|
+
export declare function withEffectiveDemo(packages: readonly CatalogPackage[]): CatalogPackage[];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { effectiveRecipeDemo } from '@happyvertical/smrt-core/recipe-demo';
|
|
2
|
+
/**
|
|
3
|
+
* Adds `effectiveDemo` to every recipe whose browser-demo answer changes once
|
|
4
|
+
* what it requires is counted: the worst mode of its own `demo` and of every
|
|
5
|
+
* recipe it needs, across packages (smrt#3709). The rule is smrt-core's
|
|
6
|
+
* `effectiveRecipeDemo`, not a copy: it runs here, in the node-side
|
|
7
|
+
* generator, because core is not safe to import into the browser bundle. A
|
|
8
|
+
* recipe whose own `demo` already is its effective one gets no key, and a
|
|
9
|
+
* recipe with no `demo` gets none (nothing was measured).
|
|
10
|
+
*/
|
|
11
|
+
export function withEffectiveDemo(packages) {
|
|
12
|
+
const all = packages.flatMap((pkg) => pkg.recipes ?? []);
|
|
13
|
+
return packages.map((pkg) => {
|
|
14
|
+
if (!pkg.recipes)
|
|
15
|
+
return pkg;
|
|
16
|
+
return {
|
|
17
|
+
...pkg,
|
|
18
|
+
recipes: pkg.recipes.map((recipe) => {
|
|
19
|
+
const effective = effectiveRecipeDemo(recipe.id, all);
|
|
20
|
+
if (!effective ||
|
|
21
|
+
!recipe.demo ||
|
|
22
|
+
JSON.stringify(effective) === JSON.stringify(recipe.demo)) {
|
|
23
|
+
return recipe;
|
|
24
|
+
}
|
|
25
|
+
return { ...recipe, effectiveDemo: effective };
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PackageBrowserCapability, Recipe, RecipeDemo } from '../../recipes/types.ts';
|
|
2
|
+
type Json = Record<string, unknown>;
|
|
3
|
+
/** A recipe's `demo`; absent when the mode is not one of the four. */
|
|
4
|
+
export declare function extractDemo(raw: unknown): RecipeDemo | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* The package-level `browser` capability, or undefined when the artifact has
|
|
7
|
+
* none (an unmeasured package, or a smrt that predates smrt#3709).
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractBrowser(raw: unknown): PackageBrowserCapability | undefined;
|
|
10
|
+
/** The validated non-model metadata of one raw recipe entry. */
|
|
11
|
+
export declare function extractRecipeMetadata(raw: Json): Pick<Recipe, 'surfaces' | 'providers' | 'runtime' | 'demoSeed' | 'demo'>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The non-model parts of a recipe entry (smrt#3708 surfaces, providers,
|
|
3
|
+
* runtime, demo seed; smrt#3709 `demo` and the package's `browser`), read from
|
|
4
|
+
* the manifest or knowledge artifact. Each is checked against the shape the
|
|
5
|
+
* Features catalogue renders and dropped when malformed, so a manifest from a
|
|
6
|
+
* newer or older smrt never reaches the UI half-typed. Values are copied as
|
|
7
|
+
* authored: nothing here derives, mocks or rewrites what smrt emitted.
|
|
8
|
+
*/
|
|
9
|
+
const DEMO_MODES = [
|
|
10
|
+
'live',
|
|
11
|
+
'mock',
|
|
12
|
+
'sample',
|
|
13
|
+
'server',
|
|
14
|
+
];
|
|
15
|
+
const RUNTIMES = ['browser', 'server', 'both'];
|
|
16
|
+
const isObject = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
17
|
+
const isString = (value) => typeof value === 'string' && value.length > 0;
|
|
18
|
+
function strings(value) {
|
|
19
|
+
return Array.isArray(value) && value.every((v) => typeof v === 'string')
|
|
20
|
+
? value
|
|
21
|
+
: undefined;
|
|
22
|
+
}
|
|
23
|
+
const isExportRef = (value) => isString(value) && value.includes('#') && !value.startsWith('#');
|
|
24
|
+
/** A surface of a kind the catalogue knows, else undefined (dropped). */
|
|
25
|
+
function surface(raw) {
|
|
26
|
+
if (!isObject(raw))
|
|
27
|
+
return undefined;
|
|
28
|
+
const { kind } = raw;
|
|
29
|
+
if (!isExportRef(raw.export))
|
|
30
|
+
return undefined;
|
|
31
|
+
const icon = isString(raw.icon) ? { icon: raw.icon } : {};
|
|
32
|
+
switch (kind) {
|
|
33
|
+
case 'shell-widget':
|
|
34
|
+
return isString(raw.slot) && isString(raw.label)
|
|
35
|
+
? {
|
|
36
|
+
kind,
|
|
37
|
+
slot: raw.slot,
|
|
38
|
+
export: raw.export,
|
|
39
|
+
label: raw.label,
|
|
40
|
+
...icon,
|
|
41
|
+
}
|
|
42
|
+
: undefined;
|
|
43
|
+
case 'route':
|
|
44
|
+
return isString(raw.path) && isString(raw.label)
|
|
45
|
+
? { kind, path: raw.path, export: raw.export, label: raw.label }
|
|
46
|
+
: undefined;
|
|
47
|
+
case 'settings-panel':
|
|
48
|
+
return isString(raw.label)
|
|
49
|
+
? { kind, export: raw.export, label: raw.label }
|
|
50
|
+
: undefined;
|
|
51
|
+
case 'playground':
|
|
52
|
+
return {
|
|
53
|
+
kind,
|
|
54
|
+
export: raw.export,
|
|
55
|
+
...(isString(raw.label) ? { label: raw.label } : {}),
|
|
56
|
+
};
|
|
57
|
+
case 'widget':
|
|
58
|
+
return isString(raw.type) && isString(raw.label)
|
|
59
|
+
? { ...raw }
|
|
60
|
+
: undefined;
|
|
61
|
+
default:
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function provider(raw) {
|
|
66
|
+
if (!isObject(raw) || !isString(raw.id) || !isString(raw.kind)) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const options = strings(raw.options);
|
|
70
|
+
if (!options || typeof raw.required !== 'boolean')
|
|
71
|
+
return undefined;
|
|
72
|
+
const secrets = strings(raw.secrets);
|
|
73
|
+
const browserOptions = strings(raw.browserOptions);
|
|
74
|
+
return {
|
|
75
|
+
id: raw.id,
|
|
76
|
+
kind: raw.kind,
|
|
77
|
+
options,
|
|
78
|
+
required: raw.required,
|
|
79
|
+
...(secrets?.length ? { secrets } : {}),
|
|
80
|
+
...(browserOptions?.length ? { browserOptions } : {}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function demoSeed(raw) {
|
|
84
|
+
if (!isObject(raw))
|
|
85
|
+
return undefined;
|
|
86
|
+
if (isExportRef(raw.export))
|
|
87
|
+
return { export: raw.export };
|
|
88
|
+
return 'data' in raw ? { data: raw.data } : undefined;
|
|
89
|
+
}
|
|
90
|
+
/** A recipe's `demo`; absent when the mode is not one of the four. */
|
|
91
|
+
export function extractDemo(raw) {
|
|
92
|
+
if (!isObject(raw))
|
|
93
|
+
return undefined;
|
|
94
|
+
const mode = DEMO_MODES.find((m) => m === raw.mode);
|
|
95
|
+
const reasons = strings(raw.reasons);
|
|
96
|
+
if (!mode || !reasons)
|
|
97
|
+
return undefined;
|
|
98
|
+
const mocked = strings(raw.mocked);
|
|
99
|
+
return { mode, reasons, ...(mocked?.length ? { mocked } : {}) };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The package-level `browser` capability, or undefined when the artifact has
|
|
103
|
+
* none (an unmeasured package, or a smrt that predates smrt#3709).
|
|
104
|
+
*/
|
|
105
|
+
export function extractBrowser(raw) {
|
|
106
|
+
if (!isObject(raw))
|
|
107
|
+
return undefined;
|
|
108
|
+
if (raw.status !== 'browser-safe' && raw.status !== 'server-only') {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
const issues = strings(raw.issues);
|
|
112
|
+
const via = strings(raw.via);
|
|
113
|
+
return {
|
|
114
|
+
status: raw.status,
|
|
115
|
+
...(issues?.length ? { issues } : {}),
|
|
116
|
+
...(isString(raw.reason) ? { reason: raw.reason } : {}),
|
|
117
|
+
...(via?.length ? { via } : {}),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** The validated non-model metadata of one raw recipe entry. */
|
|
121
|
+
export function extractRecipeMetadata(raw) {
|
|
122
|
+
const surfaces = Array.isArray(raw.surfaces)
|
|
123
|
+
? raw.surfaces.flatMap((s) => surface(s) ?? [])
|
|
124
|
+
: [];
|
|
125
|
+
const providers = Array.isArray(raw.providers)
|
|
126
|
+
? raw.providers.flatMap((p) => provider(p) ?? [])
|
|
127
|
+
: [];
|
|
128
|
+
const runtime = RUNTIMES.find((r) => r === raw.runtime);
|
|
129
|
+
const seed = demoSeed(raw.demoSeed);
|
|
130
|
+
const demo = extractDemo(raw.demo);
|
|
131
|
+
return {
|
|
132
|
+
...(surfaces.length ? { surfaces } : {}),
|
|
133
|
+
...(providers.length ? { providers } : {}),
|
|
134
|
+
...(runtime ? { runtime } : {}),
|
|
135
|
+
...(seed ? { demoSeed: seed } : {}),
|
|
136
|
+
...(demo ? { demo } : {}),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RawPackage } from './extract.ts';
|
|
2
|
+
export declare const DEFAULT_REGISTRY = "https://npm.happyvertical.com";
|
|
3
|
+
/**
|
|
4
|
+
* Every `@happyvertical/smrt-*` package name the registry's search lists. The
|
|
5
|
+
* search index lags behind publishes, so it supplies names only; versions and
|
|
6
|
+
* contents come from each package's own packument.
|
|
7
|
+
*/
|
|
8
|
+
export declare function discoverPackageNames(registry: string): Promise<string[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Fetch a package's latest version and read its `./manifest.json` export and
|
|
11
|
+
* the `smrt-knowledge.json` beside it. Returns null for packages that export
|
|
12
|
+
* no manifest (tooling, runtime and UI libraries).
|
|
13
|
+
*/
|
|
14
|
+
export declare function fetchPackage(registry: string, packageName: string): Promise<RawPackage | null>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
import { PACKAGE_PREFIX } from "./exclusions.js";
|
|
7
|
+
const run = promisify(execFile);
|
|
8
|
+
export const DEFAULT_REGISTRY = 'https://npm.happyvertical.com';
|
|
9
|
+
async function getJson(url) {
|
|
10
|
+
const response = await fetch(url);
|
|
11
|
+
if (!response.ok)
|
|
12
|
+
throw new Error(`GET ${url} -> ${response.status}`);
|
|
13
|
+
return (await response.json());
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Every `@happyvertical/smrt-*` package name the registry's search lists. The
|
|
17
|
+
* search index lags behind publishes, so it supplies names only; versions and
|
|
18
|
+
* contents come from each package's own packument.
|
|
19
|
+
*/
|
|
20
|
+
export async function discoverPackageNames(registry) {
|
|
21
|
+
const names = new Set();
|
|
22
|
+
const size = 250;
|
|
23
|
+
for (let from = 0;; from += size) {
|
|
24
|
+
const page = await getJson(`${registry}/-/v1/search?text=${encodeURIComponent(PACKAGE_PREFIX)}&size=${size}&from=${from}`);
|
|
25
|
+
for (const { package: pkg } of page.objects) {
|
|
26
|
+
if (pkg.name.startsWith(PACKAGE_PREFIX))
|
|
27
|
+
names.add(pkg.name);
|
|
28
|
+
}
|
|
29
|
+
if (page.objects.length < size)
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return [...names].sort();
|
|
33
|
+
}
|
|
34
|
+
async function readJson(path) {
|
|
35
|
+
try {
|
|
36
|
+
return JSON.parse(await readFile(path, 'utf8'));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Fetch a package's latest version and read its `./manifest.json` export and
|
|
44
|
+
* the `smrt-knowledge.json` beside it. Returns null for packages that export
|
|
45
|
+
* no manifest (tooling, runtime and UI libraries).
|
|
46
|
+
*/
|
|
47
|
+
export async function fetchPackage(registry, packageName) {
|
|
48
|
+
const packument = await getJson(`${registry}/${packageName.replace('/', '%2f')}`);
|
|
49
|
+
const version = packument['dist-tags'].latest;
|
|
50
|
+
const meta = packument.versions[version];
|
|
51
|
+
const entry = meta.exports?.['./manifest.json'];
|
|
52
|
+
const manifestPath = typeof entry === 'string' ? entry : entry?.default;
|
|
53
|
+
if (!manifestPath)
|
|
54
|
+
return null;
|
|
55
|
+
const dir = await mkdtemp(join(tmpdir(), 'smrt-catalog-'));
|
|
56
|
+
try {
|
|
57
|
+
// Tarballs are served from the registry's own host regardless of the
|
|
58
|
+
// absolute URL the packument records.
|
|
59
|
+
const tarball = new URL(meta.dist.tarball);
|
|
60
|
+
const response = await fetch(`${registry}${tarball.pathname}`);
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(`GET ${tarball.pathname} -> ${response.status}`);
|
|
63
|
+
}
|
|
64
|
+
const archive = join(dir, 'package.tgz');
|
|
65
|
+
await writeFile(archive, Buffer.from(await response.arrayBuffer()));
|
|
66
|
+
await run('tar', ['-xzf', archive, '-C', dir]);
|
|
67
|
+
const manifestFile = join(dir, 'package', manifestPath);
|
|
68
|
+
const manifest = await readJson(manifestFile);
|
|
69
|
+
if (!manifest)
|
|
70
|
+
throw new Error(`${packageName}: unreadable ${manifestPath}`);
|
|
71
|
+
const knowledge = await readJson(join(dirname(manifestFile), 'smrt-knowledge.json'));
|
|
72
|
+
return {
|
|
73
|
+
packageName,
|
|
74
|
+
version,
|
|
75
|
+
description: meta.description ?? '',
|
|
76
|
+
manifest,
|
|
77
|
+
knowledge,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await rm(dir, { recursive: true, force: true });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Catalog, CatalogModel, CatalogPackage } from './types.ts';
|
|
2
|
+
export type * from './types.ts';
|
|
3
|
+
/**
|
|
4
|
+
* The static catalog, generated by `pnpm catalog:generate` and committed, with
|
|
5
|
+
* the local stand-ins for enum values, widget hints and undeclared relations
|
|
6
|
+
* (`../upstream/`) applied. Delete the overlay when the manifests carry them.
|
|
7
|
+
*/
|
|
8
|
+
export declare const catalog: Catalog;
|
|
9
|
+
export declare function getPackage(id: string): CatalogPackage | undefined;
|
|
10
|
+
export declare function getModel(packageId: string, modelName: string): CatalogModel | undefined;
|
|
11
|
+
/** Look a model up by its `@scope/pkg:Class` qualified name. */
|
|
12
|
+
export declare function getModelByQualifiedName(qualified: string): {
|
|
13
|
+
pkg: CatalogPackage;
|
|
14
|
+
model: CatalogModel;
|
|
15
|
+
} | undefined;
|
|
16
|
+
/** The models of a package that get generated views (and nav entries). */
|
|
17
|
+
export declare function exposedModels(pkg: CatalogPackage): CatalogModel[];
|
|
18
|
+
/** Case-insensitive match on package id, description, model and field names. */
|
|
19
|
+
export declare function searchPackages(packages: readonly CatalogPackage[], query: string): CatalogPackage[];
|
|
20
|
+
/** Total number of generated surfaces (REST + MCP + CLI) for a package. */
|
|
21
|
+
export declare function surfaceCount(pkg: CatalogPackage): number;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { applyUpstreamOverlay } from "../upstream/overlay.js";
|
|
2
|
+
import raw from './catalog.json' with { type: 'json' };
|
|
3
|
+
/**
|
|
4
|
+
* The static catalog, generated by `pnpm catalog:generate` and committed, with
|
|
5
|
+
* the local stand-ins for enum values, widget hints and undeclared relations
|
|
6
|
+
* (`../upstream/`) applied. Delete the overlay when the manifests carry them.
|
|
7
|
+
*/
|
|
8
|
+
export const catalog = applyUpstreamOverlay(raw);
|
|
9
|
+
const byId = new Map(catalog.packages.map((pkg) => [pkg.id, pkg]));
|
|
10
|
+
export function getPackage(id) {
|
|
11
|
+
return byId.get(id);
|
|
12
|
+
}
|
|
13
|
+
export function getModel(packageId, modelName) {
|
|
14
|
+
return byId.get(packageId)?.models.find((m) => m.name === modelName);
|
|
15
|
+
}
|
|
16
|
+
/** Look a model up by its `@scope/pkg:Class` qualified name. */
|
|
17
|
+
export function getModelByQualifiedName(qualified) {
|
|
18
|
+
const separator = qualified.lastIndexOf(':');
|
|
19
|
+
if (separator < 0)
|
|
20
|
+
return undefined;
|
|
21
|
+
const packageName = qualified.slice(0, separator);
|
|
22
|
+
const pkg = catalog.packages.find((p) => p.packageName === packageName);
|
|
23
|
+
const model = pkg?.models.find((m) => m.id === qualified);
|
|
24
|
+
return pkg && model ? { pkg, model } : undefined;
|
|
25
|
+
}
|
|
26
|
+
/** The models of a package that get generated views (and nav entries). */
|
|
27
|
+
export function exposedModels(pkg) {
|
|
28
|
+
return pkg.models.filter((m) => m.exposed);
|
|
29
|
+
}
|
|
30
|
+
/** Case-insensitive match on package id, description, model and field names. */
|
|
31
|
+
export function searchPackages(packages, query) {
|
|
32
|
+
const terms = query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
33
|
+
if (terms.length === 0)
|
|
34
|
+
return [...packages];
|
|
35
|
+
return packages.filter((pkg) => {
|
|
36
|
+
const haystack = [
|
|
37
|
+
pkg.id,
|
|
38
|
+
pkg.description,
|
|
39
|
+
...pkg.models.flatMap((m) => [
|
|
40
|
+
m.name,
|
|
41
|
+
m.collection,
|
|
42
|
+
...m.fields.map((f) => f.name),
|
|
43
|
+
]),
|
|
44
|
+
]
|
|
45
|
+
.join(' ')
|
|
46
|
+
.toLowerCase();
|
|
47
|
+
return terms.every((term) => haystack.includes(term));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** Total number of generated surfaces (REST + MCP + CLI) for a package. */
|
|
51
|
+
export function surfaceCount(pkg) {
|
|
52
|
+
return pkg.models.reduce((sum, m) => sum + m.rest.length + m.mcp.length + m.cli.length, 0);
|
|
53
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The static package catalog: the shape of `catalog.json`, which
|
|
3
|
+
* `pnpm catalog:generate` writes from the published `@happyvertical/smrt-*`
|
|
4
|
+
* packages' `manifest.json` (and `smrt-knowledge.json` where present).
|
|
5
|
+
*
|
|
6
|
+
* Everything the browser needs is here, so the app never loads a package.
|
|
7
|
+
*/
|
|
8
|
+
import type { PackageBrowserCapability, Recipe } from '../recipes/types.ts';
|
|
9
|
+
/** Field types as the s-m-r-t manifest names them. */
|
|
10
|
+
export type CatalogFieldType = 'text' | 'integer' | 'decimal' | 'boolean' | 'datetime' | 'json' | 'foreignKey' | 'crossPackageRef' | (string & {});
|
|
11
|
+
/** A field's static UI hints, from `@field({ ui })` (`_meta.ui` in the manifest). */
|
|
12
|
+
export interface CatalogFieldUI {
|
|
13
|
+
/** Seeds the field into the "basic" tier, shown before the advanced ones. */
|
|
14
|
+
basic?: boolean;
|
|
15
|
+
/** Grouping key for form sections. */
|
|
16
|
+
group?: string;
|
|
17
|
+
/** Relative sort order, ascending. */
|
|
18
|
+
order?: number;
|
|
19
|
+
/** Seeds the field's policy as locked. */
|
|
20
|
+
locked?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Which input suits the field (`_meta.ui.widget`, happyvertical/smrt#3611).
|
|
23
|
+
* Published manifests do not carry it yet, so `upstream/widgets.ts` fills it
|
|
24
|
+
* in when the catalog loads; a value in the manifest always wins.
|
|
25
|
+
*/
|
|
26
|
+
widget?: CatalogFieldWidget;
|
|
27
|
+
}
|
|
28
|
+
/** The widget hints of happyvertical/smrt#3599. */
|
|
29
|
+
export type CatalogFieldWidget = 'textarea' | 'currency' | 'email' | 'url' | 'phone';
|
|
30
|
+
export interface CatalogField {
|
|
31
|
+
name: string;
|
|
32
|
+
type: CatalogFieldType;
|
|
33
|
+
required: boolean;
|
|
34
|
+
/** Manifest default, when it is a plain JSON value. */
|
|
35
|
+
default?: string | number | boolean | null;
|
|
36
|
+
/** Referenced model (a class name in this package, or a qualified name). */
|
|
37
|
+
related?: string;
|
|
38
|
+
/** Allowed values, when the manifest declares an enumeration. */
|
|
39
|
+
enum?: string[];
|
|
40
|
+
/** `@field({ ui })` hints: `basic`, `group`, `order`, `locked`. */
|
|
41
|
+
ui?: CatalogFieldUI;
|
|
42
|
+
/**
|
|
43
|
+
* The user-facing description from `@field({ description })`, when the
|
|
44
|
+
* package declares one. It feeds the help glossary.
|
|
45
|
+
*/
|
|
46
|
+
description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Framework-managed (tenant id, timestamps): shown in the catalog but never
|
|
49
|
+
* in generated forms.
|
|
50
|
+
*/
|
|
51
|
+
system?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface CatalogRoute {
|
|
54
|
+
method: string;
|
|
55
|
+
/** Path as the REST generator mounts it, without the `/api` prefix. */
|
|
56
|
+
path: string;
|
|
57
|
+
}
|
|
58
|
+
export interface CatalogOperation {
|
|
59
|
+
/** CRUD verb or method name this surface performs. */
|
|
60
|
+
operation: string;
|
|
61
|
+
/** Tool or command name. */
|
|
62
|
+
name: string;
|
|
63
|
+
}
|
|
64
|
+
export interface CatalogMethod {
|
|
65
|
+
name: string;
|
|
66
|
+
async: boolean;
|
|
67
|
+
/** `name: type` parameter strings, optional ones suffixed with `?`. */
|
|
68
|
+
parameters: string[];
|
|
69
|
+
returnType: string;
|
|
70
|
+
/** An MCP tool exists for this method, so an AI agent can call it. */
|
|
71
|
+
aiCallable: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface CatalogModel {
|
|
74
|
+
/** `@scope/pkg:Class` qualified name. */
|
|
75
|
+
id: string;
|
|
76
|
+
/** Class name, e.g. `Product`. */
|
|
77
|
+
name: string;
|
|
78
|
+
/** Collection (REST resource) name, e.g. `products`. */
|
|
79
|
+
collection: string;
|
|
80
|
+
/** Qualified name of the model this one extends, when it is an STI child. */
|
|
81
|
+
extends?: string;
|
|
82
|
+
/** The class's description from the manifest, when the scanner emits one. */
|
|
83
|
+
description?: string;
|
|
84
|
+
/**
|
|
85
|
+
* The manifest's `displayLabelField` (happyvertical/smrt#3611): the own
|
|
86
|
+
* field that labels a record in pickers. Undeclared means the first of `name`,
|
|
87
|
+
* `title`, `label`, `code`; see `data/display.ts`.
|
|
88
|
+
*/
|
|
89
|
+
display?: {
|
|
90
|
+
label: string;
|
|
91
|
+
};
|
|
92
|
+
fields: CatalogField[];
|
|
93
|
+
/** Generated REST routes. */
|
|
94
|
+
rest: CatalogRoute[];
|
|
95
|
+
/** Generated MCP tools. */
|
|
96
|
+
mcp: CatalogOperation[];
|
|
97
|
+
/** Generated CLI commands. */
|
|
98
|
+
cli: CatalogOperation[];
|
|
99
|
+
/** Public methods, with whether an AI agent can call them. */
|
|
100
|
+
methods: CatalogMethod[];
|
|
101
|
+
/** Qualified names of the models this model's fields reference. */
|
|
102
|
+
references: string[];
|
|
103
|
+
/**
|
|
104
|
+
* False for internal models (junction tables and the like) that expose no
|
|
105
|
+
* REST, MCP or CLI surface; they are listed but get no generated views.
|
|
106
|
+
*/
|
|
107
|
+
exposed: boolean;
|
|
108
|
+
}
|
|
109
|
+
export interface CatalogPackage {
|
|
110
|
+
/** Short name used in URLs and the selection, e.g. `products`. */
|
|
111
|
+
id: string;
|
|
112
|
+
/** Full npm name, e.g. `@happyvertical/smrt-products`. */
|
|
113
|
+
packageName: string;
|
|
114
|
+
version: string;
|
|
115
|
+
description: string;
|
|
116
|
+
models: CatalogModel[];
|
|
117
|
+
/** Ids of other catalog packages this one needs (manifest + model refs). */
|
|
118
|
+
dependencies: string[];
|
|
119
|
+
/** Where the surfaces came from: the knowledge artifact or the manifest. */
|
|
120
|
+
surfaceSource: 'knowledge' | 'manifest';
|
|
121
|
+
/**
|
|
122
|
+
* Whether the package builds for a browser, as the manifest states it
|
|
123
|
+
* (smrt#3709). Absent for packages smrt does not measure and for manifests
|
|
124
|
+
* that predate it.
|
|
125
|
+
*/
|
|
126
|
+
browser?: PackageBrowserCapability;
|
|
127
|
+
/**
|
|
128
|
+
* Recipes the package declares (smrt#3604), in declaration order. Absent
|
|
129
|
+
* when it declares none. The planner overlays its local-only parts
|
|
130
|
+
* (`forms`, `extends`) in `src/lib/recipes`.
|
|
131
|
+
*/
|
|
132
|
+
recipes?: Recipe[];
|
|
133
|
+
}
|
|
134
|
+
export interface Catalog {
|
|
135
|
+
/** Schema version of this file. */
|
|
136
|
+
schema: 1;
|
|
137
|
+
/** Registry the catalog was generated from. */
|
|
138
|
+
registry: string;
|
|
139
|
+
/** Sorted by id. */
|
|
140
|
+
packages: CatalogPackage[];
|
|
141
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The static package catalog: the shape of `catalog.json`, which
|
|
3
|
+
* `pnpm catalog:generate` writes from the published `@happyvertical/smrt-*`
|
|
4
|
+
* packages' `manifest.json` (and `smrt-knowledge.json` where present).
|
|
5
|
+
*
|
|
6
|
+
* Everything the browser needs is here, so the app never loads a package.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|