@nocobase/plugin-ai 2.2.0-beta.9 → 2.3.0-alpha.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 (437) hide show
  1. package/client-v2.d.ts +1 -0
  2. package/dist/ai/docs/nocobase/ai-employees/scenarios/company-background-research.md +125 -0
  3. package/dist/ai/docs/nocobase/building-tips/operations-dashboard.md +513 -0
  4. package/dist/ai/docs/nocobase/file-manager/stable-url.md +87 -0
  5. package/dist/ai/docs/nocobase/file-manager/storage/local.md +3 -1
  6. package/dist/ai/docs/nocobase/get-started/deployment/production.md +24 -2
  7. package/dist/ai/docs/nocobase/get-started/installation/docker-caddy.mdx +3 -0
  8. package/dist/ai/docs/nocobase/get-started/installation/docker-nginx.mdx +3 -0
  9. package/dist/ai/docs/nocobase/get-started/installation/docker.mdx +27 -3
  10. package/dist/ai/docs/nocobase/get-started/installation/env.md +33 -0
  11. package/dist/ai/docs/nocobase/index.md +1 -1
  12. package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/comment.md +107 -0
  13. package/dist/ai/docs/nocobase/interface-builder/index.md +7 -6
  14. package/dist/ai/docs/nocobase/interface-builder/ui-layout/desktop.md +97 -0
  15. package/dist/ai/docs/nocobase/interface-builder/ui-layout/index.md +50 -0
  16. package/dist/ai/docs/nocobase/interface-builder/ui-layout/mobile.md +133 -0
  17. package/dist/ai/docs/nocobase/multi-app/multi-app-vs-multi-portal-vs-multi-space.md +159 -0
  18. package/dist/ai/docs/nocobase/multi-app/multi-portal/index.md +195 -0
  19. package/dist/ai/docs/nocobase/nocobase-cli/production/index.md +10 -0
  20. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/caddy.md +15 -2
  21. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/index.md +1 -1
  22. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/nginx.md +16 -2
  23. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
  24. package/dist/ai/docs/nocobase/runjs/context/ai.md +206 -0
  25. package/dist/ai/docs/nocobase/security/guide.md +23 -0
  26. package/dist/ai/docs/nocobase/tutorials/index.md +20 -1
  27. package/dist/ai/docs/nocobase/workflow/development/api.md +259 -77
  28. package/dist/ai/docs/nocobase/workflow/development/index.md +2 -1
  29. package/dist/ai/docs/nocobase/workflow/development/migration.md +319 -0
  30. package/dist/ai/docs/nocobase/workflow/development/node.md +84 -51
  31. package/dist/ai/docs/nocobase/workflow/development/trigger.md +122 -20
  32. package/dist/ai/tools/formFiller.js +4 -3
  33. package/dist/ai/tools/subAgentWebSearch.js +20 -15
  34. package/dist/client/23.65ea8c37cd4b884b.js +10 -0
  35. package/dist/client/264.cc98933ef65608b6.js +10 -0
  36. package/dist/client/336.7a8a8853196ad779.js +11 -0
  37. package/dist/client/372.40eb52905e3f3049.js +10 -0
  38. package/dist/client/416.92b74ca47e4099c4.js +10 -0
  39. package/dist/client/446.d63c38d0309fe250.js +10 -0
  40. package/dist/client/525.203778500aca5d05.js +10 -0
  41. package/dist/client/663.680bcf6272a8504d.js +10 -0
  42. package/dist/client/681.399948c18d753667.js +10 -0
  43. package/dist/client/705.380279da896021fb.js +10 -0
  44. package/dist/client/ai-employees/1.x/selector/AIContextCollector.d.ts +1 -4
  45. package/dist/client/ai-employees/permissions/PermissionsTab.d.ts +21 -5
  46. package/dist/client/index.d.ts +15 -20
  47. package/dist/client/index.js +8 -8
  48. package/dist/client/workflow/nodes/employee/index.d.ts +2 -23
  49. package/dist/client/workflow/nodes/llm/index.d.ts +2 -52
  50. package/dist/client/workflow/triggers/ai-employee/index.d.ts +2 -83
  51. package/dist/client-v2/23.1bcb6986b40723d8.js +10 -0
  52. package/dist/client-v2/264.be92ff6a4d2612f1.js +10 -0
  53. package/dist/client-v2/336.e406470429e0670e.js +11 -0
  54. package/dist/client-v2/372.8cc3fde09c9bec77.js +10 -0
  55. package/dist/client-v2/406.341be51205c674e0.js +10 -0
  56. package/dist/client-v2/416.0e1c2d9cde43b83d.js +10 -0
  57. package/dist/client-v2/446.073d450882db29fd.js +10 -0
  58. package/dist/client-v2/457.d72febb89e88fc00.js +10 -0
  59. package/dist/client-v2/663.342341f0b2b412d8.js +10 -0
  60. package/dist/client-v2/681.082f4f1c7b841983.js +10 -0
  61. package/dist/client-v2/705.1d10027ff8cfdf79.js +10 -0
  62. package/dist/{client/ai-employees/admin/AvatarSelect.d.ts → client-v2/ai-employees/AIEmployeeDropdown.d.ts} +8 -9
  63. package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +9 -2
  64. package/dist/{client → client-v2}/ai-employees/AddContextButton.d.ts +1 -1
  65. package/dist/{client → client-v2}/ai-employees/ai-coding/AICodingButton.d.ts +2 -1
  66. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Actions.d.ts +2 -4
  67. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/AddLLMModal.d.ts +2 -4
  68. package/dist/client-v2/ai-employees/chatbox/components/Attachments.d.ts +27 -0
  69. package/dist/{client/ai-employees/permissions/Permissions.d.ts → client-v2/ai-employees/chatbox/components/ChatBox.d.ts} +2 -2
  70. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatBoxLayout.d.ts +1 -1
  71. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ContextItem.d.ts +1 -1
  72. package/dist/{client/ai-employees/admin/Employees.d.ts → client-v2/ai-employees/chatbox/components/DebugPanel.d.ts} +1 -1
  73. package/dist/{client/ai-employees/chatbox/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/Markdown.d.ts} +12 -5
  74. package/dist/{client/ai-employees/admin/ProfileSettings.d.ts → client-v2/ai-employees/chatbox/components/MessageContent.d.ts} +3 -2
  75. package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +39 -0
  76. package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolCard.d.ts +7 -5
  77. package/dist/{client/ai-employees/admin/datasource/components/basic → client-v2/ai-employees/chatbox/components}/index.d.ts +5 -2
  78. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChat.d.ts +21 -22
  79. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +3 -2
  80. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +2 -2
  81. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +8 -4
  82. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useToolCallActions.d.ts +1 -1
  83. package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +46 -0
  84. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +1 -1
  85. package/dist/{client → client-v2}/ai-employees/chatbox/model.d.ts +9 -2
  86. package/dist/client-v2/ai-employees/chatbox/roles.d.ts +162 -0
  87. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +1 -49
  88. package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +2 -19
  89. package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +1 -46
  90. package/dist/{client → client-v2}/ai-employees/chatbox/stores/chat-tool-call.d.ts +1 -15
  91. package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +30 -0
  92. package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +31 -3
  93. package/dist/{client/ai-employees/chatbox/conversations/common.d.ts → client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts} +21 -4
  94. package/dist/client-v2/ai-employees/chatbox/utils/normalizeTriggerTaskOptions.d.ts +19 -0
  95. package/dist/{client → client-v2}/ai-employees/chatbox/utils.d.ts +26 -6
  96. package/dist/{client/ai-employees/data-visualization/context.d.ts → client-v2/ai-employees/context/chart-config.d.ts} +1 -1
  97. package/dist/{client → client-v2}/ai-employees/context/code-editor.d.ts +1 -1
  98. package/dist/{client → client-v2}/ai-employees/context/datasource.d.ts +1 -1
  99. package/dist/{client → client-v2}/ai-employees/context/flow-models.d.ts +1 -1
  100. package/dist/{client/ai-employees/admin/datasource/components/DatasourceSettingDetail.d.ts → client-v2/ai-employees/data-modeling/setup.d.ts} +6 -5
  101. package/dist/{client → client-v2}/ai-employees/datasource/DatasourceSelector.d.ts +6 -2
  102. package/dist/{client/ai-employees/admin/datasource/flow-models/DatasourceSettingModel.d.ts → client-v2/ai-employees/flow/index.d.ts} +4 -6
  103. package/dist/{client → client-v2}/ai-employees/form-filler/tools/index.d.ts +1 -1
  104. package/dist/{client → client-v2}/ai-employees/stores/ai-selection.d.ts +4 -4
  105. package/dist/{client → client-v2}/ai-employees/stores/dialog-controller.d.ts +4 -4
  106. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportCard.d.ts +2 -2
  107. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportModal.d.ts +2 -2
  108. package/dist/{client/ai-employees/1.x/selector/withAISelectable.d.ts → client-v2/ai-employees/tools/ChartGeneratorCard.d.ts} +5 -4
  109. package/dist/{client/ai-employees/ai-coding/ui → client-v2/ai-employees/tools}/CodeToolCard.d.ts +1 -1
  110. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingCard.d.ts +3 -5
  111. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingModal.d.ts +4 -6
  112. package/dist/{client/ai-employees/sub-agents/ui → client-v2/ai-employees/tools}/SubAgentDispatchCard.d.ts +4 -9
  113. package/dist/{client/ai-employees/AISettingsProvider.d.ts → client-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts} +6 -8
  114. package/dist/{client/ai-employees/workflow-tasks/ui → client-v2/ai-employees/tools}/WorkflowTaskOutputCard.d.ts +7 -2
  115. package/dist/{client/ai-employees/ai-coding/tools/context-tools.d.ts → client-v2/ai-employees/tools/ai-coding.d.ts} +3 -1
  116. package/dist/client-v2/ai-employees/tools/business-report-utils.d.ts +45 -0
  117. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/CollectionNode.d.ts +2 -3
  118. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Diagram.d.ts +1 -1
  119. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Table.d.ts +2 -2
  120. package/dist/client-v2/ai-employees/tools/data-modeling/legacy-template.d.ts +13 -0
  121. package/dist/client-v2/ai-employees/tools/data-modeling/runtime.d.ts +15 -0
  122. package/dist/{client/ai-employees → client-v2/ai-employees/tools}/data-modeling/types.d.ts +27 -4
  123. package/dist/client-v2/ai-employees/tools/data-modeling/useFieldInterfaceOptions.d.ts +151 -0
  124. package/dist/{client/ai-employees/data-visualization/tools/index.d.ts → client-v2/ai-employees/tools/data-visualization.d.ts} +1 -1
  125. package/dist/client-v2/ai-employees/tools/index.d.ts +32 -0
  126. package/dist/client-v2/ai-employees/types.d.ts +101 -7
  127. package/dist/client-v2/components/RemoteSelect.d.ts +43 -0
  128. package/dist/{client → client-v2}/debug-logger.d.ts +2 -2
  129. package/dist/client-v2/f0053e745af0ad03.svg +50 -0
  130. package/dist/client-v2/index.d.ts +9 -8
  131. package/dist/client-v2/index.js +37 -1
  132. package/dist/client-v2/llm-providers/forms.d.ts +44 -0
  133. package/dist/client-v2/llm-providers/index.d.ts +24 -0
  134. package/dist/{client/ai-employees/ai-coding/tools/index.d.ts → client-v2/llm-services/utils.d.ts} +5 -3
  135. package/dist/client-v2/locale.d.ts +14 -0
  136. package/dist/client-v2/manager/ai-manager.d.ts +55 -0
  137. package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +33 -0
  138. package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +44 -0
  139. package/dist/client-v2/pages/AdminSettingsPage.d.ts +24 -0
  140. package/dist/client-v2/pages/DatasourceSettingsPage.d.ts +62 -0
  141. package/dist/client-v2/pages/EmployeesPage.d.ts +62 -0
  142. package/dist/client-v2/pages/LLMServicesPage.d.ts +75 -0
  143. package/dist/client-v2/pages/MCPSettingsPage.d.ts +73 -0
  144. package/dist/client-v2/pages/drawerWidth.d.ts +10 -0
  145. package/dist/client-v2/pages/permissions/Permissions.d.ts +67 -0
  146. package/dist/client-v2/pages/permissions/PermissionsTab.d.ts +12 -0
  147. package/dist/client-v2/pages/useUnsavedChangesBeforeClose.d.ts +29 -0
  148. package/dist/client-v2/plugin.d.ts +33 -0
  149. package/dist/client-v2/repositories/AIConfigRepository.d.ts +3 -23
  150. package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +20 -0
  151. package/dist/client-v2/workflow/components/FormValueRegistry.d.ts +12 -0
  152. package/dist/{client/components/ListCollapse.d.ts → client-v2/workflow/components/WorkflowListCollapse.d.ts} +4 -4
  153. package/dist/client-v2/workflow/constants.d.ts +26 -0
  154. package/dist/client-v2/workflow/nodes/employee/components/AIEmployeeFieldset.d.ts +11 -0
  155. package/dist/{client/ai-employees/common/CodeHighlight.d.ts → client-v2/workflow/nodes/employee/components/AIEmployeeSelect.d.ts} +5 -6
  156. package/dist/{client/ai-employees/ContextAwareTooltip.d.ts → client-v2/workflow/nodes/employee/components/Assignees.d.ts} +2 -1
  157. package/dist/client-v2/workflow/nodes/employee/components/FeedbackSettings.d.ts +17 -0
  158. package/dist/client-v2/workflow/nodes/employee/components/FileInputs.d.ts +11 -0
  159. package/dist/{client/ai-employees/AIEmployeesProvider.d.ts → client-v2/workflow/nodes/employee/components/MessageInputs.d.ts} +2 -3
  160. package/dist/client-v2/workflow/nodes/employee/components/ModelOptions.d.ts +17 -0
  161. package/dist/{client/ai-employees/admin/datasource/components/basic/CollectionCascader.d.ts → client-v2/workflow/nodes/employee/components/SkillSettings.d.ts} +6 -3
  162. package/dist/client-v2/workflow/nodes/employee/components/StructuredOutput.d.ts +11 -0
  163. package/dist/client-v2/workflow/nodes/employee/components/UserInput.d.ts +18 -0
  164. package/dist/client-v2/workflow/nodes/employee/components/WebSearchOptions.d.ts +16 -0
  165. package/dist/client-v2/workflow/nodes/employee/index.d.ts +23 -0
  166. package/dist/{client/ai-employees/AIEmployeeListItem.d.ts → client-v2/workflow/nodes/llm/components/LLMFieldset.d.ts} +3 -5
  167. package/dist/{client/admin-settings/AdminSettings.d.ts → client-v2/workflow/nodes/llm/components/Messages.d.ts} +2 -1
  168. package/dist/client-v2/workflow/nodes/llm/components/StructuredOutput.d.ts +11 -0
  169. package/dist/client-v2/workflow/nodes/llm/index.d.ts +30 -0
  170. package/dist/{client/ai-employees/1.x/selector/BlockSelector.d.ts → client-v2/workflow/register.d.ts} +2 -6
  171. package/dist/client-v2/workflow/triggers/ai-employee/AIEmployeeTriggerConfig.d.ts +11 -0
  172. package/dist/client-v2/workflow/triggers/ai-employee/Parameters.d.ts +11 -0
  173. package/dist/client-v2/workflow/triggers/ai-employee/index.d.ts +25 -0
  174. package/dist/client-v2/workflow/types.d.ts +128 -0
  175. package/dist/externalVersion.js +20 -25
  176. package/dist/locale/en-US.json +49 -1
  177. package/dist/locale/zh-CN.json +49 -1
  178. package/dist/node_modules/@langchain/mistralai/package.json +1 -1
  179. package/dist/node_modules/@langchain/xai/package.json +1 -1
  180. package/dist/node_modules/fs-extra/package.json +1 -1
  181. package/dist/node_modules/jsonrepair/package.json +1 -1
  182. package/dist/node_modules/just-bash/package.json +1 -1
  183. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  184. package/dist/node_modules/openai/package.json +1 -1
  185. package/dist/node_modules/zod/package.json +1 -1
  186. package/dist/server/ai-employees/ai-employee.d.ts +1 -0
  187. package/dist/server/ai-employees/ai-employee.js +37 -2
  188. package/dist/server/ai-employees/prompts.d.ts +2 -1
  189. package/dist/server/ai-employees/prompts.js +8 -2
  190. package/dist/server/ai-employees/tool-call-sanitizer.d.ts +1 -0
  191. package/dist/server/ai-employees/tool-call-sanitizer.js +2 -1
  192. package/dist/server/ai-employees/utils.js +11 -5
  193. package/dist/server/attachments.d.ts +24 -0
  194. package/dist/server/attachments.js +204 -0
  195. package/dist/server/collections/ai-usage-events.d.ts +10 -0
  196. package/dist/server/collections/ai-usage-events.js +183 -0
  197. package/dist/server/document-loader/cached.d.ts +1 -0
  198. package/dist/server/document-loader/cached.js +18 -9
  199. package/dist/server/document-loader/loader.d.ts +0 -1
  200. package/dist/server/document-loader/loader.js +25 -8
  201. package/dist/server/document-loader/types.d.ts +7 -0
  202. package/dist/server/llm-providers/anthropic.d.ts +2 -1
  203. package/dist/server/llm-providers/anthropic.js +1 -3
  204. package/dist/server/llm-providers/dashscope.d.ts +2 -1
  205. package/dist/server/llm-providers/dashscope.js +16 -1
  206. package/dist/server/llm-providers/deepseek.d.ts +2 -1
  207. package/dist/server/llm-providers/deepseek.js +33 -2
  208. package/dist/server/llm-providers/google-genai.d.ts +1 -1
  209. package/dist/server/llm-providers/google-genai.js +1 -5
  210. package/dist/server/llm-providers/kimi/provider.d.ts +2 -1
  211. package/dist/server/llm-providers/kimi/provider.js +22 -2
  212. package/dist/server/llm-providers/mistral.d.ts +36 -2
  213. package/dist/server/llm-providers/mistral.js +62 -2
  214. package/dist/server/llm-providers/openai/completions.d.ts +2 -1
  215. package/dist/server/llm-providers/openai/completions.js +17 -1
  216. package/dist/server/llm-providers/openai/responses.d.ts +2 -1
  217. package/dist/server/llm-providers/openai/responses.js +17 -1
  218. package/dist/server/llm-providers/orcarouter.d.ts +35 -0
  219. package/dist/server/llm-providers/orcarouter.js +155 -0
  220. package/dist/server/llm-providers/provider.d.ts +10 -2
  221. package/dist/server/llm-providers/provider.js +33 -4
  222. package/dist/server/manager/ai-chat-conversation.js +2 -0
  223. package/dist/server/manager/ai-context-datasource-manager.js +34 -7
  224. package/dist/server/manager/ai-manager.d.ts +2 -1
  225. package/dist/server/manager/ai-manager.js +4 -1
  226. package/dist/server/manager/ai-usage-events.d.ts +49 -0
  227. package/dist/server/manager/ai-usage-events.js +195 -0
  228. package/dist/server/plugin.js +16 -0
  229. package/dist/server/resource/aiConversations.js +44 -1
  230. package/dist/server/utils.d.ts +5 -2
  231. package/dist/server/utils.js +11 -19
  232. package/dist/server/workflow/nodes/employee/files.d.ts +3 -1
  233. package/dist/server/workflow/nodes/employee/files.js +31 -5
  234. package/package.json +5 -5
  235. package/dist/client/119.c6bf8c6433167d81.js +0 -10
  236. package/dist/client/170.d98eacdc00d9d527.js +0 -10
  237. package/dist/client/228.b4b709f93b86b6b9.js +0 -10
  238. package/dist/client/280.003b9e9788599244.js +0 -10
  239. package/dist/client/290.0f7f441d8a94f03c.js +0 -10
  240. package/dist/client/331.d547c95410476a69.js +0 -10
  241. package/dist/client/406.15c09d98faa2ccf1.js +0 -10
  242. package/dist/client/428.5eb4f53ddbb6a3b8.js +0 -10
  243. package/dist/client/462.d172d0fe91519e35.js +0 -10
  244. package/dist/client/486.dcac8f3fcec19c33.js +0 -10
  245. package/dist/client/502.2b4a51e0a8122e52.js +0 -10
  246. package/dist/client/525.33a9c8ec28be4ec4.js +0 -10
  247. package/dist/client/559.9f97ebcdb0bd6231.js +0 -10
  248. package/dist/client/561.7ec804ef39ec7dcd.js +0 -10
  249. package/dist/client/580.35ba54ff91b7fe6d.js +0 -10
  250. package/dist/client/597.b0d64948d74cf6cb.js +0 -10
  251. package/dist/client/604.89c674f35b52b4ef.js +0 -10
  252. package/dist/client/614.aa766080f6b99aab.js +0 -10
  253. package/dist/client/646.d4483b4ff23da0a0.js +0 -10
  254. package/dist/client/687.224e569a99cae4bb.js +0 -10
  255. package/dist/client/699.57c0a1acb723202a.js +0 -10
  256. package/dist/client/711.92cd94681fde7e05.js +0 -10
  257. package/dist/client/758.a9741e81911e53c3.js +0 -10
  258. package/dist/client/768.5177bff46ae71a5b.js +0 -10
  259. package/dist/client/792.abb57765453bcbcc.js +0 -10
  260. package/dist/client/820.f72ef2462b61d812.js +0 -10
  261. package/dist/client/832.0cf69e3f43c320b2.js +0 -10
  262. package/dist/client/927.d95c74ebb8fd51c9.js +0 -10
  263. package/dist/client/ai-employees/1.x/selector/AISelectorProvider.d.ts +0 -33
  264. package/dist/client/ai-employees/ProfileCard.d.ts +0 -15
  265. package/dist/client/ai-employees/admin/ChatSettings.d.ts +0 -10
  266. package/dist/client/ai-employees/admin/DataSourceSettings.d.ts +0 -10
  267. package/dist/client/ai-employees/admin/EnableSwitch.d.ts +0 -10
  268. package/dist/client/ai-employees/admin/InputsFormSettings.d.ts +0 -10
  269. package/dist/client/ai-employees/admin/KnowledgeBaseSettings.d.ts +0 -10
  270. package/dist/client/ai-employees/admin/ModelSettings.d.ts +0 -10
  271. package/dist/client/ai-employees/admin/SkillSettings.d.ts +0 -19
  272. package/dist/client/ai-employees/admin/SystemPrompt.d.ts +0 -10
  273. package/dist/client/ai-employees/admin/Templates.d.ts +0 -10
  274. package/dist/client/ai-employees/admin/ToolsSettings.d.ts +0 -17
  275. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingForm.d.ts +0 -10
  276. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingGrid.d.ts +0 -10
  277. package/dist/client/ai-employees/admin/datasource/components/basic/FieldsTransfer.d.ts +0 -17
  278. package/dist/client/ai-employees/admin/datasource/components/form-steps/CollectionSetting.d.ts +0 -17
  279. package/dist/client/ai-employees/admin/datasource/components/form-steps/FieldsSetting.d.ts +0 -15
  280. package/dist/client/ai-employees/admin/datasource/components/form-steps/FilterSetting.d.ts +0 -17
  281. package/dist/client/ai-employees/admin/datasource/components/form-steps/Preview.d.ts +0 -13
  282. package/dist/client/ai-employees/admin/datasource/components/form-steps/SortSetting.d.ts +0 -15
  283. package/dist/client/ai-employees/admin/datasource/components/form-steps/index.d.ts +0 -13
  284. package/dist/client/ai-employees/admin/datasource/components/index.d.ts +0 -9
  285. package/dist/client/ai-employees/admin/datasource/context.d.ts +0 -17
  286. package/dist/client/ai-employees/admin/datasource/flow-models/index.d.ts +0 -9
  287. package/dist/client/ai-employees/admin/datasource/index.d.ts +0 -10
  288. package/dist/client/ai-employees/admin/hooks.d.ts +0 -39
  289. package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +0 -10
  290. package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +0 -19
  291. package/dist/client/ai-employees/admin/mcp/context.d.ts +0 -15
  292. package/dist/client/ai-employees/admin/mcp/schemas.d.ts +0 -1314
  293. package/dist/client/ai-employees/ai-coding/CodeHistory.d.ts +0 -10
  294. package/dist/client/ai-employees/ai-coding/markdown/Code.d.ts +0 -16
  295. package/dist/client/ai-employees/avatars.d.ts +0 -9
  296. package/dist/client/ai-employees/built-in/utils.d.ts +0 -15
  297. package/dist/client/ai-employees/business-report/tools/index.d.ts +0 -10
  298. package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +0 -38
  299. package/dist/client/ai-employees/chart-generator/tools/index.d.ts +0 -10
  300. package/dist/client/ai-employees/chart-generator/ui/ECharts.d.ts +0 -13
  301. package/dist/client/ai-employees/chatbox/AIThinking.d.ts +0 -12
  302. package/dist/client/ai-employees/chatbox/Attachment.d.ts +0 -14
  303. package/dist/client/ai-employees/chatbox/AttachmentsHeader.d.ts +0 -10
  304. package/dist/client/ai-employees/chatbox/ChatBox.d.ts +0 -12
  305. package/dist/client/ai-employees/chatbox/ContextItemsHeader.d.ts +0 -10
  306. package/dist/client/ai-employees/chatbox/DebugPanel.d.ts +0 -16
  307. package/dist/client/ai-employees/chatbox/EditMessageHeader.d.ts +0 -10
  308. package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +0 -10
  309. package/dist/client/ai-employees/chatbox/MessageRenderer.d.ts +0 -33
  310. package/dist/client/ai-employees/chatbox/SenderFooter.d.ts +0 -13
  311. package/dist/client/ai-employees/chatbox/SenderHeader.d.ts +0 -10
  312. package/dist/client/ai-employees/chatbox/SenderPrefix.d.ts +0 -10
  313. package/dist/client/ai-employees/chatbox/Upload.d.ts +0 -12
  314. package/dist/client/ai-employees/chatbox/VirtualList.d.ts +0 -28
  315. package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +0 -13
  316. package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +0 -13
  317. package/dist/client/ai-employees/chatbox/conversations/index.d.ts +0 -9
  318. package/dist/client/ai-employees/chatbox/generative-ui/DefaultToolCard.d.ts +0 -16
  319. package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +0 -18
  320. package/dist/client/ai-employees/chatbox/hooks/useUploadFiles.d.ts +0 -12
  321. package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +0 -10
  322. package/dist/client/ai-employees/chatbox/markdown/Form.d.ts +0 -10
  323. package/dist/client/ai-employees/chatbox/markdown/Generating.d.ts +0 -10
  324. package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +0 -13
  325. package/dist/client/ai-employees/chatbox/roles.d.ts +0 -32
  326. package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +0 -9
  327. package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +0 -9
  328. package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +0 -9
  329. package/dist/client/ai-employees/chatbox/stores/chat-tools.d.ts +0 -51
  330. package/dist/client/ai-employees/chatbox/stores/create-selectors.d.ts +0 -18
  331. package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +0 -45
  332. package/dist/client/ai-employees/context/classic-pages.d.ts +0 -10
  333. package/dist/client/ai-employees/data-modeling/Table.d.ts +0 -12
  334. package/dist/client/ai-employees/data-modeling/setup.d.ts +0 -10
  335. package/dist/client/ai-employees/data-modeling/tools/index.d.ts +0 -10
  336. package/dist/client/ai-employees/data-modeling/ui/useFieldInterfaceOptions.d.ts +0 -14
  337. package/dist/client/ai-employees/datasource/DatasourceList.d.ts +0 -17
  338. package/dist/client/ai-employees/datasource/index.d.ts +0 -9
  339. package/dist/client/ai-employees/flow/events/index.d.ts +0 -9
  340. package/dist/client/ai-employees/flow/index.d.ts +0 -36
  341. package/dist/client/ai-employees/flow/models/AIEmployeeActionModel.d.ts +0 -18
  342. package/dist/client/ai-employees/flow/models/AIEmployeeShortcutModel.d.ts +0 -30
  343. package/dist/client/ai-employees/shortcuts/ShortcutList.d.ts +0 -10
  344. package/dist/client/ai-employees/shortcuts/useShortcuts.d.ts +0 -13
  345. package/dist/client/ai-employees/stores/context-aware.d.ts +0 -19
  346. package/dist/client/ai-employees/sub-agents/tools/index.d.ts +0 -10
  347. package/dist/client/ai-employees/suggestions/tools/index.d.ts +0 -10
  348. package/dist/client/ai-employees/suggestions/ui/SuggestionsOptions.d.ts +0 -13
  349. package/dist/client/ai-employees/types.d.ts +0 -259
  350. package/dist/client/ai-employees/workflow-tasks/tools/index.d.ts +0 -10
  351. package/dist/client/chat-settings/Messages.d.ts +0 -11
  352. package/dist/client/chat-settings/StructuredOutput.d.ts +0 -11
  353. package/dist/client/components/skill-settings.d.ts +0 -22
  354. package/dist/client/features/components.d.ts +0 -9
  355. package/dist/client/features/feature-manager.d.ts +0 -9
  356. package/dist/client/features/index.d.ts +0 -9
  357. package/dist/client/features/vector-database-provider.d.ts +0 -9
  358. package/dist/client/features/vector-store-provider.d.ts +0 -9
  359. package/dist/client/llm-providers/anthropic/ModelSettings.d.ts +0 -10
  360. package/dist/client/llm-providers/anthropic/ProviderSettings.d.ts +0 -10
  361. package/dist/client/llm-providers/anthropic/index.d.ts +0 -10
  362. package/dist/client/llm-providers/components/Chat.d.ts +0 -10
  363. package/dist/client/llm-providers/components/ModelSelect.d.ts +0 -10
  364. package/dist/client/llm-providers/dashscope/ModelSettings.d.ts +0 -10
  365. package/dist/client/llm-providers/dashscope/ProviderSettings.d.ts +0 -10
  366. package/dist/client/llm-providers/dashscope/index.d.ts +0 -10
  367. package/dist/client/llm-providers/deepseek/ModelSettings.d.ts +0 -10
  368. package/dist/client/llm-providers/deepseek/index.d.ts +0 -10
  369. package/dist/client/llm-providers/google-genai/MessageRenderer.d.ts +0 -13
  370. package/dist/client/llm-providers/google-genai/ModelSettings.d.ts +0 -10
  371. package/dist/client/llm-providers/google-genai/ProviderSettings.d.ts +0 -10
  372. package/dist/client/llm-providers/google-genai/index.d.ts +0 -10
  373. package/dist/client/llm-providers/kimi/ModelSettings.d.ts +0 -10
  374. package/dist/client/llm-providers/kimi/index.d.ts +0 -10
  375. package/dist/client/llm-providers/mimo/ModelSettings.d.ts +0 -10
  376. package/dist/client/llm-providers/mimo/index.d.ts +0 -10
  377. package/dist/client/llm-providers/mistral/ModelSettings.d.ts +0 -10
  378. package/dist/client/llm-providers/mistral/index.d.ts +0 -10
  379. package/dist/client/llm-providers/ollama/ModelSettings.d.ts +0 -10
  380. package/dist/client/llm-providers/ollama/ProviderSettings.d.ts +0 -10
  381. package/dist/client/llm-providers/ollama/index.d.ts +0 -10
  382. package/dist/client/llm-providers/openai/completions/ModelSettings.d.ts +0 -10
  383. package/dist/client/llm-providers/openai/completions/index.d.ts +0 -10
  384. package/dist/client/llm-providers/openai/components/ProviderSettings.d.ts +0 -10
  385. package/dist/client/llm-providers/openai/responses/ModelSettings.d.ts +0 -10
  386. package/dist/client/llm-providers/openai/responses/index.d.ts +0 -10
  387. package/dist/client/llm-providers/tongyi/ModelSettings.d.ts +0 -10
  388. package/dist/client/llm-providers/tongyi/ProviderSettings.d.ts +0 -10
  389. package/dist/client/llm-providers/tongyi/index.d.ts +0 -10
  390. package/dist/client/llm-providers/xai/ModelSettings.d.ts +0 -10
  391. package/dist/client/llm-providers/xai/index.d.ts +0 -10
  392. package/dist/client/llm-services/LLMServices.d.ts +0 -13
  393. package/dist/client/llm-services/component/DefaultModelSelect.d.ts +0 -10
  394. package/dist/client/llm-services/component/EnabledModelsSelect.d.ts +0 -23
  395. package/dist/client/llm-services/component/LLMTestFlight.d.ts +0 -10
  396. package/dist/client/llm-services/component/ModelOptionsSettings.d.ts +0 -10
  397. package/dist/client/llm-services/component/UnifiedModelSettings.d.ts +0 -10
  398. package/dist/client/llm-services/hooks/useLLMServiceCatalog.d.ts +0 -18
  399. package/dist/client/llm-services/llm-providers.d.ts +0 -27
  400. package/dist/client/llm-services/utils.d.ts +0 -35
  401. package/dist/client/manager/ai-feature-manager.d.ts +0 -9
  402. package/dist/client/manager/ai-manager.d.ts +0 -35
  403. package/dist/client/repositories/AIConfigRepository.d.ts +0 -60
  404. package/dist/client/repositories/hooks/useAIConfigRepository.d.ts +0 -10
  405. package/dist/client/schemas/llms.d.ts +0 -347
  406. package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +0 -10
  407. package/dist/client/workflow/nodes/employee/components/assigness.d.ts +0 -11
  408. package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +0 -10
  409. package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +0 -12
  410. package/dist/client/workflow/nodes/employee/components/model-options.d.ts +0 -10
  411. package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +0 -10
  412. package/dist/client/workflow/nodes/employee/components/users-select.d.ts +0 -15
  413. package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +0 -10
  414. package/dist/client/workflow/nodes/employee/configuration.d.ts +0 -12
  415. package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +0 -14
  416. package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +0 -13
  417. package/dist/client/workflow/nodes/llm/ModelSettings.d.ts +0 -11
  418. package/dist/client/workflow/triggers/ai-employee/Parameters.d.ts +0 -13
  419. /package/dist/{client → client-v2}/ai-employees/AISelection.d.ts +0 -0
  420. /package/dist/{client → client-v2}/ai-employees/AISelectionControl.d.ts +0 -0
  421. /package/dist/{client → client-v2}/ai-employees/ai-coding/prompts.d.ts +0 -0
  422. /package/dist/{client → client-v2}/ai-employees/ai-coding/setup.d.ts +0 -0
  423. /package/dist/{client/ai-employees/chatbox/AIEmployeeSwitch.d.ts → client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts} +0 -0
  424. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatButton.d.ts +0 -0
  425. /package/dist/{client/ai-employees/chatbox/conversations → client-v2/ai-employees/chatbox/components}/Conversations.d.ts +0 -0
  426. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Messages.d.ts +0 -0
  427. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ModelSwitcher.d.ts +0 -0
  428. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/SearchSwitch.d.ts +0 -0
  429. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Sender.d.ts +0 -0
  430. /package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolModal.d.ts +0 -0
  431. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/UserPrompt.d.ts +0 -0
  432. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +0 -0
  433. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useLoadMoreObserver.d.ts +0 -0
  434. /package/dist/client-v2/ai-employees/{chatbox/stores → stores}/global-store.d.ts +0 -0
  435. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/AIEmployeeShortcutListModel.d.ts +0 -0
  436. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/index.d.ts +0 -0
  437. /package/dist/{client/ai-employees/flow/events/ai-context-selection.d.ts → client-v2/workflow/components/index.d.ts} +0 -0
@@ -0,0 +1,133 @@
1
+ ---
2
+ title: "Mobile Layout"
3
+ description: "Learn about NocoBase mobile navigation, page building, desktop preview, subpage interactions, routes, and permissions."
4
+ keywords: "mobile layout,mobile pages,bottom navigation,mobile preview,mobile routes,UI Editor,NocoBase"
5
+ ---
6
+
7
+ # Mobile Layout
8
+
9
+ In NocoBase, the **mobile layout** is used to build dedicated navigation and pages for mobile devices. It is available at `/mobile` by default and uses a bottom tab bar as its primary navigation, making it more suitable for data entry, lookup, approval, and task processing on a phone.
10
+
11
+ The mobile and desktop layouts use the same data sources and business data, but their menus, routes, and page content are configured separately. This lets you reorganize pages around mobile workflows without being constrained by the desktop page structure.
12
+
13
+ <!-- Add a full-page screenshot of the mobile layout on a physical device -->
14
+
15
+ ## Open and preview the mobile layout
16
+
17
+ By default, you can click 「Mobile」 in Settings to open the layout, or visit `/mobile` directly.
18
+
19
+ It is best to build pages in a desktop browser. The desktop view provides a mobile preview area and a toolbar at the top:
20
+
21
+ - 「UI Editor」 turns UI building mode on or off.
22
+ - 「Tablet preview」 checks the display on wider mobile devices.
23
+ - 「Mobile preview」 restores the phone-sized preview area.
24
+ - 「QR code」 opens the current mobile URL on a phone.
25
+
26
+ ![20260715221712](https://static-docs.nocobase.com/20260715221712.png)
27
+
28
+ After building the pages on a computer, scan the QR code and check them on a physical device. Pay particular attention to navigation, scrolling, form input, pop-up pages, and safe areas.
29
+
30
+ ## Build mobile navigation
31
+
32
+ The mobile layout uses a bottom tab bar as its primary navigation. Primary navigation currently supports mainly pages and links.
33
+
34
+ ### Add a page
35
+
36
+ 1. Open 「UI Editor」.
37
+ 2. Click the add button on the right side of the bottom tab bar.
38
+ 3. Select 「Page」.
39
+ 4. Enter a page title and select an icon.
40
+ 5. Submit the form to open the new page, then continue adding page content.
41
+
42
+ ![20260715221823_rec_](https://static-docs.nocobase.com/20260715221823_rec_.gif)
43
+
44
+ ### Add a link
45
+
46
+ To open an internal or external URL, select 「Link」 and configure its title, icon, and URL.
47
+
48
+ A link can open in the current window or a new window, depending on its configuration.
49
+
50
+ ![20260715221950](https://static-docs.nocobase.com/20260715221950.png)
51
+
52
+ ### Arrange navigation
53
+
54
+ In UI building mode, drag bottom tabs to reorder them. You can also edit a tab's title and icon, configure linkage rules, copy its UID, or delete it.
55
+
56
+ To view, show, hide, or delete mobile routes in one place, open 「Settings / Routes / Mobile routes」.
57
+
58
+ ![20260715222113_rec_](https://static-docs.nocobase.com/20260715222113_rec_.gif)
59
+
60
+ ## Build a mobile page
61
+
62
+ Create and open a mobile page before adding blocks to it. The approach to building page content is essentially the same as on desktop: use [blocks](../blocks/index.md), [fields](../fields/index.md), and [actions](../actions/index.md) to organize business content. However, mobile navigation and some component interactions are adjusted for smaller screens.
63
+
64
+ ### Add page content
65
+
66
+ 1. Open the mobile page you want to build.
67
+ 2. Make sure 「UI Editor」 is enabled.
68
+ 3. Click 「Add block」 on the page.
69
+ 4. Select a table, form, details, filter, or another block.
70
+ 5. Continue configuring fields, actions, and block settings.
71
+
72
+ ![20260715222230_rec_](https://static-docs.nocobase.com/20260715222230_rec_.gif)
73
+
74
+ ### Use page tabs
75
+
76
+ A mobile page can also use tabs. If multiple pieces of content belong under the same navigation entry but remain relatively independent, place them in separate tabs.
77
+
78
+ 1. Open the page settings and enable 「Enable page tabs」. You can also edit the page under 「Settings / Routes / Mobile routes」 and select 「Enable page tabs」.
79
+ 2. Turn on 「UI Editor」.
80
+ 3. Click 「Add tab」 on the right side of the page tab bar.
81
+ 4. Add the tab, then configure its name and page content.
82
+
83
+ If a mobile page contains only a small amount of content, use a single page. You do not need to enable tabs.
84
+
85
+ ![20260715222354_rec_](https://static-docs.nocobase.com/20260715222354_rec_.gif)
86
+
87
+ ### Mobile interactions for common components
88
+
89
+ Common components adjust their arrangement and interactions for the mobile layout. For instance, multi-column content automatically switches to a single column that is easier to browse vertically; selection and date-time fields use mobile-friendly pickers; and filters, associated record selection, and subpages use interfaces designed for touch interaction.
90
+
91
+ Tables remain tables on mobile, with horizontal scrolling for columns that extend beyond the screen. Any additional mobile behavior depends on the support provided by each block.
92
+
93
+ ## Pages and subpages
94
+
95
+ Content opened from view, edit, associated record selection, and similar actions appears as a mobile subpage. The subpage provides a back button that returns you to the previous page.
96
+
97
+ When you open a deeper subpage, the bottom tab bar is hidden to leave more room for the current content. It reappears when you close the subpage or return to the previous level.
98
+
99
+ When switching between bottom tabs, the state of open pages is preserved, making it easier to move between mobile tasks.
100
+
101
+ ![20260715222828_rec_](https://static-docs.nocobase.com/20260715222828_rec_.gif)
102
+
103
+ ## Manage routes and permissions
104
+
105
+ Mobile routes can be maintained in the [Route Manager](../../routes/index.md). Open 「Settings / Routes / Mobile routes」 to add, edit, delete, show, or hide pages and links, or to configure tabs for a page.
106
+
107
+ Mobile route access permissions are configured separately from desktop permissions. Under role permissions, open 「Mobile routes」 and select the pages the current role can access. See [Permission configuration](../../users-permissions/acl/permissions.md) for details.
108
+
109
+ ![20260715223016_rec_](https://static-docs.nocobase.com/20260715223016_rec_.gif)
110
+
111
+ ![20260715223106_rec_](https://static-docs.nocobase.com/20260715223106_rec_.gif)
112
+
113
+ ## Relationship with the desktop layout
114
+
115
+ You can build separate desktop and mobile pages from the same data table. For instance, a desktop page may use a table with many fields for data processing, while a mobile page may use a simpler list or form for on-site data entry.
116
+
117
+ The two layouts do not synchronize pages automatically. Changes to desktop pages, menus, or routes do not update the mobile configuration, and mobile changes do not affect desktop pages.
118
+
119
+ :::tip Recommendation
120
+
121
+ If mobile users only need occasional access to desktop pages, try the responsive [desktop layout](./desktop.md) first. Build a separate mobile layout only when you need dedicated navigation and page workflows for mobile devices.
122
+
123
+ :::
124
+
125
+ ## Related links
126
+
127
+ - [UI layout overview](./index.md) — Compare desktop and mobile layout use cases
128
+ - [Desktop layout](./desktop.md) — Use the default desktop layout and its narrow-screen responsiveness
129
+ - [Blocks](../blocks/index.md) — Add business content to mobile pages
130
+ - [Fields](../fields/index.md) — Configure mobile forms and data display fields
131
+ - [Actions](../actions/index.md) — Configure actions on mobile pages
132
+ - [Route Manager](../../routes/index.md) — Manage mobile pages, links, and tabs
133
+ - [Permission configuration](../../users-permissions/acl/permissions.md) — Control which mobile routes each role can access
@@ -0,0 +1,159 @@
1
+ # Multi-portal, Multi-app, and Multi-space
2
+
3
+ NocoBase provides three capabilities: Multi-portal, Multi-app, and Multi-space.
4
+
5
+ They solve problems at different levels. They can be used independently or together.
6
+
7
+ ## Key differences
8
+
9
+ | Capability | Multi-portal | Multi-app | Multi-space |
10
+ |------|------|------|------|
11
+ | What problem it solves | Provides multiple access entries | Splits business into multiple systems | Isolates business data |
12
+ | Core focus | Where users enter | How the system is divided | Who the data belongs to |
13
+ | Data | Shared | Independent by default | Isolated |
14
+ | Pages and menus | Independent | Independent | Shared |
15
+ | Plugin configuration | Shared | Independent | Shared |
16
+ | User system | Shared | Can be shared through SSO | Shared |
17
+ | Typical scenarios | Different roles need different entries | Different businesses need independent management | Multiple organizations, stores, or tenants |
18
+ | Can be combined | Yes | Yes | Yes |
19
+
20
+ ## Multi-portal
21
+
22
+ Multi-portal provides multiple access entries within the same application.
23
+
24
+ For example:
25
+
26
+ ```text
27
+ ERP App
28
+
29
+ ├─ Admin Portal (/v/admin)
30
+ ├─ Store Portal (/v/store)
31
+ ├─ Distributor Portal (/v/dealer)
32
+ └─ Mobile Portal (/v/mobile)
33
+ ```
34
+
35
+ Features:
36
+
37
+ - Uses the same application
38
+ - Shares the same data
39
+ - Shares plugin configuration
40
+ - Pages and menus can be configured independently
41
+
42
+ Suitable for scenarios where different roles need different access entries, such as:
43
+
44
+ - Administrators
45
+ - Employees
46
+ - Customers
47
+ - Distributors
48
+
49
+ ## Multi-app
50
+
51
+ Multi-app splits business into multiple independent applications.
52
+
53
+ For example:
54
+
55
+ ```text
56
+ Group System
57
+
58
+ ├─ CRM
59
+ ├─ ERP
60
+ ├─ OA
61
+ └─ Analytics
62
+ ```
63
+
64
+ Features:
65
+
66
+ - Each app is managed independently
67
+ - Independent plugin configuration
68
+ - Independent database connection
69
+ - Independent upgrade and maintenance
70
+
71
+ Suitable for:
72
+
73
+ - Splitting large business systems
74
+ - Multi-team collaborative development
75
+ - Batch creation of apps for SaaS platforms
76
+ - Independent apps for different customers
77
+
78
+ ## Multi-space
79
+
80
+ Multi-space isolates business data within the same application.
81
+
82
+ For example:
83
+
84
+ ```text
85
+ Store Management App
86
+
87
+ Spaces
88
+ ├─ Beijing Store
89
+ ├─ Shanghai Store
90
+ └─ Shenzhen Store
91
+ ```
92
+
93
+ Features:
94
+
95
+ - Shared pages
96
+ - Shared menus
97
+ - Shared workflows
98
+ - Shared configuration
99
+ - Isolated data
100
+
101
+ For tables that have a space field enabled, the system automatically filters data according to the current space.
102
+
103
+ From the user's perspective:
104
+
105
+ - The Beijing store can only see Beijing store data
106
+ - The Shanghai store can only see Shanghai store data
107
+ - The Shenzhen store can only see Shenzhen store data
108
+
109
+ But all stores still use the same system.
110
+
111
+ ## Relationship among the three
112
+
113
+ These three capabilities do not conflict. They work on different dimensions.
114
+
115
+ They can be used together:
116
+
117
+ ```text
118
+ Group System
119
+
120
+ CRM App
121
+ ├─ Admin Portal
122
+ ├─ Sales Portal
123
+ └─ Customer Portal
124
+
125
+ Spaces
126
+ ├─ Beijing Branch
127
+ ├─ Shanghai Branch
128
+ └─ Shenzhen Branch
129
+ ```
130
+
131
+ Conceptually:
132
+
133
+ ```text
134
+ Portal
135
+
136
+ Where users enter the system
137
+
138
+ App
139
+
140
+ How the system is divided
141
+
142
+ Space
143
+
144
+ Who the data belongs to
145
+ ```
146
+
147
+ ## How to choose
148
+
149
+ If you only want to provide different entries for different roles, choose **Multi-portal**.
150
+
151
+ If you want to split business into multiple independent systems, choose **Multi-app**.
152
+
153
+ If you want to isolate data for different organizations or tenants within the same system, choose **Multi-space**.
154
+
155
+ In real projects, these three capabilities are usually combined rather than used as substitutes for one another.
156
+
157
+ In one sentence:
158
+
159
+ > Multi-portal solves entry points, Multi-app solves system splitting, and Multi-space solves data isolation.
@@ -0,0 +1,195 @@
1
+ ---
2
+ title: "Multi-portal"
3
+ description: "Learn the concept, use cases, configuration, and relationship between Multi-portal, Multi-app, and Multi-space in NocoBase."
4
+ keywords: "workspace, portal, multi-portal, NocoBase"
5
+ pkg: "@nocobase/plugin-multi-portal"
6
+ ---
7
+
8
+ # Multi-portal
9
+
10
+ ## What is a portal
11
+
12
+ A portal is used to provide multiple access entries within the same application.
13
+
14
+ Each portal can have its own:
15
+
16
+ - Pages
17
+ - Menus
18
+ - Navigation structure
19
+ - Layout
20
+ - Permission settings
21
+
22
+ The Multi-portal plugin provides the following capabilities:
23
+
24
+ - Portal management
25
+ - Portal switching
26
+ - Portal permission control
27
+
28
+ With these capabilities, you can provide different experiences for different roles while sharing the same data and business capabilities.
29
+
30
+ ## Why use portals
31
+
32
+ In real business scenarios, different roles often need different interfaces.
33
+
34
+ For example, in a retail management system:
35
+
36
+ ```text
37
+ Retail Management System
38
+
39
+ ├─ Headquarters Portal
40
+ ├─ Store Portal
41
+ ├─ Distributor Portal
42
+ └─ Mobile Portal
43
+ ```
44
+
45
+ Headquarters staff focus on:
46
+
47
+ - Product management
48
+ - Inventory management
49
+ - Data analysis
50
+
51
+ Store staff focus on:
52
+
53
+ - Cashiering
54
+ - Stocktaking
55
+ - Order processing
56
+
57
+ Distributors focus on:
58
+
59
+ - Purchasing
60
+ - Reconciliation
61
+ - Shipment status
62
+
63
+ Although everyone uses the same system, different roles do not need to see the same menus and pages.
64
+
65
+ That is exactly the problem portals solve.
66
+
67
+ ## Relationship between portals and menus
68
+
69
+ Each portal has its own menu tree.
70
+
71
+ Menus in different portals do not affect each other.
72
+
73
+ For example:
74
+
75
+ ```text
76
+ Headquarters Portal
77
+ ├─ Product Management
78
+ ├─ Supply Chain Management
79
+ └─ Data Analysis
80
+
81
+ Store Portal
82
+ ├─ Cashiering
83
+ ├─ Order Management
84
+ └─ Stocktaking
85
+ ```
86
+
87
+ ## Relationship between portals and pages
88
+
89
+ Pages belong to their respective portals.
90
+
91
+ The same page can also be shown only in specific portals.
92
+
93
+ This makes it possible to design completely different workflows for different roles.
94
+
95
+ ## Relationship between portals and permissions
96
+
97
+ Portals themselves can be configured with access permissions.
98
+
99
+ Only authorized users can access the corresponding portal.
100
+
101
+ Unauthorized portals:
102
+
103
+ - Do not appear in the switcher list
104
+ - Cannot be accessed directly
105
+
106
+ ## Portal management
107
+
108
+ After enabling the Multi-portal plugin, the system provides two built-in portals by default:
109
+
110
+ | Portal | Path | Purpose |
111
+ |----------|----------|----------|
112
+ | Desktop | `/v/admin` | Desktop entry |
113
+ | Mobile | `/v/mobile` | Mobile entry |
114
+
115
+ ### Built-in portals
116
+
117
+ ![2026-07-10-08-01-50](https://static-docs.nocobase.com/2026-07-10-08-01-50.png)
118
+
119
+ ### Desktop portal
120
+
121
+ Access path:
122
+
123
+ ```text
124
+ /v/admin
125
+ ```
126
+
127
+ ![2026-07-10-08-03-12](https://static-docs.nocobase.com/2026-07-10-08-03-12.png)
128
+
129
+ ### Mobile portal
130
+
131
+ Access path:
132
+
133
+ ```text
134
+ /v/mobile
135
+ ```
136
+
137
+ ![2026-07-10-08-04-59](https://static-docs.nocobase.com/2026-07-10-08-04-59.png)
138
+
139
+ ## Create a portal
140
+
141
+ In addition to the built-in portals, you can create more portals based on business needs.
142
+
143
+ For example:
144
+
145
+ - Store portal
146
+ - Distributor portal
147
+ - Customer service portal
148
+ - Data analysis portal
149
+
150
+ After creation, you can configure:
151
+
152
+ - Pages
153
+ - Menus
154
+ - Permissions
155
+ - Navigation
156
+
157
+ ![2026-07-10-08-06-15](https://static-docs.nocobase.com/2026-07-10-08-06-15.png)
158
+
159
+ ## Switch portals
160
+
161
+ Users can quickly switch between portals through the portal switcher.
162
+
163
+ ### Switch portals within a single app
164
+
165
+ Add it to the portal switcher panel in the upper-left corner
166
+
167
+ ![2026-07-10-08-20-41](https://static-docs.nocobase.com/2026-07-10-08-20-41.png)
168
+
169
+ Add it to the action panel block
170
+
171
+ ![2026-07-10-08-21-15](https://static-docs.nocobase.com/2026-07-10-08-21-15.png)
172
+
173
+ ### Switch portals across apps
174
+
175
+ After enabling Multi-app and configuring SSO, users can also switch between portals across different apps through the portal switcher.
176
+
177
+ Add it to the portal switcher panel in the upper-left corner
178
+
179
+ ![2026-07-10-08-25-19](https://static-docs.nocobase.com/2026-07-10-08-25-19.png)
180
+
181
+ Add it to the action panel block
182
+
183
+ ![2026-07-10-08-25-50](https://static-docs.nocobase.com/2026-07-10-08-25-50.png)
184
+
185
+ ## Portal permissions
186
+
187
+ You can control which portals a user can access through role permissions.
188
+
189
+ Unauthorized portals do not appear in the portal switcher list, and users cannot access those entries directly.
190
+
191
+ ![2026-07-10-08-29-22](https://static-docs.nocobase.com/2026-07-10-08-29-22.png)
192
+
193
+ ## Related links
194
+
195
+ For the differences and combination patterns among Multi-portal, Multi-app, and Multi-space, see: [Multi-portal, Multi-app, and Multi-space](../multi-app-vs-multi-portal-vs-multi-space.md).
@@ -69,6 +69,16 @@ If you happen to be stuck here "Why do you need `nb app autostart`", just contin
69
69
  - If you are going to connect to the reverse proxy, `appPort` has been saved in env
70
70
  - If you are ready to officially open it to the outside world, you have already planned the domain name, entrance port and HTTPS solution.
71
71
 
72
+ :::warning Note
73
+
74
+ Use a different `hostname`, such as a separate subdomain, for each independent NocoBase service. Do not distinguish services only by port. Browser cookies are not isolated by port, so services under the same `hostname` may overwrite login state and affect [stable URL](../../file-manager/stable-url.md) authorization.
75
+
76
+ Sub-apps within the same NocoBase deployment are distinguished by app name and do not need separate hostnames. However, if another independent NocoBase service runs on a different port under the same `hostname` and contains a main app or sub-app with the same name, its cookies may still conflict.
77
+
78
+ For example, use `app1.example.com` and `app2.example.com` instead of `example.com:13000` and `example.com:14000`.
79
+
80
+ :::
81
+
72
82
  If you have not completed the CLI installation or env initialization, go back to [Install using CLI](../installation/cli.md).
73
83
 
74
84
  If the command prompts that env is missing `appPort`, first execute [`nb env update`](../../api/cli/env/update.md) to fill it in.
@@ -124,7 +124,7 @@ If you want to make up for Caddy site-level configuration, such as additional he
124
124
 
125
125
  If your application is not CLI hosted, or you explicitly want to maintain the complete Caddy configuration yourself, you can also write it by hand.
126
126
 
127
- However, for NocoBase, the production environment entry is usually not just a simple `reverse_proxy`. In addition to forwarding API requests to the backend application, a complete and working Caddy configuration usually also needs to handle the upload directory, front-end static resources, `.well-known` routing, WebSocket, and SPA fallback page.
127
+ However, for NocoBase, the production environment entry is usually not just a simple `reverse_proxy`. In addition to forwarding API requests to the backend application, a complete and working Caddy configuration usually also needs to handle the upload directory, front-end static resources, the `/files/` file access route, `.well-known` routing, WebSocket, and SPA fallback pages.
128
128
 
129
129
  Taking `test2` as an example, key directories related to Caddy usually include:
130
130
 
@@ -139,6 +139,7 @@ In other words, handwritten configuration usually needs to cover at least the fo
139
139
  - `dist`: Expose the front-end build product directory
140
140
  - `oauth well-known`: Handle OAuth discovery paths
141
141
  - `openid well-known`: Handle OpenID discovery paths
142
+ - `files`: Forward file access requests under `/files/` to the backend application
142
143
  - `api`: forward `/api/` request to the backend application
143
144
  - `ws`: forward WebSocket requests to the backend application
144
145
  - `spa v2`: Provides front-end entry and return page for `/v/`
@@ -187,6 +188,10 @@ c.local.nocobase.com {
187
188
  reverse_proxy host.docker.internal:56575
188
189
  }
189
190
 
191
+ handle /files/* {
192
+ reverse_proxy host.docker.internal:56575
193
+ }
194
+
190
195
  handle /api/* {
191
196
  reverse_proxy host.docker.internal:56575
192
197
  }
@@ -249,7 +254,15 @@ A more prudent approach is usually:
249
254
  2. Confirm the routing structure and actual path based on the generated results.
250
255
  3. Then make manual adjustments according to your domain name, running mode and mounting path.
251
256
 
252
- This is usually less likely to miss details related to WebSockets, static resources, upload directories, `.well-known` routes, or SPA fallback pages than handwriting a configuration from scratch.
257
+ This is usually less likely to miss details related to `/files/`, WebSockets, static resources, upload directories, `.well-known` routes, or SPA fallback pages than handwriting a configuration from scratch.
258
+
259
+ :::warning Note
260
+
261
+ `/files/` is an application route that must pass through NocoBase authorization. Do not handle it as a static directory or let it fall through to the SPA fallback. Forward it to the NocoBase backend and place the rule before `handle_path /*` and other front-end fallback rules.
262
+
263
+ If `APP_PUBLIC_PATH=/nocobase/` is configured, also forward `/nocobase/files/*`. Keep the root-level `/files/*` rule for compatibility with existing file URLs.
264
+
265
+ :::
253
266
 
254
267
  ## Check and reload configuration
255
268
 
@@ -9,7 +9,7 @@ keywords: "NocoBase,nb proxy nginx,nb proxy caddy, reverse proxy, Nginx, Caddy,
9
9
 
10
10
  This article only applies to applications installed using `nb init`.
11
11
 
12
- In NocoBase, the production environment reverse proxy does more than simply forward requests to the application process. Often the details of WebSockets, subpaths, front-end static resources, upload directories, and SPA fallback pages are also handled at the same time.
12
+ In NocoBase, the production environment reverse proxy does more than simply forward requests to the application process. It also needs to handle WebSockets, subpaths, front-end static resources, upload directories, the `/files/` file access route, and SPA fallback pages.
13
13
 
14
14
  The function of `nb proxy` is to collect these easily missed details into a stable set of command entries.
15
15
 
@@ -122,7 +122,7 @@ If you want to add site-level Nginx configuration, such as current limiting, add
122
122
 
123
123
  If your application is not CLI hosted, or you explicitly want to maintain the complete Nginx configuration yourself, you can also write it by hand.
124
124
 
125
- However, for NocoBase, the production reverse proxy is usually more than a simple `proxy_pass`. In addition to forwarding API requests to the backend application, a complete and usable configuration usually needs to handle the upload directory, front-end static resources, WebSocket, `.well-known` route, and SPA fallback page.
125
+ However, for NocoBase, the production reverse proxy is usually more than a simple `proxy_pass`. In addition to forwarding API requests to the backend application, a complete and usable configuration usually needs to handle the upload directory, front-end static resources, the `/files/` file access route, WebSocket, the `.well-known` route, and SPA fallback pages.
126
126
 
127
127
  Taking `test2` as an example, key files and directories related to Nginx usually include:
128
128
 
@@ -138,6 +138,7 @@ In other words, handwritten configuration usually needs to cover at least the fo
138
138
  - `uploads`: Expose the upload directory through `alias`
139
139
  - `dist`: Expose the front-end build product directory through `alias`
140
140
  - `well-known`: Handle OAuth / OpenID related discovery paths
141
+ - `files`: Forward file access requests under `/files/` to the backend application
141
142
  - `api`: forward `/api/` request to the backend application
142
143
  - `ws`: forward WebSocket requests to the backend application
143
144
  - `spa`: Provides front-end entry and `try_files` fallback for `/` and `/v/`
@@ -180,6 +181,11 @@ server {
180
181
  include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
181
182
  }
182
183
 
184
+ location ^~ /files/ {
185
+ proxy_pass http://127.0.0.1:56575;
186
+ include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
187
+ }
188
+
183
189
  location ^~ /api/ {
184
190
  proxy_pass http://127.0.0.1:56575;
185
191
  include NB_CLI_ROOT/.nocobase/proxy/nginx/snippets/proxy-location.conf;
@@ -229,7 +235,15 @@ A more prudent approach is usually:
229
235
  2. Confirm the routing structure and actual path based on the generated results.
230
236
  3. Then make manual adjustments according to your domain name, running mode and mounting path.
231
237
 
232
- This is usually less likely to miss details related to WebSockets, static resources, upload directories, or SPA fallback pages than handwriting a configuration from scratch.
238
+ This is usually less likely to miss details related to `/files/`, WebSockets, static resources, upload directories, or SPA fallback pages than handwriting a configuration from scratch.
239
+
240
+ :::warning Note
241
+
242
+ `/files/` is an application route that must pass through NocoBase authorization. Do not handle it as a static directory or let it fall through to the SPA fallback. Forward it to the NocoBase backend and place the rule before `location /` and other front-end fallback rules.
243
+
244
+ If `APP_PUBLIC_PATH=/nocobase/` is configured, also forward `/nocobase/files/`. Keep the root-level `/files/` rule for compatibility with existing file URLs.
245
+
246
+ :::
233
247
 
234
248
  ## How to handle HTTPS
235
249
 
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "Block: Comment"
3
+ keywords: "Block: Comment,comment block,comment collection,plugin,NocoBase"
4
+ displayName: "Block: Comment"
5
+ packageName: '@nocobase/plugin-block-comment'
6
+ description: |
7
+ Provides a Comment block for viewing and creating comments in record details, pop-ups, and similar scenarios.
8
+ isFree: true
9
+ builtIn: true
10
+ defaultEnabled: false
11
+ editionLevel: 0
12
+ ---
13
+
14
+ # Block: Comment