@iblai/data-layer 1.11.2 → 1.11.3

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.
package/dist/index.js CHANGED
@@ -44737,14 +44737,7 @@ const mcpApiSlice = react.createApi({
44737
44737
  const { useGetMCPServersQuery, useLazyGetMCPServersQuery, useGetMCPServerQuery, useLazyGetMCPServerQuery, useCreateMCPServerMutation, useUpdateMCPServerMutation, usePartialUpdateMCPServerMutation, useDeleteMCPServerMutation, useGetOAuthServicesQuery, useLazyGetOAuthServicesQuery, useGetConnectedServicesQuery, useLazyGetConnectedServicesQuery, useLazyStartOAuthFlowQuery, useDisconnectServiceMutation, useGetMCPServerConnectionsQuery, useCreateMCPServerConnectionMutation, usePatchMCPServerConnectionMutation, useOauthFindMutation, } = mcpApiSlice;
44738
44738
 
44739
44739
  const CLAW_REDUCER_PATH = 'clawApiSlice';
44740
- const CLAW_TAG_TYPES = [
44741
- 'ClawMentorConfig',
44742
- 'ClawInstances',
44743
- 'AgentConfig',
44744
- 'AgentSkills',
44745
- 'AgentSkillResources',
44746
- 'MentorSkillAssignments',
44747
- ];
44740
+ const CLAW_TAG_TYPES = ['ClawMentorConfig', 'ClawInstances', 'AgentConfig'];
44748
44741
  const CLAW_ENDPOINTS = {
44749
44742
  // ── Claw Mentor Config (singular, nested under mentor) ─────────────────────
44750
44743
  GET_MENTOR_CONFIG: {
@@ -44810,76 +44803,17 @@ const CLAW_ENDPOINTS = {
44810
44803
  path: (org, mentorUniqueId) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/agent-config/`,
44811
44804
  service: exports.SERVICES.DM,
44812
44805
  },
44813
- // ── Agent Skills (platform-level, unchanged) ───────────────────────────────
44814
- GET_AGENT_SKILLS: {
44815
- path: (org) => `/api/ai-mentor/orgs/${org}/agent-skills/`,
44816
- service: exports.SERVICES.DM,
44817
- },
44818
- GET_AGENT_SKILL: {
44819
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
44820
- service: exports.SERVICES.DM,
44821
- },
44822
- CREATE_AGENT_SKILL: {
44823
- path: (org) => `/api/ai-mentor/orgs/${org}/agent-skills/`,
44824
- service: exports.SERVICES.DM,
44825
- },
44826
- UPDATE_AGENT_SKILL: {
44827
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
44828
- service: exports.SERVICES.DM,
44829
- },
44830
- DELETE_AGENT_SKILL: {
44831
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
44832
- service: exports.SERVICES.DM,
44833
- },
44834
- // ── Agent Skill Resources (file resources attached to skills) ──────────────
44835
- GET_AGENT_SKILL_RESOURCES: {
44836
- path: (org) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/`,
44837
- service: exports.SERVICES.DM,
44838
- },
44839
- GET_AGENT_SKILL_RESOURCE: {
44840
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
44841
- service: exports.SERVICES.DM,
44842
- },
44843
- CREATE_AGENT_SKILL_RESOURCE: {
44844
- path: (org) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/`,
44845
- service: exports.SERVICES.DM,
44846
- },
44847
- UPDATE_AGENT_SKILL_RESOURCE: {
44848
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
44849
- service: exports.SERVICES.DM,
44850
- },
44851
- DELETE_AGENT_SKILL_RESOURCE: {
44852
- path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
44853
- service: exports.SERVICES.DM,
44854
- },
44855
- // ── Mentor Skill Assignments (nested under mentor) ─────────────────────────
44856
- GET_MENTOR_SKILL_ASSIGNMENTS: {
44857
- path: (org, mentorUniqueId) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/skills/`,
44858
- service: exports.SERVICES.DM,
44859
- },
44860
- CREATE_MENTOR_SKILL_ASSIGNMENT: {
44861
- path: (org, mentorUniqueId) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/skills/`,
44862
- service: exports.SERVICES.DM,
44863
- },
44864
- GET_MENTOR_SKILL_ASSIGNMENT: {
44865
- path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/skills/${assignmentPk}/`,
44866
- service: exports.SERVICES.DM,
44867
- },
44868
- UPDATE_MENTOR_SKILL_ASSIGNMENT: {
44869
- path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/skills/${assignmentPk}/`,
44870
- service: exports.SERVICES.DM,
44871
- },
44872
- DELETE_MENTOR_SKILL_ASSIGNMENT: {
44873
- path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/mentors/${mentorUniqueId}/skills/${assignmentPk}/`,
44874
- service: exports.SERVICES.DM,
44875
- },
44876
44806
  };
44807
+ // Agent Skills endpoints moved to the independent `agent-skills` feature
44808
+ // (`AGENT_SKILLS_ENDPOINTS`) — skills work without any Claw sandbox.
44877
44809
 
44810
+ // Agent Skills endpoints moved to the independent `agentSkillsApiSlice`
44811
+ // (features/agent-skills) — skills work without any Claw sandbox.
44878
44812
  /**
44879
44813
  * Normalize API responses that may return either a plain array or a
44880
44814
  * paginated envelope `{ results: T[] }`.
44881
44815
  */
44882
- function normalizeList(response) {
44816
+ function normalizeList$1(response) {
44883
44817
  return Array.isArray(response) ? response : response.results;
44884
44818
  }
44885
44819
  const clawApiSlice = react.createApi({
@@ -44977,7 +44911,7 @@ const clawApiSlice = react.createApi({
44977
44911
  url: CLAW_ENDPOINTS.GET_INSTANCES.path(args.org),
44978
44912
  service: CLAW_ENDPOINTS.GET_INSTANCES.service,
44979
44913
  }),
44980
- transformResponse: (response) => normalizeList(response),
44914
+ transformResponse: (response) => normalizeList$1(response),
44981
44915
  providesTags: ['ClawInstances'],
44982
44916
  }),
44983
44917
  getClawInstance: builder.query({
@@ -45116,32 +45050,138 @@ const clawApiSlice = react.createApi({
45116
45050
  { type: 'AgentConfig', id: args.mentorUniqueId },
45117
45051
  ],
45118
45052
  }),
45053
+ }),
45054
+ });
45055
+ const {
45056
+ // Mentor Config
45057
+ useGetClawMentorConfigQuery, useLazyGetClawMentorConfigQuery, useCreateClawMentorConfigMutation, useUpdateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation,
45058
+ // Instances
45059
+ useGetClawInstancesQuery, useLazyGetClawInstancesQuery, useGetClawInstanceQuery, useLazyGetClawInstanceQuery, useCreateClawInstanceMutation, useUpdateClawInstanceMutation, useDeleteClawInstanceMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useRefreshVersionClawInstanceMutation,
45060
+ // Agent Config
45061
+ useGetAgentConfigQuery, useLazyGetAgentConfigQuery, useUpdateAgentConfigMutation, } = clawApiSlice;
45062
+
45063
+ const AGENT_SKILLS_REDUCER_PATH = 'agentSkillsApiSlice';
45064
+ const AGENT_SKILLS_TAG_TYPES = [
45065
+ 'AgentSkills',
45066
+ 'AgentSkillResources',
45067
+ 'MentorSkillAssignments',
45068
+ ];
45069
+ const AGENT_SKILLS_ENDPOINTS = {
45070
+ // ── Agent Skills (platform-level catalog) ──────────────────────────────────
45071
+ GET_AGENT_SKILLS: {
45072
+ path: (org) => `/api/ai-mentor/orgs/${org}/agent-skills/`,
45073
+ service: exports.SERVICES.DM,
45074
+ },
45075
+ GET_AGENT_SKILL: {
45076
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
45077
+ service: exports.SERVICES.DM,
45078
+ },
45079
+ CREATE_AGENT_SKILL: {
45080
+ path: (org) => `/api/ai-mentor/orgs/${org}/agent-skills/`,
45081
+ service: exports.SERVICES.DM,
45082
+ },
45083
+ UPDATE_AGENT_SKILL: {
45084
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
45085
+ service: exports.SERVICES.DM,
45086
+ },
45087
+ DELETE_AGENT_SKILL: {
45088
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skills/${id}/`,
45089
+ service: exports.SERVICES.DM,
45090
+ },
45091
+ // ── Agent Skill Resources (file resources attached to skills) ──────────────
45092
+ GET_AGENT_SKILL_RESOURCES: {
45093
+ path: (org) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/`,
45094
+ service: exports.SERVICES.DM,
45095
+ },
45096
+ GET_AGENT_SKILL_RESOURCE: {
45097
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
45098
+ service: exports.SERVICES.DM,
45099
+ },
45100
+ CREATE_AGENT_SKILL_RESOURCE: {
45101
+ path: (org) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/`,
45102
+ service: exports.SERVICES.DM,
45103
+ },
45104
+ UPDATE_AGENT_SKILL_RESOURCE: {
45105
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
45106
+ service: exports.SERVICES.DM,
45107
+ },
45108
+ DELETE_AGENT_SKILL_RESOURCE: {
45109
+ path: (org, id) => `/api/ai-mentor/orgs/${org}/agent-skill-resources/${id}/`,
45110
+ service: exports.SERVICES.DM,
45111
+ },
45112
+ // ── Mentor Skill Assignments (nested under mentor) ─────────────────────────
45113
+ // Uses the canonical `agents/` spelling — the `mentors/` route is a
45114
+ // deprecated alias slated for removal.
45115
+ GET_MENTOR_SKILL_ASSIGNMENTS: {
45116
+ path: (org, mentorUniqueId) => `/api/ai-mentor/orgs/${org}/agents/${mentorUniqueId}/skills/`,
45117
+ service: exports.SERVICES.DM,
45118
+ },
45119
+ CREATE_MENTOR_SKILL_ASSIGNMENT: {
45120
+ path: (org, mentorUniqueId) => `/api/ai-mentor/orgs/${org}/agents/${mentorUniqueId}/skills/`,
45121
+ service: exports.SERVICES.DM,
45122
+ },
45123
+ GET_MENTOR_SKILL_ASSIGNMENT: {
45124
+ path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/agents/${mentorUniqueId}/skills/${assignmentPk}/`,
45125
+ service: exports.SERVICES.DM,
45126
+ },
45127
+ UPDATE_MENTOR_SKILL_ASSIGNMENT: {
45128
+ path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/agents/${mentorUniqueId}/skills/${assignmentPk}/`,
45129
+ service: exports.SERVICES.DM,
45130
+ },
45131
+ DELETE_MENTOR_SKILL_ASSIGNMENT: {
45132
+ path: (org, mentorUniqueId, assignmentPk) => `/api/ai-mentor/orgs/${org}/agents/${mentorUniqueId}/skills/${assignmentPk}/`,
45133
+ service: exports.SERVICES.DM,
45134
+ },
45135
+ };
45136
+
45137
+ /**
45138
+ * Normalize API responses that may return either a plain array or a
45139
+ * paginated envelope `{ results: T[] }`.
45140
+ */
45141
+ function normalizeList(response) {
45142
+ return Array.isArray(response) ? response : response.results;
45143
+ }
45144
+ const agentSkillsApiSlice = react.createApi({
45145
+ reducerPath: AGENT_SKILLS_REDUCER_PATH,
45146
+ baseQuery: iblFetchBaseQuery,
45147
+ tagTypes: [...AGENT_SKILLS_TAG_TYPES],
45148
+ endpoints: (builder) => ({
45119
45149
  // ── Agent Skills (platform-level) ─────────────────────────────────────
45120
45150
  getAgentSkills: builder.query({
45121
45151
  query: (args) => ({
45122
- url: CLAW_ENDPOINTS.GET_AGENT_SKILLS.path(args.org),
45123
- service: CLAW_ENDPOINTS.GET_AGENT_SKILLS.service,
45152
+ url: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILLS.path(args.org),
45153
+ service: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILLS.service,
45154
+ params: {
45155
+ ...(args.enabled !== undefined && { enabled: args.enabled }),
45156
+ ...(args.search !== undefined && { search: args.search }),
45157
+ ...(args.limit !== undefined && { limit: args.limit }),
45158
+ ...(args.offset !== undefined && { offset: args.offset }),
45159
+ },
45124
45160
  }),
45125
45161
  transformResponse: (response) => normalizeList(response),
45126
45162
  providesTags: ['AgentSkills'],
45127
45163
  }),
45128
45164
  getAgentSkill: builder.query({
45129
45165
  query: (args) => ({
45130
- url: CLAW_ENDPOINTS.GET_AGENT_SKILL.path(args.org, args.id),
45131
- service: CLAW_ENDPOINTS.GET_AGENT_SKILL.service,
45166
+ url: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL.path(args.org, args.id),
45167
+ service: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL.service,
45132
45168
  }),
45133
45169
  providesTags: (_result, _error, args) => [{ type: 'AgentSkills', id: args.id }],
45134
45170
  }),
45135
45171
  createAgentSkill: builder.mutation({
45136
45172
  query: (args) => ({
45137
- url: CLAW_ENDPOINTS.CREATE_AGENT_SKILL.path(args.org),
45138
- service: CLAW_ENDPOINTS.CREATE_AGENT_SKILL.service,
45173
+ url: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL.path(args.org),
45174
+ service: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL.service,
45139
45175
  method: 'POST',
45140
45176
  body: {
45141
45177
  name: args.name,
45142
45178
  slug: args.slug,
45143
45179
  ...(args.description !== undefined && { description: args.description }),
45144
45180
  ...(args.version !== undefined && { version: args.version }),
45181
+ ...(args.skill_type !== undefined && { skill_type: args.skill_type }),
45182
+ ...(args.category !== undefined && { category: args.category }),
45183
+ ...(args.source !== undefined && { source: args.source }),
45184
+ ...(args.mentor !== undefined && { mentor: args.mentor }),
45145
45185
  ...(args.instruction !== undefined && { instruction: args.instruction }),
45146
45186
  ...(args.metadata !== undefined && { metadata: args.metadata }),
45147
45187
  ...(args.enabled !== undefined && { enabled: args.enabled }),
@@ -45151,14 +45191,18 @@ const clawApiSlice = react.createApi({
45151
45191
  }),
45152
45192
  updateAgentSkill: builder.mutation({
45153
45193
  query: (args) => ({
45154
- url: CLAW_ENDPOINTS.UPDATE_AGENT_SKILL.path(args.org, args.id),
45155
- service: CLAW_ENDPOINTS.UPDATE_AGENT_SKILL.service,
45194
+ url: AGENT_SKILLS_ENDPOINTS.UPDATE_AGENT_SKILL.path(args.org, args.id),
45195
+ service: AGENT_SKILLS_ENDPOINTS.UPDATE_AGENT_SKILL.service,
45156
45196
  method: 'PATCH',
45157
45197
  body: {
45158
45198
  ...(args.name !== undefined && { name: args.name }),
45159
45199
  ...(args.slug !== undefined && { slug: args.slug }),
45160
45200
  ...(args.description !== undefined && { description: args.description }),
45161
45201
  ...(args.version !== undefined && { version: args.version }),
45202
+ ...(args.skill_type !== undefined && { skill_type: args.skill_type }),
45203
+ ...(args.category !== undefined && { category: args.category }),
45204
+ ...(args.source !== undefined && { source: args.source }),
45205
+ ...(args.mentor !== undefined && { mentor: args.mentor }),
45162
45206
  ...(args.instruction !== undefined && { instruction: args.instruction }),
45163
45207
  ...(args.metadata !== undefined && { metadata: args.metadata }),
45164
45208
  ...(args.enabled !== undefined && { enabled: args.enabled }),
@@ -45171,60 +45215,62 @@ const clawApiSlice = react.createApi({
45171
45215
  }),
45172
45216
  deleteAgentSkill: builder.mutation({
45173
45217
  query: (args) => ({
45174
- url: CLAW_ENDPOINTS.DELETE_AGENT_SKILL.path(args.org, args.id),
45175
- service: CLAW_ENDPOINTS.DELETE_AGENT_SKILL.service,
45218
+ url: AGENT_SKILLS_ENDPOINTS.DELETE_AGENT_SKILL.path(args.org, args.id),
45219
+ service: AGENT_SKILLS_ENDPOINTS.DELETE_AGENT_SKILL.service,
45176
45220
  method: 'DELETE',
45177
45221
  }),
45178
45222
  invalidatesTags: ['AgentSkills'],
45179
45223
  }),
45180
45224
  // ── Agent Skill Resources ─────────────────────────────────────────────
45225
+ // Returns the paginated envelope so list UIs can page on `count`;
45226
+ // bare-array responses are normalized into a single-page envelope.
45181
45227
  getAgentSkillResources: builder.query({
45182
45228
  query: (args) => ({
45183
- url: CLAW_ENDPOINTS.GET_AGENT_SKILL_RESOURCES.path(args.org),
45184
- service: CLAW_ENDPOINTS.GET_AGENT_SKILL_RESOURCES.service,
45229
+ url: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL_RESOURCES.path(args.org),
45230
+ service: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL_RESOURCES.service,
45185
45231
  params: {
45186
45232
  ...(args.skill !== undefined && { skill: args.skill }),
45187
45233
  ...(args.file_type !== undefined && { file_type: args.file_type }),
45234
+ ...(args.limit !== undefined && { limit: args.limit }),
45235
+ ...(args.offset !== undefined && { offset: args.offset }),
45188
45236
  },
45189
45237
  }),
45190
- transformResponse: (response) => normalizeList(response),
45238
+ transformResponse: (response) => Array.isArray(response)
45239
+ ? { count: response.length, next: null, previous: null, results: response }
45240
+ : response,
45191
45241
  providesTags: ['AgentSkillResources'],
45192
45242
  }),
45193
45243
  getAgentSkillResource: builder.query({
45194
45244
  query: (args) => ({
45195
- url: CLAW_ENDPOINTS.GET_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45196
- service: CLAW_ENDPOINTS.GET_AGENT_SKILL_RESOURCE.service,
45245
+ url: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45246
+ service: AGENT_SKILLS_ENDPOINTS.GET_AGENT_SKILL_RESOURCE.service,
45197
45247
  }),
45198
45248
  providesTags: (_result, _error, args) => [{ type: 'AgentSkillResources', id: args.id }],
45199
45249
  }),
45200
45250
  createAgentSkillResource: builder.mutation({
45201
45251
  query: (args) => ({
45202
- url: CLAW_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.path(args.org),
45203
- service: CLAW_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.service,
45252
+ url: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.path(args.org),
45253
+ service: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.service,
45204
45254
  method: 'POST',
45205
45255
  body: {
45206
45256
  skill: args.skill,
45207
45257
  file_type: args.file_type,
45208
- name: args.name,
45209
- ...(args.url !== undefined && { url: args.url }),
45258
+ filename: args.filename,
45210
45259
  ...(args.content !== undefined && { content: args.content }),
45211
- ...(args.metadata !== undefined && { metadata: args.metadata }),
45212
45260
  },
45213
45261
  }),
45214
45262
  invalidatesTags: ['AgentSkillResources'],
45215
45263
  }),
45216
45264
  updateAgentSkillResource: builder.mutation({
45217
45265
  query: (args) => ({
45218
- url: CLAW_ENDPOINTS.UPDATE_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45219
- service: CLAW_ENDPOINTS.UPDATE_AGENT_SKILL_RESOURCE.service,
45266
+ url: AGENT_SKILLS_ENDPOINTS.UPDATE_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45267
+ service: AGENT_SKILLS_ENDPOINTS.UPDATE_AGENT_SKILL_RESOURCE.service,
45220
45268
  method: 'PATCH',
45221
45269
  body: {
45222
45270
  ...(args.skill !== undefined && { skill: args.skill }),
45223
45271
  ...(args.file_type !== undefined && { file_type: args.file_type }),
45224
- ...(args.name !== undefined && { name: args.name }),
45225
- ...(args.url !== undefined && { url: args.url }),
45272
+ ...(args.filename !== undefined && { filename: args.filename }),
45226
45273
  ...(args.content !== undefined && { content: args.content }),
45227
- ...(args.metadata !== undefined && { metadata: args.metadata }),
45228
45274
  },
45229
45275
  }),
45230
45276
  invalidatesTags: (_result, _error, args) => [
@@ -45232,10 +45278,31 @@ const clawApiSlice = react.createApi({
45232
45278
  'AgentSkillResources',
45233
45279
  ],
45234
45280
  }),
45281
+ // Binary `asset` upload — multipart form data; text types use the JSON
45282
+ // createAgentSkillResource mutation with `content`.
45283
+ uploadAgentSkillResourceAsset: builder.mutation({
45284
+ query: (args) => {
45285
+ var _a;
45286
+ const formData = new FormData();
45287
+ formData.append('skill', String(args.skill));
45288
+ formData.append('file_type', 'asset');
45289
+ const filename = (_a = args.filename) !== null && _a !== void 0 ? _a : (args.file instanceof File ? args.file.name : 'asset');
45290
+ formData.append('filename', filename);
45291
+ formData.append('file', args.file, filename);
45292
+ return {
45293
+ url: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.path(args.org),
45294
+ service: AGENT_SKILLS_ENDPOINTS.CREATE_AGENT_SKILL_RESOURCE.service,
45295
+ method: 'POST',
45296
+ body: formData,
45297
+ isJson: false,
45298
+ };
45299
+ },
45300
+ invalidatesTags: ['AgentSkillResources'],
45301
+ }),
45235
45302
  deleteAgentSkillResource: builder.mutation({
45236
45303
  query: (args) => ({
45237
- url: CLAW_ENDPOINTS.DELETE_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45238
- service: CLAW_ENDPOINTS.DELETE_AGENT_SKILL_RESOURCE.service,
45304
+ url: AGENT_SKILLS_ENDPOINTS.DELETE_AGENT_SKILL_RESOURCE.path(args.org, args.id),
45305
+ service: AGENT_SKILLS_ENDPOINTS.DELETE_AGENT_SKILL_RESOURCE.service,
45239
45306
  method: 'DELETE',
45240
45307
  }),
45241
45308
  invalidatesTags: ['AgentSkillResources'],
@@ -45243,8 +45310,13 @@ const clawApiSlice = react.createApi({
45243
45310
  // ── Mentor Skill Assignments (nested under mentor) ────────────────────
45244
45311
  getMentorSkillAssignments: builder.query({
45245
45312
  query: (args) => ({
45246
- url: CLAW_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENTS.path(args.org, args.mentorUniqueId),
45247
- service: CLAW_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENTS.service,
45313
+ url: AGENT_SKILLS_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENTS.path(args.org, args.mentorUniqueId),
45314
+ service: AGENT_SKILLS_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENTS.service,
45315
+ params: {
45316
+ ...(args.enabled !== undefined && { enabled: args.enabled }),
45317
+ ...(args.limit !== undefined && { limit: args.limit }),
45318
+ ...(args.offset !== undefined && { offset: args.offset }),
45319
+ },
45248
45320
  }),
45249
45321
  transformResponse: (response) => normalizeList(response),
45250
45322
  providesTags: (_result, _error, args) => [
@@ -45253,8 +45325,8 @@ const clawApiSlice = react.createApi({
45253
45325
  }),
45254
45326
  getMentorSkillAssignment: builder.query({
45255
45327
  query: (args) => ({
45256
- url: CLAW_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45257
- service: CLAW_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENT.service,
45328
+ url: AGENT_SKILLS_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45329
+ service: AGENT_SKILLS_ENDPOINTS.GET_MENTOR_SKILL_ASSIGNMENT.service,
45258
45330
  }),
45259
45331
  providesTags: (_result, _error, args) => [
45260
45332
  { type: 'MentorSkillAssignments', id: args.assignmentPk },
@@ -45262,8 +45334,8 @@ const clawApiSlice = react.createApi({
45262
45334
  }),
45263
45335
  createMentorSkillAssignment: builder.mutation({
45264
45336
  query: (args) => ({
45265
- url: CLAW_ENDPOINTS.CREATE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId),
45266
- service: CLAW_ENDPOINTS.CREATE_MENTOR_SKILL_ASSIGNMENT.service,
45337
+ url: AGENT_SKILLS_ENDPOINTS.CREATE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId),
45338
+ service: AGENT_SKILLS_ENDPOINTS.CREATE_MENTOR_SKILL_ASSIGNMENT.service,
45267
45339
  method: 'POST',
45268
45340
  body: {
45269
45341
  skill: args.skill,
@@ -45276,8 +45348,8 @@ const clawApiSlice = react.createApi({
45276
45348
  }),
45277
45349
  updateMentorSkillAssignment: builder.mutation({
45278
45350
  query: (args) => ({
45279
- url: CLAW_ENDPOINTS.UPDATE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45280
- service: CLAW_ENDPOINTS.UPDATE_MENTOR_SKILL_ASSIGNMENT.service,
45351
+ url: AGENT_SKILLS_ENDPOINTS.UPDATE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45352
+ service: AGENT_SKILLS_ENDPOINTS.UPDATE_MENTOR_SKILL_ASSIGNMENT.service,
45281
45353
  method: 'PATCH',
45282
45354
  body: {
45283
45355
  ...(args.enabled !== undefined && { enabled: args.enabled }),
@@ -45289,8 +45361,8 @@ const clawApiSlice = react.createApi({
45289
45361
  }),
45290
45362
  deleteMentorSkillAssignment: builder.mutation({
45291
45363
  query: (args) => ({
45292
- url: CLAW_ENDPOINTS.DELETE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45293
- service: CLAW_ENDPOINTS.DELETE_MENTOR_SKILL_ASSIGNMENT.service,
45364
+ url: AGENT_SKILLS_ENDPOINTS.DELETE_MENTOR_SKILL_ASSIGNMENT.path(args.org, args.mentorUniqueId, args.assignmentPk),
45365
+ service: AGENT_SKILLS_ENDPOINTS.DELETE_MENTOR_SKILL_ASSIGNMENT.service,
45294
45366
  method: 'DELETE',
45295
45367
  }),
45296
45368
  invalidatesTags: (_result, _error, args) => [
@@ -45300,18 +45372,111 @@ const clawApiSlice = react.createApi({
45300
45372
  }),
45301
45373
  });
45302
45374
  const {
45303
- // Mentor Config
45304
- useGetClawMentorConfigQuery, useLazyGetClawMentorConfigQuery, useCreateClawMentorConfigMutation, useUpdateClawMentorConfigMutation, useDeleteClawMentorConfigMutation, usePushClawConfigMutation,
45305
- // Instances
45306
- useGetClawInstancesQuery, useLazyGetClawInstancesQuery, useGetClawInstanceQuery, useLazyGetClawInstanceQuery, useCreateClawInstanceMutation, useUpdateClawInstanceMutation, useDeleteClawInstanceMutation, useHealthCheckClawInstanceMutation, useTestConnectivityClawInstanceMutation, useRefreshVersionClawInstanceMutation,
45307
- // Agent Config
45308
- useGetAgentConfigQuery, useLazyGetAgentConfigQuery, useUpdateAgentConfigMutation,
45309
45375
  // Agent Skills
45310
45376
  useGetAgentSkillsQuery, useLazyGetAgentSkillsQuery, useGetAgentSkillQuery, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation,
45311
45377
  // Agent Skill Resources
45312
- useGetAgentSkillResourcesQuery, useLazyGetAgentSkillResourcesQuery, useGetAgentSkillResourceQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useDeleteAgentSkillResourceMutation,
45378
+ useGetAgentSkillResourcesQuery, useLazyGetAgentSkillResourcesQuery, useGetAgentSkillResourceQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useUploadAgentSkillResourceAssetMutation, useDeleteAgentSkillResourceMutation,
45313
45379
  // Mentor Skill Assignments
45314
- useGetMentorSkillAssignmentsQuery, useLazyGetMentorSkillAssignmentsQuery, useGetMentorSkillAssignmentQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, } = clawApiSlice;
45380
+ useGetMentorSkillAssignmentsQuery, useLazyGetMentorSkillAssignmentsQuery, useGetMentorSkillAssignmentQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, } = agentSkillsApiSlice;
45381
+
45382
+ /**
45383
+ * Template slugs that resolve to the "base-agent" mentor type on the backend
45384
+ * (`Mentor.get_mentor_type()`). `ai-mentor` and `ai-agent` are legacy aliases.
45385
+ * Agent Skills only apply to base-agent mentors.
45386
+ */
45387
+ const BASE_AGENT_TEMPLATE_SLUGS = ['base-agent', 'ai-mentor', 'ai-agent'];
45388
+ /**
45389
+ * Whether a mentor is a Base Agent — the only mentor type that supports Agent
45390
+ * Skills. Mirrors the backend check: the mentor's own slug, or its template
45391
+ * mentor's slug, must be one of {@link BASE_AGENT_TEMPLATE_SLUGS}.
45392
+ */
45393
+ function isBaseAgentMentor({ mentorSlug, templateMentorSlug, }) {
45394
+ const slugs = BASE_AGENT_TEMPLATE_SLUGS;
45395
+ return ((!!mentorSlug && slugs.includes(mentorSlug)) ||
45396
+ (!!templateMentorSlug && slugs.includes(templateMentorSlug)));
45397
+ }
45398
+ /**
45399
+ * Resolve the effective skill set for an agent from the two admin endpoints:
45400
+ * skill assignments (`GET .../agents/{uuid}/skills/`) plus the agent's own
45401
+ * private skills from the catalog (`GET .../agent-skills/` where
45402
+ * `skill.mentor === mentorUniqueId`), deduped by slug.
45403
+ *
45404
+ * Precedence per backend `resolve_effective_skills`:
45405
+ * mentor-private > tenant-platform > global/featured.
45406
+ *
45407
+ * Mirrors the server-side resolution so admin surfaces can render the
45408
+ * effective set today; the chat surface should prefer the learner-accessible
45409
+ * effective-skills endpoint once confirmed.
45410
+ */
45411
+ function resolveEffectiveAgentSkills(skills, assignments, mentorUniqueId) {
45412
+ var _a, _b, _c;
45413
+ const skillsByUniqueId = new Map(skills.map((skill) => [skill.unique_id, skill]));
45414
+ const candidates = [];
45415
+ for (const skill of skills) {
45416
+ if (skill.mentor === mentorUniqueId) {
45417
+ candidates.push({
45418
+ unique_id: skill.unique_id,
45419
+ name: skill.name,
45420
+ slug: skill.slug,
45421
+ description: skill.description,
45422
+ category: skill.category,
45423
+ skill_type: skill.skill_type,
45424
+ is_featured: skill.is_featured,
45425
+ enabled: skill.enabled !== false,
45426
+ origin: 'private',
45427
+ skill,
45428
+ });
45429
+ }
45430
+ }
45431
+ for (const assignment of assignments) {
45432
+ const skill = skillsByUniqueId.get(assignment.skill);
45433
+ // Skip assignments to skills private to a different mentor (the catalog
45434
+ // includes this org's mentor-private skills too).
45435
+ if ((skill === null || skill === void 0 ? void 0 : skill.mentor) && skill.mentor !== mentorUniqueId)
45436
+ continue;
45437
+ candidates.push({
45438
+ unique_id: assignment.skill,
45439
+ name: (_a = skill === null || skill === void 0 ? void 0 : skill.name) !== null && _a !== void 0 ? _a : assignment.skill_name,
45440
+ slug: (_c = (_b = skill === null || skill === void 0 ? void 0 : skill.slug) !== null && _b !== void 0 ? _b : assignment.skill_slug) !== null && _c !== void 0 ? _c : assignment.skill_name,
45441
+ description: skill === null || skill === void 0 ? void 0 : skill.description,
45442
+ category: skill === null || skill === void 0 ? void 0 : skill.category,
45443
+ skill_type: skill === null || skill === void 0 ? void 0 : skill.skill_type,
45444
+ is_featured: skill === null || skill === void 0 ? void 0 : skill.is_featured,
45445
+ enabled: assignment.enabled !== false && (skill === null || skill === void 0 ? void 0 : skill.enabled) !== false,
45446
+ origin: 'assignment',
45447
+ assignmentId: assignment.id,
45448
+ skill,
45449
+ });
45450
+ }
45451
+ // Dedupe by slug: private > assigned tenant skill > assigned featured skill.
45452
+ const rank = (candidate) => {
45453
+ if (candidate.origin === 'private')
45454
+ return 0;
45455
+ return candidate.is_featured ? 2 : 1;
45456
+ };
45457
+ const bySlug = new Map();
45458
+ for (const candidate of candidates) {
45459
+ const existing = bySlug.get(candidate.slug);
45460
+ if (!existing || rank(candidate) < rank(existing)) {
45461
+ bySlug.set(candidate.slug, candidate);
45462
+ }
45463
+ }
45464
+ return [...bySlug.values()].sort((a, b) => a.name.localeCompare(b.name));
45465
+ }
45466
+ /**
45467
+ * Filter + rank effective skills for the chat `/` picker. Matches on `name`
45468
+ * and `slug` (case-insensitive substring); only enabled skills are offered.
45469
+ */
45470
+ function filterSlashSkills(skills, query) {
45471
+ const normalized = query.trim().toLowerCase();
45472
+ return skills.filter((skill) => {
45473
+ if (!skill.enabled)
45474
+ return false;
45475
+ if (!normalized)
45476
+ return true;
45477
+ return (skill.name.toLowerCase().includes(normalized) || skill.slug.toLowerCase().includes(normalized));
45478
+ });
45479
+ }
45315
45480
 
45316
45481
  const CUSTOM_DOMAIN_REDUCER_PATH = 'customDomainApiSlice';
45317
45482
  const CUSTOM_DOMAIN_ENDPOINTS = {
@@ -47034,6 +47199,7 @@ const mentorReducer = {
47034
47199
  [edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
47035
47200
  [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
47036
47201
  [clawApiSlice.reducerPath]: clawApiSlice.reducer,
47202
+ [agentSkillsApiSlice.reducerPath]: agentSkillsApiSlice.reducer,
47037
47203
  [evaluationsApiSlice.reducerPath]: evaluationsApiSlice.reducer,
47038
47204
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
47039
47205
  [chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
@@ -47094,6 +47260,7 @@ const mentorMiddleware = [
47094
47260
  edxSsoApiSlice.middleware,
47095
47261
  studioAuthoringApiSlice.middleware,
47096
47262
  clawApiSlice.middleware,
47263
+ agentSkillsApiSlice.middleware,
47097
47264
  evaluationsApiSlice.middleware,
47098
47265
  watchedGroupsApiSlice.middleware,
47099
47266
  chatPrivacyApiSlice.middleware,
@@ -47143,6 +47310,7 @@ const skillsReducer = {
47143
47310
  [studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
47144
47311
  [watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
47145
47312
  [chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
47313
+ [agentSkillsApiSlice.reducerPath]: agentSkillsApiSlice.reducer,
47146
47314
  };
47147
47315
  const skillsMiddleware = [
47148
47316
  perLearnerApiSlice.middleware,
@@ -47185,6 +47353,7 @@ const skillsMiddleware = [
47185
47353
  studioAuthoringApiSlice.middleware,
47186
47354
  watchedGroupsApiSlice.middleware,
47187
47355
  chatPrivacyApiSlice.middleware,
47356
+ agentSkillsApiSlice.middleware,
47188
47357
  ];
47189
47358
 
47190
47359
  const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}, studioUrl) => {
@@ -47198,10 +47367,14 @@ const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpEr
47198
47367
  }
47199
47368
  };
47200
47369
 
47370
+ exports.AGENT_SKILLS_ENDPOINTS = AGENT_SKILLS_ENDPOINTS;
47371
+ exports.AGENT_SKILLS_REDUCER_PATH = AGENT_SKILLS_REDUCER_PATH;
47372
+ exports.AGENT_SKILLS_TAG_TYPES = AGENT_SKILLS_TAG_TYPES;
47201
47373
  exports.APP_IDENTIFIERS = APP_IDENTIFIERS;
47202
47374
  exports.AUDIT_LOGS_ENDPOINTS = AUDIT_LOGS_ENDPOINTS;
47203
47375
  exports.AUDIT_LOGS_QUERY_KEYS = AUDIT_LOGS_QUERY_KEYS;
47204
47376
  exports.AUDIT_LOGS_REDUCER_PATH = AUDIT_LOGS_REDUCER_PATH;
47377
+ exports.BASE_AGENT_TEMPLATE_SLUGS = BASE_AGENT_TEMPLATE_SLUGS;
47205
47378
  exports.CALL_CONFIGURATIONS_ENDPOINTS = CALL_CONFIGURATIONS_ENDPOINTS;
47206
47379
  exports.CALL_CONFIGURATIONS_REDUCER_PATH = CALL_CONFIGURATIONS_REDUCER_PATH;
47207
47380
  exports.CALL_CONFIGURATIONS_TAGS = CALL_CONFIGURATIONS_TAGS;
@@ -47284,6 +47457,7 @@ exports.WATCHER_NOTIFICATION_EVENT_LABELS = WATCHER_NOTIFICATION_EVENT_LABELS;
47284
47457
  exports.WORKFLOWS_ENDPOINTS = WORKFLOWS_ENDPOINTS;
47285
47458
  exports.WORKFLOWS_QUERY_KEYS = WORKFLOWS_QUERY_KEYS;
47286
47459
  exports.WORKFLOWS_REDUCER_PATH = WORKFLOWS_REDUCER_PATH;
47460
+ exports.agentSkillsApiSlice = agentSkillsApiSlice;
47287
47461
  exports.analyticsApiSlice = analyticsApiSlice;
47288
47462
  exports.apiKeysApiReducer = apiKeysApiReducer;
47289
47463
  exports.apiKeysApiSlice = apiKeysApiSlice;
@@ -47325,10 +47499,12 @@ exports.evalTotalPages = evalTotalPages;
47325
47499
  exports.evaluationsApiSlice = evaluationsApiSlice;
47326
47500
  exports.fakeBaseQueryWithLogging = fakeBaseQueryWithLogging;
47327
47501
  exports.featureTags = featureTags;
47502
+ exports.filterSlashSkills = filterSlashSkills;
47328
47503
  exports.getNextRecentMessagesPageParam = getNextRecentMessagesPageParam;
47329
47504
  exports.gradingApiSlice = gradingApiSlice;
47330
47505
  exports.iblFakeBaseQuery = iblFakeBaseQuery;
47331
47506
  exports.initializeDataLayer = initializeDataLayer;
47507
+ exports.isBaseAgentMentor = isBaseAgentMentor;
47332
47508
  exports.isPoliciesResponse = isPoliciesResponse;
47333
47509
  exports.isPrivacyBlockedError = isPrivacyBlockedError;
47334
47510
  exports.llmsApiSlice = llmsApiSlice;
@@ -47353,6 +47529,7 @@ exports.platformCustomApiSlice = platformCustomApiSlice;
47353
47529
  exports.projectsApiSlice = projectsApiSlice;
47354
47530
  exports.promptsApiSlice = promptsApiSlice;
47355
47531
  exports.reportsApiSlice = reportsApiSlice;
47532
+ exports.resolveEffectiveAgentSkills = resolveEffectiveAgentSkills;
47356
47533
  exports.retirementApiSlice = retirementApiSlice;
47357
47534
  exports.searchApiSlice = searchApiSlice;
47358
47535
  exports.sessionApiSlice = sessionApiSlice;
@@ -48117,6 +48294,7 @@ exports.useUpdateUserTrialStatusMutation = useUpdateUserTrialStatusMutation;
48117
48294
  exports.useUpdateWatchedGroupMutation = useUpdateWatchedGroupMutation;
48118
48295
  exports.useUpdateWatcherMutation = useUpdateWatcherMutation;
48119
48296
  exports.useUpdateWorkflowMutation = useUpdateWorkflowMutation;
48297
+ exports.useUploadAgentSkillResourceAssetMutation = useUploadAgentSkillResourceAssetMutation;
48120
48298
  exports.useUploadApplicationAttachmentMutation = useUploadApplicationAttachmentMutation;
48121
48299
  exports.useUploadCredentialImageMutation = useUploadCredentialImageMutation;
48122
48300
  exports.useUploadDarkLogoMutation = useUploadDarkLogoMutation;