@nocobase/app-plugin-foundation 0.0.0-stage → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +86 -2
  3. package/dist/cli/index.d.ts +4 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +16 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/module-manifest.d.ts +9 -0
  8. package/dist/cli/module-manifest.d.ts.map +1 -0
  9. package/dist/cli/module-manifest.js +12 -0
  10. package/dist/cli/module-manifest.js.map +1 -0
  11. package/dist/client/api.d.ts +17 -0
  12. package/dist/client/api.d.ts.map +1 -0
  13. package/dist/client/api.js +51 -0
  14. package/dist/client/api.js.map +1 -0
  15. package/dist/client/business-modules.d.ts +5 -0
  16. package/dist/client/business-modules.d.ts.map +1 -0
  17. package/dist/client/business-modules.js +81 -0
  18. package/dist/client/business-modules.js.map +1 -0
  19. package/dist/client/components/capability-icons.d.ts +4 -0
  20. package/dist/client/components/capability-icons.d.ts.map +1 -0
  21. package/dist/client/components/capability-icons.js +17 -0
  22. package/dist/client/components/capability-icons.js.map +1 -0
  23. package/dist/client/components/format.d.ts +7 -0
  24. package/dist/client/components/format.d.ts.map +1 -0
  25. package/dist/client/components/format.js +42 -0
  26. package/dist/client/components/format.js.map +1 -0
  27. package/dist/client/components/foundation-page.d.ts +15 -0
  28. package/dist/client/components/foundation-page.d.ts.map +1 -0
  29. package/dist/client/components/foundation-page.js +207 -0
  30. package/dist/client/components/foundation-page.js.map +1 -0
  31. package/dist/client/components/foundation-translation.d.ts +12 -0
  32. package/dist/client/components/foundation-translation.d.ts.map +1 -0
  33. package/dist/client/components/foundation-translation.js +19 -0
  34. package/dist/client/components/foundation-translation.js.map +1 -0
  35. package/dist/client/components/module-matrix.d.ts +9 -0
  36. package/dist/client/components/module-matrix.d.ts.map +1 -0
  37. package/dist/client/components/module-matrix.js +56 -0
  38. package/dist/client/components/module-matrix.js.map +1 -0
  39. package/dist/client/components/ui/button.d.ts +8 -0
  40. package/dist/client/components/ui/button.d.ts.map +1 -0
  41. package/dist/client/components/ui/button.js +35 -0
  42. package/dist/client/components/ui/button.js.map +1 -0
  43. package/dist/client/components/ui/collapsible.d.ts +7 -0
  44. package/dist/client/components/ui/collapsible.d.ts.map +1 -0
  45. package/dist/client/components/ui/collapsible.js +13 -0
  46. package/dist/client/components/ui/collapsible.js.map +1 -0
  47. package/dist/client/components/ui/table.d.ts +11 -0
  48. package/dist/client/components/ui/table.d.ts.map +1 -0
  49. package/dist/client/components/ui/table.js +28 -0
  50. package/dist/client/components/ui/table.js.map +1 -0
  51. package/dist/client/index.d.ts +6 -0
  52. package/dist/client/index.d.ts.map +1 -0
  53. package/dist/client/index.js +7 -0
  54. package/dist/client/index.js.map +1 -0
  55. package/dist/client/locales/de-DE.d.ts +4 -0
  56. package/dist/client/locales/de-DE.d.ts.map +1 -0
  57. package/dist/client/locales/de-DE.js +315 -0
  58. package/dist/client/locales/de-DE.js.map +1 -0
  59. package/dist/client/locales/en-US.d.ts +317 -0
  60. package/dist/client/locales/en-US.d.ts.map +1 -0
  61. package/dist/client/locales/en-US.js +315 -0
  62. package/dist/client/locales/en-US.js.map +1 -0
  63. package/dist/client/locales/es-ES.d.ts +4 -0
  64. package/dist/client/locales/es-ES.d.ts.map +1 -0
  65. package/dist/client/locales/es-ES.js +316 -0
  66. package/dist/client/locales/es-ES.js.map +1 -0
  67. package/dist/client/locales/fr-FR.d.ts +4 -0
  68. package/dist/client/locales/fr-FR.d.ts.map +1 -0
  69. package/dist/client/locales/fr-FR.js +316 -0
  70. package/dist/client/locales/fr-FR.js.map +1 -0
  71. package/dist/client/locales/id-ID.d.ts +4 -0
  72. package/dist/client/locales/id-ID.d.ts.map +1 -0
  73. package/dist/client/locales/id-ID.js +315 -0
  74. package/dist/client/locales/id-ID.js.map +1 -0
  75. package/dist/client/locales/index.d.ts +4 -0
  76. package/dist/client/locales/index.d.ts.map +1 -0
  77. package/dist/client/locales/index.js +14 -0
  78. package/dist/client/locales/index.js.map +1 -0
  79. package/dist/client/locales/ja-JP.d.ts +4 -0
  80. package/dist/client/locales/ja-JP.d.ts.map +1 -0
  81. package/dist/client/locales/ja-JP.js +315 -0
  82. package/dist/client/locales/ja-JP.js.map +1 -0
  83. package/dist/client/locales/pt-BR.d.ts +4 -0
  84. package/dist/client/locales/pt-BR.d.ts.map +1 -0
  85. package/dist/client/locales/pt-BR.js +316 -0
  86. package/dist/client/locales/pt-BR.js.map +1 -0
  87. package/dist/client/locales/vi-VN.d.ts +4 -0
  88. package/dist/client/locales/vi-VN.d.ts.map +1 -0
  89. package/dist/client/locales/vi-VN.js +315 -0
  90. package/dist/client/locales/vi-VN.js.map +1 -0
  91. package/dist/client/locales/zh-CN.d.ts +4 -0
  92. package/dist/client/locales/zh-CN.d.ts.map +1 -0
  93. package/dist/client/locales/zh-CN.js +315 -0
  94. package/dist/client/locales/zh-CN.js.map +1 -0
  95. package/dist/client/locales/zh-TW.d.ts +4 -0
  96. package/dist/client/locales/zh-TW.d.ts.map +1 -0
  97. package/dist/client/locales/zh-TW.js +315 -0
  98. package/dist/client/locales/zh-TW.js.map +1 -0
  99. package/dist/client/navigation.d.ts +8 -0
  100. package/dist/client/navigation.d.ts.map +1 -0
  101. package/dist/client/navigation.js +21 -0
  102. package/dist/client/navigation.js.map +1 -0
  103. package/dist/client/plugin.d.ts +11 -0
  104. package/dist/client/plugin.d.ts.map +1 -0
  105. package/dist/client/plugin.js +10 -0
  106. package/dist/client/plugin.js.map +1 -0
  107. package/dist/client/provider-inventory.d.ts +6 -0
  108. package/dist/client/provider-inventory.d.ts.map +1 -0
  109. package/dist/client/provider-inventory.js +49 -0
  110. package/dist/client/provider-inventory.js.map +1 -0
  111. package/dist/client/routes.d.ts +18 -0
  112. package/dist/client/routes.d.ts.map +1 -0
  113. package/dist/client/routes.js +41 -0
  114. package/dist/client/routes.js.map +1 -0
  115. package/dist/package.d.ts +2 -0
  116. package/dist/package.d.ts.map +1 -0
  117. package/dist/package.js +2 -0
  118. package/dist/package.js.map +1 -0
  119. package/dist/server/capabilities/data.d.ts +7 -0
  120. package/dist/server/capabilities/data.d.ts.map +1 -0
  121. package/dist/server/capabilities/data.js +108 -0
  122. package/dist/server/capabilities/data.js.map +1 -0
  123. package/dist/server/capabilities/index.d.ts +5 -0
  124. package/dist/server/capabilities/index.d.ts.map +1 -0
  125. package/dist/server/capabilities/index.js +24 -0
  126. package/dist/server/capabilities/index.js.map +1 -0
  127. package/dist/server/capabilities/intelligence.d.ts +4 -0
  128. package/dist/server/capabilities/intelligence.d.ts.map +1 -0
  129. package/dist/server/capabilities/intelligence.js +97 -0
  130. package/dist/server/capabilities/intelligence.js.map +1 -0
  131. package/dist/server/capabilities/messaging.d.ts +4 -0
  132. package/dist/server/capabilities/messaging.d.ts.map +1 -0
  133. package/dist/server/capabilities/messaging.js +108 -0
  134. package/dist/server/capabilities/messaging.js.map +1 -0
  135. package/dist/server/capabilities/people.d.ts +4 -0
  136. package/dist/server/capabilities/people.d.ts.map +1 -0
  137. package/dist/server/capabilities/people.js +151 -0
  138. package/dist/server/capabilities/people.js.map +1 -0
  139. package/dist/server/capabilities/platform.d.ts +10 -0
  140. package/dist/server/capabilities/platform.d.ts.map +1 -0
  141. package/dist/server/capabilities/platform.js +143 -0
  142. package/dist/server/capabilities/platform.js.map +1 -0
  143. package/dist/server/capabilities/processes.d.ts +3 -0
  144. package/dist/server/capabilities/processes.d.ts.map +1 -0
  145. package/dist/server/capabilities/processes.js +86 -0
  146. package/dist/server/capabilities/processes.js.map +1 -0
  147. package/dist/server/capabilities/types.d.ts +38 -0
  148. package/dist/server/capabilities/types.d.ts.map +1 -0
  149. package/dist/server/capabilities/types.js +23 -0
  150. package/dist/server/capabilities/types.js.map +1 -0
  151. package/dist/server/catalog.d.ts +3 -0
  152. package/dist/server/catalog.d.ts.map +1 -0
  153. package/dist/server/catalog.js +44 -0
  154. package/dist/server/catalog.js.map +1 -0
  155. package/dist/server/index.d.ts +6 -0
  156. package/dist/server/index.d.ts.map +1 -0
  157. package/dist/server/index.js +5 -0
  158. package/dist/server/index.js.map +1 -0
  159. package/dist/server/inventory.d.ts +48 -0
  160. package/dist/server/inventory.d.ts.map +1 -0
  161. package/dist/server/inventory.js +158 -0
  162. package/dist/server/inventory.js.map +1 -0
  163. package/dist/server/module-manifest.d.ts +10 -0
  164. package/dist/server/module-manifest.d.ts.map +1 -0
  165. package/dist/server/module-manifest.js +65 -0
  166. package/dist/server/module-manifest.js.map +1 -0
  167. package/dist/server/module-sources.d.ts +5 -0
  168. package/dist/server/module-sources.d.ts.map +1 -0
  169. package/dist/server/module-sources.js +535 -0
  170. package/dist/server/module-sources.js.map +1 -0
  171. package/dist/server/packages.d.ts +18 -0
  172. package/dist/server/packages.d.ts.map +1 -0
  173. package/dist/server/packages.js +62 -0
  174. package/dist/server/packages.js.map +1 -0
  175. package/dist/server/plugin.d.ts +4 -0
  176. package/dist/server/plugin.d.ts.map +1 -0
  177. package/dist/server/plugin.js +12 -0
  178. package/dist/server/plugin.js.map +1 -0
  179. package/dist/server/provider-inventory.d.ts +13 -0
  180. package/dist/server/provider-inventory.d.ts.map +1 -0
  181. package/dist/server/provider-inventory.js +180 -0
  182. package/dist/server/provider-inventory.js.map +1 -0
  183. package/dist/server/providers/foundation.d.ts +7 -0
  184. package/dist/server/providers/foundation.d.ts.map +1 -0
  185. package/dist/server/providers/foundation.js +24 -0
  186. package/dist/server/providers/foundation.js.map +1 -0
  187. package/dist/server/providers/index.d.ts +4 -0
  188. package/dist/server/providers/index.d.ts.map +1 -0
  189. package/dist/server/providers/index.js +6 -0
  190. package/dist/server/providers/index.js.map +1 -0
  191. package/dist/server/routes/index.d.ts +6 -0
  192. package/dist/server/routes/index.d.ts.map +1 -0
  193. package/dist/server/routes/index.js +54 -0
  194. package/dist/server/routes/index.js.map +1 -0
  195. package/dist/server/routes/schemas.d.ts +7 -0
  196. package/dist/server/routes/schemas.d.ts.map +1 -0
  197. package/dist/server/routes/schemas.js +138 -0
  198. package/dist/server/routes/schemas.js.map +1 -0
  199. package/dist/server/services/foundation.d.ts +37 -0
  200. package/dist/server/services/foundation.d.ts.map +1 -0
  201. package/dist/server/services/foundation.js +175 -0
  202. package/dist/server/services/foundation.js.map +1 -0
  203. package/dist/server/source-evidence.d.ts +19 -0
  204. package/dist/server/source-evidence.d.ts.map +1 -0
  205. package/dist/server/source-evidence.js +169 -0
  206. package/dist/server/source-evidence.js.map +1 -0
  207. package/dist/server/tokens.d.ts +12 -0
  208. package/dist/server/tokens.d.ts.map +1 -0
  209. package/dist/server/tokens.js +3 -0
  210. package/dist/server/tokens.js.map +1 -0
  211. package/dist/shared/available-capabilities.d.ts +6 -0
  212. package/dist/shared/available-capabilities.d.ts.map +1 -0
  213. package/dist/shared/available-capabilities.js +66 -0
  214. package/dist/shared/available-capabilities.js.map +1 -0
  215. package/dist/shared/foundation.d.ts +142 -0
  216. package/dist/shared/foundation.d.ts.map +1 -0
  217. package/dist/shared/foundation.js +39 -0
  218. package/dist/shared/foundation.js.map +1 -0
  219. package/package.json +106 -3
  220. package/skills/nocobase-app-plugin-foundation/SKILL.md +68 -0
@@ -0,0 +1,108 @@
1
+ import { driveManagerToken } from '@nocobase/app-server/drive';
2
+ import { systemCollectionOwner } from '../catalog.js';
3
+ import { total } from '../inventory.js';
4
+ import { fact, metric, NO_DATABASE, } from './types.js';
5
+ const RELATION_TYPES = new Set([
6
+ 'belongsTo',
7
+ 'hasOne',
8
+ 'hasMany',
9
+ 'belongsToMany',
10
+ ]);
11
+ /** The Collections that hold the application's own data rather than a NocoBase package's. */
12
+ export function applicationCollections(probe) {
13
+ return probe.inventory.collections.filter((collection) => systemCollectionOwner(collection.name) === undefined);
14
+ }
15
+ export const dataModeling = {
16
+ key: 'dataModeling',
17
+ packages: [
18
+ '@nocobase/db',
19
+ '@nocobase/repository-input',
20
+ '@nocobase/snowflake',
21
+ ],
22
+ async collect({ probe }) {
23
+ if (!probe)
24
+ return NO_DATABASE;
25
+ const own = applicationCollections(probe);
26
+ // A view reads rows another Collection already holds, so only tables count towards the records.
27
+ const tables = own.filter((collection) => collection.kind === 'table');
28
+ const records = total(await Promise.all(tables.map((collection) => probe.count(collection.name))));
29
+ const definitions = await Promise.all(own.map((collection) => probe.inventory.definition(collection.name)));
30
+ const fields = definitions.flatMap((definition) => definition?.fields ?? []);
31
+ const relations = fields.filter((field) => RELATION_TYPES.has(field.type));
32
+ return {
33
+ status: 'active',
34
+ facts: own.length === 0
35
+ ? [fact('noApplicationCollections')]
36
+ : [
37
+ fact('applicationCollections', {
38
+ count: own.length,
39
+ names: own.map((collection) => collection.title ?? collection.name),
40
+ }),
41
+ ...(relations.length > 0
42
+ ? [fact('relations', { count: relations.length })]
43
+ : []),
44
+ ],
45
+ metrics: [
46
+ metric('businessRecords', records.value, {
47
+ complete: records.complete,
48
+ }),
49
+ metric('businessCollections', tables.length),
50
+ metric('views', own.length - tables.length),
51
+ metric('fields', fields.length - relations.length),
52
+ metric('relations', relations.length),
53
+ metric('systemCollections', probe.inventory.collections.length - own.length),
54
+ ],
55
+ };
56
+ },
57
+ };
58
+ /** The columns the file plugin requires of a file Collection (`FILE_COLUMNS` in `@nocobase/app-plugin-file`). */
59
+ const FILE_COLUMNS = [
60
+ 'disk',
61
+ 'key',
62
+ 'filename',
63
+ 'ext',
64
+ 'mimeType',
65
+ 'size',
66
+ ];
67
+ export const files = {
68
+ key: 'files',
69
+ packages: ['@nocobase/app-plugin-file', '@nocobase/drive'],
70
+ async collect({ probe, container }) {
71
+ if (!probe)
72
+ return NO_DATABASE;
73
+ const candidates = await Promise.all(applicationCollections(probe)
74
+ .filter((collection) => collection.kind === 'table')
75
+ .map(async (collection) => {
76
+ const names = await probe.fieldNames(collection.name);
77
+ return names !== null &&
78
+ FILE_COLUMNS.every((column) => names.includes(column))
79
+ ? collection
80
+ : undefined;
81
+ }));
82
+ const fileCollections = candidates.filter((collection) => collection !== undefined);
83
+ if (fileCollections.length === 0)
84
+ return { status: 'unused', reason: 'noFileCollection' };
85
+ const counts = total(await Promise.all(fileCollections.map((collection) => probe.count(collection.name))));
86
+ const bytes = total(await Promise.all(fileCollections.map((collection) => probe.sum(collection.name, 'size'))));
87
+ const hasDrive = container.has(driveManagerToken);
88
+ return {
89
+ status: hasDrive ? 'active' : 'needsSetup',
90
+ ...(hasDrive ? {} : { reason: 'noDrive' }),
91
+ facts: [
92
+ fact('fileCollections', {
93
+ count: fileCollections.length,
94
+ names: fileCollections.map((collection) => collection.title ?? collection.name),
95
+ }),
96
+ ],
97
+ metrics: [
98
+ metric('files', counts.value, { complete: counts.complete }),
99
+ metric('storedBytes', bytes.value, {
100
+ unit: 'bytes',
101
+ complete: bytes.complete,
102
+ }),
103
+ metric('fileCollections', fileCollections.length),
104
+ ],
105
+ };
106
+ },
107
+ };
108
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../server/capabilities/data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CapabilityCollector } from './types.js';
2
+ /** Ordered adapters, independently extensible without a fixed capability enum. */
3
+ export declare const CAPABILITY_COLLECTORS: readonly CapabilityCollector[];
4
+ export type { CapabilityCollector, CollectorContext } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/capabilities/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkBtD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,SAAS,mBAAmB,EAAe,CAAC;AAEhF,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { dataModeling, files } from './data.js';
2
+ import { aiAgents, knowledge } from './intelligence.js';
3
+ import { mail, notifications } from './messaging.js';
4
+ import { permissions, usersAndOrganizations } from './people.js';
5
+ import { audit, integrations, operations, userInterface } from './platform.js';
6
+ import { workflows } from './processes.js';
7
+ const collectors = [
8
+ dataModeling,
9
+ files,
10
+ usersAndOrganizations,
11
+ permissions,
12
+ workflows,
13
+ aiAgents,
14
+ knowledge,
15
+ mail,
16
+ notifications,
17
+ integrations,
18
+ userInterface,
19
+ audit,
20
+ operations,
21
+ ];
22
+ /** Ordered adapters, independently extensible without a fixed capability enum. */
23
+ export const CAPABILITY_COLLECTORS = collectors;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,UAAU,GAAmC;IACjD,YAAY;IACZ,KAAK;IACL,qBAAqB;IACrB,WAAW;IACX,SAAS;IACT,QAAQ;IACR,SAAS;IACT,IAAI;IACJ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,KAAK;IACL,UAAU;CACX,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAmC,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type CapabilityCollector } from './types.js';
2
+ export declare const aiAgents: CapabilityCollector;
3
+ export declare const knowledge: CapabilityCollector;
4
+ //# sourceMappingURL=intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../../server/capabilities/intelligence.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,QAAQ,EAAE,mBAmEtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,mBAwBvB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { total } from '../inventory.js';
2
+ import { fact, metric, NO_DATABASE, } from './types.js';
3
+ export const aiAgents = {
4
+ key: 'aiAgents',
5
+ packages: [
6
+ '@nocobase/app-plugin-agents',
7
+ '@nocobase/app-plugin-agent-sessions',
8
+ '@nocobase/app-plugin-ai-employee',
9
+ ],
10
+ async collect({ probe }) {
11
+ if (!probe)
12
+ return NO_DATABASE;
13
+ if (!probe.has('agModelServices'))
14
+ return { status: 'unused', reason: 'notRegistered' };
15
+ const [services, agents, runners, runs, modelCalls, input, output] = await Promise.all([
16
+ probe.count('agModelServices', { enabled: true }),
17
+ probe.has('agAgents') ? probe.count('agAgents') : Promise.resolve(0),
18
+ probe.has('agRunners') ? probe.count('agRunners') : Promise.resolve(0),
19
+ probe.has('agRuns') ? probe.count('agRuns') : Promise.resolve(0),
20
+ probe.has('agModelUsage')
21
+ ? probe.count('agModelUsage')
22
+ : Promise.resolve(0),
23
+ probe.has('agModelUsage')
24
+ ? probe.sum('agModelUsage', 'inputTokens')
25
+ : Promise.resolve(0),
26
+ probe.has('agModelUsage')
27
+ ? probe.sum('agModelUsage', 'outputTokens')
28
+ : Promise.resolve(0),
29
+ ]);
30
+ const tokens = total([input, output]);
31
+ // Two paths run an agent: an online one calls a model service, a runner one runs a coding tool on a runner.
32
+ const online = (services ?? 0) > 0 && (agents ?? 0) > 0;
33
+ const runner = (runners ?? 0) > 0;
34
+ const parts = [
35
+ (services ?? 0) > 0
36
+ ? { key: 'modelServices', status: 'active' }
37
+ : {
38
+ key: 'modelServices',
39
+ status: 'needsSetup',
40
+ reason: 'noModelService',
41
+ },
42
+ (agents ?? 0) > 0
43
+ ? { key: 'agents', status: 'active' }
44
+ : { key: 'agents', status: 'needsSetup', reason: 'noAgent' },
45
+ runner
46
+ ? { key: 'runners', status: 'active' }
47
+ : { key: 'runners', status: 'unused' },
48
+ ];
49
+ const active = online || runner;
50
+ return {
51
+ status: active ? 'active' : 'needsSetup',
52
+ ...(active ? {} : { reason: 'noModelOrRunner' }),
53
+ facts: active
54
+ ? [fact('agents', { count: agents ?? 0, runs: runs ?? 0 })]
55
+ : [],
56
+ metrics: [
57
+ metric('agents', agents),
58
+ metric('modelServices', services),
59
+ metric('runners', runners),
60
+ metric('runs', runs),
61
+ metric('modelCalls', modelCalls),
62
+ metric('tokens', tokens.value, {
63
+ unit: 'tokens',
64
+ complete: tokens.complete,
65
+ }),
66
+ ],
67
+ parts,
68
+ };
69
+ },
70
+ };
71
+ export const knowledge = {
72
+ key: 'knowledge',
73
+ packages: ['@nocobase/app-plugin-knowledge'],
74
+ async collect({ probe }) {
75
+ if (!probe)
76
+ return NO_DATABASE;
77
+ if (!probe.has('kbSpaces'))
78
+ return { status: 'unused', reason: 'notRegistered' };
79
+ const [spaces, docs, chunks] = await Promise.all([
80
+ probe.count('kbSpaces'),
81
+ probe.has('kbDocs') ? probe.count('kbDocs') : Promise.resolve(0),
82
+ probe.has('kbChunks') ? probe.count('kbChunks') : Promise.resolve(0),
83
+ ]);
84
+ const active = (docs ?? 0) > 0;
85
+ return {
86
+ status: active ? 'active' : 'needsSetup',
87
+ ...(active ? {} : { reason: 'noDocuments' }),
88
+ facts: active ? [fact('documents', { count: docs ?? 0 })] : [],
89
+ metrics: [
90
+ metric('documents', docs),
91
+ metric('spaces', spaces),
92
+ metric('chunks', chunks),
93
+ ],
94
+ };
95
+ },
96
+ };
97
+ //# sourceMappingURL=intelligence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../../server/capabilities/intelligence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,IAAI,EACJ,MAAM,EACN,WAAW,GAEZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C,GAAG,EAAE,UAAU;IACf,QAAQ,EAAE;QACR,6BAA6B;QAC7B,qCAAqC;QACrC,kCAAkC;KACnC;IACD,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;QACrB,IAAI,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACvD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,GAChE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC;gBAC1C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC;gBAC3C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;SACvB,CAAC,CAAC;QACL,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACtC,4GAA4G;QAC5G,MAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAqB;YAC9B,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;gBACjB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC5C,CAAC,CAAC;oBACE,GAAG,EAAE,eAAe;oBACpB,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,gBAAgB;iBACzB;YACL,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;gBACf,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACrC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE;YAC9D,MAAM;gBACJ,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;gBACtC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;SACzC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;YACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;YAChD,KAAK,EAAE,MAAM;gBACX,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAC,EAAE;YACN,OAAO,EAAE;gBACP,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACxB,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC;gBACjC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC1B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;gBACpB,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;gBAChC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE;oBAC7B,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC;aACH;YACD,KAAK;SACN,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,GAAG,EAAE,WAAW;IAChB,QAAQ,EAAE,CAAC,gCAAgC,CAAC;IAC5C,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;QACrB,IAAI,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACvD,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;SACrE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;YACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YAC5C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9D,OAAO,EAAE;gBACP,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;gBACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACxB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;aACzB;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type CapabilityCollector } from './types.js';
2
+ export declare const mail: CapabilityCollector;
3
+ export declare const notifications: CapabilityCollector;
4
+ //# sourceMappingURL=messaging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../../server/capabilities/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAKpB,eAAO,MAAM,IAAI,EAAE,mBA0ClB,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,mBAyE3B,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { countOf, fact, metric, NO_DATABASE, } from './types.js';
2
+ /** Account states that need someone to act before the mailbox syncs again. */
3
+ const ATTENTION_STATES = ['reauthorizationRequired', 'suspended', 'revoked'];
4
+ export const mail = {
5
+ key: 'mail',
6
+ packages: ['@nocobase/app-plugin-mail', '@nocobase/mailer'],
7
+ async collect({ probe }) {
8
+ if (!probe)
9
+ return NO_DATABASE;
10
+ if (!probe.has('mailAccounts'))
11
+ return { status: 'unused', reason: 'notRegistered' };
12
+ const [accounts, messages, submissions] = await Promise.all([
13
+ probe.groupCount('mailAccounts', 'status'),
14
+ probe.has('mailMessages')
15
+ ? probe.count('mailMessages')
16
+ : Promise.resolve(0),
17
+ probe.has('mailSubmissions')
18
+ ? probe.groupCount('mailSubmissions', 'status')
19
+ : Promise.resolve(new Map()),
20
+ ]);
21
+ const connected = countOf(accounts, ['active']);
22
+ const attention = countOf(accounts, ATTENTION_STATES);
23
+ const active = (connected ?? 0) > 0;
24
+ return {
25
+ status: active ? 'active' : 'needsSetup',
26
+ ...(active ? {} : { reason: 'noConnectedMailbox' }),
27
+ facts: [
28
+ ...(active ? [fact('mailboxes', { count: connected ?? 0 })] : []),
29
+ ...((attention ?? 0) > 0
30
+ ? [fact('mailboxesNeedAttention', { count: attention ?? 0 })]
31
+ : []),
32
+ ],
33
+ metrics: [
34
+ metric('connectedMailboxes', connected),
35
+ metric('mailboxesNeedAttention', attention),
36
+ metric('messages', messages),
37
+ metric('submissions', submissions === null
38
+ ? null
39
+ : [...submissions.values()].reduce((sum, count) => sum + count, 0)),
40
+ metric('failedSubmissions', countOf(submissions, ['failed'])),
41
+ ],
42
+ };
43
+ },
44
+ };
45
+ const IN_FLIGHT = ['pending', 'preparing', 'submitting', 'retrying'];
46
+ export const notifications = {
47
+ key: 'notifications',
48
+ packages: [
49
+ '@nocobase/app-plugin-notification',
50
+ '@nocobase/app-plugin-notification-in-app',
51
+ '@nocobase/app-plugin-notification-providers',
52
+ '@nocobase/app-plugin-notification-web-push',
53
+ ],
54
+ async collect({ probe, config }) {
55
+ if (!probe)
56
+ return NO_DATABASE;
57
+ if (!probe.has('notificationDeliveries'))
58
+ return { status: 'unused', reason: 'notRegistered' };
59
+ const channels = Object.entries(config.get('notification')?.channels ?? {});
60
+ const [dispatches, deliveries, attempts, inApp, inAppRead] = await Promise.all([
61
+ probe.has('notificationDispatches')
62
+ ? probe.count('notificationDispatches')
63
+ : Promise.resolve(0),
64
+ probe.groupCount('notificationDeliveries', 'status'),
65
+ probe.has('notificationDeliveryAttempts')
66
+ ? probe.count('notificationDeliveryAttempts')
67
+ : Promise.resolve(0),
68
+ probe.has('notificationInAppItems')
69
+ ? probe.count('notificationInAppItems')
70
+ : Promise.resolve(undefined),
71
+ probe.has('notificationInAppItems')
72
+ ? probe.count('notificationInAppItems', (filter) => filter.date('readAt').notEmpty())
73
+ : Promise.resolve(undefined),
74
+ ]);
75
+ const active = channels.length > 0;
76
+ return {
77
+ status: active ? 'active' : 'needsSetup',
78
+ ...(active ? {} : { reason: 'noChannel' }),
79
+ facts: active
80
+ ? [
81
+ fact('channels', {
82
+ count: channels.length,
83
+ names: channels.map(([name, channel]) => `${name} (${typeof channel.provider === 'string' ? channel.provider : '?'})`),
84
+ }),
85
+ ]
86
+ : [],
87
+ metrics: [
88
+ // Accepted by the provider, which is not the same as read or even received.
89
+ metric('acceptedDeliveries', countOf(deliveries, ['accepted'])),
90
+ metric('notifications', dispatches),
91
+ metric('deliveries', deliveries === null
92
+ ? null
93
+ : [...deliveries.values()].reduce((sum, count) => sum + count, 0)),
94
+ metric('failedDeliveries', countOf(deliveries, ['failed'])),
95
+ metric('pendingDeliveries', countOf(deliveries, IN_FLIGHT)),
96
+ metric('deliveryAttempts', attempts),
97
+ ...(inApp === undefined
98
+ ? []
99
+ : [
100
+ metric('inAppMessages', inApp),
101
+ metric('inAppMessagesRead', inAppRead ?? null),
102
+ ]),
103
+ metric('channels', channels.length),
104
+ ],
105
+ };
106
+ },
107
+ };
108
+ //# sourceMappingURL=messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../server/capabilities/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type CapabilityCollector } from './types.js';
2
+ export declare const usersAndOrganizations: CapabilityCollector;
3
+ export declare const permissions: CapabilityCollector;
4
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../../server/capabilities/people.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,qBAAqB,EAAE,mBAwCnC,CAAC;AAQF,eAAO,MAAM,WAAW,EAAE,mBAkFzB,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { fact, metric, NO_DATABASE, } from './types.js';
2
+ export const usersAndOrganizations = {
3
+ key: 'usersAndOrganizations',
4
+ packages: [
5
+ '@nocobase/app-plugin-authentication',
6
+ '@nocobase/app-plugin-users',
7
+ '@nocobase/app-plugin-user-management',
8
+ ],
9
+ async collect({ probe }) {
10
+ if (!probe)
11
+ return NO_DATABASE;
12
+ if (!probe.has('user'))
13
+ return { status: 'unused', reason: 'noAccounts' };
14
+ // Deleted accounts stay as records for what they did; they are not accounts any more.
15
+ const accounts = await probe.count('user', (filter) => filter.date('deletedAt').empty());
16
+ const disabled = await probe.count('user', (filter) => filter.and([
17
+ filter.date('deletedAt').empty(),
18
+ filter.date('disabledAt').notEmpty(),
19
+ ]));
20
+ const invitations = probe.has('userInvitations')
21
+ ? await probe.count('userInvitations')
22
+ : undefined;
23
+ return {
24
+ status: 'active',
25
+ facts: accounts === null ? [] : [fact('accounts', { count: accounts })],
26
+ metrics: [
27
+ metric('accounts', accounts),
28
+ metric('disabledAccounts', disabled),
29
+ ...(invitations === undefined
30
+ ? []
31
+ : [metric('invitations', invitations)]),
32
+ ],
33
+ // NocoBase Core has no organization model of its own yet: departments and teams are the application's.
34
+ parts: [
35
+ { key: 'accounts', status: 'active' },
36
+ { key: 'organizations', status: 'unused', reason: 'notProvided' },
37
+ ],
38
+ };
39
+ },
40
+ };
41
+ const RULE_COLLECTIONS = [
42
+ { part: 'sharingRules', collection: 'authorizationSharingRules' },
43
+ { part: 'restrictionRules', collection: 'authorizationRestrictionRules' },
44
+ { part: 'defaultAccess', collection: 'authorizationDefaultAccessRules' },
45
+ ];
46
+ export const permissions = {
47
+ key: 'permissions',
48
+ packages: [
49
+ '@nocobase/app-plugin-authorization',
50
+ '@nocobase/authorization',
51
+ '@nocobase/app-plugin-authz-default-access',
52
+ '@nocobase/app-plugin-authz-sharing-rules',
53
+ '@nocobase/app-plugin-authz-restriction-rules',
54
+ ],
55
+ async collect({ probe, config }) {
56
+ if (!probe)
57
+ return NO_DATABASE;
58
+ if (!probe.has('authorizationPermissionSets'))
59
+ return { status: 'unused', reason: 'notRegistered' };
60
+ const rootSet = config.get('authorization')
61
+ ?.permissionSets?.rootSet ?? 'root';
62
+ const sets = await probe.records('authorizationPermissionSets');
63
+ const assignments = probe.has('authorizationPermissionSetAssignments')
64
+ ? await probe.groupCount('authorizationPermissionSetAssignments', 'permissionSetKey')
65
+ : new Map();
66
+ // Holding the root set grants everything without a grant, so its own grants say nothing about the application.
67
+ const grantedSets = sets?.filter((set) => set.key !== rootSet);
68
+ const grants = grantedSets?.reduce((sum, set) => sum + grantCount(set.grants), 0) ??
69
+ null;
70
+ const assigned = assignments === null
71
+ ? null
72
+ : [...assignments.entries()]
73
+ .filter(([key]) => key !== rootSet)
74
+ .reduce((sum, [, count]) => sum + count, 0);
75
+ const rules = await Promise.all(RULE_COLLECTIONS.map(async ({ part, collection }) => ({
76
+ part,
77
+ count: probe.has(collection)
78
+ ? await probe.count(collection)
79
+ : undefined,
80
+ })));
81
+ const parts = [
82
+ {
83
+ key: 'permissionSets',
84
+ status: (grants ?? 0) > 0 ? 'active' : 'needsSetup',
85
+ },
86
+ ...rules.map(({ part, count }) => count === undefined
87
+ ? { key: part, status: 'unused', reason: 'notRegistered' }
88
+ : (count ?? 0) > 0
89
+ ? { key: part, status: 'active' }
90
+ : { key: part, status: 'unused' }),
91
+ ];
92
+ const ruleCount = rules.reduce((sum, rule) => sum + (rule.count ?? 0), 0);
93
+ const active = (grants ?? 0) > 0 || ruleCount > 0;
94
+ return {
95
+ status: active ? 'active' : 'needsSetup',
96
+ ...(active ? {} : { reason: 'onlyUnrestrictedAccess' }),
97
+ facts: [
98
+ ...(grantedSets === undefined
99
+ ? []
100
+ : [
101
+ fact('permissionSets', {
102
+ count: grantedSets.length,
103
+ names: grantedSets.map((set) => text(set.title, set.key)),
104
+ }),
105
+ ]),
106
+ ...(ruleCount > 0 ? [fact('accessRules', { count: ruleCount })] : []),
107
+ ],
108
+ metrics: [
109
+ metric('grants', grants),
110
+ metric('permissionSets', grantedSets?.length ?? null),
111
+ metric('assignments', assigned),
112
+ ...rules
113
+ .filter((rule) => rule.count !== undefined)
114
+ .map((rule) => metric(rule.part, rule.count ?? null)),
115
+ ],
116
+ parts,
117
+ };
118
+ },
119
+ };
120
+ function grantCount(value) {
121
+ let grants = value;
122
+ if (typeof grants === 'string') {
123
+ try {
124
+ grants = JSON.parse(grants);
125
+ }
126
+ catch {
127
+ return 0;
128
+ }
129
+ }
130
+ return Array.isArray(grants) ? grants.length : 0;
131
+ }
132
+ /**
133
+ * A stored title, falling back to the record's key. A built-in record stores a translation key as JSON in its text
134
+ * column, which the page translates; anything else is plain text.
135
+ */
136
+ function text(title, fallback) {
137
+ if (typeof title === 'string' && title.startsWith('{')) {
138
+ try {
139
+ const { key, ns } = JSON.parse(title);
140
+ if (typeof key === 'string' && typeof ns === 'string')
141
+ return { key, ns };
142
+ }
143
+ catch {
144
+ // Not a translation key after all: shown as written.
145
+ }
146
+ }
147
+ if (typeof title === 'string' && title)
148
+ return title;
149
+ return typeof fallback === 'string' ? fallback : '';
150
+ }
151
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../../server/capabilities/people.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type CapabilityCollector } from './types.js';
2
+ export declare const integrations: CapabilityCollector;
3
+ /**
4
+ * What the server can tell about the interface: whether the NocoBase client serves it and which languages the
5
+ * application offers. The page adds the pages and menu entries it registers, which only the browser knows.
6
+ */
7
+ export declare const userInterface: CapabilityCollector;
8
+ export declare const audit: CapabilityCollector;
9
+ export declare const operations: CapabilityCollector;
10
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../server/capabilities/platform.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,YAAY,EAAE,mBA2B1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,mBAsB3B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,mBAQnB,CAAC;AAgBF,eAAO,MAAM,UAAU,EAAE,mBAoDxB,CAAC"}