forgebook 0.3.2 → 0.4.0
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 +917 -74
- package/dist/bin/forgebook/agentClient.d.ts +2 -1
- package/dist/bin/forgebook/agentClient.js +13 -6
- package/dist/bin/forgebook/agentGuide.d.ts +59 -0
- package/dist/bin/forgebook/agentGuide.js +203 -0
- package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
- package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
- package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
- package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
- package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
- package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
- package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
- package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
- package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
- package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
- package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
- package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
- package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
- package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
- package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
- package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
- package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
- package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
- package/dist/bin/forgebook/agentText.d.ts +23 -3
- package/dist/bin/forgebook/agentText.js +175 -28
- package/dist/bin/forgebook/agents.md +20 -191
- package/dist/bin/forgebook/agentsText.js +2 -1
- package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
- package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
- package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
- package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
- package/dist/bin/forgebook/auditCommand.d.mts +8 -0
- package/dist/bin/forgebook/auditCommand.mjs +75 -0
- package/dist/bin/forgebook/auditRun.d.ts +95 -0
- package/dist/bin/forgebook/auditRun.js +270 -0
- package/dist/bin/forgebook/browserRun.d.ts +21 -0
- package/dist/bin/forgebook/browserRun.js +57 -0
- package/dist/bin/forgebook/buildFailure.d.ts +7 -0
- package/dist/bin/forgebook/buildFailure.js +47 -0
- package/dist/bin/forgebook/buildWatch.d.ts +52 -0
- package/dist/bin/forgebook/buildWatch.js +137 -0
- package/dist/bin/forgebook/builtCatalogue.js +9 -5
- package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
- package/dist/bin/forgebook/catalogueCommands.js +23 -0
- package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
- package/dist/bin/forgebook/catalogueVite.js +14 -6
- package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
- package/dist/bin/forgebook/commandCacheClaim.js +170 -0
- package/dist/bin/forgebook/commandServer.d.ts +8 -0
- package/dist/bin/forgebook/commandServer.js +61 -13
- package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
- package/dist/bin/forgebook/graphCommand.d.mts +8 -0
- package/dist/bin/forgebook/graphCommand.mjs +84 -0
- package/dist/bin/forgebook/guide/commands.md +57 -0
- package/dist/bin/forgebook/guide/devices.md +17 -0
- package/dist/bin/forgebook/guide/docs-pages.md +13 -0
- package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
- package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
- package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
- package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
- package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
- package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
- package/dist/bin/forgebook/guide/links.md +29 -0
- package/dist/bin/forgebook/guide/setup.md +23 -0
- package/dist/bin/forgebook/guide/stories.md +90 -0
- package/dist/bin/forgebook/guide/switches.md +43 -0
- package/dist/bin/forgebook/guideCommand.d.mts +13 -0
- package/dist/bin/forgebook/guideCommand.mjs +37 -0
- package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
- package/dist/bin/forgebook/importers/storybook.js +11 -5
- package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
- package/dist/bin/forgebook/initCommands.d.mts +11 -0
- package/dist/bin/forgebook/initCommands.mjs +51 -78
- package/dist/bin/forgebook/initConfig.d.ts +5 -3
- package/dist/bin/forgebook/initConfig.js +6 -3
- package/dist/bin/forgebook/initInstall.d.ts +15 -0
- package/dist/bin/forgebook/initInstall.js +77 -0
- package/dist/bin/forgebook/initPrint.d.ts +9 -0
- package/dist/bin/forgebook/initPrint.js +60 -0
- package/dist/bin/forgebook/initRefusals.d.ts +45 -0
- package/dist/bin/forgebook/initRefusals.js +91 -0
- package/dist/bin/forgebook/initRun.d.ts +28 -0
- package/dist/bin/forgebook/initRun.js +311 -0
- package/dist/bin/forgebook/mcpCommand.mjs +38 -4
- package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
- package/dist/bin/forgebook/mcpGraph.js +24 -0
- package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
- package/dist/bin/forgebook/mcpTokens.js +58 -0
- package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
- package/dist/bin/forgebook/mcpToolParts.js +10 -0
- package/dist/bin/forgebook/mcpTools.d.ts +13 -6
- package/dist/bin/forgebook/mcpTools.js +57 -90
- package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
- package/dist/bin/forgebook/mcpVerify.js +36 -0
- package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
- package/dist/bin/forgebook/migrate/codemods.js +61 -0
- package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
- package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
- package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
- package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
- package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
- package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
- package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
- package/dist/bin/forgebook/migrate/migrateText.js +30 -0
- package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
- package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
- package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
- package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
- package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
- package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
- package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
- package/dist/bin/forgebook/newProject/newProject.js +180 -0
- package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
- package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
- package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
- package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
- package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
- package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
- package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
- package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
- package/dist/bin/forgebook/newProject/projectLook.js +293 -0
- package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
- package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
- package/dist/bin/forgebook/newRepair.d.ts +45 -0
- package/dist/bin/forgebook/newRepair.js +157 -0
- package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
- package/dist/bin/forgebook/newRepairRun.js +148 -0
- package/dist/bin/forgebook/newStories.d.ts +23 -1
- package/dist/bin/forgebook/newStories.js +101 -11
- package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
- package/dist/bin/forgebook/newStoriesFile.js +43 -4
- package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
- package/dist/bin/forgebook/prebundleRun.js +28 -8
- package/dist/bin/forgebook/proofCommand.d.mts +15 -0
- package/dist/bin/forgebook/proofCommand.mjs +212 -0
- package/dist/bin/forgebook/proofRun.d.ts +63 -0
- package/dist/bin/forgebook/proofRun.js +412 -0
- package/dist/bin/forgebook/proofText.d.ts +36 -0
- package/dist/bin/forgebook/proofText.js +131 -0
- package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
- package/dist/bin/forgebook/proofWorkflow.js +205 -0
- package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
- package/dist/bin/forgebook/setArgsTool.js +70 -0
- package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
- package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
- package/dist/bin/forgebook/storyCheckRun.js +83 -9
- package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
- package/dist/bin/forgebook/storyFileIds.js +14 -0
- package/dist/bin/forgebook/stressCases.d.ts +31 -0
- package/dist/bin/forgebook/stressCases.js +79 -0
- package/dist/bin/forgebook/stressRun.d.ts +12 -0
- package/dist/bin/forgebook/stressRun.js +61 -0
- package/dist/bin/forgebook/stressText.d.ts +27 -0
- package/dist/bin/forgebook/stressText.js +46 -0
- package/dist/bin/forgebook/verifyBase.d.ts +45 -0
- package/dist/bin/forgebook/verifyBase.js +196 -0
- package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
- package/dist/bin/forgebook/verifyCommand.mjs +125 -0
- package/dist/bin/forgebook/verifyRun.d.ts +63 -0
- package/dist/bin/forgebook/verifyRun.js +108 -0
- package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
- package/dist/bin/forgebook/verifyVerdict.js +297 -0
- package/dist/bin/forgebook/workflowActions.d.ts +23 -0
- package/dist/bin/forgebook/workflowActions.js +23 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
- package/dist/src/addressArgs.d.ts +54 -6
- package/dist/src/addressArgs.js +72 -16
- package/dist/src/addressArgsParam.d.ts +54 -0
- package/dist/src/addressArgsParam.js +51 -0
- package/dist/src/addressTexts.d.ts +14 -0
- package/dist/src/addressTexts.js +28 -21
- package/dist/src/agentIndexFile.d.ts +11 -0
- package/dist/src/agentIndexFile.js +11 -0
- package/dist/src/argConditions.d.ts +52 -0
- package/dist/src/argConditions.js +80 -0
- package/dist/src/argControl.d.ts +100 -0
- package/dist/src/argControl.js +0 -0
- package/dist/src/argExpression.d.ts +21 -0
- package/dist/src/argExpression.js +30 -0
- package/dist/src/argTypes.d.ts +40 -51
- package/dist/src/argTypes.js +66 -184
- package/dist/src/argsProps.d.ts +3 -3
- package/dist/src/argsProps.js +11 -5
- package/dist/src/bundlerErrors.d.ts +29 -0
- package/dist/src/bundlerErrors.js +49 -0
- package/dist/src/catalogue.d.ts +31 -0
- package/dist/src/catalogue.js +13 -2
- package/dist/src/catalogueRefs.d.ts +75 -0
- package/dist/src/catalogueRefs.js +122 -0
- package/dist/src/componentDocs.d.ts +71 -0
- package/dist/src/componentDocs.js +15 -2
- package/dist/src/frame/callValues.d.ts +19 -0
- package/dist/src/frame/callValues.js +58 -0
- package/dist/src/frame/canvasScheme.d.ts +33 -0
- package/dist/src/frame/canvasScheme.js +67 -0
- package/dist/src/frame/frame.css +36 -3
- package/dist/src/frame/frameStatus.d.ts +16 -1
- package/dist/src/frame/frameStatus.js +16 -1
- package/dist/src/frame/frameView.js +4 -3
- package/dist/src/frame/mountFrame.d.ts +7 -1
- package/dist/src/frame/mountFrame.js +153 -46
- package/dist/src/frame/panelValues.d.ts +35 -0
- package/dist/src/frame/panelValues.js +127 -0
- package/dist/src/frame/playActions.d.ts +39 -0
- package/dist/src/frame/playActions.js +98 -0
- package/dist/src/frame/playStepper.d.ts +28 -0
- package/dist/src/frame/playStepper.js +38 -0
- package/dist/src/frame/playStory.d.ts +9 -1
- package/dist/src/frame/playStory.js +49 -3
- package/dist/src/frame/renderer.d.ts +34 -1
- package/dist/src/frame/renderer.js +24 -0
- package/dist/src/frame/shellChannel.d.ts +1 -1
- package/dist/src/frame/shellChannel.js +1 -1
- package/dist/src/frame/shellCheck.d.ts +17 -0
- package/dist/src/frame/shellCheck.js +25 -0
- package/dist/src/frame/shellMessageCheck.d.ts +7 -0
- package/dist/src/frame/shellMessageCheck.js +53 -0
- package/dist/src/frame/storyContent.d.ts +50 -0
- package/dist/src/frame/storyContent.js +73 -0
- package/dist/src/frame/storyModule.d.ts +9 -0
- package/dist/src/frame/storyModule.js +20 -2
- package/dist/src/frame/storyRun.d.ts +15 -7
- package/dist/src/frame/storyRun.js +64 -15
- package/dist/src/frame/valueSheets.d.ts +35 -0
- package/dist/src/frame/valueSheets.js +99 -0
- package/dist/src/hotModules.d.ts +20 -0
- package/dist/src/hotModules.js +23 -0
- package/dist/src/jsxCode.d.ts +1 -14
- package/dist/src/jsxCode.js +46 -10
- package/dist/src/liveErrors.d.ts +30 -4
- package/dist/src/liveErrors.js +18 -3
- package/dist/src/messages.d.ts +77 -27
- package/dist/src/messages.js +58 -100
- package/dist/src/namedValues.d.ts +2 -26
- package/dist/src/namedValues.js +0 -47
- package/dist/src/pageConfig.d.ts +2 -0
- package/dist/src/playTrace.d.ts +19 -2
- package/dist/src/playTrace.js +10 -5
- package/dist/src/plugin.d.ts +10 -3
- package/dist/src/previewRelay.js +9 -1
- package/dist/src/printable.d.ts +12 -0
- package/dist/src/printable.js +22 -0
- package/dist/src/propsSignature.d.ts +37 -0
- package/dist/src/propsSignature.js +40 -0
- package/dist/src/search.d.ts +41 -5
- package/dist/src/search.js +93 -23
- package/dist/src/searchMatch.d.ts +4 -1
- package/dist/src/searchMatch.js +26 -5
- package/dist/src/searchTypos.d.ts +88 -0
- package/dist/src/searchTypos.js +178 -0
- package/dist/src/shapeValues.d.ts +86 -0
- package/dist/src/shapeValues.js +295 -0
- package/dist/src/shell/ApiReference.js +6 -3
- package/dist/src/shell/ApiTableBox.d.ts +15 -0
- package/dist/src/shell/ApiTableBox.js +11 -0
- package/dist/src/shell/AppearanceMenu.d.ts +4 -1
- package/dist/src/shell/AppearanceMenu.js +9 -6
- package/dist/src/shell/CodeTab.d.ts +3 -2
- package/dist/src/shell/CodeTab.js +3 -2
- package/dist/src/shell/CodeText.d.ts +1 -1
- package/dist/src/shell/CodeText.js +2 -3
- package/dist/src/shell/CompareGrid.js +1 -1
- package/dist/src/shell/ComponentPage.d.ts +1 -1
- package/dist/src/shell/ComponentPage.js +5 -1
- package/dist/src/shell/CustomControl.d.ts +34 -0
- package/dist/src/shell/CustomControl.js +132 -0
- package/dist/src/shell/DocContainers.js +1 -1
- package/dist/src/shell/DocPage.js +2 -2
- package/dist/src/shell/DroppedArgsList.d.ts +2 -2
- package/dist/src/shell/DroppedArgsList.js +1 -1
- package/dist/src/shell/EmbedPage.js +58 -14
- package/dist/src/shell/Example.d.ts +5 -1
- package/dist/src/shell/Example.js +16 -8
- package/dist/src/shell/FrameView.d.ts +6 -3
- package/dist/src/shell/FrameView.js +2 -2
- package/dist/src/shell/HomePage.d.ts +3 -1
- package/dist/src/shell/HomePage.js +16 -6
- package/dist/src/shell/InfoTip.js +2 -2
- package/dist/src/shell/InteractionsTab.d.ts +11 -4
- package/dist/src/shell/InteractionsTab.js +18 -2
- package/dist/src/shell/LazyPage.js +1 -1
- package/dist/src/shell/PackageHtml.js +3 -1
- package/dist/src/shell/PinnedControl.js +14 -62
- package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
- package/dist/src/shell/PinnedControlMenu.js +72 -0
- package/dist/src/shell/PluginBlockHost.js +2 -1
- package/dist/src/shell/PluginTabHost.js +19 -2
- package/dist/src/shell/PropFields.d.ts +3 -1
- package/dist/src/shell/PropFields.js +9 -6
- package/dist/src/shell/PropRows.d.ts +23 -2
- package/dist/src/shell/PropRows.js +58 -19
- package/dist/src/shell/PropsTab.d.ts +12 -5
- package/dist/src/shell/PropsTab.js +9 -21
- package/dist/src/shell/RefStoryPage.d.ts +33 -0
- package/dist/src/shell/RefStoryPage.js +123 -0
- package/dist/src/shell/SearchPanel.js +51 -24
- package/dist/src/shell/Shell.d.ts +18 -0
- package/dist/src/shell/Shell.js +137 -22
- package/dist/src/shell/ShortcutHelp.d.ts +22 -0
- package/dist/src/shell/ShortcutHelp.js +66 -0
- package/dist/src/shell/Sidebar.d.ts +17 -4
- package/dist/src/shell/Sidebar.js +92 -41
- package/dist/src/shell/SidebarDocs.js +2 -2
- package/dist/src/shell/SidebarEntries.js +5 -3
- package/dist/src/shell/SidebarHandle.d.ts +3 -5
- package/dist/src/shell/SidebarHandle.js +4 -4
- package/dist/src/shell/SidebarRefs.d.ts +39 -0
- package/dist/src/shell/SidebarRefs.js +99 -0
- package/dist/src/shell/SidebarSearch.js +37 -9
- package/dist/src/shell/SignatureReference.js +3 -1
- package/dist/src/shell/Stage.d.ts +10 -2
- package/dist/src/shell/Stage.js +35 -60
- package/dist/src/shell/StatusBadges.d.ts +54 -0
- package/dist/src/shell/StatusBadges.js +77 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
- package/dist/src/shell/StoryCodeBlock.js +7 -6
- package/dist/src/shell/SwitchGallery.d.ts +36 -0
- package/dist/src/shell/SwitchGallery.js +17 -0
- package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
- package/dist/src/shell/SwitchGalleryPanel.js +99 -0
- package/dist/src/shell/TagFilter.d.ts +24 -0
- package/dist/src/shell/TagFilter.js +45 -0
- package/dist/src/shell/TagViews.d.ts +39 -0
- package/dist/src/shell/TagViews.js +20 -0
- package/dist/src/shell/Toolbar.d.ts +4 -1
- package/dist/src/shell/Toolbar.js +17 -7
- package/dist/src/shell/ToolbarControl.d.ts +3 -0
- package/dist/src/shell/ToolbarControl.js +23 -6
- package/dist/src/shell/ViewMenuPanel.js +6 -1
- package/dist/src/shell/argChecks.d.ts +22 -0
- package/dist/src/shell/argChecks.js +20 -0
- package/dist/src/shell/asideStory.d.ts +17 -4
- package/dist/src/shell/asideStory.js +21 -4
- package/dist/src/shell/audienceSections.css +9 -9
- package/dist/src/shell/catalogueContext.d.ts +1 -1
- package/dist/src/shell/catalogueContext.js +6 -1
- package/dist/src/shell/codeSpans.d.ts +27 -0
- package/dist/src/shell/codeSpans.js +76 -0
- package/dist/src/shell/compareVariants.d.ts +4 -2
- package/dist/src/shell/compareVariants.js +16 -8
- package/dist/src/shell/composition.d.ts +23 -0
- package/dist/src/shell/composition.js +26 -0
- package/dist/src/shell/controlCycle.d.ts +1 -1
- package/dist/src/shell/controlCycle.js +3 -2
- package/dist/src/shell/customControls.d.ts +55 -0
- package/dist/src/shell/customControls.js +70 -0
- package/dist/src/shell/docPage.css +22 -22
- package/dist/src/shell/dockTabs.d.ts +19 -3
- package/dist/src/shell/dockTabs.js +28 -20
- package/dist/src/shell/embed.css +7 -7
- package/dist/src/shell/framesOrigin.d.ts +7 -0
- package/dist/src/shell/framesOrigin.js +1 -1
- package/dist/src/shell/galleryPlace.d.ts +20 -0
- package/dist/src/shell/galleryPlace.js +26 -0
- package/dist/src/shell/icons.d.ts +1 -0
- package/dist/src/shell/icons.js +1 -0
- package/dist/src/shell/keyboard.d.ts +14 -12
- package/dist/src/shell/keyboard.js +21 -6
- package/dist/src/shell/laterStrings.d.ts +29 -0
- package/dist/src/shell/laterStrings.js +42 -3
- package/dist/src/shell/mountShell.js +3 -0
- package/dist/src/shell/pageStrings.d.ts +4 -0
- package/dist/src/shell/pageStrings.js +4 -0
- package/dist/src/shell/pageTagView.d.ts +18 -0
- package/dist/src/shell/pageTagView.js +10 -0
- package/dist/src/shell/playMemory.d.ts +14 -0
- package/dist/src/shell/playMemory.js +8 -0
- package/dist/src/shell/propNotes.d.ts +23 -0
- package/dist/src/shell/propNotes.js +37 -0
- package/dist/src/shell/refIndexLoad.d.ts +17 -0
- package/dist/src/shell/refIndexLoad.js +38 -0
- package/dist/src/shell/refParts.d.ts +34 -0
- package/dist/src/shell/refParts.js +9 -0
- package/dist/src/shell/refStory.css +21 -0
- package/dist/src/shell/refStrings.d.ts +13 -0
- package/dist/src/shell/refStrings.js +21 -0
- package/dist/src/shell/search.css +11 -11
- package/dist/src/shell/shell.css +348 -168
- package/dist/src/shell/shellScheme.js +2 -2
- package/dist/src/shell/shortcutHelp.css +64 -0
- package/dist/src/shell/stageArgs.d.ts +53 -0
- package/dist/src/shell/stageArgs.js +64 -0
- package/dist/src/shell/statusBadges.css +51 -0
- package/dist/src/shell/strings.d.ts +7 -16
- package/dist/src/shell/strings.js +12 -17
- package/dist/src/shell/switchGallery.css +104 -0
- package/dist/src/shell/tagFilter.css +46 -0
- package/dist/src/shell/tagView.d.ts +20 -0
- package/dist/src/shell/tagView.js +10 -0
- package/dist/src/shell/useAddressArgs.d.ts +27 -2
- package/dist/src/shell/useAddressArgs.js +71 -14
- package/dist/src/shell/useControlKeys.js +2 -2
- package/dist/src/shell/useEditedProblems.d.ts +6 -0
- package/dist/src/shell/useEditedProblems.js +40 -0
- package/dist/src/shell/useFrameMessages.js +3 -0
- package/dist/src/shell/useListedTree.d.ts +13 -0
- package/dist/src/shell/useListedTree.js +32 -0
- package/dist/src/shell/usePageFrames.js +2 -2
- package/dist/src/shell/usePopover.d.ts +5 -0
- package/dist/src/shell/usePopover.js +7 -1
- package/dist/src/shell/useRefIndex.d.ts +22 -0
- package/dist/src/shell/useRefIndex.js +36 -0
- package/dist/src/shell/useScrollStops.d.ts +20 -0
- package/dist/src/shell/useScrollStops.js +41 -0
- package/dist/src/shell/useShortcutHelp.d.ts +18 -0
- package/dist/src/shell/useShortcutHelp.js +32 -0
- package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
- package/dist/src/shell/useSidebarOverlay.js +12 -4
- package/dist/src/shell/useStoryCode.d.ts +2 -1
- package/dist/src/shell/useStoryCode.js +12 -7
- package/dist/src/shell/useToolbarLayout.d.ts +5 -1
- package/dist/src/shell/useToolbarLayout.js +2 -2
- package/dist/src/shell/useWorstCase.d.ts +8 -2
- package/dist/src/shell/useWorstCase.js +2 -2
- package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
- package/dist/src/shell/valueEditors/FileEditor.js +66 -0
- package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
- package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
- package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
- package/dist/src/shell/valueEditors/ListEditor.js +82 -0
- package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
- package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
- package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
- package/dist/src/shell/valueEditors/PropEditor.js +53 -0
- package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
- package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
- package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
- package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
- package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
- package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
- package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
- package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
- package/dist/src/shell/valueEditors/ValueField.js +147 -0
- package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
- package/dist/src/shell/valueEditors/editorStrings.js +66 -0
- package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
- package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
- package/dist/src/shell/valueEditors/valueEditors.css +153 -0
- package/dist/src/shell/worstArgs.d.ts +8 -5
- package/dist/src/shell/worstArgs.js +14 -7
- package/dist/src/shellTheme.d.ts +1 -1
- package/dist/src/shellTheme.js +15 -1
- package/dist/src/shellTheme.types.d.ts +4 -0
- package/dist/src/shellWord.d.ts +12 -0
- package/dist/src/shellWord.js +15 -0
- package/dist/src/sourceFiles.js +2 -1
- package/dist/src/storyArgTypes.d.ts +57 -0
- package/dist/src/storyArgTypes.js +195 -0
- package/dist/src/storyBackground.js +14 -3
- package/dist/src/storyCheck.d.ts +85 -3
- package/dist/src/storyCheck.js +23 -1
- package/dist/src/storyCodeText.d.ts +46 -0
- package/dist/src/storyCodeText.js +27 -0
- package/dist/src/storyControls.d.ts +100 -0
- package/dist/src/storyControls.js +100 -0
- package/dist/src/storyStatuses.d.ts +55 -0
- package/dist/src/storyStatuses.js +104 -0
- package/dist/src/storyTagNames.d.ts +25 -0
- package/dist/src/storyTagNames.js +25 -0
- package/dist/src/storyTags.d.ts +29 -0
- package/dist/src/storyTags.js +85 -0
- package/dist/src/storyTree.d.ts +13 -0
- package/dist/src/storyTree.js +24 -4
- package/dist/src/storybookArgs.d.ts +24 -0
- package/dist/src/storybookArgs.js +185 -0
- package/dist/src/switches.d.ts +66 -3
- package/dist/src/switches.js +42 -1
- package/dist/src/valueSchema.d.ts +28 -0
- package/dist/src/valueSchema.js +196 -0
- package/dist/src/valueShape.d.ts +94 -0
- package/dist/src/valueShape.js +25 -0
- package/dist/src/viewState.d.ts +8 -3
- package/dist/src/viewState.js +27 -10
- package/dist/src/vite/adapter.d.ts +40 -2
- package/dist/src/vite/adapter.js +1 -0
- package/dist/src/vite/agent.types.d.ts +347 -7
- package/dist/src/vite/agentApi.d.ts +23 -0
- package/dist/src/vite/agentApi.js +90 -17
- package/dist/src/vite/agentIndex.d.ts +0 -2
- package/dist/src/vite/agentIndex.js +5 -6
- package/dist/src/vite/agentRoutes.d.ts +20 -1
- package/dist/src/vite/agentRoutes.js +106 -65
- package/dist/src/vite/agentStatuses.d.ts +42 -0
- package/dist/src/vite/agentStatuses.js +67 -0
- package/dist/src/vite/agentStoryCode.d.ts +48 -0
- package/dist/src/vite/agentStoryCode.js +38 -0
- package/dist/src/vite/agentVisibility.d.ts +47 -0
- package/dist/src/vite/agentVisibility.js +174 -0
- package/dist/src/vite/appAudit.d.ts +134 -0
- package/dist/src/vite/appAudit.js +333 -0
- package/dist/src/vite/appBuildOption.d.ts +53 -0
- package/dist/src/vite/appBuildOption.js +55 -0
- package/dist/src/vite/appTokenFiles.d.ts +92 -0
- package/dist/src/vite/appTokenFiles.js +433 -0
- package/dist/src/vite/appTokens.d.ts +23 -0
- package/dist/src/vite/appTokens.js +275 -0
- package/dist/src/vite/builtTexts.d.ts +10 -0
- package/dist/src/vite/builtTexts.js +59 -22
- package/dist/src/vite/catalogueConfig.d.ts +3 -1
- package/dist/src/vite/catalogueConfig.js +15 -3
- package/dist/src/vite/changeCoverage.d.ts +74 -0
- package/dist/src/vite/changeCoverage.js +120 -0
- package/dist/src/vite/changedRoute.d.ts +30 -0
- package/dist/src/vite/changedRoute.js +197 -0
- package/dist/src/vite/checkCode.d.ts +105 -3
- package/dist/src/vite/checkCode.js +323 -36
- package/dist/src/vite/checkoutWatch.d.ts +97 -0
- package/dist/src/vite/checkoutWatch.js +287 -0
- package/dist/src/vite/closeWatch.d.ts +8 -0
- package/dist/src/vite/closeWatch.js +1 -1
- package/dist/src/vite/componentCache.d.ts +8 -0
- package/dist/src/vite/componentCache.js +66 -0
- package/dist/src/vite/componentGraph.d.ts +71 -0
- package/dist/src/vite/componentGraph.js +133 -0
- package/dist/src/vite/componentRules.d.ts +33 -0
- package/dist/src/vite/componentRules.js +105 -0
- package/dist/src/vite/componentScan.d.ts +69 -0
- package/dist/src/vite/componentScan.js +418 -0
- package/dist/src/vite/compositionCheck.d.ts +15 -0
- package/dist/src/vite/compositionCheck.js +243 -0
- package/dist/src/vite/config.d.ts +32 -1
- package/dist/src/vite/configFile.d.ts +14 -2
- package/dist/src/vite/configFile.js +124 -40
- package/dist/src/vite/configKeys.d.ts +15 -0
- package/dist/src/vite/configKeys.js +171 -0
- package/dist/src/vite/configLoadError.d.ts +23 -0
- package/dist/src/vite/configLoadError.js +71 -0
- package/dist/src/vite/cssDeclarations.d.ts +71 -0
- package/dist/src/vite/cssDeclarations.js +290 -0
- package/dist/src/vite/cssImports.d.ts +14 -0
- package/dist/src/vite/cssImports.js +48 -0
- package/dist/src/vite/cssReferences.d.ts +54 -0
- package/dist/src/vite/cssReferences.js +157 -0
- package/dist/src/vite/cssTokenValues.d.ts +50 -0
- package/dist/src/vite/cssTokenValues.js +233 -0
- package/dist/src/vite/designTokens.d.ts +24 -0
- package/dist/src/vite/designTokens.js +5 -1
- package/dist/src/vite/docsExtractor.d.ts +9 -3
- package/dist/src/vite/docsExtractor.js +11 -3
- package/dist/src/vite/docsProgram.d.ts +17 -4
- package/dist/src/vite/docsProgram.js +52 -11
- package/dist/src/vite/docsWorker.js +7 -2
- package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
- package/dist/src/vite/emptyStoryGlobs.js +52 -0
- package/dist/src/vite/fileImports.d.ts +17 -0
- package/dist/src/vite/fileImports.js +57 -0
- package/dist/src/vite/findComponent.d.ts +10 -2
- package/dist/src/vite/findComponent.js +27 -22
- package/dist/src/vite/findRoute.js +3 -2
- package/dist/src/vite/forcedStates.d.ts +9 -2
- package/dist/src/vite/forcedStates.js +12 -3
- package/dist/src/vite/forgebookPlugin.d.ts +2 -0
- package/dist/src/vite/forgebookPlugin.js +52 -72
- package/dist/src/vite/frameErrors.d.ts +19 -0
- package/dist/src/vite/frameErrors.js +70 -0
- package/dist/src/vite/framesServer.d.ts +12 -0
- package/dist/src/vite/framesServer.js +21 -4
- package/dist/src/vite/functionComponentDocs.js +81 -12
- package/dist/src/vite/generatedModules.js +4 -2
- package/dist/src/vite/gitChange.d.ts +38 -5
- package/dist/src/vite/gitChange.js +71 -11
- package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
- package/dist/src/vite/hiddenStoryFiles.js +107 -0
- package/dist/src/vite/hotSnippets.d.ts +38 -14
- package/dist/src/vite/hotSnippets.js +137 -39
- package/dist/src/vite/importedNames.d.ts +37 -0
- package/dist/src/vite/importedNames.js +138 -0
- package/dist/src/vite/indexFields.d.ts +6 -0
- package/dist/src/vite/indexFields.js +21 -0
- package/dist/src/vite/indexStoryFile.d.ts +8 -1
- package/dist/src/vite/indexStoryFile.js +22 -157
- package/dist/src/vite/jsxCallSites.d.ts +33 -0
- package/dist/src/vite/jsxCallSites.js +200 -0
- package/dist/src/vite/jsxInScripts.d.ts +67 -0
- package/dist/src/vite/jsxInScripts.js +138 -0
- package/dist/src/vite/jsxTree.d.ts +20 -0
- package/dist/src/vite/jsxTree.js +163 -0
- package/dist/src/vite/lineAndColumn.d.ts +13 -0
- package/dist/src/vite/lineAndColumn.js +18 -0
- package/dist/src/vite/lookAlikes.d.ts +65 -0
- package/dist/src/vite/lookAlikes.js +228 -0
- package/dist/src/vite/nearestToken.d.ts +17 -0
- package/dist/src/vite/nearestToken.js +9 -2
- package/dist/src/vite/packageEntries.d.ts +42 -0
- package/dist/src/vite/packageEntries.js +127 -0
- package/dist/src/vite/pages.d.ts +9 -1
- package/dist/src/vite/pages.js +108 -4
- package/dist/src/vite/pluginConfig.js +4 -0
- package/dist/src/vite/pluginIds.d.ts +2 -0
- package/dist/src/vite/pluginIds.js +5 -1
- package/dist/src/vite/pluginModules.d.ts +81 -11
- package/dist/src/vite/pluginModules.js +109 -21
- package/dist/src/vite/prebundled.d.ts +57 -15
- package/dist/src/vite/prebundled.js +80 -0
- package/dist/src/vite/previewTags.d.ts +25 -0
- package/dist/src/vite/previewTags.js +56 -0
- package/dist/src/vite/projectFiles.d.ts +54 -0
- package/dist/src/vite/projectFiles.js +116 -0
- package/dist/src/vite/projectPostcss.d.ts +70 -0
- package/dist/src/vite/projectPostcss.js +250 -0
- package/dist/src/vite/propDocs.d.ts +12 -0
- package/dist/src/vite/propDocs.js +130 -58
- package/dist/src/vite/propKind.d.ts +40 -0
- package/dist/src/vite/propKind.js +71 -0
- package/dist/src/vite/propTypeNotes.d.ts +22 -0
- package/dist/src/vite/propTypeNotes.js +51 -0
- package/dist/src/vite/publishedExports.d.ts +27 -0
- package/dist/src/vite/publishedExports.js +298 -0
- package/dist/src/vite/realFolder.d.ts +6 -0
- package/dist/src/vite/realFolder.js +25 -0
- package/dist/src/vite/refsConfig.d.ts +39 -0
- package/dist/src/vite/refsConfig.js +54 -0
- package/dist/src/vite/reuseCheck.d.ts +45 -0
- package/dist/src/vite/reuseCheck.js +260 -0
- package/dist/src/vite/runningVersions.d.ts +33 -0
- package/dist/src/vite/runningVersions.js +25 -0
- package/dist/src/vite/scriptProblems.d.ts +60 -0
- package/dist/src/vite/scriptProblems.js +155 -0
- package/dist/src/vite/searchModule.js +3 -2
- package/dist/src/vite/searchRoute.js +4 -2
- package/dist/src/vite/shapeDocs.d.ts +36 -0
- package/dist/src/vite/shapeDocs.js +177 -0
- package/dist/src/vite/singleFileComponent.d.ts +17 -0
- package/dist/src/vite/singleFileComponent.js +83 -0
- package/dist/src/vite/sourceText.d.ts +34 -0
- package/dist/src/vite/sourceText.js +72 -0
- package/dist/src/vite/sourceTokens.d.ts +7 -0
- package/dist/src/vite/sourceTokens.js +7 -2
- package/dist/src/vite/stackLines.d.ts +49 -0
- package/dist/src/vite/stackLines.js +96 -0
- package/dist/src/vite/storyCode.d.ts +22 -7
- package/dist/src/vite/storyCode.js +263 -37
- package/dist/src/vite/storyCoverage.d.ts +48 -0
- package/dist/src/vite/storyCoverage.js +179 -0
- package/dist/src/vite/storyFilesModule.d.ts +48 -3
- package/dist/src/vite/storyFilesModule.js +105 -15
- package/dist/src/vite/storyPatterns.d.ts +31 -0
- package/dist/src/vite/storyPatterns.js +140 -5
- package/dist/src/vite/storyReach.d.ts +10 -2
- package/dist/src/vite/storyReach.js +15 -11
- package/dist/src/vite/storyTopLevel.d.ts +51 -0
- package/dist/src/vite/storyTopLevel.js +146 -0
- package/dist/src/vite/storylessRoutes.d.ts +4 -3
- package/dist/src/vite/storylessRoutes.js +210 -19
- package/dist/src/vite/switchValuesCheck.d.ts +19 -0
- package/dist/src/vite/switchValuesCheck.js +164 -0
- package/dist/src/vite/switchesDocument.d.ts +15 -0
- package/dist/src/vite/switchesDocument.js +47 -0
- package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
- package/dist/src/vite/tailwindConfigTokens.js +306 -0
- package/dist/src/vite/textImports.d.ts +15 -0
- package/dist/src/vite/textImports.js +58 -0
- package/dist/src/vite/textModules.d.ts +6 -5
- package/dist/src/vite/textModules.js +13 -8
- package/dist/src/vite/tokenAnswers.d.ts +6 -2
- package/dist/src/vite/tokenAnswers.js +11 -7
- package/dist/src/vite/typeParameters.d.ts +83 -0
- package/dist/src/vite/typeParameters.js +270 -0
- package/dist/src/vite/unionProps.d.ts +37 -0
- package/dist/src/vite/unionProps.js +121 -0
- package/dist/src/vite/unresolvedTokens.d.ts +20 -0
- package/dist/src/vite/unresolvedTokens.js +193 -0
- package/dist/src/vite/usageGraph.js +10 -52
- package/dist/src/vite/usageGuidance.d.ts +9 -2
- package/dist/src/vite/usageGuidance.js +36 -8
- package/dist/src/vite/usageImports.d.ts +35 -0
- package/dist/src/vite/usageImports.js +280 -0
- package/dist/src/vite/visibilityRoute.d.ts +16 -0
- package/dist/src/vite/visibilityRoute.js +320 -0
- package/dist/src/worstCase.d.ts +2 -0
- package/dist/src/worstCase.js +2 -0
- package/package.json +28 -8
|
@@ -34,8 +34,9 @@ export type ServedCatalogue = {
|
|
|
34
34
|
*
|
|
35
35
|
* @param config - the catalogue's configuration.
|
|
36
36
|
* @param url - where `forgebook dev` runs, when not at Vite's default address.
|
|
37
|
+
* @param isOwn - serve it for the run whatever runs at the address; `false` by default.
|
|
37
38
|
*/
|
|
38
|
-
export declare const servedCatalogue: (config: ResolvedConfig, url: string | undefined) => Promise<ServedCatalogue>;
|
|
39
|
+
export declare const servedCatalogue: (config: ResolvedConfig, url: string | undefined, isOwn?: boolean) => Promise<ServedCatalogue>;
|
|
39
40
|
/**
|
|
40
41
|
* The catalogue's answers: the running dev server at the address when it serves this catalogue, a server of its own
|
|
41
42
|
* otherwise.
|
|
@@ -15,8 +15,10 @@ import { readFile } from "node:fs/promises";
|
|
|
15
15
|
import { createServer as createNetServer } from "node:net";
|
|
16
16
|
import { resolve } from "node:path";
|
|
17
17
|
import { createServer } from "vite";
|
|
18
|
-
import { AGENT_INDEX_FILE
|
|
18
|
+
import { AGENT_INDEX_FILE } from "../../src/agentIndexFile.js";
|
|
19
|
+
import { indexAnswer, isAgentIndex } from "../../src/vite/agentIndex.js";
|
|
19
20
|
import { AGENT_API, agentAnswer, agentServer, ROOT_HEADER, rootHeaderValue } from "../../src/vite/agentRoutes.js";
|
|
21
|
+
import { withoutTrailingSlashes } from "../../src/vite/storyPatterns.js";
|
|
20
22
|
import { commandServerVite } from "./commandServer.js";
|
|
21
23
|
/** Where `forgebook dev` serves when no port is given: Vite's default. */
|
|
22
24
|
export const DEFAULT_ORIGIN = "http://localhost:5173";
|
|
@@ -81,7 +83,7 @@ const indexSource = (from) => {
|
|
|
81
83
|
if (!/^https?:\/\//i.test(from)) {
|
|
82
84
|
return { text: () => readFile(resolve(from, AGENT_INDEX_FILE), "utf8"), origin: "" };
|
|
83
85
|
}
|
|
84
|
-
const origin = from
|
|
86
|
+
const origin = withoutTrailingSlashes(from);
|
|
85
87
|
const address = `${origin}/${AGENT_INDEX_FILE}`;
|
|
86
88
|
const text = async () => {
|
|
87
89
|
const response = await fetch(address, { signal: AbortSignal.timeout(INDEX_TIMEOUT) });
|
|
@@ -149,7 +151,8 @@ const ownListening = async (config, port) => {
|
|
|
149
151
|
await server.close();
|
|
150
152
|
throw error;
|
|
151
153
|
}
|
|
152
|
-
const
|
|
154
|
+
const local = server.resolvedUrls?.local[0];
|
|
155
|
+
const address = local === undefined ? undefined : withoutTrailingSlashes(local);
|
|
153
156
|
if (address === undefined) {
|
|
154
157
|
await server.close();
|
|
155
158
|
throw new Error("The catalogue's dev server started with no address");
|
|
@@ -162,9 +165,13 @@ const ownListening = async (config, port) => {
|
|
|
162
165
|
*
|
|
163
166
|
* @param config - the catalogue's configuration.
|
|
164
167
|
* @param url - where `forgebook dev` runs, when not at Vite's default address.
|
|
168
|
+
* @param isOwn - serve it for the run whatever runs at the address; `false` by default.
|
|
165
169
|
*/
|
|
166
|
-
export const servedCatalogue = async (config, url) => {
|
|
167
|
-
|
|
170
|
+
export const servedCatalogue = async (config, url, isOwn = false) => {
|
|
171
|
+
// a run that has just written a file serves it itself: a running server may still answer with its earlier module
|
|
172
|
+
if (isOwn)
|
|
173
|
+
return ownListening(config, 0);
|
|
174
|
+
const origin = withoutTrailingSlashes(url ?? DEFAULT_ORIGIN);
|
|
168
175
|
const running = await runningClient(origin, config);
|
|
169
176
|
if (running !== undefined)
|
|
170
177
|
return { origin, runningAt: origin, close: async () => undefined };
|
|
@@ -178,7 +185,7 @@ export const servedCatalogue = async (config, url) => {
|
|
|
178
185
|
* @param url - where `forgebook dev` runs, when not at Vite's default address.
|
|
179
186
|
*/
|
|
180
187
|
export const catalogueClient = async (config, url) => {
|
|
181
|
-
const origin = (url ?? DEFAULT_ORIGIN)
|
|
188
|
+
const origin = withoutTrailingSlashes(url ?? DEFAULT_ORIGIN);
|
|
182
189
|
return (await runningClient(origin, config)) ?? ownClient(config, origin);
|
|
183
190
|
};
|
|
184
191
|
/** A port free right now, asked of the system. */
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { GuideDocument, GuideListDocument } from "../../src/vite/agent.types.ts";
|
|
2
|
+
import type { McpTool } from "../../src/vite/mcpProtocol.ts";
|
|
3
|
+
/** The frameworks with an adapter, each named as the adapter's package and its `framework.name`. */
|
|
4
|
+
export declare const GUIDE_FRAMEWORKS: readonly ["react", "preact", "solid", "vue", "nuxt", "svelte", "sveltekit", "angular", "nextjs", "react-native-web", "web-components", "html"];
|
|
5
|
+
/** The topics that hold for every framework, with what each is about. */
|
|
6
|
+
export declare const GUIDE_TOPICS: {
|
|
7
|
+
readonly stories: "Writing a story file: its exports, its parameters, the texts, the TSDoc agents read";
|
|
8
|
+
readonly devices: "Touch, phones and tablets: the Touch switch and the drawn devices";
|
|
9
|
+
readonly "docs-pages": "The docs pages and the written home: front matter, live stories, blocks";
|
|
10
|
+
readonly switches: "The switches, galleries and looks: previews, a value that implies another, a value's own style sheet";
|
|
11
|
+
readonly links: "The links an answer carries for a person, and a page drawn for its audience";
|
|
12
|
+
readonly commands: "Every command an agent uses, and when";
|
|
13
|
+
readonly setup: "What a catalogue may change: checks turned off, the frames' origin, edits that do not arrive, inline previews";
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Whether a name is a framework with a guide.
|
|
17
|
+
*
|
|
18
|
+
* @param name - the name.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isGuideFramework: (name: string) => name is (typeof GUIDE_FRAMEWORKS)[number];
|
|
21
|
+
/**
|
|
22
|
+
* The frameworks a project's stories are written for: the adapter its catalogue's configuration imports, or, with no
|
|
23
|
+
* configuration yet, the adapters its manifest lists.
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* Both are read as text, never run: a command that prints instructions has no reason to execute the project's code,
|
|
27
|
+
* and a configuration that prints, exits or never settles would decide what it answers.
|
|
28
|
+
*
|
|
29
|
+
* @param configFile - the catalogue's configuration file, when there is one.
|
|
30
|
+
* @param dir - where the manifest is read when there is no configuration file; beside the file otherwise.
|
|
31
|
+
* @returns the frameworks with a guide; none when they cannot be told.
|
|
32
|
+
*/
|
|
33
|
+
export declare const projectFrameworks: (configFile: string | undefined, dir: string) => readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* The instructions as a project gets them: the short text, with its frameworks' essentials.
|
|
36
|
+
*
|
|
37
|
+
* @param frameworks - the project's frameworks. One gives its essentials; several, or none, say where to find them,
|
|
38
|
+
* so the section stays short whatever the project lists.
|
|
39
|
+
*/
|
|
40
|
+
export declare const agentsSection: (frameworks: readonly string[]) => string;
|
|
41
|
+
/**
|
|
42
|
+
* The topics, with the project's frameworks.
|
|
43
|
+
*
|
|
44
|
+
* @param frameworks - the project's frameworks.
|
|
45
|
+
*/
|
|
46
|
+
export declare const guideList: (frameworks: readonly string[]) => GuideListDocument;
|
|
47
|
+
/**
|
|
48
|
+
* One topic's text.
|
|
49
|
+
*
|
|
50
|
+
* @param topic - the topic.
|
|
51
|
+
* @returns the document, or none when there is no such topic.
|
|
52
|
+
*/
|
|
53
|
+
export declare const guideTopic: (topic: string) => GuideDocument | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* The tool that prints the guide, as `forgebook guide` does: it asks nothing of the catalogue, so it answers at once.
|
|
56
|
+
*
|
|
57
|
+
* @param frameworks - the catalogue's frameworks.
|
|
58
|
+
*/
|
|
59
|
+
export declare const guideTool: (frameworks: readonly string[]) => McpTool;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forgebook's guide for coding agents, a topic at a time: what `forgebook agents` writes into a project is short on
|
|
3
|
+
* purpose, and `forgebook guide` and the `get_guide` tool print the rest when an agent needs it.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Agents do better with text they ask for than with long static instructions, and a long file loses its middle, so
|
|
7
|
+
* every framework's words stay out of a project that does not use that framework. A framework's file holds its
|
|
8
|
+
* essentials up to the `more` marker, and only those reach the written section; the rest is printed on demand.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
13
|
+
import { dirname, join } from "node:path";
|
|
14
|
+
import { textOf } from "./mcpToolParts.js";
|
|
15
|
+
/** The frameworks with an adapter, each named as the adapter's package and its `framework.name`. */
|
|
16
|
+
export const GUIDE_FRAMEWORKS = [
|
|
17
|
+
"react",
|
|
18
|
+
"preact",
|
|
19
|
+
"solid",
|
|
20
|
+
"vue",
|
|
21
|
+
"nuxt",
|
|
22
|
+
"svelte",
|
|
23
|
+
"sveltekit",
|
|
24
|
+
"angular",
|
|
25
|
+
"nextjs",
|
|
26
|
+
"react-native-web",
|
|
27
|
+
"web-components",
|
|
28
|
+
"html"
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* The framework an adapter's project also lists as a dependency of its own: it writes its stories for the adapter, so
|
|
32
|
+
* the base's sample would only contradict it.
|
|
33
|
+
*/
|
|
34
|
+
const BUILT_ON = {
|
|
35
|
+
nextjs: "react",
|
|
36
|
+
"react-native-web": "react",
|
|
37
|
+
nuxt: "vue",
|
|
38
|
+
sveltekit: "svelte"
|
|
39
|
+
};
|
|
40
|
+
/** The topics that hold for every framework, with what each is about. */
|
|
41
|
+
export const GUIDE_TOPICS = {
|
|
42
|
+
stories: "Writing a story file: its exports, its parameters, the texts, the TSDoc agents read",
|
|
43
|
+
devices: "Touch, phones and tablets: the Touch switch and the drawn devices",
|
|
44
|
+
"docs-pages": "The docs pages and the written home: front matter, live stories, blocks",
|
|
45
|
+
switches: "The switches, galleries and looks: previews, a value that implies another, a value's own style sheet",
|
|
46
|
+
links: "The links an answer carries for a person, and a page drawn for its audience",
|
|
47
|
+
commands: "Every command an agent uses, and when",
|
|
48
|
+
setup: "What a catalogue may change: checks turned off, the frames' origin, edits that do not arrive, inline previews"
|
|
49
|
+
};
|
|
50
|
+
/** The topic that prints every other one, for an agent that wants the whole guide at once. */
|
|
51
|
+
const ALL_TOPIC = "all";
|
|
52
|
+
/** The line of a framework's file that ends its essentials. */
|
|
53
|
+
const MORE_MARKER = /^<!-- more -->\n+/m;
|
|
54
|
+
/** The placeholder of `agents.md` the framework's essentials take. */
|
|
55
|
+
const FRAMEWORK_PLACEHOLDER = "{{framework}}";
|
|
56
|
+
/**
|
|
57
|
+
* Whether a name is a framework with a guide.
|
|
58
|
+
*
|
|
59
|
+
* @param name - the name.
|
|
60
|
+
*/
|
|
61
|
+
export const isGuideFramework = (name) => GUIDE_FRAMEWORKS.some((framework) => framework === name);
|
|
62
|
+
/**
|
|
63
|
+
* A file of the guide, as written.
|
|
64
|
+
*
|
|
65
|
+
* @param path - the file, from the guide's folder.
|
|
66
|
+
*/
|
|
67
|
+
const guideFile = (path) => readFileSync(new URL(`./guide/${path}`, import.meta.url), "utf8").trim();
|
|
68
|
+
/**
|
|
69
|
+
* The adapters a manifest's dependency fields list; a manifest that cannot be read lists none, since it is the project's
|
|
70
|
+
* own tools that report it.
|
|
71
|
+
*
|
|
72
|
+
* @param text - the manifest's text.
|
|
73
|
+
*/
|
|
74
|
+
const manifestDependencies = (text) => {
|
|
75
|
+
let manifest;
|
|
76
|
+
try {
|
|
77
|
+
manifest = JSON.parse(text);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return new Set();
|
|
81
|
+
}
|
|
82
|
+
if (typeof manifest !== "object" || manifest === null)
|
|
83
|
+
return new Set();
|
|
84
|
+
const fields = Object.entries(manifest).filter(([field]) => ["dependencies", "devDependencies", "peerDependencies"].includes(field));
|
|
85
|
+
return new Set(fields.flatMap(([, value]) => typeof value === "object" && value !== null ? Object.keys(value) : []));
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* The frameworks a project's stories are written for: the adapter its catalogue's configuration imports, or, with no
|
|
89
|
+
* configuration yet, the adapters its manifest lists.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* Both are read as text, never run: a command that prints instructions has no reason to execute the project's code,
|
|
93
|
+
* and a configuration that prints, exits or never settles would decide what it answers.
|
|
94
|
+
*
|
|
95
|
+
* @param configFile - the catalogue's configuration file, when there is one.
|
|
96
|
+
* @param dir - where the manifest is read when there is no configuration file; beside the file otherwise.
|
|
97
|
+
* @returns the frameworks with a guide; none when they cannot be told.
|
|
98
|
+
*/
|
|
99
|
+
export const projectFrameworks = (configFile, dir) => {
|
|
100
|
+
const config = configFile !== undefined && existsSync(configFile) ? readFileSync(configFile, "utf8") : "";
|
|
101
|
+
const imported = GUIDE_FRAMEWORKS.filter((framework) => config.includes(`"@forgebook/${framework}/vite"`));
|
|
102
|
+
if (imported.length > 0)
|
|
103
|
+
return imported;
|
|
104
|
+
const manifest = join(configFile === undefined ? dir : dirname(configFile), "package.json");
|
|
105
|
+
if (!existsSync(manifest))
|
|
106
|
+
return [];
|
|
107
|
+
const listed = manifestDependencies(readFileSync(manifest, "utf8"));
|
|
108
|
+
const adapters = GUIDE_FRAMEWORKS.filter((framework) => listed.has(`@forgebook/${framework}`));
|
|
109
|
+
const bases = adapters.flatMap((framework) => BUILT_ON[framework] ?? []);
|
|
110
|
+
return adapters.filter((framework) => !bases.includes(framework));
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* What the section says of the project's framework.
|
|
114
|
+
*
|
|
115
|
+
* @param frameworks - the project's frameworks.
|
|
116
|
+
*/
|
|
117
|
+
const frameworkText = (frameworks) => {
|
|
118
|
+
const [only] = frameworks;
|
|
119
|
+
if (only === undefined) {
|
|
120
|
+
return "`npx forgebook guide <framework>` gives your framework's file names, types and a sample; `npx forgebook guide` lists them.";
|
|
121
|
+
}
|
|
122
|
+
if (frameworks.length > 1) {
|
|
123
|
+
const names = frameworks.map((name) => `\`${name}\``).join(", ");
|
|
124
|
+
return `This project lists several frameworks (${names}): \`npx forgebook guide <name>\` gives each one's file names, types and a sample.`;
|
|
125
|
+
}
|
|
126
|
+
const [essentials = ""] = guideFile(`frameworks/${only}.md`).split(MORE_MARKER);
|
|
127
|
+
return `${essentials.trim()}\n\nThe rest of it: \`npx forgebook guide ${only}\`.`;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* The instructions as a project gets them: the short text, with its frameworks' essentials.
|
|
131
|
+
*
|
|
132
|
+
* @param frameworks - the project's frameworks. One gives its essentials; several, or none, say where to find them,
|
|
133
|
+
* so the section stays short whatever the project lists.
|
|
134
|
+
*/
|
|
135
|
+
export const agentsSection = (frameworks) => {
|
|
136
|
+
const text = frameworkText(frameworks);
|
|
137
|
+
return readFileSync(new URL("./agents.md", import.meta.url), "utf8").replace(FRAMEWORK_PLACEHOLDER,
|
|
138
|
+
// a function, so a `$` in the text is not read as a replacement pattern
|
|
139
|
+
() => text);
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* The topics, with the project's frameworks.
|
|
143
|
+
*
|
|
144
|
+
* @param frameworks - the project's frameworks.
|
|
145
|
+
*/
|
|
146
|
+
export const guideList = (frameworks) => ({
|
|
147
|
+
schema: 1,
|
|
148
|
+
topics: [
|
|
149
|
+
...Object.entries(GUIDE_TOPICS).map(([topic, about]) => ({ topic, about })),
|
|
150
|
+
...GUIDE_FRAMEWORKS.map((topic) => ({
|
|
151
|
+
topic,
|
|
152
|
+
about: `Stories in ${topic}: files, types, args, a sample`
|
|
153
|
+
})),
|
|
154
|
+
{ topic: ALL_TOPIC, about: "Everything above at once: ask for one topic when you can" }
|
|
155
|
+
],
|
|
156
|
+
frameworks
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* One topic's text.
|
|
160
|
+
*
|
|
161
|
+
* @param topic - the topic.
|
|
162
|
+
* @returns the document, or none when there is no such topic.
|
|
163
|
+
*/
|
|
164
|
+
export const guideTopic = (topic) => {
|
|
165
|
+
const textOfTopic = (name) => {
|
|
166
|
+
if (isGuideFramework(name))
|
|
167
|
+
return guideFile(`frameworks/${name}.md`).replace(MORE_MARKER, "");
|
|
168
|
+
return Object.hasOwn(GUIDE_TOPICS, name) ? guideFile(`${name}.md`) : undefined;
|
|
169
|
+
};
|
|
170
|
+
if (topic === ALL_TOPIC) {
|
|
171
|
+
const text = [...Object.keys(GUIDE_TOPICS), ...GUIDE_FRAMEWORKS]
|
|
172
|
+
.map((name) => `<!-- forgebook guide ${name} -->\n\n${textOfTopic(name) ?? ""}`)
|
|
173
|
+
.join("\n\n");
|
|
174
|
+
return { schema: 1, topic, text };
|
|
175
|
+
}
|
|
176
|
+
const text = textOfTopic(topic);
|
|
177
|
+
return text === undefined ? undefined : { schema: 1, topic, text };
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* The tool that prints the guide, as `forgebook guide` does: it asks nothing of the catalogue, so it answers at once.
|
|
181
|
+
*
|
|
182
|
+
* @param frameworks - the catalogue's frameworks.
|
|
183
|
+
*/
|
|
184
|
+
export const guideTool = (frameworks) => ({
|
|
185
|
+
name: "get_guide",
|
|
186
|
+
description: "Forgebook's guide, on demand: how to write a story in this framework, touch and devices, docs pages, links, every command. With no topic, the list of topics.",
|
|
187
|
+
inputSchema: {
|
|
188
|
+
type: "object",
|
|
189
|
+
properties: {
|
|
190
|
+
topic: { type: "string", description: "The topic; none for the list." }
|
|
191
|
+
},
|
|
192
|
+
additionalProperties: false
|
|
193
|
+
},
|
|
194
|
+
call: async (args) => {
|
|
195
|
+
const topic = textOf(args, "topic");
|
|
196
|
+
if (topic === undefined)
|
|
197
|
+
return { structured: guideList(frameworks), isError: false };
|
|
198
|
+
const found = guideTopic(topic);
|
|
199
|
+
return found === undefined
|
|
200
|
+
? { structured: { error: `No topic ${topic}: get_guide with no topic lists them` }, isError: true }
|
|
201
|
+
: { structured: found, isError: false };
|
|
202
|
+
}
|
|
203
|
+
});
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @remarks
|
|
7
7
|
* Defined here, on the scope `forgebookCommands.mts` hands them, so the commands module stays a list of commands; their work lives in
|
|
8
|
-
* their own modules (`agentsText.ts`, `storyCheckRun.ts`, `errorsRun.ts`).
|
|
8
|
+
* their own modules (`agentGuide.ts`, `agentsText.ts`, `storyCheckRun.ts`, `errorsRun.ts`).
|
|
9
9
|
*
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
@@ -16,13 +16,15 @@ import { formatJson } from "@ensiria/cli-kit/files";
|
|
|
16
16
|
import { ScriptError } from "@ensiria/cli-kit/script";
|
|
17
17
|
import { isChangedStoriesDocument, isFoundComponentsDocument } from "../../src/vite/agentApi.js";
|
|
18
18
|
import { catalogueClient } from "./agentClient.js";
|
|
19
|
+
import { agentsSection, GUIDE_FRAMEWORKS, projectFrameworks } from "./agentGuide.js";
|
|
19
20
|
import { agentsSkill, SKILL_FOLDERS, withAgentsSection } from "./agentsText.js";
|
|
20
21
|
import { checkText, errorsOutput, foundComponentsText, shotText } from "./agentText.js";
|
|
21
|
-
import { askCatalogue, COMMAND, configOf, printAnswer } from "./catalogueCommands.js";
|
|
22
|
+
import { askCatalogue, COMMAND, configOf, configPathOf, printAnswer } from "./catalogueCommands.js";
|
|
22
23
|
import { runCheckCode } from "./checkCodeRun.js";
|
|
23
24
|
import { askErrors, followErrors, sinceOf } from "./errorsRun.js";
|
|
24
25
|
import { storyCheckCommands } from "./storyCheckCommands.mjs";
|
|
25
|
-
import { runPageCheck,
|
|
26
|
+
import { runPageCheck, runStoryShot } from "./storyCheckRun.js";
|
|
27
|
+
import { verifyCommands } from "./verifyCommand.mjs";
|
|
26
28
|
import { BASELINES_FOLDER, updateBaselines } from "./visualCommands.mjs";
|
|
27
29
|
/**
|
|
28
30
|
* The catalogue the errors are asked of: only frames open in a browser report to a running dev server, so without one
|
|
@@ -72,6 +74,7 @@ const changedOf = async (config, options, log) => {
|
|
|
72
74
|
*/
|
|
73
75
|
export const agentLoopCommands = (forgebook) => ({
|
|
74
76
|
...storyCheckCommands(forgebook),
|
|
77
|
+
...verifyCommands(forgebook),
|
|
75
78
|
find: forgebook.command({
|
|
76
79
|
summary: "Find components by what they are for, in your own words.",
|
|
77
80
|
json: true,
|
|
@@ -120,44 +123,6 @@ export const agentLoopCommands = (forgebook) => ({
|
|
|
120
123
|
io.stdout.write(isJson ? formatJson(body) : `${text === "" ? "No story touched." : text}\n`);
|
|
121
124
|
}
|
|
122
125
|
}),
|
|
123
|
-
verify: forgebook.command({
|
|
124
|
-
summary: "Run the catalogue's checks on every story a change touches, with one exit code.",
|
|
125
|
-
json: true,
|
|
126
|
-
options: {
|
|
127
|
-
since: {
|
|
128
|
-
type: "string",
|
|
129
|
-
valueName: "ref",
|
|
130
|
-
description: "The commit to compare with; HEAD by default, so what is not committed."
|
|
131
|
-
},
|
|
132
|
-
url: URL_OPTION
|
|
133
|
-
},
|
|
134
|
-
examples: [
|
|
135
|
-
{ command: `${COMMAND} verify`, description: "Before you say a change is done." },
|
|
136
|
-
{ command: `${COMMAND} verify --since origin/develop --json`, description: "In a pull request." }
|
|
137
|
-
],
|
|
138
|
-
run: async ({ options, io, log, isJson, style }) => {
|
|
139
|
-
const config = await configOf(options.config);
|
|
140
|
-
const { stories, files } = await changedOf(config, options, log);
|
|
141
|
-
const reports = [];
|
|
142
|
-
for (const story of stories) {
|
|
143
|
-
const report = await runStoryCheck(config, options.url, {
|
|
144
|
-
id: story.id,
|
|
145
|
-
views: [],
|
|
146
|
-
isAllVariants: false
|
|
147
|
-
});
|
|
148
|
-
if (typeof report === "string")
|
|
149
|
-
throw new ScriptError(report);
|
|
150
|
-
reports.push(report);
|
|
151
|
-
}
|
|
152
|
-
const problems = reports
|
|
153
|
-
.flatMap((report) => report.results)
|
|
154
|
-
.reduce((sum, each) => sum + each.problems.length, 0);
|
|
155
|
-
const text = reports.length === 0 ? "No story touched." : reports.map((each) => checkText(each, style)).join("\n");
|
|
156
|
-
io.stdout.write(isJson ? formatJson({ schema: 1, files, stories, reports, problems }) : `${text}\n`);
|
|
157
|
-
if (problems > 0)
|
|
158
|
-
throw new ScriptError(`${problems} problems`, { exitCode: EXIT.failure, isReported: true });
|
|
159
|
-
}
|
|
160
|
-
}),
|
|
161
126
|
"check-page": forgebook.command({
|
|
162
127
|
summary: "Run the checks on a real page of the application: accessibility, what spills, its errors.",
|
|
163
128
|
json: true,
|
|
@@ -318,6 +283,10 @@ export const agentLoopCommands = (forgebook) => ({
|
|
|
318
283
|
if (typeof report === "string")
|
|
319
284
|
throw new ScriptError(report);
|
|
320
285
|
io.stdout.write(isJson ? formatJson(report) : `${shotText(report, (file) => relative(process.cwd(), file), style)}\n`);
|
|
286
|
+
// a picture of an error or of a fallback was taken, and is not of the story: never a success
|
|
287
|
+
const notShown = report.shots.filter((shot) => shot.status !== undefined).length;
|
|
288
|
+
if (notShown > 0)
|
|
289
|
+
throw new ScriptError(`${notShown} not of the story`, { exitCode: EXIT.failure, isReported: true });
|
|
321
290
|
}
|
|
322
291
|
}),
|
|
323
292
|
agents: forgebook.command({
|
|
@@ -333,6 +302,12 @@ export const agentLoopCommands = (forgebook) => ({
|
|
|
333
302
|
type: "boolean",
|
|
334
303
|
description: `Also write them as an Agent Skill, SKILL.md in ${SKILL_FOLDERS.join(" and ")}.`
|
|
335
304
|
},
|
|
305
|
+
framework: {
|
|
306
|
+
type: "string",
|
|
307
|
+
choices: GUIDE_FRAMEWORKS,
|
|
308
|
+
valueName: "name",
|
|
309
|
+
description: "The framework whose essentials to include, when not the one found in this project."
|
|
310
|
+
},
|
|
336
311
|
print: { type: "boolean", description: "Print the instructions instead of writing them." }
|
|
337
312
|
},
|
|
338
313
|
examples: [
|
|
@@ -340,7 +315,10 @@ export const agentLoopCommands = (forgebook) => ({
|
|
|
340
315
|
{ command: `${COMMAND} agents --skill`, description: "And the skill, for any agent." }
|
|
341
316
|
],
|
|
342
317
|
run: ({ options, io, log }) => {
|
|
343
|
-
const
|
|
318
|
+
const frameworks = options.framework === undefined
|
|
319
|
+
? projectFrameworks(configPathOf(options.config), process.cwd())
|
|
320
|
+
: [options.framework];
|
|
321
|
+
const section = agentsSection(frameworks);
|
|
344
322
|
if (options.print) {
|
|
345
323
|
io.stdout.write(section);
|
|
346
324
|
return;
|
|
@@ -349,6 +327,8 @@ export const agentLoopCommands = (forgebook) => ({
|
|
|
349
327
|
const isNew = !existsSync(file);
|
|
350
328
|
writeFileSync(file, withAgentsSection(isNew ? undefined : readFileSync(file, "utf8"), section));
|
|
351
329
|
log.success(`${relative(process.cwd(), file)}: Forgebook's section ${isNew ? "written" : "renewed"}`);
|
|
330
|
+
// said aloud: from a monorepo's root the framework found may not be the catalogue's, and --framework corrects it
|
|
331
|
+
log.info(`Framework: ${frameworks.join(", ") || "none found; --framework names one"}`);
|
|
352
332
|
if (options.skill !== true)
|
|
353
333
|
return;
|
|
354
334
|
for (const folder of SKILL_FOLDERS) {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { NextStep, PackageManagerName } from "../newProject/newProject.types.ts";
|
|
2
|
+
import { type AssistantName } from "./assistantHooks.ts";
|
|
3
|
+
/** A hook `--hooks` names: an assistant's, or the commit's. */
|
|
4
|
+
export type HookName = AssistantName | "pre-commit";
|
|
5
|
+
/** The hook written, and what it can do. */
|
|
6
|
+
export type WrittenHook = {
|
|
7
|
+
/** Which. */
|
|
8
|
+
readonly name: HookName;
|
|
9
|
+
/** Its file, from the repository's root. */
|
|
10
|
+
readonly file: string;
|
|
11
|
+
/** Whether it refuses to finish, starts another turn, or refuses the commit. */
|
|
12
|
+
readonly effect: "blocks" | "continues" | "blocks-commit";
|
|
13
|
+
};
|
|
14
|
+
/** What came of the files. */
|
|
15
|
+
export type AgentFiles = {
|
|
16
|
+
/** The repository's root, from the project's folder; `.` when they are the same. */
|
|
17
|
+
readonly root: string;
|
|
18
|
+
/** The files written or merged, from the root. */
|
|
19
|
+
readonly written: readonly string[];
|
|
20
|
+
/** The files that already held what they should. */
|
|
21
|
+
readonly unchanged: readonly string[];
|
|
22
|
+
/** The hooks in place. */
|
|
23
|
+
readonly hooks: readonly WrittenHook[];
|
|
24
|
+
/** What it could not do. */
|
|
25
|
+
readonly nextSteps: readonly NextStep[];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A project's repository root: the nearest folder holding `.git` whose repository tracks it, or the project's otherwise.
|
|
29
|
+
*
|
|
30
|
+
* @param projectDir - the project's folder.
|
|
31
|
+
*/
|
|
32
|
+
export declare const repositoryRoot: (projectDir: string) => string;
|
|
33
|
+
/**
|
|
34
|
+
* The hooks to write when none are named: those of the assistants the repository shows signs of, otherwise the commit's.
|
|
35
|
+
*
|
|
36
|
+
* @param root - the repository's root.
|
|
37
|
+
*/
|
|
38
|
+
export declare const detectedHooks: (root: string) => readonly HookName[];
|
|
39
|
+
/** What the files are written for. */
|
|
40
|
+
export type AgentFilesRequest = {
|
|
41
|
+
/** The project's folder. */
|
|
42
|
+
readonly projectDir: string;
|
|
43
|
+
/** The adapter's name. */
|
|
44
|
+
readonly framework: string;
|
|
45
|
+
/** The package manager. */
|
|
46
|
+
readonly manager: PackageManagerName;
|
|
47
|
+
/** The hooks asked for by name (`--hooks`); those found when none. */
|
|
48
|
+
readonly hooks: readonly string[] | undefined;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Writes what a project's coding agents need.
|
|
52
|
+
*
|
|
53
|
+
* @param request - what for.
|
|
54
|
+
*/
|
|
55
|
+
export declare const writeAgentFiles: ({ projectDir, framework, manager, hooks }: AgentFilesRequest) => AgentFiles;
|