weifuwu 0.86.0 → 0.87.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.
Files changed (651) hide show
  1. package/README.md +56 -45
  2. package/content/apps/admin.md +55 -0
  3. package/content/apps/agent-platform.md +35 -0
  4. package/content/apps/auth.md +49 -0
  5. package/content/apps/multi.md +44 -0
  6. package/content/apps/todo.md +51 -0
  7. package/content/backend/ai.md +28 -0
  8. package/content/backend/auth.md +20 -0
  9. package/content/backend/email.md +23 -0
  10. package/content/backend/graphql.md +23 -0
  11. package/content/backend/http.md +23 -0
  12. package/content/backend/limit.md +23 -0
  13. package/content/backend/middleware.md +17 -0
  14. package/content/backend/queue.md +23 -0
  15. package/content/backend/redis.md +26 -0
  16. package/content/backend/router.md +23 -0
  17. package/content/backend/schedule.md +23 -0
  18. package/content/backend/sql.md +27 -0
  19. package/content/backend/sse.md +26 -0
  20. package/content/backend/ws.md +26 -0
  21. package/content/capabilities/app-node.md +21 -0
  22. package/content/capabilities/data.md +21 -0
  23. package/content/capabilities/events.md +21 -0
  24. package/content/capabilities/hooks.md +22 -0
  25. package/content/capabilities/i18n.md +21 -0
  26. package/content/capabilities/popup.md +21 -0
  27. package/content/capabilities/render-only.md +23 -0
  28. package/content/capabilities/router.md +22 -0
  29. package/content/capabilities/self-id.md +21 -0
  30. package/content/capabilities/store.md +21 -0
  31. package/content/capabilities/theme.md +21 -0
  32. package/content/capabilities/two-phase.md +21 -0
  33. package/content/components/accordion.md +50 -0
  34. package/content/components/actionsheet.md +46 -0
  35. package/content/components/affix.md +51 -0
  36. package/content/components/aichat.md +57 -0
  37. package/content/components/alert.md +52 -0
  38. package/content/components/alertgroup.md +45 -0
  39. package/content/components/anchor.md +52 -0
  40. package/content/components/app.md +37 -0
  41. package/content/components/approvalcard.md +56 -0
  42. package/content/components/appshell.md +50 -0
  43. package/content/components/aspectratio.md +47 -0
  44. package/content/components/authpage.md +61 -0
  45. package/content/components/autocomplete-v2.md +40 -0
  46. package/content/components/autocomplete.md +56 -0
  47. package/content/components/avatar.md +51 -0
  48. package/content/components/avatargroup.md +47 -0
  49. package/content/components/backtop.md +53 -0
  50. package/content/components/badge.md +55 -0
  51. package/content/components/breadcrumb.md +49 -0
  52. package/content/components/button.md +63 -0
  53. package/content/components/calendar-v2.md +40 -0
  54. package/content/components/calendar.md +50 -0
  55. package/content/components/card.md +58 -0
  56. package/content/components/carousel.md +52 -0
  57. package/content/components/cascader-v2.md +39 -0
  58. package/content/components/cascader.md +54 -0
  59. package/content/components/chart.md +53 -0
  60. package/content/components/chatinput.md +63 -0
  61. package/content/components/checkbox.md +51 -0
  62. package/content/components/checkboxgroup.md +52 -0
  63. package/content/components/citationcard.md +48 -0
  64. package/content/components/codeblock.md +48 -0
  65. package/content/components/codeeditor.md +47 -0
  66. package/content/components/collapse.md +49 -0
  67. package/content/components/colorpicker.md +50 -0
  68. package/content/components/command.md +50 -0
  69. package/content/components/confirm.md +57 -0
  70. package/content/components/contextmenu.md +48 -0
  71. package/content/components/copybutton.md +51 -0
  72. package/content/components/datepicker.md +52 -0
  73. package/content/components/descriptions-v2.md +39 -0
  74. package/content/components/descriptions.md +52 -0
  75. package/content/components/diffview-v2.md +39 -0
  76. package/content/components/diffview.md +50 -0
  77. package/content/components/divider.md +48 -0
  78. package/content/components/drawer.md +55 -0
  79. package/content/components/dropdown.md +53 -0
  80. package/content/components/editor.md +49 -0
  81. package/content/components/emptystate.md +51 -0
  82. package/content/components/exportcsv.md +38 -0
  83. package/content/components/field.md +54 -0
  84. package/content/components/filepreview-office.md +37 -0
  85. package/content/components/filepreview.md +49 -0
  86. package/content/components/filetree.md +56 -0
  87. package/content/components/fileupload-v2.md +39 -0
  88. package/content/components/fileupload.md +57 -0
  89. package/content/components/floatbutton.md +52 -0
  90. package/content/components/form-v2.md +41 -0
  91. package/content/components/form.md +60 -0
  92. package/content/components/grid.md +51 -0
  93. package/content/components/highlight-v2.md +39 -0
  94. package/content/components/highlight.md +46 -0
  95. package/content/components/hovercard.md +51 -0
  96. package/content/components/icon.md +50 -0
  97. package/content/components/imagecropper.md +45 -0
  98. package/content/components/img.md +56 -0
  99. package/content/components/infinitescroll-v2.md +40 -0
  100. package/content/components/infinitescroll.md +54 -0
  101. package/content/components/input.md +65 -0
  102. package/content/components/inputnumber.md +58 -0
  103. package/content/components/inview.md +56 -0
  104. package/content/components/jsonschemaform.md +53 -0
  105. package/content/components/jsonviewer-v2.md +39 -0
  106. package/content/components/jsonviewer.md +49 -0
  107. package/content/components/kanban.md +46 -0
  108. package/content/components/label.md +48 -0
  109. package/content/components/layout.md +54 -0
  110. package/content/components/layoutcontent.md +43 -0
  111. package/content/components/layoutheader.md +43 -0
  112. package/content/components/layoutsider.md +43 -0
  113. package/content/components/link.md +52 -0
  114. package/content/components/list.md +44 -0
  115. package/content/components/loading.md +45 -0
  116. package/content/components/logviewer-v2.md +39 -0
  117. package/content/components/logviewer.md +53 -0
  118. package/content/components/markdown.md +51 -0
  119. package/content/components/markdowneditor.md +47 -0
  120. package/content/components/math.md +42 -0
  121. package/content/components/mentions-v2.md +39 -0
  122. package/content/components/mentions.md +52 -0
  123. package/content/components/menu.md +56 -0
  124. package/content/components/menubar.md +44 -0
  125. package/content/components/messagebubble.md +50 -0
  126. package/content/components/modal.md +59 -0
  127. package/content/components/navmenu.md +47 -0
  128. package/content/components/notification.md +51 -0
  129. package/content/components/pageheader.md +53 -0
  130. package/content/components/pagination.md +49 -0
  131. package/content/components/paragraph.md +45 -0
  132. package/content/components/passwordinput.md +57 -0
  133. package/content/components/pininput-v2.md +39 -0
  134. package/content/components/pininput.md +50 -0
  135. package/content/components/pipeline.md +49 -0
  136. package/content/components/popconfirm.md +58 -0
  137. package/content/components/popover.md +61 -0
  138. package/content/components/progressbar.md +50 -0
  139. package/content/components/prompttemplate.md +49 -0
  140. package/content/components/qrcode.md +50 -0
  141. package/content/components/radiogroup.md +53 -0
  142. package/content/components/rate.md +53 -0
  143. package/content/components/reasoningblock.md +47 -0
  144. package/content/components/relationgraph.md +52 -0
  145. package/content/components/resizable.md +53 -0
  146. package/content/components/result.md +49 -0
  147. package/content/components/scrollbar.md +49 -0
  148. package/content/components/searchinput.md +51 -0
  149. package/content/components/segmentedcontrol.md +59 -0
  150. package/content/components/select-searchable.md +47 -0
  151. package/content/components/select.md +66 -0
  152. package/content/components/sessionlist.md +52 -0
  153. package/content/components/sheetgrid.md +44 -0
  154. package/content/components/skeleton.md +55 -0
  155. package/content/components/slidecanvas.md +44 -0
  156. package/content/components/slider.md +62 -0
  157. package/content/components/sortablelist.md +39 -0
  158. package/content/components/space.md +52 -0
  159. package/content/components/sparkline.md +52 -0
  160. package/content/components/statcard-countdown.md +39 -0
  161. package/content/components/statcard.md +56 -0
  162. package/content/components/steps.md +48 -0
  163. package/content/components/switch.md +50 -0
  164. package/content/components/tabbar.md +45 -0
  165. package/content/components/table-v2.md +40 -0
  166. package/content/components/table.md +66 -0
  167. package/content/components/tabs.md +56 -0
  168. package/content/components/tag.md +51 -0
  169. package/content/components/tagsinput-v2.md +39 -0
  170. package/content/components/tagsinput.md +54 -0
  171. package/content/components/text.md +45 -0
  172. package/content/components/textarea.md +57 -0
  173. package/content/components/themeswitch.md +69 -0
  174. package/content/components/timeline.md +50 -0
  175. package/content/components/title.md +45 -0
  176. package/content/components/toast.md +52 -0
  177. package/content/components/toggle-togglegroup.md +52 -0
  178. package/content/components/togglegroup.md +47 -0
  179. package/content/components/toolcallcard.md +51 -0
  180. package/content/components/tooltip.md +50 -0
  181. package/content/components/tour.md +50 -0
  182. package/content/components/transfer.md +52 -0
  183. package/content/components/tree-v2.md +39 -0
  184. package/content/components/tree.md +59 -0
  185. package/content/components/treeselect.md +54 -0
  186. package/content/components/typography.md +51 -0
  187. package/content/components/videoplayer.md +52 -0
  188. package/content/components/virtuallist.md +52 -0
  189. package/content/components/virtualtable-v2.md +39 -0
  190. package/content/components/virtualtable.md +55 -0
  191. package/content/components/watermark.md +53 -0
  192. package/content/components/wave.md +43 -0
  193. package/content/guides/ai-chat-family.md +24 -0
  194. package/content/guides/choose.md +67 -0
  195. package/content/guides/component-model.md +32 -0
  196. package/content/guides/component-standards.md +123 -0
  197. package/{docs/components.md → content/guides/components-guide.md} +31 -7
  198. package/{docs/custom-components.md → content/guides/custom-component.md} +70 -55
  199. package/{docs/data.md → content/guides/data-guide.md} +5 -2
  200. package/content/guides/file-preview-family.md +18 -0
  201. package/{docs → content/guides}/frontend.md +122 -52
  202. package/content/guides/layout-choice.md +64 -0
  203. package/{docs/layout.md → content/guides/layout-guide.md} +12 -8
  204. package/{docs/frontend-middleware.md → content/guides/middleware.md} +34 -3
  205. package/{docs/mobile.md → content/guides/mobile-guide.md} +20 -24
  206. package/content/guides/page-building.md +98 -0
  207. package/content/guides/production.md +37 -0
  208. package/content/guides/quality.md +60 -0
  209. package/{docs/realtime.md → content/guides/realtime-guide.md} +6 -3
  210. package/content/guides/render-only.md +44 -0
  211. package/{docs/saas.md → content/guides/saas-guide.md} +8 -5
  212. package/{docs/server.md → content/guides/server-guide.md} +5 -2
  213. package/content/guides/start.md +41 -0
  214. package/{docs → content/guides}/styling.md +5 -1
  215. package/{docs/frontend-ui-dom.md → content/guides/ui-dom-guide.md} +7 -1
  216. package/content/index.json +4344 -0
  217. package/content/index.md +181 -0
  218. package/content/layout/align.md +20 -0
  219. package/content/layout/anchor.md +19 -0
  220. package/content/layout/app-shell.md +23 -0
  221. package/content/layout/border.md +20 -0
  222. package/content/layout/center.md +19 -0
  223. package/content/layout/cluster.md +19 -0
  224. package/content/layout/container.md +19 -0
  225. package/content/layout/fill.md +19 -0
  226. package/content/layout/grid.md +19 -0
  227. package/content/layout/hidden.md +22 -0
  228. package/content/layout/layer.md +19 -0
  229. package/content/layout/position.md +22 -0
  230. package/content/layout/row.md +23 -0
  231. package/content/layout/safe-area.md +20 -0
  232. package/content/layout/scroll.md +21 -0
  233. package/content/layout/spacing.md +22 -0
  234. package/content/layout/split.md +19 -0
  235. package/content/layout/stack.md +19 -0
  236. package/content/layout/surface.md +23 -0
  237. package/content/layout/text.md +22 -0
  238. package/content/patterns/app-shell.md +34 -0
  239. package/content/patterns/dashboard.md +36 -0
  240. package/content/patterns/data-screen.md +30 -0
  241. package/content/patterns/detail-page.md +31 -0
  242. package/content/patterns/docs.md +34 -0
  243. package/content/patterns/focus-task.md +34 -0
  244. package/content/patterns/landing.md +35 -0
  245. package/content/patterns/list-page.md +32 -0
  246. package/content/patterns/mobile.md +31 -0
  247. package/content/patterns/settings-page.md +33 -0
  248. package/content/patterns/workspace.md +32 -0
  249. package/dist/cli/apps-typecheck.test.d.ts +11 -0
  250. package/dist/cli/docs.d.ts +2 -0
  251. package/dist/cli/docs.mjs +10961 -0
  252. package/dist/cli/home-flash.test.d.ts +1 -0
  253. package/dist/{components → client/components}/Accordion/Accordion.d.ts +1 -1
  254. package/dist/client/components/ActionSheet/ActionSheet.d.ts +37 -0
  255. package/dist/{components → client/components}/Affix/Affix.d.ts +1 -1
  256. package/dist/{components → client/components}/AiChat/AiChat.d.ts +3 -3
  257. package/dist/{components → client/components}/Alert/Alert.d.ts +1 -1
  258. package/dist/{components → client/components}/AlertGroup/AlertGroup.d.ts +1 -1
  259. package/dist/{components → client/components}/Anchor/Anchor.d.ts +1 -1
  260. package/dist/client/components/AppShell/AppShell.d.ts +55 -0
  261. package/dist/{components → client/components}/ApprovalCard/ApprovalCard.d.ts +2 -2
  262. package/dist/{components → client/components}/AspectRatio/AspectRatio.d.ts +1 -1
  263. package/dist/{components → client/components}/AuthPage/AuthPage.d.ts +2 -2
  264. package/dist/{components → client/components}/AutoComplete/AutoComplete.d.ts +1 -1
  265. package/dist/{components → client/components}/Avatar/Avatar.d.ts +1 -1
  266. package/dist/{components → client/components}/AvatarGroup/AvatarGroup.d.ts +1 -1
  267. package/dist/{components → client/components}/BackTop/BackTop.d.ts +1 -1
  268. package/dist/{components → client/components}/Badge/Badge.d.ts +1 -1
  269. package/dist/{components → client/components}/Breadcrumb/Breadcrumb.d.ts +1 -1
  270. package/dist/{components → client/components}/Button/Button.d.ts +1 -1
  271. package/dist/{components → client/components}/Calendar/Calendar.d.ts +1 -1
  272. package/dist/{components → client/components}/Card/Card.d.ts +1 -1
  273. package/dist/{components → client/components}/Carousel/Carousel.d.ts +1 -1
  274. package/dist/{components → client/components}/Cascader/Cascader.d.ts +1 -1
  275. package/dist/{components → client/components}/Chart/Chart.d.ts +1 -1
  276. package/dist/{components → client/components}/Chart/chart-utils.d.ts +5 -1
  277. package/dist/{components → client/components}/ChatInput/ChatInput.d.ts +7 -7
  278. package/dist/{components → client/components}/Checkbox/Checkbox.d.ts +1 -1
  279. package/dist/{components → client/components}/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  280. package/dist/{components → client/components}/CitationCard/CitationCard.d.ts +3 -3
  281. package/dist/{components → client/components}/CodeBlock/CodeBlock.d.ts +1 -1
  282. package/dist/client/components/CodeEditor/CodeEditor.d.ts +18 -0
  283. package/dist/{components → client/components}/Collapse/Collapse.d.ts +1 -1
  284. package/dist/{components → client/components}/ColorPicker/ColorPicker.d.ts +1 -1
  285. package/dist/{components → client/components}/Command/Command.d.ts +1 -1
  286. package/dist/{components → client/components}/Confirm/Confirm.d.ts +2 -7
  287. package/dist/{components → client/components}/ContextMenu/ContextMenu.d.ts +1 -1
  288. package/dist/{components → client/components}/CopyButton/CopyButton.d.ts +1 -1
  289. package/dist/{components → client/components}/DatePicker/DatePicker.d.ts +2 -2
  290. package/dist/{components → client/components}/Descriptions/Descriptions.d.ts +1 -1
  291. package/dist/{components → client/components}/DiffView/DiffView.d.ts +1 -1
  292. package/dist/{components → client/components}/Divider/Divider.d.ts +1 -1
  293. package/dist/{components → client/components}/Drawer/Drawer.d.ts +1 -1
  294. package/dist/{components → client/components}/Dropdown/Dropdown.d.ts +1 -1
  295. package/dist/{components → client/components}/Editor/Editor.d.ts +1 -1
  296. package/dist/{components → client/components}/Editor/tools/toolbar.d.ts +1 -1
  297. package/dist/{components → client/components}/EmptyState/EmptyState.d.ts +1 -1
  298. package/dist/client/components/ExportCSV/ExportCSV.d.ts +30 -0
  299. package/dist/{components → client/components}/Field/Field.d.ts +1 -1
  300. package/dist/{components → client/components}/FilePreview/FilePreview.d.ts +1 -1
  301. package/dist/client/components/FileTree/FileTree.d.ts +57 -0
  302. package/dist/{components → client/components}/FileUpload/FileUpload.d.ts +1 -1
  303. package/dist/{components → client/components}/FloatButton/FloatButton.d.ts +1 -1
  304. package/dist/{components → client/components}/Form/Form.d.ts +1 -1
  305. package/dist/{components → client/components}/Grid/Grid.d.ts +1 -1
  306. package/dist/{components → client/components}/Highlight/Highlight.d.ts +1 -1
  307. package/dist/{components → client/components}/HoverCard/HoverCard.d.ts +5 -4
  308. package/dist/{components → client/components}/Icon/Icon.d.ts +2 -2
  309. package/dist/client/components/ImageCropper/ImageCropper.d.ts +17 -0
  310. package/dist/{components → client/components}/Img/Img.d.ts +1 -1
  311. package/dist/{components → client/components}/InView/InView.d.ts +1 -1
  312. package/dist/{components → client/components}/InfiniteScroll/InfiniteScroll.d.ts +1 -1
  313. package/dist/{components → client/components}/Input/Input.d.ts +1 -1
  314. package/dist/{components → client/components}/InputNumber/InputNumber.d.ts +1 -1
  315. package/dist/{components → client/components}/JSONViewer/JSONViewer.d.ts +1 -1
  316. package/dist/{components → client/components}/JsonSchemaForm/JsonSchemaForm.d.ts +3 -3
  317. package/dist/{components → client/components}/Kanban/Kanban.d.ts +1 -1
  318. package/dist/{components → client/components}/Label/Label.d.ts +1 -1
  319. package/dist/{components → client/components}/Layout/Layout.d.ts +1 -1
  320. package/dist/{components → client/components}/Link/Link.d.ts +1 -1
  321. package/dist/{components → client/components}/List/List.d.ts +1 -1
  322. package/dist/{components → client/components}/Loading/Loading.d.ts +1 -1
  323. package/dist/{components → client/components}/LogViewer/LogViewer.d.ts +1 -1
  324. package/dist/{components → client/components}/Markdown/Markdown.d.ts +1 -1
  325. package/dist/client/components/MarkdownEditor/MarkdownEditor.d.ts +18 -0
  326. package/dist/client/components/Math/Math.d.ts +15 -0
  327. package/dist/{components → client/components}/Mentions/Mentions.d.ts +1 -1
  328. package/dist/{components → client/components}/Menu/Menu.d.ts +1 -1
  329. package/dist/{components → client/components}/Menubar/Menubar.d.ts +1 -1
  330. package/dist/{components → client/components}/MessageBubble/MessageBubble.d.ts +1 -1
  331. package/dist/{components → client/components}/Modal/Modal.d.ts +1 -1
  332. package/dist/{components → client/components}/NavMenu/NavMenu.d.ts +2 -2
  333. package/dist/{components → client/components}/Notification/Notification.d.ts +7 -2
  334. package/dist/{components → client/components}/PageHeader/PageHeader.d.ts +1 -1
  335. package/dist/{components → client/components}/Pagination/Pagination.d.ts +1 -1
  336. package/dist/{components → client/components}/PasswordInput/PasswordInput.d.ts +1 -1
  337. package/dist/{components → client/components}/PinInput/PinInput.d.ts +1 -1
  338. package/dist/{components → client/components}/Pipeline/Pipeline.d.ts +1 -1
  339. package/dist/{components → client/components}/Popconfirm/Popconfirm.d.ts +2 -2
  340. package/dist/{components → client/components}/Popover/Popover.d.ts +5 -4
  341. package/dist/{components → client/components}/ProgressBar/ProgressBar.d.ts +1 -1
  342. package/dist/client/components/PromptTemplate/PromptTemplate.d.ts +37 -0
  343. package/dist/{components → client/components}/QRCode/QRCode.d.ts +1 -1
  344. package/dist/{components → client/components}/RadioGroup/RadioGroup.d.ts +1 -1
  345. package/dist/{components → client/components}/Rate/Rate.d.ts +1 -1
  346. package/dist/{components → client/components}/ReasoningBlock/ReasoningBlock.d.ts +3 -3
  347. package/dist/client/components/RelationGraph/RelationGraph.d.ts +59 -0
  348. package/dist/{components → client/components}/Resizable/Resizable.d.ts +1 -1
  349. package/dist/{components → client/components}/Result/Result.d.ts +1 -1
  350. package/dist/{components → client/components}/Scrollbar/Scrollbar.d.ts +1 -1
  351. package/dist/{components → client/components}/SearchInput/SearchInput.d.ts +1 -1
  352. package/dist/{components → client/components}/SegmentedControl/SegmentedControl.d.ts +1 -1
  353. package/dist/{components → client/components}/Select/Select.d.ts +1 -1
  354. package/dist/{components → client/components}/SessionList/SessionList.d.ts +3 -3
  355. package/dist/{components → client/components}/SheetGrid/SheetGrid.d.ts +1 -1
  356. package/dist/{components → client/components}/Skeleton/Skeleton.d.ts +1 -1
  357. package/dist/{components → client/components}/SlideCanvas/SlideCanvas.d.ts +1 -1
  358. package/dist/client/components/Slider/Slider.d.ts +27 -0
  359. package/dist/client/components/SortableList/SortableList.d.ts +23 -0
  360. package/dist/{components → client/components}/Space/Space.d.ts +1 -1
  361. package/dist/{components → client/components}/Sparkline/Sparkline.d.ts +1 -1
  362. package/dist/{components → client/components}/StatCard/StatCard.d.ts +1 -1
  363. package/dist/{components → client/components}/Steps/Steps.d.ts +1 -1
  364. package/dist/{components → client/components}/Switch/Switch.d.ts +1 -1
  365. package/dist/client/components/TabBar/TabBar.d.ts +35 -0
  366. package/dist/{components → client/components}/Table/Table.d.ts +7 -1
  367. package/dist/client/components/Tabs/Tabs.d.ts +22 -0
  368. package/dist/{components → client/components}/Tag/Tag.d.ts +1 -1
  369. package/dist/{components → client/components}/TagsInput/TagsInput.d.ts +1 -1
  370. package/dist/{components → client/components}/Textarea/Textarea.d.ts +1 -1
  371. package/dist/{components → client/components}/ThemeSwitch/ThemeSwitch.d.ts +1 -1
  372. package/dist/{components → client/components}/Timeline/Timeline.d.ts +1 -1
  373. package/dist/{components → client/components}/Toast/Toast.d.ts +1 -1
  374. package/dist/{components → client/components}/ToggleGroup/ToggleGroup.d.ts +1 -1
  375. package/dist/{components → client/components}/ToolCallCard/ToolCallCard.d.ts +2 -2
  376. package/dist/{components → client/components}/Tooltip/Tooltip.d.ts +4 -3
  377. package/dist/{components → client/components}/Tour/Tour.d.ts +1 -1
  378. package/dist/{components → client/components}/Transfer/Transfer.d.ts +1 -1
  379. package/dist/{components → client/components}/Tree/Tree.d.ts +5 -1
  380. package/dist/{components → client/components}/TreeSelect/TreeSelect.d.ts +5 -1
  381. package/dist/{components → client/components}/Typography/Typography.d.ts +1 -1
  382. package/dist/client/components/VideoPlayer/VideoPlayer.d.ts +25 -0
  383. package/dist/{components → client/components}/VirtualList/VirtualList.d.ts +1 -1
  384. package/dist/{components → client/components}/VirtualTable/VirtualTable.d.ts +1 -1
  385. package/dist/{components → client/components}/Watermark/Watermark.d.ts +1 -1
  386. package/dist/client/components/Wave/Wave.d.ts +15 -0
  387. package/dist/{components → client/components}/index.d.ts +44 -5
  388. package/dist/client/components/index.js +57 -0
  389. package/dist/{components → client/components}/style.css +1081 -98
  390. package/dist/{layout → client/layout}/weifuwu-layout.css +60 -6
  391. package/dist/{office → client/office}/xml-serialize.d.ts +1 -1
  392. package/dist/client/vdom/browser/Browser.d.ts +73 -0
  393. package/dist/client/vdom/browser/create-client-browser.d.ts +11 -0
  394. package/dist/client/vdom/commands.d.ts +19 -0
  395. package/dist/client/vdom/context/UIContext.d.ts +61 -0
  396. package/dist/client/vdom/context/data.d.ts +17 -0
  397. package/dist/client/vdom/core/async-guard.d.ts +20 -0
  398. package/dist/client/vdom/core/build.d.ts +36 -0
  399. package/dist/client/vdom/core/command/create.d.ts +25 -0
  400. package/dist/client/vdom/core/command/index.d.ts +15 -0
  401. package/dist/client/vdom/core/command/insert.d.ts +32 -0
  402. package/dist/client/vdom/core/command/lifecycle.d.ts +47 -0
  403. package/dist/client/vdom/core/command/props.d.ts +22 -0
  404. package/dist/client/vdom/core/diff/attrs.d.ts +10 -0
  405. package/dist/client/vdom/core/diff/children.d.ts +29 -0
  406. package/dist/client/vdom/core/diff/cleanup.d.ts +44 -0
  407. package/dist/client/vdom/core/diff/index.d.ts +22 -0
  408. package/dist/client/vdom/core/diff/output.d.ts +30 -0
  409. package/dist/client/vdom/core/diff/same.d.ts +22 -0
  410. package/dist/client/vdom/core/field/attributes.d.ts +15 -0
  411. package/dist/client/vdom/core/field/events.d.ts +54 -0
  412. package/dist/client/vdom/core/field/index.d.ts +19 -0
  413. package/dist/client/vdom/core/field/key.d.ts +16 -0
  414. package/dist/client/vdom/core/field/props.d.ts +15 -0
  415. package/dist/client/vdom/core/field/ref.d.ts +38 -0
  416. package/dist/client/vdom/core/field/style.d.ts +17 -0
  417. package/dist/client/vdom/core/node/children.d.ts +20 -0
  418. package/dist/client/vdom/core/node/component.d.ts +93 -0
  419. package/dist/client/vdom/core/node/fragment.d.ts +14 -0
  420. package/dist/client/vdom/core/node/hole.d.ts +22 -0
  421. package/dist/client/vdom/core/node/index.d.ts +35 -0
  422. package/dist/client/vdom/core/node/keyed.d.ts +64 -0
  423. package/dist/client/vdom/core/node/native.d.ts +20 -0
  424. package/dist/client/vdom/core/node/portal.d.ts +11 -0
  425. package/dist/client/vdom/core/patch/fields.d.ts +15 -0
  426. package/dist/client/vdom/core/patch/index.d.ts +51 -0
  427. package/dist/client/vdom/core/patch/processors.d.ts +75 -0
  428. package/dist/client/vdom/core/patch/state-machine.d.ts +38 -0
  429. package/dist/client/vdom/core/patch/verify.d.ts +17 -0
  430. package/dist/client/vdom/core/router.d.ts +31 -0
  431. package/dist/client/vdom/core/serve.d.ts +75 -0
  432. package/dist/client/vdom/core/ssr/absorb.d.ts +53 -0
  433. package/dist/client/vdom/core/ssr/html.d.ts +32 -0
  434. package/dist/client/vdom/core/ssr/index.d.ts +25 -0
  435. package/dist/client/vdom/core/transform/component.d.ts +23 -0
  436. package/dist/client/vdom/core/transform/element.d.ts +21 -0
  437. package/dist/client/vdom/core/transform/fragment.d.ts +21 -0
  438. package/dist/client/vdom/core/transform/hole.d.ts +13 -0
  439. package/dist/client/vdom/core/transform/index.d.ts +46 -0
  440. package/dist/client/vdom/core/transform/states.d.ts +22 -0
  441. package/dist/client/vdom/core/transform/table.d.ts +28 -0
  442. package/dist/client/vdom/core/transform/text.d.ts +10 -0
  443. package/dist/client/vdom/core/vnode.d.ts +45 -0
  444. package/dist/client/vdom/dev/effect-guard.d.ts +8 -0
  445. package/dist/client/vdom/hooks/ai-stream.d.ts +46 -0
  446. package/dist/client/vdom/hooks/basic.d.ts +42 -0
  447. package/dist/client/vdom/hooks/chat.d.ts +91 -0
  448. package/dist/client/vdom/hooks/controlled.d.ts +27 -0
  449. package/dist/client/vdom/hooks/drag-media.d.ts +52 -0
  450. package/dist/client/vdom/hooks/env.d.ts +119 -0
  451. package/dist/client/vdom/hooks/input.d.ts +43 -0
  452. package/dist/client/vdom/hooks/observe.d.ts +60 -0
  453. package/dist/client/vdom/hooks/popup-manager.d.ts +92 -0
  454. package/dist/client/vdom/hooks/popup.d.ts +52 -0
  455. package/dist/client/vdom/hooks/stable.d.ts +45 -0
  456. package/dist/client/vdom/index.d.ts +67 -0
  457. package/dist/client/vdom/index.js +8 -0
  458. package/dist/client/vdom/jsx-runtime.d.ts +28 -0
  459. package/dist/client/vdom/jsx-runtime.js +1 -0
  460. package/dist/client/vdom/middlewares/api.d.ts +38 -0
  461. package/dist/client/vdom/middlewares/auth-i18n.d.ts +66 -0
  462. package/dist/client/vdom/middlewares/ws.d.ts +37 -0
  463. package/dist/client/vdom/store.d.ts +49 -0
  464. package/dist/client/vdom/testing.d.ts +46 -0
  465. package/dist/client/vdom/testing.js +2 -0
  466. package/dist/dev/index.d.ts +12 -0
  467. package/dist/dev/index.js +4 -4
  468. package/dist/{ai → server/ai}/contracts.d.ts +1 -1
  469. package/dist/{ai → server/ai}/index.d.ts +2 -2
  470. package/dist/{ai → server/ai}/types.d.ts +1 -1
  471. package/dist/{core → server/core}/router.d.ts +2 -4
  472. package/dist/{db → server/db}/contracts.d.ts +1 -1
  473. package/dist/server/db/postgres-server.d.ts +37 -0
  474. package/dist/server/db/redis-server.d.ts +32 -0
  475. package/dist/server/db/server.d.ts +30 -0
  476. package/dist/server/db/test-servers.d.ts +21 -0
  477. package/dist/{email → server/email}/contracts.d.ts +1 -1
  478. package/dist/{index.js → server/index.js} +3145 -2487
  479. package/dist/{ui → server/ui}/index.d.ts +2 -2
  480. package/dist/{user → server/user}/token.d.ts +1 -1
  481. package/dist/shared/router/trie.d.ts +61 -0
  482. package/docs/components-map.md +5 -5
  483. package/docs/style-guide.md +14 -2
  484. package/examples/apps/admin/README.md +23 -0
  485. package/examples/apps/admin/api.ts +27 -0
  486. package/examples/apps/admin/app.tsx +144 -0
  487. package/examples/apps/admin/main.tsx +8 -0
  488. package/examples/apps/admin/server.ts +37 -0
  489. package/examples/apps/auth/README.md +23 -0
  490. package/examples/apps/auth/api.ts +49 -0
  491. package/examples/apps/auth/app.tsx +137 -0
  492. package/examples/apps/auth/main.tsx +8 -0
  493. package/examples/apps/auth/server.ts +37 -0
  494. package/examples/apps/multi/README.md +23 -0
  495. package/examples/apps/multi/app.tsx +83 -0
  496. package/examples/apps/multi/main.tsx +8 -0
  497. package/examples/apps/multi/server.ts +33 -0
  498. package/examples/apps/todo/README.md +23 -0
  499. package/examples/apps/todo/api.ts +26 -0
  500. package/examples/apps/todo/app.tsx +128 -0
  501. package/examples/apps/todo/main.tsx +9 -0
  502. package/examples/apps/todo/server.ts +39 -0
  503. package/examples/hello-world/README.md +9 -0
  504. package/examples/hello-world/client.ts +14 -0
  505. package/examples/hello-world/routes.tsx +26 -0
  506. package/examples/hello-world/server.ts +46 -0
  507. package/examples/patterns/AppShell.tsx +224 -0
  508. package/examples/patterns/Dashboard.tsx +153 -0
  509. package/examples/patterns/DataScreen.tsx +104 -0
  510. package/examples/patterns/DetailPage.tsx +79 -0
  511. package/examples/patterns/Docs.tsx +105 -0
  512. package/examples/patterns/FocusTask.tsx +67 -0
  513. package/examples/patterns/Landing.tsx +90 -0
  514. package/examples/patterns/ListPage.tsx +77 -0
  515. package/examples/patterns/Mobile.tsx +154 -0
  516. package/examples/patterns/SettingsPage.tsx +98 -0
  517. package/examples/patterns/SplitWorkspace.tsx +113 -0
  518. package/package.json +61 -29
  519. package/dist/components/Slider/Slider.d.ts +0 -19
  520. package/dist/components/Tabs/Tabs.d.ts +0 -12
  521. package/dist/components/index.js +0 -55
  522. package/dist/ui-dom/Confirm.d.ts +0 -8
  523. package/dist/ui-dom/Notification.d.ts +0 -8
  524. package/dist/ui-dom/Toast.d.ts +0 -8
  525. package/dist/ui-dom/ai.d.ts +0 -59
  526. package/dist/ui-dom/browser.d.ts +0 -10
  527. package/dist/ui-dom/debug.d.ts +0 -21
  528. package/dist/ui-dom/hooks/chat.d.ts +0 -11
  529. package/dist/ui-dom/hooks/events.d.ts +0 -30
  530. package/dist/ui-dom/hooks/external.d.ts +0 -20
  531. package/dist/ui-dom/hooks/index.d.ts +0 -29
  532. package/dist/ui-dom/hooks/input.d.ts +0 -33
  533. package/dist/ui-dom/hooks/media.d.ts +0 -17
  534. package/dist/ui-dom/hooks/popup.d.ts +0 -30
  535. package/dist/ui-dom/hooks/stable.d.ts +0 -35
  536. package/dist/ui-dom/hooks/types.d.ts +0 -77
  537. package/dist/ui-dom/i18n.d.ts +0 -31
  538. package/dist/ui-dom/index.d.ts +0 -47
  539. package/dist/ui-dom/index.js +0 -41
  540. package/dist/ui-dom/jsx-runtime.d.ts +0 -4
  541. package/dist/ui-dom/jsx-runtime.js +0 -1
  542. package/dist/ui-dom/locale/en_US.d.ts +0 -69
  543. package/dist/ui-dom/locale/zh_CN.d.ts +0 -69
  544. package/dist/ui-dom/middleware/api.d.ts +0 -91
  545. package/dist/ui-dom/middleware/auth.d.ts +0 -30
  546. package/dist/ui-dom/middleware/ws.d.ts +0 -33
  547. package/dist/ui-dom/motion.d.ts +0 -8
  548. package/dist/ui-dom/popup-tracker.d.ts +0 -36
  549. package/dist/ui-dom/popup.d.ts +0 -42
  550. package/dist/ui-dom/store.d.ts +0 -24
  551. package/dist/ui-dom/testing.d.ts +0 -68
  552. package/dist/ui-dom/testing.js +0 -7
  553. package/dist/ui-dom/types.d.ts +0 -634
  554. package/dist/ui-dom/use-chat.d.ts +0 -95
  555. package/dist/ui-dom/vdom3/README.d.ts +0 -32
  556. package/dist/ui-dom/vdom3/app.d.ts +0 -20
  557. package/dist/ui-dom/vdom3/audit.d.ts +0 -29
  558. package/dist/ui-dom/vdom3/build.d.ts +0 -20
  559. package/dist/ui-dom/vdom3/commands.d.ts +0 -21
  560. package/dist/ui-dom/vdom3/comp-index.d.ts +0 -18
  561. package/dist/ui-dom/vdom3/delegate.d.ts +0 -53
  562. package/dist/ui-dom/vdom3/events.d.ts +0 -17
  563. package/dist/ui-dom/vdom3/index.d.ts +0 -42
  564. package/dist/ui-dom/vdom3/jsx.d.ts +0 -32
  565. package/dist/ui-dom/vdom3/record.d.ts +0 -16
  566. package/dist/ui-dom/vdom3/registry.d.ts +0 -30
  567. package/dist/ui-dom/vdom3/render.d.ts +0 -39
  568. package/dist/ui-dom/vdom3/replay.d.ts +0 -28
  569. package/dist/ui-dom/vdom3/root.d.ts +0 -24
  570. package/dist/ui-dom/vdom3/router.d.ts +0 -31
  571. package/dist/ui-dom/vdom3/scheduler.d.ts +0 -23
  572. package/dist/ui-dom/vdom3/ssr.d.ts +0 -27
  573. package/dist/ui-dom/vdom3/sync.d.ts +0 -22
  574. package/dist/ui-dom/vdom3/types.d.ts +0 -173
  575. package/dist/ui-dom/vdom3/ui.d.ts +0 -16
  576. package/dist/ui-dom/vdom3.js +0 -41
  577. package/dist/ui-dom/vnode.d.ts +0 -13
  578. /package/dist/{make-executable-schema.test.d.ts → cli/content-sync.test.d.ts} +0 -0
  579. /package/dist/{ui-dom/testing.test.d.ts → cli/docs-cli.test.d.ts} +0 -0
  580. /package/dist/{components → client/components}/CodeBlock/highlight.d.ts +0 -0
  581. /package/dist/{components → client/components}/DatePicker/calendar-utils.d.ts +0 -0
  582. /package/dist/{components → client/components}/DiffView/diff-utils.d.ts +0 -0
  583. /package/dist/{components → client/components}/Editor/edit-events.d.ts +0 -0
  584. /package/dist/{components → client/components}/Editor/model/apply.d.ts +0 -0
  585. /package/dist/{components → client/components}/Editor/model/diff.d.ts +0 -0
  586. /package/dist/{components → client/components}/Editor/model/dom.d.ts +0 -0
  587. /package/dist/{components → client/components}/Editor/model/history.d.ts +0 -0
  588. /package/dist/{components → client/components}/Editor/model/html.d.ts +0 -0
  589. /package/dist/{components → client/components}/Editor/model/inverse.d.ts +0 -0
  590. /package/dist/{components → client/components}/Editor/model/types.d.ts +0 -0
  591. /package/dist/{components → client/components}/Editor/tools/table.d.ts +0 -0
  592. /package/dist/{components → client/components}/Editor/tools/types.d.ts +0 -0
  593. /package/dist/{components → client/components}/FilePreview/markdown.d.ts +0 -0
  594. /package/dist/{components → client/components}/Markdown/parser.d.ts +0 -0
  595. /package/dist/{components → client/components}/OfficeEditor/ai/ai-bridge.d.ts +0 -0
  596. /package/dist/{components → client/components}/OfficeEditor/model/apply.d.ts +0 -0
  597. /package/dist/{components → client/components}/OfficeEditor/model/types.d.ts +0 -0
  598. /package/dist/{components → client/components}/Pipeline/dag-utils.d.ts +0 -0
  599. /package/dist/{components → client/components}/QRCode/qr.d.ts +0 -0
  600. /package/dist/{components → client/components}/Sparkline/sparkline-utils.d.ts +0 -0
  601. /package/dist/{office → client/office}/docx.d.ts +0 -0
  602. /package/dist/{office → client/office}/pptx.d.ts +0 -0
  603. /package/dist/{office → client/office}/xlsx.d.ts +0 -0
  604. /package/dist/{office → client/office}/xml.d.ts +0 -0
  605. /package/dist/{office → client/office}/zip.d.ts +0 -0
  606. /package/dist/{ai → server/ai}/agent.d.ts +0 -0
  607. /package/dist/{ai → server/ai}/client.d.ts +0 -0
  608. /package/dist/{ai → server/ai}/sse.d.ts +0 -0
  609. /package/dist/{core → server/core}/serve.d.ts +0 -0
  610. /package/dist/{core → server/core}/ws.d.ts +0 -0
  611. /package/dist/{db → server/db}/errors.d.ts +0 -0
  612. /package/dist/{db → server/db}/memory-redis.d.ts +0 -0
  613. /package/dist/{db → server/db}/memory-sql.d.ts +0 -0
  614. /package/dist/{db → server/db}/postgres/connection.d.ts +0 -0
  615. /package/dist/{db → server/db}/postgres/pool.d.ts +0 -0
  616. /package/dist/{db → server/db}/postgres/protocol.d.ts +0 -0
  617. /package/dist/{db → server/db}/postgres/schema.d.ts +0 -0
  618. /package/dist/{db → server/db}/query-builder.d.ts +0 -0
  619. /package/dist/{db → server/db}/query.d.ts +0 -0
  620. /package/dist/{db → server/db}/redis/client.d.ts +0 -0
  621. /package/dist/{db → server/db}/redis/commands.d.ts +0 -0
  622. /package/dist/{db → server/db}/redis/connection.d.ts +0 -0
  623. /package/dist/{db → server/db}/redis/pipeline.d.ts +0 -0
  624. /package/dist/{db → server/db}/redis/pool.d.ts +0 -0
  625. /package/dist/{db → server/db}/redis/resp.d.ts +0 -0
  626. /package/dist/{db → server/db}/redis/subscriber.d.ts +0 -0
  627. /package/dist/{db → server/db}/sql-parser.d.ts +0 -0
  628. /package/dist/{email → server/email}/index.d.ts +0 -0
  629. /package/dist/{email → server/email}/smtp.d.ts +0 -0
  630. /package/dist/{graphql.d.ts → server/graphql.d.ts} +0 -0
  631. /package/dist/{index.d.ts → server/index.d.ts} +0 -0
  632. /package/dist/{make-executable-schema.d.ts → server/make-executable-schema.d.ts} +0 -0
  633. /package/dist/{messager → server/messager}/index.d.ts +0 -0
  634. /package/dist/{middleware → server/middleware}/cors.d.ts +0 -0
  635. /package/dist/{middleware → server/middleware}/rate-limit.d.ts +0 -0
  636. /package/dist/{middleware → server/middleware}/static.d.ts +0 -0
  637. /package/dist/{postgres → server/postgres}/client.d.ts +0 -0
  638. /package/dist/{postgres → server/postgres}/index.d.ts +0 -0
  639. /package/dist/{postgres → server/postgres}/types.d.ts +0 -0
  640. /package/dist/{queue → server/queue}/index.d.ts +0 -0
  641. /package/dist/{redis → server/redis}/client.d.ts +0 -0
  642. /package/dist/{redis → server/redis}/index.d.ts +0 -0
  643. /package/dist/{redis → server/redis}/types.d.ts +0 -0
  644. /package/dist/{request.d.ts → server/request.d.ts} +0 -0
  645. /package/dist/{response.d.ts → server/response.d.ts} +0 -0
  646. /package/dist/{scheduler → server/scheduler}/cron.d.ts +0 -0
  647. /package/dist/{scheduler → server/scheduler}/index.d.ts +0 -0
  648. /package/dist/{types.d.ts → server/types.d.ts} +0 -0
  649. /package/dist/{ui → server/ui}/html-safe.d.ts +0 -0
  650. /package/dist/{user → server/user}/index.d.ts +0 -0
  651. /package/dist/{user → server/user}/password.d.ts +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # weifuwu
2
2
 
3
- **自托管全栈框架** — 一个 npm 包 = 后端 HTTP + 前端 VDOM + 118 组件 + CSS 设计系统 + SaaS 地基(认证 / 消息 / 队列 / AI)。全自研、零构建、消灭样板。
3
+ **自托管全栈框架** — 一个 npm 包 = 后端 HTTP + 前端 VDOM + 129 组件 + CSS 设计系统 + SaaS 地基(认证 / 消息 / 队列 / AI)。全自研、零构建、消灭样板。
4
4
 
5
5
  ```bash
6
6
  npm install weifuwu # 一个依赖,完整应用栈
@@ -28,9 +28,9 @@ npm install weifuwu # 一个依赖,完整应用栈
28
28
  | 层 | 入口 | 能力 |
29
29
  |----|------|------|
30
30
  | 后端 | `weifuwu` | Trie 路由 / 中间件链 / serve / 自研 PG+Redis / SSR / GraphQL / WebSocket |
31
- | 前端 | `weifuwu/ui-dom` | **vdom3 精准事件流引擎**——createRouter(路由)+ createRoot(挂载)+ 事件流(渲染本体:`entity:action` 统一命名、DOM = fold、可回放可断言)+ SSR(事件流序列化);组件=两阶段异步组件 / ctx.params 对齐后端;**weifuwu/components 直接复用**(VNode 契约唯一来源 ui-dom,见 `docs/frontend-ui-dom.md`) |
32
- | 组件 | `weifuwu/components` | 118 个 HTML 原语组件(表单/表格/弹层/AiChat…),引用 `--wf-*` 主题变量 |
33
- | 样式 | `weifuwu/layout` | 66 布局原语 + 156 工具类 + 177 主题 Token,零自定义 CSS 文件 |
31
+ | 前端 | `weifuwu/ui-dom` | **vdom3 精准事件流引擎**——createRouter(路由)+ createRoot(挂载)+ 事件流(渲染本体:`entity:action` 统一命名、DOM = fold、可回放可断言)+ SSR(事件流序列化);组件=两阶段异步组件 / ctx.params 对齐后端;**weifuwu/components 直接复用**(VNode 契约唯一来源 ui-dom,见 `content/guides/ui-dom-guide.md`) |
32
+ | 组件 | `weifuwu/components` | 129 个 HTML 原语组件(表单/表格/弹层/AiChat…),引用 `--wf-*` 主题变量 |
33
+ | 样式 | `weifuwu/layout` | 66 布局原语 + 157 工具类 + 182 主题 Token,零自定义 CSS 文件 |
34
34
  | SaaS 地基 | 随包内置 | rateLimit / email / userSystem / messager / queue / ai → `ctx.*` 一行接入 |
35
35
 
36
36
  > ⚠️ **注意:前后端都有 `ctx.ui`,但用途完全不同**
@@ -96,7 +96,7 @@ npm install weifuwu # 一个依赖,完整应用栈
96
96
 
97
97
  **两阶段组件模型** — 组件 = `async (initProps, ctx) => (props) => Promise<VNode>`。外层工厂只执行一次(mount,可 await 数据),内层 renderFn 每次状态/props 变化时执行(强制异步)。无 class、无 `this`、无 Hook——**位置即语义**:外层天生只跑一次,没有 hooks 规则、没有依赖数组、没有闭包陷阱(详解见[核心概念](#核心概念))。
98
98
 
99
- **render-only 确定性渲染** — 渲染唯一触发 `ctx.ui.render()`(闭包绑定组件),状态是普通对象(`let` + `render()`);跨组件共享用 `createStore` + `ctx.ui.useExternal()`。行为可静态推导,无隐式触发(详见[组件库](docs/components.md))。
99
+ **render-only 确定性渲染** — 渲染唯一触发 `ctx.ui.render()`(闭包绑定组件),状态是普通对象(`let` + `render()`);跨组件共享用 `createStore` + `ctx.ui.useExternal()`。行为可静态推导,无隐式触发(详见[组件库](content/guides/components-guide.md))。
100
100
 
101
101
  **VDOM 输出透明(写 JSX,看 DOM 即真相)** — VDOM 对用户输入零 magic:条件渲染的 false 在 DOM 里是诊断占位注释(`<!--wf-hole: false-->`),数组项 key 与组件实例 id 直接落 DOM(`data-wf-key` / `data-wf-id`)——devtools 看到的 DOM 就是引擎决策的可读输出;非法输入占位 + warn,不崩溃不静默。转化契约唯一清晰:用户写什么,vnode 就是什么,DOM 就长什么样(规则表为内部开发契约)。
102
102
 
@@ -108,15 +108,15 @@ npm install weifuwu # 一个依赖,完整应用栈
108
108
 
109
109
  **AI 是一等公民** — 自研 OpenAI 兼容协议(`docs/ai-contract.md`)+ 零依赖流式客户端 + agent 工具循环 + HITL 人工审批 + embedding 向量化。后端 `ctx.ai` 一个入口:`chat()` / `stream()` / `agent()`(`stream(messages, { emit })` emitter 抽象——事件可接任意通道,`runToResult()` 结构化结果)/ `approve()` / `embed()` / `embedMany()`;前端 `ctx.ui.useChat()`(会话语义)+ `AiChat` 组件(标准对话界面)——流式 token / 工具调用卡 / 审批卡开箱即用,协议对页面完全透明,不用 ai-sdk。
110
110
 
111
- **SaaS 地基随包内置** — rateLimit(限流)/ email(邮件)/ userSystem(用户认证)/ messager(消息系统)/ queue(可靠队列)以中间件形态随包提供,`app.use(...)` 一行接入(详见[SaaS 地基模块](docs/saas.md))。互相咬合成协作基础:身份(userSystem)+ 消息(messager)的组合让「谁能跟谁说话、消息如何送达」天然对齐,不再需要第三套权限系统。
111
+ **SaaS 地基随包内置** — rateLimit(限流)/ email(邮件)/ userSystem(用户认证)/ messager(消息系统)/ queue(可靠队列)以中间件形态随包提供,`app.use(...)` 一行接入(详见[SaaS 地基模块](content/guides/saas-guide.md))。互相咬合成协作基础:身份(userSystem)+ 消息(messager)的组合让「谁能跟谁说话、消息如何送达」天然对齐,不再需要第三套权限系统。
112
112
 
113
113
  **机制与策略分离** — 框架管**机制**(token 怎么签、消息怎么送达、agent 循环怎么跑),开发者管**策略**(谁能建群、租户隔离 SQL、技能注册表)。这是「诚实裁剪」的积极面:**框架不越界,应用层不被绑架**——agent-platform 迁移验证了边界:多租户隔离(`WHERE tenant_id`)、技能编排、聊天产品模型留在应用层,框架守住通用能力(auth / ai / messager / UI / 数据管道)。
114
114
 
115
- **零自定义 CSS 设计系统** — 一个 CSS 文件 = 双层 Token + 布局原语 + 工具类 + 组件样式。业务页面不写 style.css:组件 + `wf-*` 原语写业务,主题改一个值(`--wf-brand-seed` 换肤 / `data-preset` 预设 / `--wf-btn-radius` 钩子),暗色自动(详见[布局系统](docs/layout.md)与[主题配置](docs/styling.md))。
115
+ **零自定义 CSS 设计系统** — 一个 CSS 文件 = 双层 Token + 布局原语 + 工具类 + 组件样式。业务页面不写 style.css:组件 + `wf-*` 原语写业务,主题改一个值(`--wf-brand-seed` 换肤 / `data-preset` 预设 / `--wf-btn-radius` 钩子),暗色自动(详见[布局系统](content/guides/layout-guide.md)与[主题配置](content/guides/styling.md))。
116
116
 
117
117
  **自研数据层** — `ctx.sql`(PG v3 协议)与 `ctx.redis`(RESP2 协议)为**自研客户端**:确定性输出、行为可预测、统一错误模型。jsonb 自动解码、TTL 安全 API、schema 写前校验——高频痛点(双重编码/parseRow 样板/`'EX'` 参数顺序)从根上消除。
118
118
 
119
- > **实践验证**:多租户 AI 平台(`apps/agent-platform`——14 页 + 部门聊天 + 知识库 + HITL 审批)已完全运行在框架上:auth(userSystem)/ AI 引擎(ai)/ 实时消息(messager)/ UI(118 组件)/ 数据管道(ctx.api)零自研替代。框架哲学(中间件注入、诚实裁剪、机制与策略分离)经受住了真实复杂应用的检验——这也是我们确定「哪些进框架、哪些留应用层」的依据。
119
+ > **实践验证**:多租户 AI 平台(`apps/agent-platform`——14 页 + 部门聊天 + 知识库 + HITL 审批)已完全运行在框架上:auth(userSystem)/ AI 引擎(ai)/ 实时消息(messager)/ UI(129 组件)/ 数据管道(ctx.api)零自研替代。框架哲学(中间件注入、诚实裁剪、机制与策略分离)经受住了真实复杂应用的检验——这也是我们确定「哪些进框架、哪些留应用层」的依据。
120
120
 
121
121
  ---
122
122
 
@@ -232,9 +232,9 @@ createRouter(routes, root) // 之后正常交
232
232
  ### 30 秒体验(跑现有 demo)
233
233
 
234
234
  ```bash
235
- # ① 组件 cheatsheet——118 组件全部可交互预览(零依赖,5 秒起)
236
- cd apps/components-demo && node server.ts
237
- # 打开 http://localhost:3000
235
+ # ① showcase——weifuwu 发展引擎:组件/页面/应用/后端/能力/指南 一站式(活体 demo + 文档同源)
236
+ cd apps/showcase && node server.ts
237
+ # 打开 http://localhost:3200(LLM: curl /llms.txt)
238
238
 
239
239
  # ② 全栈 SaaS 示例——多租户 AI 平台(auth / AI 对话 / 部门聊天 / 知识库 / HITL 审批)
240
240
  docker compose up -d postgres redis # 仓库根目录
@@ -244,6 +244,15 @@ cd apps/agent-platform && npm run seed && npm run dev
244
244
 
245
245
  > 想**零后端、零构建**最快跑起来?直接跳到下面的「CDN 快速原型」——一个 `.html` 文件即可。
246
246
 
247
+ ### 📦 安装后离线文档(content/ 随包发布)
248
+
249
+ ```bash
250
+ npm i weifuwu
251
+ npx weifuwu docs # → http://localhost:4000 本地文档站(组件 API 表/纪律/示例/验证)
252
+ ```
253
+
254
+ `node_modules/weifuwu/content/` 是完整文档库(逐组件文档 + 页面/应用模板 + 后端能力 + 指南 + 选型决策树 + 人类质量标准)——版本永远匹配安装的代码;`examples/` 是可复制源码(页面模式 + 应用模板 todo/auth/admin/multi)。LLM 开发路径:`read node_modules/weifuwu/content/index.md` → 目标 .md → 复制 examples/ 源码。
255
+
247
256
  ---
248
257
 
249
258
  ## CDN 快速原型(零构建、纯 HTML)
@@ -321,8 +330,8 @@ cd apps/agent-platform && npm run seed && npm run dev
321
330
  | 资源 | CDN 地址 | 说明 |
322
331
  |------|---------|------|
323
332
  | `weifuwu/ui-dom` | `https://unpkg.com/weifuwu@latest/dist/ui-dom/index.js` | 前端运行时(createRouter, createRoot, h, 事件流, 状态管理等) |
324
- | `weifuwu/components` | `https://unpkg.com/weifuwu@latest/dist/components/index.js` | 118 个 UI 组件(Button, Card, Table, Modal, Icon 等) |
325
- | `weifuwu/components` | `https://unpkg.com/weifuwu@latest/dist/components/style.css` | 组件 CSS + 177 个主题 Token + 66 个布局原语 + 156 个工具类 |
333
+ | `weifuwu/components` | `https://unpkg.com/weifuwu@latest/dist/components/index.js` | 129 个 UI 组件(Button, Card, Table, Modal, Icon 等) |
334
+ | `weifuwu/components` | `https://unpkg.com/weifuwu@latest/dist/components/style.css` | 组件 CSS + 182 个主题 Token + 66 个布局原语 + 157 个工具类 |
326
335
  | 独立布局系统 | `https://unpkg.com/weifuwu@latest/dist/layout/weifuwu-layout.css` | 仅 CSS 布局,不依赖 JS |
327
336
 
328
337
 
@@ -363,9 +372,9 @@ cd apps/agent-platform && npm run seed && npm run dev
363
372
  | `weifuwu/ui-dom` | **i18n** | 国际化中间件(运行时切换语言) | — |
364
373
  | `weifuwu/ui-dom` | **renderToEvents / eventsToHtml / serializeEvents** | 服务端渲染:vnode → 事件流 → HTML + `__DATA__` 序列化(客户端 `replay` 收养) | — |
365
374
  | `weifuwu/ui-dom` | **useChat / AiChat 原语** | AI 会话(流式/工具调用/HITL) | — |
366
- | `weifuwu/ui-dom` | **事件原语** | `usePopup`(统一弹窗能力层)/ `usePresence` / `useInView` / `useScrollPosition` / `useGlobalKey` / `useDrag` / `useDragDrop` / `useAnimationEnd` / `useTween` / `useReducedMotion`(浏览器事件/动画统一入口,见 [docs/mobile.md](docs/mobile.md)) | — |
367
- | `weifuwu/components` | **113 个组件** | Button/Table/Modal/Confirm/Toast/... + `confirm()` / `toast()` 命令式中间件 | weifuwu/ui-dom |
368
- | `weifuwu/layout` | **CSS 布局** | 66 个布局原语 + 156 个工具类 + 177 个主题 Token(也支持 `weifuwu/layout/style.css`) | — |
375
+ | `weifuwu/ui-dom` | **事件原语** | `usePopup`(统一弹窗能力层)/ `usePresence` / `useInView` / `useScrollPosition` / `useGlobalKey` / `useDrag` / `useDragDrop` / `useAnimationEnd` / `useTween` / `useReducedMotion`(浏览器事件/动画统一入口,见 [content/guides/mobile-guide.md](content/guides/mobile-guide.md)) | — |
376
+ | `weifuwu/components` | **129 个组件** | Button/Table/Modal/Confirm/Toast/... + `confirm()` / `toast()` 命令式中间件 | weifuwu/ui-dom |
377
+ | `weifuwu/layout` | **CSS 布局** | 66 个布局原语 + 157 个工具类 + 182 个主题 Token(也支持 `weifuwu/layout/style.css`) | — |
369
378
 
370
379
  ---
371
380
 
@@ -375,23 +384,23 @@ cd apps/agent-platform && npm run seed && npm run dev
375
384
 
376
385
  | 任务 | 用 | 位置 |
377
386
  |------|-----|------|
378
- | 起 HTTP 服务 + 路由 | `serve(app)` + `new Router()` + `app.get/post/...` | [docs/server.md](docs/server.md) |
379
- | 渲染页面(SPA / SSR) | `createRouter(routes, root, { ctx })`;SSR = `renderToEvents` → `eventsToHtml` + `replay`(事件流形态) | [docs/frontend-ui-dom.md](docs/frontend-ui-dom.md) · [docs/frontend.md](docs/frontend.md) |
380
- | 数据持久化 | `postgres()` → `` ctx.sql`SELECT *` `` · `redis()` → `ctx.redis` · **`sql.query`**(Query Language AST 双后端) | [docs/data.md](docs/data.md) |
381
- | 零数据库开发/测试 | `createMemorySql()` / `MemoryRedis`——契约同真库、替换成本为零 | [docs/data.md](docs/data.md) |
382
- | 数据管道(SSR 预取/hydration/SPA) | `ctx.data.get(key)` + async 组件 | [docs/frontend.md](docs/frontend.md) |
383
- | 用户注册/登录/会话/多租户 | `userSystem()` → `ctx.auth` + `/api/auth/*` | [docs/saas.md](docs/saas.md) |
384
- | 限流防爆破 | `rateLimit()` + `ctx.limit()` | [docs/saas.md](docs/saas.md) |
385
- | 发邮件 | `email()` → `ctx.email`(Resend/SMTP) | [docs/saas.md](docs/saas.md) |
386
- | 实时消息/聊天/通知 | `messager()` → `ctx.msg` + `app.ws` | [docs/saas.md](docs/saas.md) |
387
- | 后台任务/定时 | `queue()` → `ctx.queue` · `scheduler()` → `ctx.schedule/cron` | [docs/saas.md](docs/saas.md) |
388
- | AI 对话 / Agent / HITL 审批 | `ai()` → `ctx.ai` + `ctx.ui.useChat()` + `AiChat` | [docs/saas.md](docs/saas.md) |
389
- | GraphQL / WebSocket | `app.graphql(handler)` · `app.ws(path, handler)` | [docs/realtime.md](docs/realtime.md) |
390
- | 前端 UI 组件 | `weifuwu/components`(113 个:Button/Table/Modal/AiChat/...) | [docs/components.md](docs/components.md) |
391
- | 布局/主题/暗色 | `weifuwu/layout`(58 原语 + 156 工具类 + 177 Token) | [docs/layout.md](docs/layout.md) |
392
- | 样式定制(零自定义 CSS) | `--wf-*` 变量覆盖 + 组件定制钩子 | [docs/styling.md](docs/styling.md) |
393
- | 移动端适配(tap/长按/键盘/弹层) | `usePopup` / `useHoverCapable` / `useLongPress` / `useVisualViewport` | [docs/mobile.md](docs/mobile.md) |
394
- | 前后端类型安全中间件 | `createMiddleware`(声明注入即类型化) | [docs/server.md](docs/server.md) |
387
+ | 起 HTTP 服务 + 路由 | `serve(app)` + `new Router()` + `app.get/post/...` | [content/guides/server-guide.md](content/guides/server-guide.md) |
388
+ | 渲染页面(SPA / SSR) | `createRouter(routes, root, { ctx })`;SSR = `renderToEvents` → `eventsToHtml` + `replay`(事件流形态) | [content/guides/ui-dom-guide.md](content/guides/ui-dom-guide.md) · [content/guides/frontend.md](content/guides/frontend.md) |
389
+ | 数据持久化 | `postgres()` → `` ctx.sql`SELECT *` `` · `redis()` → `ctx.redis` · **`sql.query`**(Query Language AST 双后端) | [content/guides/data-guide.md](content/guides/data-guide.md) |
390
+ | 零数据库开发/测试 | `createMemorySql()` / `MemoryRedis`——契约同真库、替换成本为零 | [content/guides/data-guide.md](content/guides/data-guide.md) |
391
+ | 数据管道(SSR 预取/hydration/SPA) | `ctx.data.get(key)` + async 组件 | [content/guides/frontend.md](content/guides/frontend.md) |
392
+ | 用户注册/登录/会话/多租户 | `userSystem()` → `ctx.auth` + `/api/auth/*` | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
393
+ | 限流防爆破 | `rateLimit()` + `ctx.limit()` | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
394
+ | 发邮件 | `email()` → `ctx.email`(Resend/SMTP) | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
395
+ | 实时消息/聊天/通知 | `messager()` → `ctx.msg` + `app.ws` | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
396
+ | 后台任务/定时 | `queue()` → `ctx.queue` · `scheduler()` → `ctx.schedule/cron` | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
397
+ | AI 对话 / Agent / HITL 审批 | `ai()` → `ctx.ai` + `ctx.ui.useChat()` + `AiChat` | [content/guides/saas-guide.md](content/guides/saas-guide.md) |
398
+ | GraphQL / WebSocket | `app.graphql(handler)` · `app.ws(path, handler)` | [content/guides/realtime-guide.md](content/guides/realtime-guide.md) |
399
+ | 前端 UI 组件 | `weifuwu/components`(129 个:Button/Table/Modal/AiChat/...) | [content/guides/components-guide.md](content/guides/components-guide.md) |
400
+ | 布局/主题/暗色 | `weifuwu/layout`(58 原语 + 157 工具类 + 182 Token) | [content/guides/layout-guide.md](content/guides/layout-guide.md) |
401
+ | 样式定制(零自定义 CSS) | `--wf-*` 变量覆盖 + 组件定制钩子 | [content/guides/styling.md](content/guides/styling.md) |
402
+ | 移动端适配(tap/长按/键盘/弹层) | `usePopup` / `useHoverCapable` / `useLongPress` / `useVisualViewport` | [content/guides/mobile-guide.md](content/guides/mobile-guide.md) |
403
+ | 前后端类型安全中间件 | `createMiddleware`(声明注入即类型化) | [content/guides/server-guide.md](content/guides/server-guide.md) |
395
404
 
396
405
  ---
397
406
 
@@ -505,23 +514,23 @@ README 只保留入门内容(设计理念 / 快速开始 / 核心概念 / 模
505
514
 
506
515
  | 文档 | 内容 |
507
516
  |------|------|
508
- | [docs/server.md](docs/server.md) | HTTP 服务层:Router / serve / cors / serveStatic / HttpError / 响应辅助 / parseBody |
509
- | [docs/data.md](docs/data.md) | 数据层:postgres(PG v3 自研协议)/ redis(RESP2 自研协议)/ Query Language(AST 双后端)/ Memory 实现(零数据库)/ 测试零外部依赖 |
510
- | [docs/realtime.md](docs/realtime.md) | 实时与渲染:scheduler / ui(SSR + JS/CSS 编译)/ graphql / WebSocket |
511
- | [docs/saas.md](docs/saas.md) | SaaS 地基:rateLimit / email / userSystem / messager / queue / ai |
517
+ | [content/guides/server-guide.md](content/guides/server-guide.md) | HTTP 服务层:Router / serve / cors / serveStatic / HttpError / 响应辅助 / parseBody |
518
+ | [content/guides/data-guide.md](content/guides/data-guide.md) | 数据层:postgres(PG v3 自研协议)/ redis(RESP2 自研协议)/ Query Language(AST 双后端)/ Memory 实现(零数据库)/ 测试零外部依赖 |
519
+ | [content/guides/realtime-guide.md](content/guides/realtime-guide.md) | 实时与渲染:scheduler / ui(SSR + JS/CSS 编译)/ graphql / WebSocket |
520
+ | [content/guides/saas-guide.md](content/guides/saas-guide.md) | SaaS 地基:rateLimit / email / userSystem / messager / queue / ai |
512
521
  | [docs/ai-contract.md](docs/ai-contract.md) | AI Stream Protocol:wf: 事件(SSE 下行 + POST 上行)——流式/工具/审批 |
513
522
 
514
523
  ### 前端开发者
515
524
 
516
525
  | 文档 | 内容 |
517
526
  |------|------|
518
- | [docs/frontend.md](docs/frontend.md) | 前端核心:应用引导(createRouter/createRoot——vdom3 事件流)/ 组件模型 / 异步组件 / 状态管理 / 条件与列表 / ref / 类型(weifuwu/client 已并入 ui-dom) |
519
- | [docs/frontend-ui-dom.md](docs/frontend-ui-dom.md) | **ui-dom**:vdom3 精准事件流引擎(createRouter/createRoot + 事件流)——components 复用 + SSR(事件流形态)(前端唯一运行时) |
520
- | [docs/frontend-middleware.md](docs/frontend-middleware.md) | 前端中间件:router / api / auth / ws / i18n / ErrorBoundary / confirm / toast / ScrollLock / extendCtx |
521
- | [docs/components.md](docs/components.md) | 组件库(113 个组件 + 使用示例 + 组件列表) |
522
- | [docs/layout.md](docs/layout.md) | 布局系统:66 个布局原语 + 156 个工具类 + 177 个主题 Token |
527
+ | [content/guides/frontend.md](content/guides/frontend.md) | 前端核心:应用引导(createRouter/createRoot——vdom3 事件流)/ 组件模型 / 异步组件 / 状态管理 / 条件与列表 / ref / 类型(weifuwu/client 已并入 ui-dom) |
528
+ | [content/guides/ui-dom-guide.md](content/guides/ui-dom-guide.md) | **ui-dom**:vdom3 精准事件流引擎(createRouter/createRoot + 事件流)——components 复用 + SSR(事件流形态)(前端唯一运行时) |
529
+ | [content/guides/middleware.md](content/guides/middleware.md) | 前端中间件:router / api / auth / ws / i18n / ErrorBoundary / confirm / toast / ScrollLock / extendCtx |
530
+ | [content/guides/components-guide.md](content/guides/components-guide.md) | 组件库(129 个组件 + 使用示例 + 组件列表) |
531
+ | [content/guides/layout-guide.md](content/guides/layout-guide.md) | 布局系统:66 个布局原语 + 157 个工具类 + 182 个主题 Token |
523
532
  | [docs/style-guide.md](docs/style-guide.md) | 样式学习路径与命名规范:三档学习(组件 → 原语 → 速查)|
524
- | [docs/styling.md](docs/styling.md) | 样式定制指南:零自定义 CSS 模式 / 暗色 / 组件级覆盖 / 作用域主题 |
533
+ | [content/guides/styling.md](content/guides/styling.md) | 样式定制指南:零自定义 CSS 模式 / 暗色 / 组件级覆盖 / 作用域主题 |
525
534
 
526
535
  ### 通用
527
536
 
@@ -529,8 +538,10 @@ README 只保留入门内容(设计理念 / 快速开始 / 核心概念 / 模
529
538
  |------|------|
530
539
  | [docs/examples.md](docs/examples.md) | 组合场景示例:登录表单 / 数据列表 + 搜索 / 消息提示 |
531
540
  | [docs/environment.md](docs/environment.md) | 环境变量与开发命令 |
532
- | [docs/mobile.md](docs/mobile.md) | 移动端开发指南:断点 / 44px 命中区 / usePopup / 手势 / safe-area |
541
+ | [content/guides/mobile-guide.md](content/guides/mobile-guide.md) | 移动端开发指南:断点 / 44px 命中区 / usePopup / 手势 / safe-area |
533
542
  | [docs/components-map.md](docs/components-map.md) | 组件速查:weifuwu ↔ antd / Element Plus / shadcn 对应 + 迁移路径 |
534
- | [docs/custom-components.md](docs/custom-components.md) | 自定义组件开发指南:usePopup / useControlled / 动画 / AI 组件 / 类型纪律 |
543
+ | [content/guides/custom-component.md](content/guides/custom-component.md) | 自定义组件开发指南:usePopup / useControlled / 动画 / AI 组件 / 类型纪律 |
535
544
 
545
+ > **贡献**:见 [CONTRIBUTING.md](CONTRIBUTING.md)——四条路径(文档/测试/demo/组件)+ 质量防线。
546
+ >
536
547
  > `docs/` 用户文档随 npm 包发布(`files: ['dist/', 'README.md', 'docs/']`)——`node_modules/weifuwu/docs` 可离线查阅。
@@ -0,0 +1,55 @@
1
+ # 管理后台 · apps
2
+
3
+ ## 概述
4
+
5
+ AppShell + Dashboard/Table/Form 多页——layout 包裹复用 + 主题。后端:rateLimit + 查询端点。源于 agent-platform 架构提炼。
6
+
7
+
8
+ ## 用到的页面模式
9
+ - [app-shell](../patterns/app-shell.md)
10
+
11
+ ## 用到的组件
12
+ - [Layout](../components/layout.md)
13
+ - [Menu](../components/menu.md)
14
+ - [NavMenu](../components/navmenu.md)
15
+ - [Table](../components/table.md)
16
+ - [Form](../components/form.md)
17
+ - [ThemeSwitch](../components/themeswitch.md)
18
+ - [StatCard](../components/statcard.md)
19
+ - [Chart](../components/chart.md)
20
+ - [Badge](../components/badge.md)
21
+ - [Avatar](../components/avatar.md)
22
+ - [Tag](../components/tag.md)
23
+
24
+ ## 源码
25
+
26
+ > `examples/apps/admin/` ——完整可运行(随 npm 包发布)
27
+
28
+ ## 目录结构
29
+
30
+ | 文件 | 职责 |
31
+ |------|------|
32
+ | `app.tsx` | 前端:AppShell(Layout 骨架 + Menu)+ DashboardPage/OrdersPage + 路由 layout 包裹 |
33
+ | `api.ts` | 后端:registerAdminApi——订单查询 + 种子数据 |
34
+ | `server.ts` | 独立入口(:3302) |
35
+ | `main.tsx` | 独立前端入口 |
36
+
37
+ ## 改造指南(新手从跑起来到改成自己的)
38
+
39
+ - 1. 换业务数据:api.ts 的 admin_orders 表 + 种子数据 → 自己的业务表(或接真实 postgres)
40
+ - 2. 加页面:app.tsx 路由表加 { path, render, layout: AppShell }——侧栏 Menu items 同步加
41
+ - 3. 改菜单/品牌:AppShell 里 Menu items + 标题文案
42
+ - 4. 表格交互:Table 组件文档(sortable/rowSelection——受控 props 配回调)
43
+ - 5. 参考生产级:apps/agent-platform/(多租户/权限/商业化真实架构)
44
+
45
+ ## 质量标准
46
+
47
+ - [x] 键盘可达
48
+ - [x] 侧栏折叠
49
+ - [x] 表格排序
50
+ - [x] 亮暗主题
51
+ - [x] loading/empty 态
52
+
53
+ ## 验证
54
+
55
+ > agent-browser 走查:打开 showcase `/apps/admin`(活体嵌入)——列表/新建/保存/删除全流程 + 控制台零错误
@@ -0,0 +1,35 @@
1
+ # agent-platform(生产级) · apps(生产级)
2
+
3
+ ## 概述
4
+
5
+ 多租户 AI Agent 平台——weifuwu 中间件全量消费方(认证/AI/沙箱/工具链/商业化/私有化)。实战驱动框架开发的生产级参考。
6
+
7
+ > **生产级参考**:目录独立于 showcase(apps/agent-platform/),此处为展示层纳入——架构文档 + 源码索引 + 启动方式。
8
+ ## 用到的页面模式
9
+ - (无)
10
+
11
+ ## 用到的组件
12
+ - [AiChat](../components/aichat.md)
13
+ - [AuthPage](../components/authpage.md)
14
+ - [Table](../components/table.md)
15
+ - [Form](../components/form.md)
16
+ - [Modal](../components/modal.md)
17
+ - [Drawer](../components/drawer.md)
18
+ - [Menu](../components/menu.md)
19
+ - [StatCard](../components/statcard.md)
20
+ - [ThemeSwitch](../components/themeswitch.md)
21
+
22
+ ## 源码
23
+
24
+ > 源码见 `apps/agent-platform/`(独立仓库结构——不随包)
25
+
26
+ ## 质量标准
27
+
28
+ - [x] 真实产品
29
+ - [x] 多租户
30
+ - [x] 私有化部署
31
+ - [x] 商业化闭环
32
+
33
+ ## 验证
34
+
35
+ > 独立部署验证(docker + 真实库)——见 apps/agent-platform/README.md
@@ -0,0 +1,49 @@
1
+ # 登录注册 · apps
2
+
3
+ ## 概述
4
+
5
+ 登录/注册 → 受保护页 → 登出:应用级状态(user store)+ 路由守卫 + ctx.data。后端:认证中间件。
6
+
7
+
8
+ ## 用到的页面模式
9
+ - (无)
10
+
11
+ ## 用到的组件
12
+ - [Card](../components/card.md)
13
+ - [Form](../components/form.md)
14
+ - [Input](../components/input.md)
15
+ - [PasswordInput](../components/passwordinput.md)
16
+ - [Button](../components/button.md)
17
+ - [Alert](../components/alert.md)
18
+
19
+ ## 源码
20
+
21
+ > `examples/apps/auth/` ——完整可运行(随 npm 包发布)
22
+
23
+ ## 目录结构
24
+
25
+ | 文件 | 职责 |
26
+ |------|------|
27
+ | `app.tsx` | 前端:AuthFormPage(登录/注册两用)+ 路由守卫 + authStore |
28
+ | `api.ts` | 后端:registerAuthApi——内存用户表 + token 会话 |
29
+ | `server.ts` | 独立入口(:3301) |
30
+ | `main.tsx` | 独立前端入口 |
31
+
32
+ ## 改造指南(新手从跑起来到改成自己的)
33
+
34
+ - 1. 换用户存储:api.ts 的 auth_users 表 → 接 userSystem 中间件(见 content/backend/auth.md)
35
+ - 2. 加受保护页:app.tsx 路由表加页面 + 组件内读 authStore.state.user 做守卫(同 DashboardPage 模式)
36
+ - 3. 改会话持久化:app.tsx 的 ctx.browser.storageSet 已处理——key 名 auth:token 可改
37
+ - 4. 加角色权限:守卫处加角色判断(user 表加 role 字段)
38
+
39
+ ## 质量标准
40
+
41
+ - [x] 键盘可达
42
+ - [x] 表单校验
43
+ - [x] 错误态
44
+ - [x] 会话持久化
45
+ - [x] 零控制台错误
46
+
47
+ ## 验证
48
+
49
+ > agent-browser 走查:打开 showcase `/apps/auth`(活体嵌入)——列表/新建/保存/删除全流程 + 控制台零错误
@@ -0,0 +1,44 @@
1
+ # 应用编排 · apps
2
+
3
+ ## 概述
4
+
5
+ 父应用嵌子应用:registerApp/hApp + app:* 边界事件——子应用独立状态。后端:ws 广播。
6
+
7
+
8
+ ## 用到的页面模式
9
+ - (无)
10
+
11
+ ## 用到的组件
12
+ - [Card](../components/card.md)
13
+ - [Button](../components/button.md)
14
+ - [Input](../components/input.md)
15
+ - [Tag](../components/tag.md)
16
+ - [Tabs](../components/tabs.md)
17
+
18
+ ## 源码
19
+
20
+ > `examples/apps/multi/` ——完整可运行(随 npm 包发布)
21
+
22
+ ## 目录结构
23
+
24
+ | 文件 | 职责 |
25
+ |------|------|
26
+ | `app.tsx` | 前端:registerApp 注册 2 个子应用 + 父应用工作台(h(App, {appId}) 嵌入) |
27
+ | `server.ts` | 独立入口(:3303——纯前端编排无后端 API) |
28
+ | `main.tsx` | 独立前端入口 |
29
+
30
+ ## 改造指南(新手从跑起来到改成自己的)
31
+
32
+ - 1. 加子应用:app.tsx 里 registerApp('my-app', (props, ctx) => h(MyComp, {})) + 父树 h(App, { appId: 'my-app' })
33
+ - 2. 子应用传参:h(App, { appId, props: {...} })——app:update 边界事件(见 content/capabilities/app-node.md)
34
+ - 3. 观察边界事件:stream.subscribe 过滤 e.entity === 'app'(工作台已展示)
35
+
36
+ ## 质量标准
37
+
38
+ - [x] 子应用独立状态
39
+ - [x] 边界事件观测
40
+ - [x] 零控制台错误
41
+
42
+ ## 验证
43
+
44
+ > agent-browser 走查:打开 showcase `/apps/multi`(活体嵌入)——列表/新建/保存/删除全流程 + 控制台零错误
@@ -0,0 +1,51 @@
1
+ # 任务管理 · apps
2
+
3
+ ## 概述
4
+
5
+ 经典 CRUD 应用:列表/详情/新建——多页路由 + createStore 跨页状态 + 表单受控。后端:MemorySql 持久化。
6
+
7
+
8
+ ## 用到的页面模式
9
+ - (无)
10
+
11
+ ## 用到的组件
12
+ - [Button](../components/button.md)
13
+ - [Input](../components/input.md)
14
+ - [Checkbox](../components/checkbox.md)
15
+ - [Form](../components/form.md)
16
+ - [Tag](../components/tag.md)
17
+ - [EmptyState](../components/emptystate.md)
18
+ - [PageHeader](../components/pageheader.md)
19
+
20
+ ## 源码
21
+
22
+ > `examples/apps/todo/` ——完整可运行(随 npm 包发布)
23
+
24
+ ## 目录结构
25
+
26
+ | 文件 | 职责 |
27
+ |------|------|
28
+ | `app.tsx` | 前端:路由表 + 页面组件(TodoList/TodoNew)+ createStore + hash 桥接 |
29
+ | `api.ts` | 后端:registerTodoApi(app, sql)——CRUD 路由(独立/嵌入共享) |
30
+ | `server.ts` | 独立入口:MemorySql + ui + 前端服务(:3300) |
31
+ | `main.tsx` | 独立前端入口:createTodoApp + hashchange 桥接 |
32
+
33
+ ## 改造指南(新手从跑起来到改成自己的)
34
+
35
+ - 1. 改数据模型:编辑 api.ts 的 SQL 表结构(todos 表字段)——MemorySql 与 postgres() 同契约,换库只改 server.ts 一行
36
+ - 2. 加页面:app.tsx 的路由表加一行 { path, render } + 新建页面组件(组件写法见 guides/component-model.md)
37
+ - 3. 改交互/状态:页面组件内 let + ctx.render()(render-only——见 guides/render-only.md)
38
+ - 4. 换样式:组件文档「用法示例」+ layout 原语(wf-* 类,零手写 CSS)
39
+ - 5. 接真实后端:server.ts 把 createMemorySql() 换成 postgres()(见 content/backend/sql.md)
40
+
41
+ ## 质量标准
42
+
43
+ - [x] 键盘可达
44
+ - [x] 375/768 无溢出
45
+ - [x] 亮暗主题
46
+ - [x] loading/error/empty 态
47
+ - [x] 零控制台错误
48
+
49
+ ## 验证
50
+
51
+ > agent-browser 走查:打开 showcase `/apps/todo`(活体嵌入)——列表/新建/保存/删除全流程 + 控制台零错误
@@ -0,0 +1,28 @@
1
+ # ctx.ai(chat/stream/agent/approve) · backend
2
+
3
+ ## 概述
4
+
5
+ AI 对话全链路:流式 token / 工具调用 / HITL 审批——wf: 协议对页面透明
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.ai`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/chat
15
+ ```
16
+
17
+ ## 关联组件
18
+ - [AiChat](../components/aichat.md)
19
+ - [ToolCallCard](../components/toolcallcard.md)
20
+ - [ApprovalCard](../components/approvalcard.md)
21
+
22
+ ## 文档素材
23
+
24
+ 来源:`docs/ai-contract.md`(迁移至本节——P3)
25
+
26
+ ## 验证
27
+
28
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,20 @@
1
+ # 认证(ctx.auth/user) · backend
2
+
3
+ ## 概述
4
+
5
+ 登录态/会话/权限——userSystem 集成
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.auth`
10
+
11
+ ## 关联组件
12
+ - [AuthPage](../components/authpage.md)
13
+
14
+ ## 文档素材
15
+
16
+ 来源:`content/guides/saas-guide.md`(迁移至本节——P3)
17
+
18
+ ## 验证
19
+
20
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,23 @@
1
+ # 邮件(ctx.email) · backend
2
+
3
+ ## 概述
4
+
5
+ Mailer 契约——演示用内存捕获回显(mock 输出可读)
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.email`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/demo/email
15
+ ```
16
+
17
+ ## 文档素材
18
+
19
+ 来源:`content/guides/saas-guide.md`(迁移至本节——P3)
20
+
21
+ ## 验证
22
+
23
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,23 @@
1
+ # GraphQL · backend
2
+
3
+ ## 概述
4
+
5
+ app.graphql(handler)——SDL + resolvers map 绑定
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`—`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/demo/graphql
15
+ ```
16
+
17
+ ## 文档素材
18
+
19
+ 来源:`content/guides/server-guide.md`(迁移至本节——P3)
20
+
21
+ ## 验证
22
+
23
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,23 @@
1
+ # HTTP 原语 · backend
2
+
3
+ ## 概述
4
+
5
+ Request/Response 标准接口 + SSE + CORS + 静态服务
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`—`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/demo/http
15
+ ```
16
+
17
+ ## 文档素材
18
+
19
+ 来源:`content/guides/server-guide.md`(迁移至本节——P3)
20
+
21
+ ## 验证
22
+
23
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,23 @@
1
+ # rateLimit(ctx.limit) · backend
2
+
3
+ ## 概述
4
+
5
+ 限流中间件——超额返回 429(演示端点轻阈值)
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.limit`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/demo/limit
15
+ ```
16
+
17
+ ## 文档素材
18
+
19
+ 来源:`content/guides/saas-guide.md`(迁移至本节——P3)
20
+
21
+ ## 验证
22
+
23
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,17 @@
1
+ # ctx 注入链 · backend
2
+
3
+ ## 概述
4
+
5
+ 中间件面注入 ctx.sql/redis/ui/api/auth/ws/limit/email/queue/cron/ai——装配即依赖注入
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.*`
10
+
11
+ ## 文档素材
12
+
13
+ 来源:`content/guides/middleware.md`(迁移至本节——P3)
14
+
15
+ ## 验证
16
+
17
+ > curl 活体端点断言响应(P2 填充具体断言)
@@ -0,0 +1,23 @@
1
+ # 任务队列(ctx.queue) · backend
2
+
3
+ ## 概述
4
+
5
+ QueueClientModule——池命令 + 阻塞 worker(注入 Redis 模式)
6
+
7
+ ## 装配
8
+
9
+ 中间件注入键:`ctx.queue`
10
+
11
+ ## 活体端点
12
+
13
+ ```bash
14
+ curl /api/demo/queue
15
+ ```
16
+
17
+ ## 文档素材
18
+
19
+ 来源:`content/guides/saas-guide.md`(迁移至本节——P3)
20
+
21
+ ## 验证
22
+
23
+ > curl 活体端点断言响应(P2 填充具体断言)