@iblai/data-layer 1.10.0 → 1.11.1

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 (33) hide show
  1. package/dist/index.d.ts +61831 -42087
  2. package/dist/index.esm.js +1214 -38
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +1329 -37
  5. package/dist/index.js.map +1 -1
  6. package/dist/package.json +1 -1
  7. package/dist/src/config.d.ts +1 -0
  8. package/dist/src/constants.d.ts +2 -1
  9. package/dist/src/features/chat/__tests__/api-slice.test.d.ts +1 -0
  10. package/dist/src/features/chat/api-slice.d.ts +882 -1
  11. package/dist/src/features/chat/constants.d.ts +7 -0
  12. package/dist/src/features/core/api-slice.d.ts +1314 -345
  13. package/dist/src/features/core/types.d.ts +57 -0
  14. package/dist/src/features/evaluations/api-slice.d.ts +4314 -0
  15. package/dist/src/features/evaluations/constants.d.ts +102 -0
  16. package/dist/src/features/evaluations/types.d.ts +285 -0
  17. package/dist/src/features/mentor/privacy.d.ts +1 -1
  18. package/dist/src/features/platform/api-slice.d.ts +8610 -2
  19. package/dist/src/features/platform/types.d.ts +219 -0
  20. package/dist/src/features/studio-authoring/__tests__/api-slice.test.d.ts +1 -0
  21. package/dist/src/features/studio-authoring/api-slice.d.ts +1601 -0
  22. package/dist/src/features/studio-authoring/constants.d.ts +39 -0
  23. package/dist/src/features/studio-authoring/types.d.ts +65 -0
  24. package/dist/src/features/support-tickets/api-slice.d.ts +2356 -0
  25. package/dist/src/features/support-tickets/constants.d.ts +29 -0
  26. package/dist/src/features/support-tickets/types.d.ts +114 -0
  27. package/dist/src/features/utils.d.ts +5 -0
  28. package/dist/src/index.d.ts +9 -0
  29. package/dist/src/utils/__tests__/index.test.d.ts +1 -0
  30. package/dist/src/utils/index.d.ts +1 -1
  31. package/dist/tests/features/platform/api-slice.test.d.ts +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -39052,6 +39052,7 @@ exports.SERVICES = void 0;
39052
39052
  SERVICES["LMS"] = "LMS";
39053
39053
  SERVICES["DM"] = "DM";
39054
39054
  SERVICES["AXD"] = "AXD";
39055
+ SERVICES["STUDIO"] = "STUDIO";
39055
39056
  })(exports.SERVICES || (exports.SERVICES = {}));
39056
39057
 
39057
39058
  class Config {
@@ -39061,6 +39062,7 @@ Config.lmsUrl = 'https://learn.iblai.app';
39061
39062
  Config.dmUrl = 'https://base.manager.iblai.app';
39062
39063
  Config.axdUrl = 'https://base.manager.iblai.app';
39063
39064
  Config.mentorIframeUrl = 'https://mentor.iblai.tech';
39065
+ Config.studioUrl = 'https://studio.iblai.app';
39064
39066
  Config.httpErrorHandlers = {};
39065
39067
 
39066
39068
  class IblDataLayer {
@@ -39127,10 +39129,23 @@ const getServiceUrl = (service) => {
39127
39129
  return Config.lmsUrl;
39128
39130
  case exports.SERVICES.DM:
39129
39131
  return Config.dmUrl;
39132
+ case exports.SERVICES.STUDIO:
39133
+ return Config.studioUrl;
39130
39134
  default:
39131
39135
  return Config.dmUrl;
39132
39136
  }
39133
39137
  };
39138
+ /**
39139
+ * Read a cookie value by name. Returns null outside the browser or when the
39140
+ * cookie is absent. Used for Studio's CSRF token (`csrftoken`).
39141
+ */
39142
+ const getCookieValue = (name) => {
39143
+ if (typeof document === 'undefined') {
39144
+ return null;
39145
+ }
39146
+ const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
39147
+ return match ? decodeURIComponent(match[1]) : null;
39148
+ };
39134
39149
  /**
39135
39150
  * Get the headers required for API requests based on the provided service type.
39136
39151
  */
@@ -39154,7 +39169,8 @@ const getHeaders = async (service) => {
39154
39169
  return; // No Authorization header when no valid token
39155
39170
  }
39156
39171
  let prefix;
39157
- if (service === exports.SERVICES.LMS) {
39172
+ // Studio (Open edX CMS) accepts the same edX token as the LMS.
39173
+ if (service === exports.SERVICES.LMS || service === exports.SERVICES.STUDIO) {
39158
39174
  if (token.length > 30) {
39159
39175
  prefix = 'JWT';
39160
39176
  }
@@ -39257,7 +39273,7 @@ const isErrorObject = (data) => {
39257
39273
  const baseQuery = (service, jsonContentType = true, contentType, skipAuth = false) => query.fetchBaseQuery({
39258
39274
  baseUrl: getServiceUrl(service),
39259
39275
  timeout: 30000, // 30 second timeout
39260
- credentials: service === exports.SERVICES.LEGACY_LMS ? 'include' : 'omit',
39276
+ credentials: service === exports.SERVICES.LEGACY_LMS || service === exports.SERVICES.STUDIO ? 'include' : 'omit',
39261
39277
  prepareHeaders: async (headers) => {
39262
39278
  // Only add auth headers if skipAuth is false
39263
39279
  if (!skipAuth) {
@@ -39275,6 +39291,18 @@ const baseQuery = (service, jsonContentType = true, contentType, skipAuth = fals
39275
39291
  if (contentType) {
39276
39292
  headers.set('Content-Type', contentType);
39277
39293
  }
39294
+ // Studio (Open edX CMS) endpoints require the Django CSRF token and only
39295
+ // return JSON when asked for it explicitly.
39296
+ if (service === exports.SERVICES.STUDIO) {
39297
+ const csrfToken = getCookieValue('csrftoken');
39298
+ if (csrfToken) {
39299
+ headers.set('X-CSRFToken', csrfToken);
39300
+ }
39301
+ if (!headers.has('Accept')) {
39302
+ headers.set('Accept', 'application/json');
39303
+ }
39304
+ headers.set('X-Requested-With', 'XMLHttpRequest');
39305
+ }
39278
39306
  // Add CSRF protection headers for LMS service
39279
39307
  if (service === exports.SERVICES.LMS) {
39280
39308
  // Use mentorIframeUrl for both origin and referer
@@ -39304,7 +39332,28 @@ const NON_RETRYABLE_STATUS_CODES = [402, 401];
39304
39332
  * Uses `retry.fail()` to immediately bail out of the retry loop.
39305
39333
  */
39306
39334
  const withNonRetryableErrors = (query$1) => async (args, api, extraOptions) => {
39307
- const result = await query$1(args, api, extraOptions);
39335
+ let result;
39336
+ try {
39337
+ result = await query$1(args, api, extraOptions);
39338
+ }
39339
+ catch (e) {
39340
+ // RTK's `retry` only counts attempts for errors RETURNED as `{ error }`
39341
+ // (wrapped in HandledError); a THROWN exception bypasses its
39342
+ // retryCondition and makes the `while (true)` loop spin forever —
39343
+ // an eternal 'pending' query with no network request and no surfaced
39344
+ // error. fetchBaseQuery can throw before fetch (e.g. from
39345
+ // prepareHeaders), so convert throws into returned errors to keep the
39346
+ // retry loop bounded.
39347
+ const message = e instanceof Error ? `${e.name}: ${e.message}` : String(e);
39348
+ return {
39349
+ error: {
39350
+ status: 'FETCH_ERROR',
39351
+ // `data` is what iblFetchBaseQuery propagates to callers/logs.
39352
+ data: message,
39353
+ error: message,
39354
+ },
39355
+ };
39356
+ }
39308
39357
  if (result.error && NON_RETRYABLE_STATUS_CODES.includes(result.error.status)) {
39309
39358
  query.retry.fail(result.error);
39310
39359
  }
@@ -39483,6 +39532,43 @@ const chatHistoryApiSlice = react.createApi({
39483
39532
  });
39484
39533
  const { useGetChatHistoryFilterQuery, useLazyGetChatHistoryFilterQuery, useGetChatHistoryQuery, useLazyGetChatHistoryQuery, useExportChatHistoryMutation, useGetChatHistoryExportStatusQuery, useLazyGetChatHistoryExportStatusQuery, } = chatHistoryApiSlice;
39485
39534
 
39535
+ const CHAT_CUSTOM_REDUCER_PATH = 'chatCustomApiSlice';
39536
+ /**
39537
+ * Recent-messages sidebar list pagination. The endpoint uses DRF
39538
+ * LimitOffsetPagination, so the page param is a row offset (not a page number).
39539
+ */
39540
+ const RECENT_MESSAGES_PAGE_SIZE = 10;
39541
+ const RECENT_MESSAGES_LIMIT_PARAM = 'limit';
39542
+ const RECENT_MESSAGES_OFFSET_PARAM = 'offset';
39543
+ const CHAT_CUSTOM_ENDPOINTS = {
39544
+ GET_CHAT_MESSAGE_TTS: {
39545
+ path: (org, user_id, chat_message_id) => `/api/ai-mentor/orgs/${org}/users/${user_id}/chat-messages/${chat_message_id}/tts`,
39546
+ service: exports.SERVICES.DM,
39547
+ },
39548
+ };
39549
+
39550
+ /**
39551
+ * Derive the next row offset from a DRF LimitOffset response. Returns `undefined`
39552
+ * when there is no further page (missing/null `next`, or a non-paginated shape
39553
+ * such as a bare array), so the query degrades to a single page.
39554
+ */
39555
+ const getNextRecentMessagesPageParam = (lastPage, lastPageParam) => lastPage && !Array.isArray(lastPage) && lastPage.next
39556
+ ? lastPageParam + RECENT_MESSAGES_PAGE_SIZE
39557
+ : undefined;
39558
+ /**
39559
+ * Build the recent-messages URL for a given row offset. The endpoint uses DRF
39560
+ * LimitOffsetPagination (`limit`/`offset`), not page numbers.
39561
+ */
39562
+ const buildRecentMessagesUrl = (args, pageParam) => {
39563
+ const params = new URLSearchParams();
39564
+ params.append(RECENT_MESSAGES_LIMIT_PARAM, String(RECENT_MESSAGES_PAGE_SIZE));
39565
+ params.append(RECENT_MESSAGES_OFFSET_PARAM, String(pageParam));
39566
+ if (args.mentor)
39567
+ params.append('mentor', args.mentor);
39568
+ if (args.search && args.search.trim() !== '')
39569
+ params.append('search', args.search.trim());
39570
+ return `/api/ai-mentor/orgs/${args.org}/users/${args.userId}/recent-messages/?${params.toString()}`;
39571
+ };
39486
39572
  const chatApiSlice = react.createApi({
39487
39573
  reducerPath: 'chatApiSlice',
39488
39574
  baseQuery: iblFakeBaseQuery,
@@ -39517,6 +39603,21 @@ const chatApiSlice = react.createApi({
39517
39603
  getRecentMessage: builder.query({
39518
39604
  ...buildEndpointFromDmService(AiMentorService.aiMentorOrgsUsersRecentMessagesRetrieve),
39519
39605
  }),
39606
+ getRecentMessages: builder.infiniteQuery({
39607
+ infiniteQueryOptions: {
39608
+ initialPageParam: 0,
39609
+ getNextPageParam: (lastPage, _allPages, lastPageParam) => getNextRecentMessagesPageParam(lastPage, lastPageParam),
39610
+ },
39611
+ queryFn: async ({ queryArg, pageParam }, api, extraOptions) => {
39612
+ const url = buildRecentMessagesUrl(queryArg, pageParam);
39613
+ return iblFetchBaseQuery({
39614
+ url,
39615
+ method: 'GET',
39616
+ service: exports.SERVICES.DM,
39617
+ }, api, extraOptions);
39618
+ },
39619
+ providesTags: ['recentMessages'],
39620
+ }),
39520
39621
  deleteMessage: builder.mutation({
39521
39622
  ...buildEndpointFromDmService(AiMentorService.aiMentorOrgsUsersSessionsDestroy),
39522
39623
  }),
@@ -39531,15 +39632,7 @@ const chatApiSlice = react.createApi({
39531
39632
  }),
39532
39633
  }),
39533
39634
  });
39534
- const { useLazyGetPinnedMessagesQuery, useUnPinMessageMutation, useDeleteMessageMutation, useGetPinnedMessagesQuery, useAddPinnedMessageMutation, useGetVectorDocumentsQuery, useLazyGetVectorDocumentsQuery, useGetRecentMessageQuery, useLazyGetRecentMessageQuery, useUpdateMessageFeedbackMutation, useAudioToTextMutation, } = chatApiSlice;
39535
-
39536
- const CHAT_CUSTOM_REDUCER_PATH = 'chatCustomApiSlice';
39537
- const CHAT_CUSTOM_ENDPOINTS = {
39538
- GET_CHAT_MESSAGE_TTS: {
39539
- path: (org, user_id, chat_message_id) => `/api/ai-mentor/orgs/${org}/users/${user_id}/chat-messages/${chat_message_id}/tts`,
39540
- service: exports.SERVICES.DM,
39541
- },
39542
- };
39635
+ const { useLazyGetPinnedMessagesQuery, useUnPinMessageMutation, useDeleteMessageMutation, useGetPinnedMessagesQuery, useAddPinnedMessageMutation, useGetVectorDocumentsQuery, useLazyGetVectorDocumentsQuery, useGetRecentMessageQuery, useLazyGetRecentMessageQuery, useGetRecentMessagesInfiniteQuery, useUpdateMessageFeedbackMutation, useAudioToTextMutation, } = chatApiSlice;
39543
39636
 
39544
39637
  const chatCustomApiSlice = react.createApi({
39545
39638
  reducerPath: CHAT_CUSTOM_REDUCER_PATH,
@@ -40131,10 +40224,63 @@ const featureTags = {
40131
40224
  PLATFORM_USERS: 'PLATFORM_USERS',
40132
40225
  };
40133
40226
 
40227
+ /**
40228
+ * Fetch helper for the platform application gate. The pinned generated client
40229
+ * (@iblai/iblai-api 4.166.0-ai) predates these endpoints, so URLs are built by
40230
+ * hand. Runs inside buildEndpointFromService, which sets OpenAPI.BASE/HEADERS.
40231
+ * An explicit `token` (a DM token for another tenant, e.g. the main tenant when
40232
+ * the wizard runs on the auth SPA) overrides the stored tenant's Authorization.
40233
+ */
40234
+ async function applicationsRequest(path, { method = 'GET', query, body, token, } = {}) {
40235
+ const params = new URLSearchParams();
40236
+ for (const [key, value] of Object.entries(query !== null && query !== void 0 ? query : {})) {
40237
+ if (value !== undefined && value !== null && value !== '') {
40238
+ params.set(key, String(value));
40239
+ }
40240
+ }
40241
+ const queryString = params.toString();
40242
+ const url = `${OpenAPI.BASE}/api/catalog/applications/platform/${path}${queryString ? `?${queryString}` : ''}`;
40243
+ // FormData bodies (attachment uploads) set their own multipart boundary.
40244
+ const isFormData = typeof FormData !== 'undefined' && body instanceof FormData;
40245
+ const response = await fetch(url, {
40246
+ method,
40247
+ headers: {
40248
+ ...OpenAPI.HEADERS,
40249
+ ...(body !== undefined && !isFormData ? { 'Content-Type': 'application/json' } : {}),
40250
+ // DM tokens authenticate as `Token <value>` (see getHeaders in features/utils).
40251
+ ...(token ? { Authorization: `Token ${token}` } : {}),
40252
+ },
40253
+ credentials: 'omit',
40254
+ ...(body !== undefined ? { body: isFormData ? body : JSON.stringify(body) } : {}),
40255
+ });
40256
+ if (!response.ok) {
40257
+ const error = new Error(`Application request failed: ${method} ${path}`);
40258
+ error.status = response.status;
40259
+ const text = await response.text();
40260
+ try {
40261
+ // Parsed JSON (e.g. the structured validation-error list) so consumers
40262
+ // get an object on error.data rather than a string.
40263
+ error.body = JSON.parse(text);
40264
+ }
40265
+ catch (_a) {
40266
+ error.body = text;
40267
+ }
40268
+ throw error;
40269
+ }
40270
+ if (response.status === 204)
40271
+ return undefined;
40272
+ return (await response.json());
40273
+ }
40134
40274
  const platformApiSlice = react.createApi({
40135
40275
  reducerPath: 'platform-api',
40136
40276
  baseQuery: iblFakeBaseQuery,
40137
- tagTypes: [featureTags.PLATFORM_USERS, 'platform_invitations', 'platform_user_groups'],
40277
+ tagTypes: [
40278
+ featureTags.PLATFORM_USERS,
40279
+ 'platform_invitations',
40280
+ 'platform_user_groups',
40281
+ 'platform_application_forms',
40282
+ 'platform_applications',
40283
+ ],
40138
40284
  endpoints: (builder) => ({
40139
40285
  usersGradesPassed: builder.query({
40140
40286
  ...buildEndpointFromDmService(AiAnalyticsService.platformOrgsCoursesUsersGradesPassedRetrieve),
@@ -40231,10 +40377,252 @@ const platformApiSlice = react.createApi({
40231
40377
  ...buildEndpointFromDmService(CatalogService.catalogInvitationsPlatformCreate),
40232
40378
  invalidatesTags: ['platform_invitations'],
40233
40379
  }),
40380
+ // ---- Platform application gate (admissions) ----
40381
+ // Applicant-facing: the gate state — the single call that drives the wizard's
40382
+ // initial routing (mode, membership, active forms, resolved form, the caller's
40383
+ // submission + fee state, renewal config). Takes platform_key (or platform_org)
40384
+ // and an optional form_id to disambiguate when several forms exist.
40385
+ // All applicant-facing endpoints accept an optional `token`: an explicit DM
40386
+ // token overriding the stored tenant's (e.g. the main-tenant token when the
40387
+ // wizard runs on the auth SPA). It is stripped before building query/body.
40388
+ getApplicationStatus: builder.query({
40389
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ token, ...query }) => applicationsRequest('status/', { query, token })),
40390
+ providesTags: ['platform_applications'],
40391
+ }),
40392
+ // Applicant-facing: the resolved active form (schema + version) for a platform.
40393
+ getApplicationForm: builder.query({
40394
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ token, ...query }) => applicationsRequest('form/', { query, token })),
40395
+ providesTags: ['platform_application_forms'],
40396
+ }),
40397
+ // Applicant-facing: create a draft submission (possibly partial responses).
40398
+ createApplicationDraft: builder.mutation({
40399
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ token, ...body }) => applicationsRequest('', { method: 'POST', body, token }), { expectedErrorStatuses: [400, 409] }),
40400
+ }),
40401
+ // Applicant-facing: replace the draft's responses (full object, not a delta).
40402
+ updateApplication: builder.mutation({
40403
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, token, ...body }) => applicationsRequest(`${submission_id}/`, {
40404
+ method: 'PATCH',
40405
+ body,
40406
+ token,
40407
+ }), { expectedErrorStatuses: [400, 409] }),
40408
+ }),
40409
+ // Applicant-facing: submit the application (optional responses replace first).
40410
+ submitApplication: builder.mutation({
40411
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, token, ...body }) => applicationsRequest(`${submission_id}/submit/`, {
40412
+ method: 'POST',
40413
+ body,
40414
+ token,
40415
+ }), { expectedErrorStatuses: [400, 402, 409] }),
40416
+ invalidatesTags: ['platform_applications'],
40417
+ }),
40418
+ // Applicant-facing: upload one file for a field path ("section.field").
40419
+ uploadApplicationAttachment: builder.mutation({
40420
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
40421
+ const body = new FormData();
40422
+ body.append('platform_key', args.platform_key);
40423
+ body.append('field', args.field);
40424
+ if (args.item_id)
40425
+ body.append('item_id', args.item_id);
40426
+ body.append('file', args.file);
40427
+ return applicationsRequest(`${args.submission_id}/attachments/`, { method: 'POST', body, token: args.token });
40428
+ }, { expectedErrorStatuses: [400, 409, 413] }),
40429
+ }),
40430
+ // Applicant-facing: delete an uploaded attachment (editable drafts only).
40431
+ deleteApplicationAttachment: builder.mutation({
40432
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest(`${args.submission_id}/attachments/${args.attachment_id}/`, {
40433
+ method: 'DELETE',
40434
+ query: { platform_key: args.platform_key },
40435
+ token: args.token,
40436
+ }), { expectedErrorStatuses: [404, 409] }),
40437
+ }),
40438
+ // Applicant-facing: every application of the caller on this platform,
40439
+ // newest first (not paginated).
40440
+ listOwnApplications: builder.query({
40441
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ token, ...query }) => applicationsRequest('', { query, token })),
40442
+ providesTags: ['platform_applications'],
40443
+ }),
40444
+ // Applicant-facing: start a renewal draft pre-filled from the caller's most
40445
+ // recent approved application on the form (plain create when none exists).
40446
+ renewApplication: builder.mutation({
40447
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ token, ...body }) => applicationsRequest('renew/', { method: 'POST', body, token }), { expectedErrorStatuses: [400, 409] }),
40448
+ }),
40449
+ // Applicant-facing: withdraw an undecided application.
40450
+ withdrawApplication: builder.mutation({
40451
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, token, ...body }) => applicationsRequest(`${submission_id}/withdraw/`, {
40452
+ method: 'POST',
40453
+ body,
40454
+ token,
40455
+ }), { expectedErrorStatuses: [409] }),
40456
+ invalidatesTags: ['platform_applications'],
40457
+ }),
40458
+ getApplicationForms: builder.query({
40459
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest('forms/manage/', {
40460
+ query: args,
40461
+ })),
40462
+ providesTags: ['platform_application_forms'],
40463
+ }),
40464
+ getApplicationFormDetail: builder.query({
40465
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ form_id, ...query }) => applicationsRequest(`forms/manage/${form_id}/`, {
40466
+ query,
40467
+ })),
40468
+ providesTags: ['platform_application_forms'],
40469
+ }),
40470
+ createApplicationForm: builder.mutation({
40471
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest('forms/manage/', {
40472
+ method: 'POST',
40473
+ body: args,
40474
+ }), { expectedErrorStatuses: [400, 409] }),
40475
+ invalidatesTags: ['platform_application_forms'],
40476
+ }),
40477
+ updateApplicationForm: builder.mutation({
40478
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ form_id, ...body }) => applicationsRequest(`forms/manage/${form_id}/`, {
40479
+ method: 'PATCH',
40480
+ body,
40481
+ }), { expectedErrorStatuses: [400, 409] }),
40482
+ invalidatesTags: ['platform_application_forms'],
40483
+ }),
40484
+ getApplicationsPipeline: builder.query({
40485
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest('manage/', { query: args })),
40486
+ providesTags: ['platform_applications'],
40487
+ }),
40488
+ getApplicationsPipelineStats: builder.query({
40489
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest('manage/stats/', { query: args })),
40490
+ providesTags: ['platform_applications'],
40491
+ }),
40492
+ // Reviewer: the full application workspace payload (answers, candidates,
40493
+ // audit trail, notes, blocking checklist, placements, assignments).
40494
+ getApplicationAdminDetail: builder.query({
40495
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...query }) => applicationsRequest(`manage/${submission_id}/`, {
40496
+ query,
40497
+ })),
40498
+ providesTags: ['platform_applications'],
40499
+ }),
40500
+ // Reviewer: decide / move an application or one of its candidates.
40501
+ transitionApplication: builder.mutation({
40502
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/transition/`, {
40503
+ method: 'POST',
40504
+ body,
40505
+ }), { expectedErrorStatuses: [400, 404, 409] }),
40506
+ invalidatesTags: ['platform_applications'],
40507
+ }),
40508
+ // Reviewer: excuse (or reinstate) one required item on an editable application.
40509
+ createApplicationWaiver: builder.mutation({
40510
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/waivers/`, {
40511
+ method: 'POST',
40512
+ body,
40513
+ }), { expectedErrorStatuses: [400, 409] }),
40514
+ invalidatesTags: ['platform_applications'],
40515
+ }),
40516
+ deleteApplicationWaiver: builder.mutation({
40517
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/waivers/`, {
40518
+ method: 'DELETE',
40519
+ body,
40520
+ }), { expectedErrorStatuses: [400, 404, 409] }),
40521
+ invalidatesTags: ['platform_applications'],
40522
+ }),
40523
+ // Reviewer: submit a stuck draft, waiving every missing required item.
40524
+ submitApplicationOverride: builder.mutation({
40525
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/submit/`, {
40526
+ method: 'POST',
40527
+ body,
40528
+ }), { expectedErrorStatuses: [400, 409] }),
40529
+ invalidatesTags: ['platform_applications'],
40530
+ }),
40531
+ // Reviewer: internal notes on an application.
40532
+ getApplicationNotes: builder.query({
40533
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...query }) => applicationsRequest(`manage/${submission_id}/notes/`, { query })),
40534
+ providesTags: ['platform_applications'],
40535
+ }),
40536
+ createApplicationNote: builder.mutation({
40537
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/notes/`, {
40538
+ method: 'POST',
40539
+ body,
40540
+ }), { expectedErrorStatuses: [400] }),
40541
+ invalidatesTags: ['platform_applications'],
40542
+ }),
40543
+ updateApplicationNote: builder.mutation({
40544
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, note_id, ...body }) => applicationsRequest(`manage/${submission_id}/notes/${note_id}/`, { method: 'PATCH', body }), { expectedErrorStatuses: [400, 404] }),
40545
+ invalidatesTags: ['platform_applications'],
40546
+ }),
40547
+ deleteApplicationNote: builder.mutation({
40548
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, note_id, ...body }) => applicationsRequest(`manage/${submission_id}/notes/${note_id}/`, {
40549
+ method: 'DELETE',
40550
+ body,
40551
+ }), { expectedErrorStatuses: [404] }),
40552
+ invalidatesTags: ['platform_applications'],
40553
+ }),
40554
+ // Reviewer: fetch an attachment as a blob object URL (the endpoint 302s to
40555
+ // time-limited cloud storage; fetch follows it with auth attached).
40556
+ getApplicationAttachmentFile: builder.query({
40557
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
40558
+ const url = `${OpenAPI.BASE}/api/catalog/applications/platform/manage/${args.submission_id}/attachments/${args.attachment_id}/download?platform_key=${encodeURIComponent(args.platform_key)}`;
40559
+ const response = await fetch(url, {
40560
+ headers: OpenAPI.HEADERS,
40561
+ credentials: 'omit',
40562
+ });
40563
+ if (!response.ok) {
40564
+ const error = new Error('Attachment download failed');
40565
+ error.status = response.status;
40566
+ throw error;
40567
+ }
40568
+ const blob = await response.blob();
40569
+ return { url: URL.createObjectURL(blob), contentType: blob.type };
40570
+ }),
40571
+ }),
40572
+ // Reviewer: the ban list (blocks are created via decline-with-block).
40573
+ getApplicationBlocks: builder.query({
40574
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest('manage/blocks/', {
40575
+ query: args,
40576
+ })),
40577
+ providesTags: ['platform_applications'],
40578
+ }),
40579
+ deleteApplicationBlock: builder.mutation({
40580
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest(`manage/blocks/${args.block_id}/`, {
40581
+ method: 'DELETE',
40582
+ query: { platform_key: args.platform_key },
40583
+ }), { expectedErrorStatuses: [404] }),
40584
+ invalidatesTags: ['platform_applications'],
40585
+ }),
40586
+ // Reviewer: placement tests for accepted students (bulk create, per-row results).
40587
+ getApplicationPlacements: builder.query({
40588
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...query }) => applicationsRequest(`manage/${submission_id}/placements/`, { query })),
40589
+ providesTags: ['platform_applications'],
40590
+ }),
40591
+ createApplicationPlacements: builder.mutation({
40592
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/placements/`, { method: 'POST', body }), { expectedErrorStatuses: [400] }),
40593
+ invalidatesTags: ['platform_applications'],
40594
+ }),
40595
+ updateApplicationPlacement: builder.mutation({
40596
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, placement_id, ...body }) => applicationsRequest(`manage/${submission_id}/placements/${placement_id}/`, { method: 'PATCH', body }), { expectedErrorStatuses: [400, 404] }),
40597
+ invalidatesTags: ['platform_applications'],
40598
+ }),
40599
+ // Reviewer: course assignments for accepted students (bulk create, per-row results).
40600
+ getApplicationCourseAssignments: builder.query({
40601
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...query }) => applicationsRequest(`manage/${submission_id}/course-assignments/`, { query })),
40602
+ providesTags: ['platform_applications'],
40603
+ }),
40604
+ createApplicationCourseAssignments: builder.mutation({
40605
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, ...body }) => applicationsRequest(`manage/${submission_id}/course-assignments/`, { method: 'POST', body }), { expectedErrorStatuses: [400] }),
40606
+ invalidatesTags: ['platform_applications'],
40607
+ }),
40608
+ deleteApplicationCourseAssignment: builder.mutation({
40609
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => applicationsRequest(`manage/${args.submission_id}/course-assignments/${args.assignment_id}/`, { method: 'DELETE', query: { platform_key: args.platform_key } }), { expectedErrorStatuses: [404] }),
40610
+ invalidatesTags: ['platform_applications'],
40611
+ }),
40612
+ // Reviewer: re-run account provisioning for one accepted student.
40613
+ inviteApplicationCandidate: builder.mutation({
40614
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, candidate_id, ...body }) => applicationsRequest(`manage/${submission_id}/candidates/${candidate_id}/invite/`, { method: 'POST', body }), { expectedErrorStatuses: [400, 404, 409] }),
40615
+ invalidatesTags: ['platform_applications'],
40616
+ }),
40617
+ // Reviewer: link a student to an existing platform account.
40618
+ linkApplicationCandidate: builder.mutation({
40619
+ ...buildEndpointFromService(exports.SERVICES.DM, async ({ submission_id, candidate_id, ...body }) => applicationsRequest(`manage/${submission_id}/candidates/${candidate_id}/link/`, { method: 'POST', body }), { expectedErrorStatuses: [400, 404, 409] }),
40620
+ invalidatesTags: ['platform_applications'],
40621
+ }),
40234
40622
  }),
40235
40623
  });
40236
40624
  const platformApiReducer = platformApiSlice.reducer;
40237
- const { useUsersGradesPassedQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, usePlatformUserGroupsQuery, usePlatformInvitationsQuery, usePlatformUsersQuery, useInviteUserMutation, useUpdatePlatformUserRoleWithPoliciesMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetPlatformUserGroupDetailsQuery, } = platformApiSlice;
40625
+ const { useUsersGradesPassedQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, usePlatformUserGroupsQuery, usePlatformInvitationsQuery, usePlatformUsersQuery, useInviteUserMutation, useUpdatePlatformUserRoleWithPoliciesMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetPlatformUserGroupDetailsQuery, useGetApplicationStatusQuery, useLazyGetApplicationStatusQuery, useGetApplicationFormQuery, useLazyGetApplicationFormQuery, useCreateApplicationDraftMutation, useUpdateApplicationMutation, useSubmitApplicationMutation, useUploadApplicationAttachmentMutation, useDeleteApplicationAttachmentMutation, useGetApplicationFormsQuery, useLazyGetApplicationFormsQuery, useGetApplicationFormDetailQuery, useLazyGetApplicationFormDetailQuery, useCreateApplicationFormMutation, useUpdateApplicationFormMutation, useGetApplicationsPipelineQuery, useLazyGetApplicationsPipelineQuery, useGetApplicationsPipelineStatsQuery, useListOwnApplicationsQuery, useLazyListOwnApplicationsQuery, useRenewApplicationMutation, useWithdrawApplicationMutation, useGetApplicationAdminDetailQuery, useLazyGetApplicationAdminDetailQuery, useTransitionApplicationMutation, useCreateApplicationWaiverMutation, useDeleteApplicationWaiverMutation, useSubmitApplicationOverrideMutation, useGetApplicationNotesQuery, useCreateApplicationNoteMutation, useUpdateApplicationNoteMutation, useDeleteApplicationNoteMutation, useLazyGetApplicationAttachmentFileQuery, useGetApplicationBlocksQuery, useDeleteApplicationBlockMutation, useGetApplicationPlacementsQuery, useCreateApplicationPlacementsMutation, useUpdateApplicationPlacementMutation, useGetApplicationCourseAssignmentsQuery, useCreateApplicationCourseAssignmentsMutation, useDeleteApplicationCourseAssignmentMutation, useInviteApplicationCandidateMutation, useLinkApplicationCandidateMutation, } = platformApiSlice;
40238
40626
 
40239
40627
  const USERS_ENDPOINTS = {
40240
40628
  GET_USER_METADATA: {
@@ -40423,6 +40811,32 @@ const userApiSlice = react.createApi({
40423
40811
  });
40424
40812
  const { useGetUserMetadataQuery, useLazyGetUserMetadataQuery, useUpdateUserMetadataMutation, useUpdateUserAccountMutation, useResetPasswordMutation, useUpdateUserRoleMutation, useUploadProfileImageMutation, useRemoveProfileImageMutation, useGetUserMetadataEdxQuery, useLazyGetUserMetadataEdxQuery, useUpdateUserMetadataEdxMutation, useGetUserPlatformMetadataQuery, useLazyGetUserPlatformMetadataQuery, useUpdateUserPlatformMetadataMutation, } = userApiSlice;
40425
40813
 
40814
+ /**
40815
+ * Shared fetch for the paginated LTI provider list endpoints. Sends
40816
+ * `platform_key`, optional `mentor_id` (Agent Links), and `page` / `page_size`.
40817
+ */
40818
+ async function fetchLtiList(path, args) {
40819
+ const queryParams = new URLSearchParams({ platform_key: args.platformKey });
40820
+ if (args.mentorId)
40821
+ queryParams.set('mentor_id', args.mentorId);
40822
+ if (args.page !== undefined)
40823
+ queryParams.set('page', String(args.page));
40824
+ if (args.pageSize !== undefined)
40825
+ queryParams.set('page_size', String(args.pageSize));
40826
+ const url = `${OpenAPI.BASE}/api/core/lti/1p3/provider/${path}/?${queryParams.toString()}`;
40827
+ const response = await fetch(url, {
40828
+ method: 'GET',
40829
+ headers: OpenAPI.HEADERS,
40830
+ credentials: 'omit',
40831
+ });
40832
+ if (!response.ok) {
40833
+ throw Object.assign(new Error(`Failed to fetch ${path}`), {
40834
+ status: response.status,
40835
+ body: await response.text(),
40836
+ });
40837
+ }
40838
+ return response.json();
40839
+ }
40426
40840
  const coreApiSlice = react.createApi({
40427
40841
  reducerPath: 'coreApiSlice',
40428
40842
  baseQuery: iblFakeBaseQuery,
@@ -40712,6 +41126,83 @@ const coreApiSlice = react.createApi({
40712
41126
  return response.json();
40713
41127
  }),
40714
41128
  }),
41129
+ // ── RBAC resource discovery (incremental resource-path builder) ──
41130
+ // Custom calls: the pinned @iblai/iblai-api client does not expose the
41131
+ // discovery endpoint yet, and list_url is a dynamic relative URL returned
41132
+ // by the discovery response rather than a fixed generated route.
41133
+ getRbacResourceDiscovery: builder.query({
41134
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
41135
+ // URLSearchParams escapes the slashes in `path` for us.
41136
+ const queryParams = new URLSearchParams({ path: args.path });
41137
+ if (args.platformKey)
41138
+ queryParams.set('platform_key', args.platformKey);
41139
+ const url = `${OpenAPI.BASE}/api/core/rbac/resources/?${queryParams.toString()}`;
41140
+ const response = await fetch(url, {
41141
+ method: 'GET',
41142
+ headers: OpenAPI.HEADERS,
41143
+ credentials: 'omit',
41144
+ });
41145
+ if (!response.ok) {
41146
+ throw Object.assign(new Error('Failed to fetch RBAC resource discovery'), {
41147
+ status: response.status,
41148
+ body: await response.text(),
41149
+ });
41150
+ }
41151
+ return response.json();
41152
+ }),
41153
+ }),
41154
+ getRbacResourceList: builder.query({
41155
+ ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
41156
+ var _a, _b, _c, _d, _e, _f;
41157
+ const url = new URL(`${OpenAPI.BASE}${args.listUrl}`);
41158
+ for (const [key, value] of Object.entries((_a = args.searchParams) !== null && _a !== void 0 ? _a : {})) {
41159
+ if (value !== '')
41160
+ url.searchParams.set(key, value);
41161
+ }
41162
+ const response = await fetch(url.toString(), {
41163
+ method: 'GET',
41164
+ headers: OpenAPI.HEADERS,
41165
+ credentials: 'omit',
41166
+ });
41167
+ if (!response.ok) {
41168
+ throw Object.assign(new Error('Failed to fetch RBAC resource list'), {
41169
+ status: response.status,
41170
+ body: await response.text(),
41171
+ });
41172
+ }
41173
+ const raw = await response.json();
41174
+ // The list endpoints vary per collection: bare arrays, DRF
41175
+ // envelopes ({results}), or nested ({results: {data}} / {data}).
41176
+ const rows = Array.isArray(raw)
41177
+ ? raw
41178
+ : Array.isArray(raw === null || raw === void 0 ? void 0 : raw.results)
41179
+ ? raw.results
41180
+ : Array.isArray((_b = raw === null || raw === void 0 ? void 0 : raw.results) === null || _b === void 0 ? void 0 : _b.data)
41181
+ ? raw.results.data
41182
+ : Array.isArray(raw === null || raw === void 0 ? void 0 : raw.data)
41183
+ ? raw.data
41184
+ : [];
41185
+ const pkField = (_d = (_c = args.resultFields) === null || _c === void 0 ? void 0 : _c.pk) !== null && _d !== void 0 ? _d : 'id';
41186
+ const nameField = (_f = (_e = args.resultFields) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : 'name';
41187
+ const items = rows
41188
+ .filter((row) => (row === null || row === void 0 ? void 0 : row[pkField]) !== undefined && (row === null || row === void 0 ? void 0 : row[pkField]) !== null)
41189
+ .map((row) => {
41190
+ // Some rows (e.g. platform users) have a blank name — fall back
41191
+ // to their email, then to the pk, so the picker never shows an
41192
+ // empty label.
41193
+ const rawName = row[nameField];
41194
+ const name = (typeof rawName === 'string' ? rawName.trim() : rawName) ||
41195
+ (typeof row.email === 'string' ? row.email : '') ||
41196
+ String(row[pkField]);
41197
+ return {
41198
+ pk: row[pkField],
41199
+ name: String(name),
41200
+ raw: row,
41201
+ };
41202
+ });
41203
+ return { items, raw };
41204
+ }),
41205
+ }),
40715
41206
  getRbacTeamsAccessList: builder.query({
40716
41207
  ...buildEndpointFromDmService(CoreService.coreRbacTeamsAccessList),
40717
41208
  providesTags: ['RbacTeamsAccess'],
@@ -40722,7 +41213,7 @@ const coreApiSlice = react.createApi({
40722
41213
  }),
40723
41214
  // ── LTI 1.3 Provider: Keys (platform-wide RSA signing keys) ──
40724
41215
  getLtiKeys: builder.query({
40725
- ...buildEndpointFromDmService(CoreService.coreLti1P3ProviderLtiKeysList),
41216
+ ...buildEndpointFromService(exports.SERVICES.DM, (args) => fetchLtiList('lti-keys', args)),
40726
41217
  providesTags: ['LtiKeys'],
40727
41218
  }),
40728
41219
  getLtiKeyDetail: builder.query({
@@ -40751,24 +41242,7 @@ const coreApiSlice = react.createApi({
40751
41242
  // The generated CoreService.coreLti1P3ProviderLtiMentorsList only sends
40752
41243
  // platform_key.
40753
41244
  getLtiMentors: builder.query({
40754
- ...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
40755
- const queryParams = new URLSearchParams({ platform_key: args.platformKey });
40756
- if (args.mentorId)
40757
- queryParams.set('mentor_id', args.mentorId);
40758
- const url = `${OpenAPI.BASE}/api/core/lti/1p3/provider/lti-mentors/?${queryParams.toString()}`;
40759
- const response = await fetch(url, {
40760
- method: 'GET',
40761
- headers: OpenAPI.HEADERS,
40762
- credentials: 'omit',
40763
- });
40764
- if (!response.ok) {
40765
- throw Object.assign(new Error('Failed to fetch LTI mentors'), {
40766
- status: response.status,
40767
- body: await response.text(),
40768
- });
40769
- }
40770
- return response.json();
40771
- }),
41245
+ ...buildEndpointFromService(exports.SERVICES.DM, (args) => fetchLtiList('lti-mentors', args)),
40772
41246
  providesTags: ['LtiMentors'],
40773
41247
  }),
40774
41248
  getLtiMentorDetail: builder.query({
@@ -40791,7 +41265,7 @@ const coreApiSlice = react.createApi({
40791
41265
  }),
40792
41266
  // ── LTI 1.3 Provider: Tools (platform-wide LTI Platform integrations) ──
40793
41267
  getLtiTools: builder.query({
40794
- ...buildEndpointFromDmService(CoreService.coreLti1P3ProviderLtiToolsList),
41268
+ ...buildEndpointFromService(exports.SERVICES.DM, (args) => fetchLtiList('lti-tools', args)),
40795
41269
  providesTags: ['LtiTools'],
40796
41270
  }),
40797
41271
  getLtiToolDetail: builder.query({
@@ -40814,7 +41288,7 @@ const coreApiSlice = react.createApi({
40814
41288
  }),
40815
41289
  }),
40816
41290
  });
40817
- const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
41291
+ const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useLazyGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useLazyGetRbacResourceListQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
40818
41292
  // LTI Keys
40819
41293
  useGetLtiKeysQuery, useGetLtiKeyDetailQuery, useLazyGetLtiKeyDetailQuery, useCreateLtiKeyMutation, useUpdateLtiKeyMutation, useDeleteLtiKeyMutation,
40820
41294
  // LTI Agent (Mentor) Links
@@ -42704,6 +43178,155 @@ const edxSsoApiSlice = react.createApi({
42704
43178
  });
42705
43179
  const { useGetEdxSSOTokenQuery, useLazyGetEdxSSOTokenQuery } = edxSsoApiSlice;
42706
43180
 
43181
+ const STUDIO_AUTHORING_ENDPOINTS = {
43182
+ CREATE_COURSE: {
43183
+ path: (contentType) => `/api/ibl/manage/${contentType}/`,
43184
+ service: exports.SERVICES.STUDIO,
43185
+ },
43186
+ DELETE_COURSE: {
43187
+ path: () => '/api/ibl/manage/course/delete',
43188
+ service: exports.SERVICES.STUDIO,
43189
+ },
43190
+ COURSE_SETTINGS: {
43191
+ path: (contentType) => `/api/ibl/v1/${contentType}_settings/`,
43192
+ service: exports.SERVICES.STUDIO,
43193
+ },
43194
+ CREATE_XBLOCK: {
43195
+ path: () => '/xblock/',
43196
+ service: exports.SERVICES.STUDIO,
43197
+ },
43198
+ UPDATE_XBLOCK: {
43199
+ path: (locator) => `/xblock/${locator}`,
43200
+ service: exports.SERVICES.STUDIO,
43201
+ },
43202
+ SCORM_SUBMIT: {
43203
+ path: (locator) => `/xblock/${locator}/handler/studio_submit`,
43204
+ service: exports.SERVICES.STUDIO,
43205
+ },
43206
+ UPLOAD_ASSET: {
43207
+ path: (courseKey) => `/assets/${courseKey}/`,
43208
+ service: exports.SERVICES.STUDIO,
43209
+ },
43210
+ ADVANCED_SETTINGS: {
43211
+ path: (courseKey) => `/settings/advanced/${courseKey}`,
43212
+ service: exports.SERVICES.STUDIO,
43213
+ },
43214
+ VIDEO_UPLOAD: {
43215
+ path: (courseKey) => `/api/v1/ibl/course/${courseKey}/s3-upload`,
43216
+ service: exports.SERVICES.STUDIO,
43217
+ },
43218
+ };
43219
+
43220
+ /**
43221
+ * Studio (Open edX CMS) course-authoring endpoints. These hit the Studio host
43222
+ * (`Config.studioUrl`) with cookie-session auth + CSRF token, mirroring how
43223
+ * Studio's own frontend talks to it.
43224
+ */
43225
+ const studioAuthoringApiSlice = react.createApi({
43226
+ reducerPath: 'studioAuthoringApiSlice',
43227
+ baseQuery: iblFetchBaseQuery,
43228
+ endpoints: (builder) => ({
43229
+ /** Create the course (or library) shell. Returns `course_key`. */
43230
+ createStudioCourse: builder.mutation({
43231
+ query: ({ courseData, contentType = 'course' }) => ({
43232
+ url: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.path(contentType),
43233
+ service: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.service,
43234
+ method: 'POST',
43235
+ body: courseData,
43236
+ }),
43237
+ }),
43238
+ /** Delete a course — used as rollback when a later creation step fails. */
43239
+ deleteStudioCourse: builder.mutation({
43240
+ query: ({ courseKey }) => ({
43241
+ url: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.path(),
43242
+ service: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.service,
43243
+ method: 'POST',
43244
+ body: { course_key: courseKey },
43245
+ }),
43246
+ }),
43247
+ /** Set the full course settings/metadata payload. */
43248
+ updateStudioCourseSettings: builder.mutation({
43249
+ query: ({ settings, contentType = 'course' }) => ({
43250
+ url: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.path(contentType),
43251
+ service: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.service,
43252
+ method: 'POST',
43253
+ body: settings,
43254
+ }),
43255
+ }),
43256
+ /**
43257
+ * Create an xblock node (chapter / sequential / vertical / video / scorm)
43258
+ * under `parent_locator`.
43259
+ */
43260
+ createStudioXblock: builder.mutation({
43261
+ query: (blockData) => ({
43262
+ url: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.path(),
43263
+ service: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.service,
43264
+ method: 'POST',
43265
+ body: blockData,
43266
+ }),
43267
+ }),
43268
+ /**
43269
+ * Update an existing xblock by locator — used for video metadata and for
43270
+ * publishing a unit (`{ publish: 'make_public' }`).
43271
+ */
43272
+ updateStudioXblock: builder.mutation({
43273
+ query: ({ locator, blockData }) => ({
43274
+ url: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.path(encodeURIComponent(locator)),
43275
+ service: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.service,
43276
+ method: 'POST',
43277
+ body: blockData,
43278
+ }),
43279
+ }),
43280
+ /** Upload the SCORM zip to the scorm xblock's `studio_submit` handler. */
43281
+ uploadStudioScormPackage: builder.mutation({
43282
+ query: ({ locator, formData }) => ({
43283
+ url: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.path(encodeURIComponent(locator)),
43284
+ service: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.service,
43285
+ method: 'POST',
43286
+ body: formData,
43287
+ isJson: false,
43288
+ }),
43289
+ }),
43290
+ /** Upload a course asset (e.g. the course card image). */
43291
+ uploadStudioCourseAsset: builder.mutation({
43292
+ query: ({ courseKey, formData }) => ({
43293
+ url: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.path(encodeURIComponent(courseKey)),
43294
+ service: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.service,
43295
+ method: 'POST',
43296
+ body: formData,
43297
+ isJson: true,
43298
+ // Asset upload is authenticated by the Studio session cookie + CSRF
43299
+ // token alone; no Authorization header.
43300
+ skipAuth: true,
43301
+ // Matches how Studio's own frontend requests the asset endpoint. Set
43302
+ // explicitly so the base query keeps it instead of defaulting to
43303
+ // `application/json`.
43304
+ headers: { Accept: 'application/json, text/plain, */*' },
43305
+ }),
43306
+ }),
43307
+ /** Set Studio advanced settings (e.g. enable the `scorm` module). */
43308
+ setStudioAdvancedSettings: builder.mutation({
43309
+ query: ({ courseKey, settings }) => ({
43310
+ url: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.path(encodeURIComponent(courseKey)),
43311
+ service: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.service,
43312
+ method: 'POST',
43313
+ body: settings,
43314
+ }),
43315
+ }),
43316
+ /** Upload a raw video file to course storage; returns `{ file_url }`. */
43317
+ uploadStudioCourseVideo: builder.mutation({
43318
+ query: ({ courseKey, formData }) => ({
43319
+ url: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.path(encodeURIComponent(courseKey)),
43320
+ service: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.service,
43321
+ method: 'POST',
43322
+ body: formData,
43323
+ isJson: false,
43324
+ }),
43325
+ }),
43326
+ }),
43327
+ });
43328
+ const { useCreateStudioCourseMutation, useDeleteStudioCourseMutation, useUpdateStudioCourseSettingsMutation, useCreateStudioXblockMutation, useUpdateStudioXblockMutation, useUploadStudioScormPackageMutation, useUploadStudioCourseAssetMutation, useSetStudioAdvancedSettingsMutation, useUploadStudioCourseVideoMutation, } = studioAuthoringApiSlice;
43329
+
42707
43330
  const searchApiSlice = react.createApi({
42708
43331
  reducerPath: 'searchApiSlice',
42709
43332
  baseQuery: iblFakeBaseQuery,
@@ -43182,6 +43805,163 @@ const notificationsCustomApiSlice = react.createApi({
43182
43805
  });
43183
43806
  const { useGetTemplatesQuery, useLazyGetTemplatesQuery, useGetTemplateDetailsQuery, useLazyGetTemplateDetailsQuery, useUpdateTemplateMutation, useToggleTemplateMutation, } = notificationsCustomApiSlice;
43184
43807
 
43808
+ const SUPPORT_TICKETS_REDUCER_PATH = 'supportTicketsApiSlice';
43809
+ const SUPPORT_TICKETS_TAGS = {
43810
+ TICKETS: 'SUPPORT_TICKETS',
43811
+ TICKET: 'SUPPORT_TICKET',
43812
+ TICKET_MESSAGES: 'SUPPORT_TICKET_MESSAGES',
43813
+ };
43814
+ const SUPPORT_TICKETS_ENDPOINTS = {
43815
+ TICKETS: {
43816
+ service: exports.SERVICES.DM,
43817
+ path: (org, userId) => `/api/ai-mentor/orgs/${org}/users/${userId}/support-tickets/`,
43818
+ },
43819
+ TICKET: {
43820
+ service: exports.SERVICES.DM,
43821
+ path: (org, userId, id) => `/api/ai-mentor/orgs/${org}/users/${userId}/support-tickets/${id}/`,
43822
+ },
43823
+ TICKET_CLOSE: {
43824
+ service: exports.SERVICES.DM,
43825
+ path: (org, userId, id) => `/api/ai-mentor/orgs/${org}/users/${userId}/support-tickets/${id}/close/`,
43826
+ },
43827
+ TICKET_MESSAGES: {
43828
+ service: exports.SERVICES.DM,
43829
+ path: (org, userId) => `/api/ai-mentor/orgs/${org}/users/${userId}/support-ticket-messages/`,
43830
+ },
43831
+ TICKET_MESSAGE: {
43832
+ service: exports.SERVICES.DM,
43833
+ path: (org, userId, id) => `/api/ai-mentor/orgs/${org}/users/${userId}/support-ticket-messages/${id}/`,
43834
+ },
43835
+ };
43836
+
43837
+ /**
43838
+ * Human Support ticket endpoints
43839
+ * (`/api/ai-mentor/orgs/{org}/users/{user_id}/support-tickets/` and
43840
+ * `/api/ai-mentor/orgs/{org}/users/{user_id}/support-ticket-messages/`).
43841
+ *
43842
+ * Hand-written: these endpoints are newer than the pinned `@iblai/iblai-api`
43843
+ * release, so there is no generated service method to wrap yet.
43844
+ */
43845
+ const supportTicketsApiSlice = react.createApi({
43846
+ reducerPath: SUPPORT_TICKETS_REDUCER_PATH,
43847
+ tagTypes: [...Object.values(SUPPORT_TICKETS_TAGS)],
43848
+ baseQuery: iblFetchBaseQuery,
43849
+ endpoints: (builder) => ({
43850
+ getSupportTickets: builder.query({
43851
+ query: ({ org, userId, mentorId, page, pageSize, session, status, username }) => ({
43852
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKETS.path(org, userId),
43853
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKETS.service,
43854
+ params: {
43855
+ mentor_id: mentorId,
43856
+ page,
43857
+ page_size: pageSize,
43858
+ session,
43859
+ status,
43860
+ username,
43861
+ },
43862
+ }),
43863
+ providesTags: [SUPPORT_TICKETS_TAGS.TICKETS],
43864
+ }),
43865
+ getSupportTicket: builder.query({
43866
+ query: ({ org, userId, id }) => ({
43867
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET.path(org, userId, id),
43868
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET.service,
43869
+ }),
43870
+ providesTags: [SUPPORT_TICKETS_TAGS.TICKET],
43871
+ }),
43872
+ updateSupportTicket: builder.mutation({
43873
+ query: ({ org, userId, id, body }) => ({
43874
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET.path(org, userId, id),
43875
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET.service,
43876
+ method: 'PUT',
43877
+ body,
43878
+ }),
43879
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKETS, SUPPORT_TICKETS_TAGS.TICKET],
43880
+ }),
43881
+ patchSupportTicket: builder.mutation({
43882
+ query: ({ org, userId, id, body }) => ({
43883
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET.path(org, userId, id),
43884
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET.service,
43885
+ method: 'PATCH',
43886
+ body,
43887
+ }),
43888
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKETS, SUPPORT_TICKETS_TAGS.TICKET],
43889
+ }),
43890
+ deleteSupportTicket: builder.mutation({
43891
+ query: ({ org, userId, id }) => ({
43892
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET.path(org, userId, id),
43893
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET.service,
43894
+ method: 'DELETE',
43895
+ }),
43896
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKETS],
43897
+ }),
43898
+ closeSupportTicket: builder.mutation({
43899
+ query: ({ org, userId, id }) => ({
43900
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_CLOSE.path(org, userId, id),
43901
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_CLOSE.service,
43902
+ method: 'POST',
43903
+ }),
43904
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKETS, SUPPORT_TICKETS_TAGS.TICKET],
43905
+ }),
43906
+ getSupportTicketMessages: builder.query({
43907
+ query: ({ org, userId, ticket, sender, page, pageSize }) => ({
43908
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGES.path(org, userId),
43909
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGES.service,
43910
+ params: {
43911
+ ticket,
43912
+ sender,
43913
+ page,
43914
+ page_size: pageSize,
43915
+ },
43916
+ }),
43917
+ providesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43918
+ }),
43919
+ getSupportTicketMessage: builder.query({
43920
+ query: ({ org, userId, id }) => ({
43921
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.path(org, userId, id),
43922
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.service,
43923
+ }),
43924
+ providesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43925
+ }),
43926
+ createSupportTicketMessage: builder.mutation({
43927
+ query: ({ org, userId, body }) => ({
43928
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGES.path(org, userId),
43929
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGES.service,
43930
+ method: 'POST',
43931
+ body,
43932
+ }),
43933
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43934
+ }),
43935
+ updateSupportTicketMessage: builder.mutation({
43936
+ query: ({ org, userId, id, body }) => ({
43937
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.path(org, userId, id),
43938
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.service,
43939
+ method: 'PUT',
43940
+ body,
43941
+ }),
43942
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43943
+ }),
43944
+ patchSupportTicketMessage: builder.mutation({
43945
+ query: ({ org, userId, id, body }) => ({
43946
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.path(org, userId, id),
43947
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.service,
43948
+ method: 'PATCH',
43949
+ body,
43950
+ }),
43951
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43952
+ }),
43953
+ deleteSupportTicketMessage: builder.mutation({
43954
+ query: ({ org, userId, id }) => ({
43955
+ url: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.path(org, userId, id),
43956
+ service: SUPPORT_TICKETS_ENDPOINTS.TICKET_MESSAGE.service,
43957
+ method: 'DELETE',
43958
+ }),
43959
+ invalidatesTags: [SUPPORT_TICKETS_TAGS.TICKET_MESSAGES],
43960
+ }),
43961
+ }),
43962
+ });
43963
+ const { useGetSupportTicketsQuery, useLazyGetSupportTicketsQuery, useGetSupportTicketQuery, useLazyGetSupportTicketQuery, useUpdateSupportTicketMutation, usePatchSupportTicketMutation, useDeleteSupportTicketMutation, useCloseSupportTicketMutation, useGetSupportTicketMessagesQuery, useLazyGetSupportTicketMessagesQuery, useGetSupportTicketMessageQuery, useLazyGetSupportTicketMessageQuery, useCreateSupportTicketMessageMutation, useUpdateSupportTicketMessageMutation, usePatchSupportTicketMessageMutation, useDeleteSupportTicketMessageMutation, } = supportTicketsApiSlice;
43964
+
43185
43965
  const MENTOR_CUSTOM_REDUCER_PATH = 'mentorCustomApiSlice';
43186
43966
  const MENTOR_ENDPOINTS = {
43187
43967
  EDIT_MENTOR_SETTINGS: {
@@ -43431,7 +44211,7 @@ const { useGetModerationLogsQuery, useLazyGetModerationLogsQuery, useDeleteModer
43431
44211
  * `useGetMentorPublicSettingsQuery`) — this file just adds the typed
43432
44212
  * surface for the new fields.
43433
44213
  */
43434
- const PRIVACY_ACTIONS = ['redact', 'mask', 'block'];
44214
+ const PRIVACY_ACTIONS = ['allow', 'redact', 'mask', 'block'];
43435
44215
  const PRIVACY_ENTITY_TYPES = [
43436
44216
  'PERSON',
43437
44217
  'EMAIL_ADDRESS',
@@ -45421,6 +46201,391 @@ const auditLogsApiSlice = react.createApi({
45421
46201
  });
45422
46202
  const { useGetAuditLogsQuery, useLazyGetAuditLogsQuery } = auditLogsApiSlice;
45423
46203
 
46204
+ const EVALUATIONS_REDUCER_PATH = 'evaluationsApiSlice';
46205
+ const evaluationsBase = (org, userId) => `/api/ai-mentor/orgs/${org}/users/${userId}/evaluations`;
46206
+ const EVALUATIONS_ENDPOINTS = {
46207
+ GET_TASK: {
46208
+ service: exports.SERVICES.AXD,
46209
+ path: (org, userId, taskId) => `/api/ai-mentor/orgs/${org}/users/${userId}/tasks/${encodeURIComponent(taskId)}`,
46210
+ },
46211
+ LIST_DATASETS: {
46212
+ service: exports.SERVICES.AXD,
46213
+ path: (org, userId) => `${evaluationsBase(org, userId)}/datasets/`,
46214
+ },
46215
+ CREATE_DATASET: {
46216
+ service: exports.SERVICES.AXD,
46217
+ path: (org, userId) => `${evaluationsBase(org, userId)}/datasets/`,
46218
+ },
46219
+ GET_DATASET: {
46220
+ service: exports.SERVICES.AXD,
46221
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/`,
46222
+ },
46223
+ LIST_DATASET_ITEMS: {
46224
+ service: exports.SERVICES.AXD,
46225
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/items/`,
46226
+ },
46227
+ ADD_DATASET_ITEMS: {
46228
+ service: exports.SERVICES.AXD,
46229
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/items/`,
46230
+ },
46231
+ UPLOAD_DATASET_CSV: {
46232
+ service: exports.SERVICES.AXD,
46233
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/items/upload/`,
46234
+ },
46235
+ UPDATE_DATASET_ITEM: {
46236
+ service: exports.SERVICES.AXD,
46237
+ path: (org, userId, datasetName, itemId) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/items/${encodeURIComponent(itemId)}/`,
46238
+ },
46239
+ DELETE_DATASET_ITEM: {
46240
+ service: exports.SERVICES.AXD,
46241
+ path: (org, userId, datasetName, itemId) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/items/${encodeURIComponent(itemId)}/`,
46242
+ },
46243
+ LIST_RUNS: {
46244
+ service: exports.SERVICES.AXD,
46245
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/`,
46246
+ },
46247
+ START_RUN: {
46248
+ service: exports.SERVICES.AXD,
46249
+ path: (org, userId, datasetName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/`,
46250
+ },
46251
+ GET_RUN: {
46252
+ service: exports.SERVICES.AXD,
46253
+ path: (org, userId, datasetName, runName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/${encodeURIComponent(runName)}/`,
46254
+ },
46255
+ EXPORT_RUN: {
46256
+ service: exports.SERVICES.AXD,
46257
+ path: (org, userId, datasetName, runName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/${encodeURIComponent(runName)}/export/`,
46258
+ },
46259
+ DELETE_RUN: {
46260
+ service: exports.SERVICES.AXD,
46261
+ path: (org, userId, datasetName, runName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/${encodeURIComponent(runName)}/`,
46262
+ },
46263
+ EVALUATE_RUN: {
46264
+ service: exports.SERVICES.AXD,
46265
+ path: (org, userId, datasetName, runName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/${encodeURIComponent(runName)}/evaluate/`,
46266
+ },
46267
+ LIST_RUN_JUDGES: {
46268
+ service: exports.SERVICES.AXD,
46269
+ path: (org, userId, datasetName, runName) => `${evaluationsBase(org, userId)}/datasets/${encodeURIComponent(datasetName)}/runs/${encodeURIComponent(runName)}/evaluate/`,
46270
+ },
46271
+ LIST_JUDGES: {
46272
+ service: exports.SERVICES.AXD,
46273
+ path: (org, userId) => `${evaluationsBase(org, userId)}/judges/`,
46274
+ },
46275
+ LIST_SCORES: {
46276
+ service: exports.SERVICES.AXD,
46277
+ path: (org, userId) => `${evaluationsBase(org, userId)}/scores/`,
46278
+ },
46279
+ CREATE_SCORE: {
46280
+ service: exports.SERVICES.AXD,
46281
+ path: (org, userId) => `${evaluationsBase(org, userId)}/scores/`,
46282
+ },
46283
+ DELETE_SCORE: {
46284
+ service: exports.SERVICES.AXD,
46285
+ path: (org, userId, scoreId) => `${evaluationsBase(org, userId)}/scores/${encodeURIComponent(scoreId)}/`,
46286
+ },
46287
+ LIST_SCORE_CONFIGS: {
46288
+ service: exports.SERVICES.AXD,
46289
+ path: (org, userId) => `${evaluationsBase(org, userId)}/score-configs/`,
46290
+ },
46291
+ CREATE_SCORE_CONFIG: {
46292
+ service: exports.SERVICES.AXD,
46293
+ path: (org, userId) => `${evaluationsBase(org, userId)}/score-configs/`,
46294
+ },
46295
+ };
46296
+ const EVALUATIONS_TAGS = {
46297
+ DATASETS: 'EVAL_DATASETS',
46298
+ DATASET: 'EVAL_DATASET',
46299
+ DATASET_ITEMS: 'EVAL_DATASET_ITEMS',
46300
+ RUNS: 'EVAL_RUNS',
46301
+ RUN: 'EVAL_RUN',
46302
+ SCORES: 'EVAL_SCORES',
46303
+ SCORE_CONFIGS: 'EVAL_SCORE_CONFIGS',
46304
+ JUDGES: 'EVAL_JUDGES',
46305
+ };
46306
+
46307
+ const evaluationsApiSlice = react.createApi({
46308
+ reducerPath: EVALUATIONS_REDUCER_PATH,
46309
+ baseQuery: iblFetchBaseQuery,
46310
+ tagTypes: [
46311
+ EVALUATIONS_TAGS.DATASETS,
46312
+ EVALUATIONS_TAGS.DATASET,
46313
+ EVALUATIONS_TAGS.DATASET_ITEMS,
46314
+ EVALUATIONS_TAGS.RUNS,
46315
+ EVALUATIONS_TAGS.RUN,
46316
+ EVALUATIONS_TAGS.SCORES,
46317
+ EVALUATIONS_TAGS.SCORE_CONFIGS,
46318
+ EVALUATIONS_TAGS.JUDGES,
46319
+ ],
46320
+ endpoints: (builder) => ({
46321
+ listEvalDatasets: builder.query({
46322
+ query: ({ org, userId, page, limit, name, user_email }) => ({
46323
+ url: EVALUATIONS_ENDPOINTS.LIST_DATASETS.path(org, userId),
46324
+ service: EVALUATIONS_ENDPOINTS.LIST_DATASETS.service,
46325
+ params: { page, limit, name, user_email },
46326
+ }),
46327
+ providesTags: [EVALUATIONS_TAGS.DATASETS],
46328
+ }),
46329
+ createEvalDataset: builder.mutation({
46330
+ query: ({ org, userId, body }) => ({
46331
+ url: EVALUATIONS_ENDPOINTS.CREATE_DATASET.path(org, userId),
46332
+ service: EVALUATIONS_ENDPOINTS.CREATE_DATASET.service,
46333
+ method: 'POST',
46334
+ body,
46335
+ }),
46336
+ invalidatesTags: [EVALUATIONS_TAGS.DATASETS],
46337
+ }),
46338
+ getEvalDataset: builder.query({
46339
+ query: ({ org, userId, datasetName }) => ({
46340
+ url: EVALUATIONS_ENDPOINTS.GET_DATASET.path(org, userId, datasetName),
46341
+ service: EVALUATIONS_ENDPOINTS.GET_DATASET.service,
46342
+ }),
46343
+ providesTags: (_result, _error, { datasetName }) => [
46344
+ { type: EVALUATIONS_TAGS.DATASET, id: datasetName },
46345
+ ],
46346
+ }),
46347
+ listEvalDatasetItems: builder.query({
46348
+ query: ({ org, userId, datasetName, page, limit, include_trace }) => ({
46349
+ url: EVALUATIONS_ENDPOINTS.LIST_DATASET_ITEMS.path(org, userId, datasetName),
46350
+ service: EVALUATIONS_ENDPOINTS.LIST_DATASET_ITEMS.service,
46351
+ params: { page, limit, include_trace },
46352
+ }),
46353
+ providesTags: (_result, _error, { datasetName }) => [
46354
+ { type: EVALUATIONS_TAGS.DATASET_ITEMS, id: datasetName },
46355
+ ],
46356
+ }),
46357
+ addEvalDatasetItems: builder.mutation({
46358
+ query: ({ org, userId, datasetName, body }) => ({
46359
+ url: EVALUATIONS_ENDPOINTS.ADD_DATASET_ITEMS.path(org, userId, datasetName),
46360
+ service: EVALUATIONS_ENDPOINTS.ADD_DATASET_ITEMS.service,
46361
+ method: 'POST',
46362
+ body,
46363
+ }),
46364
+ invalidatesTags: (_result, _error, { datasetName }) => [
46365
+ { type: EVALUATIONS_TAGS.DATASET_ITEMS, id: datasetName },
46366
+ ],
46367
+ }),
46368
+ uploadEvalDatasetCsv: builder.mutation({
46369
+ query: ({ org, userId, datasetName, formData }) => ({
46370
+ url: EVALUATIONS_ENDPOINTS.UPLOAD_DATASET_CSV.path(org, userId, datasetName),
46371
+ service: EVALUATIONS_ENDPOINTS.UPLOAD_DATASET_CSV.service,
46372
+ method: 'POST',
46373
+ body: formData,
46374
+ isJson: false,
46375
+ }),
46376
+ invalidatesTags: (_result, _error, { datasetName }) => [
46377
+ { type: EVALUATIONS_TAGS.DATASET_ITEMS, id: datasetName },
46378
+ ],
46379
+ }),
46380
+ updateEvalDatasetItem: builder.mutation({
46381
+ query: ({ org, userId, datasetName, itemId, body }) => ({
46382
+ url: EVALUATIONS_ENDPOINTS.UPDATE_DATASET_ITEM.path(org, userId, datasetName, itemId),
46383
+ service: EVALUATIONS_ENDPOINTS.UPDATE_DATASET_ITEM.service,
46384
+ method: 'PUT',
46385
+ body,
46386
+ }),
46387
+ invalidatesTags: (_result, _error, { datasetName }) => [
46388
+ { type: EVALUATIONS_TAGS.DATASET_ITEMS, id: datasetName },
46389
+ ],
46390
+ }),
46391
+ deleteEvalDatasetItem: builder.mutation({
46392
+ query: ({ org, userId, datasetName, itemId }) => ({
46393
+ url: EVALUATIONS_ENDPOINTS.DELETE_DATASET_ITEM.path(org, userId, datasetName, itemId),
46394
+ service: EVALUATIONS_ENDPOINTS.DELETE_DATASET_ITEM.service,
46395
+ method: 'DELETE',
46396
+ }),
46397
+ invalidatesTags: (_result, _error, { datasetName }) => [
46398
+ { type: EVALUATIONS_TAGS.DATASET_ITEMS, id: datasetName },
46399
+ ],
46400
+ }),
46401
+ listEvalRuns: builder.query({
46402
+ query: ({ org, userId, datasetName, page, limit, user_email }) => ({
46403
+ url: EVALUATIONS_ENDPOINTS.LIST_RUNS.path(org, userId, datasetName),
46404
+ service: EVALUATIONS_ENDPOINTS.LIST_RUNS.service,
46405
+ params: { page, limit, user_email },
46406
+ }),
46407
+ providesTags: (_result, _error, { datasetName }) => [
46408
+ { type: EVALUATIONS_TAGS.RUNS, id: datasetName },
46409
+ ],
46410
+ }),
46411
+ startEvalRun: builder.mutation({
46412
+ query: ({ org, userId, datasetName, body }) => ({
46413
+ url: EVALUATIONS_ENDPOINTS.START_RUN.path(org, userId, datasetName),
46414
+ service: EVALUATIONS_ENDPOINTS.START_RUN.service,
46415
+ method: 'POST',
46416
+ body,
46417
+ }),
46418
+ invalidatesTags: (_result, _error, { datasetName }) => [
46419
+ { type: EVALUATIONS_TAGS.RUNS, id: datasetName },
46420
+ ],
46421
+ }),
46422
+ getEvalRun: builder.query({
46423
+ query: ({ org, userId, datasetName, runName }) => ({
46424
+ url: EVALUATIONS_ENDPOINTS.GET_RUN.path(org, userId, datasetName, runName),
46425
+ service: EVALUATIONS_ENDPOINTS.GET_RUN.service,
46426
+ }),
46427
+ providesTags: (_result, _error, { runName }) => [{ type: EVALUATIONS_TAGS.RUN, id: runName }],
46428
+ }),
46429
+ deleteEvalRun: builder.mutation({
46430
+ query: ({ org, userId, datasetName, runName }) => ({
46431
+ url: EVALUATIONS_ENDPOINTS.DELETE_RUN.path(org, userId, datasetName, runName),
46432
+ service: EVALUATIONS_ENDPOINTS.DELETE_RUN.service,
46433
+ method: 'DELETE',
46434
+ }),
46435
+ invalidatesTags: (_result, _error, { datasetName }) => [
46436
+ { type: EVALUATIONS_TAGS.RUNS, id: datasetName },
46437
+ ],
46438
+ }),
46439
+ exportEvalRun: builder.mutation({
46440
+ query: ({ org, userId, datasetName, runName }) => ({
46441
+ url: EVALUATIONS_ENDPOINTS.EXPORT_RUN.path(org, userId, datasetName, runName),
46442
+ service: EVALUATIONS_ENDPOINTS.EXPORT_RUN.service,
46443
+ responseHandler: (response) => response.text(),
46444
+ isJson: false,
46445
+ }),
46446
+ }),
46447
+ evaluateEvalRun: builder.mutation({
46448
+ query: ({ org, userId, datasetName, runName, body }) => ({
46449
+ url: EVALUATIONS_ENDPOINTS.EVALUATE_RUN.path(org, userId, datasetName, runName),
46450
+ service: EVALUATIONS_ENDPOINTS.EVALUATE_RUN.service,
46451
+ method: 'POST',
46452
+ body,
46453
+ }),
46454
+ invalidatesTags: (_result, _error, { runName }) => [
46455
+ { type: EVALUATIONS_TAGS.RUN, id: runName },
46456
+ EVALUATIONS_TAGS.JUDGES,
46457
+ ],
46458
+ }),
46459
+ listEvalRunJudges: builder.query({
46460
+ query: ({ org, userId, datasetName, runName, page, limit, status, user_email }) => ({
46461
+ url: EVALUATIONS_ENDPOINTS.LIST_RUN_JUDGES.path(org, userId, datasetName, runName),
46462
+ service: EVALUATIONS_ENDPOINTS.LIST_RUN_JUDGES.service,
46463
+ params: { page, limit, status, user_email },
46464
+ }),
46465
+ providesTags: [EVALUATIONS_TAGS.JUDGES],
46466
+ }),
46467
+ listEvalJudges: builder.query({
46468
+ query: ({ org, userId, page, limit, status, user_email, dataset_name }) => ({
46469
+ url: EVALUATIONS_ENDPOINTS.LIST_JUDGES.path(org, userId),
46470
+ service: EVALUATIONS_ENDPOINTS.LIST_JUDGES.service,
46471
+ params: { page, limit, status, user_email, dataset_name },
46472
+ }),
46473
+ providesTags: [EVALUATIONS_TAGS.JUDGES],
46474
+ }),
46475
+ listEvalScores: builder.query({
46476
+ query: ({ org, userId, page, limit, dataset_run_id, trace_id, name }) => ({
46477
+ url: EVALUATIONS_ENDPOINTS.LIST_SCORES.path(org, userId),
46478
+ service: EVALUATIONS_ENDPOINTS.LIST_SCORES.service,
46479
+ params: { page, limit, dataset_run_id, trace_id, name },
46480
+ }),
46481
+ providesTags: [EVALUATIONS_TAGS.SCORES],
46482
+ }),
46483
+ // Score create/delete deliberately do NOT invalidate the RUN tag: the
46484
+ // eval store ingests score writes asynchronously, so an immediate
46485
+ // refetch returns the run *without* the change and would clobber the
46486
+ // cache patches below. The run still refreshes on reopen / manual
46487
+ // Refresh, by which point the store has caught up.
46488
+ createEvalScore: builder.mutation({
46489
+ query: ({ org, userId, body }) => ({
46490
+ url: EVALUATIONS_ENDPOINTS.CREATE_SCORE.path(org, userId),
46491
+ service: EVALUATIONS_ENDPOINTS.CREATE_SCORE.service,
46492
+ method: 'POST',
46493
+ body,
46494
+ }),
46495
+ invalidatesTags: [EVALUATIONS_TAGS.SCORES],
46496
+ async onQueryStarted({ org, userId, body, datasetName, runName }, { dispatch, queryFulfilled }) {
46497
+ try {
46498
+ await queryFulfilled;
46499
+ }
46500
+ catch (_a) {
46501
+ return;
46502
+ }
46503
+ if (!datasetName || !runName)
46504
+ return;
46505
+ dispatch(evaluationsApiSlice.util.updateQueryData('getEvalRun', { org, userId, datasetName, runName }, (draft) => {
46506
+ var _a, _b, _c, _d, _e, _f;
46507
+ const item = (_a = draft.dataset_run_items) === null || _a === void 0 ? void 0 : _a.find((i) => i.trace_id === body.trace_id);
46508
+ if (!item)
46509
+ return;
46510
+ item.scores = (_b = item.scores) !== null && _b !== void 0 ? _b : [];
46511
+ item.scores.push({
46512
+ // The create endpoint returns no id (the write is queued);
46513
+ // this placeholder is replaced by the real record on the
46514
+ // next refetch once the store has ingested it.
46515
+ id: `pending-${body.trace_id}-${body.name}-${Date.now()}`,
46516
+ name: body.name,
46517
+ value: body.value,
46518
+ string_value: null,
46519
+ data_type: (_c = body.data_type) !== null && _c !== void 0 ? _c : 'NUMERIC',
46520
+ comment: (_d = body.comment) !== null && _d !== void 0 ? _d : null,
46521
+ trace_id: body.trace_id,
46522
+ observation_id: (_e = body.observation_id) !== null && _e !== void 0 ? _e : null,
46523
+ dataset_run_id: (_f = body.dataset_run_id) !== null && _f !== void 0 ? _f : null,
46524
+ created_at: new Date().toISOString(),
46525
+ });
46526
+ }));
46527
+ },
46528
+ }),
46529
+ deleteEvalScore: builder.mutation({
46530
+ query: ({ org, userId, scoreId }) => ({
46531
+ url: EVALUATIONS_ENDPOINTS.DELETE_SCORE.path(org, userId, scoreId),
46532
+ service: EVALUATIONS_ENDPOINTS.DELETE_SCORE.service,
46533
+ method: 'DELETE',
46534
+ }),
46535
+ invalidatesTags: [EVALUATIONS_TAGS.SCORES],
46536
+ async onQueryStarted({ org, userId, scoreId, datasetName, runName }, { dispatch, queryFulfilled }) {
46537
+ try {
46538
+ await queryFulfilled;
46539
+ }
46540
+ catch (_a) {
46541
+ return;
46542
+ }
46543
+ if (!datasetName || !runName)
46544
+ return;
46545
+ dispatch(evaluationsApiSlice.util.updateQueryData('getEvalRun', { org, userId, datasetName, runName }, (draft) => {
46546
+ var _a, _b;
46547
+ for (const item of (_a = draft.dataset_run_items) !== null && _a !== void 0 ? _a : []) {
46548
+ if ((_b = item.scores) === null || _b === void 0 ? void 0 : _b.some((s) => s.id === scoreId)) {
46549
+ item.scores = item.scores.filter((s) => s.id !== scoreId);
46550
+ }
46551
+ }
46552
+ }));
46553
+ },
46554
+ }),
46555
+ listEvalScoreConfigs: builder.query({
46556
+ query: ({ org, userId, page, limit }) => ({
46557
+ url: EVALUATIONS_ENDPOINTS.LIST_SCORE_CONFIGS.path(org, userId),
46558
+ service: EVALUATIONS_ENDPOINTS.LIST_SCORE_CONFIGS.service,
46559
+ params: { page, limit },
46560
+ }),
46561
+ providesTags: [EVALUATIONS_TAGS.SCORE_CONFIGS],
46562
+ }),
46563
+ getEvalTaskStatus: builder.query({
46564
+ query: ({ org, userId, taskId }) => ({
46565
+ url: EVALUATIONS_ENDPOINTS.GET_TASK.path(org, userId, taskId),
46566
+ service: EVALUATIONS_ENDPOINTS.GET_TASK.service,
46567
+ }),
46568
+ }),
46569
+ createEvalScoreConfig: builder.mutation({
46570
+ query: ({ org, userId, body }) => ({
46571
+ url: EVALUATIONS_ENDPOINTS.CREATE_SCORE_CONFIG.path(org, userId),
46572
+ service: EVALUATIONS_ENDPOINTS.CREATE_SCORE_CONFIG.service,
46573
+ method: 'POST',
46574
+ body,
46575
+ }),
46576
+ invalidatesTags: [EVALUATIONS_TAGS.SCORE_CONFIGS],
46577
+ }),
46578
+ }),
46579
+ });
46580
+ const { useListEvalDatasetsQuery, useLazyListEvalDatasetsQuery, useCreateEvalDatasetMutation, useGetEvalDatasetQuery, useListEvalDatasetItemsQuery, useLazyListEvalDatasetItemsQuery, useAddEvalDatasetItemsMutation, useUploadEvalDatasetCsvMutation, useUpdateEvalDatasetItemMutation, useDeleteEvalDatasetItemMutation, useListEvalRunsQuery, useLazyListEvalRunsQuery, useStartEvalRunMutation, useGetEvalRunQuery, useLazyGetEvalRunQuery, useDeleteEvalRunMutation, useExportEvalRunMutation, useEvaluateEvalRunMutation, useListEvalRunJudgesQuery, useLazyListEvalRunJudgesQuery, useListEvalJudgesQuery, useLazyListEvalJudgesQuery, useListEvalScoresQuery, useLazyListEvalScoresQuery, useCreateEvalScoreMutation, useDeleteEvalScoreMutation, useListEvalScoreConfigsQuery, useCreateEvalScoreConfigMutation, useGetEvalTaskStatusQuery, useLazyGetEvalTaskStatusQuery, } = evaluationsApiSlice;
46581
+
46582
+ /** Total page count derived from `count` and the requested page size. */
46583
+ function evalTotalPages(count, limit) {
46584
+ if (!count || count <= 0)
46585
+ return 0;
46586
+ return Math.ceil(count / limit);
46587
+ }
46588
+
45424
46589
  const WATCHED_GROUPS_REDUCER_PATH = 'watchedGroupsApiSlice';
45425
46590
  const WATCHED_GROUPS_QUERY_KEYS = {
45426
46591
  WATCHED_GROUPS: 'WATCHED_GROUPS',
@@ -45732,10 +46897,13 @@ const mentorReducer = {
45732
46897
  [coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
45733
46898
  [courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
45734
46899
  [edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
46900
+ [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
45735
46901
  [clawApiSlice.reducerPath]: clawApiSlice.reducer,
46902
+ [evaluationsApiSlice.reducerPath]: evaluationsApiSlice.reducer,
45736
46903
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
45737
46904
  [chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
45738
46905
  [skillsApiSlice.reducerPath]: skillsApiSlice.reducer,
46906
+ [supportTicketsApiSlice.reducerPath]: supportTicketsApiSlice.reducer,
45739
46907
  };
45740
46908
  const mentorMiddleware = [
45741
46909
  mentorApiSlice.middleware,
@@ -45788,10 +46956,13 @@ const mentorMiddleware = [
45788
46956
  coursesApiSlice.middleware,
45789
46957
  courseMetadataApiSlice.middleware,
45790
46958
  edxSsoApiSlice.middleware,
46959
+ studioAuthoringApiSlice.middleware,
45791
46960
  clawApiSlice.middleware,
46961
+ evaluationsApiSlice.middleware,
45792
46962
  watchedGroupsApiSlice.middleware,
45793
46963
  chatPrivacyApiSlice.middleware,
45794
46964
  skillsApiSlice.middleware,
46965
+ supportTicketsApiSlice.middleware,
45795
46966
  ];
45796
46967
 
45797
46968
  const skillsReducer = {
@@ -45832,6 +47003,7 @@ const skillsReducer = {
45832
47003
  [coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
45833
47004
  [courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
45834
47005
  [edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
47006
+ [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
45835
47007
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
45836
47008
  [chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
45837
47009
  };
@@ -45873,16 +47045,20 @@ const skillsMiddleware = [
45873
47045
  coursesApiSlice.middleware,
45874
47046
  courseMetadataApiSlice.middleware,
45875
47047
  edxSsoApiSlice.middleware,
47048
+ studioAuthoringApiSlice.middleware,
45876
47049
  watchedGroupsApiSlice.middleware,
45877
47050
  chatPrivacyApiSlice.middleware,
45878
47051
  ];
45879
47052
 
45880
- const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}) => {
47053
+ const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}, studioUrl) => {
45881
47054
  IblDataLayer.storage = storageService;
45882
47055
  Config.dmUrl = dmUrl;
45883
47056
  Config.lmsUrl = lmsUrl;
45884
47057
  Config.legacyLmsUrl = legacyLmsUrl;
45885
47058
  Config.httpErrorHandlers = httpErrorHandler;
47059
+ if (studioUrl) {
47060
+ Config.studioUrl = studioUrl;
47061
+ }
45886
47062
  };
45887
47063
 
45888
47064
  exports.APP_IDENTIFIERS = APP_IDENTIFIERS;
@@ -45917,6 +47093,9 @@ exports.DISCLAIMERS_ENDPOINTS = DISCLAIMERS_ENDPOINTS;
45917
47093
  exports.DISCLAIMERS_QUERY_KEYS = DISCLAIMERS_QUERY_KEYS;
45918
47094
  exports.DISCLAIMERS_REDUCER_PATH = DISCLAIMERS_REDUCER_PATH;
45919
47095
  exports.EDX_PROCTORING_ENDPOINTS = EDX_PROCTORING_ENDPOINTS;
47096
+ exports.EVALUATIONS_ENDPOINTS = EVALUATIONS_ENDPOINTS;
47097
+ exports.EVALUATIONS_REDUCER_PATH = EVALUATIONS_REDUCER_PATH;
47098
+ exports.EVALUATIONS_TAGS = EVALUATIONS_TAGS;
45920
47099
  exports.IblDataLayer = IblDataLayer;
45921
47100
  exports.LOGO_ENDPOINTS = LOGO_ENDPOINTS;
45922
47101
  exports.MCP_ENDPOINTS = MCP_ENDPOINTS;
@@ -45947,7 +47126,11 @@ exports.PROJECTS_QUERY_KEYS = PROJECTS_QUERY_KEYS;
45947
47126
  exports.QUERY_PARAMS = QUERY_PARAMS;
45948
47127
  exports.RETIREMENT_ENDPOINTS = RETIREMENT_ENDPOINTS;
45949
47128
  exports.STORAGE_KEYS = STORAGE_KEYS;
47129
+ exports.STUDIO_AUTHORING_ENDPOINTS = STUDIO_AUTHORING_ENDPOINTS;
45950
47130
  exports.SUGGESTED_PRIVACY_ENTITIES = SUGGESTED_PRIVACY_ENTITIES;
47131
+ exports.SUPPORT_TICKETS_ENDPOINTS = SUPPORT_TICKETS_ENDPOINTS;
47132
+ exports.SUPPORT_TICKETS_REDUCER_PATH = SUPPORT_TICKETS_REDUCER_PATH;
47133
+ exports.SUPPORT_TICKETS_TAGS = SUPPORT_TICKETS_TAGS;
45951
47134
  exports.TENANT_IDENTIFIERS = TENANT_IDENTIFIERS;
45952
47135
  exports.TENANT_LOGO_ENDPOINTS = TENANT_LOGO_ENDPOINTS;
45953
47136
  exports.TENANT_LOGO_QUERY_KEYS = TENANT_LOGO_QUERY_KEYS;
@@ -45972,6 +47155,7 @@ exports.auditLogsApiSlice = auditLogsApiSlice;
45972
47155
  exports.authApiSlice = authApiSlice;
45973
47156
  exports.billingApiSlice = billingApiSlice;
45974
47157
  exports.billingCustomSlice = billingCustomSlice;
47158
+ exports.buildRecentMessagesUrl = buildRecentMessagesUrl;
45975
47159
  exports.buildSessionRetrieveUrl = buildSessionRetrieveUrl;
45976
47160
  exports.buildSharedSessionRetrieveUrl = buildSharedSessionRetrieveUrl;
45977
47161
  exports.callConfigurationsApiReducer = callConfigurationsApiReducer;
@@ -45997,8 +47181,11 @@ exports.datasetsApiSlice = datasetsApiSlice;
45997
47181
  exports.disclaimersApiSlice = disclaimersApiSlice;
45998
47182
  exports.edxProctoringApiSlice = edxProctoringApiSlice;
45999
47183
  exports.edxSsoApiSlice = edxSsoApiSlice;
47184
+ exports.evalTotalPages = evalTotalPages;
47185
+ exports.evaluationsApiSlice = evaluationsApiSlice;
46000
47186
  exports.fakeBaseQueryWithLogging = fakeBaseQueryWithLogging;
46001
47187
  exports.featureTags = featureTags;
47188
+ exports.getNextRecentMessagesPageParam = getNextRecentMessagesPageParam;
46002
47189
  exports.iblFakeBaseQuery = iblFakeBaseQuery;
46003
47190
  exports.initializeDataLayer = initializeDataLayer;
46004
47191
  exports.isPoliciesResponse = isPoliciesResponse;
@@ -46032,12 +47219,15 @@ exports.skillsApiSlice = skillsApiSlice;
46032
47219
  exports.skillsMiddleware = skillsMiddleware;
46033
47220
  exports.skillsReducer = skillsReducer;
46034
47221
  exports.stripeApiSlice = stripeApiSlice;
47222
+ exports.studioAuthoringApiSlice = studioAuthoringApiSlice;
47223
+ exports.supportTicketsApiSlice = supportTicketsApiSlice;
46035
47224
  exports.tenantApiReducer = tenantApiReducer;
46036
47225
  exports.tenantApiSlice = tenantApiSlice;
46037
47226
  exports.tenantLogoApiSlice = tenantLogoApiSlice;
46038
47227
  exports.toolsApiSlice = toolsApiSlice;
46039
47228
  exports.trainingDocumentsApiSlice = trainingDocumentsApiSlice;
46040
47229
  exports.useActivateWorkflowMutation = useActivateWorkflowMutation;
47230
+ exports.useAddEvalDatasetItemsMutation = useAddEvalDatasetItemsMutation;
46041
47231
  exports.useAddPinnedMessageMutation = useAddPinnedMessageMutation;
46042
47232
  exports.useAddTrainingDocumentMutation = useAddTrainingDocumentMutation;
46043
47233
  exports.useAddWatchedUserMutation = useAddWatchedUserMutation;
@@ -46048,11 +47238,18 @@ exports.useCancelSubscriptionMutation = useCancelSubscriptionMutation;
46048
47238
  exports.useChatWithWorkflowMutation = useChatWithWorkflowMutation;
46049
47239
  exports.useCheckAccessQuery = useCheckAccessQuery;
46050
47240
  exports.useCheckAccessUnscopedQuery = useCheckAccessUnscopedQuery;
47241
+ exports.useCloseSupportTicketMutation = useCloseSupportTicketMutation;
46051
47242
  exports.useConnectedServicesCallbackQuery = useConnectedServicesCallbackQuery;
46052
47243
  exports.useCreateAdminProjectMutation = useCreateAdminProjectMutation;
46053
47244
  exports.useCreateAgentSkillMutation = useCreateAgentSkillMutation;
46054
47245
  exports.useCreateAgentSkillResourceMutation = useCreateAgentSkillResourceMutation;
46055
47246
  exports.useCreateApiKeyMutation = useCreateApiKeyMutation;
47247
+ exports.useCreateApplicationCourseAssignmentsMutation = useCreateApplicationCourseAssignmentsMutation;
47248
+ exports.useCreateApplicationDraftMutation = useCreateApplicationDraftMutation;
47249
+ exports.useCreateApplicationFormMutation = useCreateApplicationFormMutation;
47250
+ exports.useCreateApplicationNoteMutation = useCreateApplicationNoteMutation;
47251
+ exports.useCreateApplicationPlacementsMutation = useCreateApplicationPlacementsMutation;
47252
+ exports.useCreateApplicationWaiverMutation = useCreateApplicationWaiverMutation;
46056
47253
  exports.useCreateCallConfigurationMutation = useCreateCallConfigurationMutation;
46057
47254
  exports.useCreateCallCredentialsMutation = useCreateCallCredentialsMutation;
46058
47255
  exports.useCreateCatalogInvitationBulkMutation = useCreateCatalogInvitationBulkMutation;
@@ -46074,6 +47271,9 @@ exports.useCreateCredentialAssertionMutation = useCreateCredentialAssertionMutat
46074
47271
  exports.useCreateCredentialMutation = useCreateCredentialMutation;
46075
47272
  exports.useCreateCustomDomainMutation = useCreateCustomDomainMutation;
46076
47273
  exports.useCreateDisclaimerMutation = useCreateDisclaimerMutation;
47274
+ exports.useCreateEvalDatasetMutation = useCreateEvalDatasetMutation;
47275
+ exports.useCreateEvalScoreConfigMutation = useCreateEvalScoreConfigMutation;
47276
+ exports.useCreateEvalScoreMutation = useCreateEvalScoreMutation;
46077
47277
  exports.useCreateExternalMappingMutation = useCreateExternalMappingMutation;
46078
47278
  exports.useCreateGlobalMemoryMutation = useCreateGlobalMemoryMutation;
46079
47279
  exports.useCreateGuestCheckoutMutation = useCreateGuestCheckoutMutation;
@@ -46108,6 +47308,9 @@ exports.useCreateSessionIdMutation = useCreateSessionIdMutation;
46108
47308
  exports.useCreateShareableLinkMutation = useCreateShareableLinkMutation;
46109
47309
  exports.useCreateStripeCheckoutSessionMutation = useCreateStripeCheckoutSessionMutation;
46110
47310
  exports.useCreateStripeCustomerPortalMutation = useCreateStripeCustomerPortalMutation;
47311
+ exports.useCreateStudioCourseMutation = useCreateStudioCourseMutation;
47312
+ exports.useCreateStudioXblockMutation = useCreateStudioXblockMutation;
47313
+ exports.useCreateSupportTicketMessageMutation = useCreateSupportTicketMessageMutation;
46111
47314
  exports.useCreateTrainingDocumentRetrainScheduleMutation = useCreateTrainingDocumentRetrainScheduleMutation;
46112
47315
  exports.useCreateUserCompanyMutation = useCreateUserCompanyMutation;
46113
47316
  exports.useCreateUserEducationMutation = useCreateUserEducationMutation;
@@ -46123,12 +47326,20 @@ exports.useDeleteAdminProjectMutation = useDeleteAdminProjectMutation;
46123
47326
  exports.useDeleteAgentSkillMutation = useDeleteAgentSkillMutation;
46124
47327
  exports.useDeleteAgentSkillResourceMutation = useDeleteAgentSkillResourceMutation;
46125
47328
  exports.useDeleteApiKeyMutation = useDeleteApiKeyMutation;
47329
+ exports.useDeleteApplicationAttachmentMutation = useDeleteApplicationAttachmentMutation;
47330
+ exports.useDeleteApplicationBlockMutation = useDeleteApplicationBlockMutation;
47331
+ exports.useDeleteApplicationCourseAssignmentMutation = useDeleteApplicationCourseAssignmentMutation;
47332
+ exports.useDeleteApplicationNoteMutation = useDeleteApplicationNoteMutation;
47333
+ exports.useDeleteApplicationWaiverMutation = useDeleteApplicationWaiverMutation;
46126
47334
  exports.useDeleteClawInstanceMutation = useDeleteClawInstanceMutation;
46127
47335
  exports.useDeleteClawMentorConfigMutation = useDeleteClawMentorConfigMutation;
46128
47336
  exports.useDeleteCourseCredentialMutation = useDeleteCourseCredentialMutation;
46129
47337
  exports.useDeleteCredentialMutation = useDeleteCredentialMutation;
46130
47338
  exports.useDeleteCustomDomainMutation = useDeleteCustomDomainMutation;
46131
47339
  exports.useDeleteDisclaimerMutation = useDeleteDisclaimerMutation;
47340
+ exports.useDeleteEvalDatasetItemMutation = useDeleteEvalDatasetItemMutation;
47341
+ exports.useDeleteEvalRunMutation = useDeleteEvalRunMutation;
47342
+ exports.useDeleteEvalScoreMutation = useDeleteEvalScoreMutation;
46132
47343
  exports.useDeleteExternalMappingMutation = useDeleteExternalMappingMutation;
46133
47344
  exports.useDeleteGlobalMemoryMutation = useDeleteGlobalMemoryMutation;
46134
47345
  exports.useDeleteIntegrationCredentialMutation = useDeleteIntegrationCredentialMutation;
@@ -46153,6 +47364,9 @@ exports.useDeleteRbacGroupMutation = useDeleteRbacGroupMutation;
46153
47364
  exports.useDeleteRbacPolicyMutation = useDeleteRbacPolicyMutation;
46154
47365
  exports.useDeleteRbacRoleMutation = useDeleteRbacRoleMutation;
46155
47366
  exports.useDeleteRecommendedPromptMutation = useDeleteRecommendedPromptMutation;
47367
+ exports.useDeleteStudioCourseMutation = useDeleteStudioCourseMutation;
47368
+ exports.useDeleteSupportTicketMessageMutation = useDeleteSupportTicketMessageMutation;
47369
+ exports.useDeleteSupportTicketMutation = useDeleteSupportTicketMutation;
46156
47370
  exports.useDeleteTrainingDocumentMutation = useDeleteTrainingDocumentMutation;
46157
47371
  exports.useDeleteUserEducationMutation = useDeleteUserEducationMutation;
46158
47372
  exports.useDeleteUserExperienceMutation = useDeleteUserExperienceMutation;
@@ -46168,8 +47382,10 @@ exports.useEditMentorMutation = useEditMentorMutation;
46168
47382
  exports.useEditSessionMutation = useEditSessionMutation;
46169
47383
  exports.useEditTrainingDocumentMutation = useEditTrainingDocumentMutation;
46170
47384
  exports.useEnablePaywallMutation = useEnablePaywallMutation;
47385
+ exports.useEvaluateEvalRunMutation = useEvaluateEvalRunMutation;
46171
47386
  exports.useExchangeAppleTokenMutation = useExchangeAppleTokenMutation;
46172
47387
  exports.useExportChatHistoryMutation = useExportChatHistoryMutation;
47388
+ exports.useExportEvalRunMutation = useExportEvalRunMutation;
46173
47389
  exports.useForkMentorMutation = useForkMentorMutation;
46174
47390
  exports.useGetAccessTimeHeatmapQuery = useGetAccessTimeHeatmapQuery;
46175
47391
  exports.useGetAccountBillingInfoQuery = useGetAccountBillingInfoQuery;
@@ -46183,6 +47399,17 @@ exports.useGetAgentSkillsQuery = useGetAgentSkillsQuery;
46183
47399
  exports.useGetAiSearchMentorsQuery = useGetAiSearchMentorsQuery;
46184
47400
  exports.useGetApiKeysQuery = useGetApiKeysQuery;
46185
47401
  exports.useGetAppTokensMutation = useGetAppTokensMutation;
47402
+ exports.useGetApplicationAdminDetailQuery = useGetApplicationAdminDetailQuery;
47403
+ exports.useGetApplicationBlocksQuery = useGetApplicationBlocksQuery;
47404
+ exports.useGetApplicationCourseAssignmentsQuery = useGetApplicationCourseAssignmentsQuery;
47405
+ exports.useGetApplicationFormDetailQuery = useGetApplicationFormDetailQuery;
47406
+ exports.useGetApplicationFormQuery = useGetApplicationFormQuery;
47407
+ exports.useGetApplicationFormsQuery = useGetApplicationFormsQuery;
47408
+ exports.useGetApplicationNotesQuery = useGetApplicationNotesQuery;
47409
+ exports.useGetApplicationPlacementsQuery = useGetApplicationPlacementsQuery;
47410
+ exports.useGetApplicationStatusQuery = useGetApplicationStatusQuery;
47411
+ exports.useGetApplicationsPipelineQuery = useGetApplicationsPipelineQuery;
47412
+ exports.useGetApplicationsPipelineStatsQuery = useGetApplicationsPipelineStatsQuery;
46186
47413
  exports.useGetArtifactQuery = useGetArtifactQuery;
46187
47414
  exports.useGetArtifactVersionQuery = useGetArtifactVersionQuery;
46188
47415
  exports.useGetAssignedProgramsQuery = useGetAssignedProgramsQuery;
@@ -46226,6 +47453,9 @@ exports.useGetDetailedFinancialStatsQuery = useGetDetailedFinancialStatsQuery;
46226
47453
  exports.useGetDisclaimersQuery = useGetDisclaimersQuery;
46227
47454
  exports.useGetEdxSSOTokenQuery = useGetEdxSSOTokenQuery;
46228
47455
  exports.useGetEnrollmentCourseSearchQuery = useGetEnrollmentCourseSearchQuery;
47456
+ exports.useGetEvalDatasetQuery = useGetEvalDatasetQuery;
47457
+ exports.useGetEvalRunQuery = useGetEvalRunQuery;
47458
+ exports.useGetEvalTaskStatusQuery = useGetEvalTaskStatusQuery;
46229
47459
  exports.useGetExamInfoQuery = useGetExamInfoQuery;
46230
47460
  exports.useGetExternalMappingQuery = useGetExternalMappingQuery;
46231
47461
  exports.useGetFileUploadUrlMutation = useGetFileUploadUrlMutation;
@@ -46311,10 +47541,13 @@ exports.useGetRbacMentorAccessListQuery = useGetRbacMentorAccessListQuery;
46311
47541
  exports.useGetRbacPermissionsMutation = useGetRbacPermissionsMutation;
46312
47542
  exports.useGetRbacPoliciesQuery = useGetRbacPoliciesQuery;
46313
47543
  exports.useGetRbacPolicyDetailsQuery = useGetRbacPolicyDetailsQuery;
47544
+ exports.useGetRbacResourceDiscoveryQuery = useGetRbacResourceDiscoveryQuery;
47545
+ exports.useGetRbacResourceListQuery = useGetRbacResourceListQuery;
46314
47546
  exports.useGetRbacRoleDetailsQuery = useGetRbacRoleDetailsQuery;
46315
47547
  exports.useGetRbacRolesQuery = useGetRbacRolesQuery;
46316
47548
  exports.useGetRbacTeamsAccessListQuery = useGetRbacTeamsAccessListQuery;
46317
47549
  exports.useGetRecentMessageQuery = useGetRecentMessageQuery;
47550
+ exports.useGetRecentMessagesInfiniteQuery = useGetRecentMessagesInfiniteQuery;
46318
47551
  exports.useGetRecentlyAccessedMentorsQuery = useGetRecentlyAccessedMentorsQuery;
46319
47552
  exports.useGetRecommendationsAiSearchQuery = useGetRecommendationsAiSearchQuery;
46320
47553
  exports.useGetRecommendedPromptsListQuery = useGetRecommendedPromptsListQuery;
@@ -46335,6 +47568,10 @@ exports.useGetStripeConnectStatusQuery = useGetStripeConnectStatusQuery;
46335
47568
  exports.useGetStripeContextQuery = useGetStripeContextQuery;
46336
47569
  exports.useGetStripePricingPageSessionQuery = useGetStripePricingPageSessionQuery;
46337
47570
  exports.useGetStudentMentorCreationStatusQuery = useGetStudentMentorCreationStatusQuery;
47571
+ exports.useGetSupportTicketMessageQuery = useGetSupportTicketMessageQuery;
47572
+ exports.useGetSupportTicketMessagesQuery = useGetSupportTicketMessagesQuery;
47573
+ exports.useGetSupportTicketQuery = useGetSupportTicketQuery;
47574
+ exports.useGetSupportTicketsQuery = useGetSupportTicketsQuery;
46338
47575
  exports.useGetTemplateDetailsQuery = useGetTemplateDetailsQuery;
46339
47576
  exports.useGetTemplatesQuery = useGetTemplatesQuery;
46340
47577
  exports.useGetTenantChatPrivacyConfigQuery = useGetTenantChatPrivacyConfigQuery;
@@ -46394,6 +47631,7 @@ exports.useGetWatchersQuery = useGetWatchersQuery;
46394
47631
  exports.useGetWorkflowQuery = useGetWorkflowQuery;
46395
47632
  exports.useGetWorkflowsQuery = useGetWorkflowsQuery;
46396
47633
  exports.useHealthCheckClawInstanceMutation = useHealthCheckClawInstanceMutation;
47634
+ exports.useInviteApplicationCandidateMutation = useInviteApplicationCandidateMutation;
46397
47635
  exports.useInviteUserMutation = useInviteUserMutation;
46398
47636
  exports.useJoinTenantMutation = useJoinTenantMutation;
46399
47637
  exports.useLazyCheckAccessQuery = useLazyCheckAccessQuery;
@@ -46406,6 +47644,13 @@ exports.useLazyGetAgentConfigQuery = useLazyGetAgentConfigQuery;
46406
47644
  exports.useLazyGetAgentSkillResourcesQuery = useLazyGetAgentSkillResourcesQuery;
46407
47645
  exports.useLazyGetAgentSkillsQuery = useLazyGetAgentSkillsQuery;
46408
47646
  exports.useLazyGetApiKeysQuery = useLazyGetApiKeysQuery;
47647
+ exports.useLazyGetApplicationAdminDetailQuery = useLazyGetApplicationAdminDetailQuery;
47648
+ exports.useLazyGetApplicationAttachmentFileQuery = useLazyGetApplicationAttachmentFileQuery;
47649
+ exports.useLazyGetApplicationFormDetailQuery = useLazyGetApplicationFormDetailQuery;
47650
+ exports.useLazyGetApplicationFormQuery = useLazyGetApplicationFormQuery;
47651
+ exports.useLazyGetApplicationFormsQuery = useLazyGetApplicationFormsQuery;
47652
+ exports.useLazyGetApplicationStatusQuery = useLazyGetApplicationStatusQuery;
47653
+ exports.useLazyGetApplicationsPipelineQuery = useLazyGetApplicationsPipelineQuery;
46409
47654
  exports.useLazyGetArtifactQuery = useLazyGetArtifactQuery;
46410
47655
  exports.useLazyGetArtifactVersionQuery = useLazyGetArtifactVersionQuery;
46411
47656
  exports.useLazyGetAssignedProgramsQuery = useLazyGetAssignedProgramsQuery;
@@ -46444,6 +47689,8 @@ exports.useLazyGetDisclaimersQuery = useLazyGetDisclaimersQuery;
46444
47689
  exports.useLazyGetDownloadReportFromURLQuery = useLazyGetDownloadReportFromURLQuery;
46445
47690
  exports.useLazyGetEdxSSOTokenQuery = useLazyGetEdxSSOTokenQuery;
46446
47691
  exports.useLazyGetEnrollmentCourseSearchQuery = useLazyGetEnrollmentCourseSearchQuery;
47692
+ exports.useLazyGetEvalRunQuery = useLazyGetEvalRunQuery;
47693
+ exports.useLazyGetEvalTaskStatusQuery = useLazyGetEvalTaskStatusQuery;
46447
47694
  exports.useLazyGetExamInfoQuery = useLazyGetExamInfoQuery;
46448
47695
  exports.useLazyGetExternalMappingQuery = useLazyGetExternalMappingQuery;
46449
47696
  exports.useLazyGetFreeUsageCountQuery = useLazyGetFreeUsageCountQuery;
@@ -46504,6 +47751,8 @@ exports.useLazyGetPublicPlatformImageAssetFileUrlQuery = useLazyGetPublicPlatfor
46504
47751
  exports.useLazyGetPublicPlatformMembershipQuery = useLazyGetPublicPlatformMembershipQuery;
46505
47752
  exports.useLazyGetPublicPricingQuery = useLazyGetPublicPricingQuery;
46506
47753
  exports.useLazyGetRbacActionsDefinitionQuery = useLazyGetRbacActionsDefinitionQuery;
47754
+ exports.useLazyGetRbacResourceDiscoveryQuery = useLazyGetRbacResourceDiscoveryQuery;
47755
+ exports.useLazyGetRbacResourceListQuery = useLazyGetRbacResourceListQuery;
46507
47756
  exports.useLazyGetRbacRolesQuery = useLazyGetRbacRolesQuery;
46508
47757
  exports.useLazyGetRbacTeamsAccessListQuery = useLazyGetRbacTeamsAccessListQuery;
46509
47758
  exports.useLazyGetRecentMessageQuery = useLazyGetRecentMessageQuery;
@@ -46524,6 +47773,10 @@ exports.useLazyGetStripeConnectDashboardQuery = useLazyGetStripeConnectDashboard
46524
47773
  exports.useLazyGetStripeConnectStatusQuery = useLazyGetStripeConnectStatusQuery;
46525
47774
  exports.useLazyGetStripeContextQuery = useLazyGetStripeContextQuery;
46526
47775
  exports.useLazyGetStripePricingPageSessionQuery = useLazyGetStripePricingPageSessionQuery;
47776
+ exports.useLazyGetSupportTicketMessageQuery = useLazyGetSupportTicketMessageQuery;
47777
+ exports.useLazyGetSupportTicketMessagesQuery = useLazyGetSupportTicketMessagesQuery;
47778
+ exports.useLazyGetSupportTicketQuery = useLazyGetSupportTicketQuery;
47779
+ exports.useLazyGetSupportTicketsQuery = useLazyGetSupportTicketsQuery;
46527
47780
  exports.useLazyGetTemplateDetailsQuery = useLazyGetTemplateDetailsQuery;
46528
47781
  exports.useLazyGetTemplatesQuery = useLazyGetTemplatesQuery;
46529
47782
  exports.useLazyGetTenantChatPrivacyConfigQuery = useLazyGetTenantChatPrivacyConfigQuery;
@@ -46569,7 +47822,14 @@ exports.useLazyGetWorkflowQuery = useLazyGetWorkflowQuery;
46569
47822
  exports.useLazyGetWorkflowsQuery = useLazyGetWorkflowsQuery;
46570
47823
  exports.useLazyListArtifactVersionsQuery = useLazyListArtifactVersionsQuery;
46571
47824
  exports.useLazyListArtifactsQuery = useLazyListArtifactsQuery;
47825
+ exports.useLazyListEvalDatasetItemsQuery = useLazyListEvalDatasetItemsQuery;
47826
+ exports.useLazyListEvalDatasetsQuery = useLazyListEvalDatasetsQuery;
47827
+ exports.useLazyListEvalJudgesQuery = useLazyListEvalJudgesQuery;
47828
+ exports.useLazyListEvalRunJudgesQuery = useLazyListEvalRunJudgesQuery;
47829
+ exports.useLazyListEvalRunsQuery = useLazyListEvalRunsQuery;
47830
+ exports.useLazyListEvalScoresQuery = useLazyListEvalScoresQuery;
46572
47831
  exports.useLazyListItemSubscribersQuery = useLazyListItemSubscribersQuery;
47832
+ exports.useLazyListOwnApplicationsQuery = useLazyListOwnApplicationsQuery;
46573
47833
  exports.useLazyListPaywallsQuery = useLazyListPaywallsQuery;
46574
47834
  exports.useLazyListPricesQuery = useLazyListPricesQuery;
46575
47835
  exports.useLazyListSubscribersQuery = useLazyListSubscribersQuery;
@@ -46579,9 +47839,18 @@ exports.useLazyRefreshJwtTokenQuery = useLazyRefreshJwtTokenQuery;
46579
47839
  exports.useLazySeedMentorsQuery = useLazySeedMentorsQuery;
46580
47840
  exports.useLazyStarredMentorsQuery = useLazyStarredMentorsQuery;
46581
47841
  exports.useLazyStartOAuthFlowQuery = useLazyStartOAuthFlowQuery;
47842
+ exports.useLinkApplicationCandidateMutation = useLinkApplicationCandidateMutation;
46582
47843
  exports.useListArtifactVersionsQuery = useListArtifactVersionsQuery;
46583
47844
  exports.useListArtifactsQuery = useListArtifactsQuery;
47845
+ exports.useListEvalDatasetItemsQuery = useListEvalDatasetItemsQuery;
47846
+ exports.useListEvalDatasetsQuery = useListEvalDatasetsQuery;
47847
+ exports.useListEvalJudgesQuery = useListEvalJudgesQuery;
47848
+ exports.useListEvalRunJudgesQuery = useListEvalRunJudgesQuery;
47849
+ exports.useListEvalRunsQuery = useListEvalRunsQuery;
47850
+ exports.useListEvalScoreConfigsQuery = useListEvalScoreConfigsQuery;
47851
+ exports.useListEvalScoresQuery = useListEvalScoresQuery;
46584
47852
  exports.useListItemSubscribersQuery = useListItemSubscribersQuery;
47853
+ exports.useListOwnApplicationsQuery = useListOwnApplicationsQuery;
46585
47854
  exports.useListPaywallsQuery = useListPaywallsQuery;
46586
47855
  exports.useListPricesQuery = useListPricesQuery;
46587
47856
  exports.useListSubscribersQuery = useListSubscribersQuery;
@@ -46591,6 +47860,8 @@ exports.usePartialUpdateMCPServerMutation = usePartialUpdateMCPServerMutation;
46591
47860
  exports.usePartialUpdatePeriodicAgentMutation = usePartialUpdatePeriodicAgentMutation;
46592
47861
  exports.usePartialUpdateRbacRoleMutation = usePartialUpdateRbacRoleMutation;
46593
47862
  exports.usePatchMCPServerConnectionMutation = usePatchMCPServerConnectionMutation;
47863
+ exports.usePatchSupportTicketMessageMutation = usePatchSupportTicketMessageMutation;
47864
+ exports.usePatchSupportTicketMutation = usePatchSupportTicketMutation;
46594
47865
  exports.usePatchWorkflowMutation = usePatchWorkflowMutation;
46595
47866
  exports.usePlatformInvitationsQuery = usePlatformInvitationsQuery;
46596
47867
  exports.usePlatformUserGroupsQuery = usePlatformUserGroupsQuery;
@@ -46600,6 +47871,7 @@ exports.usePushClawConfigMutation = usePushClawConfigMutation;
46600
47871
  exports.useRefreshVersionClawInstanceMutation = useRefreshVersionClawInstanceMutation;
46601
47872
  exports.useRemoveProfileImageMutation = useRemoveProfileImageMutation;
46602
47873
  exports.useRemoveWatchedUserMutation = useRemoveWatchedUserMutation;
47874
+ exports.useRenewApplicationMutation = useRenewApplicationMutation;
46603
47875
  exports.useRenewSubscriptionMutation = useRenewSubscriptionMutation;
46604
47876
  exports.useResetPasswordMutation = useResetPasswordMutation;
46605
47877
  exports.useRevokeShareableLinkMutation = useRevokeShareableLinkMutation;
@@ -46609,13 +47881,18 @@ exports.useSendNotificationMutation = useSendNotificationMutation;
46609
47881
  exports.useSetCurrentVersionMutation = useSetCurrentVersionMutation;
46610
47882
  exports.useSetPlatformConfigurationsMutation = useSetPlatformConfigurationsMutation;
46611
47883
  exports.useSetStudentMentorCreationStatusMutation = useSetStudentMentorCreationStatusMutation;
47884
+ exports.useSetStudioAdvancedSettingsMutation = useSetStudioAdvancedSettingsMutation;
46612
47885
  exports.useStarMentorMutation = useStarMentorMutation;
46613
47886
  exports.useStarredMentorsQuery = useStarredMentorsQuery;
47887
+ exports.useStartEvalRunMutation = useStartEvalRunMutation;
46614
47888
  exports.useStartExamMutation = useStartExamMutation;
46615
47889
  exports.useStartStripeConnectOnboardingMutation = useStartStripeConnectOnboardingMutation;
47890
+ exports.useSubmitApplicationMutation = useSubmitApplicationMutation;
47891
+ exports.useSubmitApplicationOverrideMutation = useSubmitApplicationOverrideMutation;
46616
47892
  exports.useTestConnectivityClawInstanceMutation = useTestConnectivityClawInstanceMutation;
46617
47893
  exports.useTimeTrackingMutation = useTimeTrackingMutation;
46618
47894
  exports.useToggleTemplateMutation = useToggleTemplateMutation;
47895
+ exports.useTransitionApplicationMutation = useTransitionApplicationMutation;
46619
47896
  exports.useTriggerAutoRechargeMutation = useTriggerAutoRechargeMutation;
46620
47897
  exports.useUnPinMessageMutation = useUnPinMessageMutation;
46621
47898
  exports.useUnpublishWorkflowMutation = useUnpublishWorkflowMutation;
@@ -46624,6 +47901,10 @@ exports.useUpdateAdminProjectMutation = useUpdateAdminProjectMutation;
46624
47901
  exports.useUpdateAgentConfigMutation = useUpdateAgentConfigMutation;
46625
47902
  exports.useUpdateAgentSkillMutation = useUpdateAgentSkillMutation;
46626
47903
  exports.useUpdateAgentSkillResourceMutation = useUpdateAgentSkillResourceMutation;
47904
+ exports.useUpdateApplicationFormMutation = useUpdateApplicationFormMutation;
47905
+ exports.useUpdateApplicationMutation = useUpdateApplicationMutation;
47906
+ exports.useUpdateApplicationNoteMutation = useUpdateApplicationNoteMutation;
47907
+ exports.useUpdateApplicationPlacementMutation = useUpdateApplicationPlacementMutation;
46627
47908
  exports.useUpdateArtifactMutation = useUpdateArtifactMutation;
46628
47909
  exports.useUpdateAutoRechargeInfoMutation = useUpdateAutoRechargeInfoMutation;
46629
47910
  exports.useUpdateCallConfigurationMutation = useUpdateCallConfigurationMutation;
@@ -46633,6 +47914,7 @@ exports.useUpdateClawInstanceMutation = useUpdateClawInstanceMutation;
46633
47914
  exports.useUpdateClawMentorConfigMutation = useUpdateClawMentorConfigMutation;
46634
47915
  exports.useUpdateCredentialMutation = useUpdateCredentialMutation;
46635
47916
  exports.useUpdateDisclaimerMutation = useUpdateDisclaimerMutation;
47917
+ exports.useUpdateEvalDatasetItemMutation = useUpdateEvalDatasetItemMutation;
46636
47918
  exports.useUpdateExamAttemptMutation = useUpdateExamAttemptMutation;
46637
47919
  exports.useUpdateIntegrationCredentialMutation = useUpdateIntegrationCredentialMutation;
46638
47920
  exports.useUpdateLtiKeyMutation = useUpdateLtiKeyMutation;
@@ -46660,6 +47942,10 @@ exports.useUpdateRbacRoleMutation = useUpdateRbacRoleMutation;
46660
47942
  exports.useUpdateRecommendedPromptMutation = useUpdateRecommendedPromptMutation;
46661
47943
  exports.useUpdateSessionDisableChathistoryMutation = useUpdateSessionDisableChathistoryMutation;
46662
47944
  exports.useUpdateShareableLinkMutation = useUpdateShareableLinkMutation;
47945
+ exports.useUpdateStudioCourseSettingsMutation = useUpdateStudioCourseSettingsMutation;
47946
+ exports.useUpdateStudioXblockMutation = useUpdateStudioXblockMutation;
47947
+ exports.useUpdateSupportTicketMessageMutation = useUpdateSupportTicketMessageMutation;
47948
+ exports.useUpdateSupportTicketMutation = useUpdateSupportTicketMutation;
46663
47949
  exports.useUpdateTemplateMutation = useUpdateTemplateMutation;
46664
47950
  exports.useUpdateTenantChatPrivacyConfigMutation = useUpdateTenantChatPrivacyConfigMutation;
46665
47951
  exports.useUpdateTenantMetadataMutation = useUpdateTenantMetadataMutation;
@@ -46679,12 +47965,18 @@ exports.useUpdateUserTrialStatusMutation = useUpdateUserTrialStatusMutation;
46679
47965
  exports.useUpdateWatchedGroupMutation = useUpdateWatchedGroupMutation;
46680
47966
  exports.useUpdateWatcherMutation = useUpdateWatcherMutation;
46681
47967
  exports.useUpdateWorkflowMutation = useUpdateWorkflowMutation;
47968
+ exports.useUploadApplicationAttachmentMutation = useUploadApplicationAttachmentMutation;
46682
47969
  exports.useUploadCredentialImageMutation = useUploadCredentialImageMutation;
46683
47970
  exports.useUploadDarkLogoMutation = useUploadDarkLogoMutation;
47971
+ exports.useUploadEvalDatasetCsvMutation = useUploadEvalDatasetCsvMutation;
46684
47972
  exports.useUploadLightLogoMutation = useUploadLightLogoMutation;
46685
47973
  exports.useUploadProfileImageMutation = useUploadProfileImageMutation;
47974
+ exports.useUploadStudioCourseAssetMutation = useUploadStudioCourseAssetMutation;
47975
+ exports.useUploadStudioCourseVideoMutation = useUploadStudioCourseVideoMutation;
47976
+ exports.useUploadStudioScormPackageMutation = useUploadStudioScormPackageMutation;
46686
47977
  exports.useUsersGradesPassedQuery = useUsersGradesPassedQuery;
46687
47978
  exports.useValidateWorkflowMutation = useValidateWorkflowMutation;
47979
+ exports.useWithdrawApplicationMutation = useWithdrawApplicationMutation;
46688
47980
  exports.userApiSlice = userApiSlice;
46689
47981
  exports.userInvitationsApiSlice = userInvitationsApiSlice;
46690
47982
  exports.watchedGroupsApiSlice = watchedGroupsApiSlice;