@elqnt/admin 2.3.0 → 2.3.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.
- package/README.md +24 -14
- package/SKILL.md +570 -0
- package/dist/{analytics-CZ0LmSlf.d.cts → admin-C1iVQe2d.d.cts} +6 -168
- package/dist/{analytics-CZ0LmSlf.d.ts → admin-C1iVQe2d.d.ts} +6 -168
- package/dist/api/index.cjs +29 -125
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.cts +4 -50
- package/dist/api/index.d.ts +4 -50
- package/dist/api/index.js +28 -115
- package/dist/api/index.js.map +1 -1
- package/dist/hooks/index.cjs +85 -419
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +66 -129
- package/dist/hooks/index.d.ts +66 -129
- package/dist/hooks/index.js +85 -415
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.cjs +32 -125
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +30 -115
- package/dist/index.js.map +1 -1
- package/dist/models/index.cjs +3 -0
- package/dist/models/index.cjs.map +1 -1
- package/dist/models/index.d.cts +2 -2
- package/dist/models/index.d.ts +2 -2
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -1
- package/dist/{orgs-BOVRgr8L.d.ts → orgs-BSHeYVe-.d.ts} +1 -1
- package/dist/{orgs-IvppiqI8.d.cts → orgs-Buu2Re0N.d.cts} +1 -1
- package/package.json +5 -4
package/dist/api/index.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var api_exports = {};
|
|
|
22
22
|
__export(api_exports, {
|
|
23
23
|
acceptInviteApi: () => acceptInviteApi,
|
|
24
24
|
cancelSubscriptionApi: () => cancelSubscriptionApi,
|
|
25
|
-
clearGatewayTokenCache: () =>
|
|
25
|
+
clearGatewayTokenCache: () => import_browser4.clearGatewayTokenCache,
|
|
26
26
|
completeOnboardingApi: () => completeOnboardingApi,
|
|
27
27
|
createAgentWithSkillsApi: () => createAgentWithSkillsApi,
|
|
28
28
|
createCheckoutSessionApi: () => createCheckoutSessionApi,
|
|
@@ -36,22 +36,14 @@ __export(api_exports, {
|
|
|
36
36
|
createUserApi: () => createUserApi,
|
|
37
37
|
deleteOrgApi: () => deleteOrgApi,
|
|
38
38
|
deleteUserApi: () => deleteUserApi,
|
|
39
|
-
getAgentsAnalyticsApi: () => getAgentsAnalyticsApi,
|
|
40
|
-
getAnalyticsEventsApi: () => getAnalyticsEventsApi,
|
|
41
|
-
getAnalyticsSummaryApi: () => getAnalyticsSummaryApi,
|
|
42
39
|
getBillingPlansApi: () => getBillingPlansApi,
|
|
43
|
-
getChatsAnalyticsApi: () => getChatsAnalyticsApi,
|
|
44
40
|
getCreditsApi: () => getCreditsApi,
|
|
45
|
-
getDailyAnalyticsApi: () => getDailyAnalyticsApi,
|
|
46
|
-
getGlobalOrgsAnalyticsApi: () => getGlobalOrgsAnalyticsApi,
|
|
47
|
-
getGlobalSummaryApi: () => getGlobalSummaryApi,
|
|
48
41
|
getInviteApi: () => getInviteApi,
|
|
49
42
|
getOnboardingStatusApi: () => getOnboardingStatusApi,
|
|
50
43
|
getOrgApi: () => getOrgApi,
|
|
51
44
|
getOrgInfoApi: () => getOrgInfoApi,
|
|
52
45
|
getOrgSettingsApi: () => getOrgSettingsApi,
|
|
53
46
|
getSubscriptionApi: () => getSubscriptionApi,
|
|
54
|
-
getUsageAnalyticsApi: () => getUsageAnalyticsApi,
|
|
55
47
|
getUserApi: () => getUserApi,
|
|
56
48
|
getUserByEmailApi: () => getUserByEmailApi,
|
|
57
49
|
getUserByPhoneApi: () => getUserByPhoneApi,
|
|
@@ -59,7 +51,6 @@ __export(api_exports, {
|
|
|
59
51
|
listInvitesApi: () => listInvitesApi,
|
|
60
52
|
listOrgsApi: () => listOrgsApi,
|
|
61
53
|
listUsersApi: () => listUsersApi,
|
|
62
|
-
logAnalyticsEventApi: () => logAnalyticsEventApi,
|
|
63
54
|
provisionAllOnboardingApi: () => provisionAllOnboardingApi,
|
|
64
55
|
provisionDefaultAgentsApi: () => provisionDefaultAgentsApi,
|
|
65
56
|
provisionEntitiesApi: () => provisionEntitiesApi,
|
|
@@ -82,7 +73,7 @@ __export(api_exports, {
|
|
|
82
73
|
updateWorkflowDefinitionsApi: () => updateWorkflowDefinitionsApi
|
|
83
74
|
});
|
|
84
75
|
module.exports = __toCommonJS(api_exports);
|
|
85
|
-
var
|
|
76
|
+
var import_browser4 = require("@elqnt/api-client/browser");
|
|
86
77
|
|
|
87
78
|
// api/orgs.ts
|
|
88
79
|
var import_browser = require("@elqnt/api-client/browser");
|
|
@@ -238,94 +229,16 @@ async function acceptInviteApi(inviteId, options) {
|
|
|
238
229
|
});
|
|
239
230
|
}
|
|
240
231
|
|
|
241
|
-
// api/analytics.ts
|
|
242
|
-
var import_browser4 = require("@elqnt/api-client/browser");
|
|
243
|
-
function buildDateFilterParams(filter) {
|
|
244
|
-
if (!filter) return "";
|
|
245
|
-
const params = new URLSearchParams();
|
|
246
|
-
if (filter.from) params.set("from", filter.from);
|
|
247
|
-
if (filter.to) params.set("to", filter.to);
|
|
248
|
-
const queryString = params.toString();
|
|
249
|
-
return queryString ? `?${queryString}` : "";
|
|
250
|
-
}
|
|
251
|
-
async function getAnalyticsSummaryApi(filter, options) {
|
|
252
|
-
const queryString = buildDateFilterParams(filter);
|
|
253
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/summary${queryString}`, {
|
|
254
|
-
method: "GET",
|
|
255
|
-
...options
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
async function getChatsAnalyticsApi(filter, agentId, options) {
|
|
259
|
-
const params = new URLSearchParams();
|
|
260
|
-
if (filter?.from) params.set("from", filter.from);
|
|
261
|
-
if (filter?.to) params.set("to", filter.to);
|
|
262
|
-
if (agentId) params.set("agent_id", agentId);
|
|
263
|
-
const queryString = params.toString();
|
|
264
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/chats${queryString ? `?${queryString}` : ""}`, {
|
|
265
|
-
method: "GET",
|
|
266
|
-
...options
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
async function getAgentsAnalyticsApi(filter, options) {
|
|
270
|
-
const queryString = buildDateFilterParams(filter);
|
|
271
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/agents${queryString}`, {
|
|
272
|
-
method: "GET",
|
|
273
|
-
...options
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
async function getUsageAnalyticsApi(filter, options) {
|
|
277
|
-
const queryString = buildDateFilterParams(filter);
|
|
278
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/usage${queryString}`, {
|
|
279
|
-
method: "GET",
|
|
280
|
-
...options
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
async function getDailyAnalyticsApi(filter, options) {
|
|
284
|
-
const queryString = buildDateFilterParams(filter);
|
|
285
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/daily${queryString}`, {
|
|
286
|
-
method: "GET",
|
|
287
|
-
...options
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
async function getAnalyticsEventsApi(filter, options) {
|
|
291
|
-
const queryString = buildDateFilterParams(filter);
|
|
292
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/events${queryString}`, {
|
|
293
|
-
method: "GET",
|
|
294
|
-
...options
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
async function logAnalyticsEventApi(event, options) {
|
|
298
|
-
return (0, import_browser4.browserApiRequest)("/api/v1/analytics/events", {
|
|
299
|
-
method: "POST",
|
|
300
|
-
body: event,
|
|
301
|
-
...options
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
async function getGlobalSummaryApi(filter, options) {
|
|
305
|
-
const queryString = buildDateFilterParams(filter);
|
|
306
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/global/summary${queryString}`, {
|
|
307
|
-
method: "GET",
|
|
308
|
-
...options
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
async function getGlobalOrgsAnalyticsApi(filter, options) {
|
|
312
|
-
const queryString = buildDateFilterParams(filter);
|
|
313
|
-
return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/global/orgs${queryString}`, {
|
|
314
|
-
method: "GET",
|
|
315
|
-
...options
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
|
|
319
232
|
// api/index.ts
|
|
320
233
|
async function getOnboardingStatusApi(options) {
|
|
321
|
-
return (0,
|
|
234
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/status", {
|
|
322
235
|
method: "GET",
|
|
323
236
|
...options,
|
|
324
237
|
orgId: options.orgId || ""
|
|
325
238
|
});
|
|
326
239
|
}
|
|
327
240
|
async function startOnboardingApi(options) {
|
|
328
|
-
return (0,
|
|
241
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/start", {
|
|
329
242
|
method: "POST",
|
|
330
243
|
body: {},
|
|
331
244
|
...options,
|
|
@@ -333,7 +246,7 @@ async function startOnboardingApi(options) {
|
|
|
333
246
|
});
|
|
334
247
|
}
|
|
335
248
|
async function createPaymentSessionApi(params, options) {
|
|
336
|
-
return (0,
|
|
249
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/payment", {
|
|
337
250
|
method: "POST",
|
|
338
251
|
body: params,
|
|
339
252
|
...options,
|
|
@@ -341,7 +254,7 @@ async function createPaymentSessionApi(params, options) {
|
|
|
341
254
|
});
|
|
342
255
|
}
|
|
343
256
|
async function createOrganizationApi(org, options) {
|
|
344
|
-
return (0,
|
|
257
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/organization", {
|
|
345
258
|
method: "POST",
|
|
346
259
|
body: org,
|
|
347
260
|
...options,
|
|
@@ -349,7 +262,7 @@ async function createOrganizationApi(org, options) {
|
|
|
349
262
|
});
|
|
350
263
|
}
|
|
351
264
|
async function sendOnboardingInvitesApi(invites, options) {
|
|
352
|
-
return (0,
|
|
265
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/invites", {
|
|
353
266
|
method: "POST",
|
|
354
267
|
body: { invites },
|
|
355
268
|
...options,
|
|
@@ -357,7 +270,7 @@ async function sendOnboardingInvitesApi(invites, options) {
|
|
|
357
270
|
});
|
|
358
271
|
}
|
|
359
272
|
async function createOnboardingKnowledgeApi(knowledge, options) {
|
|
360
|
-
return (0,
|
|
273
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/knowledge", {
|
|
361
274
|
method: "POST",
|
|
362
275
|
body: knowledge,
|
|
363
276
|
...options,
|
|
@@ -365,7 +278,7 @@ async function createOnboardingKnowledgeApi(knowledge, options) {
|
|
|
365
278
|
});
|
|
366
279
|
}
|
|
367
280
|
async function createOnboardingAgentApi(agent, options) {
|
|
368
|
-
return (0,
|
|
281
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/agent", {
|
|
369
282
|
method: "POST",
|
|
370
283
|
body: agent,
|
|
371
284
|
...options,
|
|
@@ -373,7 +286,7 @@ async function createOnboardingAgentApi(agent, options) {
|
|
|
373
286
|
});
|
|
374
287
|
}
|
|
375
288
|
async function createAgentWithSkillsApi(payload, options) {
|
|
376
|
-
return (0,
|
|
289
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/agent-with-skills", {
|
|
377
290
|
method: "POST",
|
|
378
291
|
body: payload,
|
|
379
292
|
...options,
|
|
@@ -381,7 +294,7 @@ async function createAgentWithSkillsApi(payload, options) {
|
|
|
381
294
|
});
|
|
382
295
|
}
|
|
383
296
|
async function completeOnboardingApi(options) {
|
|
384
|
-
return (0,
|
|
297
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/complete", {
|
|
385
298
|
method: "POST",
|
|
386
299
|
body: {},
|
|
387
300
|
...options,
|
|
@@ -389,7 +302,7 @@ async function completeOnboardingApi(options) {
|
|
|
389
302
|
});
|
|
390
303
|
}
|
|
391
304
|
async function skipOnboardingStepApi(step, options) {
|
|
392
|
-
return (0,
|
|
305
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/skip-step", {
|
|
393
306
|
method: "POST",
|
|
394
307
|
body: { step },
|
|
395
308
|
...options,
|
|
@@ -397,7 +310,7 @@ async function skipOnboardingStepApi(step, options) {
|
|
|
397
310
|
});
|
|
398
311
|
}
|
|
399
312
|
async function startOnboardingProvisioningApi(options) {
|
|
400
|
-
return (0,
|
|
313
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/provisioning/start", {
|
|
401
314
|
method: "POST",
|
|
402
315
|
body: {},
|
|
403
316
|
...options,
|
|
@@ -405,7 +318,7 @@ async function startOnboardingProvisioningApi(options) {
|
|
|
405
318
|
});
|
|
406
319
|
}
|
|
407
320
|
async function provisionAllOnboardingApi(request, options) {
|
|
408
|
-
return (0,
|
|
321
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/provision-all", {
|
|
409
322
|
method: "POST",
|
|
410
323
|
body: request,
|
|
411
324
|
...options,
|
|
@@ -440,7 +353,7 @@ function settingsToOrgRow(settings) {
|
|
|
440
353
|
}
|
|
441
354
|
async function getOrgSettingsApi(options) {
|
|
442
355
|
const orgId = options.orgId ?? "";
|
|
443
|
-
const response = await (0,
|
|
356
|
+
const response = await (0, import_browser4.browserApiRequest)(
|
|
444
357
|
`/api/v1/admin/orgs/${orgId}`,
|
|
445
358
|
{ method: "GET", ...options }
|
|
446
359
|
);
|
|
@@ -460,7 +373,7 @@ async function createOrgSettingsApi(settings, options) {
|
|
|
460
373
|
}
|
|
461
374
|
async function updateOrgSettingsApi(settings, options) {
|
|
462
375
|
const orgId = options.orgId ?? "";
|
|
463
|
-
const response = await (0,
|
|
376
|
+
const response = await (0, import_browser4.browserApiRequest)(
|
|
464
377
|
`/api/v1/admin/orgs/${orgId}`,
|
|
465
378
|
{
|
|
466
379
|
method: "PUT",
|
|
@@ -474,88 +387,88 @@ async function updateOrgSettingsApi(settings, options) {
|
|
|
474
387
|
return getOrgSettingsApi(options);
|
|
475
388
|
}
|
|
476
389
|
async function updateOrgAgentsApi(agentIds, options) {
|
|
477
|
-
return (0,
|
|
390
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/org/agents", {
|
|
478
391
|
method: "PUT",
|
|
479
392
|
body: { agentIds },
|
|
480
393
|
...options
|
|
481
394
|
});
|
|
482
395
|
}
|
|
483
396
|
async function updateEntityDefinitionsApi(entityNames, options) {
|
|
484
|
-
return (0,
|
|
397
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/org/entities", {
|
|
485
398
|
method: "PUT",
|
|
486
399
|
body: { entityNames },
|
|
487
400
|
...options
|
|
488
401
|
});
|
|
489
402
|
}
|
|
490
403
|
async function updateWorkflowDefinitionsApi(workflowIds, options) {
|
|
491
|
-
return (0,
|
|
404
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/org/workflows", {
|
|
492
405
|
method: "PUT",
|
|
493
406
|
body: { workflowIds },
|
|
494
407
|
...options
|
|
495
408
|
});
|
|
496
409
|
}
|
|
497
410
|
async function getBillingPlansApi(options) {
|
|
498
|
-
return (0,
|
|
411
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/plans", {
|
|
499
412
|
method: "GET",
|
|
500
413
|
...options
|
|
501
414
|
});
|
|
502
415
|
}
|
|
503
416
|
async function getSubscriptionApi(options) {
|
|
504
|
-
return (0,
|
|
417
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/subscription", {
|
|
505
418
|
method: "GET",
|
|
506
419
|
...options
|
|
507
420
|
});
|
|
508
421
|
}
|
|
509
422
|
async function getCreditsApi(options) {
|
|
510
|
-
return (0,
|
|
423
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/credits", {
|
|
511
424
|
method: "GET",
|
|
512
425
|
...options
|
|
513
426
|
});
|
|
514
427
|
}
|
|
515
428
|
async function createCheckoutSessionApi(params, options) {
|
|
516
|
-
return (0,
|
|
429
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/checkout", {
|
|
517
430
|
method: "POST",
|
|
518
431
|
body: params,
|
|
519
432
|
...options
|
|
520
433
|
});
|
|
521
434
|
}
|
|
522
435
|
async function createPortalSessionApi(params, options) {
|
|
523
|
-
return (0,
|
|
436
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/portal", {
|
|
524
437
|
method: "POST",
|
|
525
438
|
body: params,
|
|
526
439
|
...options
|
|
527
440
|
});
|
|
528
441
|
}
|
|
529
442
|
async function cancelSubscriptionApi(options) {
|
|
530
|
-
return (0,
|
|
443
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/subscription/cancel", {
|
|
531
444
|
method: "POST",
|
|
532
445
|
body: {},
|
|
533
446
|
...options
|
|
534
447
|
});
|
|
535
448
|
}
|
|
536
449
|
async function purchaseCreditsApi(params, options) {
|
|
537
|
-
return (0,
|
|
450
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/billing/credits/purchase", {
|
|
538
451
|
method: "POST",
|
|
539
452
|
body: params,
|
|
540
453
|
...options
|
|
541
454
|
});
|
|
542
455
|
}
|
|
543
456
|
async function provisionDefaultAgentsApi(definitions, options) {
|
|
544
|
-
return (0,
|
|
457
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/admin/provision/agents", {
|
|
545
458
|
method: "POST",
|
|
546
459
|
body: { definitions },
|
|
547
460
|
...options
|
|
548
461
|
});
|
|
549
462
|
}
|
|
550
463
|
async function provisionEntitiesApi(definitions, options) {
|
|
551
|
-
return (0,
|
|
464
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/admin/entities/update", {
|
|
552
465
|
method: "POST",
|
|
553
466
|
body: { definitions },
|
|
554
467
|
...options
|
|
555
468
|
});
|
|
556
469
|
}
|
|
557
470
|
async function provisionWorkflowsApi(definitions, options) {
|
|
558
|
-
return (0,
|
|
471
|
+
return (0, import_browser4.browserApiRequest)("/api/v1/admin/provision/workflows", {
|
|
559
472
|
method: "POST",
|
|
560
473
|
body: { definitions },
|
|
561
474
|
...options
|
|
@@ -579,22 +492,14 @@ async function provisionWorkflowsApi(definitions, options) {
|
|
|
579
492
|
createUserApi,
|
|
580
493
|
deleteOrgApi,
|
|
581
494
|
deleteUserApi,
|
|
582
|
-
getAgentsAnalyticsApi,
|
|
583
|
-
getAnalyticsEventsApi,
|
|
584
|
-
getAnalyticsSummaryApi,
|
|
585
495
|
getBillingPlansApi,
|
|
586
|
-
getChatsAnalyticsApi,
|
|
587
496
|
getCreditsApi,
|
|
588
|
-
getDailyAnalyticsApi,
|
|
589
|
-
getGlobalOrgsAnalyticsApi,
|
|
590
|
-
getGlobalSummaryApi,
|
|
591
497
|
getInviteApi,
|
|
592
498
|
getOnboardingStatusApi,
|
|
593
499
|
getOrgApi,
|
|
594
500
|
getOrgInfoApi,
|
|
595
501
|
getOrgSettingsApi,
|
|
596
502
|
getSubscriptionApi,
|
|
597
|
-
getUsageAnalyticsApi,
|
|
598
503
|
getUserApi,
|
|
599
504
|
getUserByEmailApi,
|
|
600
505
|
getUserByPhoneApi,
|
|
@@ -602,7 +507,6 @@ async function provisionWorkflowsApi(definitions, options) {
|
|
|
602
507
|
listInvitesApi,
|
|
603
508
|
listOrgsApi,
|
|
604
509
|
listUsersApi,
|
|
605
|
-
logAnalyticsEventApi,
|
|
606
510
|
provisionAllOnboardingApi,
|
|
607
511
|
provisionDefaultAgentsApi,
|
|
608
512
|
provisionEntitiesApi,
|
package/dist/api/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../api/index.ts","../../api/orgs.ts","../../api/users.ts","../../api/invites.ts","../../api/analytics.ts"],"sourcesContent":["/**\n * Admin API functions (internal)\n *\n * Low-level API functions that call browserApiRequest directly.\n * These are the building blocks for @elqnt/admin/hooks.\n *\n * **Apps should use hooks (`@elqnt/admin/hooks`) instead of these functions.**\n * Hooks provide loading/error state management on top of these API calls.\n * Only use these directly if you're building a new hook or need an operation\n * that no hook covers yet.\n */\n\nimport { browserApiRequest, clearGatewayTokenCache } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\n\n// Re-export utility function\nexport { clearGatewayTokenCache };\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n OnboardingState,\n OnboardingResponse,\n CreateOrgResponse,\n SendInvitesResponse,\n CreateKnowledgeResponse,\n CreateAgentResponse,\n CompleteOnboardingResponse,\n PaymentSessionResponse,\n OrgSettings,\n OrgSettingsResponse,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n CreateCheckoutResponse,\n PortalSessionResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n} from \"../models\";\n\n// =============================================================================\n// ONBOARDING API OPTIONS\n// =============================================================================\n\n/**\n * Onboarding API options - orgId is optional since user may not have org yet\n */\nexport interface OnboardingApiOptions {\n baseUrl: string;\n orgId?: string;\n userId?: string;\n userEmail?: string;\n headers?: Record<string, string>;\n}\n\n// =============================================================================\n// ONBOARDING API\n// =============================================================================\n\nexport async function getOnboardingStatusApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/status\", {\n method: \"GET\",\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function startOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createPaymentSessionApi(\n params: { plan: string; billingCycle: string; seats: number; successUrl: string; cancelUrl: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<PaymentSessionResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/payment\", {\n method: \"POST\",\n body: params,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOrganizationApi(\n org: { name: string; industry?: string; size?: string; stripeSessionId?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateOrgResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/organization\", {\n method: \"POST\",\n body: org,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function sendOnboardingInvitesApi(\n invites: Array<{ email: string; role?: string }>,\n options: OnboardingApiOptions\n): Promise<ApiResponse<SendInvitesResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingKnowledgeApi(\n knowledge: { name: string; description?: string; websites?: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateKnowledgeResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/knowledge\", {\n method: \"POST\",\n body: knowledge,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingAgentApi(\n agent: { name: string; description?: string; goal?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/agent\", {\n method: \"POST\",\n body: agent,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createAgentWithSkillsApi(\n payload: { agent: Record<string, unknown>; skills: Record<string, unknown>[]; enabledSkillNames: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/agent-with-skills\", {\n method: \"POST\",\n body: payload,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function completeOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<CompleteOnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/complete\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function skipOnboardingStepApi(\n step: string,\n options: OnboardingApiOptions\n): Promise<ApiResponse<{ nextStep: string; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/onboarding/skip-step\", {\n method: \"POST\",\n body: { step },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport interface StartProvisioningResponse {\n orgId: string;\n status: string;\n metadata?: ResponseMetadata;\n}\n\n/**\n * Start provisioning for an onboarding org.\n * Returns the org ID so the frontend can connect to the SSE stream for progress.\n */\nexport async function startOnboardingProvisioningApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<StartProvisioningResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provisioning/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n/**\n * Request body for unified onboarding provisioning\n */\nexport interface ProvisionAllRequest {\n plan: {\n plan: string;\n billingCycle: string;\n seats: number;\n stripeSessionId?: string;\n inviteCode?: string; // If present, this is a free trial (skipped payment)\n };\n org: {\n title: string;\n mainDomain: string;\n // (product field removed — product is implicit in the admin DB)\n industry?: string;\n size?: string;\n };\n invites?: Array<{\n email: string;\n role: string;\n }>;\n knowledge: {\n name: string;\n documents?: Array<{\n title: string;\n fileUrl: string;\n }>;\n };\n agent: {\n name: string;\n goal: string;\n personality: string;\n skills?: string[];\n };\n}\n\n/**\n * Response from unified onboarding provisioning\n */\nexport interface ProvisionAllResponse {\n orgId: string;\n userId: string;\n status: string;\n metadata: ResponseMetadata;\n}\n\n/**\n * Unified onboarding provisioning - collects all data then creates org and provisions everything.\n * This is the new flow where data is collected first, then provisioned via SSE.\n */\nexport async function provisionAllOnboardingApi(\n request: ProvisionAllRequest,\n options: OnboardingApiOptions\n): Promise<ApiResponse<ProvisionAllResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provision-all\", {\n method: \"POST\",\n body: request,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n// =============================================================================\n// ORG SETTINGS API\n// =============================================================================\n\n/**\n * Org settings live on the canonical admin Org row (since v2.3) — the old\n * /api/v1/org/settings path against integrations is gone. These helpers keep\n * the legacy `OrgSettings` wire shape so consumers (org-settings form, the\n * OrganizationProvider hydration action, etc.) don't need to change. The\n * actual fetch/PUT happens against /admin/orgs/{orgId}.\n */\n\ninterface OrgRowSlice {\n id?: string;\n title?: string;\n description?: string;\n logoUrl?: string;\n defaultLang?: string;\n timezone?: string;\n settings?: { [key: string]: any };\n}\n\nfunction orgRowToSettings(\n orgId: string,\n row: OrgRowSlice | undefined,\n): OrgSettings {\n return {\n id: row?.id ?? \"\",\n org_id: orgId,\n title: row?.title ?? \"\",\n description: row?.description ?? \"\",\n logo_url: row?.logoUrl ?? \"\",\n default_lang: row?.defaultLang ?? \"en\",\n timezone: row?.timezone ?? \"UTC\",\n additional_settings: row?.settings ?? {},\n created_at: \"\",\n updated_at: \"\",\n created_by: \"\",\n updated_by: \"\",\n };\n}\n\nfunction settingsToOrgRow(settings: Partial<OrgSettings>): Partial<OrgRowSlice> {\n return {\n title: settings.title,\n description: settings.description,\n logoUrl: settings.logo_url,\n defaultLang: settings.default_lang,\n timezone: settings.timezone,\n settings: settings.additional_settings,\n };\n}\n\nexport async function getOrgSettingsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ organization?: OrgRowSlice }>(\n `/api/v1/admin/orgs/${orgId}`,\n { method: \"GET\", ...options },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n return {\n status: response.status,\n data: {\n success: true,\n settings: orgRowToSettings(orgId, response.data?.organization),\n } as OrgSettingsResponse,\n };\n}\n\n/**\n * @deprecated Org settings rows always exist on the admin Org. Kept as an\n * alias for backward compatibility — calls updateOrgSettingsApi.\n */\nexport async function createOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse & { id?: string }>> {\n return updateOrgSettingsApi(settings, options);\n}\n\nexport async function updateOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ message?: string }>(\n `/api/v1/admin/orgs/${orgId}`,\n {\n method: \"PUT\",\n body: settingsToOrgRow(settings),\n ...options,\n },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n // Admin update returns { message: \"...\" }; round-trip a fresh GET so the\n // caller gets the full settings shape (with new updated_at, etc.).\n return getOrgSettingsApi(options);\n}\n\nexport async function updateOrgAgentsApi(\n agentIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/org/agents\", {\n method: \"PUT\",\n body: { agentIds },\n ...options,\n });\n}\n\nexport async function updateEntityDefinitionsApi(\n entityNames: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/org/entities\", {\n method: \"PUT\",\n body: { entityNames },\n ...options,\n });\n}\n\nexport async function updateWorkflowDefinitionsApi(\n workflowIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/org/workflows\", {\n method: \"PUT\",\n body: { workflowIds },\n ...options,\n });\n}\n\n// =============================================================================\n// BILLING API\n// =============================================================================\n\nexport async function getBillingPlansApi(\n options: ApiClientOptions\n): Promise<ApiResponse<PlansResponse>> {\n return browserApiRequest(\"/api/v1/billing/plans\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<SubscriptionResponse>> {\n return browserApiRequest(\"/api/v1/billing/subscription\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getCreditsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<CreditsResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function createCheckoutSessionApi(\n params: { priceId: string; seats?: number; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/checkout\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function createPortalSessionApi(\n params: { returnUrl: string },\n options: ApiClientOptions\n): Promise<ApiResponse<PortalSessionResponse>> {\n return browserApiRequest(\"/api/v1/billing/portal\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function cancelSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/billing/subscription/cancel\", {\n method: \"POST\",\n body: {},\n ...options,\n });\n}\n\nexport async function purchaseCreditsApi(\n params: { packageId: string; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits/purchase\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\n// =============================================================================\n// PROVISIONING API (DEPRECATED - use domain packages instead)\n// =============================================================================\n\n/**\n * @deprecated Use `provisionAgentsApi` from `@elqnt/agents/api` instead\n */\nexport async function provisionDefaultAgentsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/agents\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionEntitiesApi` from `@elqnt/entity/api` instead\n */\nexport async function provisionEntitiesApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/admin/entities/update\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionWorkflowsApi` from `@elqnt/workflow/api` instead (coming soon)\n */\nexport async function provisionWorkflowsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/workflows\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n// =============================================================================\n// ADMIN CRUD APIs\n// =============================================================================\n\nexport * from \"./orgs\";\nexport * from \"./users\";\nexport * from \"./invites\";\nexport * from \"./analytics\";\n// (provisioning API removed — per-org artifact provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n\n// =============================================================================\n// RE-EXPORTS\n// =============================================================================\n\nexport type {\n OnboardingState,\n OnboardingResponse,\n OrgSettings,\n OrgSettingsResponse,\n Plan,\n OrganizationBilling,\n UsageSummary,\n CreditBalance,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n // Org types\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n // User types\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n // Invite types\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n","/**\n * Organizations Admin API\n *\n * Browser-side API client for organization management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n OrgStatusTS,\n OrgTypeTS,\n} from \"../models\";\n\n// =============================================================================\n// FILTER TYPES\n// =============================================================================\n\n/**\n * Filter options for listing organizations\n *\n * `product` is routing metadata: it selects which admin_<product> DB to read\n * from (empty → eloquent). It is not a stored column on the org.\n */\nexport interface ListOrgsFilter {\n status?: OrgStatusTS;\n type?: OrgTypeTS;\n product?: string;\n}\n\n// =============================================================================\n// ORGANIZATIONS CRUD\n// =============================================================================\n\n/**\n * List all organizations (admin scope required)\n * @param filter - Optional filter criteria\n * @param options - API client options\n */\nexport async function listOrgsApi(\n filter: ListOrgsFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ListOrgsResponse>> {\n const params = new URLSearchParams();\n if (filter?.status) params.set(\"status\", filter.status);\n if (filter?.type) params.set(\"type\", filter.type);\n if (filter?.product) params.set(\"product\", filter.product);\n\n const queryString = params.toString();\n const url = queryString ? `/api/v1/admin/orgs?${queryString}` : \"/api/v1/admin/orgs\";\n\n return browserApiRequest(url, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new organization\n */\nexport async function createOrgApi(\n // `product` is transient routing metadata (which admin_<product> DB to write\n // to) sent alongside the org fields — it is not persisted on the org.\n org: Partial<Org> & { product?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(\"/api/v1/admin/orgs\", {\n method: \"POST\",\n body: org,\n ...options,\n });\n}\n\n/**\n * Get an organization by ID\n */\nexport async function getOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update an organization\n */\nexport async function updateOrgApi(\n orgId: string,\n updates: Partial<Org>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete an organization\n */\nexport async function deleteOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Get organization info (lightweight response)\n */\nexport async function getOrgInfoApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgInfoResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}/info`, {\n method: \"GET\",\n ...options,\n });\n}\n\n// (createOrgWithSchemasApi removed — per-org schema provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n","/**\n * Users Admin API\n *\n * Browser-side API client for user management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n} from \"../models\";\n\n// =============================================================================\n// USERS CRUD\n// =============================================================================\n\n/**\n * List all users in the organization\n */\nexport async function listUsersApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListUsersResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new user\n */\nexport async function createUserApi(\n user: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"POST\",\n body: user,\n ...options,\n });\n}\n\n/**\n * Get a user by ID\n */\nexport async function getUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by email\n */\nexport async function getUserByEmailApi(\n email: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-email?email=${encodeURIComponent(email)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by phone number (stored in metadata.phoneNumber)\n */\nexport async function getUserByPhoneApi(\n phone: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-phone?phone=${encodeURIComponent(phone)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update a user\n */\nexport async function updateUserApi(\n userId: string,\n updates: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete a user\n */\nexport async function deleteUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n// =============================================================================\n// USER SETTINGS\n// =============================================================================\n\n/**\n * Get user settings\n */\nexport async function getUserSettingsApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update user settings\n */\nexport async function updateUserSettingsApi(\n userId: string,\n settings: {\n settings?: UserSettings;\n notificationPreferences?: NotificationPreferences;\n },\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"PUT\",\n body: settings,\n ...options,\n });\n}\n","/**\n * Invites Admin API\n *\n * Browser-side API client for invitation management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n\n// =============================================================================\n// INVITES CRUD\n// =============================================================================\n\n/**\n * List all invites in the organization\n */\nexport async function listInvitesApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListInvitesResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Send invites to multiple users\n */\nexport async function sendInvitesApi(\n invites: InviteInput[],\n options: ApiClientOptions\n): Promise<ApiResponse<InvitesResult>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n });\n}\n\n/**\n * Send a single invite\n */\nexport async function sendInviteApi(\n invite: InviteInput,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites/single\", {\n method: \"POST\",\n body: invite,\n ...options,\n });\n}\n\n/**\n * Get an invite by ID\n */\nexport async function getInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Resend an invite\n */\nexport async function resendInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/resend`, {\n method: \"POST\",\n ...options,\n });\n}\n\n/**\n * Revoke an invite\n */\nexport async function revokeInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Accept an invite (used by invited users)\n */\nexport async function acceptInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/accept`, {\n method: \"POST\",\n ...options,\n });\n}\n","/**\n * Product Analytics API\n *\n * Browser-side API client for product analytics.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n DateFilter,\n SummaryResponse,\n ChatsResponse,\n AgentsAnalyticsResponse,\n UsageResponse,\n DailyResponse,\n EventsResponse,\n AnalyticsEvent,\n GlobalSummaryResponse,\n OrgAnalyticsResponse,\n} from \"../models/analytics\";\n\n// =============================================================================\n// QUERY STRING HELPERS\n// =============================================================================\n\nfunction buildDateFilterParams(filter?: DateFilter): string {\n if (!filter) return \"\";\n const params = new URLSearchParams();\n if (filter.from) params.set(\"from\", filter.from);\n if (filter.to) params.set(\"to\", filter.to);\n const queryString = params.toString();\n return queryString ? `?${queryString}` : \"\";\n}\n\n// =============================================================================\n// ORG ANALYTICS (Per-Organization)\n// =============================================================================\n\n/**\n * Get analytics summary (total chats, messages, tokens, cost, users)\n */\nexport async function getAnalyticsSummaryApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<SummaryResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/summary${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get chat analytics with filters\n */\nexport async function getChatsAnalyticsApi(\n filter: DateFilter | undefined,\n agentId: string | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ChatsResponse>> {\n const params = new URLSearchParams();\n if (filter?.from) params.set(\"from\", filter.from);\n if (filter?.to) params.set(\"to\", filter.to);\n if (agentId) params.set(\"agent_id\", agentId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/analytics/chats${queryString ? `?${queryString}` : \"\"}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get per-agent analytics\n */\nexport async function getAgentsAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<AgentsAnalyticsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/agents${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get token/cost usage analytics by service and model\n */\nexport async function getUsageAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<UsageResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/usage${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get daily analytics for charts\n */\nexport async function getDailyAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<DailyResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/daily${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get analytics events log\n */\nexport async function getAnalyticsEventsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<EventsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/events${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Log an analytics event from frontend\n */\nexport async function logAnalyticsEventApi(\n event: AnalyticsEvent,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(\"/api/v1/analytics/events\", {\n method: \"POST\",\n body: event,\n ...options,\n });\n}\n\n// =============================================================================\n// GLOBAL ANALYTICS (Platform Admin)\n// =============================================================================\n\n/**\n * Get platform-wide analytics summary (admin only)\n */\nexport async function getGlobalSummaryApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<GlobalSummaryResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/global/summary${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get per-org analytics comparison (admin only)\n */\nexport async function getGlobalOrgsAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgAnalyticsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/global/orgs${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,IAAAA,kBAA0D;;;ACL1D,qBAAkC;AAoClC,eAAsB,YACpB,QACA,SACwC;AACxC,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,QAAQ,OAAQ,QAAO,IAAI,UAAU,OAAO,MAAM;AACtD,MAAI,QAAQ,KAAM,QAAO,IAAI,QAAQ,OAAO,IAAI;AAChD,MAAI,QAAQ,QAAS,QAAO,IAAI,WAAW,OAAO,OAAO;AAEzD,QAAM,cAAc,OAAO,SAAS;AACpC,QAAM,MAAM,cAAc,sBAAsB,WAAW,KAAK;AAEhE,aAAO,kCAAkB,KAAK;AAAA,IAC5B,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,aAGpB,KACA,SACmC;AACnC,aAAO,kCAAkB,sBAAsB;AAAA,IAC7C,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,UACpB,OACA,SACmC;AACnC,aAAO,kCAAkB,sBAAsB,KAAK,IAAI;AAAA,IACtD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,aACpB,OACA,SACA,SACmC;AACnC,aAAO,kCAAkB,sBAAsB,KAAK,IAAI;AAAA,IACtD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,aACpB,OACA,SAC4C;AAC5C,aAAO,kCAAkB,sBAAsB,KAAK,IAAI;AAAA,IACtD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,cACpB,OACA,SACuC;AACvC,aAAO,kCAAkB,sBAAsB,KAAK,SAAS;AAAA,IAC3D,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;;;AC1HA,IAAAC,kBAAkC;AAkBlC,eAAsB,aACpB,SACyC;AACzC,aAAO,mCAAkB,uBAAuB;AAAA,IAC9C,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,cACpB,MACA,SACoC;AACpC,aAAO,mCAAkB,uBAAuB;AAAA,IAC9C,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,WACpB,QACA,SACoC;AACpC,aAAO,mCAAkB,uBAAuB,MAAM,IAAI;AAAA,IACxD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,kBACpB,OACA,SACoC;AACpC,aAAO,mCAAkB,sCAAsC,mBAAmB,KAAK,CAAC,IAAI;AAAA,IAC1F,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,kBACpB,OACA,SACoC;AACpC,aAAO,mCAAkB,sCAAsC,mBAAmB,KAAK,CAAC,IAAI;AAAA,IAC1F,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,cACpB,QACA,SACA,SACoC;AACpC,aAAO,mCAAkB,uBAAuB,MAAM,IAAI;AAAA,IACxD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,cACpB,QACA,SAC4C;AAC5C,aAAO,mCAAkB,uBAAuB,MAAM,IAAI;AAAA,IACxD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AASA,eAAsB,mBACpB,QACA,SAC4C;AAC5C,aAAO,mCAAkB,uBAAuB,MAAM,aAAa;AAAA,IACjE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,sBACpB,QACA,UAIA,SAC4C;AAC5C,aAAO,mCAAkB,uBAAuB,MAAM,aAAa;AAAA,IACjE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;;;AC7IA,IAAAC,kBAAkC;AAiBlC,eAAsB,eACpB,SAC2C;AAC3C,aAAO,mCAAkB,yBAAyB;AAAA,IAChD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,eACpB,SACA,SACqC;AACrC,aAAO,mCAAkB,yBAAyB;AAAA,IAChD,QAAQ;AAAA,IACR,MAAM,EAAE,QAAQ;AAAA,IAChB,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,cACpB,QACA,SACsC;AACtC,aAAO,mCAAkB,gCAAgC;AAAA,IACvD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,aACpB,UACA,SACsC;AACtC,aAAO,mCAAkB,yBAAyB,QAAQ,IAAI;AAAA,IAC5D,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,gBACpB,UACA,SACsC;AACtC,aAAO,mCAAkB,yBAAyB,QAAQ,WAAW;AAAA,IACnE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,gBACpB,UACA,SAC4C;AAC5C,aAAO,mCAAkB,yBAAyB,QAAQ,IAAI;AAAA,IAC5D,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,gBACpB,UACA,SACsC;AACtC,aAAO,mCAAkB,yBAAyB,QAAQ,WAAW;AAAA,IACnE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;;;ACxGA,IAAAC,kBAAkC;AAmBlC,SAAS,sBAAsB,QAA6B;AAC1D,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,OAAO,IAAI;AAC/C,MAAI,OAAO,GAAI,QAAO,IAAI,MAAM,OAAO,EAAE;AACzC,QAAM,cAAc,OAAO,SAAS;AACpC,SAAO,cAAc,IAAI,WAAW,KAAK;AAC3C;AASA,eAAsB,uBACpB,QACA,SACuC;AACvC,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,4BAA4B,WAAW,IAAI;AAAA,IAClE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,qBACpB,QACA,SACA,SACqC;AACrC,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,QAAQ,KAAM,QAAO,IAAI,QAAQ,OAAO,IAAI;AAChD,MAAI,QAAQ,GAAI,QAAO,IAAI,MAAM,OAAO,EAAE;AAC1C,MAAI,QAAS,QAAO,IAAI,YAAY,OAAO;AAC3C,QAAM,cAAc,OAAO,SAAS;AACpC,aAAO,mCAAkB,0BAA0B,cAAc,IAAI,WAAW,KAAK,EAAE,IAAI;AAAA,IACzF,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,sBACpB,QACA,SAC+C;AAC/C,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,2BAA2B,WAAW,IAAI;AAAA,IACjE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,qBACpB,QACA,SACqC;AACrC,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,0BAA0B,WAAW,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,qBACpB,QACA,SACqC;AACrC,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,0BAA0B,WAAW,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,sBACpB,QACA,SACsC;AACtC,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,2BAA2B,WAAW,IAAI;AAAA,IACjE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,qBACpB,OACA,SAC4C;AAC5C,aAAO,mCAAkB,4BAA4B;AAAA,IACnD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AASA,eAAsB,oBACpB,QACA,SAC6C;AAC7C,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,mCAAmC,WAAW,IAAI;AAAA,IACzE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,0BACpB,QACA,SAC4C;AAC5C,QAAM,cAAc,sBAAsB,MAAM;AAChD,aAAO,mCAAkB,gCAAgC,WAAW,IAAI;AAAA,IACtE,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;;;AJlHA,eAAsB,uBACpB,SAC0C;AAC1C,aAAO,mCAAkB,6BAA6B;AAAA,IACpD,QAAQ;AAAA,IACR,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,mBACpB,SAC0C;AAC1C,aAAO,mCAAkB,4BAA4B;AAAA,IACnD,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,IACP,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,wBACpB,QACA,SAC8C;AAC9C,aAAO,mCAAkB,mCAAmC;AAAA,IAC1D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,sBACpB,KACA,SACyC;AACzC,aAAO,mCAAkB,wCAAwC;AAAA,IAC/D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,yBACpB,SACA,SAC2C;AAC3C,aAAO,mCAAkB,mCAAmC;AAAA,IAC1D,QAAQ;AAAA,IACR,MAAM,EAAE,QAAQ;AAAA,IAChB,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,6BACpB,WACA,SAC+C;AAC/C,aAAO,mCAAkB,qCAAqC;AAAA,IAC5D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,yBACpB,OACA,SAC2C;AAC3C,aAAO,mCAAkB,iCAAiC;AAAA,IACxD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,yBACpB,SACA,SAC2C;AAC3C,aAAO,mCAAkB,wCAAwC;AAAA,IAC/D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,sBACpB,SACkD;AAClD,aAAO,mCAAkB,+BAA+B;AAAA,IACtD,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,IACP,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAEA,eAAsB,sBACpB,MACA,SACwE;AACxE,aAAO,mCAAkB,gCAAgC;AAAA,IACvD,QAAQ;AAAA,IACR,MAAM,EAAE,KAAK;AAAA,IACb,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAYA,eAAsB,+BACpB,SACiD;AACjD,aAAO,mCAAkB,yCAAyC;AAAA,IAChE,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,IACP,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAqDA,eAAsB,0BACpB,SACA,SAC4C;AAC5C,aAAO,mCAAkB,oCAAoC;AAAA,IAC3D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,QAAQ,SAAS;AAAA,EAC1B,CAAC;AACH;AAwBA,SAAS,iBACP,OACA,KACa;AACb,SAAO;AAAA,IACL,IAAI,KAAK,MAAM;AAAA,IACf,QAAQ;AAAA,IACR,OAAO,KAAK,SAAS;AAAA,IACrB,aAAa,KAAK,eAAe;AAAA,IACjC,UAAU,KAAK,WAAW;AAAA,IAC1B,cAAc,KAAK,eAAe;AAAA,IAClC,UAAU,KAAK,YAAY;AAAA,IAC3B,qBAAqB,KAAK,YAAY,CAAC;AAAA,IACvC,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AACF;AAEA,SAAS,iBAAiB,UAAsD;AAC9E,SAAO;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,aAAa,SAAS;AAAA,IACtB,SAAS,SAAS;AAAA,IAClB,aAAa,SAAS;AAAA,IACtB,UAAU,SAAS;AAAA,IACnB,UAAU,SAAS;AAAA,EACrB;AACF;AAEA,eAAsB,kBACpB,SAC2C;AAC3C,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,WAAW,UAAM;AAAA,IACrB,sBAAsB,KAAK;AAAA,IAC3B,EAAE,QAAQ,OAAO,GAAG,QAAQ;AAAA,EAC9B;AAEA,MAAI,SAAS,OAAO;AAClB,WAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS,OAAO;AAAA,EAC1D;AAEA,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,UAAU,iBAAiB,OAAO,SAAS,MAAM,YAAY;AAAA,IAC/D;AAAA,EACF;AACF;AAMA,eAAsB,qBACpB,UACA,SAC6D;AAC7D,SAAO,qBAAqB,UAAU,OAAO;AAC/C;AAEA,eAAsB,qBACpB,UACA,SAC2C;AAC3C,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,WAAW,UAAM;AAAA,IACrB,sBAAsB,KAAK;AAAA,IAC3B;AAAA,MACE,QAAQ;AAAA,MACR,MAAM,iBAAiB,QAAQ;AAAA,MAC/B,GAAG;AAAA,IACL;AAAA,EACF;AAEA,MAAI,SAAS,OAAO;AAClB,WAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS,OAAO;AAAA,EAC1D;AAIA,SAAO,kBAAkB,OAAO;AAClC;AAEA,eAAsB,mBACpB,UACA,SAC+C;AAC/C,aAAO,mCAAkB,sBAAsB;AAAA,IAC7C,QAAQ;AAAA,IACR,MAAM,EAAE,SAAS;AAAA,IACjB,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,2BACpB,aACA,SACiD;AACjD,aAAO,mCAAkB,wBAAwB;AAAA,IAC/C,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,6BACpB,aACA,SACkD;AAClD,aAAO,mCAAkB,yBAAyB;AAAA,IAChD,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;AAMA,eAAsB,mBACpB,SACqC;AACrC,aAAO,mCAAkB,yBAAyB;AAAA,IAChD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,mBACpB,SAC4C;AAC5C,aAAO,mCAAkB,gCAAgC;AAAA,IACvD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,cACpB,SACuC;AACvC,aAAO,mCAAkB,2BAA2B;AAAA,IAClD,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,yBACpB,QACA,SAC8C;AAC9C,aAAO,mCAAkB,4BAA4B;AAAA,IACnD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,uBACpB,QACA,SAC6C;AAC7C,aAAO,mCAAkB,0BAA0B;AAAA,IACjD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,sBACpB,SACwE;AACxE,aAAO,mCAAkB,uCAAuC;AAAA,IAC9D,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,IACP,GAAG;AAAA,EACL,CAAC;AACH;AAEA,eAAsB,mBACpB,QACA,SAC8C;AAC9C,aAAO,mCAAkB,oCAAoC;AAAA,IAC3D,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,GAAG;AAAA,EACL,CAAC;AACH;AASA,eAAsB,0BACpB,aACA,SAC+C;AAC/C,aAAO,mCAAkB,kCAAkC;AAAA,IACzD,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,qBACpB,aACA,SACiD;AACjD,aAAO,mCAAkB,iCAAiC;AAAA,IACxD,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;AAKA,eAAsB,sBACpB,aACA,SACkD;AAClD,aAAO,mCAAkB,qCAAqC;AAAA,IAC5D,QAAQ;AAAA,IACR,MAAM,EAAE,YAAY;AAAA,IACpB,GAAG;AAAA,EACL,CAAC;AACH;","names":["import_browser","import_browser","import_browser","import_browser"]}
|
|
1
|
+
{"version":3,"sources":["../../api/index.ts","../../api/orgs.ts","../../api/users.ts","../../api/invites.ts"],"sourcesContent":["/**\n * Admin API functions (internal)\n *\n * Low-level API functions that call browserApiRequest directly.\n * These are the building blocks for @elqnt/admin/hooks.\n *\n * **Apps should use hooks (`@elqnt/admin/hooks`) instead of these functions.**\n * Hooks provide loading/error state management on top of these API calls.\n * Only use these directly if you're building a new hook or need an operation\n * that no hook covers yet.\n */\n\nimport { browserApiRequest, clearGatewayTokenCache } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\n\n// Re-export utility function\nexport { clearGatewayTokenCache };\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n OnboardingState,\n OnboardingResponse,\n CreateOrgResponse,\n SendInvitesResponse,\n CreateKnowledgeResponse,\n CreateAgentResponse,\n CompleteOnboardingResponse,\n PaymentSessionResponse,\n OrgSettings,\n OrgSettingsResponse,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n CreateCheckoutResponse,\n PortalSessionResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n} from \"../models\";\n\n// =============================================================================\n// ONBOARDING API OPTIONS\n// =============================================================================\n\n/**\n * Onboarding API options - orgId is optional since user may not have org yet\n */\nexport interface OnboardingApiOptions {\n baseUrl: string;\n orgId?: string;\n userId?: string;\n userEmail?: string;\n headers?: Record<string, string>;\n}\n\n// =============================================================================\n// ONBOARDING API\n// =============================================================================\n\nexport async function getOnboardingStatusApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/status\", {\n method: \"GET\",\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function startOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createPaymentSessionApi(\n params: { plan: string; billingCycle: string; seats: number; successUrl: string; cancelUrl: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<PaymentSessionResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/payment\", {\n method: \"POST\",\n body: params,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOrganizationApi(\n org: { name: string; industry?: string; size?: string; stripeSessionId?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateOrgResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/organization\", {\n method: \"POST\",\n body: org,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function sendOnboardingInvitesApi(\n invites: Array<{ email: string; role?: string }>,\n options: OnboardingApiOptions\n): Promise<ApiResponse<SendInvitesResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingKnowledgeApi(\n knowledge: { name: string; description?: string; websites?: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateKnowledgeResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/knowledge\", {\n method: \"POST\",\n body: knowledge,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingAgentApi(\n agent: { name: string; description?: string; goal?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/agent\", {\n method: \"POST\",\n body: agent,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createAgentWithSkillsApi(\n payload: { agent: Record<string, unknown>; skills: Record<string, unknown>[]; enabledSkillNames: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/agent-with-skills\", {\n method: \"POST\",\n body: payload,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function completeOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<CompleteOnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/complete\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function skipOnboardingStepApi(\n step: string,\n options: OnboardingApiOptions\n): Promise<ApiResponse<{ nextStep: string; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/onboarding/skip-step\", {\n method: \"POST\",\n body: { step },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport interface StartProvisioningResponse {\n orgId: string;\n status: string;\n metadata?: ResponseMetadata;\n}\n\n/**\n * Start provisioning for an onboarding org.\n * Returns the org ID so the frontend can connect to the SSE stream for progress.\n */\nexport async function startOnboardingProvisioningApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<StartProvisioningResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provisioning/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n/**\n * Request body for unified onboarding provisioning\n */\nexport interface ProvisionAllRequest {\n plan: {\n plan: string;\n billingCycle: string;\n seats: number;\n stripeSessionId?: string;\n inviteCode?: string; // If present, this is a free trial (skipped payment)\n };\n org: {\n title: string;\n mainDomain: string;\n // (product field removed — product is implicit in the admin DB)\n industry?: string;\n size?: string;\n };\n invites?: Array<{\n email: string;\n role: string;\n }>;\n knowledge: {\n name: string;\n documents?: Array<{\n title: string;\n fileUrl: string;\n }>;\n };\n agent: {\n name: string;\n goal: string;\n personality: string;\n skills?: string[];\n };\n}\n\n/**\n * Response from unified onboarding provisioning\n */\nexport interface ProvisionAllResponse {\n orgId: string;\n userId: string;\n status: string;\n metadata: ResponseMetadata;\n}\n\n/**\n * Unified onboarding provisioning - collects all data then creates org and provisions everything.\n * This is the new flow where data is collected first, then provisioned via SSE.\n */\nexport async function provisionAllOnboardingApi(\n request: ProvisionAllRequest,\n options: OnboardingApiOptions\n): Promise<ApiResponse<ProvisionAllResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provision-all\", {\n method: \"POST\",\n body: request,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n// =============================================================================\n// ORG SETTINGS API\n// =============================================================================\n\n/**\n * Org settings live on the canonical admin Org row (since v2.3) — the old\n * /api/v1/org/settings path against integrations is gone. These helpers keep\n * the legacy `OrgSettings` wire shape so consumers (org-settings form, the\n * OrganizationProvider hydration action, etc.) don't need to change. The\n * actual fetch/PUT happens against /admin/orgs/{orgId}.\n */\n\ninterface OrgRowSlice {\n id?: string;\n title?: string;\n description?: string;\n logoUrl?: string;\n defaultLang?: string;\n timezone?: string;\n settings?: { [key: string]: any };\n}\n\nfunction orgRowToSettings(\n orgId: string,\n row: OrgRowSlice | undefined,\n): OrgSettings {\n return {\n id: row?.id ?? \"\",\n org_id: orgId,\n title: row?.title ?? \"\",\n description: row?.description ?? \"\",\n logo_url: row?.logoUrl ?? \"\",\n default_lang: row?.defaultLang ?? \"en\",\n timezone: row?.timezone ?? \"UTC\",\n additional_settings: row?.settings ?? {},\n created_at: \"\",\n updated_at: \"\",\n created_by: \"\",\n updated_by: \"\",\n };\n}\n\nfunction settingsToOrgRow(settings: Partial<OrgSettings>): Partial<OrgRowSlice> {\n return {\n title: settings.title,\n description: settings.description,\n logoUrl: settings.logo_url,\n defaultLang: settings.default_lang,\n timezone: settings.timezone,\n settings: settings.additional_settings,\n };\n}\n\nexport async function getOrgSettingsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ organization?: OrgRowSlice }>(\n `/api/v1/admin/orgs/${orgId}`,\n { method: \"GET\", ...options },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n return {\n status: response.status,\n data: {\n success: true,\n settings: orgRowToSettings(orgId, response.data?.organization),\n } as OrgSettingsResponse,\n };\n}\n\n/**\n * @deprecated Org settings rows always exist on the admin Org. Kept as an\n * alias for backward compatibility — calls updateOrgSettingsApi.\n */\nexport async function createOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse & { id?: string }>> {\n return updateOrgSettingsApi(settings, options);\n}\n\nexport async function updateOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ message?: string }>(\n `/api/v1/admin/orgs/${orgId}`,\n {\n method: \"PUT\",\n body: settingsToOrgRow(settings),\n ...options,\n },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n // Admin update returns { message: \"...\" }; round-trip a fresh GET so the\n // caller gets the full settings shape (with new updated_at, etc.).\n return getOrgSettingsApi(options);\n}\n\nexport async function updateOrgAgentsApi(\n agentIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/org/agents\", {\n method: \"PUT\",\n body: { agentIds },\n ...options,\n });\n}\n\nexport async function updateEntityDefinitionsApi(\n entityNames: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/org/entities\", {\n method: \"PUT\",\n body: { entityNames },\n ...options,\n });\n}\n\nexport async function updateWorkflowDefinitionsApi(\n workflowIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/org/workflows\", {\n method: \"PUT\",\n body: { workflowIds },\n ...options,\n });\n}\n\n// =============================================================================\n// BILLING API\n// =============================================================================\n\nexport async function getBillingPlansApi(\n options: ApiClientOptions\n): Promise<ApiResponse<PlansResponse>> {\n return browserApiRequest(\"/api/v1/billing/plans\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<SubscriptionResponse>> {\n return browserApiRequest(\"/api/v1/billing/subscription\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getCreditsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<CreditsResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function createCheckoutSessionApi(\n params: { priceId: string; seats?: number; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/checkout\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function createPortalSessionApi(\n params: { returnUrl: string },\n options: ApiClientOptions\n): Promise<ApiResponse<PortalSessionResponse>> {\n return browserApiRequest(\"/api/v1/billing/portal\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function cancelSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/billing/subscription/cancel\", {\n method: \"POST\",\n body: {},\n ...options,\n });\n}\n\nexport async function purchaseCreditsApi(\n params: { packageId: string; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits/purchase\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\n// =============================================================================\n// PROVISIONING API (DEPRECATED - use domain packages instead)\n// =============================================================================\n\n/**\n * @deprecated Use `provisionAgentsApi` from `@elqnt/agents/api` instead\n */\nexport async function provisionDefaultAgentsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/agents\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionEntitiesApi` from `@elqnt/entity/api` instead\n */\nexport async function provisionEntitiesApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/admin/entities/update\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionWorkflowsApi` from `@elqnt/workflow/api` instead (coming soon)\n */\nexport async function provisionWorkflowsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/workflows\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n// =============================================================================\n// ADMIN CRUD APIs\n// =============================================================================\n\nexport * from \"./orgs\";\nexport * from \"./users\";\nexport * from \"./invites\";\n// (analytics API moved to @elqnt/analytics/api.\n// provisioning API removed — per-org artifact provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n\n// =============================================================================\n// RE-EXPORTS\n// =============================================================================\n\nexport type {\n OnboardingState,\n OnboardingResponse,\n OrgSettings,\n OrgSettingsResponse,\n Plan,\n OrganizationBilling,\n UsageSummary,\n CreditBalance,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n // Org types\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n // User types\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n // Invite types\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n","/**\n * Organizations Admin API\n *\n * Browser-side API client for organization management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n OrgStatusTS,\n OrgTypeTS,\n} from \"../models\";\n\n// =============================================================================\n// FILTER TYPES\n// =============================================================================\n\n/**\n * Filter options for listing organizations\n *\n * `product` is routing metadata: it selects which admin_<product> DB to read\n * from (empty → eloquent). It is not a stored column on the org.\n */\nexport interface ListOrgsFilter {\n status?: OrgStatusTS;\n type?: OrgTypeTS;\n product?: string;\n}\n\n// =============================================================================\n// ORGANIZATIONS CRUD\n// =============================================================================\n\n/**\n * List all organizations (admin scope required)\n * @param filter - Optional filter criteria\n * @param options - API client options\n */\nexport async function listOrgsApi(\n filter: ListOrgsFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ListOrgsResponse>> {\n const params = new URLSearchParams();\n if (filter?.status) params.set(\"status\", filter.status);\n if (filter?.type) params.set(\"type\", filter.type);\n if (filter?.product) params.set(\"product\", filter.product);\n\n const queryString = params.toString();\n const url = queryString ? `/api/v1/admin/orgs?${queryString}` : \"/api/v1/admin/orgs\";\n\n return browserApiRequest(url, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new organization\n */\nexport async function createOrgApi(\n // `product` is transient routing metadata (which admin_<product> DB to write\n // to) sent alongside the org fields — it is not persisted on the org.\n org: Partial<Org> & { product?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(\"/api/v1/admin/orgs\", {\n method: \"POST\",\n body: org,\n ...options,\n });\n}\n\n/**\n * Get an organization by ID\n */\nexport async function getOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update an organization\n */\nexport async function updateOrgApi(\n orgId: string,\n updates: Partial<Org>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete an organization\n */\nexport async function deleteOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Get organization info (lightweight response)\n */\nexport async function getOrgInfoApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgInfoResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}/info`, {\n method: \"GET\",\n ...options,\n });\n}\n\n// (createOrgWithSchemasApi removed — per-org schema provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n","/**\n * Users Admin API\n *\n * Browser-side API client for user management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n} from \"../models\";\n\n// =============================================================================\n// USERS CRUD\n// =============================================================================\n\n/**\n * List all users in the organization\n */\nexport async function listUsersApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListUsersResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new user\n */\nexport async function createUserApi(\n user: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"POST\",\n body: user,\n ...options,\n });\n}\n\n/**\n * Get a user by ID\n */\nexport async function getUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by email\n */\nexport async function getUserByEmailApi(\n email: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-email?email=${encodeURIComponent(email)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by phone number (stored in metadata.phoneNumber)\n */\nexport async function getUserByPhoneApi(\n phone: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-phone?phone=${encodeURIComponent(phone)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update a user\n */\nexport async function updateUserApi(\n userId: string,\n updates: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete a user\n */\nexport async function deleteUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n// =============================================================================\n// USER SETTINGS\n// =============================================================================\n\n/**\n * Get user settings\n */\nexport async function getUserSettingsApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update user settings\n */\nexport async function updateUserSettingsApi(\n userId: string,\n settings: {\n settings?: UserSettings;\n notificationPreferences?: NotificationPreferences;\n },\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"PUT\",\n body: settings,\n ...options,\n });\n}\n","/**\n * Invites Admin API\n *\n * Browser-side API client for invitation management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n\n// =============================================================================\n// INVITES CRUD\n// =============================================================================\n\n/**\n * List all invites in the organization\n */\nexport async function listInvitesApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListInvitesResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Send invites to multiple users\n */\nexport async function sendInvitesApi(\n invites: InviteInput[],\n options: ApiClientOptions\n): Promise<ApiResponse<InvitesResult>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n });\n}\n\n/**\n * Send a single invite\n */\nexport async function sendInviteApi(\n invite: InviteInput,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites/single\", {\n method: \"POST\",\n body: invite,\n ...options,\n });\n}\n\n/**\n * Get an invite by ID\n */\nexport async function getInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Resend an invite\n */\nexport async function resendInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/resend`, {\n method: \"POST\",\n ...options,\n });\n}\n\n/**\n * Revoke an invite\n */\nexport async function revokeInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Accept an invite (used by invited users)\n */\nexport async function acceptInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/accept`, {\n method: \"POST\",\n ...options,\n });\n}\n"],"mappings":"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","names":["import_browser","import_browser","import_browser"]}
|