@directus/api 32.1.1 → 32.2.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 (165) hide show
  1. package/dist/ai/chat/constants/system-prompt.d.ts +1 -0
  2. package/dist/ai/chat/constants/system-prompt.js +51 -0
  3. package/dist/ai/chat/controllers/chat.post.d.ts +2 -0
  4. package/dist/ai/chat/controllers/chat.post.js +47 -0
  5. package/dist/ai/chat/lib/create-ui-stream.d.ts +15 -0
  6. package/dist/ai/chat/lib/create-ui-stream.js +42 -0
  7. package/dist/ai/chat/middleware/load-settings.d.ts +2 -0
  8. package/dist/ai/chat/middleware/load-settings.js +18 -0
  9. package/dist/ai/chat/models/chat-request.d.ts +34 -0
  10. package/dist/ai/chat/models/chat-request.js +26 -0
  11. package/dist/ai/chat/models/providers.d.ts +9 -0
  12. package/dist/ai/chat/models/providers.js +9 -0
  13. package/dist/ai/chat/router.d.ts +1 -0
  14. package/dist/ai/chat/router.js +5 -0
  15. package/dist/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.d.ts +9 -0
  16. package/dist/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.js +38 -0
  17. package/dist/ai/chat/utils/fix-error-tool-calls.d.ts +12 -0
  18. package/dist/ai/chat/utils/fix-error-tool-calls.js +30 -0
  19. package/dist/ai/chat/utils/parse-json-schema-7.d.ts +13 -0
  20. package/dist/ai/chat/utils/parse-json-schema-7.js +75 -0
  21. package/dist/{mcp → ai/mcp}/server.d.ts +13 -16
  22. package/dist/{mcp → ai/mcp}/server.js +4 -13
  23. package/dist/ai/mcp/types.d.ts +15 -0
  24. package/dist/{mcp/tools/assets.js → ai/tools/assets/index.js} +8 -5
  25. package/dist/{mcp/tools/collections.js → ai/tools/collections/index.js} +7 -4
  26. package/dist/{mcp/tools/fields.js → ai/tools/fields/index.js} +12 -9
  27. package/dist/{mcp/tools/files.js → ai/tools/files/index.js} +11 -5
  28. package/dist/{mcp/tools/flows.js → ai/tools/flows/index.js} +11 -5
  29. package/dist/{mcp/tools/folders.js → ai/tools/folders/index.js} +12 -5
  30. package/dist/ai/tools/index.d.ts +15 -0
  31. package/dist/ai/tools/index.js +29 -0
  32. package/dist/{mcp/tools/items.js → ai/tools/items/index.js} +13 -6
  33. package/dist/{mcp/tools/prompts/items.md → ai/tools/items/prompt.md} +19 -15
  34. package/dist/{mcp/tools/operations.d.ts → ai/tools/operations/index.d.ts} +46 -0
  35. package/dist/{mcp/tools/operations.js → ai/tools/operations/index.js} +12 -5
  36. package/dist/{mcp/tools/relations.js → ai/tools/relations/index.js} +7 -4
  37. package/dist/{mcp/tools/schema.d.ts → ai/tools/schema/index.d.ts} +1 -1
  38. package/dist/{mcp/tools/schema.js → ai/tools/schema/index.js} +9 -6
  39. package/dist/{mcp/tools/system.js → ai/tools/system/index.js} +7 -4
  40. package/dist/{mcp/tools/trigger-flow.js → ai/tools/trigger-flow/index.js} +8 -5
  41. package/dist/{mcp → ai/tools}/types.d.ts +1 -17
  42. package/dist/ai/tools/utils.d.ts +9 -0
  43. package/dist/ai/tools/utils.js +17 -0
  44. package/dist/app.js +5 -0
  45. package/dist/auth/drivers/saml.js +5 -2
  46. package/dist/controllers/assets.js +39 -2
  47. package/dist/controllers/mcp.js +1 -1
  48. package/dist/database/migrations/20240806A-permissions-policies.js +2 -2
  49. package/dist/database/migrations/20251103A-add-ai-settings.d.ts +3 -0
  50. package/dist/database/migrations/20251103A-add-ai-settings.js +14 -0
  51. package/dist/database/run-ast/run-ast.js +1 -1
  52. package/dist/extensions/lib/installation/manager.js +5 -9
  53. package/dist/extensions/lib/sync/status.d.ts +11 -0
  54. package/dist/extensions/lib/sync/status.js +34 -0
  55. package/dist/extensions/lib/sync/sync.d.ts +6 -0
  56. package/dist/extensions/lib/sync/sync.js +90 -0
  57. package/dist/extensions/lib/sync/tracker.d.ts +18 -0
  58. package/dist/extensions/lib/sync/tracker.js +71 -0
  59. package/dist/extensions/lib/sync/utils.d.ts +24 -0
  60. package/dist/extensions/lib/sync/utils.js +62 -0
  61. package/dist/extensions/manager.d.ts +8 -4
  62. package/dist/extensions/manager.js +30 -13
  63. package/dist/middleware/respond.js +2 -2
  64. package/dist/permissions/lib/fetch-policies.d.ts +1 -1
  65. package/dist/permissions/lib/fetch-roles-tree.d.ts +6 -3
  66. package/dist/permissions/lib/fetch-roles-tree.js +5 -27
  67. package/dist/permissions/modules/fetch-global-access/fetch-global-access.d.ts +9 -7
  68. package/dist/permissions/modules/fetch-global-access/fetch-global-access.js +17 -9
  69. package/dist/permissions/modules/fetch-policies-ip-access/fetch-policies-ip-access.d.ts +1 -1
  70. package/dist/permissions/utils/fetch-raw-permissions.d.ts +1 -1
  71. package/dist/permissions/utils/fetch-share-info.d.ts +1 -1
  72. package/dist/permissions/utils/fetch-share-info.js +1 -1
  73. package/dist/permissions/utils/filter-policies-by-ip.js +1 -1
  74. package/dist/permissions/utils/get-permissions-for-share.js +8 -8
  75. package/dist/permissions/utils/with-cache.d.ts +8 -6
  76. package/dist/permissions/utils/with-cache.js +12 -10
  77. package/dist/request/is-denied-ip.js +2 -2
  78. package/dist/services/assets/name-deduper.d.ts +7 -0
  79. package/dist/services/assets/name-deduper.js +23 -0
  80. package/dist/services/assets.d.ts +15 -2
  81. package/dist/services/assets.js +98 -5
  82. package/dist/services/authentication.js +4 -4
  83. package/dist/services/comments.js +2 -2
  84. package/dist/services/extensions.js +4 -0
  85. package/dist/services/folders.d.ts +27 -2
  86. package/dist/services/folders.js +75 -0
  87. package/dist/services/import-export.d.ts +1 -1
  88. package/dist/services/import-export.js +4 -5
  89. package/dist/services/notifications.js +2 -2
  90. package/dist/services/payload.js +20 -0
  91. package/dist/services/roles.js +2 -2
  92. package/dist/services/tus/server.js +3 -3
  93. package/dist/telemetry/utils/get-settings.d.ts +15 -0
  94. package/dist/telemetry/utils/get-settings.js +13 -1
  95. package/dist/test-utils/README.md +95 -24
  96. package/dist/test-utils/cache.d.ts +2 -2
  97. package/dist/test-utils/cache.js +2 -2
  98. package/dist/test-utils/{fields-service.d.ts → services/fields-service.d.ts} +1 -1
  99. package/dist/test-utils/{fields-service.js → services/fields-service.js} +3 -2
  100. package/dist/test-utils/services/files-service.d.ts +28 -0
  101. package/dist/test-utils/services/files-service.js +34 -0
  102. package/dist/test-utils/services/folders-service.d.ts +28 -0
  103. package/dist/test-utils/services/folders-service.js +33 -0
  104. package/dist/utils/encrypt.d.ts +2 -0
  105. package/dist/utils/encrypt.js +64 -0
  106. package/dist/utils/get-accountability-for-role.js +2 -2
  107. package/dist/utils/get-accountability-for-token.js +4 -4
  108. package/dist/utils/get-cache-key.js +2 -2
  109. package/dist/utils/require-text.d.ts +1 -0
  110. package/dist/utils/require-text.js +4 -0
  111. package/dist/utils/require-yaml.js +2 -2
  112. package/package.json +32 -26
  113. package/dist/extensions/lib/sync-extensions.d.ts +0 -3
  114. package/dist/extensions/lib/sync-extensions.js +0 -70
  115. package/dist/extensions/lib/sync-status.d.ts +0 -10
  116. package/dist/extensions/lib/sync-status.js +0 -27
  117. package/dist/mcp/tools/index.d.ts +0 -15
  118. package/dist/mcp/tools/index.js +0 -29
  119. package/dist/mcp/tools/prompts/index.d.ts +0 -16
  120. package/dist/mcp/tools/prompts/index.js +0 -19
  121. package/dist/permissions/modules/fetch-global-access/lib/fetch-global-access-for-roles.d.ts +0 -5
  122. package/dist/permissions/modules/fetch-global-access/lib/fetch-global-access-for-roles.js +0 -7
  123. package/dist/permissions/modules/fetch-global-access/lib/fetch-global-access-for-user.d.ts +0 -5
  124. package/dist/permissions/modules/fetch-global-access/lib/fetch-global-access-for-user.js +0 -10
  125. package/dist/permissions/modules/fetch-global-access/types.d.ts +0 -4
  126. package/dist/permissions/modules/fetch-global-access/utils/fetch-global-access-for-query.d.ts +0 -4
  127. package/dist/permissions/modules/fetch-global-access/utils/fetch-global-access-for-query.js +0 -27
  128. package/dist/utils/get-date-formatted.d.ts +0 -1
  129. package/dist/utils/get-date-formatted.js +0 -10
  130. package/dist/utils/ip-in-networks.d.ts +0 -6
  131. package/dist/utils/ip-in-networks.js +0 -13
  132. /package/dist/{mcp → ai/mcp}/index.d.ts +0 -0
  133. /package/dist/{mcp → ai/mcp}/index.js +0 -0
  134. /package/dist/{mcp → ai/mcp}/transport.d.ts +0 -0
  135. /package/dist/{mcp → ai/mcp}/transport.js +0 -0
  136. /package/dist/{mcp → ai/mcp}/types.js +0 -0
  137. /package/dist/{mcp/tools/assets.d.ts → ai/tools/assets/index.d.ts} +0 -0
  138. /package/dist/{mcp/tools/prompts/assets.md → ai/tools/assets/prompt.md} +0 -0
  139. /package/dist/{mcp/tools/collections.d.ts → ai/tools/collections/index.d.ts} +0 -0
  140. /package/dist/{mcp/tools/prompts/collections.md → ai/tools/collections/prompt.md} +0 -0
  141. /package/dist/{mcp/define.d.ts → ai/tools/define-tool.d.ts} +0 -0
  142. /package/dist/{mcp/define.js → ai/tools/define-tool.js} +0 -0
  143. /package/dist/{mcp/tools/fields.d.ts → ai/tools/fields/index.d.ts} +0 -0
  144. /package/dist/{mcp/tools/prompts/fields.md → ai/tools/fields/prompt.md} +0 -0
  145. /package/dist/{mcp/tools/files.d.ts → ai/tools/files/index.d.ts} +0 -0
  146. /package/dist/{mcp/tools/prompts/files.md → ai/tools/files/prompt.md} +0 -0
  147. /package/dist/{mcp/tools/flows.d.ts → ai/tools/flows/index.d.ts} +0 -0
  148. /package/dist/{mcp/tools/prompts/flows.md → ai/tools/flows/prompt.md} +0 -0
  149. /package/dist/{mcp/tools/folders.d.ts → ai/tools/folders/index.d.ts} +0 -0
  150. /package/dist/{mcp/tools/prompts/folders.md → ai/tools/folders/prompt.md} +0 -0
  151. /package/dist/{mcp/tools/items.d.ts → ai/tools/items/index.d.ts} +0 -0
  152. /package/dist/{mcp/tools/prompts/operations.md → ai/tools/operations/prompt.md} +0 -0
  153. /package/dist/{mcp/tools/relations.d.ts → ai/tools/relations/index.d.ts} +0 -0
  154. /package/dist/{mcp/tools/prompts/relations.md → ai/tools/relations/prompt.md} +0 -0
  155. /package/dist/{mcp/tools/prompts/schema.md → ai/tools/schema/prompt.md} +0 -0
  156. /package/dist/{mcp → ai/tools}/schema.d.ts +0 -0
  157. /package/dist/{mcp → ai/tools}/schema.js +0 -0
  158. /package/dist/{mcp/tools/system.d.ts → ai/tools/system/index.d.ts} +0 -0
  159. /package/dist/{mcp/tools/prompts/system-prompt-description.md → ai/tools/system/prompt-description.md} +0 -0
  160. /package/dist/{mcp/tools/prompts/system-prompt.md → ai/tools/system/prompt.md} +0 -0
  161. /package/dist/{mcp/tools/trigger-flow.d.ts → ai/tools/trigger-flow/index.d.ts} +0 -0
  162. /package/dist/{mcp/tools/prompts/trigger-flow.md → ai/tools/trigger-flow/prompt.md} +0 -0
  163. /package/dist/{permissions/modules/fetch-global-access → ai/tools}/types.js +0 -0
  164. /package/dist/test-utils/{items-service.d.ts → services/items-service.d.ts} +0 -0
  165. /package/dist/test-utils/{items-service.js → services/items-service.js} +0 -0
@@ -1,10 +0,0 @@
1
- import { withCache } from '../../../utils/with-cache.js';
2
- import { fetchGlobalAccessForQuery } from '../utils/fetch-global-access-for-query.js';
3
- export const fetchGlobalAccessForUser = withCache('global-access-user', _fetchGlobalAccessForUser, ({ user, ip }) => ({
4
- user,
5
- ip,
6
- }));
7
- export async function _fetchGlobalAccessForUser(accountability, knex) {
8
- const query = knex.where('user', '=', accountability.user);
9
- return await fetchGlobalAccessForQuery(query, accountability);
10
- }
@@ -1,4 +0,0 @@
1
- export interface GlobalAccess {
2
- app: boolean;
3
- admin: boolean;
4
- }
@@ -1,4 +0,0 @@
1
- import type { Accountability } from '@directus/types';
2
- import type { Knex } from 'knex';
3
- import type { GlobalAccess } from '../types.js';
4
- export declare function fetchGlobalAccessForQuery(query: Knex.QueryBuilder<any, any[]>, accountability: Pick<Accountability, 'ip'>): Promise<GlobalAccess>;
@@ -1,27 +0,0 @@
1
- import { toBoolean, toArray } from '@directus/utils';
2
- import { ipInNetworks } from '../../../../utils/ip-in-networks.js';
3
- export async function fetchGlobalAccessForQuery(query, accountability) {
4
- const globalAccess = {
5
- app: false,
6
- admin: false,
7
- };
8
- const accessRows = await query
9
- .select('directus_policies.admin_access', 'directus_policies.app_access', 'directus_policies.ip_access')
10
- .from('directus_access')
11
- // @NOTE: `where` clause comes from the caller
12
- .leftJoin('directus_policies', 'directus_policies.id', 'directus_access.policy');
13
- // Additively merge access permissions
14
- for (const { admin_access, app_access, ip_access } of accessRows) {
15
- if (accountability.ip && ip_access) {
16
- // Skip row if IP is not in the allowed networks
17
- const networks = toArray(ip_access);
18
- if (!ipInNetworks(accountability.ip, networks))
19
- continue;
20
- }
21
- globalAccess.admin ||= toBoolean(admin_access);
22
- globalAccess.app ||= globalAccess.admin || toBoolean(app_access);
23
- if (globalAccess.admin)
24
- break;
25
- }
26
- return globalAccess;
27
- }
@@ -1 +0,0 @@
1
- export declare function getDateFormatted(): string;
@@ -1,10 +0,0 @@
1
- export function getDateFormatted() {
2
- const date = new Date();
3
- let month = String(date.getMonth() + 1);
4
- if (month.length === 1)
5
- month = '0' + month;
6
- let day = String(date.getDate());
7
- if (day.length === 1)
8
- day = '0' + day;
9
- return `${date.getFullYear()}${month}${day}-${date.getHours()}${date.getMinutes()}${date.getSeconds()}`;
10
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Checks if an IP address is contained in a list of networks
3
- * @param networks List of IP addresses (192.168.0.1), CIDR notations (192.168.0.0/24) or IP ranges (192-168.0.0-192.168.2.0)
4
- * @throws Will throw if list contains invalid network definitions
5
- */
6
- export declare function ipInNetworks(ip: string, networks: string[]): boolean;
@@ -1,13 +0,0 @@
1
- import { matches } from 'ip-matching';
2
- /**
3
- * Checks if an IP address is contained in a list of networks
4
- * @param networks List of IP addresses (192.168.0.1), CIDR notations (192.168.0.0/24) or IP ranges (192-168.0.0-192.168.2.0)
5
- * @throws Will throw if list contains invalid network definitions
6
- */
7
- export function ipInNetworks(ip, networks) {
8
- for (const allowedIp of networks) {
9
- if (matches(ip, allowedIp))
10
- return true;
11
- }
12
- return false;
13
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes