@nocobase/plugin-ai 2.1.31 → 2.2.0-alpha.10

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 (447) hide show
  1. package/client-v2.d.ts +1 -0
  2. package/dist/ai/docs/nocobase/api/app/env.md +1 -1
  3. package/dist/ai/docs/nocobase/api/cli/index.md +14 -2
  4. package/dist/ai/docs/nocobase/api/cli/portal/config.md +44 -0
  5. package/dist/ai/docs/nocobase/api/cli/portal/create.md +48 -0
  6. package/dist/ai/docs/nocobase/api/cli/portal/deploy.md +39 -0
  7. package/dist/ai/docs/nocobase/api/cli/portal/destroy.md +41 -0
  8. package/dist/ai/docs/nocobase/api/cli/portal/dev.md +39 -0
  9. package/dist/ai/docs/nocobase/api/cli/portal/index.md +136 -0
  10. package/dist/ai/docs/nocobase/api/cli/portal/info.md +41 -0
  11. package/dist/ai/docs/nocobase/api/cli/portal/list.md +40 -0
  12. package/dist/ai/docs/nocobase/api/cli/portal/pull.md +43 -0
  13. package/dist/ai/docs/nocobase/api/cli/portal/push.md +41 -0
  14. package/dist/ai/docs/nocobase/file-manager/stable-url.md +87 -0
  15. package/dist/ai/docs/nocobase/file-manager/storage/index.md +66 -26
  16. package/dist/ai/docs/nocobase/file-manager/storage/s3-pro.md +58 -7
  17. package/dist/ai/docs/nocobase/get-started/deployment/production.md +24 -2
  18. package/dist/ai/docs/nocobase/get-started/installation/docker-caddy.mdx +3 -0
  19. package/dist/ai/docs/nocobase/get-started/installation/docker-nginx.mdx +3 -0
  20. package/dist/ai/docs/nocobase/get-started/installation/docker.mdx +27 -3
  21. package/dist/ai/docs/nocobase/get-started/installation/env.md +34 -1
  22. package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/comment.md +107 -0
  23. package/dist/ai/docs/nocobase/interface-builder/blocks/data-blocks/gantt.md +204 -0
  24. package/dist/ai/docs/nocobase/interface-builder/index.md +7 -6
  25. package/dist/ai/docs/nocobase/interface-builder/ui-layout/desktop.md +97 -0
  26. package/dist/ai/docs/nocobase/interface-builder/ui-layout/index.md +50 -0
  27. package/dist/ai/docs/nocobase/interface-builder/ui-layout/mobile.md +133 -0
  28. package/dist/ai/docs/nocobase/nocobase-cli/production/index.md +10 -0
  29. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/caddy.md +15 -2
  30. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/index.md +1 -1
  31. package/dist/ai/docs/nocobase/nocobase-cli/production/reverse-proxy/nginx.md +16 -2
  32. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-block-comment/index.md +14 -0
  33. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-multi-portal/index.md +16 -0
  34. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-ui-layout/index.md +14 -0
  35. package/dist/ai/docs/nocobase/plugins/@nocobase/plugin-workflow-transaction/index.md +16 -0
  36. package/dist/ai/docs/nocobase/runjs/context/ai.md +206 -0
  37. package/dist/ai/docs/nocobase/workflow/development/api.md +259 -77
  38. package/dist/ai/docs/nocobase/workflow/development/index.md +2 -1
  39. package/dist/ai/docs/nocobase/workflow/development/migration.md +319 -0
  40. package/dist/ai/docs/nocobase/workflow/development/node.md +84 -51
  41. package/dist/ai/docs/nocobase/workflow/development/trigger.md +122 -20
  42. package/dist/ai/docs/nocobase/workflow/nodes/index.md +2 -1
  43. package/dist/ai/docs/nocobase/workflow/nodes/transaction.md +81 -0
  44. package/dist/ai/tools/executeFrontendTool.d.ts +10 -0
  45. package/dist/ai/tools/executeFrontendTool.js +86 -0
  46. package/dist/ai/tools/formFiller.js +4 -3
  47. package/dist/ai/tools/loadFrontendTool.d.ts +10 -0
  48. package/dist/ai/tools/loadFrontendTool.js +99 -0
  49. package/dist/ai/tools/subAgentWebSearch.js +20 -15
  50. package/dist/client/23.65ea8c37cd4b884b.js +10 -0
  51. package/dist/client/264.cc98933ef65608b6.js +10 -0
  52. package/dist/client/336.7a8a8853196ad779.js +11 -0
  53. package/dist/client/372.49163fac65cef81c.js +10 -0
  54. package/dist/client/416.92b74ca47e4099c4.js +10 -0
  55. package/dist/client/446.d63c38d0309fe250.js +10 -0
  56. package/dist/client/525.94dd4136c1361477.js +10 -0
  57. package/dist/client/663.680bcf6272a8504d.js +10 -0
  58. package/dist/client/681.399948c18d753667.js +10 -0
  59. package/dist/client/705.19b642db34de438a.js +10 -0
  60. package/dist/client/ai-employees/1.x/selector/AIContextCollector.d.ts +1 -4
  61. package/dist/client/ai-employees/permissions/PermissionsTab.d.ts +21 -5
  62. package/dist/client/index.d.ts +15 -20
  63. package/dist/client/index.js +8 -8
  64. package/dist/client/workflow/nodes/employee/index.d.ts +2 -23
  65. package/dist/client/workflow/nodes/llm/index.d.ts +2 -52
  66. package/dist/client/workflow/triggers/ai-employee/index.d.ts +2 -83
  67. package/dist/client-v2/23.1bcb6986b40723d8.js +10 -0
  68. package/dist/client-v2/264.be92ff6a4d2612f1.js +10 -0
  69. package/dist/client-v2/336.e406470429e0670e.js +11 -0
  70. package/dist/client-v2/372.387161cdeb106987.js +10 -0
  71. package/dist/client-v2/406.341be51205c674e0.js +10 -0
  72. package/dist/client-v2/416.0e1c2d9cde43b83d.js +10 -0
  73. package/dist/client-v2/446.073d450882db29fd.js +10 -0
  74. package/dist/client-v2/457.d72febb89e88fc00.js +10 -0
  75. package/dist/client-v2/663.342341f0b2b412d8.js +10 -0
  76. package/dist/client-v2/681.082f4f1c7b841983.js +10 -0
  77. package/dist/client-v2/705.8dc34d43f02f322c.js +10 -0
  78. package/dist/{client/ai-employees/admin/AvatarSelect.d.ts → client-v2/ai-employees/AIEmployeeDropdown.d.ts} +8 -9
  79. package/dist/client-v2/ai-employees/AIEmployeeShortcut.d.ts +9 -2
  80. package/dist/{client → client-v2}/ai-employees/AddContextButton.d.ts +1 -1
  81. package/dist/{client → client-v2}/ai-employees/ai-coding/AICodingButton.d.ts +2 -1
  82. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Actions.d.ts +2 -4
  83. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/AddLLMModal.d.ts +2 -4
  84. package/dist/client-v2/ai-employees/chatbox/components/Attachments.d.ts +27 -0
  85. package/dist/{client/ai-employees/permissions/Permissions.d.ts → client-v2/ai-employees/chatbox/components/ChatBox.d.ts} +2 -2
  86. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatBoxLayout.d.ts +1 -1
  87. package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ContextItem.d.ts +1 -1
  88. package/dist/{client/ai-employees/admin/Employees.d.ts → client-v2/ai-employees/chatbox/components/DebugPanel.d.ts} +1 -1
  89. package/dist/{client/ai-employees/chatbox/markdown/Code.d.ts → client-v2/ai-employees/chatbox/components/Markdown.d.ts} +12 -5
  90. package/dist/{client/ai-employees/admin/ProfileSettings.d.ts → client-v2/ai-employees/chatbox/components/MessageContent.d.ts} +3 -2
  91. package/dist/client-v2/ai-employees/chatbox/components/MessageRenderers.d.ts +39 -0
  92. package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolCard.d.ts +7 -5
  93. package/dist/{client/ai-employees/admin/datasource/components/basic → client-v2/ai-employees/chatbox/components}/index.d.ts +5 -2
  94. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChat.d.ts +21 -22
  95. package/dist/client-v2/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +3 -2
  96. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatConversationActions.d.ts +2 -2
  97. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatMessageActions.d.ts +8 -4
  98. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useToolCallActions.d.ts +1 -1
  99. package/dist/client-v2/ai-employees/chatbox/hooks/useUploadFiles.d.ts +46 -0
  100. package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useWorkflowTasks.d.ts +1 -1
  101. package/dist/{client → client-v2}/ai-employees/chatbox/model.d.ts +9 -2
  102. package/dist/client-v2/ai-employees/chatbox/roles.d.ts +162 -0
  103. package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +1 -49
  104. package/dist/client-v2/ai-employees/chatbox/stores/chat-conversations.d.ts +2 -19
  105. package/dist/client-v2/ai-employees/chatbox/stores/chat-messages.d.ts +1 -46
  106. package/dist/{client → client-v2}/ai-employees/chatbox/stores/chat-tool-call.d.ts +1 -15
  107. package/dist/client-v2/ai-employees/chatbox/stores/chat-tools.d.ts +30 -0
  108. package/dist/client-v2/ai-employees/chatbox/stores/create-selectors.d.ts +31 -3
  109. package/dist/{client/ai-employees/chatbox/conversations/common.d.ts → client-v2/ai-employees/chatbox/stores/workflow-tasks.d.ts} +21 -4
  110. package/dist/client-v2/ai-employees/chatbox/utils/normalizeTriggerTaskOptions.d.ts +19 -0
  111. package/dist/{client → client-v2}/ai-employees/chatbox/utils.d.ts +26 -7
  112. package/dist/{client/ai-employees/data-visualization/context.d.ts → client-v2/ai-employees/context/chart-config.d.ts} +1 -1
  113. package/dist/{client → client-v2}/ai-employees/context/code-editor.d.ts +1 -1
  114. package/dist/{client → client-v2}/ai-employees/context/datasource.d.ts +1 -1
  115. package/dist/{client → client-v2}/ai-employees/context/flow-models.d.ts +1 -1
  116. package/dist/{client/ai-employees/admin/datasource/components/DatasourceSettingDetail.d.ts → client-v2/ai-employees/data-modeling/setup.d.ts} +6 -5
  117. package/dist/{client → client-v2}/ai-employees/datasource/DatasourceSelector.d.ts +6 -2
  118. package/dist/{client/ai-employees/admin/datasource/flow-models/DatasourceSettingModel.d.ts → client-v2/ai-employees/flow/index.d.ts} +4 -6
  119. package/dist/{client → client-v2}/ai-employees/form-filler/tools/index.d.ts +1 -1
  120. package/dist/{client/ai-employees/ai-coding/tools/index.d.ts → client-v2/ai-employees/frontend-tools.d.ts} +3 -3
  121. package/dist/{client → client-v2}/ai-employees/stores/ai-selection.d.ts +4 -4
  122. package/dist/{client → client-v2}/ai-employees/stores/dialog-controller.d.ts +4 -4
  123. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportCard.d.ts +2 -2
  124. package/dist/{client/ai-employees/business-report/ui → client-v2/ai-employees/tools}/BusinessReportModal.d.ts +2 -2
  125. package/dist/{client/ai-employees/1.x/selector/withAISelectable.d.ts → client-v2/ai-employees/tools/ChartGeneratorCard.d.ts} +5 -4
  126. package/dist/{client/ai-employees/ai-coding/ui → client-v2/ai-employees/tools}/CodeToolCard.d.ts +1 -1
  127. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingCard.d.ts +3 -5
  128. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools}/DataModelingModal.d.ts +4 -6
  129. package/dist/{client/ai-employees/sub-agents/ui → client-v2/ai-employees/tools}/SubAgentDispatchCard.d.ts +4 -9
  130. package/dist/{client/ai-employees/AISettingsProvider.d.ts → client-v2/ai-employees/tools/SuggestionsOptionsCard.d.ts} +6 -8
  131. package/dist/{client/ai-employees/workflow-tasks/ui → client-v2/ai-employees/tools}/WorkflowTaskOutputCard.d.ts +7 -2
  132. package/dist/{client/ai-employees/ai-coding/tools/context-tools.d.ts → client-v2/ai-employees/tools/ai-coding.d.ts} +3 -1
  133. package/dist/client-v2/ai-employees/tools/business-report-utils.d.ts +45 -0
  134. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/CollectionNode.d.ts +2 -3
  135. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Diagram.d.ts +1 -1
  136. package/dist/{client/ai-employees/data-modeling/ui → client-v2/ai-employees/tools/data-modeling}/Table.d.ts +2 -2
  137. package/dist/client-v2/ai-employees/tools/data-modeling/legacy-template.d.ts +13 -0
  138. package/dist/client-v2/ai-employees/tools/data-modeling/runtime.d.ts +15 -0
  139. package/dist/{client/ai-employees → client-v2/ai-employees/tools}/data-modeling/types.d.ts +27 -4
  140. package/dist/client-v2/ai-employees/tools/data-modeling/useFieldInterfaceOptions.d.ts +151 -0
  141. package/dist/{client/ai-employees/data-visualization/tools/index.d.ts → client-v2/ai-employees/tools/data-visualization.d.ts} +1 -1
  142. package/dist/client-v2/ai-employees/tools/index.d.ts +32 -0
  143. package/dist/client-v2/ai-employees/types.d.ts +104 -7
  144. package/dist/client-v2/components/RemoteSelect.d.ts +43 -0
  145. package/dist/{client → client-v2}/debug-logger.d.ts +2 -2
  146. package/dist/client-v2/f0053e745af0ad03.svg +50 -0
  147. package/dist/client-v2/index.d.ts +9 -8
  148. package/dist/client-v2/index.js +37 -1
  149. package/dist/client-v2/llm-providers/forms.d.ts +44 -0
  150. package/dist/client-v2/llm-providers/index.d.ts +24 -0
  151. package/dist/{client/ai-employees/chart-generator/tools/index.d.ts → client-v2/llm-services/utils.d.ts} +5 -2
  152. package/dist/client-v2/locale.d.ts +14 -0
  153. package/dist/client-v2/manager/ai-manager.d.ts +57 -0
  154. package/dist/client-v2/manager/frontend-tool-registry.d.ts +30 -0
  155. package/dist/client-v2/models/ai-employees/AIEmployeeActionModel.d.ts +33 -0
  156. package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +44 -0
  157. package/dist/client-v2/pages/AdminSettingsPage.d.ts +24 -0
  158. package/dist/client-v2/pages/DatasourceSettingsPage.d.ts +62 -0
  159. package/dist/client-v2/pages/EmployeesPage.d.ts +63 -0
  160. package/dist/client-v2/pages/LLMServicesPage.d.ts +75 -0
  161. package/dist/client-v2/pages/MCPSettingsPage.d.ts +73 -0
  162. package/dist/client-v2/pages/drawerWidth.d.ts +10 -0
  163. package/dist/client-v2/pages/permissions/Permissions.d.ts +67 -0
  164. package/dist/client-v2/pages/permissions/PermissionsTab.d.ts +12 -0
  165. package/dist/client-v2/pages/useUnsavedChangesBeforeClose.d.ts +29 -0
  166. package/dist/client-v2/plugin.d.ts +33 -0
  167. package/dist/client-v2/repositories/AIConfigRepository.d.ts +3 -23
  168. package/dist/client-v2/runjs/registerAIEmployeeRunJSFacade.d.ts +20 -0
  169. package/dist/client-v2/workflow/components/FormValueRegistry.d.ts +12 -0
  170. package/dist/{client/components/ListCollapse.d.ts → client-v2/workflow/components/WorkflowListCollapse.d.ts} +4 -4
  171. package/dist/client-v2/workflow/constants.d.ts +26 -0
  172. package/dist/client-v2/workflow/nodes/employee/components/AIEmployeeFieldset.d.ts +11 -0
  173. package/dist/{client/ai-employees/common/CodeHighlight.d.ts → client-v2/workflow/nodes/employee/components/AIEmployeeSelect.d.ts} +5 -6
  174. package/dist/{client/ai-employees/ContextAwareTooltip.d.ts → client-v2/workflow/nodes/employee/components/Assignees.d.ts} +2 -1
  175. package/dist/client-v2/workflow/nodes/employee/components/FeedbackSettings.d.ts +17 -0
  176. package/dist/client-v2/workflow/nodes/employee/components/FileInputs.d.ts +11 -0
  177. package/dist/{client/ai-employees/AIEmployeesProvider.d.ts → client-v2/workflow/nodes/employee/components/MessageInputs.d.ts} +2 -3
  178. package/dist/client-v2/workflow/nodes/employee/components/ModelOptions.d.ts +17 -0
  179. package/dist/{client/ai-employees/admin/datasource/components/basic/CollectionCascader.d.ts → client-v2/workflow/nodes/employee/components/SkillSettings.d.ts} +6 -3
  180. package/dist/client-v2/workflow/nodes/employee/components/StructuredOutput.d.ts +11 -0
  181. package/dist/client-v2/workflow/nodes/employee/components/UserInput.d.ts +18 -0
  182. package/dist/client-v2/workflow/nodes/employee/components/WebSearchOptions.d.ts +16 -0
  183. package/dist/client-v2/workflow/nodes/employee/index.d.ts +23 -0
  184. package/dist/{client/ai-employees/AIEmployeeListItem.d.ts → client-v2/workflow/nodes/llm/components/LLMFieldset.d.ts} +3 -5
  185. package/dist/{client/admin-settings/AdminSettings.d.ts → client-v2/workflow/nodes/llm/components/Messages.d.ts} +2 -1
  186. package/dist/client-v2/workflow/nodes/llm/components/StructuredOutput.d.ts +11 -0
  187. package/dist/client-v2/workflow/nodes/llm/index.d.ts +30 -0
  188. package/dist/{client/ai-employees/1.x/selector/BlockSelector.d.ts → client-v2/workflow/register.d.ts} +2 -6
  189. package/dist/client-v2/workflow/triggers/ai-employee/AIEmployeeTriggerConfig.d.ts +11 -0
  190. package/dist/client-v2/workflow/triggers/ai-employee/Parameters.d.ts +11 -0
  191. package/dist/client-v2/workflow/triggers/ai-employee/index.d.ts +25 -0
  192. package/dist/client-v2/workflow/types.d.ts +128 -0
  193. package/dist/common/frontend-tools.d.ts +26 -0
  194. package/dist/common/frontend-tools.js +57 -0
  195. package/dist/externalVersion.js +20 -25
  196. package/dist/locale/en-US.json +48 -1
  197. package/dist/locale/zh-CN.json +48 -1
  198. package/dist/node_modules/@langchain/mistralai/package.json +1 -1
  199. package/dist/node_modules/@langchain/xai/package.json +1 -1
  200. package/dist/node_modules/fs-extra/package.json +1 -1
  201. package/dist/node_modules/jsonrepair/package.json +1 -1
  202. package/dist/node_modules/just-bash/package.json +1 -1
  203. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  204. package/dist/node_modules/openai/package.json +1 -1
  205. package/dist/node_modules/zod/package.json +1 -1
  206. package/dist/server/ai-employees/ai-conversations.d.ts +2 -0
  207. package/dist/server/ai-employees/ai-employee.d.ts +1 -1
  208. package/dist/server/ai-employees/ai-employee.js +27 -8
  209. package/dist/server/ai-employees/prompts.d.ts +2 -1
  210. package/dist/server/ai-employees/prompts.js +8 -2
  211. package/dist/server/ai-employees/tool-call-sanitizer.d.ts +1 -0
  212. package/dist/server/ai-employees/tool-call-sanitizer.js +2 -1
  213. package/dist/server/ai-employees/utils.js +11 -5
  214. package/dist/server/collections/ai-usage-events.d.ts +10 -0
  215. package/dist/server/collections/ai-usage-events.js +183 -0
  216. package/dist/server/document-loader/constants.js +1 -0
  217. package/dist/server/frontend-tools.d.ts +25 -0
  218. package/dist/server/frontend-tools.js +171 -0
  219. package/dist/server/llm-providers/dashscope.d.ts +2 -1
  220. package/dist/server/llm-providers/dashscope.js +16 -1
  221. package/dist/server/llm-providers/deepseek.d.ts +2 -1
  222. package/dist/server/llm-providers/deepseek.js +33 -2
  223. package/dist/server/llm-providers/kimi/provider.d.ts +2 -1
  224. package/dist/server/llm-providers/kimi/provider.js +22 -2
  225. package/dist/server/llm-providers/mistral.d.ts +36 -2
  226. package/dist/server/llm-providers/mistral.js +62 -2
  227. package/dist/server/llm-providers/openai/completions.d.ts +2 -1
  228. package/dist/server/llm-providers/openai/completions.js +17 -1
  229. package/dist/server/llm-providers/openai/responses.d.ts +2 -1
  230. package/dist/server/llm-providers/openai/responses.js +17 -1
  231. package/dist/server/llm-providers/provider.d.ts +7 -0
  232. package/dist/server/llm-providers/provider.js +7 -1
  233. package/dist/server/manager/ai-chat-conversation.js +2 -0
  234. package/dist/server/manager/ai-context-datasource-manager.js +34 -7
  235. package/dist/server/manager/ai-manager.d.ts +2 -1
  236. package/dist/server/manager/ai-manager.js +4 -1
  237. package/dist/server/manager/ai-usage-events.d.ts +49 -0
  238. package/dist/server/manager/ai-usage-events.js +195 -0
  239. package/dist/server/manager/work-context-handler.js +10 -3
  240. package/dist/server/resource/aiConversations.d.ts +2 -0
  241. package/dist/server/resource/aiConversations.js +27 -1
  242. package/package.json +5 -5
  243. package/dist/client/119.c6bf8c6433167d81.js +0 -10
  244. package/dist/client/170.d98eacdc00d9d527.js +0 -10
  245. package/dist/client/228.b4b709f93b86b6b9.js +0 -10
  246. package/dist/client/280.003b9e9788599244.js +0 -10
  247. package/dist/client/290.0f7f441d8a94f03c.js +0 -10
  248. package/dist/client/331.d547c95410476a69.js +0 -10
  249. package/dist/client/406.15c09d98faa2ccf1.js +0 -10
  250. package/dist/client/428.5eb4f53ddbb6a3b8.js +0 -10
  251. package/dist/client/462.d172d0fe91519e35.js +0 -10
  252. package/dist/client/486.dcac8f3fcec19c33.js +0 -10
  253. package/dist/client/502.2b4a51e0a8122e52.js +0 -10
  254. package/dist/client/525.33a9c8ec28be4ec4.js +0 -10
  255. package/dist/client/559.959c46d0056ccdc8.js +0 -10
  256. package/dist/client/561.7ec804ef39ec7dcd.js +0 -10
  257. package/dist/client/580.35ba54ff91b7fe6d.js +0 -10
  258. package/dist/client/597.b0d64948d74cf6cb.js +0 -10
  259. package/dist/client/604.89c674f35b52b4ef.js +0 -10
  260. package/dist/client/614.aa766080f6b99aab.js +0 -10
  261. package/dist/client/646.07bb23e72fb6eb15.js +0 -10
  262. package/dist/client/687.224e569a99cae4bb.js +0 -10
  263. package/dist/client/699.57c0a1acb723202a.js +0 -10
  264. package/dist/client/711.92cd94681fde7e05.js +0 -10
  265. package/dist/client/758.a9741e81911e53c3.js +0 -10
  266. package/dist/client/768.5177bff46ae71a5b.js +0 -10
  267. package/dist/client/792.abb57765453bcbcc.js +0 -10
  268. package/dist/client/820.f72ef2462b61d812.js +0 -10
  269. package/dist/client/832.0cf69e3f43c320b2.js +0 -10
  270. package/dist/client/927.d95c74ebb8fd51c9.js +0 -10
  271. package/dist/client/ai-employees/1.x/selector/AISelectorProvider.d.ts +0 -33
  272. package/dist/client/ai-employees/ProfileCard.d.ts +0 -15
  273. package/dist/client/ai-employees/admin/ChatSettings.d.ts +0 -10
  274. package/dist/client/ai-employees/admin/DataSourceSettings.d.ts +0 -10
  275. package/dist/client/ai-employees/admin/EnableSwitch.d.ts +0 -10
  276. package/dist/client/ai-employees/admin/InputsFormSettings.d.ts +0 -10
  277. package/dist/client/ai-employees/admin/KnowledgeBaseSettings.d.ts +0 -10
  278. package/dist/client/ai-employees/admin/ModelSettings.d.ts +0 -10
  279. package/dist/client/ai-employees/admin/SkillSettings.d.ts +0 -19
  280. package/dist/client/ai-employees/admin/SystemPrompt.d.ts +0 -10
  281. package/dist/client/ai-employees/admin/Templates.d.ts +0 -10
  282. package/dist/client/ai-employees/admin/ToolsSettings.d.ts +0 -17
  283. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingForm.d.ts +0 -10
  284. package/dist/client/ai-employees/admin/datasource/components/DatasourceSettingGrid.d.ts +0 -10
  285. package/dist/client/ai-employees/admin/datasource/components/basic/FieldsTransfer.d.ts +0 -17
  286. package/dist/client/ai-employees/admin/datasource/components/form-steps/CollectionSetting.d.ts +0 -17
  287. package/dist/client/ai-employees/admin/datasource/components/form-steps/FieldsSetting.d.ts +0 -15
  288. package/dist/client/ai-employees/admin/datasource/components/form-steps/FilterSetting.d.ts +0 -17
  289. package/dist/client/ai-employees/admin/datasource/components/form-steps/Preview.d.ts +0 -13
  290. package/dist/client/ai-employees/admin/datasource/components/form-steps/SortSetting.d.ts +0 -15
  291. package/dist/client/ai-employees/admin/datasource/components/form-steps/index.d.ts +0 -13
  292. package/dist/client/ai-employees/admin/datasource/components/index.d.ts +0 -9
  293. package/dist/client/ai-employees/admin/datasource/context.d.ts +0 -17
  294. package/dist/client/ai-employees/admin/datasource/flow-models/index.d.ts +0 -9
  295. package/dist/client/ai-employees/admin/datasource/index.d.ts +0 -10
  296. package/dist/client/ai-employees/admin/hooks.d.ts +0 -39
  297. package/dist/client/ai-employees/admin/mcp/MCPSettings.d.ts +0 -10
  298. package/dist/client/ai-employees/admin/mcp/MCPToolsList.d.ts +0 -19
  299. package/dist/client/ai-employees/admin/mcp/context.d.ts +0 -15
  300. package/dist/client/ai-employees/admin/mcp/schemas.d.ts +0 -1314
  301. package/dist/client/ai-employees/ai-coding/CodeHistory.d.ts +0 -10
  302. package/dist/client/ai-employees/ai-coding/markdown/Code.d.ts +0 -16
  303. package/dist/client/ai-employees/avatars.d.ts +0 -9
  304. package/dist/client/ai-employees/built-in/utils.d.ts +0 -15
  305. package/dist/client/ai-employees/business-report/tools/index.d.ts +0 -10
  306. package/dist/client/ai-employees/business-report/ui/report-utils.d.ts +0 -38
  307. package/dist/client/ai-employees/chart-generator/ui/ECharts.d.ts +0 -13
  308. package/dist/client/ai-employees/chatbox/AIThinking.d.ts +0 -12
  309. package/dist/client/ai-employees/chatbox/Attachment.d.ts +0 -14
  310. package/dist/client/ai-employees/chatbox/AttachmentsHeader.d.ts +0 -10
  311. package/dist/client/ai-employees/chatbox/ChatBox.d.ts +0 -12
  312. package/dist/client/ai-employees/chatbox/ContextItemsHeader.d.ts +0 -10
  313. package/dist/client/ai-employees/chatbox/DebugPanel.d.ts +0 -16
  314. package/dist/client/ai-employees/chatbox/EditMessageHeader.d.ts +0 -10
  315. package/dist/client/ai-employees/chatbox/HintMessageHeader.d.ts +0 -10
  316. package/dist/client/ai-employees/chatbox/MessageRenderer.d.ts +0 -33
  317. package/dist/client/ai-employees/chatbox/SenderFooter.d.ts +0 -13
  318. package/dist/client/ai-employees/chatbox/SenderHeader.d.ts +0 -10
  319. package/dist/client/ai-employees/chatbox/SenderPrefix.d.ts +0 -10
  320. package/dist/client/ai-employees/chatbox/Upload.d.ts +0 -12
  321. package/dist/client/ai-employees/chatbox/VirtualList.d.ts +0 -28
  322. package/dist/client/ai-employees/chatbox/conversations/ConversationsList.d.ts +0 -13
  323. package/dist/client/ai-employees/chatbox/conversations/WorkflowTasksList.d.ts +0 -13
  324. package/dist/client/ai-employees/chatbox/conversations/index.d.ts +0 -9
  325. package/dist/client/ai-employees/chatbox/generative-ui/DefaultToolCard.d.ts +0 -16
  326. package/dist/client/ai-employees/chatbox/hooks/useChatBoxActions.d.ts +0 -18
  327. package/dist/client/ai-employees/chatbox/hooks/useUploadFiles.d.ts +0 -12
  328. package/dist/client/ai-employees/chatbox/markdown/ECharts.d.ts +0 -10
  329. package/dist/client/ai-employees/chatbox/markdown/Form.d.ts +0 -10
  330. package/dist/client/ai-employees/chatbox/markdown/Generating.d.ts +0 -10
  331. package/dist/client/ai-employees/chatbox/markdown/Markdown.d.ts +0 -13
  332. package/dist/client/ai-employees/chatbox/roles.d.ts +0 -32
  333. package/dist/client/ai-employees/chatbox/stores/chat-box.d.ts +0 -9
  334. package/dist/client/ai-employees/chatbox/stores/chat-conversations.d.ts +0 -9
  335. package/dist/client/ai-employees/chatbox/stores/chat-messages.d.ts +0 -9
  336. package/dist/client/ai-employees/chatbox/stores/chat-tools.d.ts +0 -51
  337. package/dist/client/ai-employees/chatbox/stores/create-selectors.d.ts +0 -18
  338. package/dist/client/ai-employees/chatbox/stores/workflow-tasks.d.ts +0 -45
  339. package/dist/client/ai-employees/context/classic-pages.d.ts +0 -10
  340. package/dist/client/ai-employees/data-modeling/Table.d.ts +0 -12
  341. package/dist/client/ai-employees/data-modeling/setup.d.ts +0 -10
  342. package/dist/client/ai-employees/data-modeling/tools/index.d.ts +0 -10
  343. package/dist/client/ai-employees/data-modeling/ui/useFieldInterfaceOptions.d.ts +0 -14
  344. package/dist/client/ai-employees/datasource/DatasourceList.d.ts +0 -17
  345. package/dist/client/ai-employees/datasource/index.d.ts +0 -9
  346. package/dist/client/ai-employees/flow/events/index.d.ts +0 -9
  347. package/dist/client/ai-employees/flow/index.d.ts +0 -36
  348. package/dist/client/ai-employees/flow/models/AIEmployeeActionModel.d.ts +0 -18
  349. package/dist/client/ai-employees/flow/models/AIEmployeeShortcutModel.d.ts +0 -30
  350. package/dist/client/ai-employees/shortcuts/ShortcutList.d.ts +0 -10
  351. package/dist/client/ai-employees/shortcuts/useShortcuts.d.ts +0 -13
  352. package/dist/client/ai-employees/stores/context-aware.d.ts +0 -19
  353. package/dist/client/ai-employees/sub-agents/tools/index.d.ts +0 -10
  354. package/dist/client/ai-employees/suggestions/tools/index.d.ts +0 -10
  355. package/dist/client/ai-employees/suggestions/ui/SuggestionsOptions.d.ts +0 -13
  356. package/dist/client/ai-employees/types.d.ts +0 -259
  357. package/dist/client/ai-employees/workflow-tasks/tools/index.d.ts +0 -10
  358. package/dist/client/chat-settings/Messages.d.ts +0 -11
  359. package/dist/client/chat-settings/StructuredOutput.d.ts +0 -11
  360. package/dist/client/components/skill-settings.d.ts +0 -22
  361. package/dist/client/features/components.d.ts +0 -9
  362. package/dist/client/features/feature-manager.d.ts +0 -9
  363. package/dist/client/features/index.d.ts +0 -9
  364. package/dist/client/features/vector-database-provider.d.ts +0 -9
  365. package/dist/client/features/vector-store-provider.d.ts +0 -9
  366. package/dist/client/llm-providers/anthropic/ModelSettings.d.ts +0 -10
  367. package/dist/client/llm-providers/anthropic/ProviderSettings.d.ts +0 -10
  368. package/dist/client/llm-providers/anthropic/index.d.ts +0 -10
  369. package/dist/client/llm-providers/components/Chat.d.ts +0 -10
  370. package/dist/client/llm-providers/components/ModelSelect.d.ts +0 -10
  371. package/dist/client/llm-providers/dashscope/ModelSettings.d.ts +0 -10
  372. package/dist/client/llm-providers/dashscope/ProviderSettings.d.ts +0 -10
  373. package/dist/client/llm-providers/dashscope/index.d.ts +0 -10
  374. package/dist/client/llm-providers/deepseek/ModelSettings.d.ts +0 -10
  375. package/dist/client/llm-providers/deepseek/index.d.ts +0 -10
  376. package/dist/client/llm-providers/google-genai/MessageRenderer.d.ts +0 -13
  377. package/dist/client/llm-providers/google-genai/ModelSettings.d.ts +0 -10
  378. package/dist/client/llm-providers/google-genai/ProviderSettings.d.ts +0 -10
  379. package/dist/client/llm-providers/google-genai/index.d.ts +0 -10
  380. package/dist/client/llm-providers/kimi/ModelSettings.d.ts +0 -10
  381. package/dist/client/llm-providers/kimi/index.d.ts +0 -10
  382. package/dist/client/llm-providers/mimo/ModelSettings.d.ts +0 -10
  383. package/dist/client/llm-providers/mimo/index.d.ts +0 -10
  384. package/dist/client/llm-providers/mistral/ModelSettings.d.ts +0 -10
  385. package/dist/client/llm-providers/mistral/index.d.ts +0 -10
  386. package/dist/client/llm-providers/ollama/ModelSettings.d.ts +0 -10
  387. package/dist/client/llm-providers/ollama/ProviderSettings.d.ts +0 -10
  388. package/dist/client/llm-providers/ollama/index.d.ts +0 -10
  389. package/dist/client/llm-providers/openai/completions/ModelSettings.d.ts +0 -10
  390. package/dist/client/llm-providers/openai/completions/index.d.ts +0 -10
  391. package/dist/client/llm-providers/openai/components/ProviderSettings.d.ts +0 -10
  392. package/dist/client/llm-providers/openai/responses/ModelSettings.d.ts +0 -10
  393. package/dist/client/llm-providers/openai/responses/index.d.ts +0 -10
  394. package/dist/client/llm-providers/orcarouter/ModelSettings.d.ts +0 -10
  395. package/dist/client/llm-providers/orcarouter/ProviderSettings.d.ts +0 -10
  396. package/dist/client/llm-providers/orcarouter/index.d.ts +0 -10
  397. package/dist/client/llm-providers/tongyi/ModelSettings.d.ts +0 -10
  398. package/dist/client/llm-providers/tongyi/ProviderSettings.d.ts +0 -10
  399. package/dist/client/llm-providers/tongyi/index.d.ts +0 -10
  400. package/dist/client/llm-providers/xai/ModelSettings.d.ts +0 -10
  401. package/dist/client/llm-providers/xai/index.d.ts +0 -10
  402. package/dist/client/llm-services/LLMServices.d.ts +0 -13
  403. package/dist/client/llm-services/component/DefaultModelSelect.d.ts +0 -10
  404. package/dist/client/llm-services/component/EnabledModelsSelect.d.ts +0 -23
  405. package/dist/client/llm-services/component/LLMTestFlight.d.ts +0 -10
  406. package/dist/client/llm-services/component/ModelOptionsSettings.d.ts +0 -10
  407. package/dist/client/llm-services/component/UnifiedModelSettings.d.ts +0 -10
  408. package/dist/client/llm-services/hooks/useLLMServiceCatalog.d.ts +0 -18
  409. package/dist/client/llm-services/llm-providers.d.ts +0 -27
  410. package/dist/client/llm-services/utils.d.ts +0 -35
  411. package/dist/client/manager/ai-feature-manager.d.ts +0 -9
  412. package/dist/client/manager/ai-manager.d.ts +0 -35
  413. package/dist/client/repositories/AIConfigRepository.d.ts +0 -60
  414. package/dist/client/repositories/hooks/useAIConfigRepository.d.ts +0 -10
  415. package/dist/client/schemas/llms.d.ts +0 -347
  416. package/dist/client/workflow/nodes/employee/components/AIEmployeeSelect.d.ts +0 -10
  417. package/dist/client/workflow/nodes/employee/components/assigness.d.ts +0 -11
  418. package/dist/client/workflow/nodes/employee/components/file-inputs.d.ts +0 -10
  419. package/dist/client/workflow/nodes/employee/components/message-inputs.d.ts +0 -12
  420. package/dist/client/workflow/nodes/employee/components/model-options.d.ts +0 -10
  421. package/dist/client/workflow/nodes/employee/components/structured-output.d.ts +0 -10
  422. package/dist/client/workflow/nodes/employee/components/users-select.d.ts +0 -13
  423. package/dist/client/workflow/nodes/employee/components/web-search-options.d.ts +0 -10
  424. package/dist/client/workflow/nodes/employee/configuration.d.ts +0 -12
  425. package/dist/client/workflow/nodes/employee/flow-models/feedback.d.ts +0 -14
  426. package/dist/client/workflow/nodes/employee/flow-models/task.d.ts +0 -13
  427. package/dist/client/workflow/nodes/llm/ModelSettings.d.ts +0 -11
  428. package/dist/client/workflow/triggers/ai-employee/Parameters.d.ts +0 -13
  429. /package/dist/{client → client-v2}/ai-employees/AISelection.d.ts +0 -0
  430. /package/dist/{client → client-v2}/ai-employees/AISelectionControl.d.ts +0 -0
  431. /package/dist/{client → client-v2}/ai-employees/ai-coding/prompts.d.ts +0 -0
  432. /package/dist/{client → client-v2}/ai-employees/ai-coding/setup.d.ts +0 -0
  433. /package/dist/{client/ai-employees/chatbox/AIEmployeeSwitch.d.ts → client-v2/ai-employees/chatbox/components/AIEmployeeSwitcher.d.ts} +0 -0
  434. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ChatButton.d.ts +0 -0
  435. /package/dist/{client/ai-employees/chatbox/conversations → client-v2/ai-employees/chatbox/components}/Conversations.d.ts +0 -0
  436. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Messages.d.ts +0 -0
  437. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/ModelSwitcher.d.ts +0 -0
  438. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/SearchSwitch.d.ts +0 -0
  439. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/Sender.d.ts +0 -0
  440. /package/dist/{client/ai-employees/chatbox/generative-ui → client-v2/ai-employees/chatbox/components}/ToolModal.d.ts +0 -0
  441. /package/dist/{client/ai-employees/chatbox → client-v2/ai-employees/chatbox/components}/UserPrompt.d.ts +0 -0
  442. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useChatBoxEffect.d.ts +0 -0
  443. /package/dist/{client → client-v2}/ai-employees/chatbox/hooks/useLoadMoreObserver.d.ts +0 -0
  444. /package/dist/client-v2/ai-employees/{chatbox/stores → stores}/global-store.d.ts +0 -0
  445. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/AIEmployeeShortcutListModel.d.ts +0 -0
  446. /package/dist/{client/ai-employees/flow/models → client-v2/models/ai-employees}/index.d.ts +0 -0
  447. /package/dist/{client/ai-employees/flow/events/ai-context-selection.d.ts → client-v2/workflow/components/index.d.ts} +0 -0
@@ -17,30 +17,6 @@ Currently, NocoBase has built-in support for the following engine types:
17
17
  - [S3 Pro](./s3-pro)
18
18
 
19
19
  The system automatically adds a local storage engine during installation, which can be used directly. You can also add new engines or edit the parameters of existing ones.
20
-
21
-
22
- If you are already using a storage engine that only supports public access and want to migrate historical files to S3 Pro, see [Migrate to S3 Pro](./migrate-to-s3-pro.md).
23
-
24
- ## File Accessibility
25
-
26
- Different storage engines support different file access controls. Before configuring a storage engine, confirm whether your files need private access:
27
-
28
- | Storage engine | File accessibility |
29
- | --- | --- |
30
- | [Local Storage](./local) | Only public access is supported; private access is not supported |
31
- | [Amazon S3](./amazon-s3) | Only public access is supported; private access is not supported |
32
- | [Aliyun OSS](./aliyun-oss) | Only public access is supported; private access is not supported |
33
- | [Tencent COS](./tencent-cos) | Only public access is supported; private access is not supported |
34
- | [S3 Pro](./s3-pro) | Private access is supported through temporary signed URLs |
35
-
36
- :::warning Note
37
-
38
- Local Storage, Amazon S3, Aliyun OSS, and Tencent COS do not perform login authentication for file access and do not generate temporary signed URLs. After a file is uploaded, anyone who has the file access URL can access it directly.
39
-
40
- If you need to store contracts, identity documents, internal materials, or other files that should not be public, use [S3 Pro](./s3-pro) and enable private access.
41
-
42
- :::
43
-
44
20
  ## Common Parameters
45
21
 
46
22
  In addition to the specific parameters for different engine types, the following are common parameters (using local storage as an example):
@@ -82,11 +58,75 @@ When checked, this is set as the system's default storage engine. When an attach
82
58
  When checked, the uploaded file in the storage engine will be kept even when the data record in the attachment or file collection is deleted. By default, this is not checked, meaning the file in the storage engine will be deleted along with the record.
83
59
 
84
60
  :::info{title=Tip}
85
- After a file is uploaded, the final access path is constructed by concatenating several parts:
61
+ When Original URL is selected, the final storage address is constructed from several parts:
86
62
 
87
63
  ```
88
64
  <Public URL prefix>/<Path>/<Filename><Extension>
89
65
  ```
90
66
 
91
67
  For example: `https://cdn.nocobase.com/app/user/avatar/20240529115151.png`.
92
- :::
68
+
69
+ When NocoBase URL is selected, the file record returns a NocoBase path in the `/files/...` format. The configuration above is still used when accessing the storage service.
70
+ :::
71
+
72
+ ## File URLs and access control
73
+
74
+ A storage engine can return either a NocoBase URL or the storage service's original URL. NocoBase URL is the default. Select Original URL only when an external service must use the storage address directly.
75
+
76
+ This configuration applies per storage engine. After it is saved, both existing files and newly uploaded files under that engine return URLs in the selected form. Files are not moved or uploaded again.
77
+
78
+ ![File URL configuration](https://static-docs.nocobase.com/20260723221234.png)
79
+
80
+ ### NocoBase URL
81
+
82
+ The file record returns an access path provided by NocoBase, for example:
83
+
84
+ ```text
85
+ /files/main/main/attachments/1.png
86
+ ```
87
+
88
+ Requests to this URL first pass through NocoBase and follow the view permissions configured for the corresponding file record. NocoBase reads the file or redirects to the address generated by the storage service only after the permission check succeeds.
89
+
90
+ This is the recommended default. The file record returns a NocoBase path, so callers do not need to know whether local or cloud storage is being used.
91
+
92
+ ### Original URL
93
+
94
+ The file record directly returns the address generated by the storage service, for example:
95
+
96
+ ```text
97
+ https://storage.example.com/path/to/file.png
98
+ ```
99
+
100
+ This URL does not pass through NocoBase and does not check the file record's view permissions. For local storage, it is a local static file address. For cloud storage, it is usually an object storage or CDN address.
101
+
102
+ Select Original URL only when Markdown, an external page, or a third-party service must use the storage address directly.
103
+
104
+ :::warning Note
105
+
106
+ After Original URL is selected, anyone with a valid URL can bypass NocoBase permission checks and access the file. If the URL has no signature or expiration, make sure the bucket and file allow public read access.
107
+
108
+ :::
109
+
110
+ ### Allow public access
111
+
112
+ Allow public access only takes effect when NocoBase URL is selected. When checked, the storage engine still returns a NocoBase URL, but NocoBase no longer checks the file record's permissions when the URL is accessed. Anyone with the URL can access the file.
113
+
114
+ This option does not change the storage service's own public-read configuration. It only controls whether NocoBase checks file record permissions.
115
+
116
+ ### How to choose
117
+
118
+ | Use case | File URL | Allow public access |
119
+ | --- | --- | --- |
120
+ | Files must follow role and data permissions | NocoBase URL | Unchecked |
121
+ | A publicly shareable NocoBase file address is required | NocoBase URL | Checked |
122
+ | Markdown, an external page, or a third-party service must read the storage address directly | Original URL | Not applicable |
123
+
124
+ :::warning Note
125
+
126
+ [Local Storage](./local), [Amazon S3](./amazon-s3), [Aliyun OSS](./aliyun-oss), and [Tencent COS](./tencent-cos) do not generate temporary signed URLs. Even when NocoBase URL and file record permissions are enabled, anyone who has already obtained the storage service's original address can still access the file directly.
127
+
128
+ For contracts, identity documents, internal materials, or other files that should not be public, use [S3 Pro](./s3-pro) and refer to its dedicated access-control configuration.
129
+
130
+ :::
131
+
132
+ If you are already using a public storage engine and want to migrate existing files to S3 Pro, see [Migrate to S3 Pro](./migrate-to-s3-pro.md).
@@ -12,7 +12,7 @@ Building on the File Manager plugin, this adds support for S3 protocol-compatibl
12
12
 
13
13
  1. Client-side upload: The file upload process does not go through the NocoBase server, but directly connects to the file storage service, providing a more efficient and faster upload experience.
14
14
 
15
- 2. Private access: When accessing files, all URLs are signed temporary authorized addresses, ensuring the security and timeliness of file access.
15
+ 2. Private access: Signed URLs with an expiration are used by default. Unsigned URLs can also be generated for public buckets.
16
16
 
17
17
 
18
18
  ## Use Cases
@@ -39,6 +39,57 @@ Building on the File Manager plugin, this adds support for S3 protocol-compatibl
39
39
 
40
40
  ![](https://static-docs.nocobase.com/20250413190828536.png)
41
41
 
42
+ ## URL Configuration
43
+
44
+ In addition to the File Manager's common NocoBase URL, Original URL, and Allow public access options, S3 Pro lets you configure upload and access URL formats separately and choose whether to use signed URLs. See [Storage Engine Overview](./index.md#file-urls-and-access-control) for the common options.
45
+
46
+ These options control different stages:
47
+
48
+ - NocoBase URL / Original URL controls which address the file record returns
49
+ - Allow public access controls whether file record view permissions are checked when a NocoBase URL is accessed
50
+ - Do not use signed URL controls whether the object storage service validates a URL signature
51
+
52
+ These settings can be combined independently. The recommended default is NocoBase URL, Allow public access unchecked, and signed URLs enabled.
53
+
54
+ ![S3 Pro URL configuration](https://static-docs.nocobase.com/20260723221441.png)
55
+
56
+ ### How to choose
57
+
58
+ | Use case | File URL | Allow public access | Do not use signed URL |
59
+ | --- | --- | --- | --- |
60
+ | Files must follow role and data permissions while the bucket remains private | NocoBase URL | Unchecked | Unchecked |
61
+ | A public NocoBase file address is required while the bucket remains private | NocoBase URL | Checked | Unchecked |
62
+ | An external service needs temporary access to the storage address | Original URL | Not applicable | Unchecked; configure Access URL expiration |
63
+ | A public bucket or CDN requires an unsigned original address | Original URL | Not applicable | Checked |
64
+
65
+ ### Upload URL format
66
+
67
+ Upload URL format controls the S3 URL used by the client when uploading files. Select the format supported by your storage service. The configuration form displays an example based on the current Endpoint, Bucket, and path:
68
+
69
+ - Bucket as subdomain: `https://bucket-name.s3.example.com/path/to/object`
70
+ - Bucket as subpath: `https://s3.example.com/bucket-name/path/to/object`
71
+ - Ignore bucket: `https://upload.example.com/path/to/object`
72
+
73
+ ### Access URL format
74
+
75
+ Access URL format controls whether the Bucket appears in the domain, in the path, or not at all when S3 Pro generates a file access address. It provides the same three formats as Upload URL format, but can be configured separately—for example, uploads can use an S3 Endpoint while access uses a CDN domain that does not include the Bucket.
76
+
77
+ This option affects Original URLs and the storage address that a NocoBase URL ultimately redirects to, but it does not change the NocoBase URL format itself.
78
+
79
+ ### Do not use signed URL
80
+
81
+ S3 Pro uses signed URLs by default. A generated Original URL includes signature parameters, for example:
82
+
83
+ ```text
84
+ https://bucket-name.s3.example.com/path/to/object?X-Amz-Signature=xxxx
85
+ ```
86
+
87
+ The signed URL remains valid for the configured Access URL expiration, and the bucket can remain private. When NocoBase URL is used, NocoBase generates or redirects to a signed address after the permission check succeeds.
88
+
89
+ When Do not use signed URL is checked, S3 Pro generates an address without signature parameters. The bucket and uploaded objects must then allow public read access, and Access URL expiration no longer takes effect.
90
+
91
+ Do not use signed URL only controls whether the storage service validates a signature; it does not change NocoBase file record permissions. If NocoBase URL is selected and Allow public access is unchecked, the request must still pass the NocoBase permission check first.
92
+
42
93
 
43
94
 
44
95
  ## Service Provider Configuration
@@ -146,9 +197,9 @@ Building on the File Manager plugin, this adds support for S3 protocol-compatibl
146
197
  ![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971345.png)
147
198
 
148
199
 
149
- #### Public Access (Optional)
200
+ #### Unsigned Public Access (Optional)
150
201
 
151
- This is an optional configuration. Configure it when you need to make uploaded files completely public.
202
+ Configure this only when unsigned URLs are required, because the Bucket and uploaded objects must allow public read access. If you only need to share a public NocoBase URL, check Allow public access and keep signed URLs enabled; the Bucket does not need to be public.
152
203
 
153
204
  1. Go to the Permissions panel, scroll down to Object Ownership, click edit, and enable ACLs.
154
205
 
@@ -162,7 +213,7 @@ This is an optional configuration. Configure it when you need to make uploaded f
162
213
  ![](https://static-docs.nocobase.com/file-storage-s3-pro-1735355971668.png)
163
214
 
164
215
 
165
- 3. Check Public access in NocoBase.
216
+ 3. Check Do not use signed URL in NocoBase.
166
217
 
167
218
 
168
219
  #### Thumbnail Configuration (Optional)
@@ -193,7 +244,7 @@ This configuration is optional and is used to optimize image preview size or eff
193
244
  5. In the NocoBase configuration, there are several points to note:
194
245
  1. `Thumbnail rule`: Fill in image processing-related parameters, for example, `?width=100`. For details, refer to the [AWS documentation](https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/use-supported-query-param-edits.html).
195
246
  2. `Access endpoint`: Fill in the value of Outputs -> ApiEndpoint after deployment.
196
- 3. `Full access URL style`: You need to check **Ignore** (because the bucket name was already filled in during configuration, it is no longer needed for access).
247
+ 3. Access URL format: Select **Ignore bucket** because the bucket name is already included in the configuration and is not needed in the access URL.
197
248
 
198
249
 
199
250
  ![](https://static-docs.nocobase.com/20250414152135514.png)
@@ -312,7 +363,7 @@ This configuration is optional and should only be used when you need to optimize
312
363
 
313
364
  1. Fill in the `Thumbnail rule` related parameters. For specific parameter settings, refer to [Image Processing Parameters](https://www.alibabacloud.com/help/en/object-storage-service/latest/process-images).
314
365
 
315
- 2. `Full upload URL style` and `Full access URL style` can be kept the same.
366
+ 2. Upload URL format and Access URL format can use the same setting.
316
367
 
317
368
  #### Configuration Example
318
369
 
@@ -357,7 +408,7 @@ This configuration is optional and should only be used when you need to optimize
357
408
  - **AccessKey ID** and **AccessKey Secret** are the values saved in the previous step.
358
409
  - **Region**: A self-hosted MinIO does not have the concept of a Region, so it can be configured as "auto".
359
410
  - **Endpoint**: Fill in the domain name or IP address of your deployment.
360
- - Full access URL style must be set to Path-Style.
411
+ - Set Access URL format to Bucket as subpath.
361
412
 
362
413
  #### Configuration Example
363
414
 
@@ -2,12 +2,34 @@
2
2
 
3
3
  When deploying NocoBase in a production environment, installing dependencies can be cumbersome due to differences in build methods across various systems and environments. For a complete functional experience, we recommend deploying with **Docker**. If your system environment cannot use Docker, you can also deploy using **create-nocobase-app**.
4
4
 
5
- :::warning
5
+ :::warning Note
6
6
 
7
7
  It is not recommended to deploy directly from source code in a production environment. The source code has many dependencies, is large in size, and a full compilation has high CPU and memory requirements. If you must deploy from source code, it is recommended to first build a custom Docker image and then deploy it.
8
8
 
9
9
  :::
10
10
 
11
+ :::warning Note
12
+
13
+ If you deploy multiple independent NocoBase services, use a different `hostname` for each service, such as separate subdomains. Do not distinguish services only by port, for example `https://example.com:13000` and `https://example.com:14000`.
14
+
15
+ NocoBase uses cookies to maintain login state and [file access permissions](../../file-manager/stable-url.md). Browsers do not isolate cookies by port, so services on different ports under the same `hostname` may share cookies with the same name. This can overwrite login state or cause file preview and download authorization failures.
16
+
17
+ Sub-apps within the same NocoBase deployment are outside this restriction. Login cookies are distinguished by app name, so the main app and differently named sub-apps can share one `hostname`.
18
+
19
+ However, independent services still need isolation. If another 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.
20
+
21
+ Use addresses such as `app1.example.com` and `app2.example.com`, then route them to different NocoBase services through Nginx or Caddy.
22
+
23
+ :::
24
+
25
+ ## Separated Frontend / Cross-Origin API Access
26
+
27
+ Prefer keeping the pages and the API on the same origin: use a reverse proxy under one domain to forward `${APP_PUBLIC_PATH}api/` and `${APP_PUBLIC_PATH}files/` to the NocoBase service, and leave `API_BASE_URL` empty.
28
+
29
+ If the pages must access the API cross-origin (with `API_BASE_URL` pointing to another origin), add the page origin to `CORS_ORIGIN_WHITELIST`. Otherwise the browser ignores `Set-Cookie` in API responses, the login cookie is never stored, and preview and download through stable file URLs fail authorization.
30
+
31
+ Also note that cookies are stored per `hostname`: when the pages and the API use entirely different domains, requests to `/files/` from the page domain will not carry the login cookie stored under the API domain. Such deployments should switch to a same-origin reverse proxy. See [Environment Variables](../installation/env.md#api_base_url).
32
+
11
33
  ## Deployment Process
12
34
 
13
35
  For production environment deployment, you can refer to the existing installation and upgrade steps.
@@ -39,4 +61,4 @@ In a production environment, it is recommended to manage static assets with a pr
39
61
  Depending on the installation method, you can use the following commands to manage the NocoBase process:
40
62
 
41
63
  - [docker compose](./common-commands/docker-compose.md)
42
- - [pm2](./common-commands/pm2.md)
64
+ - [pm2](./common-commands/pm2.md)
@@ -94,6 +94,7 @@ services:
94
94
  - `NOCOBASE_PROXY_UPSTREAM_HOST=app` lets the Caddy container reach the `app` service through the Compose network
95
95
  - `./storage` must be mounted into both the `app` and `caddy` containers so they can share proxy config, static assets, and uploaded files
96
96
  - The `caddy` container should wait until `nocobase.caddy` is generated, then link it to `/etc/caddy/Caddyfile` with `ln -sf`
97
+ - The generated config forwards both the `/files/` route under `APP_PUBLIC_PATH` and the root-level `/files/` route to NocoBase for authenticated file previews and downloads
97
98
  - Expose only the Caddy container port to the host. For testing, you can start with `13000:80`; in production, you usually expose the host `80` and `443` ports directly, while the `app` service does not need to expose its port to the host
98
99
 
99
100
  ## If you use a local host Caddy
@@ -169,6 +170,8 @@ sudo systemctl reload caddy
169
170
 
170
171
  If your host Caddy does not use `/etc/caddy/Caddyfile`, replace the link target with your own config path. Usually it is safer to keep `nocobase.caddy` as the main entry file instead of copying its content manually.
171
172
 
173
+ If you maintain Caddy yourself instead of using the generated config, make sure `/files/*` and the corresponding route under `APP_PUBLIC_PATH` are forwarded to NocoBase before the SPA fallback rules. See [Caddy Reverse Proxy](../../nocobase-cli/production/reverse-proxy/caddy.md) for a complete example.
174
+
172
175
  ## Related links
173
176
 
174
177
  - [Docker Installation (Built-in Nginx)](./docker.mdx) — Start with the single-container setup
@@ -95,6 +95,7 @@ services:
95
95
  - `NOCOBASE_PROXY_UPSTREAM_HOST=app` lets the Nginx container reach the `app` service through the Compose network
96
96
  - `./storage` must be mounted into both the `app` and `nginx` containers so they can share proxy config, static assets, and uploaded files
97
97
  - The `nginx` container should wait until `nocobase.conf` is generated, then link it to `/etc/nginx/conf.d/default.conf` with `ln -sf`
98
+ - The generated config forwards both the `/files/` route under `APP_PUBLIC_PATH` and the root-level `/files/` route to NocoBase for authenticated file previews and downloads
98
99
  - If you use an external Nginx container, let the `nginx` container handle the host port mapping. For testing, you can start with `13000:80`; in production, you usually expose the host `80` and `443` ports directly, while the `app` service does not need to expose its port to the host
99
100
 
100
101
  ## If you use a local host Nginx
@@ -170,6 +171,8 @@ sudo systemctl reload nginx
170
171
 
171
172
  If your host Nginx does not use the `conf.d` directory, replace the link target with your own config path. Usually it is safer to keep `nocobase.conf` as a file included from the `http {}` context instead of copying its content manually.
172
173
 
174
+ If you maintain Nginx yourself instead of using the generated config, make sure `/files/` and the corresponding route under `APP_PUBLIC_PATH` are forwarded to NocoBase before the SPA fallback rules. See [Nginx Reverse Proxy](../../nocobase-cli/production/reverse-proxy/nginx.md) for a complete example.
175
+
173
176
  ## Related links
174
177
 
175
178
  - [Docker Installation (Built-in Nginx)](./docker.mdx) — Start with the single-container setup
@@ -627,7 +627,7 @@ If you use the built-in Nginx image, it is usually better not to expose `13000`
627
627
 
628
628
  The following config proxies domain requests to `http://127.0.0.1:13000/`:
629
629
 
630
- ```bash
630
+ ```nginx
631
631
  server {
632
632
  listen 80;
633
633
  server_name your_domain.com; # Replace your_domain.com with your domain
@@ -658,6 +658,8 @@ server {
658
658
 
659
659
  If you also want to enable HTTPS, configure `443` and the certificate on the host Nginx. The NocoBase container does not need to handle certificates separately.
660
660
 
661
+ The `location /` block in this root-path configuration also proxies `/api/`, `/ws`, and `/files/`. If you split static assets from application routes, make sure `/files/` is still forwarded to NocoBase and is not handled as a static directory.
662
+
661
663
  ### Subpath deployment
662
664
 
663
665
  If you want to deploy the app under a subpath, such as `https://your_domain.com/nocobase/`, configure the `APP_PUBLIC_PATH` environment variable first:
@@ -674,7 +676,7 @@ Keep the leading and trailing `/` in the path. After this is configured, the app
674
676
 
675
677
  Then configure the host Nginx with the same subpath proxy:
676
678
 
677
- ```bash
679
+ ```nginx
678
680
  server {
679
681
  listen 80;
680
682
  server_name your_domain.com; # Replace your_domain.com with your domain
@@ -700,10 +702,32 @@ server {
700
702
  send_timeout 600;
701
703
  proxy_buffering off;
702
704
  }
705
+
706
+ # Keep compatibility with root-level file access URLs.
707
+ location ^~ /files/ {
708
+ proxy_pass http://127.0.0.1:13000;
709
+ proxy_http_version 1.1;
710
+
711
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
712
+ proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
713
+ proxy_set_header Host $final_host;
714
+ proxy_set_header Referer $http_referer;
715
+ proxy_set_header User-Agent $http_user_agent;
716
+
717
+ add_header Cache-Control "no-cache, no-store" always;
718
+
719
+ proxy_connect_timeout 600;
720
+ proxy_send_timeout 600;
721
+ proxy_read_timeout 600;
722
+ send_timeout 600;
723
+ }
703
724
  }
704
725
  ```
705
726
 
706
- The key point is that `APP_PUBLIC_PATH` and the path in `proxy_pass` must stay consistent. If either side misses `/nocobase/`, static assets and routing will usually not work correctly.
727
+ Keep these points in mind:
728
+
729
+ - `APP_PUBLIC_PATH` and the path in `proxy_pass` must stay consistent. If either side misses `/nocobase/`, static assets and routing will usually not work correctly
730
+ - `/nocobase/files/` is forwarded by `location /nocobase/`; the compatible root-level `/files/` route must be forwarded to NocoBase separately
707
731
 
708
732
  ### Other options
709
733
 
@@ -86,6 +86,39 @@ API_BASE_PATH=/api/
86
86
 
87
87
  ### API_BASE_URL
88
88
 
89
+ Base URL the frontend uses to access the NocoBase API. Empty by default, which means the same-origin `${APP_PUBLIC_PATH}api/` is used.
90
+
91
+ ```bash
92
+ API_BASE_URL=
93
+ ```
94
+
95
+ Only set it to the full API address when the pages and the API service are on different origins (different protocol, domain, or port):
96
+
97
+ ```bash
98
+ API_BASE_URL=https://api.example.com/api/
99
+ ```
100
+
101
+ :::warning{title="Cross-origin deployments"}
102
+ NocoBase uses cookies to maintain login state and to authorize [stable file URLs](../../file-manager/stable-url.md). When `API_BASE_URL` points to a different origin than the pages:
103
+
104
+ - The page origin must be added to [`CORS_ORIGIN_WHITELIST`](#cors_origin_whitelist). Otherwise the browser ignores `Set-Cookie` in API responses, the login cookie is never stored, and cookie-dependent features such as file preview and download fail with `403`.
105
+ - Cookies are stored per `hostname`. If the pages and the API use entirely different domains, requests to `/files/` stable URLs from the page domain will not carry the login cookie stored under the API domain, so file access still fails.
106
+
107
+ Prefer serving the pages and the API from the same origin through a reverse proxy and leaving `API_BASE_URL` empty.
108
+ :::
109
+
110
+ ### CORS_ORIGIN_WHITELIST
111
+
112
+ Whitelist of origins allowed to access the API cross-origin with credentials (cookies). Multiple origins are separated by commas. Empty by default.
113
+
114
+ ```bash
115
+ CORS_ORIGIN_WHITELIST=https://www.example.com,https://admin.example.com
116
+ ```
117
+
118
+ - When not configured, only same-origin requests are treated as trusted; cross-origin requests can still call the API anonymously, but the browser is not allowed to read or write cookies for them.
119
+ - When configured, whitelisted origins receive an exact `Access-Control-Allow-Origin` echo and `Access-Control-Allow-Credentials: true`, which lets the browser send and store login cookies on cross-origin requests.
120
+ - The sign-in API validates the request `Origin` / `Referer`; cross-origin sign-in requests from origins outside the whitelist are rejected with `403`.
121
+
89
122
  ### CLUSTER_MODE
90
123
 
91
124
  > `v1.6.0+`
@@ -113,7 +146,7 @@ For example, to add the `hello` plugin to the `my-nocobase-app` project, the plu
113
146
  PLUGIN_PACKAGE_PREFIX can be configured as:
114
147
 
115
148
  ```bash
116
- PLUGIN_PACKAGE_PREFIX=@nocobase/plugin-,@nocobase-preset-,@my-nocobase-app/plugin-
149
+ PLUGIN_PACKAGE_PREFIX=@nocobase/plugin-,@nocobase/preset-,@my-nocobase-app/plugin-
117
150
  ```
118
151
 
119
152
  The correspondence between plugin name and package name is as follows:
@@ -0,0 +1,107 @@
1
+ ---
2
+ pkg: "@nocobase/plugin-block-comment"
3
+ title: "Comment Block"
4
+ description: "Comment block: view and create comments in record details, pop-ups, and similar scenarios, with field mapping, pagination, data scope, default sorting, and auto jump to last page."
5
+ keywords: "Comment Block,CommentBlock,comment collection,field mapping,data scope,default sorting,interface builder,NocoBase"
6
+ ---
7
+
8
+ # Comment Block
9
+
10
+ ## Introduction
11
+
12
+ The Comment block adds commenting capabilities to business records. You can add it to detail pages or pop-ups for tasks, articles, tickets, customers, and other records, so users can view, reply to, and create comments around the current record.
13
+
14
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_02_PM.png)
15
+
16
+ :::tip
17
+
18
+ The Comment block does not create a collection by itself. Before using it, prepare a collection for storing comments and configure fields such as comment content, commenter, comment owner, and comment time.
19
+
20
+ :::
21
+
22
+ ## Add a block
23
+
24
+ The Comment block is usually added to the detail page or pop-up of a business record.
25
+
26
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_03_PM.png)
27
+
28
+ 1. Open the target record detail page or pop-up
29
+ 2. Click "Add block"
30
+ 3. Select "Comment"
31
+ 4. Select the collection used to store comments
32
+ 5. Complete field mapping as prompted
33
+
34
+ If the Comment block is created from an association, NocoBase will try to automatically identify the comment owner field and the current record value based on the current association. In this case, "Comment owner field" and "Comment owner field value" are filled automatically, and usually do not need manual configuration.
35
+
36
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_04_PM.png)
37
+
38
+ If the block is created directly from the comment collection, you need to manually configure the comment owner field and value.
39
+
40
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_03_PM%20(1).png)
41
+
42
+ ## Field mapping
43
+
44
+ The Comment block uses "Field mapping" to know how each comment should be displayed and saved.
45
+
46
+ | Configuration | Description |
47
+ | --- | --- |
48
+ | Comment content field | Select the field used to store the comment body. |
49
+ | Commenter field | Select a many-to-one field associated with the users collection. |
50
+ | Comment owner field | Select the field used to store the current business record identifier. |
51
+ | Comment owner field value | Specify the current business record value, such as `{{ ctx.popup.record.id }}`. |
52
+ | Comment date field | Select the comment time field, used for display and default sorting. |
53
+
54
+ ### Comment owner field
55
+
56
+ "Comment owner field" is used to filter comments for the current record, and is also written when a new comment is created.
57
+
58
+ When selected manually, the dropdown only shows ordinary scalar fields and does not show association fields. Common configurations are:
59
+
60
+ | Business collection | Owner field in comment collection | Comment owner field value |
61
+ | --- | --- | --- |
62
+ | Tasks | `taskId` | `{{ ctx.popup.record.id }}` |
63
+ | Articles | `postId` | `{{ ctx.popup.record.id }}` |
64
+ | Tickets | `ticketId` | `{{ ctx.popup.record.id }}` |
65
+
66
+ If the current record uses a unique identifier other than `id`, change "Comment owner field value" to the corresponding field, such as `{{ ctx.popup.record.uuid }}`.
67
+
68
+ ### Automatic mapping from associations
69
+
70
+ If the block is created from an association of the business record, the Comment block prioritizes the foreign key field of that association as the comment owner field, and uses the current record value as the comment owner field value.
71
+
72
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_04_PM.png)
73
+
74
+ For example, if there is a one-to-many association between the task collection and the task comment collection, and the foreign key field in the task comment collection is `taskId`, then when you add a Comment block from the association in the task detail page, the block automatically uses:
75
+
76
+ - Comment owner field: `taskId`
77
+ - Comment owner field value: the identifier of the current task record
78
+
79
+ This approach is suitable for most scenarios and reduces manual configuration errors.
80
+
81
+ ## Block settings
82
+
83
+ ![](https://static-docs.nocobase.com/Comments-07-01-2026_12_07_PM.png)
84
+
85
+ ### Page size
86
+
87
+ Set how many comments are displayed on each page. Available values include `5`, `10`, `20`, `50`, `100`, and `200`.
88
+
89
+ ### Data scope
90
+
91
+ Set the data filtering scope for the comment list. You can add more conditions here, such as showing only comments that match certain status or permission conditions.
92
+
93
+ For more details, see [Set data scope](../block-settings/data-scope.md).
94
+
95
+ ### Default sorting rule
96
+
97
+ Set the default sorting rule for the comment list. Usually, you can sort by the comment date field in ascending or descending order.
98
+
99
+ If no default sorting rule is configured separately, the Comment block prioritizes the "Comment date field" as the default sorting field.
100
+
101
+ For more details, see [Set sorting rule](../block-settings/sorting-rule.md).
102
+
103
+ ### Auto jump to last page
104
+
105
+ Disabled by default. When disabled, the Comment block stays on the first page after opening.
106
+
107
+ When enabled, the Comment block jumps to the last page on first load. This is suitable when you want users to see the latest comments first.