@casual-simulation/aux-records 3.4.6-alpha.14601027727 → 3.5.0-alpha.15117651144

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 (211) hide show
  1. package/AIController.js +835 -890
  2. package/AIController.js.map +1 -1
  3. package/AIHumeInterface.js +43 -54
  4. package/AIHumeInterface.js.map +1 -1
  5. package/AIOpenAIRealtimeInterface.js +60 -71
  6. package/AIOpenAIRealtimeInterface.js.map +1 -1
  7. package/AnthropicAIChatInterface.js +96 -142
  8. package/AnthropicAIChatInterface.js.map +1 -1
  9. package/AuthController.d.ts +3 -2
  10. package/AuthController.js +1907 -1933
  11. package/AuthController.js.map +1 -1
  12. package/AuthStore.d.ts +1 -10
  13. package/BlockadeLabsGenerateSkyboxInterface.js +57 -72
  14. package/BlockadeLabsGenerateSkyboxInterface.js.map +1 -1
  15. package/CachingConfigStore.js +30 -45
  16. package/CachingConfigStore.js.map +1 -1
  17. package/CachingPolicyStore.d.ts +8 -2
  18. package/CachingPolicyStore.js +108 -135
  19. package/CachingPolicyStore.js.map +1 -1
  20. package/ComIdConfig.d.ts +18 -18
  21. package/ComIdConfig.js.map +1 -1
  22. package/ConsoleAuthMessenger.js +7 -20
  23. package/ConsoleAuthMessenger.js.map +1 -1
  24. package/DataRecordsController.d.ts +2 -2
  25. package/DataRecordsController.js +369 -377
  26. package/DataRecordsController.js.map +1 -1
  27. package/DataRecordsStore.d.ts +1 -1
  28. package/DataRecordsStore.js +1 -1
  29. package/DataRecordsStore.js.map +1 -1
  30. package/EventRecordsController.js +226 -240
  31. package/EventRecordsController.js.map +1 -1
  32. package/FileRecordsController.d.ts +13 -2
  33. package/FileRecordsController.js +458 -450
  34. package/FileRecordsController.js.map +1 -1
  35. package/GoogleAIChatInterface.js +133 -179
  36. package/GoogleAIChatInterface.js.map +1 -1
  37. package/LivekitController.js +43 -54
  38. package/LivekitController.js.map +1 -1
  39. package/LoomController.js +64 -75
  40. package/LoomController.js.map +1 -1
  41. package/MemoryAuthMessenger.js +10 -23
  42. package/MemoryAuthMessenger.js.map +1 -1
  43. package/MemoryCache.js +18 -35
  44. package/MemoryCache.js.map +1 -1
  45. package/MemoryFileRecordsLookup.js +105 -125
  46. package/MemoryFileRecordsLookup.js.map +1 -1
  47. package/MemoryModerationJobProvider.js +17 -30
  48. package/MemoryModerationJobProvider.js.map +1 -1
  49. package/MemoryRateLimiter.js +12 -27
  50. package/MemoryRateLimiter.js.map +1 -1
  51. package/MemoryStore.d.ts +18 -6
  52. package/MemoryStore.js +1879 -1997
  53. package/MemoryStore.js.map +1 -1
  54. package/MetricsStore.d.ts +2 -2
  55. package/ModerationController.js +186 -200
  56. package/ModerationController.js.map +1 -1
  57. package/OpenAIChatInterface.js +105 -135
  58. package/OpenAIChatInterface.js.map +1 -1
  59. package/OpenAIImageInterface.js +57 -51
  60. package/OpenAIImageInterface.js.map +1 -1
  61. package/PolicyController.d.ts +150 -10
  62. package/PolicyController.js +1546 -1299
  63. package/PolicyController.js.map +1 -1
  64. package/PolicyStore.d.ts +110 -2
  65. package/PolicyStore.js +36 -1
  66. package/PolicyStore.js.map +1 -1
  67. package/PrivoClient.js +398 -435
  68. package/PrivoClient.js.map +1 -1
  69. package/RateLimitController.js +25 -36
  70. package/RateLimitController.js.map +1 -1
  71. package/RecordsClient.js +51 -74
  72. package/RecordsClient.js.map +1 -1
  73. package/RecordsController.d.ts +2 -42
  74. package/RecordsController.js +1026 -1182
  75. package/RecordsController.js.map +1 -1
  76. package/RecordsServer.d.ts +196 -27
  77. package/RecordsServer.js +1701 -1343
  78. package/RecordsServer.js.map +1 -1
  79. package/RecordsStore.d.ts +1 -10
  80. package/RecordsStore.js.map +1 -1
  81. package/ServerConfig.d.ts +339 -195
  82. package/ServerConfig.js +13 -0
  83. package/ServerConfig.js.map +1 -1
  84. package/SloydInterface.js +62 -75
  85. package/SloydInterface.js.map +1 -1
  86. package/StabilityAIImageInterface.js +150 -167
  87. package/StabilityAIImageInterface.js.map +1 -1
  88. package/SubscriptionConfigBuilder.d.ts +6 -1
  89. package/SubscriptionConfigBuilder.js +22 -0
  90. package/SubscriptionConfigBuilder.js.map +1 -1
  91. package/SubscriptionConfiguration.d.ts +266 -169
  92. package/SubscriptionConfiguration.js +101 -79
  93. package/SubscriptionConfiguration.js.map +1 -1
  94. package/SubscriptionController.d.ts +2 -1
  95. package/SubscriptionController.js +643 -650
  96. package/SubscriptionController.js.map +1 -1
  97. package/SystemNotificationMessenger.d.ts +21 -4
  98. package/SystemNotificationMessenger.js +36 -30
  99. package/SystemNotificationMessenger.js.map +1 -1
  100. package/TestUtils.d.ts +9 -1
  101. package/TestUtils.js +105 -129
  102. package/TestUtils.js.map +1 -1
  103. package/Utils.d.ts +2 -16
  104. package/Utils.js +21 -22
  105. package/Utils.js.map +1 -1
  106. package/crud/CrudHelpers.js +17 -26
  107. package/crud/CrudHelpers.js.map +1 -1
  108. package/crud/CrudRecordsController.d.ts +1 -1
  109. package/crud/CrudRecordsController.js +259 -267
  110. package/crud/CrudRecordsController.js.map +1 -1
  111. package/crud/CrudRecordsControllerTests.js +174 -185
  112. package/crud/CrudRecordsControllerTests.js.map +1 -1
  113. package/crud/CrudRecordsStore.d.ts +7 -3
  114. package/crud/MemoryCrudRecordsStore.d.ts +4 -4
  115. package/crud/MemoryCrudRecordsStore.js +98 -118
  116. package/crud/MemoryCrudRecordsStore.js.map +1 -1
  117. package/crud/sub/MemorySubCrudRecordsStore.d.ts +24 -0
  118. package/crud/sub/MemorySubCrudRecordsStore.js +146 -0
  119. package/crud/sub/MemorySubCrudRecordsStore.js.map +1 -0
  120. package/crud/sub/SubCrudRecordsController.d.ts +182 -0
  121. package/crud/sub/SubCrudRecordsController.js +360 -0
  122. package/crud/sub/SubCrudRecordsController.js.map +1 -0
  123. package/crud/sub/SubCrudRecordsControllerTests.d.ts +39 -0
  124. package/crud/sub/SubCrudRecordsControllerTests.js +821 -0
  125. package/crud/sub/SubCrudRecordsControllerTests.js.map +1 -0
  126. package/crud/sub/SubCrudRecordsStore.d.ts +95 -0
  127. package/{forms/index.js → crud/sub/SubCrudRecordsStore.js} +2 -2
  128. package/crud/sub/SubCrudRecordsStore.js.map +1 -0
  129. package/crud/sub/index.d.ts +3 -0
  130. package/crud/sub/index.js +20 -0
  131. package/{forms → crud/sub}/index.js.map +1 -1
  132. package/index.d.ts +1 -1
  133. package/index.js +1 -1
  134. package/index.js.map +1 -1
  135. package/notifications/MemoryNotificationRecordsStore.js +189 -198
  136. package/notifications/MemoryNotificationRecordsStore.js.map +1 -1
  137. package/notifications/NotificationRecordsController.js +438 -460
  138. package/notifications/NotificationRecordsController.js.map +1 -1
  139. package/notifications/NotificationRecordsStore.d.ts +2 -1
  140. package/notifications/WebPushInterface.d.ts +0 -1
  141. package/notifications/WebPushInterface.js +0 -1
  142. package/notifications/WebPushInterface.js.map +1 -1
  143. package/package.json +6 -6
  144. package/packages/MemoryPackageRecordsStore.d.ts +10 -0
  145. package/packages/MemoryPackageRecordsStore.js +38 -0
  146. package/packages/MemoryPackageRecordsStore.js.map +1 -0
  147. package/packages/PackageRecordsController.d.ts +26 -0
  148. package/packages/PackageRecordsController.js +49 -0
  149. package/packages/PackageRecordsController.js.map +1 -0
  150. package/packages/PackageRecordsStore.d.ts +32 -0
  151. package/packages/PackageRecordsStore.js +19 -0
  152. package/packages/PackageRecordsStore.js.map +1 -0
  153. package/packages/index.d.ts +4 -0
  154. package/packages/index.js +21 -0
  155. package/packages/index.js.map +1 -0
  156. package/packages/version/MemoryPackageVersionRecordsStore.d.ts +21 -0
  157. package/packages/version/MemoryPackageVersionRecordsStore.js +177 -0
  158. package/packages/version/MemoryPackageVersionRecordsStore.js.map +1 -0
  159. package/packages/version/PackageVersionRecordsController.d.ts +144 -0
  160. package/packages/version/PackageVersionRecordsController.js +656 -0
  161. package/packages/version/PackageVersionRecordsController.js.map +1 -0
  162. package/packages/version/PackageVersionRecordsStore.d.ts +342 -0
  163. package/packages/version/PackageVersionRecordsStore.js +126 -0
  164. package/packages/version/PackageVersionRecordsStore.js.map +1 -0
  165. package/packages/version/index.d.ts +4 -0
  166. package/packages/version/index.js +21 -0
  167. package/packages/version/index.js.map +1 -0
  168. package/tracing/TracingDecorators.js +31 -40
  169. package/tracing/TracingDecorators.js.map +1 -1
  170. package/webhooks/MemoryWebhookRecordsStore.js +56 -72
  171. package/webhooks/MemoryWebhookRecordsStore.js.map +1 -1
  172. package/webhooks/WebhookEnvironment.d.ts +3 -3
  173. package/webhooks/WebhookRecordsController.d.ts +2 -1
  174. package/webhooks/WebhookRecordsController.js +389 -382
  175. package/webhooks/WebhookRecordsController.js.map +1 -1
  176. package/webhooks/WebhookRecordsStore.d.ts +2 -1
  177. package/websockets/InstRecordsStore.d.ts +50 -0
  178. package/websockets/InstRecordsStore.js +17 -0
  179. package/websockets/InstRecordsStore.js.map +1 -1
  180. package/websockets/MemoryTempInstRecordsStore.d.ts +5 -0
  181. package/websockets/MemoryTempInstRecordsStore.js +168 -179
  182. package/websockets/MemoryTempInstRecordsStore.js.map +1 -1
  183. package/websockets/MemoryWebsocketConnectionStore.js +98 -135
  184. package/websockets/MemoryWebsocketConnectionStore.js.map +1 -1
  185. package/websockets/MemoryWebsocketMessenger.js +29 -48
  186. package/websockets/MemoryWebsocketMessenger.js.map +1 -1
  187. package/websockets/SplitInstRecordsStore.d.ts +4 -1
  188. package/websockets/SplitInstRecordsStore.js +167 -185
  189. package/websockets/SplitInstRecordsStore.js.map +1 -1
  190. package/websockets/TemporaryInstRecordsStore.d.ts +19 -1
  191. package/websockets/TemporaryInstRecordsStore.js +17 -0
  192. package/websockets/TemporaryInstRecordsStore.js.map +1 -1
  193. package/websockets/WebsocketController.d.ts +147 -3
  194. package/websockets/WebsocketController.js +1735 -1391
  195. package/websockets/WebsocketController.js.map +1 -1
  196. package/websockets/index.d.ts +0 -1
  197. package/websockets/index.js +0 -1
  198. package/websockets/index.js.map +1 -1
  199. package/AAGUID.d.ts +0 -11
  200. package/AAGUID.js +0 -116
  201. package/AAGUID.js.map +0 -1
  202. package/AuthUtils.d.ts +0 -162
  203. package/AuthUtils.js +0 -327
  204. package/AuthUtils.js.map +0 -1
  205. package/forms/FormError.d.ts +0 -43
  206. package/forms/FormError.js +0 -56
  207. package/forms/FormError.js.map +0 -1
  208. package/forms/index.d.ts +0 -2
  209. package/websockets/Utils.d.ts +0 -33
  210. package/websockets/Utils.js +0 -82
  211. package/websockets/Utils.js.map +0 -1
@@ -4,15 +4,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
- return new (P || (P = Promise))(function (resolve, reject) {
10
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
- step((generator = generator.apply(thisArg, _arguments || [])).next());
14
- });
15
- };
16
7
  import { v4 as uuid } from 'uuid';
17
8
  import { traced } from './tracing/TracingDecorators';
18
9
  import { SpanStatusCode, trace } from '@opentelemetry/api';
@@ -31,231 +22,226 @@ export class ModerationController {
31
22
  * Reports the given inst for a terms of service violation.
32
23
  * @param request The request.
33
24
  */
34
- reportInst(request) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- try {
37
- const config = yield this._config.getModerationConfig();
38
- if (!config) {
39
- return {
40
- success: false,
41
- errorCode: 'not_supported',
42
- errorMessage: 'This operation is not supported.',
43
- };
44
- }
45
- if (!config.allowUnauthenticatedReports &&
46
- !request.reportingUserId) {
47
- return {
48
- success: false,
49
- errorCode: 'not_logged_in',
50
- errorMessage: 'The user must be logged in to report an inst.',
51
- };
52
- }
53
- const id = uuid();
54
- const now = Date.now();
55
- const userInstReport = {
56
- id: id,
57
- createdAtMs: now,
58
- updatedAtMs: now,
59
- recordName: request.recordName,
60
- inst: request.inst,
61
- reportingUserId: request.reportingUserId,
62
- reportingIpAddress: request.reportingIpAddress,
63
- automaticReport: request.automaticReport,
64
- reportReasonText: request.reportReasonText,
65
- reportReason: request.reportReason,
66
- reportedUrl: request.reportedUrl,
67
- reportedPermalink: request.reportedPermalink,
68
- };
69
- yield this._store.saveUserInstReport(userInstReport);
70
- if (this._messenger) {
71
- yield this._messenger.sendRecordNotification({
72
- timeMs: now,
73
- resource: 'user_inst_report',
74
- action: 'created',
75
- recordName: request.recordName,
76
- resourceId: request.inst,
77
- report: userInstReport,
78
- });
79
- }
25
+ async reportInst(request) {
26
+ try {
27
+ const config = await this._config.getModerationConfig();
28
+ if (!config) {
80
29
  return {
81
- success: true,
82
- id: id,
30
+ success: false,
31
+ errorCode: 'not_supported',
32
+ errorMessage: 'This operation is not supported.',
83
33
  };
84
34
  }
85
- catch (err) {
86
- const span = trace.getActiveSpan();
87
- span === null || span === void 0 ? void 0 : span.recordException(err);
88
- span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
89
- console.error('[ModerationController] Failed to report inst:', err);
35
+ if (!config.allowUnauthenticatedReports &&
36
+ !request.reportingUserId) {
90
37
  return {
91
38
  success: false,
92
- errorCode: 'server_error',
93
- errorMessage: 'A server error occurred.',
39
+ errorCode: 'not_logged_in',
40
+ errorMessage: 'The user must be logged in to report an inst.',
94
41
  };
95
42
  }
96
- });
43
+ const id = uuid();
44
+ const now = Date.now();
45
+ const userInstReport = {
46
+ id: id,
47
+ createdAtMs: now,
48
+ updatedAtMs: now,
49
+ recordName: request.recordName,
50
+ inst: request.inst,
51
+ reportingUserId: request.reportingUserId,
52
+ reportingIpAddress: request.reportingIpAddress,
53
+ automaticReport: request.automaticReport,
54
+ reportReasonText: request.reportReasonText,
55
+ reportReason: request.reportReason,
56
+ reportedUrl: request.reportedUrl,
57
+ reportedPermalink: request.reportedPermalink,
58
+ };
59
+ await this._store.saveUserInstReport(userInstReport);
60
+ if (this._messenger) {
61
+ await this._messenger.sendRecordNotification({
62
+ timeMs: now,
63
+ resource: 'user_inst_report',
64
+ action: 'created',
65
+ recordName: request.recordName,
66
+ resourceId: request.inst,
67
+ report: userInstReport,
68
+ });
69
+ }
70
+ return {
71
+ success: true,
72
+ id: id,
73
+ };
74
+ }
75
+ catch (err) {
76
+ const span = trace.getActiveSpan();
77
+ span === null || span === void 0 ? void 0 : span.recordException(err);
78
+ span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
79
+ console.error('[ModerationController] Failed to report inst:', err);
80
+ return {
81
+ success: false,
82
+ errorCode: 'server_error',
83
+ errorMessage: 'A server error occurred.',
84
+ };
85
+ }
97
86
  }
98
87
  /**
99
88
  * Schedules a job to scan for moderation issues.
100
89
  */
101
- scheduleModerationScans() {
90
+ async scheduleModerationScans() {
102
91
  var _a, _b;
103
- return __awaiter(this, void 0, void 0, function* () {
104
- try {
105
- if (!this._jobProvider) {
106
- console.warn('[ModerationController] No job provider available to schedule moderation scans.');
107
- return {
108
- success: false,
109
- errorCode: 'not_supported',
110
- errorMessage: 'This operation is not supported.',
111
- };
112
- }
113
- const config = yield this._config.getModerationConfig();
114
- if (!config) {
115
- return {
116
- success: false,
117
- errorCode: 'not_supported',
118
- errorMessage: 'This operation is not supported.',
119
- };
120
- }
121
- const jobs = [];
122
- if ((_b = (_a = config.jobs) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.enabled) {
123
- console.log('[ModerationController] Starting file moderation job...');
124
- let filter = {};
125
- if (config.jobs.files.fileExtensions) {
126
- filter.fileExtensions =
127
- config.jobs.files.fileExtensions.slice();
128
- }
129
- const lastFileJob = yield this._store.findMostRecentJobOfType('files');
130
- if (lastFileJob) {
131
- filter.uploadedAfterMs = lastFileJob.createdAtMs;
132
- }
133
- const job = yield this._jobProvider.startFilesJob(filter);
134
- yield this._store.addModerationJob(job);
135
- jobs.push(job);
136
- console.log('[ModerationController] File moderation job started:', job);
137
- }
92
+ try {
93
+ if (!this._jobProvider) {
94
+ console.warn('[ModerationController] No job provider available to schedule moderation scans.');
138
95
  return {
139
- success: true,
140
- jobs,
96
+ success: false,
97
+ errorCode: 'not_supported',
98
+ errorMessage: 'This operation is not supported.',
141
99
  };
142
100
  }
143
- catch (err) {
144
- const span = trace.getActiveSpan();
145
- span === null || span === void 0 ? void 0 : span.recordException(err);
146
- span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
147
- console.error('[ModerationController] Failed to start moderation jobs:', err);
101
+ const config = await this._config.getModerationConfig();
102
+ if (!config) {
148
103
  return {
149
104
  success: false,
150
- errorCode: 'server_error',
151
- errorMessage: 'A server error occurred.',
105
+ errorCode: 'not_supported',
106
+ errorMessage: 'This operation is not supported.',
152
107
  };
153
108
  }
154
- });
109
+ const jobs = [];
110
+ if ((_b = (_a = config.jobs) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.enabled) {
111
+ console.log('[ModerationController] Starting file moderation job...');
112
+ let filter = {};
113
+ if (config.jobs.files.fileExtensions) {
114
+ filter.fileExtensions =
115
+ config.jobs.files.fileExtensions.slice();
116
+ }
117
+ const lastFileJob = await this._store.findMostRecentJobOfType('files');
118
+ if (lastFileJob) {
119
+ filter.uploadedAfterMs = lastFileJob.createdAtMs;
120
+ }
121
+ const job = await this._jobProvider.startFilesJob(filter);
122
+ await this._store.addModerationJob(job);
123
+ jobs.push(job);
124
+ console.log('[ModerationController] File moderation job started:', job);
125
+ }
126
+ return {
127
+ success: true,
128
+ jobs,
129
+ };
130
+ }
131
+ catch (err) {
132
+ const span = trace.getActiveSpan();
133
+ span === null || span === void 0 ? void 0 : span.recordException(err);
134
+ span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
135
+ console.error('[ModerationController] Failed to start moderation jobs:', err);
136
+ return {
137
+ success: false,
138
+ errorCode: 'server_error',
139
+ errorMessage: 'A server error occurred.',
140
+ };
141
+ }
155
142
  }
156
143
  /**
157
144
  * Scans the given file for moderation labels.
158
145
  * @param request The request.
159
146
  */
160
- scanFile(request) {
147
+ async scanFile(request) {
161
148
  var _a, _b, _c;
162
- return __awaiter(this, void 0, void 0, function* () {
163
- try {
164
- if (!this._jobProvider) {
165
- console.warn('[ModerationController] No job provider available to scan files.');
166
- return {
167
- success: false,
168
- errorCode: 'not_supported',
169
- errorMessage: 'This operation is not supported.',
170
- };
171
- }
172
- const config = yield this._config.getModerationConfig();
173
- if (!config) {
174
- return {
175
- success: false,
176
- errorCode: 'not_supported',
177
- errorMessage: 'This operation is not supported.',
178
- };
179
- }
180
- if (!((_b = (_a = config.jobs) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.enabled)) {
149
+ try {
150
+ if (!this._jobProvider) {
151
+ console.warn('[ModerationController] No job provider available to scan files.');
152
+ return {
153
+ success: false,
154
+ errorCode: 'not_supported',
155
+ errorMessage: 'This operation is not supported.',
156
+ };
157
+ }
158
+ const config = await this._config.getModerationConfig();
159
+ if (!config) {
160
+ return {
161
+ success: false,
162
+ errorCode: 'not_supported',
163
+ errorMessage: 'This operation is not supported.',
164
+ };
165
+ }
166
+ if (!((_b = (_a = config.jobs) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.enabled)) {
167
+ return {
168
+ success: false,
169
+ errorCode: 'not_supported',
170
+ errorMessage: 'This operation is not supported.',
171
+ };
172
+ }
173
+ if (config.jobs.files.fileExtensions) {
174
+ if (config.jobs.files.fileExtensions.every((ext) => !request.fileName.endsWith(ext))) {
181
175
  return {
182
176
  success: false,
183
177
  errorCode: 'not_supported',
184
- errorMessage: 'This operation is not supported.',
178
+ errorMessage: 'The file extension is not supported.',
185
179
  };
186
180
  }
187
- if (config.jobs.files.fileExtensions) {
188
- if (config.jobs.files.fileExtensions.every((ext) => !request.fileName.endsWith(ext))) {
189
- return {
190
- success: false,
191
- errorCode: 'not_supported',
192
- errorMessage: 'The file extension is not supported.',
193
- };
194
- }
181
+ }
182
+ const createdAtMs = Date.now();
183
+ const scan = await this._jobProvider.scanFile({
184
+ recordName: request.recordName,
185
+ fileName: request.fileName,
186
+ minConfidence: config.jobs.files.minConfidence,
187
+ });
188
+ const resultId = uuid();
189
+ let bannedLabel = null;
190
+ for (let label of config.jobs.files.bannedLabels) {
191
+ if (label.label) {
192
+ bannedLabel = scan.labels.find((l) => l.name.localeCompare(label.label, undefined, {
193
+ sensitivity: 'base',
194
+ }) === 0 && l.confidence >= label.threshold);
195
195
  }
196
- const createdAtMs = Date.now();
197
- const scan = yield this._jobProvider.scanFile({
198
- recordName: request.recordName,
199
- fileName: request.fileName,
200
- minConfidence: config.jobs.files.minConfidence,
201
- });
202
- const resultId = uuid();
203
- let bannedLabel = null;
204
- for (let label of config.jobs.files.bannedLabels) {
205
- if (label.label) {
206
- bannedLabel = scan.labels.find((l) => l.name.localeCompare(label.label, undefined, {
207
- sensitivity: 'base',
208
- }) === 0 && l.confidence >= label.threshold);
209
- }
210
- if (bannedLabel) {
211
- console.log(`[ModerationController] Banned label (${bannedLabel.name}) detected in file: ${request.fileName}`);
212
- if (label.actions.includes('notify') && this._messenger) {
213
- yield this._messenger.sendRecordNotification({
214
- resource: 'file',
215
- action: 'scanned',
216
- recordName: request.recordName,
217
- resourceId: request.fileName,
218
- resultId,
219
- labels: scan.labels,
220
- timeMs: createdAtMs,
221
- bannedLabel,
222
- message: `Banned label (${bannedLabel.category
223
- ? bannedLabel.category + ':'
224
- : ''}${(_c = bannedLabel.name) !== null && _c !== void 0 ? _c : ''}) detected in file (${request.recordName}/${request.fileName}).`,
225
- });
226
- }
227
- break;
196
+ if (bannedLabel) {
197
+ console.log(`[ModerationController] Banned label (${bannedLabel.name}) detected in file: ${request.fileName}`);
198
+ if (label.actions.includes('notify') && this._messenger) {
199
+ await this._messenger.sendRecordNotification({
200
+ resource: 'moderation_scan',
201
+ resourceKind: 'file',
202
+ action: 'scanned',
203
+ recordName: request.recordName,
204
+ resourceId: request.fileName,
205
+ resultId,
206
+ labels: scan.labels,
207
+ timeMs: createdAtMs,
208
+ bannedLabel,
209
+ message: `Banned label (${bannedLabel.category
210
+ ? bannedLabel.category + ':'
211
+ : ''}${(_c = bannedLabel.name) !== null && _c !== void 0 ? _c : ''}) detected in file (${request.recordName}/${request.fileName}).`,
212
+ });
228
213
  }
214
+ break;
229
215
  }
230
- const result = {
231
- id: resultId,
232
- recordName: request.recordName,
233
- fileName: request.fileName,
234
- jobId: request.jobId,
235
- labels: scan.labels,
236
- modelVersion: scan.modelVersion,
237
- createdAtMs,
238
- updatedAtMs: Date.now(),
239
- appearsToMatchBannedContent: !!bannedLabel,
240
- };
241
- this._store.addFileModerationResult(result);
242
- return {
243
- success: true,
244
- result,
245
- };
246
- }
247
- catch (err) {
248
- const span = trace.getActiveSpan();
249
- span === null || span === void 0 ? void 0 : span.recordException(err);
250
- span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
251
- console.error('[ModerationController] Failed to scan file:', err);
252
- return {
253
- success: false,
254
- errorCode: 'server_error',
255
- errorMessage: 'A server error occurred.',
256
- };
257
216
  }
258
- });
217
+ const result = {
218
+ id: resultId,
219
+ recordName: request.recordName,
220
+ fileName: request.fileName,
221
+ jobId: request.jobId,
222
+ labels: scan.labels,
223
+ modelVersion: scan.modelVersion,
224
+ createdAtMs,
225
+ updatedAtMs: Date.now(),
226
+ appearsToMatchBannedContent: !!bannedLabel,
227
+ };
228
+ this._store.addFileModerationResult(result);
229
+ return {
230
+ success: true,
231
+ result,
232
+ };
233
+ }
234
+ catch (err) {
235
+ const span = trace.getActiveSpan();
236
+ span === null || span === void 0 ? void 0 : span.recordException(err);
237
+ span === null || span === void 0 ? void 0 : span.setStatus({ code: SpanStatusCode.ERROR });
238
+ console.error('[ModerationController] Failed to scan file:', err);
239
+ return {
240
+ success: false,
241
+ errorCode: 'server_error',
242
+ errorMessage: 'A server error occurred.',
243
+ };
244
+ }
259
245
  }
260
246
  }
261
247
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"ModerationController.js","sourceRoot":"","sources":["ModerationController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModerationController.js","sourceRoot":"","sources":["ModerationController.ts"],"names":[],"mappings":"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"}