mirror of
https://gh-proxy.org/https://github.com/klinsmaya/portal-template-default.git
synced 2026-11-08 00:57:57 +08:00
* feat(knowledge-base): add AI knowledge base registry * fix(knowledge-base): honor document access and downloads * feat(knowledge-base): add workspace prerequisite gate
574 lines
20 KiB
JSON
574 lines
20 KiB
JSON
{
|
|
"name": "nocobase-ai",
|
|
"homepage": "https://www.nocobase.com",
|
|
"items": [
|
|
{
|
|
"name": "error-boundary",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase Error Boundary",
|
|
"description": "Reusable render boundaries and NocoBase runtime status views with copyable redacted diagnostics and recovery actions.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-error-boundary@^6.0.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": ["badge", "button", "card"],
|
|
"docs": "Uses react-error-boundary for render containment and provides runtime status UI for original NocoBase gateway and account error codes. It contributes only a development showcase at /dev/error-boundary, with no production routes, providers, or menu entries.",
|
|
"source": {
|
|
"root": "registry/nocobase-error-boundary",
|
|
"target": "src/extensions/nocobase-error-boundary",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "route-surfaces",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase Route Surfaces",
|
|
"description": "URL-backed drawer, dialog, and page containers with nested drawer stacking and a shared close lifecycle.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.1.0",
|
|
"@base-ui/react@^1.6.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"alert-dialog",
|
|
"badge",
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label",
|
|
"select",
|
|
"textarea"
|
|
],
|
|
"docs": "Provides presentation containers plus an integrated Demo and Prompt generator. Route definitions, ACL guards, data fetching, and business content remain application-owned.",
|
|
"source": {
|
|
"root": "registry/nocobase-route-surfaces",
|
|
"target": "src/extensions/nocobase-route-surfaces",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "client",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase Client Components",
|
|
"description": "Small reusable Portal client components with transport-agnostic APIs and shadcn UI composition.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@tanstack/react-query@^5.81.5",
|
|
"lucide-react@^0.487.0"
|
|
],
|
|
"registryDependencies": ["badge", "button", "card", "command", "popover"],
|
|
"docs": "Provides dependency-light client components without NocoBase resource or Refine coupling. RemoteSelect delegates data access to a caller-provided loadOptions function and contributes only a development showcase under /dev/client/remote-select.",
|
|
"source": {
|
|
"root": "registry/nocobase-client",
|
|
"target": "src/extensions/nocobase-client",
|
|
"include": [
|
|
"README.md",
|
|
"demo",
|
|
"extension.tsx",
|
|
"index.ts",
|
|
"remote-select.tsx",
|
|
"types.ts",
|
|
"use-remote-options.ts"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "users-example",
|
|
"type": "registry:block",
|
|
"title": "NocoBase Users Example",
|
|
"description": "Complete Users resource example with ACL-aware list, filters, route-backed drawers, nested role details, and optional AI page context.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"@refinedev/react-hook-form@^5.0.0",
|
|
"@refinedev/react-table@^6.0.0",
|
|
"@tanstack/react-table@^8.2.6",
|
|
"lucide-react@^0.487.0",
|
|
"react-hook-form@^7.57.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/client",
|
|
"@nocobase/route-surfaces",
|
|
"alert",
|
|
"badge",
|
|
"button",
|
|
"form",
|
|
"input",
|
|
"separator",
|
|
"skeleton"
|
|
],
|
|
"docs": "Requires the compatible Portal Starter resource components, data table, NocoBase data provider, and ACL provider. AI page-element and form registration is enabled automatically when @nocobase/ai is also installed.",
|
|
"source": {
|
|
"root": "registry/nocobase-users-example",
|
|
"target": "src/extensions/nocobase-users-example",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "i18n",
|
|
"type": "registry:block",
|
|
"title": "NocoBase i18n",
|
|
"description": "Optional NocoBase server-language resources, user preference persistence, reusable language controls, and an integrated showcase for the Portal SDK i18n runtime.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"badge",
|
|
"button",
|
|
"card",
|
|
"dropdown-menu",
|
|
"input",
|
|
"label",
|
|
"select",
|
|
"textarea"
|
|
],
|
|
"docs": "Requires a compatible Portal SDK i18n and System Settings runtime plus the template's AppExtension Provider/UserMenuItems host fields. The Registry reuses cached systemSettings:get data and calls app:getLang only for registered dynamic namespaces such as lm-collections.",
|
|
"source": {
|
|
"root": "registry/nocobase-i18n",
|
|
"target": "src/extensions/nocobase-i18n",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-oidc",
|
|
"type": "registry:block",
|
|
"title": "NocoBase OIDC Authentication",
|
|
"description": "Dynamic OIDC sign-in adapter, headless sign-in hook, and integrated component demo.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"docs": "Requires the Starter authentication runtime and an enabled OIDC authenticator in NocoBase. The default UI is discovered automatically and can be replaced per authentication type or authenticator instance from the application login page.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-oidc",
|
|
"target": "src/extensions/nocobase-auth-oidc",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-saml",
|
|
"type": "registry:block",
|
|
"title": "NocoBase SAML Authentication",
|
|
"description": "Dynamic SAML sign-in adapter, automatic redirect provider, headless hook, and integrated demo.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"docs": "Requires the Starter authentication runtime and an enabled SAML authenticator in NocoBase.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-saml",
|
|
"target": "src/extensions/nocobase-auth-saml",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-cas",
|
|
"type": "registry:block",
|
|
"title": "NocoBase CAS Authentication",
|
|
"description": "Dynamic CAS sign-in adapter, headless sign-in hook, and integrated component demo.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"docs": "Requires the Starter authentication runtime and an enabled CAS authenticator in NocoBase.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-cas",
|
|
"target": "src/extensions/nocobase-auth-cas",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-ldap",
|
|
"type": "registry:block",
|
|
"title": "NocoBase LDAP Authentication",
|
|
"description": "Dynamic LDAP account/password form, headless sign-in hook, and integrated component demo.",
|
|
"dependencies": ["@nocobase/portal-sdk@^2.0.0"],
|
|
"docs": "Requires the Starter authentication runtime and an enabled LDAP authenticator in NocoBase.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-ldap",
|
|
"target": "src/extensions/nocobase-auth-ldap",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-sms",
|
|
"type": "registry:block",
|
|
"title": "NocoBase SMS Authentication",
|
|
"description": "Dynamic SMS verification-code form, delivery countdown, headless hook, and integrated demo.",
|
|
"dependencies": ["@nocobase/portal-sdk@^2.0.0"],
|
|
"docs": "Requires the Starter authentication runtime, an enabled SMS authenticator, and a configured public SMS verifier in NocoBase.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-sms",
|
|
"target": "src/extensions/nocobase-auth-sms",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-wecom",
|
|
"type": "registry:block",
|
|
"title": "NocoBase WeCom Authentication",
|
|
"description": "Dynamic WeCom sign-in adapter, browser automatic login, headless hook, and integrated demo.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"docs": "Requires the Starter authentication runtime and an enabled WeCom authenticator in NocoBase.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-wecom",
|
|
"target": "src/extensions/nocobase-auth-wecom",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "auth-dingtalk",
|
|
"type": "registry:block",
|
|
"title": "NocoBase DingTalk Authentication",
|
|
"description": "Dynamic DingTalk sign-in adapter, automatic login, headless hook, and integrated demo.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"[email protected]",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"docs": "Requires the Starter authentication runtime and an enabled DingTalk authenticator in NocoBase. DingTalk JSAPI is loaded lazily for internal micro-app login.",
|
|
"source": {
|
|
"root": "registry/nocobase-auth-dingtalk",
|
|
"target": "src/extensions/nocobase-auth-dingtalk",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-runtime",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase AI Runtime",
|
|
"description": "NocoBase AI services, providers, transports, controllers, and avatars.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@ai-sdk/[email protected]",
|
|
"[email protected]",
|
|
"@dicebear/core@^9.4.3",
|
|
"@nocobase/ai-employee-avatars@^1.0.2",
|
|
"[email protected]"
|
|
],
|
|
"source": {
|
|
"root": "registry/nocobase-ai",
|
|
"target": "src/extensions/nocobase-ai",
|
|
"include": ["providers", "services"]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-chat",
|
|
"type": "registry:block",
|
|
"title": "NocoBase AI Chat Components",
|
|
"description": "Reusable NocoBase AI chat window, containers, floating trigger, and employee shortcut.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"echarts@^5.5.0",
|
|
"[email protected]",
|
|
"lucide-react@^0.487.0",
|
|
"next-themes@^0.4.6",
|
|
"react-markdown@^10.1.0",
|
|
"remark-gfm@^4.0.1"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/ai-runtime",
|
|
"@nocobase/error-boundary",
|
|
"badge",
|
|
"button",
|
|
"collapsible",
|
|
"dialog",
|
|
"dropdown-menu",
|
|
"hover-card",
|
|
"input",
|
|
"input-group",
|
|
"label",
|
|
"popover",
|
|
"select",
|
|
"tabs",
|
|
"textarea",
|
|
"tooltip"
|
|
],
|
|
"source": {
|
|
"root": "registry/nocobase-ai",
|
|
"target": "src/extensions/nocobase-ai",
|
|
"include": ["components", "locales", "assets", "index.ts", "README.md"]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-react-hook-form",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase AI React Hook Form Adapter",
|
|
"description": "Optional React Hook Form adapter for the built-in AI Form filler.",
|
|
"dependencies": ["react-hook-form@^7.57.0"],
|
|
"registryDependencies": ["@nocobase/ai-chat"],
|
|
"source": {
|
|
"root": "registry/nocobase-ai",
|
|
"target": "src/extensions/nocobase-ai",
|
|
"include": ["adapters/react-hook-form.ts"]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai",
|
|
"type": "registry:block",
|
|
"title": "NocoBase AI Components and Demo",
|
|
"description": "Complete NocoBase AI component runtime with application resources, routes, and component showcase pages.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.1.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/ai-chat",
|
|
"@nocobase/ai-react-hook-form",
|
|
"accordion",
|
|
"alert",
|
|
"badge",
|
|
"card",
|
|
"checkbox",
|
|
"input",
|
|
"switch",
|
|
"table",
|
|
"textarea"
|
|
],
|
|
"docs": "This item includes the AI extension integration and Demo pages. It is designed for a compatible starter with the AppExtension host enabled. After installation, src/extensions/nocobase-ai/extension.tsx is discovered automatically and contributes its application resources and routes without AI-specific App.tsx edits.",
|
|
"source": {
|
|
"root": "registry/nocobase-ai",
|
|
"target": "src/extensions/nocobase-ai",
|
|
"include": ["demo", "extension.tsx", "global-ai-chat.tsx"]
|
|
}
|
|
},
|
|
{
|
|
"name": "file-upload",
|
|
"type": "registry:block",
|
|
"title": "NocoBase File Upload",
|
|
"description": "Controlled shadcn/ui file upload field for NocoBase file collections.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@tanstack/react-query@^5.81.5",
|
|
"lucide-react@^0.487.0",
|
|
"react-markdown@^10.1.0",
|
|
"remark-gfm@^4.0.1"
|
|
],
|
|
"registryDependencies": [
|
|
"alert",
|
|
"button",
|
|
"card",
|
|
"dialog",
|
|
"input",
|
|
"tooltip"
|
|
],
|
|
"docs": "Requires a compatible Portal SDK client and a field targeting a file-template collection. The extension contributes a development-only file manager at /dev/files; its public-URL preview gallery does not require attachments:list.",
|
|
"source": {
|
|
"root": "registry/nocobase-file-upload",
|
|
"target": "src/extensions/nocobase-file-upload",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "mail",
|
|
"type": "registry:block",
|
|
"title": "NocoBase Mail",
|
|
"description": "Mail inbox, compose, detail, and label components backed by the NocoBase mail API.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"@tiptap/extension-link@^3.29.0",
|
|
"@tiptap/extension-placeholder@^3.29.0",
|
|
"@tiptap/[email protected]",
|
|
"@tiptap/pm@^3.29.0",
|
|
"@tiptap/react@^3.29.0",
|
|
"@tiptap/starter-kit@^3.29.0",
|
|
"date-fns@^4.1.0",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2",
|
|
"sonner@^2.0.3"
|
|
],
|
|
"registryDependencies": [
|
|
"alert-dialog",
|
|
"avatar",
|
|
"badge",
|
|
"button",
|
|
"checkbox",
|
|
"dialog",
|
|
"dropdown-menu",
|
|
"input",
|
|
"label",
|
|
"popover",
|
|
"select",
|
|
"separator",
|
|
"sheet",
|
|
"skeleton",
|
|
"tabs",
|
|
"textarea",
|
|
"toggle"
|
|
],
|
|
"docs": "Requires a compatible Portal SDK and a NocoBase server with the mail plugin enabled. The mail API adapter uses the authenticated SDK client.",
|
|
"source": {
|
|
"root": "registry/nocobase-mail",
|
|
"target": "src/extensions/nocobase-mail",
|
|
"include": ["."]
|
|
}
|
|
},
|
|
{
|
|
"name": "acl-ui",
|
|
"type": "registry:block",
|
|
"title": "NocoBase ACL UI",
|
|
"description": "Page, region, field, and role-switching components backed by the Starter's NocoBase accessControlProvider.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"lucide-react@^0.487.0"
|
|
],
|
|
"registryDependencies": ["badge", "select"],
|
|
"docs": "Requires a compatible NocoBase Starter with the built-in accessControlProvider and ACL store.",
|
|
"source": {
|
|
"root": "registry/nocobase-acl",
|
|
"target": "src/extensions/nocobase-acl",
|
|
"include": ["components", "index.ts", "README.md"]
|
|
}
|
|
},
|
|
{
|
|
"name": "acl",
|
|
"type": "registry:block",
|
|
"title": "NocoBase ACL Components and Demo",
|
|
"description": "Complete ACL composition demo with live role switching, action matrix, multi-collection regions, and field permissions.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/acl-ui",
|
|
"button",
|
|
"card",
|
|
"dropdown-menu",
|
|
"input",
|
|
"label",
|
|
"table",
|
|
"textarea"
|
|
],
|
|
"source": {
|
|
"root": "registry/nocobase-acl",
|
|
"target": "src/extensions/nocobase-acl",
|
|
"include": ["demo", "extension.tsx"]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-knowledge-base-providers",
|
|
"type": "registry:lib",
|
|
"title": "NocoBase AI Knowledge Base Providers",
|
|
"description": "User-side DTOs, injected Portal-safe service contract, response normalization, and stale-safe data hooks.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0"
|
|
],
|
|
"docs": "Providers only: no UI, routes, demos, extension, generic management API client, or tests. Requires a Portal-owned server adapter with current-user authorization, LOCAL write enforcement, and response allowlists.",
|
|
"source": {
|
|
"root": "registry/nocobase-ai-knowledge-base",
|
|
"target": "src/extensions/nocobase-ai-knowledge-base",
|
|
"include": [
|
|
"providers",
|
|
"hooks"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-knowledge-base-components",
|
|
"type": "registry:block",
|
|
"title": "NocoBase AI Knowledge Base Components",
|
|
"description": "Controlled knowledge-base, document, retrieval, segment, and upload components for composition in Portal pages.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"lucide-react@^0.487.0"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/ai-knowledge-base-providers",
|
|
"alert",
|
|
"avatar",
|
|
"badge",
|
|
"button",
|
|
"card",
|
|
"dialog",
|
|
"empty",
|
|
"input",
|
|
"item",
|
|
"popover",
|
|
"select",
|
|
"skeleton",
|
|
"switch",
|
|
"table",
|
|
"tabs",
|
|
"textarea",
|
|
"toggle-group"
|
|
],
|
|
"docs": "Pure controlled UI only. Install ai-knowledge-base-providers first (installed through registry dependencies); inject data, callbacks, route behavior, and authorization experience from the application.",
|
|
"source": {
|
|
"root": "registry/nocobase-ai-knowledge-base",
|
|
"target": "src/extensions/nocobase-ai-knowledge-base",
|
|
"include": [
|
|
"components",
|
|
"locales"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "ai-knowledge-base",
|
|
"type": "registry:block",
|
|
"title": "NocoBase AI Knowledge Base Components and Knowledge Base Workspace",
|
|
"description": "Complete AI Knowledge Base Registry integration with five deterministic development workflows, a Portal-safe Knowledge base workspace, URL-backed result and segment drawers, resource hooks, and consolidated documentation.",
|
|
"dependencies": [
|
|
"@nocobase/portal-sdk@^2.0.0",
|
|
"@refinedev/core@^5.0.8",
|
|
"lucide-react@^0.487.0",
|
|
"react-router@^7.0.2"
|
|
],
|
|
"registryDependencies": [
|
|
"@nocobase/ai-knowledge-base-components",
|
|
"@nocobase/route-surfaces",
|
|
"alert",
|
|
"alert-dialog",
|
|
"badge",
|
|
"button",
|
|
"card",
|
|
"dialog",
|
|
"empty",
|
|
"input",
|
|
"item",
|
|
"skeleton",
|
|
"sheet",
|
|
"switch",
|
|
"table",
|
|
"tabs",
|
|
"textarea",
|
|
"toggle-group"
|
|
],
|
|
"docs": "Contributes development-only /dev/ai-knowledge-base routes and menu resources, never production routes. Deterministic demos require no backend; /live uses the default user-side KnowledgeBaseService or an explicitly supplied compatible override. README.md is the consolidated integration, component, recipe, security, and verification reference.",
|
|
"source": {
|
|
"root": "registry/nocobase-ai-knowledge-base",
|
|
"target": "src/extensions/nocobase-ai-knowledge-base",
|
|
"include": [
|
|
"demo",
|
|
"live",
|
|
"locales",
|
|
"extension.tsx",
|
|
"index.ts",
|
|
"routes.ts",
|
|
"README.md"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|