@happyvertical/smrt-planner 0.57.17 → 0.57.19
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 +25 -0
- package/agents/commands.md +3 -0
- package/agents/cookbook.md +4 -1
- package/app/404.html +21 -21
- package/app/_app/immutable/assets/0.BwSv64V0.css +1 -0
- package/app/_app/immutable/assets/{2.D3Ee82Nk.css → 2.BSQtjEJf.css} +1 -1
- package/app/_app/immutable/chunks/{DiDXEaeE.js → 0GttNSaG.js} +2 -2
- package/app/_app/immutable/chunks/{BEfnNZ_r.js → 1Uq1awDD.js} +1 -1
- package/app/_app/immutable/chunks/{BF1b-PyI.js → 3nInxoCv.js} +1 -1
- package/app/_app/immutable/chunks/B2aomX_k.js +1 -0
- package/app/_app/immutable/chunks/{eI3Mmq4z.js → B3xHH6q-.js} +1 -1
- package/app/_app/immutable/chunks/{xfjCb9hA.js → B58ycq6u.js} +1 -1
- package/app/_app/immutable/chunks/{DtyQVtuI.js → B81CeftJ.js} +21 -21
- package/app/_app/immutable/chunks/BBYjYdwL.js +1 -0
- package/app/_app/immutable/chunks/{CMr90D2v.js → BL-j01wI.js} +1 -1
- package/app/_app/immutable/chunks/{BEQ1toJ7.js → BQbkHzk8.js} +1 -1
- package/app/_app/immutable/chunks/{DkYxX008.js → BgDByODt.js} +1 -1
- package/app/_app/immutable/chunks/BoTniyTY.js +1 -0
- package/app/_app/immutable/chunks/{BXYF4p6C.js → CF-iy4N9.js} +1 -1
- package/app/_app/immutable/chunks/{jGR6M6GD.js → CGILVblc.js} +1 -1
- package/app/_app/immutable/chunks/{BPtTI21R.js → CSvhNT33.js} +1 -1
- package/app/_app/immutable/chunks/{cGI232sj.js → CTz6b8sX.js} +1 -1
- package/app/_app/immutable/chunks/{Dbk0PTBM.js → Cn8IkTI5.js} +1 -1
- package/app/_app/immutable/chunks/{CWmRZDhs.js → Cne67d4c.js} +1 -1
- package/app/_app/immutable/chunks/{BkEeNbLN.js → Cptq9dTD.js} +1 -1
- package/app/_app/immutable/chunks/{H-AOqvBm.js → Cv3FXeyB.js} +2 -2
- package/app/_app/immutable/chunks/D95Ltrhv.js +1 -0
- package/app/_app/immutable/chunks/{Dij7Mzy3.js → DBfU27Yr.js} +1 -1
- package/app/_app/immutable/chunks/{LqlI_3J_.js → DV8QsFnv.js} +3 -3
- package/app/_app/immutable/chunks/{47rG5f1n.js → D_tBQk4S.js} +1 -1
- package/app/_app/immutable/chunks/{JHAQM1Si.js → DbPr-Y_R.js} +1 -1
- package/app/_app/immutable/chunks/DjWoxxBo.js +1 -0
- package/app/_app/immutable/chunks/{DdiQBZrC.js → DmWCr2ul.js} +1 -1
- package/app/_app/immutable/chunks/{BRb3XNWx.js → G8JeRda5.js} +1 -1
- package/app/_app/immutable/chunks/{Cp6EyiHL.js → K9O-e-XY.js} +1 -1
- package/app/_app/immutable/chunks/{CHp1-Djt.js → OH7CqE-U.js} +1 -1
- package/app/_app/immutable/chunks/{Bs5WxZDd.js → Qxx7HWld.js} +1 -1
- package/app/_app/immutable/chunks/{ca0lfv12.js → glUGUrBl.js} +1 -1
- package/app/_app/immutable/entry/{app.DBMyUqvv.js → app.CtiuMMEF.js} +2 -2
- package/app/_app/immutable/entry/start.DZqoRv5o.js +1 -0
- package/app/_app/immutable/nodes/0.CoxJIO4G.js +7 -0
- package/app/_app/immutable/nodes/{1.D-mIIzUL.js → 1.BvqpKwaf.js} +1 -1
- package/app/_app/immutable/nodes/{10.BFt6ON7M.js → 10.CEltwRBa.js} +1 -1
- package/app/_app/immutable/nodes/{11.Cxs1R6fC.js → 11.DJ3womq-.js} +1 -1
- package/app/_app/immutable/nodes/{12.BCudMLPz.js → 12.1DKCRq9W.js} +1 -1
- package/app/_app/immutable/nodes/{13.DAt_b1gK.js → 13.Bm9LIH2r.js} +1 -1
- package/app/_app/immutable/nodes/{14.CQQuhb60.js → 14.B0zmE2Ph.js} +1 -1
- package/app/_app/immutable/nodes/2.BlDb4AmE.js +26 -0
- package/app/_app/immutable/nodes/{3.BNTsN4bw.js → 3.ct99VOlW.js} +1 -1
- package/app/_app/immutable/nodes/{4.eKv786mR.js → 4.C-cw-lFZ.js} +1 -1
- package/app/_app/immutable/nodes/{5.k0okSbWb.js → 5.DY71Ssxa.js} +1 -1
- package/app/_app/immutable/nodes/{6.RSsmFdBk.js → 6.Dy6iU6zE.js} +1 -1
- package/app/_app/immutable/nodes/{7.BZAahN28.js → 7.69phJC5H.js} +1 -1
- package/app/_app/immutable/nodes/{8.B9PW4VE1.js → 8.CjTHnpj3.js} +1 -1
- package/app/_app/immutable/nodes/{9.DYbPqDvx.js → 9.uRTCr8p2.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +25 -25
- package/app/ai/index.html +28 -28
- package/app/blueprint/index.html +23 -23
- package/app/cookbook/index.html +23 -23
- package/app/index.html +40 -36
- 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/Lot/index.html +88 -0
- package/app/m/inventory/LotCorrection/index.html +88 -0
- package/app/m/inventory/LotDocument/index.html +88 -0
- package/app/m/inventory/LotStockLevel/index.html +88 -0
- package/app/m/inventory/LotUsage/index.html +88 -0
- 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 +25 -25
- package/app/packages/ingestion/index.html +24 -24
- package/app/packages/inventory/index.html +25 -25
- 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 +25 -25
- 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 +26 -26
- package/app/recipes/account-access/index.html +27 -27
- package/app/recipes/activity/help/index.html +25 -25
- package/app/recipes/activity/index.html +27 -27
- package/app/recipes/agreements/help/index.html +25 -25
- package/app/recipes/agreements/index.html +27 -27
- package/app/recipes/analytics.reports/help/index.html +25 -25
- package/app/recipes/analytics.reports/index.html +27 -27
- package/app/recipes/assets/help/index.html +25 -25
- package/app/recipes/assets/index.html +27 -27
- package/app/recipes/billing/help/index.html +25 -25
- package/app/recipes/billing/index.html +27 -27
- package/app/recipes/chat.assistant/help/index.html +25 -25
- package/app/recipes/chat.assistant/index.html +27 -27
- package/app/recipes/comments/help/index.html +25 -25
- package/app/recipes/comments/index.html +27 -27
- package/app/recipes/commerce.customers/help/index.html +25 -25
- package/app/recipes/commerce.customers/index.html +27 -27
- package/app/recipes/commerce.estimates/help/index.html +25 -25
- package/app/recipes/commerce.estimates/index.html +27 -27
- package/app/recipes/commerce.purchases/help/index.html +25 -25
- package/app/recipes/commerce.purchases/index.html +27 -27
- package/app/recipes/commerce.sales/help/index.html +25 -25
- package/app/recipes/commerce.sales/index.html +27 -27
- package/app/recipes/commerce.vendors/help/index.html +25 -25
- package/app/recipes/commerce.vendors/index.html +27 -27
- package/app/recipes/commerce.wholesale/help/index.html +25 -25
- package/app/recipes/commerce.wholesale/index.html +27 -27
- package/app/recipes/events.calendar/help/index.html +25 -25
- package/app/recipes/events.calendar/index.html +27 -27
- package/app/recipes/expenses.tracking/help/index.html +25 -25
- package/app/recipes/expenses.tracking/index.html +27 -27
- package/app/recipes/fields.form-customization/help/index.html +25 -25
- package/app/recipes/fields.form-customization/index.html +27 -27
- package/app/recipes/ingestion/help/index.html +25 -25
- package/app/recipes/ingestion/index.html +27 -27
- package/app/recipes/integrations/help/index.html +25 -25
- package/app/recipes/integrations/index.html +27 -27
- package/app/recipes/inventory.stock/help/index.html +25 -25
- package/app/recipes/inventory.stock/index.html +27 -27
- package/app/recipes/ledgers.bookkeeping/help/index.html +25 -25
- package/app/recipes/ledgers.bookkeeping/index.html +27 -27
- package/app/recipes/messages/help/index.html +25 -25
- package/app/recipes/messages/index.html +27 -27
- package/app/recipes/products/help/index.html +25 -25
- package/app/recipes/products/index.html +27 -27
- package/app/recipes/projects.tracker/help/index.html +25 -25
- package/app/recipes/projects.tracker/index.html +27 -27
- package/app/recipes/reports.materialized/help/index.html +25 -25
- package/app/recipes/reports.materialized/index.html +27 -27
- package/app/recipes/reports.runtime/help/index.html +25 -25
- package/app/recipes/reports.runtime/index.html +27 -27
- package/app/recipes/sales.pipeline/help/index.html +25 -25
- package/app/recipes/sales.pipeline/index.html +27 -27
- package/app/recipes/tags.taxonomy/help/index.html +25 -25
- package/app/recipes/tags.taxonomy/index.html +27 -27
- package/app/recipes/team-collaboration/help/index.html +25 -25
- package/app/recipes/team-collaboration/index.html +27 -27
- package/app/recipes/timesheets.time-entries/help/index.html +25 -25
- package/app/recipes/timesheets.time-entries/index.html +27 -27
- 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/catalog/catalog.json +937 -39
- package/dist/components/HeaderIconLink.svelte +106 -2
- package/dist/components/HeaderIconLink.svelte.d.ts +4 -0
- package/dist/components/HeaderIconLink.svelte.d.ts.map +1 -1
- package/dist/components/SpecsPanel.svelte +54 -0
- package/dist/components/SpecsPanel.svelte.d.ts +4 -0
- package/dist/components/SpecsPanel.svelte.d.ts.map +1 -0
- package/dist/cookbook/assemble.d.ts +1 -0
- package/dist/cookbook/assemble.d.ts.map +1 -1
- package/dist/cookbook/assemble.js +2 -0
- package/dist/cookbook/parse.d.ts.map +1 -1
- package/dist/cookbook/parse.js +8 -0
- package/dist/cookbook/prompt.d.ts.map +1 -1
- package/dist/cookbook/prompt.js +6 -0
- 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 +10 -1
- package/dist/cookbook/types.d.ts +2 -0
- package/dist/cookbook/types.d.ts.map +1 -1
- 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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/planner/Planner.svelte +87 -16
- package/dist/planner/Planner.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerControls.svelte +35 -3
- package/dist/planner/PlannerControls.svelte.d.ts.map +1 -1
- package/dist/planner/PlannerLifecycle.svelte +10 -0
- package/dist/planner/PlannerLifecycle.svelte.d.ts +1 -1
- package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
- package/dist/planner/bridge.d.ts +2 -0
- package/dist/planner/bridge.d.ts.map +1 -1
- package/dist/planner/bridge.js +17 -3
- package/dist/planner/commands/types.d.ts +1 -1
- package/dist/planner/commands/types.d.ts.map +1 -1
- package/dist/planner/commands/types.js +1 -0
- package/dist/planner/guide.d.ts +21 -1
- package/dist/planner/guide.d.ts.map +1 -1
- package/dist/planner/guide.js +21 -2
- package/dist/planner/header-icons.d.ts +6 -0
- package/dist/planner/header-icons.d.ts.map +1 -1
- package/dist/planner/header-icons.js +6 -0
- package/dist/planner/header-nav.d.ts +17 -0
- package/dist/planner/header-nav.d.ts.map +1 -0
- package/dist/planner/header-nav.js +41 -0
- package/dist/planner/tab.svelte.d.ts +2 -2
- package/dist/planner/tab.svelte.d.ts.map +1 -1
- package/dist/planner/tab.svelte.js +1 -0
- package/dist/planner/types.d.ts +21 -0
- package/dist/planner/types.d.ts.map +1 -1
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +56 -56
- package/app/_app/immutable/assets/0.BaRFeYGU.css +0 -1
- package/app/_app/immutable/chunks/BDBI1GHG.js +0 -1
- package/app/_app/immutable/chunks/BRphH2sp.js +0 -1
- package/app/_app/immutable/chunks/By9nPosf.js +0 -1
- package/app/_app/immutable/chunks/Die26Dpp.js +0 -1
- package/app/_app/immutable/chunks/pwK8zqRY.js +0 -1
- package/app/_app/immutable/entry/start.wMO3ZYuE.js +0 -1
- package/app/_app/immutable/nodes/0.DiMcia2m.js +0 -7
- package/app/_app/immutable/nodes/2.U2UZdfCQ.js +0 -22
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A normally icon-only link in the shell header's end slot: the planner's "Plan the
|
|
4
4
|
* app" (chef's hat) and "Export the app" (download) controls, in the mounted
|
|
5
5
|
* `Planner` and the static app's layout alike. `label` is the accessible name
|
|
6
|
-
* and the tooltip; `current` marks the control whose page is open
|
|
6
|
+
* and the tooltip; `showLabel` opts into visible text. `current` marks the control whose page is open
|
|
7
7
|
* (`aria-current="page"`); `transitionName` is the `view-transition-name` it
|
|
8
8
|
* carries while a route transition runs (one per control, unique on screen).
|
|
9
|
+
*
|
|
10
|
+
* `tone` turns it into one of the labelled header navigation buttons
|
|
11
|
+
* (`headerNav: 'labelled'`): a bordered button with icon and visible text in
|
|
12
|
+
* its own theme colour (info, success, tertiary, warning). A host overrides
|
|
13
|
+
* `--smrt-header-icon-link-accent` on `[data-tone='…']` to recolour one.
|
|
9
14
|
*/
|
|
10
15
|
import {
|
|
11
16
|
shellTargetAction,
|
|
@@ -17,11 +22,15 @@ interface Props {
|
|
|
17
22
|
href: string;
|
|
18
23
|
guideTarget?: string;
|
|
19
24
|
label: string;
|
|
25
|
+
/** Opt-in visible text for a host-labelled action; other links stay icon-only. */
|
|
26
|
+
showLabel?: boolean;
|
|
20
27
|
/** A smrt-ui preset icon name. */
|
|
21
28
|
icon?: string;
|
|
22
29
|
/** A custom icon path (wins over `icon`). */
|
|
23
30
|
path?: string;
|
|
24
31
|
current?: boolean;
|
|
32
|
+
/** Labelled navigation button: its accent colour; implies visible text. */
|
|
33
|
+
tone?: 'specs' | 'features' | 'styles' | 'build';
|
|
25
34
|
transitionName: string;
|
|
26
35
|
onclick?: (event: MouseEvent) => void;
|
|
27
36
|
}
|
|
@@ -30,9 +39,11 @@ let {
|
|
|
30
39
|
href,
|
|
31
40
|
guideTarget,
|
|
32
41
|
label,
|
|
42
|
+
showLabel = false,
|
|
33
43
|
icon,
|
|
34
44
|
path,
|
|
35
45
|
current = false,
|
|
46
|
+
tone,
|
|
36
47
|
transitionName,
|
|
37
48
|
onclick,
|
|
38
49
|
}: Props = $props();
|
|
@@ -42,6 +53,9 @@ const target = shellTargetAction(tryUseShellTargets());
|
|
|
42
53
|
<a
|
|
43
54
|
use:target={guideTarget ?? `item:${transitionName}`}
|
|
44
55
|
class="header-link"
|
|
56
|
+
class:header-link--labelled={showLabel || tone !== undefined}
|
|
57
|
+
class:header-link--nav={tone !== undefined}
|
|
58
|
+
data-tone={tone}
|
|
45
59
|
{href}
|
|
46
60
|
aria-label={label}
|
|
47
61
|
title={label}
|
|
@@ -50,6 +64,7 @@ const target = shellTargetAction(tryUseShellTargets());
|
|
|
50
64
|
{onclick}
|
|
51
65
|
>
|
|
52
66
|
<Icon {path} name={path ? undefined : icon} size={18} />
|
|
67
|
+
{#if showLabel || tone}<span>{label}</span>{/if}
|
|
53
68
|
</a>
|
|
54
69
|
|
|
55
70
|
<style>
|
|
@@ -66,6 +81,13 @@ const target = shellTargetAction(tryUseShellTargets());
|
|
|
66
81
|
color: inherit;
|
|
67
82
|
border-radius: var(--smrt-radius-medium, 0.5rem);
|
|
68
83
|
}
|
|
84
|
+
.header-link--labelled {
|
|
85
|
+
display: inline-flex;
|
|
86
|
+
gap: var(--smrt-spacing-1);
|
|
87
|
+
inline-size: auto;
|
|
88
|
+
padding-inline: var(--smrt-spacing-2);
|
|
89
|
+
white-space: nowrap;
|
|
90
|
+
}
|
|
69
91
|
.header-link:hover {
|
|
70
92
|
background: color-mix(in srgb, currentColor calc(var(--smrt-state-hover) * 100%), transparent);
|
|
71
93
|
}
|
|
@@ -77,6 +99,68 @@ const target = shellTargetAction(tryUseShellTargets());
|
|
|
77
99
|
background: var(--smrt-color-secondary-container, rgb(0 0 0 / 12%));
|
|
78
100
|
color: var(--smrt-color-primary);
|
|
79
101
|
}
|
|
102
|
+
/* The labelled navigation buttons. The accent is the border, the icon and a
|
|
103
|
+
tint; the text stays the theme's own on-surface colour, so its contrast is
|
|
104
|
+
the theme's whatever the accent. The icon and border mix the accent toward
|
|
105
|
+
on-surface (a darker tone in light schemes, a lighter one in dark), so
|
|
106
|
+
they stay at 3:1 or better against the surface in both. */
|
|
107
|
+
.header-link--nav {
|
|
108
|
+
--smrt-header-icon-link-accent: var(--smrt-color-info);
|
|
109
|
+
--smrt-header-icon-link-ink: color-mix(in srgb, var(--smrt-header-icon-link-accent) 60%, var(--smrt-color-on-surface, CanvasText));
|
|
110
|
+
gap: var(--smrt-spacing-2);
|
|
111
|
+
block-size: 2.25rem;
|
|
112
|
+
padding-inline: var(--smrt-spacing-3);
|
|
113
|
+
border: 0.125rem solid var(--smrt-header-icon-link-ink);
|
|
114
|
+
border-radius: var(--smrt-radius-medium, 0.5rem);
|
|
115
|
+
background: color-mix(in srgb, var(--smrt-header-icon-link-accent) 14%, var(--smrt-color-surface, Canvas));
|
|
116
|
+
color: var(--smrt-color-on-surface, CanvasText);
|
|
117
|
+
font-weight: 600;
|
|
118
|
+
text-decoration: none;
|
|
119
|
+
}
|
|
120
|
+
.header-link--nav[data-tone='features'] {
|
|
121
|
+
--smrt-header-icon-link-accent: var(--smrt-color-success);
|
|
122
|
+
}
|
|
123
|
+
.header-link--nav[data-tone='styles'] {
|
|
124
|
+
--smrt-header-icon-link-accent: var(--smrt-color-tertiary);
|
|
125
|
+
}
|
|
126
|
+
.header-link--nav[data-tone='build'] {
|
|
127
|
+
--smrt-header-icon-link-accent: var(--smrt-color-warning);
|
|
128
|
+
}
|
|
129
|
+
.header-link--nav :global(svg) {
|
|
130
|
+
color: var(--smrt-header-icon-link-ink);
|
|
131
|
+
}
|
|
132
|
+
.header-link--nav:hover {
|
|
133
|
+
background: color-mix(in srgb, var(--smrt-header-icon-link-accent) 28%, var(--smrt-color-surface, Canvas));
|
|
134
|
+
}
|
|
135
|
+
.header-link--nav[aria-current='page'] {
|
|
136
|
+
background: color-mix(in srgb, var(--smrt-header-icon-link-accent) 32%, var(--smrt-color-surface, Canvas));
|
|
137
|
+
color: var(--smrt-color-on-surface, CanvasText);
|
|
138
|
+
box-shadow: inset 0 -0.25rem 0 var(--smrt-header-icon-link-ink);
|
|
139
|
+
}
|
|
140
|
+
/* Phone footer bar: four buttons share the row, icon over text. */
|
|
141
|
+
@media (max-width: 30rem) {
|
|
142
|
+
.header-link--nav {
|
|
143
|
+
flex: 1 1 0;
|
|
144
|
+
min-inline-size: 0;
|
|
145
|
+
flex-direction: column;
|
|
146
|
+
gap: 0;
|
|
147
|
+
block-size: auto;
|
|
148
|
+
padding: var(--smrt-spacing-1);
|
|
149
|
+
font-size: 0.6875rem;
|
|
150
|
+
line-height: 1.2;
|
|
151
|
+
}
|
|
152
|
+
.header-link--nav :global(span) {
|
|
153
|
+
max-inline-size: 100%;
|
|
154
|
+
overflow: hidden;
|
|
155
|
+
text-overflow: ellipsis;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
@media (max-width: 20rem) {
|
|
159
|
+
.header-link--nav {
|
|
160
|
+
font-size: 0.625rem;
|
|
161
|
+
border-width: 0.0625rem;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
80
164
|
/* Named only while a transition runs, as in Planner.svelte: a permanent
|
|
81
165
|
name makes a stacking context. */
|
|
82
166
|
:global([data-smrt-view-transition]) .header-link {
|
|
@@ -89,6 +173,26 @@ const target = shellTargetAction(tryUseShellTargets());
|
|
|
89
173
|
background: Highlight;
|
|
90
174
|
color: HighlightText;
|
|
91
175
|
}
|
|
176
|
+
.header-link--nav {
|
|
177
|
+
border-color: ButtonText;
|
|
178
|
+
background: ButtonFace;
|
|
179
|
+
color: ButtonText;
|
|
180
|
+
}
|
|
181
|
+
.header-link--nav :global(svg) {
|
|
182
|
+
color: ButtonText;
|
|
183
|
+
}
|
|
184
|
+
.header-link--nav:hover {
|
|
185
|
+
border-color: Highlight;
|
|
186
|
+
}
|
|
187
|
+
.header-link--nav[aria-current='page'] {
|
|
188
|
+
border-color: Highlight;
|
|
189
|
+
background: Highlight;
|
|
190
|
+
color: HighlightText;
|
|
191
|
+
box-shadow: none;
|
|
192
|
+
}
|
|
193
|
+
.header-link--nav[aria-current='page'] :global(svg) {
|
|
194
|
+
color: HighlightText;
|
|
195
|
+
}
|
|
92
196
|
}
|
|
93
197
|
}
|
|
94
198
|
</style>
|
|
@@ -2,11 +2,15 @@ interface Props {
|
|
|
2
2
|
href: string;
|
|
3
3
|
guideTarget?: string;
|
|
4
4
|
label: string;
|
|
5
|
+
/** Opt-in visible text for a host-labelled action; other links stay icon-only. */
|
|
6
|
+
showLabel?: boolean;
|
|
5
7
|
/** A smrt-ui preset icon name. */
|
|
6
8
|
icon?: string;
|
|
7
9
|
/** A custom icon path (wins over `icon`). */
|
|
8
10
|
path?: string;
|
|
9
11
|
current?: boolean;
|
|
12
|
+
/** Labelled navigation button: its accent colour; implies visible text. */
|
|
13
|
+
tone?: 'specs' | 'features' | 'styles' | 'build';
|
|
10
14
|
transitionName: string;
|
|
11
15
|
onclick?: (event: MouseEvent) => void;
|
|
12
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderIconLink.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/HeaderIconLink.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeaderIconLink.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/HeaderIconLink.svelte.ts"],"names":[],"mappings":"AAuBA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC;AA+BD,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cookbookStore } from '../cookbook/store.svelte.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The Specs tab: the visitor's own product requirements, beyond what the
|
|
6
|
+
* chosen features cover. Saved in the cookbook (`specs`) and carried into the
|
|
7
|
+
* build prompt, so each keystroke goes straight through `setSpecs`.
|
|
8
|
+
*/
|
|
9
|
+
const LIMIT = 20000;
|
|
10
|
+
// The store trims trailing whitespace, so the textarea keeps its own draft:
|
|
11
|
+
// a typed space or new line at the end must not vanish mid-typing. Outside
|
|
12
|
+
// changes (an import, an assistant append) replace the draft.
|
|
13
|
+
let value = $state(cookbookStore.specs ?? '');
|
|
14
|
+
$effect(() => {
|
|
15
|
+
const saved = cookbookStore.specs ?? '';
|
|
16
|
+
if (saved !== value.trimEnd()) value = saved;
|
|
17
|
+
});
|
|
18
|
+
const count = $derived(Array.from(value).length);
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<section class="specs" aria-labelledby="planner-specs-heading">
|
|
22
|
+
<h2 id="planner-specs-heading">Specs</h2>
|
|
23
|
+
<p id="planner-specs-help" class="help">
|
|
24
|
+
What your app must also do beyond its features: unique rules, workflows,
|
|
25
|
+
integrations. They go into your build prompt and exported cookbook.
|
|
26
|
+
</p>
|
|
27
|
+
<textarea
|
|
28
|
+
id="planner-specs-input"
|
|
29
|
+
aria-labelledby="planner-specs-heading"
|
|
30
|
+
{value}
|
|
31
|
+
maxlength={LIMIT}
|
|
32
|
+
rows="14"
|
|
33
|
+
aria-describedby="planner-specs-help planner-specs-count"
|
|
34
|
+
placeholder={'Examples:\n- Customers can only book a class if their waiver is signed.\n- Send a Slack message when an order over $500 is paid.\n- Staff see their own schedule; managers see everyone\'s.'}
|
|
35
|
+
oninput={(event) => {
|
|
36
|
+
value = event.currentTarget.value;
|
|
37
|
+
cookbookStore.setSpecs(value);
|
|
38
|
+
}}
|
|
39
|
+
></textarea>
|
|
40
|
+
<p id="planner-specs-count" class="count">{count.toLocaleString('en-US')} / {LIMIT.toLocaleString('en-US')}</p>
|
|
41
|
+
</section>
|
|
42
|
+
|
|
43
|
+
<style>
|
|
44
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
45
|
+
@layer smrt.theme {
|
|
46
|
+
.specs { display: grid; gap: var(--smrt-spacing-3); max-inline-size: 48rem; }
|
|
47
|
+
h2, .help, .count { margin: 0; }
|
|
48
|
+
.help { color: var(--smrt-color-on-surface-variant); }
|
|
49
|
+
textarea { box-sizing: border-box; inline-size: 100%; min-block-size: 16rem; padding: var(--smrt-spacing-3); border: var(--smrt-control-border); border-radius: var(--smrt-radius-large, 0.75rem); background: var(--smrt-surface-control); color: var(--smrt-color-on-surface); font: inherit; line-height: 1.5; resize: vertical; }
|
|
50
|
+
textarea:focus-visible { outline: var(--smrt-focus-ring-width) solid var(--smrt-focus-ring-color); outline-offset: var(--smrt-focus-ring-offset); }
|
|
51
|
+
textarea::placeholder { color: var(--smrt-color-on-surface-variant); }
|
|
52
|
+
.count { justify-self: end; color: var(--smrt-color-on-surface-variant); font-size: 0.875rem; }
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecsPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SpecsPanel.svelte.ts"],"names":[],"mappings":"AA0CA,QAAA,MAAM,UAAU,2DAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,MAAM,GAAE;IACN,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,MAAM,GAAE;IACN,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,QAAQ,CAoBV"}
|
|
@@ -15,6 +15,8 @@ export function assembleCookbook(plan, extras = {}) {
|
|
|
15
15
|
cookbook.name = extras.name;
|
|
16
16
|
if (extras.description)
|
|
17
17
|
cookbook.description = extras.description;
|
|
18
|
+
if (extras.specs)
|
|
19
|
+
cookbook.specs = extras.specs;
|
|
18
20
|
if (extras.layout)
|
|
19
21
|
cookbook.layout = extras.layout;
|
|
20
22
|
const theme = compactTheme(extras.theme);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAQhE,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAUpB,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,SAAS,KAC5B,eAAe,GAAG,IAAI,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kFAAkF;IAClF,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAsFD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,oBAAyB,GACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAQhE,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAUpB,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,GAAG,SAAS,KAC5B,eAAe,GAAG,IAAI,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kFAAkF;IAClF,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAsFD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,oBAAyB,GACjC,cAAc,CA4KhB"}
|
package/dist/cookbook/parse.js
CHANGED
|
@@ -231,6 +231,14 @@ export function parseCookbookWith(input, options = {}) {
|
|
|
231
231
|
if (value.trim())
|
|
232
232
|
cookbook[key] = value.trim();
|
|
233
233
|
}
|
|
234
|
+
if (input.specs !== undefined) {
|
|
235
|
+
if (typeof input.specs !== 'string') {
|
|
236
|
+
return fail('The cookbook "specs" must be a string.');
|
|
237
|
+
}
|
|
238
|
+
// Keep internal newlines: specs are free text, not a one-line label.
|
|
239
|
+
if (input.specs.trim())
|
|
240
|
+
cookbook.specs = input.specs.trim();
|
|
241
|
+
}
|
|
234
242
|
if (exposure && Object.keys(exposure).length)
|
|
235
243
|
cookbook.exposure = exposure;
|
|
236
244
|
if (layout)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;GAYG;AAEH,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAG7C,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,OAAO,SAAe,GAAG,MAAM,CAEzD;AAED,sHAAsH;AACtH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,SAAe,GACrB,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAiB,GAAG,MAAM,CAK5E;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/prompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;GAYG;AAEH,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAG7C,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,OAAO,SAAe,GAAG,MAAM,CAEzD;AAED,sHAAsH;AACtH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,SAAe,GACrB,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAiB,GAAG,MAAM,CAK5E;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAwCb"}
|
package/dist/cookbook/prompt.js
CHANGED
|
@@ -83,6 +83,12 @@ export function buildAgentPrompt(cookbook, options = {}) {
|
|
|
83
83
|
'',
|
|
84
84
|
`(cd ${appName} && pnpm exec smrt app install)`,
|
|
85
85
|
'',
|
|
86
|
+
...(cookbook.specs?.trim()
|
|
87
|
+
? [
|
|
88
|
+
`5. The cookbook's \`specs\` field lists product requirements beyond the recipes and features: after step 4, implement them in ${appName}, and report any you could not build.`,
|
|
89
|
+
'',
|
|
90
|
+
]
|
|
91
|
+
: []),
|
|
86
92
|
`If any step fails, run \`pnpm exec smrt app doctor\` inside ${appName} and include its findings in your report. Do not hand-edit the app's smrt.cookbook.json: change ${COOKBOOK_FILE} and run \`${cli} cookbook apply ${COOKBOOK_FILE} --into ${appName}\` instead.`,
|
|
87
93
|
'',
|
|
88
94
|
].join('\n');
|
|
@@ -23,9 +23,10 @@ export declare class CookbookStore {
|
|
|
23
23
|
replacementGeneration: number;
|
|
24
24
|
/** The shell layout, owned here and passed to `AppShell`. */
|
|
25
25
|
layout: ShellLayout | undefined;
|
|
26
|
-
/** The app's name and
|
|
26
|
+
/** The app's name, description and specs (`set_name`); specs show in the Specs tab. */
|
|
27
27
|
name: string | undefined;
|
|
28
28
|
description: string | undefined;
|
|
29
|
+
specs: string | undefined;
|
|
29
30
|
/** The app's theme; undefined is the default. The shell applies it live. */
|
|
30
31
|
theme: ThemeSetting | undefined;
|
|
31
32
|
/**
|
|
@@ -71,6 +72,8 @@ export declare class CookbookStore {
|
|
|
71
72
|
setOverview(id: string, override: OverviewOverride | null): void;
|
|
72
73
|
/** An edit from the shell or its layout editor; an empty one clears it. */
|
|
73
74
|
setLayout(next: ShellLayout): void;
|
|
75
|
+
/** The product specs from a text box: ends trimmed, blank clears. Saved like any other change. */
|
|
76
|
+
setSpecs(text: string): void;
|
|
74
77
|
/** Replace everything from a validated cookbook. */
|
|
75
78
|
apply(cookbook: Cookbook): void;
|
|
76
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/store.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWpE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3D,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAgBzE;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,qBAAqB,SAAa;IAClC,6DAA6D;IAC7D,MAAM,0BAAqC;IAC3C,
|
|
1
|
+
{"version":3,"file":"store.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/store.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWpE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG3D,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAgBzE;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,qBAAqB,SAAa;IAClC,6DAA6D;IAC7D,MAAM,0BAAqC;IAC3C,uFAAuF;IACvF,IAAI,qBAAgC;IACpC,WAAW,qBAAgC;IAC3C,KAAK,qBAAgC;IACrC,4EAA4E;IAC5E,KAAK,2BAAsC;IAC3C;;;OAGG;IACH,SAAS,mCAAoD;IAC7D,OAAO,eAAmC;IAC1C,0EAA0E;IAC1E,MAAM,UAAiB;IACvB,6EAA6E;IAC7E,WAAW,UAAS;IACpB,0DAA0D;IAC1D,UAAU,SAAc;IAExB;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B,4EAA4E;IAC5E,aAAa,UAAiB;IAE9B,8EAA8E;IAC9E,OAAO,CAAC,kBAAkB,CAAS;IAEnC,8EAA8E;IAC9E,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAA4C;IAEzD;;;;;OAKG;IACH,QAAQ,IAAI,QAAQ;IAcpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAI7C;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAQhE,2EAA2E;IAC3E,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,kGAAkG;IAClG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B,oDAAoD;IACpD,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAW/B;;;OAGG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAQ9B;IAED,0EAA0E;IAC1E,iBAAiB,IAAI,IAAI;IAKzB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAI9C,uFAAuF;IACvF,QAAQ,IAAI,WAAW;IAIvB,yEAAyE;IACzE,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAMxC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQjC,2EAA2E;IAC3E,KAAK,CAAC,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IActD,oFAAoF;IACpF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAMxC;;;;OAIG;IACH,OAAO,CACL,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,GAAG,IAAyB,GAC3C,OAAO;IA0CV,4EAA4E;IAC5E,IAAI,IAAI,OAAO;IAmBf,kDAAkD;IAClD,YAAY,IAAI,IAAI;IAMpB,+CAA+C;IAC/C,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -38,9 +38,10 @@ export class CookbookStore {
|
|
|
38
38
|
replacementGeneration = $state(0);
|
|
39
39
|
/** The shell layout, owned here and passed to `AppShell`. */
|
|
40
40
|
layout = $state();
|
|
41
|
-
/** The app's name and
|
|
41
|
+
/** The app's name, description and specs (`set_name`); specs show in the Specs tab. */
|
|
42
42
|
name = $state();
|
|
43
43
|
description = $state();
|
|
44
|
+
specs = $state();
|
|
44
45
|
/** The app's theme; undefined is the default. The shell applies it live. */
|
|
45
46
|
theme = $state();
|
|
46
47
|
/**
|
|
@@ -83,6 +84,7 @@ export class CookbookStore {
|
|
|
83
84
|
overviews: $state.snapshot(this.overviews),
|
|
84
85
|
name: this.name,
|
|
85
86
|
description: this.description,
|
|
87
|
+
specs: this.specs,
|
|
86
88
|
});
|
|
87
89
|
}
|
|
88
90
|
/** A page's stored override, or `null` when it is on its defaults. */
|
|
@@ -103,6 +105,11 @@ export class CookbookStore {
|
|
|
103
105
|
setLayout(next) {
|
|
104
106
|
this.layout = isShellLayoutEmpty(next) ? undefined : next;
|
|
105
107
|
}
|
|
108
|
+
/** The product specs from a text box: ends trimmed, blank clears. Saved like any other change. */
|
|
109
|
+
setSpecs(text) {
|
|
110
|
+
const clean = text.trimEnd();
|
|
111
|
+
this.specs = clean.trim() ? clean : undefined;
|
|
112
|
+
}
|
|
106
113
|
/** Replace everything from a validated cookbook. */
|
|
107
114
|
apply(cookbook) {
|
|
108
115
|
recipeState.load(cookbook);
|
|
@@ -110,6 +117,7 @@ export class CookbookStore {
|
|
|
110
117
|
this.theme = cookbook.theme;
|
|
111
118
|
this.name = cookbook.name;
|
|
112
119
|
this.description = cookbook.description;
|
|
120
|
+
this.specs = cookbook.specs;
|
|
113
121
|
this.overviews = { ...(cookbook.overviews ?? {}) };
|
|
114
122
|
followSettings(cookbook);
|
|
115
123
|
}
|
|
@@ -165,6 +173,7 @@ export class CookbookStore {
|
|
|
165
173
|
this.theme = undefined;
|
|
166
174
|
this.name = undefined;
|
|
167
175
|
this.description = undefined;
|
|
176
|
+
this.specs = undefined;
|
|
168
177
|
this.overviews = {};
|
|
169
178
|
this.saveBlocked = false;
|
|
170
179
|
this.keepLegacyUrl = false;
|
package/dist/cookbook/types.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export interface Cookbook {
|
|
|
30
30
|
name?: string;
|
|
31
31
|
/** A line about the app (`set_name`). */
|
|
32
32
|
description?: string;
|
|
33
|
+
/** Product requirements beyond recipes and features (`set_name`); agents treat it as requirements to build. */
|
|
34
|
+
specs?: string;
|
|
33
35
|
/** Added recipe ids, sorted; requirements are already included. */
|
|
34
36
|
recipes: string[];
|
|
35
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,eAAe,iDAAiD,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,eAAe,kDAAkD,CAAC;AAE/E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,cAAc,GACtB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/cookbook/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,eAAe,iDAAiD,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,eAAe,kDAAkD,CAAC;AAE/E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+GAA+G;IAC/G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,cAAc,GACtB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @module
|
|
20
20
|
*/
|
|
21
|
+
export { type AgentPrompt, type AgentPromptOptions, buildAgentPrompt, } from '../cookbook/prompt.ts';
|
|
21
22
|
export { parseSampleContext, type SampleContext, sampleContextSchema, } from '../data/sample-context.ts';
|
|
22
23
|
export { HOST_HISTORY_CHARS, HOST_HISTORY_TURNS, HOST_MESSAGE_CHARS, HOST_WIRE_VERSION, type HostRequest, } from '../inference/host.ts';
|
|
23
24
|
export { buildCommandTools, COMMAND_NAMES, type CommandTool, checkSchema, commandSchemas, commandTools, type JsonSchema, } from '../planner/commands/schemas.ts';
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,wBAAwB,EACxB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,aAAa,EAClB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,wBAAwB,EACxB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,aAAa,EAClB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,OAAO,EACP,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @module
|
|
20
20
|
*/
|
|
21
|
+
export { buildAgentPrompt, } from "../cookbook/prompt.js";
|
|
21
22
|
export { parseSampleContext, sampleContextSchema, } from "../data/sample-context.js";
|
|
22
23
|
export { HOST_HISTORY_CHARS, HOST_HISTORY_TURNS, HOST_MESSAGE_CHARS, HOST_WIRE_VERSION, } from "../inference/host.js";
|
|
23
24
|
export { buildCommandTools, COMMAND_NAMES, checkSchema, commandSchemas, commandTools, } from "../planner/commands/schemas.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
export type { BrowserAssistantTransport, PlannerConversationSeed, } from './assistant/transport.ts';
|
|
10
|
+
export { type AgentPrompt, type AgentPromptOptions, buildAgentPrompt, } from './cookbook/prompt.ts';
|
|
10
11
|
export { type ByoPresetDefinition, type ConfigResult, type CredentialPersistence, type InferenceConfig, type InferenceMode, loadInferenceConfig, parseInferenceConfig, } from './inference/config.ts';
|
|
11
12
|
export { createHostChat, type HostChatOptions, type HostRequest, } from './inference/host.ts';
|
|
12
13
|
export { createOpenAIChat, testConnection } from './inference/openai.ts';
|
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;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"}
|
|
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,WAAW,EAChB,KAAK,kBAAkB,EACvB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,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
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
export { buildAgentPrompt, } from "./cookbook/prompt.js";
|
|
9
10
|
export { loadInferenceConfig, parseInferenceConfig, } from "./inference/config.js";
|
|
10
11
|
export { createHostChat, } from "./inference/host.js";
|
|
11
12
|
export { createOpenAIChat, testConnection } from "./inference/openai.js";
|
|
@@ -48,7 +48,19 @@ import { sectionIdFromSlug } from '../sections/path.js';
|
|
|
48
48
|
import { DEFAULT_PRESET } from '../theme/theme.js';
|
|
49
49
|
import { appHref, setBasePath } from './app.svelte.js';
|
|
50
50
|
import { PLANNER_TAB_IDS } from './commands/index.js';
|
|
51
|
-
import {
|
|
51
|
+
import {
|
|
52
|
+
CHEF_HAT_ICON,
|
|
53
|
+
EXPORT_ICON,
|
|
54
|
+
FEATURES_ICON,
|
|
55
|
+
SPECS_ICON,
|
|
56
|
+
STYLES_ICON,
|
|
57
|
+
} from './header-icons.js';
|
|
58
|
+
import {
|
|
59
|
+
NAV_GROUP_HREF,
|
|
60
|
+
type NavGroup,
|
|
61
|
+
navEntryTab,
|
|
62
|
+
navGroupOf,
|
|
63
|
+
} from './header-nav.js';
|
|
52
64
|
import { plannerRuntime } from './instance.js';
|
|
53
65
|
import PlannerControls from './PlannerControls.svelte';
|
|
54
66
|
import PlannerHostAction from './PlannerHostAction.svelte';
|
|
@@ -73,6 +85,8 @@ let {
|
|
|
73
85
|
onready,
|
|
74
86
|
entryMode = 'browse',
|
|
75
87
|
exportAction,
|
|
88
|
+
exportLabel,
|
|
89
|
+
headerNav = 'icons',
|
|
76
90
|
headerAction,
|
|
77
91
|
initialConversation,
|
|
78
92
|
cookbookOffers,
|
|
@@ -81,6 +95,11 @@ let {
|
|
|
81
95
|
resetDisabledReason,
|
|
82
96
|
}: PlannerProps = $props();
|
|
83
97
|
|
|
98
|
+
const nativeExportLabel = $derived(exportLabel?.trim() || 'Export the app');
|
|
99
|
+
const showExportLabel = $derived(Boolean(exportLabel?.trim()));
|
|
100
|
+
const labelledNav = $derived(headerNav === 'labelled');
|
|
101
|
+
const buildLabel = $derived(exportLabel?.trim() || 'Build');
|
|
102
|
+
|
|
84
103
|
/** The mount's links: its pages are fragment routes, so no host router. */
|
|
85
104
|
const hashHref = (path: string) => `#${path}`;
|
|
86
105
|
// Before anything below renders a link: the planner-wide `appHref` writes
|
|
@@ -370,18 +389,47 @@ const slotItems = $derived<ShellSlotItem[]>([
|
|
|
370
389
|
},
|
|
371
390
|
]
|
|
372
391
|
: []),
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
392
|
+
...(labelledNav
|
|
393
|
+
? [
|
|
394
|
+
{
|
|
395
|
+
id: 'planner-specs',
|
|
396
|
+
label: 'Specs',
|
|
397
|
+
slot: 'header.end' as const,
|
|
398
|
+
render: specsNav,
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
id: 'planner-customize',
|
|
402
|
+
label: 'Features',
|
|
403
|
+
slot: 'header.end' as const,
|
|
404
|
+
render: featuresNav,
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: 'planner-styles',
|
|
408
|
+
label: 'Styles',
|
|
409
|
+
slot: 'header.end' as const,
|
|
410
|
+
render: stylesNav,
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
id: 'planner-export',
|
|
414
|
+
label: buildLabel,
|
|
415
|
+
slot: 'header.end' as const,
|
|
416
|
+
render: buildNav,
|
|
417
|
+
},
|
|
418
|
+
]
|
|
419
|
+
: [
|
|
420
|
+
{
|
|
421
|
+
id: 'planner-customize',
|
|
422
|
+
label: 'Plan the app',
|
|
423
|
+
slot: 'header.end' as const,
|
|
424
|
+
render: customize,
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
id: 'planner-export',
|
|
428
|
+
label: nativeExportLabel,
|
|
429
|
+
slot: 'header.end' as const,
|
|
430
|
+
render: exportLink,
|
|
431
|
+
},
|
|
432
|
+
]),
|
|
385
433
|
]);
|
|
386
434
|
// The shell's own `dock:assistant` button (header end, the dock tab on phones)
|
|
387
435
|
// opens the assistant dock; until the assistant can answer it is a link to the
|
|
@@ -425,6 +473,28 @@ const dockToggles = $derived(
|
|
|
425
473
|
/>
|
|
426
474
|
{/snippet}
|
|
427
475
|
|
|
476
|
+
<!-- Labelled header navigation (`headerNav: 'labelled'`): one button per tab
|
|
477
|
+
group. The route selects the tab; the click also does, for when the hash
|
|
478
|
+
is already there. -->
|
|
479
|
+
{#snippet nav(group: NavGroup, label: string, transitionName: string, icon: { path?: string; name?: string })}
|
|
480
|
+
<HeaderIconLink
|
|
481
|
+
href={NAV_GROUP_HREF[group]}
|
|
482
|
+
{label}
|
|
483
|
+
path={icon.path}
|
|
484
|
+
icon={icon.name}
|
|
485
|
+
tone={group}
|
|
486
|
+
current={configuring && navGroupOf(plannerTab.active) === group}
|
|
487
|
+
{transitionName}
|
|
488
|
+
onclick={() => {
|
|
489
|
+
plannerTab.active = navEntryTab(group, plannerTab.active);
|
|
490
|
+
}}
|
|
491
|
+
/>
|
|
492
|
+
{/snippet}
|
|
493
|
+
{#snippet specsNav()}{@render nav('specs', 'Specs', 'planner-specs', { path: SPECS_ICON })}{/snippet}
|
|
494
|
+
{#snippet featuresNav()}{@render nav('features', 'Features', 'planner-customize', { path: FEATURES_ICON })}{/snippet}
|
|
495
|
+
{#snippet stylesNav()}{@render nav('styles', 'Styles', 'planner-styles', { path: STYLES_ICON })}{/snippet}
|
|
496
|
+
{#snippet buildNav()}{@render nav('build', buildLabel, 'planner-export', { name: EXPORT_ICON })}{/snippet}
|
|
497
|
+
|
|
428
498
|
<!-- The chef's hat: the planner's own pages (Cookbooks, Recipes, Theme,
|
|
429
499
|
Settings, Export), apart from the shell's pencil, which edits the layout. -->
|
|
430
500
|
{#snippet customize()}
|
|
@@ -444,7 +514,8 @@ const dockToggles = $derived(
|
|
|
444
514
|
{#snippet exportLink()}
|
|
445
515
|
<HeaderIconLink
|
|
446
516
|
href="#/configure/export/"
|
|
447
|
-
label=
|
|
517
|
+
label={nativeExportLabel}
|
|
518
|
+
showLabel={showExportLabel}
|
|
448
519
|
icon={EXPORT_ICON}
|
|
449
520
|
current={exporting}
|
|
450
521
|
transitionName="planner-export"
|
|
@@ -487,7 +558,7 @@ const dockToggles = $derived(
|
|
|
487
558
|
{...plannerShellProps()}
|
|
488
559
|
>
|
|
489
560
|
<ThemeBridge deferInitial={persistence === 'host'} presetOverride={applyCookbookTheme(shell.theme)} />
|
|
490
|
-
<PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} {initialConversation} {cookbookOffers} {conversationalAction} nativeAssistant links="hash" />
|
|
561
|
+
<PlannerLifecycle {controller} {basePath} {inference} {persistence} {onready} {initialConversation} {cookbookOffers} {conversationalAction} nativeAssistant links="hash" onreset={resetProject} />
|
|
491
562
|
<main class="content">
|
|
492
563
|
{#if sectionSlug}
|
|
493
564
|
{#if cookbookStore.loaded}
|
|
@@ -523,7 +594,7 @@ const dockToggles = $derived(
|
|
|
523
594
|
{:else if entryMode === 'planning' && recipeState.ids.length === 0 && recipeState.features.length === 0 && (!route || /^\/configure\/?$/.test(route))}
|
|
524
595
|
<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>
|
|
525
596
|
{:else}
|
|
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/" />
|
|
597
|
+
<PlannerControls onreset={resetProject} {resetDisabledReason} {exportAction} {projectPersistence} nativeAssistant={assistant ? aiState.session.transport : undefined} {controller} {basePath} {inference} {persistence} {themeControls} {tabs} {headerNav} managedByParent layout="shell" advancedStylesHref="#/advanced-styles/" />
|
|
527
598
|
{/if}
|
|
528
599
|
</main>
|
|
529
600
|
</CookbookApp>
|