forgebook 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (713) hide show
  1. package/README.md +994 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +182 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +62 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +95 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +204 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +323 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +148 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +69 -185
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +83 -0
  211. package/dist/src/componentDocs.js +20 -3
  212. package/dist/src/controlCode.d.ts +27 -0
  213. package/dist/src/controlCode.js +41 -0
  214. package/dist/src/frame/callValues.d.ts +19 -0
  215. package/dist/src/frame/callValues.js +58 -0
  216. package/dist/src/frame/canvasScheme.d.ts +33 -0
  217. package/dist/src/frame/canvasScheme.js +67 -0
  218. package/dist/src/frame/controlValues.d.ts +39 -0
  219. package/dist/src/frame/controlValues.js +143 -0
  220. package/dist/src/frame/frame.css +36 -3
  221. package/dist/src/frame/frameStatus.d.ts +16 -1
  222. package/dist/src/frame/frameStatus.js +16 -1
  223. package/dist/src/frame/frameView.js +4 -3
  224. package/dist/src/frame/mountFrame.d.ts +10 -1
  225. package/dist/src/frame/mountFrame.js +160 -55
  226. package/dist/src/frame/panelControls.d.ts +67 -0
  227. package/dist/src/frame/panelControls.js +110 -0
  228. package/dist/src/frame/panelValues.d.ts +35 -0
  229. package/dist/src/frame/panelValues.js +127 -0
  230. package/dist/src/frame/playActions.d.ts +39 -0
  231. package/dist/src/frame/playActions.js +98 -0
  232. package/dist/src/frame/playStepper.d.ts +28 -0
  233. package/dist/src/frame/playStepper.js +38 -0
  234. package/dist/src/frame/playStory.d.ts +9 -1
  235. package/dist/src/frame/playStory.js +49 -3
  236. package/dist/src/frame/renderer.d.ts +34 -1
  237. package/dist/src/frame/renderer.js +24 -0
  238. package/dist/src/frame/shellChannel.d.ts +1 -1
  239. package/dist/src/frame/shellChannel.js +1 -1
  240. package/dist/src/frame/shellCheck.d.ts +17 -0
  241. package/dist/src/frame/shellCheck.js +25 -0
  242. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  243. package/dist/src/frame/shellMessageCheck.js +53 -0
  244. package/dist/src/frame/storyContent.d.ts +50 -0
  245. package/dist/src/frame/storyContent.js +73 -0
  246. package/dist/src/frame/storyModule.d.ts +9 -0
  247. package/dist/src/frame/storyModule.js +20 -2
  248. package/dist/src/frame/storyRun.d.ts +15 -7
  249. package/dist/src/frame/storyRun.js +64 -15
  250. package/dist/src/frame/valueSheets.d.ts +35 -0
  251. package/dist/src/frame/valueSheets.js +99 -0
  252. package/dist/src/hotModules.d.ts +20 -0
  253. package/dist/src/hotModules.js +23 -0
  254. package/dist/src/jsxCode.d.ts +1 -14
  255. package/dist/src/jsxCode.js +46 -10
  256. package/dist/src/liveErrors.d.ts +30 -4
  257. package/dist/src/liveErrors.js +18 -3
  258. package/dist/src/messages.d.ts +77 -27
  259. package/dist/src/messages.js +58 -100
  260. package/dist/src/namedValues.d.ts +2 -26
  261. package/dist/src/namedValues.js +0 -47
  262. package/dist/src/pageConfig.d.ts +2 -0
  263. package/dist/src/playTrace.d.ts +19 -2
  264. package/dist/src/playTrace.js +10 -5
  265. package/dist/src/plugin.d.ts +10 -3
  266. package/dist/src/previewRelay.js +9 -1
  267. package/dist/src/printable.d.ts +12 -0
  268. package/dist/src/printable.js +22 -0
  269. package/dist/src/propsSignature.d.ts +37 -0
  270. package/dist/src/propsSignature.js +40 -0
  271. package/dist/src/search.d.ts +41 -5
  272. package/dist/src/search.js +93 -23
  273. package/dist/src/searchMatch.d.ts +4 -1
  274. package/dist/src/searchMatch.js +26 -5
  275. package/dist/src/searchTypos.d.ts +88 -0
  276. package/dist/src/searchTypos.js +178 -0
  277. package/dist/src/shapeValues.d.ts +86 -0
  278. package/dist/src/shapeValues.js +295 -0
  279. package/dist/src/shell/ApiReference.js +6 -3
  280. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  281. package/dist/src/shell/ApiTableBox.js +11 -0
  282. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  283. package/dist/src/shell/AppearanceMenu.js +9 -6
  284. package/dist/src/shell/AuthoredHome.js +3 -1
  285. package/dist/src/shell/CodeTab.d.ts +12 -6
  286. package/dist/src/shell/CodeTab.js +47 -3
  287. package/dist/src/shell/CodeText.d.ts +1 -1
  288. package/dist/src/shell/CodeText.js +2 -3
  289. package/dist/src/shell/CompareGrid.js +1 -1
  290. package/dist/src/shell/ComponentPage.d.ts +6 -6
  291. package/dist/src/shell/ComponentPage.js +8 -2
  292. package/dist/src/shell/CustomControl.d.ts +34 -0
  293. package/dist/src/shell/CustomControl.js +125 -0
  294. package/dist/src/shell/DocContainers.js +1 -1
  295. package/dist/src/shell/DocPage.js +2 -2
  296. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  297. package/dist/src/shell/DroppedArgsList.js +1 -1
  298. package/dist/src/shell/EmbedPage.js +30 -12
  299. package/dist/src/shell/Example.d.ts +5 -1
  300. package/dist/src/shell/Example.js +16 -8
  301. package/dist/src/shell/FrameView.d.ts +6 -3
  302. package/dist/src/shell/FrameView.js +2 -2
  303. package/dist/src/shell/HomePage.d.ts +3 -1
  304. package/dist/src/shell/HomePage.js +18 -6
  305. package/dist/src/shell/InfoTip.js +2 -2
  306. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  307. package/dist/src/shell/InteractionsTab.js +18 -2
  308. package/dist/src/shell/LazyPage.js +1 -1
  309. package/dist/src/shell/PackageHtml.js +3 -1
  310. package/dist/src/shell/PageWidth.d.ts +29 -0
  311. package/dist/src/shell/PageWidth.js +18 -0
  312. package/dist/src/shell/PinnedControl.js +14 -62
  313. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  314. package/dist/src/shell/PinnedControlMenu.js +72 -0
  315. package/dist/src/shell/PropFields.d.ts +3 -1
  316. package/dist/src/shell/PropFields.js +9 -6
  317. package/dist/src/shell/PropRows.d.ts +22 -11
  318. package/dist/src/shell/PropRows.js +62 -24
  319. package/dist/src/shell/PropsTab.d.ts +12 -5
  320. package/dist/src/shell/PropsTab.js +9 -22
  321. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  322. package/dist/src/shell/RefStoryPage.js +123 -0
  323. package/dist/src/shell/SearchPanel.js +51 -24
  324. package/dist/src/shell/Shell.d.ts +18 -0
  325. package/dist/src/shell/Shell.js +141 -23
  326. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  327. package/dist/src/shell/ShortcutHelp.js +66 -0
  328. package/dist/src/shell/Sidebar.d.ts +17 -4
  329. package/dist/src/shell/Sidebar.js +92 -41
  330. package/dist/src/shell/SidebarDocs.js +2 -2
  331. package/dist/src/shell/SidebarEntries.js +5 -3
  332. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  333. package/dist/src/shell/SidebarHandle.js +4 -4
  334. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  335. package/dist/src/shell/SidebarRefs.js +99 -0
  336. package/dist/src/shell/SidebarSearch.js +37 -9
  337. package/dist/src/shell/SignatureReference.js +3 -1
  338. package/dist/src/shell/Stage.d.ts +10 -2
  339. package/dist/src/shell/Stage.js +29 -49
  340. package/dist/src/shell/StatusBadges.d.ts +54 -0
  341. package/dist/src/shell/StatusBadges.js +77 -0
  342. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  343. package/dist/src/shell/StoryCodeBlock.js +7 -6
  344. package/dist/src/shell/StoryPicker.d.ts +4 -2
  345. package/dist/src/shell/StoryPicker.js +3 -3
  346. package/dist/src/shell/Switch.d.ts +29 -0
  347. package/dist/src/shell/Switch.js +11 -0
  348. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  349. package/dist/src/shell/SwitchGallery.js +17 -0
  350. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  351. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  352. package/dist/src/shell/TagFilter.d.ts +24 -0
  353. package/dist/src/shell/TagFilter.js +45 -0
  354. package/dist/src/shell/TagViews.d.ts +39 -0
  355. package/dist/src/shell/TagViews.js +20 -0
  356. package/dist/src/shell/Toolbar.d.ts +4 -1
  357. package/dist/src/shell/Toolbar.js +17 -7
  358. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  359. package/dist/src/shell/ToolbarControl.js +23 -6
  360. package/dist/src/shell/ViewMenuPanel.js +6 -1
  361. package/dist/src/shell/argChecks.d.ts +22 -0
  362. package/dist/src/shell/argChecks.js +20 -0
  363. package/dist/src/shell/asideStory.js +7 -2
  364. package/dist/src/shell/audienceSections.css +9 -9
  365. package/dist/src/shell/catalogueContext.d.ts +1 -1
  366. package/dist/src/shell/catalogueContext.js +6 -1
  367. package/dist/src/shell/codeSpans.d.ts +27 -0
  368. package/dist/src/shell/codeSpans.js +76 -0
  369. package/dist/src/shell/compareVariants.d.ts +4 -2
  370. package/dist/src/shell/compareVariants.js +16 -8
  371. package/dist/src/shell/composition.d.ts +23 -0
  372. package/dist/src/shell/composition.js +26 -0
  373. package/dist/src/shell/controlCycle.d.ts +1 -1
  374. package/dist/src/shell/controlCycle.js +3 -2
  375. package/dist/src/shell/customControls.d.ts +62 -0
  376. package/dist/src/shell/customControls.js +81 -0
  377. package/dist/src/shell/docPage.css +22 -22
  378. package/dist/src/shell/dockTabs.d.ts +19 -3
  379. package/dist/src/shell/dockTabs.js +29 -20
  380. package/dist/src/shell/embed.css +7 -7
  381. package/dist/src/shell/frameOrder.d.ts +35 -0
  382. package/dist/src/shell/frameOrder.js +45 -0
  383. package/dist/src/shell/framesOrigin.d.ts +7 -0
  384. package/dist/src/shell/framesOrigin.js +1 -1
  385. package/dist/src/shell/galleryPlace.d.ts +20 -0
  386. package/dist/src/shell/galleryPlace.js +26 -0
  387. package/dist/src/shell/icons.d.ts +1 -0
  388. package/dist/src/shell/icons.js +1 -0
  389. package/dist/src/shell/keyboard.d.ts +14 -12
  390. package/dist/src/shell/keyboard.js +21 -6
  391. package/dist/src/shell/laterStrings.d.ts +30 -0
  392. package/dist/src/shell/laterStrings.js +43 -3
  393. package/dist/src/shell/mountShell.js +3 -0
  394. package/dist/src/shell/pageStrings.d.ts +4 -0
  395. package/dist/src/shell/pageStrings.js +4 -0
  396. package/dist/src/shell/pageTagView.d.ts +18 -0
  397. package/dist/src/shell/pageTagView.js +10 -0
  398. package/dist/src/shell/playMemory.d.ts +14 -0
  399. package/dist/src/shell/playMemory.js +8 -0
  400. package/dist/src/shell/propNotes.d.ts +23 -0
  401. package/dist/src/shell/propNotes.js +37 -0
  402. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  403. package/dist/src/shell/refIndexLoad.js +38 -0
  404. package/dist/src/shell/refParts.d.ts +34 -0
  405. package/dist/src/shell/refParts.js +9 -0
  406. package/dist/src/shell/refStory.css +21 -0
  407. package/dist/src/shell/refStrings.d.ts +13 -0
  408. package/dist/src/shell/refStrings.js +21 -0
  409. package/dist/src/shell/search.css +11 -11
  410. package/dist/src/shell/shell.css +376 -169
  411. package/dist/src/shell/shellScheme.js +2 -2
  412. package/dist/src/shell/shortcutHelp.css +64 -0
  413. package/dist/src/shell/stageArgs.d.ts +53 -0
  414. package/dist/src/shell/stageArgs.js +64 -0
  415. package/dist/src/shell/statusBadges.css +51 -0
  416. package/dist/src/shell/strings.d.ts +7 -16
  417. package/dist/src/shell/strings.js +12 -17
  418. package/dist/src/shell/switchGallery.css +104 -0
  419. package/dist/src/shell/tagFilter.css +46 -0
  420. package/dist/src/shell/tagView.d.ts +20 -0
  421. package/dist/src/shell/tagView.js +10 -0
  422. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  423. package/dist/src/shell/useAddressArgs.js +56 -11
  424. package/dist/src/shell/useControlKeys.js +2 -2
  425. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  426. package/dist/src/shell/useEditedProblems.js +40 -0
  427. package/dist/src/shell/useFrameMessages.js +3 -0
  428. package/dist/src/shell/useFrameQueue.d.ts +8 -3
  429. package/dist/src/shell/useFrameQueue.js +42 -12
  430. package/dist/src/shell/useListedTree.d.ts +13 -0
  431. package/dist/src/shell/useListedTree.js +32 -0
  432. package/dist/src/shell/usePageFrames.js +2 -2
  433. package/dist/src/shell/usePopover.d.ts +5 -0
  434. package/dist/src/shell/usePopover.js +7 -1
  435. package/dist/src/shell/useRefIndex.d.ts +22 -0
  436. package/dist/src/shell/useRefIndex.js +36 -0
  437. package/dist/src/shell/useScrollSettled.d.ts +18 -0
  438. package/dist/src/shell/useScrollSettled.js +56 -0
  439. package/dist/src/shell/useScrollStops.d.ts +20 -0
  440. package/dist/src/shell/useScrollStops.js +41 -0
  441. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  442. package/dist/src/shell/useShortcutHelp.js +32 -0
  443. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  444. package/dist/src/shell/useSidebarOverlay.js +12 -4
  445. package/dist/src/shell/useStoryCode.d.ts +2 -1
  446. package/dist/src/shell/useStoryCode.js +12 -7
  447. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  448. package/dist/src/shell/useToolbarLayout.js +2 -2
  449. package/dist/src/shell/useWorstCase.d.ts +8 -2
  450. package/dist/src/shell/useWorstCase.js +2 -2
  451. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  452. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  453. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  454. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  455. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  456. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  457. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  458. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  459. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  460. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  461. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  462. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  463. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  464. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  465. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  466. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  467. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  468. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  469. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  470. package/dist/src/shell/valueEditors/ValueField.js +148 -0
  471. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  472. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  473. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  474. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  475. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  476. package/dist/src/shell/worstArgs.d.ts +8 -5
  477. package/dist/src/shell/worstArgs.js +14 -7
  478. package/dist/src/shellTheme.d.ts +1 -1
  479. package/dist/src/shellTheme.js +15 -1
  480. package/dist/src/shellTheme.types.d.ts +4 -0
  481. package/dist/src/shellWord.d.ts +12 -0
  482. package/dist/src/shellWord.js +15 -0
  483. package/dist/src/sourceFiles.js +2 -1
  484. package/dist/src/storyArgTypes.d.ts +57 -0
  485. package/dist/src/storyArgTypes.js +195 -0
  486. package/dist/src/storyBackground.js +14 -3
  487. package/dist/src/storyCheck.d.ts +99 -3
  488. package/dist/src/storyCheck.js +39 -1
  489. package/dist/src/storyCodeText.d.ts +52 -0
  490. package/dist/src/storyCodeText.js +30 -0
  491. package/dist/src/storyControls.d.ts +103 -0
  492. package/dist/src/storyControls.js +100 -0
  493. package/dist/src/storyStatuses.d.ts +55 -0
  494. package/dist/src/storyStatuses.js +104 -0
  495. package/dist/src/storyTagNames.d.ts +25 -0
  496. package/dist/src/storyTagNames.js +25 -0
  497. package/dist/src/storyTags.d.ts +29 -0
  498. package/dist/src/storyTags.js +85 -0
  499. package/dist/src/storyTree.d.ts +13 -0
  500. package/dist/src/storyTree.js +24 -4
  501. package/dist/src/storybookArgs.d.ts +24 -0
  502. package/dist/src/storybookArgs.js +185 -0
  503. package/dist/src/switches.d.ts +66 -3
  504. package/dist/src/switches.js +42 -1
  505. package/dist/src/valueSchema.d.ts +28 -0
  506. package/dist/src/valueSchema.js +196 -0
  507. package/dist/src/valueShape.d.ts +94 -0
  508. package/dist/src/valueShape.js +25 -0
  509. package/dist/src/viewState.d.ts +8 -3
  510. package/dist/src/viewState.js +27 -10
  511. package/dist/src/vite/adapter.d.ts +40 -2
  512. package/dist/src/vite/adapter.js +1 -0
  513. package/dist/src/vite/agent.types.d.ts +354 -7
  514. package/dist/src/vite/agentApi.d.ts +23 -0
  515. package/dist/src/vite/agentApi.js +90 -17
  516. package/dist/src/vite/agentIndex.d.ts +0 -2
  517. package/dist/src/vite/agentIndex.js +5 -6
  518. package/dist/src/vite/agentRoutes.d.ts +20 -1
  519. package/dist/src/vite/agentRoutes.js +135 -66
  520. package/dist/src/vite/agentStatuses.d.ts +42 -0
  521. package/dist/src/vite/agentStatuses.js +67 -0
  522. package/dist/src/vite/agentStoryCode.d.ts +51 -0
  523. package/dist/src/vite/agentStoryCode.js +44 -0
  524. package/dist/src/vite/agentVisibility.d.ts +47 -0
  525. package/dist/src/vite/agentVisibility.js +174 -0
  526. package/dist/src/vite/appAudit.d.ts +134 -0
  527. package/dist/src/vite/appAudit.js +333 -0
  528. package/dist/src/vite/appBuildOption.d.ts +53 -0
  529. package/dist/src/vite/appBuildOption.js +55 -0
  530. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  531. package/dist/src/vite/appTokenFiles.js +433 -0
  532. package/dist/src/vite/appTokens.d.ts +23 -0
  533. package/dist/src/vite/appTokens.js +275 -0
  534. package/dist/src/vite/argControlsConfig.d.ts +30 -0
  535. package/dist/src/vite/argControlsConfig.js +176 -0
  536. package/dist/src/vite/builtTexts.d.ts +10 -0
  537. package/dist/src/vite/builtTexts.js +59 -22
  538. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  539. package/dist/src/vite/catalogueConfig.js +21 -4
  540. package/dist/src/vite/changeCoverage.d.ts +74 -0
  541. package/dist/src/vite/changeCoverage.js +120 -0
  542. package/dist/src/vite/changedRoute.d.ts +30 -0
  543. package/dist/src/vite/changedRoute.js +197 -0
  544. package/dist/src/vite/checkCode.d.ts +105 -3
  545. package/dist/src/vite/checkCode.js +323 -36
  546. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  547. package/dist/src/vite/checkoutWatch.js +287 -0
  548. package/dist/src/vite/closeWatch.d.ts +8 -0
  549. package/dist/src/vite/closeWatch.js +1 -1
  550. package/dist/src/vite/componentCache.d.ts +8 -0
  551. package/dist/src/vite/componentCache.js +66 -0
  552. package/dist/src/vite/componentGraph.d.ts +71 -0
  553. package/dist/src/vite/componentGraph.js +133 -0
  554. package/dist/src/vite/componentRules.d.ts +33 -0
  555. package/dist/src/vite/componentRules.js +105 -0
  556. package/dist/src/vite/componentScan.d.ts +69 -0
  557. package/dist/src/vite/componentScan.js +418 -0
  558. package/dist/src/vite/compositionCheck.d.ts +15 -0
  559. package/dist/src/vite/compositionCheck.js +243 -0
  560. package/dist/src/vite/config.d.ts +67 -1
  561. package/dist/src/vite/configFile.d.ts +15 -2
  562. package/dist/src/vite/configFile.js +109 -40
  563. package/dist/src/vite/configKeys.d.ts +15 -0
  564. package/dist/src/vite/configKeys.js +172 -0
  565. package/dist/src/vite/configLoadError.d.ts +23 -0
  566. package/dist/src/vite/configLoadError.js +71 -0
  567. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  568. package/dist/src/vite/cssDeclarations.js +290 -0
  569. package/dist/src/vite/cssImports.d.ts +14 -0
  570. package/dist/src/vite/cssImports.js +48 -0
  571. package/dist/src/vite/cssReferences.d.ts +54 -0
  572. package/dist/src/vite/cssReferences.js +157 -0
  573. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  574. package/dist/src/vite/cssTokenValues.js +233 -0
  575. package/dist/src/vite/designTokens.d.ts +24 -0
  576. package/dist/src/vite/designTokens.js +5 -1
  577. package/dist/src/vite/docsExtractor.d.ts +9 -3
  578. package/dist/src/vite/docsExtractor.js +11 -3
  579. package/dist/src/vite/docsProgram.d.ts +17 -4
  580. package/dist/src/vite/docsProgram.js +52 -11
  581. package/dist/src/vite/docsWorker.js +7 -2
  582. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  583. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  584. package/dist/src/vite/fileImports.d.ts +17 -0
  585. package/dist/src/vite/fileImports.js +57 -0
  586. package/dist/src/vite/findComponent.d.ts +10 -2
  587. package/dist/src/vite/findComponent.js +27 -22
  588. package/dist/src/vite/findRoute.js +3 -2
  589. package/dist/src/vite/forcedStates.d.ts +9 -2
  590. package/dist/src/vite/forcedStates.js +12 -3
  591. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  592. package/dist/src/vite/forgebookPlugin.js +55 -73
  593. package/dist/src/vite/frameErrors.d.ts +19 -0
  594. package/dist/src/vite/frameErrors.js +70 -0
  595. package/dist/src/vite/framesServer.d.ts +12 -0
  596. package/dist/src/vite/framesServer.js +21 -4
  597. package/dist/src/vite/functionComponentDocs.js +81 -12
  598. package/dist/src/vite/generatedModules.js +4 -2
  599. package/dist/src/vite/gitChange.d.ts +38 -5
  600. package/dist/src/vite/gitChange.js +71 -11
  601. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  602. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  603. package/dist/src/vite/hotSnippets.d.ts +38 -14
  604. package/dist/src/vite/hotSnippets.js +137 -39
  605. package/dist/src/vite/importedNames.d.ts +37 -0
  606. package/dist/src/vite/importedNames.js +138 -0
  607. package/dist/src/vite/indexFields.d.ts +6 -0
  608. package/dist/src/vite/indexFields.js +21 -0
  609. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  610. package/dist/src/vite/indexStoryFile.js +22 -157
  611. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  612. package/dist/src/vite/jsxCallSites.js +200 -0
  613. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  614. package/dist/src/vite/jsxInScripts.js +138 -0
  615. package/dist/src/vite/jsxTree.d.ts +20 -0
  616. package/dist/src/vite/jsxTree.js +163 -0
  617. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  618. package/dist/src/vite/lineAndColumn.js +18 -0
  619. package/dist/src/vite/lookAlikes.d.ts +65 -0
  620. package/dist/src/vite/lookAlikes.js +228 -0
  621. package/dist/src/vite/nearestToken.d.ts +17 -0
  622. package/dist/src/vite/nearestToken.js +9 -2
  623. package/dist/src/vite/packageEntries.d.ts +42 -0
  624. package/dist/src/vite/packageEntries.js +127 -0
  625. package/dist/src/vite/pages.d.ts +9 -1
  626. package/dist/src/vite/pages.js +119 -4
  627. package/dist/src/vite/pluginConfig.js +4 -0
  628. package/dist/src/vite/pluginIds.d.ts +2 -0
  629. package/dist/src/vite/pluginIds.js +5 -1
  630. package/dist/src/vite/pluginModules.d.ts +81 -11
  631. package/dist/src/vite/pluginModules.js +109 -21
  632. package/dist/src/vite/prebundled.d.ts +57 -15
  633. package/dist/src/vite/prebundled.js +80 -0
  634. package/dist/src/vite/previewTags.d.ts +25 -0
  635. package/dist/src/vite/previewTags.js +56 -0
  636. package/dist/src/vite/projectFiles.d.ts +54 -0
  637. package/dist/src/vite/projectFiles.js +116 -0
  638. package/dist/src/vite/projectPostcss.d.ts +70 -0
  639. package/dist/src/vite/projectPostcss.js +250 -0
  640. package/dist/src/vite/propDocs.d.ts +12 -0
  641. package/dist/src/vite/propDocs.js +187 -60
  642. package/dist/src/vite/propKind.d.ts +40 -0
  643. package/dist/src/vite/propKind.js +71 -0
  644. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  645. package/dist/src/vite/propTypeNotes.js +51 -0
  646. package/dist/src/vite/publishedExports.d.ts +27 -0
  647. package/dist/src/vite/publishedExports.js +298 -0
  648. package/dist/src/vite/realFolder.d.ts +6 -0
  649. package/dist/src/vite/realFolder.js +25 -0
  650. package/dist/src/vite/refsConfig.d.ts +39 -0
  651. package/dist/src/vite/refsConfig.js +54 -0
  652. package/dist/src/vite/reuseCheck.d.ts +45 -0
  653. package/dist/src/vite/reuseCheck.js +260 -0
  654. package/dist/src/vite/runningVersions.d.ts +33 -0
  655. package/dist/src/vite/runningVersions.js +25 -0
  656. package/dist/src/vite/scriptProblems.d.ts +60 -0
  657. package/dist/src/vite/scriptProblems.js +155 -0
  658. package/dist/src/vite/searchModule.js +3 -2
  659. package/dist/src/vite/searchRoute.js +4 -2
  660. package/dist/src/vite/shapeDocs.d.ts +36 -0
  661. package/dist/src/vite/shapeDocs.js +177 -0
  662. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  663. package/dist/src/vite/singleFileComponent.js +83 -0
  664. package/dist/src/vite/sourceText.d.ts +34 -0
  665. package/dist/src/vite/sourceText.js +72 -0
  666. package/dist/src/vite/sourceTokens.d.ts +7 -0
  667. package/dist/src/vite/sourceTokens.js +7 -2
  668. package/dist/src/vite/stackLines.d.ts +49 -0
  669. package/dist/src/vite/stackLines.js +96 -0
  670. package/dist/src/vite/storyCode.d.ts +22 -7
  671. package/dist/src/vite/storyCode.js +263 -37
  672. package/dist/src/vite/storyCoverage.d.ts +48 -0
  673. package/dist/src/vite/storyCoverage.js +179 -0
  674. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  675. package/dist/src/vite/storyFilesModule.js +105 -15
  676. package/dist/src/vite/storyPatterns.d.ts +31 -0
  677. package/dist/src/vite/storyPatterns.js +140 -5
  678. package/dist/src/vite/storyReach.d.ts +10 -2
  679. package/dist/src/vite/storyReach.js +15 -11
  680. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  681. package/dist/src/vite/storyTopLevel.js +146 -0
  682. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  683. package/dist/src/vite/storylessRoutes.js +210 -19
  684. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  685. package/dist/src/vite/switchValuesCheck.js +164 -0
  686. package/dist/src/vite/switchesDocument.d.ts +15 -0
  687. package/dist/src/vite/switchesDocument.js +47 -0
  688. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  689. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  690. package/dist/src/vite/textImports.d.ts +15 -0
  691. package/dist/src/vite/textImports.js +58 -0
  692. package/dist/src/vite/textModules.d.ts +6 -5
  693. package/dist/src/vite/textModules.js +13 -8
  694. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  695. package/dist/src/vite/tokenAnswers.js +11 -7
  696. package/dist/src/vite/typeParameters.d.ts +83 -0
  697. package/dist/src/vite/typeParameters.js +270 -0
  698. package/dist/src/vite/typedControls.d.ts +31 -0
  699. package/dist/src/vite/typedControls.js +66 -0
  700. package/dist/src/vite/unionProps.d.ts +37 -0
  701. package/dist/src/vite/unionProps.js +121 -0
  702. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  703. package/dist/src/vite/unresolvedTokens.js +193 -0
  704. package/dist/src/vite/usageGraph.js +10 -52
  705. package/dist/src/vite/usageGuidance.d.ts +9 -2
  706. package/dist/src/vite/usageGuidance.js +36 -8
  707. package/dist/src/vite/usageImports.d.ts +35 -0
  708. package/dist/src/vite/usageImports.js +280 -0
  709. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  710. package/dist/src/vite/visibilityRoute.js +320 -0
  711. package/dist/src/worstCase.d.ts +2 -0
  712. package/dist/src/worstCase.js +2 -0
  713. package/package.json +28 -8
@@ -9,6 +9,8 @@ import { EXIT } from "@ensiria/cli-kit/constants";
9
9
  import { formatJson } from "@ensiria/cli-kit/files";
10
10
  import { ScriptError } from "@ensiria/cli-kit/script";
11
11
  import { CONFIG_FILES, findConfigFile, loadConfigFile } from "../../src/vite/configFile.js";
12
+ import { emptyStoryGlobs, emptyStoryGlobsMessage } from "../../src/vite/emptyStoryGlobs.js";
13
+ import { hiddenStoryFolders, hiddenStoryFoldersMessage } from "../../src/vite/hiddenStoryFiles.js";
12
14
  import { catalogueClient } from "./agentClient.js";
13
15
  /** The options every `forgebook` command takes. */
14
16
  export const FORGEBOOK_OPTIONS = {
@@ -46,6 +48,27 @@ export const configOf = async (file) => {
46
48
  throw new ScriptError(error instanceof Error ? error.message : String(error));
47
49
  }
48
50
  };
51
+ /**
52
+ * The catalogue's configuration, for a command that reads its stories: a pattern that matches nothing is a mistake there,
53
+ * and answering "no stories" with success hides it from a person and from CI alike. `forgebook dev` only warns, since
54
+ * whoever runs it may be about to write the first story.
55
+ *
56
+ * @param file - the configuration file given; none to look in the current folder.
57
+ * @throws a `ScriptError` when there is none, it cannot be used, or one of its story patterns matches nothing.
58
+ */
59
+ export const configWithStoriesOf = async (file) => {
60
+ const config = await configOf(file);
61
+ const globs = emptyStoryGlobs(config);
62
+ if (globs.length > 0) {
63
+ const hidden = hiddenStoryFolders(config);
64
+ throw new ScriptError(emptyStoryGlobsMessage(globs), {
65
+ hint: hidden.length > 0
66
+ ? hiddenStoryFoldersMessage(hidden)
67
+ : `Correct the pattern, or write the first story: ${COMMAND} new <component file>`
68
+ });
69
+ }
70
+ return config;
71
+ };
49
72
  /**
50
73
  * Asks the catalogue one of its answers, from its running dev server or one started for the answer.
51
74
  *
@@ -5,8 +5,12 @@ import type { ResolvedConfig } from "../../src/vite/configFile.ts";
5
5
  *
6
6
  * @param config - the catalogue's configuration, read.
7
7
  * @param overrides - what the command sets (the port, the output folder); its plugins run after the catalogue's.
8
+ * @param command - what it runs for: a `vite.config` may be a function of it, and of the mode that follows from it.
9
+ * @param isOneShot - whether the server is a one-shot command's, whose app plugins start nothing of their own.
10
+ * @param isQuickScan - whether the dependency scan reads only the story files itself (`ScanFindings.isQuick`): a first
11
+ * start's pre-bundling, which scans again without it when a script stops the scan.
8
12
  */
9
- export declare const catalogueVite: (config: ResolvedConfig, overrides: InlineConfig) => Promise<InlineConfig>;
13
+ export declare const catalogueVite: (config: ResolvedConfig, overrides: InlineConfig, command?: "serve" | "build", isOneShot?: boolean, isQuickScan?: boolean) => Promise<InlineConfig>;
10
14
  /**
11
15
  * The configuration with the frames' port the command line gives (`--frame-port`), over the file's.
12
16
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The Vite configuration the `forgebook` command runs a catalogue with: its folder as the root, Forgebook's plugin
3
- * with the configuration already read, the framework's own plugins, and the server's export conditions taken from the
4
- * pages'; and where the command line puts the frames.
3
+ * with the configuration already read, the framework's own plugins, what the app's own build adds, and the server's
4
+ * export conditions taken from the pages'; and where the command line puts the frames.
5
5
  *
6
6
  * @module
7
7
  */
@@ -9,17 +9,23 @@ import { ScriptError } from "@ensiria/cli-kit/script";
9
9
  import { forgebookPlugin } from "../../src/vite/forgebookPlugin.js";
10
10
  import { ISOLATED_FRAMES } from "../../src/vite/framesConfig.js";
11
11
  import { serverConditions } from "../../src/vite/serverConditions.js";
12
+ import { appBuildOf } from "./appBuild/appBuild.js";
12
13
  import { unresolvedImports } from "./viteCache.js";
13
14
  /**
14
15
  * Vite's configuration for a catalogue.
15
16
  *
16
17
  * @param config - the catalogue's configuration, read.
17
18
  * @param overrides - what the command sets (the port, the output folder); its plugins run after the catalogue's.
19
+ * @param command - what it runs for: a `vite.config` may be a function of it, and of the mode that follows from it.
20
+ * @param isOneShot - whether the server is a one-shot command's, whose app plugins start nothing of their own.
21
+ * @param isQuickScan - whether the dependency scan reads only the story files itself (`ScanFindings.isQuick`): a first
22
+ * start's pre-bundling, which scans again without it when a script stops the scan.
18
23
  */
19
- export const catalogueVite = async (config, overrides) => {
24
+ export const catalogueVite = async (config, overrides, command = "serve", isOneShot = false, isQuickScan = false) => {
20
25
  // what a first start's pre-bundling left out, left out here too: it is part of the pre-bundle's hash, and a server
21
26
  // whose hash differed would pre-bundle everything again itself
22
27
  const unresolved = unresolvedImports(config.dir);
28
+ const app = await appBuildOf(config, { command, mode: overrides.mode ?? (command === "build" ? "production" : "development") }, isOneShot);
23
29
  return {
24
30
  ...overrides,
25
31
  ...(unresolved.length === 0
@@ -31,11 +37,13 @@ export const catalogueVite = async (config, overrides) => {
31
37
  }
32
38
  }),
33
39
  root: config.dir,
34
- // the configuration file is Forgebook's: a vite.config beside it is not read
40
+ // the configuration file is Forgebook's: of a vite.config beside it, `appBuildOf` takes what stories need
35
41
  configFile: false,
36
42
  plugins: [
37
- forgebookPlugin({ config }),
38
- ...((await config.framework.vitePlugins?.()) ?? []),
43
+ forgebookPlugin({ config, isQuickScan }),
44
+ ...((await config.framework.vitePlugins?.({ readsAppBuild: config.appBuild.viteConfig !== false })) ??
45
+ []),
46
+ ...app.plugins,
39
47
  ...(overrides.plugins ?? []),
40
48
  // the server loads the stories and previews for tools: it resolves them as the pages do
41
49
  serverConditions()
@@ -0,0 +1,18 @@
1
+ /** Whether a process runs. */
2
+ export declare const isProcessRunning: (pid: number) => boolean;
3
+ /** A cache folder a server may use, and how to give it back. */
4
+ export type CacheClaim = {
5
+ /** The folder: the shared one, or the server's own. */
6
+ readonly folder: string;
7
+ /** Whether it is the shared folder. */
8
+ readonly isShared: boolean;
9
+ /** Gives it back: unlocks the shared folder, or removes the server's own. Safe to call more than once. */
10
+ readonly release: () => void;
11
+ };
12
+ /**
13
+ * Claims a cache folder for a server: the shared one when no live server holds it, else one of the server's own beside it.
14
+ *
15
+ * @param shared - the shared folder.
16
+ * @returns the claim, given back when the server closes.
17
+ */
18
+ export declare const claimCommandCache: (shared: string) => CacheClaim;
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Which cache folder a server a command starts may use: the shared one, kept warm from one command to the next, when no
3
+ * other live server holds it, else one of its own for as long as it runs (`commandServer.ts`).
4
+ *
5
+ * @remarks
6
+ * Two servers on one cache folder rewrite each other's pre-bundled dependencies: when one's optimizer discovers a package
7
+ * the other did not, it replaces the whole `deps` folder, and the other's frames ask for a bundle that is gone and fail
8
+ * with "504 (Outdated Optimize Dep)". Two commands run together in one project as soon as an agent runs `verify` while
9
+ * `forgebook mcp` serves, or two checks run side by side. A lock file beside the shared folder names the process that
10
+ * holds it; one whose process is gone is taken over. A server that finds it held runs on a folder named after its
11
+ * process, removed when it closes, or by the next claim when its process ended first.
12
+ *
13
+ * @module
14
+ */
15
+ import { closeSync, mkdirSync, openSync, readdirSync, readFileSync, rmSync, statSync, writeSync } from "node:fs";
16
+ import { basename, dirname, join } from "node:path";
17
+ /** Whether a process runs. */
18
+ export const isProcessRunning = (pid) => {
19
+ try {
20
+ process.kill(pid, 0);
21
+ return true;
22
+ }
23
+ catch (error) {
24
+ // the process exists, and belongs to another user
25
+ return error instanceof Error && "code" in error && error.code === "EPERM";
26
+ }
27
+ };
28
+ /** The lock file of a shared folder, beside it. */
29
+ const lockFile = (shared) => `${shared}.lock`;
30
+ /** The prefix of the folders servers that found the shared one held run on, beside it. */
31
+ const ownPrefix = (shared) => `${basename(shared)}-own-`;
32
+ /** How long a lock file may name no process before it counts as one a process left while writing it. */
33
+ const UNWRITTEN_LOCK_MS = 10_000;
34
+ /**
35
+ * Removes a file or folder, leaving it when the system will not: on Windows a file another program holds open cannot
36
+ * go, and what is left is removed by a later claim, never a reason to fail the command.
37
+ *
38
+ * @param path - the file or folder.
39
+ */
40
+ const removeIfPossible = (path) => {
41
+ try {
42
+ rmSync(path, { recursive: true, force: true });
43
+ }
44
+ catch {
45
+ // left for the next claim's sweep
46
+ }
47
+ };
48
+ /** The process a lock file names, or none when it names none (written halfway, or by hand). */
49
+ const lockHolder = (file) => {
50
+ try {
51
+ const pid = Number(readFileSync(file, "utf8").trim());
52
+ return Number.isInteger(pid) && pid > 0 ? pid : undefined;
53
+ }
54
+ catch {
55
+ return undefined;
56
+ }
57
+ };
58
+ /** Creates a file naming this process; false when it exists. */
59
+ const tryCreate = (file) => {
60
+ let handle;
61
+ try {
62
+ handle = openSync(file, "wx");
63
+ }
64
+ catch (error) {
65
+ if (error instanceof Error && "code" in error && error.code === "EEXIST")
66
+ return false;
67
+ throw error;
68
+ }
69
+ try {
70
+ writeSync(handle, String(process.pid));
71
+ }
72
+ finally {
73
+ closeSync(handle);
74
+ }
75
+ return true;
76
+ };
77
+ /**
78
+ * Whether a lock is one no live process holds: its process is gone, or it has named none for longer than a write takes
79
+ * (a process that ended between creating and writing it).
80
+ */
81
+ const isStale = (file) => {
82
+ const holder = lockHolder(file);
83
+ if (holder !== undefined)
84
+ return !isProcessRunning(holder);
85
+ const stats = statSync(file, { throwIfNoEntry: false });
86
+ return stats !== undefined && Date.now() - stats.mtimeMs > UNWRITTEN_LOCK_MS;
87
+ };
88
+ /**
89
+ * Takes the lock, taking it over from a process that is gone. A take-over is itself guarded by a file only one process
90
+ * can create: two processes that both find the lock stale would otherwise each remove it, the second removing the
91
+ * first one's new lock, and both would run on the shared folder.
92
+ *
93
+ * @param file - the lock file.
94
+ * @returns whether this process holds it now.
95
+ */
96
+ const lock = (file) => {
97
+ if (tryCreate(file))
98
+ return true;
99
+ if (!isStale(file))
100
+ return false;
101
+ const takeOver = `${file}.take-over`;
102
+ if (!tryCreate(takeOver)) {
103
+ // a take-over left by a process that ended in it is cleared for the next claim; this one runs apart
104
+ if (isStale(takeOver))
105
+ removeIfPossible(takeOver);
106
+ return false;
107
+ }
108
+ try {
109
+ // read again under the take-over: another process may have taken the lock over and released it since
110
+ if (!isStale(file))
111
+ return false;
112
+ removeIfPossible(file);
113
+ return tryCreate(file);
114
+ }
115
+ finally {
116
+ removeIfPossible(takeOver);
117
+ }
118
+ };
119
+ /** Removes the folders of servers whose process is gone. */
120
+ const sweepOwn = (parent, prefix) => {
121
+ for (const name of readdirSync(parent).filter((each) => each.startsWith(prefix))) {
122
+ const pid = Number(name.slice(prefix.length).split("-")[0]);
123
+ if (Number.isInteger(pid) && pid > 0 && !isProcessRunning(pid))
124
+ removeIfPossible(join(parent, name));
125
+ }
126
+ };
127
+ /** How many own folders this process has made: two servers of one process each get one. */
128
+ let ownCount = 0;
129
+ /** What to give back if the process ends before its servers close. */
130
+ const pending = new Set();
131
+ /** Whether the process's exit gives back what is still held. */
132
+ let isExitHooked = false;
133
+ /** Gives back every claim still held: the process is ending, and its lock would otherwise read as live until reused. */
134
+ const releaseAll = () => {
135
+ for (const release of pending)
136
+ release();
137
+ };
138
+ /**
139
+ * Claims a cache folder for a server: the shared one when no live server holds it, else one of the server's own beside it.
140
+ *
141
+ * @param shared - the shared folder.
142
+ * @returns the claim, given back when the server closes.
143
+ */
144
+ export const claimCommandCache = (shared) => {
145
+ const parent = dirname(shared);
146
+ mkdirSync(parent, { recursive: true });
147
+ sweepOwn(parent, ownPrefix(shared));
148
+ const isShared = lock(lockFile(shared));
149
+ ownCount += 1;
150
+ const folder = isShared ? shared : join(parent, `${ownPrefix(shared)}${process.pid}-${ownCount}`);
151
+ let isReleased = false;
152
+ const release = () => {
153
+ if (isReleased)
154
+ return;
155
+ isReleased = true;
156
+ pending.delete(release);
157
+ if (isShared) {
158
+ if (lockHolder(lockFile(shared)) === process.pid)
159
+ removeIfPossible(lockFile(shared));
160
+ }
161
+ else
162
+ removeIfPossible(folder);
163
+ };
164
+ pending.add(release);
165
+ if (!isExitHooked) {
166
+ isExitHooked = true;
167
+ process.on("exit", releaseAll);
168
+ }
169
+ return { folder, isShared, release };
170
+ };
@@ -2,6 +2,14 @@ import type { InlineConfig } from "vite";
2
2
  import type { ResolvedConfig } from "../../src/vite/configFile.ts";
3
3
  /** The folder, inside the catalogue's Vite cache folder, where the servers commands start keep their cache. */
4
4
  export declare const COMMAND_CACHE_FOLDER = "forgebook-commands";
5
+ /**
6
+ * Ends a command that started a server, once its answer is out: a plugin of the app's build may leave a watcher or a timer
7
+ * behind, which would keep the process, and whoever waits for it, waiting for ever. A command that started none, or a dev
8
+ * server, ends as it would.
9
+ *
10
+ * @param code - the code the command ended with.
11
+ */
12
+ export declare const leaveAfterCommand: (code: number) => void;
5
13
  /**
6
14
  * Vite's configuration for a server a command starts: the catalogue's, with a cache of its own.
7
15
  *
@@ -8,32 +8,80 @@
8
8
  * that are gone or of another bundle and fail as outdated. A command's server therefore keeps its cache in a folder of
9
9
  * its own inside the one the dev server uses: still warm from one command to the next, never the dev server's, and
10
10
  * outside its watcher (Vite ignores everything under its cache folder) and its cleanup (only the `deps` folder and
11
- * `_temp_` folders are removed).
11
+ * `_temp_` folders are removed). Two commands' servers at once are kept apart the same way (`commandCacheClaim.ts`).
12
12
  *
13
13
  * @module
14
14
  */
15
15
  import { join } from "node:path";
16
16
  import { catalogueVite } from "./catalogueVite.js";
17
+ import { claimCommandCache } from "./commandCacheClaim.js";
17
18
  import { viteCacheDir } from "./viteCache.js";
18
19
  /** The folder, inside the catalogue's Vite cache folder, where the servers commands start keep their cache. */
19
20
  export const COMMAND_CACHE_FOLDER = "forgebook-commands";
20
21
  /**
21
- * Moves the server's cache into {@link COMMAND_CACHE_FOLDER} of the folder Vite would use: run after every other
22
- * plugin, so a framework's plugin that sets its own cache folder is followed too.
22
+ * Moves the server's cache into {@link COMMAND_CACHE_FOLDER} of the folder Vite would use, or into a folder of its own
23
+ * beside it while another server holds that one (`commandCacheClaim.ts`): run after every other plugin, so a framework's
24
+ * plugin that sets its own cache folder is followed too.
25
+ *
26
+ * @remarks
27
+ * The folder is claimed once per plugin and given back when the last server using it closes. A server Vite restarts (an
28
+ * `.env` file changed) is made anew with the same plugin before the old one closes: counting the servers keeps the
29
+ * claim through the restart, where giving it back at the old server's close would take the folder from the new one.
30
+ * `closeBundle` runs once per environment of a server; its client environment counts it.
31
+ */
32
+ const commandCache = () => {
33
+ let claim;
34
+ let servers = 0;
35
+ return {
36
+ name: "forgebook:command-cache",
37
+ config: {
38
+ order: "post",
39
+ handler: (current) => {
40
+ claim ??= claimCommandCache(join(viteCacheDir(current), COMMAND_CACHE_FOLDER));
41
+ servers += 1;
42
+ return { cacheDir: claim.folder };
43
+ }
44
+ },
45
+ closeBundle() {
46
+ if (this.environment.name !== "client" || claim === undefined)
47
+ return;
48
+ servers -= 1;
49
+ if (servers > 0)
50
+ return;
51
+ claim.release();
52
+ claim = undefined;
53
+ }
54
+ };
55
+ };
56
+ /** Whether this process started a server for a command. */
57
+ let hasStartedServer = false;
58
+ /**
59
+ * Ends a command that started a server, once its answer is out: a plugin of the app's build may leave a watcher or a timer
60
+ * behind, which would keep the process, and whoever waits for it, waiting for ever. A command that started none, or a dev
61
+ * server, ends as it would.
62
+ *
63
+ * @param code - the code the command ended with.
64
+ */
65
+ export const leaveAfterCommand = (code) => {
66
+ if (hasStartedServer)
67
+ process.stdout.write("", () => process.exit(code));
68
+ };
69
+ /**
70
+ * Sends what plugins log to stderr: a command's stdout is its answer (`--json`, the MCP protocol), and a plugin of the app's
71
+ * build that says what it fetches would break it. Nothing of the commands' own goes through `console`.
23
72
  */
24
- const commandCache = () => ({
25
- name: "forgebook:command-cache",
26
- config: {
27
- order: "post",
28
- handler: (current) => ({
29
- cacheDir: join(viteCacheDir(current), COMMAND_CACHE_FOLDER)
30
- })
31
- }
32
- });
73
+ const keepPluginsOffStdout = () => {
74
+ const { error } = console;
75
+ Object.assign(console, { log: error, info: error, debug: error });
76
+ };
33
77
  /**
34
78
  * Vite's configuration for a server a command starts: the catalogue's, with a cache of its own.
35
79
  *
36
80
  * @param config - the catalogue's configuration, read.
37
81
  * @param overrides - what the command sets (the port, middleware mode).
38
82
  */
39
- export const commandServerVite = (config, overrides) => catalogueVite(config, { ...overrides, plugins: [...(overrides.plugins ?? []), commandCache()] });
83
+ export const commandServerVite = (config, overrides) => {
84
+ hasStartedServer = true;
85
+ keepPluginsOffStdout();
86
+ return catalogueVite(config, { ...overrides, plugins: [...(overrides.plugins ?? []), commandCache()] }, "serve", true);
87
+ };
@@ -10,22 +10,30 @@
10
10
  *
11
11
  * @module
12
12
  */
13
- import { existsSync, writeFileSync } from "node:fs";
14
- import { relative, resolve } from "node:path";
13
+ import { resolve } from "node:path";
15
14
  import { defineCommands } from "@ensiria/cli-kit/commands";
15
+ import { formatJson, readPackageVersion } from "@ensiria/cli-kit/files";
16
16
  import { ScriptError } from "@ensiria/cli-kit/script";
17
17
  import { build } from "vite";
18
18
  import { filteredStories, isStoriesDocument, isStoryDocument } from "../../src/vite/agentApi.js";
19
+ import { realFolder } from "../../src/vite/realFolder.js";
19
20
  import { agentLoopCommands } from "./agentLoopCommands.mjs";
21
+ import { agentSetupCommands } from "./agentSetupCommands.mjs";
20
22
  import { storiesText, storyText } from "./agentText.js";
23
+ import { auditCommands } from "./auditCommand.mjs";
24
+ import { buildFailureText } from "./buildFailure.js";
21
25
  import { settleAgentIndex } from "./builtCatalogue.js";
22
- import { askCatalogue, COMMAND, configOf, FORGEBOOK_OPTIONS, printAnswer } from "./catalogueCommands.js";
26
+ import { askCatalogue, COMMAND, configOf, configWithStoriesOf, FORGEBOOK_OPTIONS, printAnswer } from "./catalogueCommands.js";
23
27
  import { catalogueVite, withReadableNames } from "./catalogueVite.js";
28
+ import { leaveAfterCommand } from "./commandServer.js";
24
29
  import { devCommands } from "./devCommands.mjs";
30
+ import { graphCommands } from "./graphCommand.mjs";
31
+ import { guideCommands } from "./guideCommand.mjs";
25
32
  import { initCommands } from "./initCommands.mjs";
26
33
  import { mcpCommands } from "./mcpCommand.mjs";
27
- import { newStoriesFile } from "./newStoriesFile.js";
34
+ import { migrateCommands } from "./migrate/migrateCommand.mjs";
28
35
  import { pagesCommands } from "./pagesCommands.mjs";
36
+ import { proofCommands } from "./proofCommand.mjs";
29
37
  import { runTokens } from "./tokensRun.js";
30
38
  import { visualCommands } from "./visualCommands.mjs";
31
39
  await defineCommands({
@@ -33,6 +41,8 @@ await defineCommands({
33
41
  command: COMMAND,
34
42
  summary: "Run a catalogue of stories from its forgebook.config.ts, build it, or answer tools and agents about it.",
35
43
  icon: "docs",
44
+ // the commit hook `init --agents` writes asks `--version` whether Forgebook is installed before it runs `verify`
45
+ version: readPackageVersion(import.meta.dirname),
36
46
  options: FORGEBOOK_OPTIONS,
37
47
  commands: (forgebook) => ({
38
48
  ...devCommands(forgebook),
@@ -52,6 +62,10 @@ await defineCommands({
52
62
  "readable-names": {
53
63
  type: "boolean",
54
64
  description: "Name each script after its module as well as its hash (build.readableNames in the configuration)."
65
+ },
66
+ watch: {
67
+ type: "boolean",
68
+ description: "Stay running, and build again when a file the catalogue reads changes."
55
69
  }
56
70
  },
57
71
  examples: [
@@ -59,16 +73,37 @@ await defineCommands({
59
73
  {
60
74
  command: `${COMMAND} build --base /pr-12/`,
61
75
  description: "For a host that serves it under a sub-path."
76
+ },
77
+ {
78
+ command: `${COMMAND} build --watch --out site`,
79
+ description: "Keep site up to date as files change, for a host that serves the folder."
62
80
  }
63
81
  ],
64
- run: async ({ options, log }) => {
65
- const config = withReadableNames(await configOf(options.config), options["readable-names"]);
66
- const outDir = resolve(config.dir, options.out ?? "dist");
67
- await build(await catalogueVite(config, {
82
+ run: async ({ options, log, onInterrupt }) => {
83
+ const config = withReadableNames(await configWithStoriesOf(options.config), options["readable-names"]);
84
+ // in the form of Vite's root, which empties an output it sees inside it
85
+ const outDir = realFolder(resolve(config.dir, options.out ?? "dist"));
86
+ const vite = await catalogueVite(config, {
68
87
  ...(options.base === undefined ? {} : { base: options.base }),
69
88
  build: { outDir }
70
- }));
71
- await settleAgentIndex(config, outDir, options["agent-index"] === true, log);
89
+ }, "build");
90
+ const settle = () => settleAgentIndex(config, outDir, options["agent-index"] === true, log);
91
+ if (options.watch === true) {
92
+ const { watchBuild } = await import("./buildWatch.js");
93
+ const stop = new AbortController();
94
+ onInterrupt(() => stop.abort());
95
+ await watchBuild({ vite, log, onBuilt: settle, signal: stop.signal });
96
+ return;
97
+ }
98
+ try {
99
+ await build(vite);
100
+ }
101
+ catch (error) {
102
+ if (error instanceof Error && error.stack !== undefined)
103
+ log.debug(error.stack);
104
+ throw new ScriptError(buildFailureText(error));
105
+ }
106
+ await settle();
72
107
  log.success(`${config.title} built`);
73
108
  }
74
109
  }),
@@ -82,6 +117,12 @@ await defineCommands({
82
117
  valueName: "text",
83
118
  description: "Only components whose title holds this text."
84
119
  },
120
+ tag: {
121
+ type: "string",
122
+ multiple: true,
123
+ valueName: "tag",
124
+ description: "Only stories with any of these tags; !name leaves a tag's out, as the address's tag= does."
125
+ },
85
126
  view: {
86
127
  type: "string",
87
128
  valueName: "query",
@@ -104,10 +145,14 @@ await defineCommands({
104
145
  command: `${COMMAND} stories --component select --used-in --json`,
105
146
  description: "The selects, with the components whose stories use them."
106
147
  },
107
- { command: `${COMMAND} stories --component button --json`, description: "The buttons, as JSON." }
148
+ { command: `${COMMAND} stories --component button --json`, description: "The buttons, as JSON." },
149
+ {
150
+ command: `${COMMAND} stories --tag beta --tag '!wip'`,
151
+ description: "The stories in beta, but for those in progress."
152
+ }
108
153
  ],
109
154
  run: async ({ options, io, log, isJson, style }) => {
110
- const config = await configOf(options.config);
155
+ const config = await configWithStoriesOf(options.config);
111
156
  const params = new URLSearchParams({
112
157
  view: options.view ?? "",
113
158
  usedIn: String(options["used-in"] === true)
@@ -115,7 +160,11 @@ await defineCommands({
115
160
  const body = await askCatalogue(config, options.url, "stories", params, log);
116
161
  if (!isStoriesDocument(body))
117
162
  throw new ScriptError("The catalogue's answer has an unexpected shape");
118
- const document = filteredStories(body, { source: options.source, component: options.component });
163
+ const document = filteredStories(body, {
164
+ source: options.source,
165
+ component: options.component,
166
+ tags: options.tag
167
+ });
119
168
  printAnswer(storiesText(document, style), document, document.problems, { io, log, isJson });
120
169
  }
121
170
  }),
@@ -211,6 +260,7 @@ await defineCommands({
211
260
  }),
212
261
  new: forgebook.command({
213
262
  summary: "Write a component's first stories from its props: the main story, one per choice, the worst case.",
263
+ json: true,
214
264
  options: {
215
265
  export: {
216
266
  type: "string",
@@ -223,7 +273,11 @@ await defineCommands({
223
273
  description: "The framework the stories are written for: its package, @forgebook/<name>, reads the props. The catalogue's by default, else react."
224
274
  },
225
275
  print: { type: "boolean", description: "Print the file instead of writing it." },
226
- force: { type: "boolean", description: "Replace a stories file that exists." }
276
+ force: { type: "boolean", description: "Replace a stories file that exists." },
277
+ repair: {
278
+ type: "boolean",
279
+ description: "Draw the stories in a browser, and draw them inside the components their errors name (a provider), at most twice. It serves the catalogue for the run, which runs the project's Vite configuration and the stories' code, as check does. JSX frameworks only."
280
+ }
227
281
  },
228
282
  positionals: [{ name: "file", description: "The component's file.", required: true }],
229
283
  examples: [
@@ -231,29 +285,37 @@ await defineCommands({
231
285
  {
232
286
  command: `${COMMAND} new src/menu.tsx --export Menu --print`,
233
287
  description: "One of several, printed."
288
+ },
289
+ {
290
+ command: `${COMMAND} new src/Sidebar.tsx --repair`,
291
+ description: "Drawn, and given the providers it needs."
234
292
  }
235
293
  ],
236
- run: async ({ args, options, io, log }) => {
237
- const written = await newStoriesFile(resolve(args.file), options.export, options.framework);
238
- if (options.print) {
239
- io.stdout.write(written.text);
294
+ run: async ({ args, options, io, log, isJson }) => {
295
+ // the repair round reads programs with the compiler: loaded when the command runs, not when the CLI starts
296
+ const { runNew } = await import("./newRepairRun.js");
297
+ const outcome = await runNew(resolve(args.file), options);
298
+ if (outcome.printed !== undefined) {
299
+ io.stdout.write(outcome.printed);
240
300
  return;
241
301
  }
242
- const shown = relative(process.cwd(), written.file);
243
- if (existsSync(written.file) && options.force !== true)
244
- throw new ScriptError(`${shown} exists`, {
245
- hint: "Give --force to replace it, or --print to see it"
246
- });
247
- writeFileSync(written.file, written.text);
248
- log.success(`${shown} written`);
249
- log.info(`${COMMAND} stories --component ${written.text.match(/title: "([^"]*)"/)?.[1] ?? ""} lists them`);
302
+ if (isJson)
303
+ io.stdout.write(formatJson(outcome.document));
304
+ for (const [tone, line] of outcome.lines)
305
+ log[tone](line);
250
306
  }
251
307
  }),
252
308
  ...agentLoopCommands(forgebook),
309
+ ...guideCommands(forgebook),
310
+ ...auditCommands(forgebook),
311
+ ...graphCommands(forgebook),
253
312
  ...pagesCommands(forgebook),
254
313
  ...visualCommands(forgebook),
314
+ ...proofCommands(forgebook),
255
315
  ...initCommands(forgebook),
316
+ ...agentSetupCommands(forgebook),
256
317
  ...mcpCommands(forgebook),
318
+ ...migrateCommands(forgebook),
257
319
  story: forgebook.command({
258
320
  summary: "One story in detail: its args, its component's props, its links; fail when it cannot be read.",
259
321
  json: true,
@@ -263,6 +325,11 @@ await defineCommands({
263
325
  valueName: "query",
264
326
  description: "The view the links open in, as the catalogue's address writes it (theme=dark&lang=it)."
265
327
  },
328
+ args: {
329
+ type: "string",
330
+ valueName: "json",
331
+ description: "Values to set, as JSON: checked as a link's are, against `controls`; the links carry those taken, and a value left out fails the command."
332
+ },
266
333
  url: {
267
334
  type: "string",
268
335
  env: "FORGEBOOK_URL",
@@ -277,11 +344,19 @@ await defineCommands({
277
344
  {
278
345
  command: `${COMMAND} story kit:actions-button--primary --view theme=dark --json`,
279
346
  description: "A story, its links in the dark theme, as JSON."
347
+ },
348
+ {
349
+ command: `${COMMAND} story kit:forms-select--overview --args '{"tags":["a","b"]}' --json`,
350
+ description: "The links that open a story with these values, once checked."
280
351
  }
281
352
  ],
282
353
  run: async ({ args, options, io, log, isJson, style }) => {
283
354
  const config = await configOf(options.config);
284
- const params = new URLSearchParams({ id: args.id, view: options.view ?? "" });
355
+ const params = new URLSearchParams({
356
+ id: args.id,
357
+ view: options.view ?? "",
358
+ ...(options.args === undefined ? {} : { args: options.args })
359
+ });
285
360
  const body = await askCatalogue(config, options.url, "story", params, log);
286
361
  if (!isStoryDocument(body))
287
362
  throw new ScriptError("The catalogue's answer has an unexpected shape");
@@ -289,4 +364,6 @@ await defineCommands({
289
364
  }
290
365
  })
291
366
  })
292
- }).run();
367
+ })
368
+ .run()
369
+ .then(leaveAfterCommand);