@getsupervisor/agents-studio-sdk 1.10.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,95 +1,3 @@
1
- // src/utils/pagination.ts
2
- var toNumber = (value) => {
3
- return typeof value === "number" ? value : void 0;
4
- };
5
- var toBoolean = (value) => {
6
- return typeof value === "boolean" ? value : void 0;
7
- };
8
- function cloneOptions(options, overrides) {
9
- return {
10
- ...options ?? {},
11
- ...overrides ?? {}
12
- };
13
- }
14
- function normalizeMeta(meta) {
15
- if (!meta) {
16
- return void 0;
17
- }
18
- const metaRecord = meta;
19
- return {
20
- ...metaRecord,
21
- page: toNumber(metaRecord.page),
22
- limit: toNumber(metaRecord.limit) ?? toNumber(metaRecord.pageSize),
23
- total: toNumber(metaRecord.total) ?? toNumber(metaRecord.totalItems),
24
- hasNext: toBoolean(metaRecord.hasNext),
25
- hasPrevious: toBoolean(metaRecord.hasPrevious),
26
- totalPages: toNumber(metaRecord.totalPages)
27
- };
28
- }
29
- function resolveHasNext(meta, limit) {
30
- if (typeof meta?.hasNext === "boolean") {
31
- return meta.hasNext;
32
- }
33
- if (typeof meta?.total === "number" && typeof meta?.page === "number" && typeof limit === "number") {
34
- return meta.page * limit < meta.total;
35
- }
36
- if (typeof meta?.totalPages === "number" && typeof meta?.page === "number") {
37
- return meta.page < meta.totalPages;
38
- }
39
- return false;
40
- }
41
- function resolveHasPrevious(meta) {
42
- if (typeof meta?.hasPrevious === "boolean") {
43
- return meta.hasPrevious;
44
- }
45
- if (typeof meta?.page === "number") {
46
- return meta.page > 1;
47
- }
48
- return false;
49
- }
50
- function attachPaginator(response, fetchPage, options) {
51
- const baseOptions = options ?? {};
52
- const meta = normalizeMeta(response.meta);
53
- const currentPage = typeof meta?.page === "number" ? meta.page : typeof baseOptions.page === "number" ? baseOptions.page : 1;
54
- const currentLimit = typeof meta?.limit === "number" ? meta.limit : typeof baseOptions.limit === "number" ? baseOptions.limit : void 0;
55
- const getNextResponse = async (page, overrides) => {
56
- const nextOptions = cloneOptions(baseOptions, {
57
- ...overrides,
58
- page
59
- });
60
- const nextResponse = await fetchPage(nextOptions);
61
- return attachPaginator(nextResponse, fetchPage, nextOptions);
62
- };
63
- return Object.assign(response, {
64
- async next() {
65
- if (!resolveHasNext(meta, currentLimit)) {
66
- return null;
67
- }
68
- return getNextResponse(currentPage + 1);
69
- },
70
- async prev() {
71
- if (!resolveHasPrevious(meta)) {
72
- return null;
73
- }
74
- return getNextResponse(Math.max(1, currentPage - 1));
75
- },
76
- async page(pageNumber) {
77
- if (typeof pageNumber !== "number" || Number.isNaN(pageNumber)) {
78
- throw new TypeError("page(pageNumber) requires a numeric value.");
79
- }
80
- if (pageNumber < 1) {
81
- throw new RangeError(
82
- "Page numbers must be greater than or equal to 1."
83
- );
84
- }
85
- return getNextResponse(pageNumber);
86
- },
87
- async reload() {
88
- return getNextResponse(currentPage);
89
- }
90
- });
91
- }
92
-
93
1
  // src/errors.ts
94
2
  var HttpError = class extends Error {
95
3
  constructor(status, statusText, body, url) {
@@ -193,8 +101,10 @@ function createHttp(cfg) {
193
101
  const retry = cfg.retry;
194
102
  const WORKSPACE_HEADER = "x-workspace-id";
195
103
  const API_KEY_HEADER = "x-api-key";
104
+ const AUTHORIZATION_HEADER = "authorization";
196
105
  const resolveWorkspaceId = () => cfg.getWorkspaceId?.() ?? cfg.workspaceId ?? void 0;
197
106
  const resolveApiKey = () => cfg.getApiKey?.() ?? cfg.apiKey ?? void 0;
107
+ const resolveAccessToken = () => cfg.getAccessToken?.() ?? cfg.accessToken ?? void 0;
198
108
  const normalizeHeaders = (headers) => {
199
109
  if (!headers) {
200
110
  return {};
@@ -220,10 +130,15 @@ function createHttp(cfg) {
220
130
  const headersWithWorkspace = workspaceId ? { [WORKSPACE_HEADER]: workspaceId } : {};
221
131
  const apiKey = resolveApiKey();
222
132
  const headersWithApiKey = apiKey ? { [API_KEY_HEADER]: apiKey } : {};
133
+ const accessToken = resolveAccessToken();
134
+ const headersWithAuthorization = accessToken ? {
135
+ [AUTHORIZATION_HEADER]: accessToken.startsWith("Bearer ") ? accessToken : `Bearer ${accessToken}`
136
+ } : {};
223
137
  return {
224
138
  ...baseHeaders,
225
139
  ...headersWithWorkspace,
226
140
  ...headersWithApiKey,
141
+ ...headersWithAuthorization,
227
142
  ...normalizedExtra
228
143
  };
229
144
  };
@@ -265,7 +180,8 @@ function createHttp(cfg) {
265
180
  doFetch,
266
181
  buildHeaders,
267
182
  resolveWorkspaceId,
268
- resolveApiKey
183
+ resolveApiKey,
184
+ resolveAccessToken
269
185
  };
270
186
  }
271
187
 
@@ -380,6 +296,149 @@ function getQueryBuilderString(value) {
380
296
  return String(result);
381
297
  }
382
298
 
299
+ // src/api/agent-blueprints.ts
300
+ function createAgentBlueprintsApi(cfg) {
301
+ const { base, doFetch } = createHttp(cfg);
302
+ const jsonHeaders = { "content-type": "application/json" };
303
+ const list = async (agentId, options = {}) => {
304
+ const query = serializeListOptions({ filter: options.filter });
305
+ const res = await doFetch(`${base}/v1/agents/${agentId}/blueprints`, {
306
+ method: "GET",
307
+ query
308
+ });
309
+ return res.json();
310
+ };
311
+ const get = async (agentId, versionId) => {
312
+ const res = await doFetch(
313
+ `${base}/v1/agents/${agentId}/versions/${versionId}/blueprint`,
314
+ {
315
+ method: "GET"
316
+ }
317
+ );
318
+ return res.json();
319
+ };
320
+ const create = async (agentId, versionId, payload) => {
321
+ const res = await doFetch(
322
+ `${base}/v1/agents/${agentId}/versions/${versionId}/blueprint`,
323
+ {
324
+ method: "POST",
325
+ body: JSON.stringify(payload),
326
+ headers: jsonHeaders
327
+ }
328
+ );
329
+ return res.json();
330
+ };
331
+ const update = async (agentId, versionId, payload) => {
332
+ const res = await doFetch(
333
+ `${base}/v1/agents/${agentId}/versions/${versionId}/blueprint`,
334
+ {
335
+ method: "PATCH",
336
+ body: JSON.stringify(payload),
337
+ headers: jsonHeaders
338
+ }
339
+ );
340
+ return res.json();
341
+ };
342
+ return {
343
+ list,
344
+ get,
345
+ create,
346
+ update
347
+ };
348
+ }
349
+
350
+ // src/utils/pagination.ts
351
+ var toNumber = (value) => {
352
+ return typeof value === "number" ? value : void 0;
353
+ };
354
+ var toBoolean = (value) => {
355
+ return typeof value === "boolean" ? value : void 0;
356
+ };
357
+ function cloneOptions(options, overrides) {
358
+ return {
359
+ ...options ?? {},
360
+ ...overrides ?? {}
361
+ };
362
+ }
363
+ function normalizeMeta(meta) {
364
+ if (!meta) {
365
+ return void 0;
366
+ }
367
+ const metaRecord = meta;
368
+ return {
369
+ ...metaRecord,
370
+ page: toNumber(metaRecord.page),
371
+ limit: toNumber(metaRecord.limit) ?? toNumber(metaRecord.pageSize),
372
+ total: toNumber(metaRecord.total) ?? toNumber(metaRecord.totalItems),
373
+ hasNext: toBoolean(metaRecord.hasNext),
374
+ hasPrevious: toBoolean(metaRecord.hasPrevious),
375
+ totalPages: toNumber(metaRecord.totalPages)
376
+ };
377
+ }
378
+ function resolveHasNext(meta, limit) {
379
+ if (typeof meta?.hasNext === "boolean") {
380
+ return meta.hasNext;
381
+ }
382
+ if (typeof meta?.total === "number" && typeof meta?.page === "number" && typeof limit === "number") {
383
+ return meta.page * limit < meta.total;
384
+ }
385
+ if (typeof meta?.totalPages === "number" && typeof meta?.page === "number") {
386
+ return meta.page < meta.totalPages;
387
+ }
388
+ return false;
389
+ }
390
+ function resolveHasPrevious(meta) {
391
+ if (typeof meta?.hasPrevious === "boolean") {
392
+ return meta.hasPrevious;
393
+ }
394
+ if (typeof meta?.page === "number") {
395
+ return meta.page > 1;
396
+ }
397
+ return false;
398
+ }
399
+ function attachPaginator(response, fetchPage, options) {
400
+ const baseOptions = options ?? {};
401
+ const meta = normalizeMeta(response.meta);
402
+ const currentPage = typeof meta?.page === "number" ? meta.page : typeof baseOptions.page === "number" ? baseOptions.page : 1;
403
+ const currentLimit = typeof meta?.limit === "number" ? meta.limit : typeof baseOptions.limit === "number" ? baseOptions.limit : void 0;
404
+ const getNextResponse = async (page, overrides) => {
405
+ const nextOptions = cloneOptions(baseOptions, {
406
+ ...overrides,
407
+ page
408
+ });
409
+ const nextResponse = await fetchPage(nextOptions);
410
+ return attachPaginator(nextResponse, fetchPage, nextOptions);
411
+ };
412
+ return Object.assign(response, {
413
+ async next() {
414
+ if (!resolveHasNext(meta, currentLimit)) {
415
+ return null;
416
+ }
417
+ return getNextResponse(currentPage + 1);
418
+ },
419
+ async prev() {
420
+ if (!resolveHasPrevious(meta)) {
421
+ return null;
422
+ }
423
+ return getNextResponse(Math.max(1, currentPage - 1));
424
+ },
425
+ async page(pageNumber) {
426
+ if (typeof pageNumber !== "number" || Number.isNaN(pageNumber)) {
427
+ throw new TypeError("page(pageNumber) requires a numeric value.");
428
+ }
429
+ if (pageNumber < 1) {
430
+ throw new RangeError(
431
+ "Page numbers must be greater than or equal to 1."
432
+ );
433
+ }
434
+ return getNextResponse(pageNumber);
435
+ },
436
+ async reload() {
437
+ return getNextResponse(currentPage);
438
+ }
439
+ });
440
+ }
441
+
383
442
  // src/api/agent-instructions.ts
384
443
  function createAgentInstructionsApi(cfg) {
385
444
  const { base, doFetch } = createHttp(cfg);
@@ -670,6 +729,24 @@ var bindAgentVersions = (api, agentId) => ({
670
729
  };
671
730
  }
672
731
  });
732
+ var bindAgentBlueprints = (api, agentId) => ({
733
+ list(opts) {
734
+ return api.list(agentId, opts);
735
+ },
736
+ version(versionId) {
737
+ return {
738
+ get() {
739
+ return api.get(agentId, versionId);
740
+ },
741
+ create(payload) {
742
+ return api.create(agentId, versionId, payload);
743
+ },
744
+ update(payload) {
745
+ return api.update(agentId, versionId, payload);
746
+ }
747
+ };
748
+ }
749
+ });
673
750
  var createAgentEntity = (dto, options) => {
674
751
  const {
675
752
  instructionsApi,
@@ -677,6 +754,7 @@ var createAgentEntity = (dto, options) => {
677
754
  phonesApi,
678
755
  scheduleApi,
679
756
  versionsApi,
757
+ blueprintsApi,
680
758
  reload,
681
759
  updateAgent,
682
760
  deleteAgent
@@ -688,6 +766,7 @@ var createAgentEntity = (dto, options) => {
688
766
  phones: bindAgentPhones(phonesApi, dto.agentId),
689
767
  schedule: bindAgentSchedule(scheduleApi, dto.agentId),
690
768
  versions: bindAgentVersions(versionsApi, dto.agentId),
769
+ blueprints: bindAgentBlueprints(blueprintsApi, dto.agentId),
691
770
  async save(patch) {
692
771
  return updateAgent(dto.agentId, patch);
693
772
  },
@@ -770,6 +849,7 @@ function createAgentsApi(cfg, relatedApis) {
770
849
  phonesApi: relatedApis.phonesApi,
771
850
  scheduleApi: relatedApis.scheduleApi,
772
851
  versionsApi: relatedApis.versionsApi,
852
+ blueprintsApi: relatedApis.blueprintsApi,
773
853
  reload: async (agentId) => {
774
854
  const latest = await getAgentDetail(agentId);
775
855
  return wrapAgent(latest);
@@ -812,6 +892,37 @@ function createAgentsApi(cfg, relatedApis) {
812
892
  };
813
893
  }
814
894
 
895
+ // src/api/api-keys.ts
896
+ function createApiKeysApi(cfg) {
897
+ const { base, doFetch } = createHttp(cfg);
898
+ const jsonHeaders = { "content-type": "application/json" };
899
+ return {
900
+ async list() {
901
+ const res = await doFetch(`${base}/v1/api-keys`, { method: "GET" });
902
+ return res.json();
903
+ },
904
+ async create(payload) {
905
+ const res = await doFetch(`${base}/v1/api-keys`, {
906
+ method: "POST",
907
+ headers: jsonHeaders,
908
+ body: JSON.stringify(payload)
909
+ });
910
+ return res.json();
911
+ },
912
+ async revoke(apiKeyId) {
913
+ await doFetch(`${base}/v1/api-keys/${apiKeyId}`, {
914
+ method: "DELETE"
915
+ });
916
+ },
917
+ async show(apiKeyId) {
918
+ const res = await doFetch(`${base}/v1/api-keys/${apiKeyId}/show`, {
919
+ method: "GET"
920
+ });
921
+ return res.json();
922
+ }
923
+ };
924
+ }
925
+
815
926
  // src/api/tools.ts
816
927
  var isFormData = (value) => {
817
928
  return typeof FormData !== "undefined" && value instanceof FormData;
@@ -1004,6 +1115,7 @@ function createClient(initialCfg) {
1004
1115
  };
1005
1116
  const resolveWorkspaceId = () => runtimeCfg.workspaceId ?? runtimeCfg.getWorkspaceId?.();
1006
1117
  const resolveApiKey = () => runtimeCfg.apiKey ?? runtimeCfg.getApiKey?.();
1118
+ const resolveAccessToken = () => runtimeCfg.accessToken ?? runtimeCfg.getAccessToken?.();
1007
1119
  const setWorkspaceId = (workspaceId) => {
1008
1120
  runtimeCfg.workspaceId = workspaceId;
1009
1121
  };
@@ -1016,18 +1128,27 @@ function createClient(initialCfg) {
1016
1128
  const setApiKeyGetter = (getter) => {
1017
1129
  runtimeCfg.getApiKey = getter;
1018
1130
  };
1131
+ const setAccessToken = (token) => {
1132
+ runtimeCfg.accessToken = token;
1133
+ };
1134
+ const setAccessTokenGetter = (getter) => {
1135
+ runtimeCfg.getAccessToken = getter;
1136
+ };
1019
1137
  const instructionsApi = createAgentInstructionsApi(runtimeCfg);
1020
1138
  const tagsApi = createAgentTagsApi(runtimeCfg);
1021
1139
  const phonesApi = createAgentPhonesApi(runtimeCfg);
1022
1140
  const scheduleApi = createAgentScheduleApi(runtimeCfg);
1023
1141
  const versionsApi = createAgentVersionsApi(runtimeCfg);
1142
+ const blueprintsApi = createAgentBlueprintsApi(runtimeCfg);
1024
1143
  const voicesApi = createVoicesApi(runtimeCfg);
1144
+ const apiKeysApi = createApiKeysApi(runtimeCfg);
1025
1145
  const agentsApi = createAgentsApi(runtimeCfg, {
1026
1146
  instructionsApi,
1027
1147
  tagsApi,
1028
1148
  phonesApi,
1029
1149
  scheduleApi,
1030
- versionsApi
1150
+ versionsApi,
1151
+ blueprintsApi
1031
1152
  });
1032
1153
  const instructionsNamespace = Object.assign(
1033
1154
  (agentId) => bindAgentInstructions(instructionsApi, agentId),
@@ -1049,6 +1170,10 @@ function createClient(initialCfg) {
1049
1170
  (agentId) => bindAgentVersions(versionsApi, agentId),
1050
1171
  versionsApi
1051
1172
  );
1173
+ const blueprintsNamespace = Object.assign(
1174
+ (agentId) => bindAgentBlueprints(blueprintsApi, agentId),
1175
+ blueprintsApi
1176
+ );
1052
1177
  const apis = {
1053
1178
  agents: {
1054
1179
  ...agentsApi,
@@ -1056,11 +1181,13 @@ function createClient(initialCfg) {
1056
1181
  tags: tagsNamespace,
1057
1182
  phones: phonesNamespace,
1058
1183
  schedule: scheduleNamespace,
1059
- versions: versionsNamespace
1184
+ versions: versionsNamespace,
1185
+ blueprints: blueprintsNamespace
1060
1186
  },
1061
1187
  workspaces: createWorkspacesApi(runtimeCfg),
1062
1188
  tools: createToolsApi(runtimeCfg),
1063
- voices: voicesApi
1189
+ voices: voicesApi,
1190
+ apiKeys: apiKeysApi
1064
1191
  };
1065
1192
  return {
1066
1193
  ...apis,
@@ -1076,6 +1203,18 @@ function createClient(initialCfg) {
1076
1203
  clearApiKey() {
1077
1204
  setApiKeyGetter(void 0);
1078
1205
  setApiKey(void 0);
1206
+ },
1207
+ getAccessToken: resolveAccessToken,
1208
+ setAccessToken(token) {
1209
+ setAccessTokenGetter(void 0);
1210
+ setAccessToken(token);
1211
+ },
1212
+ useAccessToken(getter) {
1213
+ setAccessTokenGetter(getter);
1214
+ },
1215
+ clearAccessToken() {
1216
+ setAccessTokenGetter(void 0);
1217
+ setAccessToken(void 0);
1079
1218
  }
1080
1219
  },
1081
1220
  workspace: {
@@ -1097,7 +1236,9 @@ function createClient(initialCfg) {
1097
1236
  workspaceId: id,
1098
1237
  getWorkspaceId: void 0,
1099
1238
  apiKey: runtimeCfg.apiKey,
1100
- getApiKey: runtimeCfg.getApiKey
1239
+ getApiKey: runtimeCfg.getApiKey,
1240
+ accessToken: runtimeCfg.accessToken,
1241
+ getAccessToken: runtimeCfg.getAccessToken
1101
1242
  });
1102
1243
  }
1103
1244
  }
@@ -1107,11 +1248,13 @@ export {
1107
1248
  HttpError,
1108
1249
  NetworkError,
1109
1250
  TimeoutError,
1251
+ bindAgentBlueprints,
1110
1252
  bindAgentInstructions,
1111
1253
  bindAgentPhones,
1112
1254
  bindAgentSchedule,
1113
1255
  bindAgentTags,
1114
1256
  bindAgentVersions,
1257
+ createAgentBlueprintsApi,
1115
1258
  createAgentEntity,
1116
1259
  createAgentInstructionsApi,
1117
1260
  createAgentPhonesApi,
@@ -1119,6 +1262,7 @@ export {
1119
1262
  createAgentTagsApi,
1120
1263
  createAgentVersionsApi,
1121
1264
  createAgentsApi,
1265
+ createApiKeysApi,
1122
1266
  createClient,
1123
1267
  createHttp,
1124
1268
  createToolsApi,