@zdrops/ai-assistants-sdk 1.5.1 → 1.7.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/CHANGELOG.md +21 -0
- package/dist/index.cjs +39 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +94 -47
- package/dist/index.d.ts +94 -47
- package/dist/index.js +39 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.7.0](https://github.com/ZDrops/ai-assistants-sdk/compare/ai-assistants-sdk-v1.6.0...ai-assistants-sdk-v1.7.0) (2026-06-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* regenerate types for WhiteGallo billing address fields ([4127dc1](https://github.com/ZDrops/ai-assistants-sdk/commit/4127dc1b8ffd51227665b7eefda2f9b221f8412a))
|
|
9
|
+
|
|
10
|
+
## [1.6.0](https://github.com/ZDrops/ai-assistants-sdk/compare/ai-assistants-sdk-v1.5.1...ai-assistants-sdk-v1.6.0) (2026-06-21)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add contact resource ([122204d](https://github.com/ZDrops/ai-assistants-sdk/commit/122204dfdee0dfe328227a93ef0dcbc2836740ab))
|
|
16
|
+
* add contact resource for contact-form email ([02a540e](https://github.com/ZDrops/ai-assistants-sdk/commit/02a540e39b9b9b09f76ce985450a6c433dfd9dd8))
|
|
17
|
+
* add emailPreferences resource ([c3eb56b](https://github.com/ZDrops/ai-assistants-sdk/commit/c3eb56b53e0c8d827807b4357459d6f6d003b93d))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* regenerate types from current spec, drop obsolete credit/receipts types ([cf4c92d](https://github.com/ZDrops/ai-assistants-sdk/commit/cf4c92dedc23dab99550e23ba90e826415f49670))
|
|
23
|
+
|
|
3
24
|
## [1.5.1](https://github.com/ZDrops/ai-assistants-sdk/compare/ai-assistants-sdk-v1.5.0...ai-assistants-sdk-v1.5.1) (2026-06-20)
|
|
4
25
|
|
|
5
26
|
|
package/dist/index.cjs
CHANGED
|
@@ -216,9 +216,6 @@ var CreditsResource = class {
|
|
|
216
216
|
getTransactions(query) {
|
|
217
217
|
return this.http.get("/api/v1/credits/transactions", { query });
|
|
218
218
|
}
|
|
219
|
-
purchase(data) {
|
|
220
|
-
return this.http.post("/api/v1/credits/purchase", data);
|
|
221
|
-
}
|
|
222
219
|
};
|
|
223
220
|
|
|
224
221
|
// src/resources/billing.ts
|
|
@@ -392,6 +389,43 @@ var ReceiptsResource = class {
|
|
|
392
389
|
}
|
|
393
390
|
};
|
|
394
391
|
|
|
392
|
+
// src/resources/email-preferences.ts
|
|
393
|
+
var EmailPreferencesResource = class {
|
|
394
|
+
constructor(http) {
|
|
395
|
+
this.http = http;
|
|
396
|
+
}
|
|
397
|
+
/** Public, token-based: fetch subscription state via an unsubscribe link token. */
|
|
398
|
+
getByToken(token) {
|
|
399
|
+
return this.http.get("/api/v1/email-preferences", {
|
|
400
|
+
authenticated: false,
|
|
401
|
+
query: { token }
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
/** Public, token-based: update subscription state via an unsubscribe link token. */
|
|
405
|
+
updateByToken(data) {
|
|
406
|
+
return this.http.patch("/api/v1/email-preferences", data, { authenticated: false });
|
|
407
|
+
}
|
|
408
|
+
/** Authenticated: fetch the current user's subscription state. */
|
|
409
|
+
getMine() {
|
|
410
|
+
return this.http.get("/api/v1/email-preferences/me");
|
|
411
|
+
}
|
|
412
|
+
/** Authenticated: update the current user's subscription state. */
|
|
413
|
+
updateMine(data) {
|
|
414
|
+
return this.http.patch("/api/v1/email-preferences/me", data);
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
// src/resources/contact.ts
|
|
419
|
+
var ContactResource = class {
|
|
420
|
+
constructor(http) {
|
|
421
|
+
this.http = http;
|
|
422
|
+
}
|
|
423
|
+
/** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */
|
|
424
|
+
send(data) {
|
|
425
|
+
return this.http.post("/api/v1/contact", data, { authenticated: false });
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
|
|
395
429
|
// src/client.ts
|
|
396
430
|
function createClient(options) {
|
|
397
431
|
let accessToken = options.accessToken ?? null;
|
|
@@ -420,6 +454,8 @@ function createClient(options) {
|
|
|
420
454
|
payments: new PaymentsResource(http),
|
|
421
455
|
tenants: new TenantsResource(http),
|
|
422
456
|
receipts: new ReceiptsResource(http),
|
|
457
|
+
emailPreferences: new EmailPreferencesResource(http),
|
|
458
|
+
contact: new ContactResource(http),
|
|
423
459
|
ping() {
|
|
424
460
|
return http.get("/api/v1/ping", { authenticated: false });
|
|
425
461
|
},
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/auth.ts","../src/resources/plans.ts","../src/resources/credits.ts","../src/resources/billing.ts","../src/resources/preferences.ts","../src/resources/conversations.ts","../src/resources/generation.ts","../src/resources/images.ts","../src/resources/payments.ts","../src/resources/tenants.ts","../src/resources/receipts.ts","../src/client.ts"],"sourcesContent":["export { createClient } from \"./client\";\nexport type { ClientOptions, AiAssistantsClient } from \"./client\";\n\nexport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n PurchaseCreditsDto,\n UpsertBillingDto,\n UpdatePreferencesDto,\n CreateConversationDto,\n AddMessageDto,\n GenerateDto,\n TriggerImageDto,\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n PlanResponseDto,\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n PurchaseCreditsResponseDto,\n CreditBalanceEntityResponseDto,\n BillingResponseDto,\n PreferenceResponseDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n ImageStatusResponseDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n TenantPublicInfoDto,\n PingResponseDto,\n StartAuthResponseDto,\n PaginatedResponse,\n\n OtpType,\n UserRole,\n PlanType,\n CreditTransactionType,\n ConversationStatus,\n MessageRole,\n ImageGenerationStatus,\n} from \"./types\";\n\nexport type { SseStreamOptions, GenerationDoneData } from \"./resources/generation\";\n\nexport { ApiError } from \"./errors\";\n","export class ApiError extends Error {\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string | string[],\n public readonly requestId?: string,\n ) {\n super(Array.isArray(message) ? message.join(\", \") : message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"./errors\";\nimport type { TokensResponseDto } from \"./types\";\n\nexport interface HttpClientConfig {\n baseUrl: string;\n tenantKey: string;\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n onTokenRefreshed: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ninterface RequestOptions {\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined | null>;\n authenticated?: boolean;\n}\n\ninterface InternalRequestOptions extends RequestOptions {\n isRetry?: boolean;\n}\n\nexport class HttpClient {\n private refreshPromise: Promise<boolean> | null = null;\n private readonly baseUrl: URL;\n private readonly fetchFn: typeof globalThis.fetch;\n\n constructor(private config: HttpClientConfig) {\n this.baseUrl = new URL(config.baseUrl);\n this.fetchFn = config.fetch ?? globalThis.fetch;\n }\n\n private buildAndFetch(\n method: HttpMethod,\n path: string,\n options: RequestOptions = {},\n ): Promise<Response> {\n const { body, query, authenticated = true } = options;\n\n const url = new URL(path, this.baseUrl);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n \"X-Tenant-Key\": this.config.tenantKey,\n };\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (authenticated) {\n const token = this.config.getAccessToken();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n }\n\n return this.fetchFn(url.toString(), {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n\n private async throwIfError(response: Response): Promise<void> {\n if (!response.ok) {\n const errorBody = await response.json().catch(() => null);\n throw new ApiError(\n response.status,\n errorBody?.error?.code ?? \"UNKNOWN_ERROR\",\n errorBody?.error?.message ?? response.statusText,\n errorBody?.meta?.requestId,\n );\n }\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<T> {\n const { isRetry = false, authenticated = true } = options;\n\n const response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && !isRetry && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n return this.request<T>(method, path, { ...options, isRetry: true });\n }\n }\n\n await this.throwIfError(response);\n\n const contentType = response.headers.get(\"content-type\");\n if (!contentType?.includes(\"application/json\")) {\n return undefined as T;\n }\n\n const json = await response.json();\n return (json && \"data\" in json && \"meta\" in json ? json.data : json) as T;\n }\n\n private attemptTokenRefresh(): Promise<boolean> {\n if (this.refreshPromise) return this.refreshPromise;\n this.refreshPromise = this.doRefresh().finally(() => {\n this.refreshPromise = null;\n });\n return this.refreshPromise;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.config.getRefreshToken();\n if (!refreshToken) return false;\n\n try {\n const tokens = await this.request<TokensResponseDto>(\n \"POST\",\n \"/api/v1/auth/refresh\",\n {\n body: { refreshToken },\n authenticated: false,\n isRetry: true,\n },\n );\n await this.config.onTokenRefreshed(tokens);\n return true;\n } catch {\n return false;\n }\n }\n\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"GET\", path, options);\n }\n\n post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"POST\", path, { ...options, body });\n }\n\n patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PATCH\", path, { ...options, body });\n }\n\n put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PUT\", path, { ...options, body });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"DELETE\", path, options);\n }\n\n async rawRequest(method: HttpMethod, path: string, options: RequestOptions = {}): Promise<Response> {\n const { authenticated = true } = options;\n\n let response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n response = await this.buildAndFetch(method, path, options);\n }\n }\n\n await this.throwIfError(response);\n\n return response;\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n StartAuthResponseDto,\n} from \"../types\";\n\nexport class AuthResource {\n constructor(private http: HttpClient) {}\n\n register(data: RegisterDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/register\", data, { authenticated: false });\n }\n\n login(data: LoginDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/login\", data, { authenticated: false });\n }\n\n startAuth(data: LoginDto): Promise<StartAuthResponseDto> {\n return this.http.post(\"/api/v1/auth/start\", data, { authenticated: false });\n }\n\n verifyOtp(data: VerifyOtpDto): Promise<AuthResponseDto> {\n return this.http.post(\"/api/v1/auth/verify-otp\", data, { authenticated: false });\n }\n\n refresh(data: RefreshTokenDto): Promise<TokensResponseDto> {\n return this.http.post(\"/api/v1/auth/refresh\", data, { authenticated: false });\n }\n\n logout(): Promise<void> {\n return this.http.post(\"/api/v1/auth/logout\");\n }\n\n getProfile(): Promise<UserResponseDto> {\n return this.http.get(\"/api/v1/auth/me\");\n }\n\n updateProfile(data: UpdateProfileDto): Promise<UserResponseDto> {\n return this.http.patch(\"/api/v1/auth/me\", data);\n }\n\n deleteAccount(): Promise<void> {\n return this.http.delete(\"/api/v1/auth/me\");\n }\n\n requestEmailChange(data: RequestEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/request-email-change\", data);\n }\n\n confirmEmailChange(data: ConfirmEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/confirm-email-change\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PlanResponseDto } from \"../types\";\n\nexport class PlansResource {\n constructor(private http: HttpClient) {}\n\n list(): Promise<PlanResponseDto[]> {\n return this.http.get(\"/api/v1/public/plans\", { authenticated: false });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n CreditTransactionType,\n PurchaseCreditsDto,\n PurchaseCreditsResponseDto,\n} from \"../types\";\n\nexport class CreditsResource {\n constructor(private http: HttpClient) {}\n\n getBalance(): Promise<CreditBalanceResponseDto> {\n return this.http.get(\"/api/v1/credits/balance\");\n }\n\n getTransactions(query?: {\n cursor?: string;\n limit?: number;\n type?: CreditTransactionType;\n }): Promise<CreditTransactionResponseDto[]> {\n return this.http.get(\"/api/v1/credits/transactions\", { query });\n }\n\n purchase(data: PurchaseCreditsDto): Promise<PurchaseCreditsResponseDto> {\n return this.http.post(\"/api/v1/credits/purchase\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { BillingResponseDto, UpsertBillingDto } from \"../types\";\n\nexport class BillingResource {\n constructor(private http: HttpClient) {}\n\n get(): Promise<BillingResponseDto> {\n return this.http.get(\"/api/v1/billing\");\n }\n\n upsert(data: UpsertBillingDto): Promise<BillingResponseDto> {\n return this.http.put(\"/api/v1/billing\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n PreferenceResponseDto,\n UpdatePreferencesDto,\n} from \"../types\";\n\nexport class PreferencesResource {\n constructor(private http: HttpClient) {}\n\n getAll(): Promise<PreferenceResponseDto[]> {\n return this.http.get(\"/api/v1/preferences\");\n }\n\n getByAppKey(appKey: string): Promise<PreferenceResponseDto> {\n return this.http.get(`/api/v1/preferences/${appKey}`);\n }\n\n upsert(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.put(`/api/v1/preferences/${appKey}`, data);\n }\n\n remove(appKey: string): Promise<void> {\n return this.http.delete(`/api/v1/preferences/${appKey}`);\n }\n\n merge(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.patch(`/api/v1/preferences/${appKey}`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateConversationDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n AddMessageDto,\n ConversationStatus,\n} from \"../types\";\n\nexport class ConversationsResource {\n constructor(private http: HttpClient) {}\n\n create(data: CreateConversationDto): Promise<ConversationResponseDto> {\n return this.http.post(\"/api/v1/conversations\", data);\n }\n\n list(query?: {\n cursor?: string;\n limit?: number;\n status?: ConversationStatus;\n appKey?: string;\n }): Promise<ConversationResponseDto[]> {\n return this.http.get(\"/api/v1/conversations\", { query });\n }\n\n get(id: string): Promise<ConversationResponseDto> {\n return this.http.get(`/api/v1/conversations/${id}`);\n }\n\n archive(id: string): Promise<ConversationResponseDto> {\n return this.http.patch(`/api/v1/conversations/${id}/archive`);\n }\n\n listMessages(conversationId: string, query?: {\n cursor?: string;\n limit?: number;\n }): Promise<ConversationMessageResponseDto[]> {\n return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });\n }\n\n addMessage(conversationId: string, data: AddMessageDto): Promise<ConversationMessageResponseDto> {\n return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { GenerateDto } from \"../types\";\n\nexport interface GenerationDoneData {\n messageId: string;\n usage?: { inputTokens: number; outputTokens: number };\n structuredOutput?: Record<string, unknown>;\n}\n\nexport interface SseStreamOptions {\n onTextDelta?: (text: string) => void;\n onDone?: (data: GenerationDoneData) => void;\n onError?: (error: string) => void;\n signal?: AbortSignal;\n}\n\ntype SseEvent =\n | { type: \"text_delta\"; text: string }\n | { type: \"done\"; messageId: string; usage?: { inputTokens: number; outputTokens: number }; structuredOutput?: Record<string, unknown> }\n | { type: \"error\"; error: string };\n\nexport class GenerationResource {\n constructor(private http: HttpClient) {}\n\n async generate(conversationId: string, data: GenerateDto, options?: SseStreamOptions): Promise<string> {\n const response = await this.http.rawRequest(\"POST\", `/api/v1/conversations/${conversationId}/generate`, {\n body: data,\n });\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"No response body\");\n\n const decoder = new TextDecoder();\n const parts: string[] = [];\n let buffer = \"\";\n\n try {\n while (true) {\n if (options?.signal?.aborted) {\n reader.cancel();\n break;\n }\n\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const jsonStr = line.slice(6).trim();\n if (!jsonStr) continue;\n\n let event: SseEvent;\n try {\n event = JSON.parse(jsonStr);\n } catch {\n continue;\n }\n\n if (event.type === \"text_delta\") {\n parts.push(event.text);\n options?.onTextDelta?.(event.text);\n } else if (event.type === \"done\") {\n options?.onDone?.(event);\n } else if (event.type === \"error\") {\n options?.onError?.(event.error);\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return parts.join(\"\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n TriggerImageDto,\n ImageStatusResponseDto,\n} from \"../types\";\n\nexport class ImagesResource {\n constructor(private http: HttpClient) {}\n\n trigger(messageId: string, data: TriggerImageDto): Promise<ImageStatusResponseDto> {\n return this.http.post(`/api/v1/messages/${messageId}/images`, data);\n }\n\n getAll(messageId: string): Promise<ImageStatusResponseDto[]> {\n return this.http.get(`/api/v1/messages/${messageId}/images`);\n }\n\n getBySlot(messageId: string, slot: string): Promise<ImageStatusResponseDto> {\n return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n} from \"../types\";\n\nexport class PaymentsResource {\n constructor(private http: HttpClient) {}\n\n checkout(data: CreateCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout\", data);\n }\n\n checkoutCustom(data: CreateCustomCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout/custom\", data);\n }\n\n creditPricing(): Promise<CreditPricingResponseDto> {\n return this.http.get(\"/api/v1/payments/credit-pricing\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { TenantPublicInfoDto } from \"../types\";\n\nexport class TenantsResource {\n constructor(private http: HttpClient) {}\n\n getPublicInfo(tenantId: string): Promise<TenantPublicInfoDto> {\n return this.http.get(\"/api/v1/tenants/public-info\", {\n authenticated: false,\n query: { tenantId },\n });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PaginatedResponse } from \"../types\";\n\nexport class ReceiptsResource {\n constructor(private http: HttpClient) {}\n\n list(query?: { cursor?: string; limit?: number }): Promise<PaginatedResponse> {\n return this.http.get(\"/api/v1/receipts\", { query });\n }\n\n async download(id: string): Promise<Blob> {\n const response = await this.http.rawRequest(\"GET\", `/api/v1/receipts/${id}/download`);\n return response.blob();\n }\n}\n","import { HttpClient } from \"./http\";\nimport type { TokensResponseDto, PingResponseDto } from \"./types\";\nimport { AuthResource } from \"./resources/auth\";\nimport { PlansResource } from \"./resources/plans\";\nimport { CreditsResource } from \"./resources/credits\";\nimport { BillingResource } from \"./resources/billing\";\nimport { PreferencesResource } from \"./resources/preferences\";\nimport { ConversationsResource } from \"./resources/conversations\";\nimport { GenerationResource } from \"./resources/generation\";\nimport { ImagesResource } from \"./resources/images\";\nimport { PaymentsResource } from \"./resources/payments\";\nimport { TenantsResource } from \"./resources/tenants\";\nimport { ReceiptsResource } from \"./resources/receipts\";\n\nexport interface ClientOptions {\n baseUrl: string;\n tenantKey: string;\n accessToken?: string;\n refreshToken?: string;\n onTokenRefreshed?: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface AiAssistantsClient {\n auth: AuthResource;\n plans: PlansResource;\n credits: CreditsResource;\n billing: BillingResource;\n preferences: PreferencesResource;\n conversations: ConversationsResource;\n generation: GenerationResource;\n images: ImagesResource;\n payments: PaymentsResource;\n tenants: TenantsResource;\n receipts: ReceiptsResource;\n /**\n * Verify the client is configured correctly: confirms the base URL is\n * reachable and the tenant key is valid. Resolves with the tenant identity\n * when the SDK is ready to use, and rejects with an {@link ApiError} otherwise.\n */\n ping(): Promise<PingResponseDto>;\n setAccessToken(token: string): void;\n setRefreshToken(token: string): void;\n}\n\nexport function createClient(options: ClientOptions): AiAssistantsClient {\n let accessToken = options.accessToken ?? null;\n let refreshToken = options.refreshToken ?? null;\n\n const http = new HttpClient({\n baseUrl: options.baseUrl,\n tenantKey: options.tenantKey,\n fetch: options.fetch,\n getAccessToken: () => accessToken,\n getRefreshToken: () => refreshToken,\n onTokenRefreshed: async (tokens) => {\n accessToken = tokens.accessToken;\n refreshToken = tokens.refreshToken;\n await options.onTokenRefreshed?.(tokens);\n },\n });\n\n return {\n auth: new AuthResource(http),\n plans: new PlansResource(http),\n credits: new CreditsResource(http),\n billing: new BillingResource(http),\n preferences: new PreferencesResource(http),\n conversations: new ConversationsResource(http),\n generation: new GenerationResource(http),\n images: new ImagesResource(http),\n payments: new PaymentsResource(http),\n tenants: new TenantsResource(http),\n receipts: new ReceiptsResource(http),\n ping() {\n return http.get<PingResponseDto>(\"/api/v1/ping\", { authenticated: false });\n },\n setAccessToken(token: string) {\n accessToken = token;\n },\n setRefreshToken(token: string) {\n refreshToken = token;\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/auth.ts","../src/resources/plans.ts","../src/resources/credits.ts","../src/resources/billing.ts","../src/resources/preferences.ts","../src/resources/conversations.ts","../src/resources/generation.ts","../src/resources/images.ts","../src/resources/payments.ts","../src/resources/tenants.ts","../src/resources/receipts.ts","../src/resources/email-preferences.ts","../src/resources/contact.ts","../src/client.ts"],"sourcesContent":["export { createClient } from \"./client\";\nexport type { ClientOptions, AiAssistantsClient } from \"./client\";\n\nexport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n UpsertBillingDto,\n UpdatePreferencesDto,\n CreateConversationDto,\n AddMessageDto,\n GenerateDto,\n TriggerImageDto,\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n ContactDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n PlanResponseDto,\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n BillingResponseDto,\n PreferenceResponseDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n ImageStatusResponseDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n TenantPublicInfoDto,\n PingResponseDto,\n StartAuthResponseDto,\n ReceiptItemDto,\n\n OtpType,\n UserRole,\n PlanType,\n CreditTransactionType,\n ConversationStatus,\n MessageRole,\n ImageGenerationStatus,\n EmailPreferencesResponseDto,\n EmailCategoryDto,\n UpdateEmailPreferencesDto,\n UpdateEmailPreferencesTokenDto,\n} from \"./types\";\n\nexport type { SseStreamOptions, GenerationDoneData } from \"./resources/generation\";\n\nexport { ApiError } from \"./errors\";\n","export class ApiError extends Error {\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string | string[],\n public readonly requestId?: string,\n ) {\n super(Array.isArray(message) ? message.join(\", \") : message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"./errors\";\nimport type { TokensResponseDto } from \"./types\";\n\nexport interface HttpClientConfig {\n baseUrl: string;\n tenantKey: string;\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n onTokenRefreshed: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ninterface RequestOptions {\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined | null>;\n authenticated?: boolean;\n}\n\ninterface InternalRequestOptions extends RequestOptions {\n isRetry?: boolean;\n}\n\nexport class HttpClient {\n private refreshPromise: Promise<boolean> | null = null;\n private readonly baseUrl: URL;\n private readonly fetchFn: typeof globalThis.fetch;\n\n constructor(private config: HttpClientConfig) {\n this.baseUrl = new URL(config.baseUrl);\n this.fetchFn = config.fetch ?? globalThis.fetch;\n }\n\n private buildAndFetch(\n method: HttpMethod,\n path: string,\n options: RequestOptions = {},\n ): Promise<Response> {\n const { body, query, authenticated = true } = options;\n\n const url = new URL(path, this.baseUrl);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n \"X-Tenant-Key\": this.config.tenantKey,\n };\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (authenticated) {\n const token = this.config.getAccessToken();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n }\n\n return this.fetchFn(url.toString(), {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n\n private async throwIfError(response: Response): Promise<void> {\n if (!response.ok) {\n const errorBody = await response.json().catch(() => null);\n throw new ApiError(\n response.status,\n errorBody?.error?.code ?? \"UNKNOWN_ERROR\",\n errorBody?.error?.message ?? response.statusText,\n errorBody?.meta?.requestId,\n );\n }\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<T> {\n const { isRetry = false, authenticated = true } = options;\n\n const response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && !isRetry && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n return this.request<T>(method, path, { ...options, isRetry: true });\n }\n }\n\n await this.throwIfError(response);\n\n const contentType = response.headers.get(\"content-type\");\n if (!contentType?.includes(\"application/json\")) {\n return undefined as T;\n }\n\n const json = await response.json();\n return (json && \"data\" in json && \"meta\" in json ? json.data : json) as T;\n }\n\n private attemptTokenRefresh(): Promise<boolean> {\n if (this.refreshPromise) return this.refreshPromise;\n this.refreshPromise = this.doRefresh().finally(() => {\n this.refreshPromise = null;\n });\n return this.refreshPromise;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.config.getRefreshToken();\n if (!refreshToken) return false;\n\n try {\n const tokens = await this.request<TokensResponseDto>(\n \"POST\",\n \"/api/v1/auth/refresh\",\n {\n body: { refreshToken },\n authenticated: false,\n isRetry: true,\n },\n );\n await this.config.onTokenRefreshed(tokens);\n return true;\n } catch {\n return false;\n }\n }\n\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"GET\", path, options);\n }\n\n post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"POST\", path, { ...options, body });\n }\n\n patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PATCH\", path, { ...options, body });\n }\n\n put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PUT\", path, { ...options, body });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"DELETE\", path, options);\n }\n\n async rawRequest(method: HttpMethod, path: string, options: RequestOptions = {}): Promise<Response> {\n const { authenticated = true } = options;\n\n let response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n response = await this.buildAndFetch(method, path, options);\n }\n }\n\n await this.throwIfError(response);\n\n return response;\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n StartAuthResponseDto,\n} from \"../types\";\n\nexport class AuthResource {\n constructor(private http: HttpClient) {}\n\n register(data: RegisterDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/register\", data, { authenticated: false });\n }\n\n login(data: LoginDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/login\", data, { authenticated: false });\n }\n\n startAuth(data: LoginDto): Promise<StartAuthResponseDto> {\n return this.http.post(\"/api/v1/auth/start\", data, { authenticated: false });\n }\n\n verifyOtp(data: VerifyOtpDto): Promise<AuthResponseDto> {\n return this.http.post(\"/api/v1/auth/verify-otp\", data, { authenticated: false });\n }\n\n refresh(data: RefreshTokenDto): Promise<TokensResponseDto> {\n return this.http.post(\"/api/v1/auth/refresh\", data, { authenticated: false });\n }\n\n logout(): Promise<void> {\n return this.http.post(\"/api/v1/auth/logout\");\n }\n\n getProfile(): Promise<UserResponseDto> {\n return this.http.get(\"/api/v1/auth/me\");\n }\n\n updateProfile(data: UpdateProfileDto): Promise<UserResponseDto> {\n return this.http.patch(\"/api/v1/auth/me\", data);\n }\n\n deleteAccount(): Promise<void> {\n return this.http.delete(\"/api/v1/auth/me\");\n }\n\n requestEmailChange(data: RequestEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/request-email-change\", data);\n }\n\n confirmEmailChange(data: ConfirmEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/confirm-email-change\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PlanResponseDto } from \"../types\";\n\nexport class PlansResource {\n constructor(private http: HttpClient) {}\n\n list(): Promise<PlanResponseDto[]> {\n return this.http.get(\"/api/v1/public/plans\", { authenticated: false });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n CreditTransactionType,\n} from \"../types\";\n\nexport class CreditsResource {\n constructor(private http: HttpClient) {}\n\n getBalance(): Promise<CreditBalanceResponseDto> {\n return this.http.get(\"/api/v1/credits/balance\");\n }\n\n getTransactions(query?: {\n cursor?: string;\n limit?: number;\n type?: CreditTransactionType;\n }): Promise<CreditTransactionResponseDto[]> {\n return this.http.get(\"/api/v1/credits/transactions\", { query });\n }\n\n}\n","import type { HttpClient } from \"../http\";\nimport type { BillingResponseDto, UpsertBillingDto } from \"../types\";\n\nexport class BillingResource {\n constructor(private http: HttpClient) {}\n\n get(): Promise<BillingResponseDto> {\n return this.http.get(\"/api/v1/billing\");\n }\n\n upsert(data: UpsertBillingDto): Promise<BillingResponseDto> {\n return this.http.put(\"/api/v1/billing\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n PreferenceResponseDto,\n UpdatePreferencesDto,\n} from \"../types\";\n\nexport class PreferencesResource {\n constructor(private http: HttpClient) {}\n\n getAll(): Promise<PreferenceResponseDto[]> {\n return this.http.get(\"/api/v1/preferences\");\n }\n\n getByAppKey(appKey: string): Promise<PreferenceResponseDto> {\n return this.http.get(`/api/v1/preferences/${appKey}`);\n }\n\n upsert(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.put(`/api/v1/preferences/${appKey}`, data);\n }\n\n remove(appKey: string): Promise<void> {\n return this.http.delete(`/api/v1/preferences/${appKey}`);\n }\n\n merge(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.patch(`/api/v1/preferences/${appKey}`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateConversationDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n AddMessageDto,\n ConversationStatus,\n} from \"../types\";\n\nexport class ConversationsResource {\n constructor(private http: HttpClient) {}\n\n create(data: CreateConversationDto): Promise<ConversationResponseDto> {\n return this.http.post(\"/api/v1/conversations\", data);\n }\n\n list(query?: {\n cursor?: string;\n limit?: number;\n status?: ConversationStatus;\n appKey?: string;\n }): Promise<ConversationResponseDto[]> {\n return this.http.get(\"/api/v1/conversations\", { query });\n }\n\n get(id: string): Promise<ConversationResponseDto> {\n return this.http.get(`/api/v1/conversations/${id}`);\n }\n\n archive(id: string): Promise<ConversationResponseDto> {\n return this.http.patch(`/api/v1/conversations/${id}/archive`);\n }\n\n listMessages(conversationId: string, query?: {\n cursor?: string;\n limit?: number;\n }): Promise<ConversationMessageResponseDto[]> {\n return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });\n }\n\n addMessage(conversationId: string, data: AddMessageDto): Promise<ConversationMessageResponseDto> {\n return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { GenerateDto } from \"../types\";\n\nexport interface GenerationDoneData {\n messageId: string;\n usage?: { inputTokens: number; outputTokens: number };\n structuredOutput?: Record<string, unknown>;\n}\n\nexport interface SseStreamOptions {\n onTextDelta?: (text: string) => void;\n onDone?: (data: GenerationDoneData) => void;\n onError?: (error: string) => void;\n signal?: AbortSignal;\n}\n\ntype SseEvent =\n | { type: \"text_delta\"; text: string }\n | { type: \"done\"; messageId: string; usage?: { inputTokens: number; outputTokens: number }; structuredOutput?: Record<string, unknown> }\n | { type: \"error\"; error: string };\n\nexport class GenerationResource {\n constructor(private http: HttpClient) {}\n\n async generate(conversationId: string, data: GenerateDto, options?: SseStreamOptions): Promise<string> {\n const response = await this.http.rawRequest(\"POST\", `/api/v1/conversations/${conversationId}/generate`, {\n body: data,\n });\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"No response body\");\n\n const decoder = new TextDecoder();\n const parts: string[] = [];\n let buffer = \"\";\n\n try {\n while (true) {\n if (options?.signal?.aborted) {\n reader.cancel();\n break;\n }\n\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const jsonStr = line.slice(6).trim();\n if (!jsonStr) continue;\n\n let event: SseEvent;\n try {\n event = JSON.parse(jsonStr);\n } catch {\n continue;\n }\n\n if (event.type === \"text_delta\") {\n parts.push(event.text);\n options?.onTextDelta?.(event.text);\n } else if (event.type === \"done\") {\n options?.onDone?.(event);\n } else if (event.type === \"error\") {\n options?.onError?.(event.error);\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return parts.join(\"\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n TriggerImageDto,\n ImageStatusResponseDto,\n} from \"../types\";\n\nexport class ImagesResource {\n constructor(private http: HttpClient) {}\n\n trigger(messageId: string, data: TriggerImageDto): Promise<ImageStatusResponseDto> {\n return this.http.post(`/api/v1/messages/${messageId}/images`, data);\n }\n\n getAll(messageId: string): Promise<ImageStatusResponseDto[]> {\n return this.http.get(`/api/v1/messages/${messageId}/images`);\n }\n\n getBySlot(messageId: string, slot: string): Promise<ImageStatusResponseDto> {\n return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n} from \"../types\";\n\nexport class PaymentsResource {\n constructor(private http: HttpClient) {}\n\n checkout(data: CreateCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout\", data);\n }\n\n checkoutCustom(data: CreateCustomCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout/custom\", data);\n }\n\n creditPricing(): Promise<CreditPricingResponseDto> {\n return this.http.get(\"/api/v1/payments/credit-pricing\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { TenantPublicInfoDto } from \"../types\";\n\nexport class TenantsResource {\n constructor(private http: HttpClient) {}\n\n getPublicInfo(tenantId: string): Promise<TenantPublicInfoDto> {\n return this.http.get(\"/api/v1/tenants/public-info\", {\n authenticated: false,\n query: { tenantId },\n });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { ReceiptItemDto } from \"../types\";\n\nexport class ReceiptsResource {\n constructor(private http: HttpClient) {}\n\n list(query?: { cursor?: string; limit?: number }): Promise<ReceiptItemDto[]> {\n return this.http.get(\"/api/v1/receipts\", { query });\n }\n\n async download(id: string): Promise<Blob> {\n const response = await this.http.rawRequest(\"GET\", `/api/v1/receipts/${id}/download`);\n return response.blob();\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n EmailPreferencesResponseDto,\n UpdateEmailPreferencesDto,\n UpdateEmailPreferencesTokenDto,\n} from \"../types\";\n\nexport class EmailPreferencesResource {\n constructor(private http: HttpClient) {}\n\n /** Public, token-based: fetch subscription state via an unsubscribe link token. */\n getByToken(token: string): Promise<EmailPreferencesResponseDto> {\n return this.http.get(\"/api/v1/email-preferences\", {\n authenticated: false,\n query: { token },\n });\n }\n\n /** Public, token-based: update subscription state via an unsubscribe link token. */\n updateByToken(data: UpdateEmailPreferencesTokenDto): Promise<EmailPreferencesResponseDto> {\n return this.http.patch(\"/api/v1/email-preferences\", data, { authenticated: false });\n }\n\n /** Authenticated: fetch the current user's subscription state. */\n getMine(): Promise<EmailPreferencesResponseDto> {\n return this.http.get(\"/api/v1/email-preferences/me\");\n }\n\n /** Authenticated: update the current user's subscription state. */\n updateMine(data: UpdateEmailPreferencesDto): Promise<EmailPreferencesResponseDto> {\n return this.http.patch(\"/api/v1/email-preferences/me\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { ContactDto, MessageResponseDto } from \"../types\";\n\nexport class ContactResource {\n constructor(private http: HttpClient) {}\n\n /** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */\n send(data: ContactDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/contact\", data, { authenticated: false });\n }\n}\n","import { HttpClient } from \"./http\";\nimport type { TokensResponseDto, PingResponseDto } from \"./types\";\nimport { AuthResource } from \"./resources/auth\";\nimport { PlansResource } from \"./resources/plans\";\nimport { CreditsResource } from \"./resources/credits\";\nimport { BillingResource } from \"./resources/billing\";\nimport { PreferencesResource } from \"./resources/preferences\";\nimport { ConversationsResource } from \"./resources/conversations\";\nimport { GenerationResource } from \"./resources/generation\";\nimport { ImagesResource } from \"./resources/images\";\nimport { PaymentsResource } from \"./resources/payments\";\nimport { TenantsResource } from \"./resources/tenants\";\nimport { ReceiptsResource } from \"./resources/receipts\";\nimport { EmailPreferencesResource } from \"./resources/email-preferences\";\nimport { ContactResource } from \"./resources/contact\";\n\nexport interface ClientOptions {\n baseUrl: string;\n tenantKey: string;\n accessToken?: string;\n refreshToken?: string;\n onTokenRefreshed?: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface AiAssistantsClient {\n auth: AuthResource;\n plans: PlansResource;\n credits: CreditsResource;\n billing: BillingResource;\n preferences: PreferencesResource;\n conversations: ConversationsResource;\n generation: GenerationResource;\n images: ImagesResource;\n payments: PaymentsResource;\n tenants: TenantsResource;\n receipts: ReceiptsResource;\n emailPreferences: EmailPreferencesResource;\n contact: ContactResource;\n /**\n * Verify the client is configured correctly: confirms the base URL is\n * reachable and the tenant key is valid. Resolves with the tenant identity\n * when the SDK is ready to use, and rejects with an {@link ApiError} otherwise.\n */\n ping(): Promise<PingResponseDto>;\n setAccessToken(token: string): void;\n setRefreshToken(token: string): void;\n}\n\nexport function createClient(options: ClientOptions): AiAssistantsClient {\n let accessToken = options.accessToken ?? null;\n let refreshToken = options.refreshToken ?? null;\n\n const http = new HttpClient({\n baseUrl: options.baseUrl,\n tenantKey: options.tenantKey,\n fetch: options.fetch,\n getAccessToken: () => accessToken,\n getRefreshToken: () => refreshToken,\n onTokenRefreshed: async (tokens) => {\n accessToken = tokens.accessToken;\n refreshToken = tokens.refreshToken;\n await options.onTokenRefreshed?.(tokens);\n },\n });\n\n return {\n auth: new AuthResource(http),\n plans: new PlansResource(http),\n credits: new CreditsResource(http),\n billing: new BillingResource(http),\n preferences: new PreferencesResource(http),\n conversations: new ConversationsResource(http),\n generation: new GenerationResource(http),\n images: new ImagesResource(http),\n payments: new PaymentsResource(http),\n tenants: new TenantsResource(http),\n receipts: new ReceiptsResource(http),\n emailPreferences: new EmailPreferencesResource(http),\n contact: new ContactResource(http),\n ping() {\n return http.get<PingResponseDto>(\"/api/v1/ping\", { authenticated: false });\n },\n setAccessToken(token: string) {\n accessToken = token;\n },\n setRefreshToken(token: string) {\n refreshToken = token;\n },\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -151,26 +151,6 @@ interface components {
|
|
|
151
151
|
referenceId: Record<string, never> | null;
|
|
152
152
|
description: Record<string, never> | null;
|
|
153
153
|
};
|
|
154
|
-
PurchaseCreditsDto: {
|
|
155
|
-
/** Format: uuid */
|
|
156
|
-
planId: string;
|
|
157
|
-
};
|
|
158
|
-
CreditBalanceEntityResponseDto: {
|
|
159
|
-
/** Format: uuid */
|
|
160
|
-
id: string;
|
|
161
|
-
/** Format: date-time */
|
|
162
|
-
createdAt: string;
|
|
163
|
-
/** Format: date-time */
|
|
164
|
-
updatedAt: string;
|
|
165
|
-
/** Format: uuid */
|
|
166
|
-
userId: string;
|
|
167
|
-
/** @example 500 */
|
|
168
|
-
balance: number;
|
|
169
|
-
};
|
|
170
|
-
PurchaseCreditsResponseDto: {
|
|
171
|
-
transaction: components["schemas"]["CreditTransactionResponseDto"];
|
|
172
|
-
balance: components["schemas"]["CreditBalanceEntityResponseDto"];
|
|
173
|
-
};
|
|
174
154
|
BillingResponseDto: {
|
|
175
155
|
/** Format: uuid */
|
|
176
156
|
id: string;
|
|
@@ -186,10 +166,12 @@ interface components {
|
|
|
186
166
|
companyName?: Record<string, never> | null;
|
|
187
167
|
/** @example US123456789 */
|
|
188
168
|
taxId?: Record<string, never> | null;
|
|
189
|
-
/** @example
|
|
190
|
-
|
|
191
|
-
/** @example
|
|
192
|
-
|
|
169
|
+
/** @example Main Street */
|
|
170
|
+
address: string;
|
|
171
|
+
/** @example 12B */
|
|
172
|
+
houseNumber: string;
|
|
173
|
+
/** @example Manhattan */
|
|
174
|
+
district?: Record<string, never> | null;
|
|
193
175
|
/** @example New York */
|
|
194
176
|
city: string;
|
|
195
177
|
/** @example NY */
|
|
@@ -201,7 +183,9 @@ interface components {
|
|
|
201
183
|
* @example US
|
|
202
184
|
*/
|
|
203
185
|
country: string;
|
|
204
|
-
/** @example +1
|
|
186
|
+
/** @example +1 */
|
|
187
|
+
phoneCountryCode?: Record<string, never> | null;
|
|
188
|
+
/** @example (555) 123-4567 */
|
|
205
189
|
phone?: Record<string, never> | null;
|
|
206
190
|
};
|
|
207
191
|
UpsertBillingDto: {
|
|
@@ -213,22 +197,26 @@ interface components {
|
|
|
213
197
|
companyName?: string;
|
|
214
198
|
/** @example US123456789 */
|
|
215
199
|
taxId?: string;
|
|
216
|
-
/**
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
200
|
+
/**
|
|
201
|
+
* @description ISO 3166-1 alpha-2 country code
|
|
202
|
+
* @example US
|
|
203
|
+
*/
|
|
204
|
+
country: string;
|
|
220
205
|
/** @example New York */
|
|
221
206
|
city: string;
|
|
207
|
+
/** @example Main Street */
|
|
208
|
+
address: string;
|
|
209
|
+
/** @example 12B */
|
|
210
|
+
houseNumber: string;
|
|
211
|
+
/** @example Manhattan */
|
|
212
|
+
district?: string;
|
|
222
213
|
/** @example NY */
|
|
223
214
|
state?: string;
|
|
224
215
|
/** @example 10001 */
|
|
225
216
|
postalCode: string;
|
|
226
|
-
/**
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
*/
|
|
230
|
-
country: string;
|
|
231
|
-
/** @example +1-555-123-4567 */
|
|
217
|
+
/** @example +1 */
|
|
218
|
+
phoneCountryCode?: string;
|
|
219
|
+
/** @example (555) 123-4567 */
|
|
232
220
|
phone?: string;
|
|
233
221
|
};
|
|
234
222
|
PreferenceResponseDto: {
|
|
@@ -255,6 +243,47 @@ interface components {
|
|
|
255
243
|
*/
|
|
256
244
|
preferences: Record<string, never>;
|
|
257
245
|
};
|
|
246
|
+
EmailCategoryDto: {
|
|
247
|
+
/** @example marketing */
|
|
248
|
+
key: string;
|
|
249
|
+
/** @example Marketing & promotional emails */
|
|
250
|
+
label: string;
|
|
251
|
+
/** @example true */
|
|
252
|
+
subscribed: boolean;
|
|
253
|
+
};
|
|
254
|
+
EmailPreferencesResponseDto: {
|
|
255
|
+
/** @example j•••@example.com */
|
|
256
|
+
email: string;
|
|
257
|
+
categories: components["schemas"]["EmailCategoryDto"][];
|
|
258
|
+
};
|
|
259
|
+
UpdateEmailPreferencesTokenDto: {
|
|
260
|
+
/** @example eyJhbGciOi... */
|
|
261
|
+
token: string;
|
|
262
|
+
/**
|
|
263
|
+
* @example {
|
|
264
|
+
* "marketing": false
|
|
265
|
+
* }
|
|
266
|
+
*/
|
|
267
|
+
preferences: Record<string, never>;
|
|
268
|
+
};
|
|
269
|
+
UpdateEmailPreferencesDto: {
|
|
270
|
+
/**
|
|
271
|
+
* @example {
|
|
272
|
+
* "marketing": false
|
|
273
|
+
* }
|
|
274
|
+
*/
|
|
275
|
+
preferences: Record<string, never>;
|
|
276
|
+
};
|
|
277
|
+
ContactDto: {
|
|
278
|
+
/** @example Jane Doe */
|
|
279
|
+
name: string;
|
|
280
|
+
/** @example jane@example.com */
|
|
281
|
+
email: string;
|
|
282
|
+
/** @example Question about my booking */
|
|
283
|
+
subject: string;
|
|
284
|
+
/** @example Hello, I would like to ask about... */
|
|
285
|
+
body: string;
|
|
286
|
+
};
|
|
258
287
|
CreateConversationDto: {
|
|
259
288
|
title?: string;
|
|
260
289
|
/** @example travel */
|
|
@@ -301,11 +330,6 @@ interface components {
|
|
|
301
330
|
metadata: Record<string, never>;
|
|
302
331
|
tokenCount?: Record<string, never> | null;
|
|
303
332
|
};
|
|
304
|
-
PaginatedResponse: {
|
|
305
|
-
hasMore: boolean;
|
|
306
|
-
nextCursor: string | null;
|
|
307
|
-
total?: number;
|
|
308
|
-
};
|
|
309
333
|
GenerateDto: {
|
|
310
334
|
content: string;
|
|
311
335
|
/** @default false */
|
|
@@ -406,7 +430,6 @@ type RefreshTokenDto = components["schemas"]["RefreshTokenDto"];
|
|
|
406
430
|
type UpdateProfileDto = components["schemas"]["UpdateProfileDto"];
|
|
407
431
|
type RequestEmailChangeDto = components["schemas"]["RequestEmailChangeDto"];
|
|
408
432
|
type ConfirmEmailChangeDto = components["schemas"]["ConfirmEmailChangeDto"];
|
|
409
|
-
type PurchaseCreditsDto = components["schemas"]["PurchaseCreditsDto"];
|
|
410
433
|
type UpsertBillingDto = components["schemas"]["UpsertBillingDto"];
|
|
411
434
|
type UpdatePreferencesDto = components["schemas"]["UpdatePreferencesDto"];
|
|
412
435
|
type CreateConversationDto = components["schemas"]["CreateConversationDto"];
|
|
@@ -415,6 +438,7 @@ type GenerateDto = components["schemas"]["GenerateDto"];
|
|
|
415
438
|
type TriggerImageDto = components["schemas"]["TriggerImageDto"];
|
|
416
439
|
type CreateCheckoutDto = components["schemas"]["CreateCheckoutDto"];
|
|
417
440
|
type CreateCustomCheckoutDto = components["schemas"]["CreateCustomCheckoutDto"];
|
|
441
|
+
type ContactDto = components["schemas"]["ContactDto"];
|
|
418
442
|
type MessageResponseDto = components["schemas"]["MessageResponseDto"];
|
|
419
443
|
type StartAuthResponseDto = MessageResponseDto & {
|
|
420
444
|
type: OtpType;
|
|
@@ -425,8 +449,6 @@ type UserResponseDto = components["schemas"]["UserResponseDto"];
|
|
|
425
449
|
type PlanResponseDto = components["schemas"]["PlanResponseDto"];
|
|
426
450
|
type CreditBalanceResponseDto = components["schemas"]["CreditBalanceResponseDto"];
|
|
427
451
|
type CreditTransactionResponseDto = components["schemas"]["CreditTransactionResponseDto"];
|
|
428
|
-
type PurchaseCreditsResponseDto = components["schemas"]["PurchaseCreditsResponseDto"];
|
|
429
|
-
type CreditBalanceEntityResponseDto = components["schemas"]["CreditBalanceEntityResponseDto"];
|
|
430
452
|
type BillingResponseDto = components["schemas"]["BillingResponseDto"];
|
|
431
453
|
type PreferenceResponseDto = components["schemas"]["PreferenceResponseDto"];
|
|
432
454
|
type ConversationResponseDto = components["schemas"]["ConversationResponseDto"] & {
|
|
@@ -439,7 +461,7 @@ type CheckoutResponseDto = components["schemas"]["CheckoutResponseDto"];
|
|
|
439
461
|
type CreditPricingResponseDto = components["schemas"]["CreditPricingResponseDto"];
|
|
440
462
|
type TenantPublicInfoDto = components["schemas"]["TenantPublicInfoDto"];
|
|
441
463
|
type PingResponseDto = components["schemas"]["PingResponseDto"];
|
|
442
|
-
type
|
|
464
|
+
type ReceiptItemDto = components["schemas"]["ReceiptItemDto"];
|
|
443
465
|
type OtpType = components["schemas"]["OtpType"];
|
|
444
466
|
type UserRole = components["schemas"]["UserRole"];
|
|
445
467
|
type PlanType = components["schemas"]["PlanType"];
|
|
@@ -447,6 +469,10 @@ type CreditTransactionType = components["schemas"]["CreditTransactionType"];
|
|
|
447
469
|
type ConversationStatus = ConversationResponseDto["status"];
|
|
448
470
|
type MessageRole = ConversationMessageResponseDto["role"];
|
|
449
471
|
type ImageGenerationStatus = ImageStatusResponseDto["status"];
|
|
472
|
+
type EmailPreferencesResponseDto = components["schemas"]["EmailPreferencesResponseDto"];
|
|
473
|
+
type EmailCategoryDto = components["schemas"]["EmailCategoryDto"];
|
|
474
|
+
type UpdateEmailPreferencesDto = components["schemas"]["UpdateEmailPreferencesDto"];
|
|
475
|
+
type UpdateEmailPreferencesTokenDto = components["schemas"]["UpdateEmailPreferencesTokenDto"];
|
|
450
476
|
|
|
451
477
|
interface HttpClientConfig {
|
|
452
478
|
baseUrl: string;
|
|
@@ -512,7 +538,6 @@ declare class CreditsResource {
|
|
|
512
538
|
limit?: number;
|
|
513
539
|
type?: CreditTransactionType;
|
|
514
540
|
}): Promise<CreditTransactionResponseDto[]>;
|
|
515
|
-
purchase(data: PurchaseCreditsDto): Promise<PurchaseCreditsResponseDto>;
|
|
516
541
|
}
|
|
517
542
|
|
|
518
543
|
declare class BillingResource {
|
|
@@ -599,10 +624,30 @@ declare class ReceiptsResource {
|
|
|
599
624
|
list(query?: {
|
|
600
625
|
cursor?: string;
|
|
601
626
|
limit?: number;
|
|
602
|
-
}): Promise<
|
|
627
|
+
}): Promise<ReceiptItemDto[]>;
|
|
603
628
|
download(id: string): Promise<Blob>;
|
|
604
629
|
}
|
|
605
630
|
|
|
631
|
+
declare class EmailPreferencesResource {
|
|
632
|
+
private http;
|
|
633
|
+
constructor(http: HttpClient);
|
|
634
|
+
/** Public, token-based: fetch subscription state via an unsubscribe link token. */
|
|
635
|
+
getByToken(token: string): Promise<EmailPreferencesResponseDto>;
|
|
636
|
+
/** Public, token-based: update subscription state via an unsubscribe link token. */
|
|
637
|
+
updateByToken(data: UpdateEmailPreferencesTokenDto): Promise<EmailPreferencesResponseDto>;
|
|
638
|
+
/** Authenticated: fetch the current user's subscription state. */
|
|
639
|
+
getMine(): Promise<EmailPreferencesResponseDto>;
|
|
640
|
+
/** Authenticated: update the current user's subscription state. */
|
|
641
|
+
updateMine(data: UpdateEmailPreferencesDto): Promise<EmailPreferencesResponseDto>;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
declare class ContactResource {
|
|
645
|
+
private http;
|
|
646
|
+
constructor(http: HttpClient);
|
|
647
|
+
/** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */
|
|
648
|
+
send(data: ContactDto): Promise<MessageResponseDto>;
|
|
649
|
+
}
|
|
650
|
+
|
|
606
651
|
interface ClientOptions {
|
|
607
652
|
baseUrl: string;
|
|
608
653
|
tenantKey: string;
|
|
@@ -623,6 +668,8 @@ interface AiAssistantsClient {
|
|
|
623
668
|
payments: PaymentsResource;
|
|
624
669
|
tenants: TenantsResource;
|
|
625
670
|
receipts: ReceiptsResource;
|
|
671
|
+
emailPreferences: EmailPreferencesResource;
|
|
672
|
+
contact: ContactResource;
|
|
626
673
|
/**
|
|
627
674
|
* Verify the client is configured correctly: confirms the base URL is
|
|
628
675
|
* reachable and the tenant key is valid. Resolves with the tenant identity
|
|
@@ -641,4 +688,4 @@ declare class ApiError extends Error {
|
|
|
641
688
|
constructor(statusCode: number, code: string, message: string | string[], requestId?: string | undefined);
|
|
642
689
|
}
|
|
643
690
|
|
|
644
|
-
export { type AddMessageDto, type AiAssistantsClient, ApiError, type AuthResponseDto, type BillingResponseDto, type CheckoutResponseDto, type ClientOptions, type ConfirmEmailChangeDto, type ConversationMessageResponseDto, type ConversationResponseDto, type ConversationStatus, type CreateCheckoutDto, type CreateConversationDto, type CreateCustomCheckoutDto, type
|
|
691
|
+
export { type AddMessageDto, type AiAssistantsClient, ApiError, type AuthResponseDto, type BillingResponseDto, type CheckoutResponseDto, type ClientOptions, type ConfirmEmailChangeDto, type ContactDto, type ConversationMessageResponseDto, type ConversationResponseDto, type ConversationStatus, type CreateCheckoutDto, type CreateConversationDto, type CreateCustomCheckoutDto, type CreditBalanceResponseDto, type CreditPricingResponseDto, type CreditTransactionResponseDto, type CreditTransactionType, type EmailCategoryDto, type EmailPreferencesResponseDto, type GenerateDto, type GenerationDoneData, type ImageGenerationStatus, type ImageStatusResponseDto, type LoginDto, type MessageResponseDto, type MessageRole, type OtpType, type PingResponseDto, type PlanResponseDto, type PlanType, type PreferenceResponseDto, type ReceiptItemDto, type RefreshTokenDto, type RegisterDto, type RequestEmailChangeDto, type SseStreamOptions, type StartAuthResponseDto, type TenantPublicInfoDto, type TokensResponseDto, type TriggerImageDto, type UpdateEmailPreferencesDto, type UpdateEmailPreferencesTokenDto, type UpdatePreferencesDto, type UpdateProfileDto, type UpsertBillingDto, type UserResponseDto, type UserRole, type VerifyOtpDto, createClient };
|
package/dist/index.d.ts
CHANGED
|
@@ -151,26 +151,6 @@ interface components {
|
|
|
151
151
|
referenceId: Record<string, never> | null;
|
|
152
152
|
description: Record<string, never> | null;
|
|
153
153
|
};
|
|
154
|
-
PurchaseCreditsDto: {
|
|
155
|
-
/** Format: uuid */
|
|
156
|
-
planId: string;
|
|
157
|
-
};
|
|
158
|
-
CreditBalanceEntityResponseDto: {
|
|
159
|
-
/** Format: uuid */
|
|
160
|
-
id: string;
|
|
161
|
-
/** Format: date-time */
|
|
162
|
-
createdAt: string;
|
|
163
|
-
/** Format: date-time */
|
|
164
|
-
updatedAt: string;
|
|
165
|
-
/** Format: uuid */
|
|
166
|
-
userId: string;
|
|
167
|
-
/** @example 500 */
|
|
168
|
-
balance: number;
|
|
169
|
-
};
|
|
170
|
-
PurchaseCreditsResponseDto: {
|
|
171
|
-
transaction: components["schemas"]["CreditTransactionResponseDto"];
|
|
172
|
-
balance: components["schemas"]["CreditBalanceEntityResponseDto"];
|
|
173
|
-
};
|
|
174
154
|
BillingResponseDto: {
|
|
175
155
|
/** Format: uuid */
|
|
176
156
|
id: string;
|
|
@@ -186,10 +166,12 @@ interface components {
|
|
|
186
166
|
companyName?: Record<string, never> | null;
|
|
187
167
|
/** @example US123456789 */
|
|
188
168
|
taxId?: Record<string, never> | null;
|
|
189
|
-
/** @example
|
|
190
|
-
|
|
191
|
-
/** @example
|
|
192
|
-
|
|
169
|
+
/** @example Main Street */
|
|
170
|
+
address: string;
|
|
171
|
+
/** @example 12B */
|
|
172
|
+
houseNumber: string;
|
|
173
|
+
/** @example Manhattan */
|
|
174
|
+
district?: Record<string, never> | null;
|
|
193
175
|
/** @example New York */
|
|
194
176
|
city: string;
|
|
195
177
|
/** @example NY */
|
|
@@ -201,7 +183,9 @@ interface components {
|
|
|
201
183
|
* @example US
|
|
202
184
|
*/
|
|
203
185
|
country: string;
|
|
204
|
-
/** @example +1
|
|
186
|
+
/** @example +1 */
|
|
187
|
+
phoneCountryCode?: Record<string, never> | null;
|
|
188
|
+
/** @example (555) 123-4567 */
|
|
205
189
|
phone?: Record<string, never> | null;
|
|
206
190
|
};
|
|
207
191
|
UpsertBillingDto: {
|
|
@@ -213,22 +197,26 @@ interface components {
|
|
|
213
197
|
companyName?: string;
|
|
214
198
|
/** @example US123456789 */
|
|
215
199
|
taxId?: string;
|
|
216
|
-
/**
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
200
|
+
/**
|
|
201
|
+
* @description ISO 3166-1 alpha-2 country code
|
|
202
|
+
* @example US
|
|
203
|
+
*/
|
|
204
|
+
country: string;
|
|
220
205
|
/** @example New York */
|
|
221
206
|
city: string;
|
|
207
|
+
/** @example Main Street */
|
|
208
|
+
address: string;
|
|
209
|
+
/** @example 12B */
|
|
210
|
+
houseNumber: string;
|
|
211
|
+
/** @example Manhattan */
|
|
212
|
+
district?: string;
|
|
222
213
|
/** @example NY */
|
|
223
214
|
state?: string;
|
|
224
215
|
/** @example 10001 */
|
|
225
216
|
postalCode: string;
|
|
226
|
-
/**
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
*/
|
|
230
|
-
country: string;
|
|
231
|
-
/** @example +1-555-123-4567 */
|
|
217
|
+
/** @example +1 */
|
|
218
|
+
phoneCountryCode?: string;
|
|
219
|
+
/** @example (555) 123-4567 */
|
|
232
220
|
phone?: string;
|
|
233
221
|
};
|
|
234
222
|
PreferenceResponseDto: {
|
|
@@ -255,6 +243,47 @@ interface components {
|
|
|
255
243
|
*/
|
|
256
244
|
preferences: Record<string, never>;
|
|
257
245
|
};
|
|
246
|
+
EmailCategoryDto: {
|
|
247
|
+
/** @example marketing */
|
|
248
|
+
key: string;
|
|
249
|
+
/** @example Marketing & promotional emails */
|
|
250
|
+
label: string;
|
|
251
|
+
/** @example true */
|
|
252
|
+
subscribed: boolean;
|
|
253
|
+
};
|
|
254
|
+
EmailPreferencesResponseDto: {
|
|
255
|
+
/** @example j•••@example.com */
|
|
256
|
+
email: string;
|
|
257
|
+
categories: components["schemas"]["EmailCategoryDto"][];
|
|
258
|
+
};
|
|
259
|
+
UpdateEmailPreferencesTokenDto: {
|
|
260
|
+
/** @example eyJhbGciOi... */
|
|
261
|
+
token: string;
|
|
262
|
+
/**
|
|
263
|
+
* @example {
|
|
264
|
+
* "marketing": false
|
|
265
|
+
* }
|
|
266
|
+
*/
|
|
267
|
+
preferences: Record<string, never>;
|
|
268
|
+
};
|
|
269
|
+
UpdateEmailPreferencesDto: {
|
|
270
|
+
/**
|
|
271
|
+
* @example {
|
|
272
|
+
* "marketing": false
|
|
273
|
+
* }
|
|
274
|
+
*/
|
|
275
|
+
preferences: Record<string, never>;
|
|
276
|
+
};
|
|
277
|
+
ContactDto: {
|
|
278
|
+
/** @example Jane Doe */
|
|
279
|
+
name: string;
|
|
280
|
+
/** @example jane@example.com */
|
|
281
|
+
email: string;
|
|
282
|
+
/** @example Question about my booking */
|
|
283
|
+
subject: string;
|
|
284
|
+
/** @example Hello, I would like to ask about... */
|
|
285
|
+
body: string;
|
|
286
|
+
};
|
|
258
287
|
CreateConversationDto: {
|
|
259
288
|
title?: string;
|
|
260
289
|
/** @example travel */
|
|
@@ -301,11 +330,6 @@ interface components {
|
|
|
301
330
|
metadata: Record<string, never>;
|
|
302
331
|
tokenCount?: Record<string, never> | null;
|
|
303
332
|
};
|
|
304
|
-
PaginatedResponse: {
|
|
305
|
-
hasMore: boolean;
|
|
306
|
-
nextCursor: string | null;
|
|
307
|
-
total?: number;
|
|
308
|
-
};
|
|
309
333
|
GenerateDto: {
|
|
310
334
|
content: string;
|
|
311
335
|
/** @default false */
|
|
@@ -406,7 +430,6 @@ type RefreshTokenDto = components["schemas"]["RefreshTokenDto"];
|
|
|
406
430
|
type UpdateProfileDto = components["schemas"]["UpdateProfileDto"];
|
|
407
431
|
type RequestEmailChangeDto = components["schemas"]["RequestEmailChangeDto"];
|
|
408
432
|
type ConfirmEmailChangeDto = components["schemas"]["ConfirmEmailChangeDto"];
|
|
409
|
-
type PurchaseCreditsDto = components["schemas"]["PurchaseCreditsDto"];
|
|
410
433
|
type UpsertBillingDto = components["schemas"]["UpsertBillingDto"];
|
|
411
434
|
type UpdatePreferencesDto = components["schemas"]["UpdatePreferencesDto"];
|
|
412
435
|
type CreateConversationDto = components["schemas"]["CreateConversationDto"];
|
|
@@ -415,6 +438,7 @@ type GenerateDto = components["schemas"]["GenerateDto"];
|
|
|
415
438
|
type TriggerImageDto = components["schemas"]["TriggerImageDto"];
|
|
416
439
|
type CreateCheckoutDto = components["schemas"]["CreateCheckoutDto"];
|
|
417
440
|
type CreateCustomCheckoutDto = components["schemas"]["CreateCustomCheckoutDto"];
|
|
441
|
+
type ContactDto = components["schemas"]["ContactDto"];
|
|
418
442
|
type MessageResponseDto = components["schemas"]["MessageResponseDto"];
|
|
419
443
|
type StartAuthResponseDto = MessageResponseDto & {
|
|
420
444
|
type: OtpType;
|
|
@@ -425,8 +449,6 @@ type UserResponseDto = components["schemas"]["UserResponseDto"];
|
|
|
425
449
|
type PlanResponseDto = components["schemas"]["PlanResponseDto"];
|
|
426
450
|
type CreditBalanceResponseDto = components["schemas"]["CreditBalanceResponseDto"];
|
|
427
451
|
type CreditTransactionResponseDto = components["schemas"]["CreditTransactionResponseDto"];
|
|
428
|
-
type PurchaseCreditsResponseDto = components["schemas"]["PurchaseCreditsResponseDto"];
|
|
429
|
-
type CreditBalanceEntityResponseDto = components["schemas"]["CreditBalanceEntityResponseDto"];
|
|
430
452
|
type BillingResponseDto = components["schemas"]["BillingResponseDto"];
|
|
431
453
|
type PreferenceResponseDto = components["schemas"]["PreferenceResponseDto"];
|
|
432
454
|
type ConversationResponseDto = components["schemas"]["ConversationResponseDto"] & {
|
|
@@ -439,7 +461,7 @@ type CheckoutResponseDto = components["schemas"]["CheckoutResponseDto"];
|
|
|
439
461
|
type CreditPricingResponseDto = components["schemas"]["CreditPricingResponseDto"];
|
|
440
462
|
type TenantPublicInfoDto = components["schemas"]["TenantPublicInfoDto"];
|
|
441
463
|
type PingResponseDto = components["schemas"]["PingResponseDto"];
|
|
442
|
-
type
|
|
464
|
+
type ReceiptItemDto = components["schemas"]["ReceiptItemDto"];
|
|
443
465
|
type OtpType = components["schemas"]["OtpType"];
|
|
444
466
|
type UserRole = components["schemas"]["UserRole"];
|
|
445
467
|
type PlanType = components["schemas"]["PlanType"];
|
|
@@ -447,6 +469,10 @@ type CreditTransactionType = components["schemas"]["CreditTransactionType"];
|
|
|
447
469
|
type ConversationStatus = ConversationResponseDto["status"];
|
|
448
470
|
type MessageRole = ConversationMessageResponseDto["role"];
|
|
449
471
|
type ImageGenerationStatus = ImageStatusResponseDto["status"];
|
|
472
|
+
type EmailPreferencesResponseDto = components["schemas"]["EmailPreferencesResponseDto"];
|
|
473
|
+
type EmailCategoryDto = components["schemas"]["EmailCategoryDto"];
|
|
474
|
+
type UpdateEmailPreferencesDto = components["schemas"]["UpdateEmailPreferencesDto"];
|
|
475
|
+
type UpdateEmailPreferencesTokenDto = components["schemas"]["UpdateEmailPreferencesTokenDto"];
|
|
450
476
|
|
|
451
477
|
interface HttpClientConfig {
|
|
452
478
|
baseUrl: string;
|
|
@@ -512,7 +538,6 @@ declare class CreditsResource {
|
|
|
512
538
|
limit?: number;
|
|
513
539
|
type?: CreditTransactionType;
|
|
514
540
|
}): Promise<CreditTransactionResponseDto[]>;
|
|
515
|
-
purchase(data: PurchaseCreditsDto): Promise<PurchaseCreditsResponseDto>;
|
|
516
541
|
}
|
|
517
542
|
|
|
518
543
|
declare class BillingResource {
|
|
@@ -599,10 +624,30 @@ declare class ReceiptsResource {
|
|
|
599
624
|
list(query?: {
|
|
600
625
|
cursor?: string;
|
|
601
626
|
limit?: number;
|
|
602
|
-
}): Promise<
|
|
627
|
+
}): Promise<ReceiptItemDto[]>;
|
|
603
628
|
download(id: string): Promise<Blob>;
|
|
604
629
|
}
|
|
605
630
|
|
|
631
|
+
declare class EmailPreferencesResource {
|
|
632
|
+
private http;
|
|
633
|
+
constructor(http: HttpClient);
|
|
634
|
+
/** Public, token-based: fetch subscription state via an unsubscribe link token. */
|
|
635
|
+
getByToken(token: string): Promise<EmailPreferencesResponseDto>;
|
|
636
|
+
/** Public, token-based: update subscription state via an unsubscribe link token. */
|
|
637
|
+
updateByToken(data: UpdateEmailPreferencesTokenDto): Promise<EmailPreferencesResponseDto>;
|
|
638
|
+
/** Authenticated: fetch the current user's subscription state. */
|
|
639
|
+
getMine(): Promise<EmailPreferencesResponseDto>;
|
|
640
|
+
/** Authenticated: update the current user's subscription state. */
|
|
641
|
+
updateMine(data: UpdateEmailPreferencesDto): Promise<EmailPreferencesResponseDto>;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
declare class ContactResource {
|
|
645
|
+
private http;
|
|
646
|
+
constructor(http: HttpClient);
|
|
647
|
+
/** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */
|
|
648
|
+
send(data: ContactDto): Promise<MessageResponseDto>;
|
|
649
|
+
}
|
|
650
|
+
|
|
606
651
|
interface ClientOptions {
|
|
607
652
|
baseUrl: string;
|
|
608
653
|
tenantKey: string;
|
|
@@ -623,6 +668,8 @@ interface AiAssistantsClient {
|
|
|
623
668
|
payments: PaymentsResource;
|
|
624
669
|
tenants: TenantsResource;
|
|
625
670
|
receipts: ReceiptsResource;
|
|
671
|
+
emailPreferences: EmailPreferencesResource;
|
|
672
|
+
contact: ContactResource;
|
|
626
673
|
/**
|
|
627
674
|
* Verify the client is configured correctly: confirms the base URL is
|
|
628
675
|
* reachable and the tenant key is valid. Resolves with the tenant identity
|
|
@@ -641,4 +688,4 @@ declare class ApiError extends Error {
|
|
|
641
688
|
constructor(statusCode: number, code: string, message: string | string[], requestId?: string | undefined);
|
|
642
689
|
}
|
|
643
690
|
|
|
644
|
-
export { type AddMessageDto, type AiAssistantsClient, ApiError, type AuthResponseDto, type BillingResponseDto, type CheckoutResponseDto, type ClientOptions, type ConfirmEmailChangeDto, type ConversationMessageResponseDto, type ConversationResponseDto, type ConversationStatus, type CreateCheckoutDto, type CreateConversationDto, type CreateCustomCheckoutDto, type
|
|
691
|
+
export { type AddMessageDto, type AiAssistantsClient, ApiError, type AuthResponseDto, type BillingResponseDto, type CheckoutResponseDto, type ClientOptions, type ConfirmEmailChangeDto, type ContactDto, type ConversationMessageResponseDto, type ConversationResponseDto, type ConversationStatus, type CreateCheckoutDto, type CreateConversationDto, type CreateCustomCheckoutDto, type CreditBalanceResponseDto, type CreditPricingResponseDto, type CreditTransactionResponseDto, type CreditTransactionType, type EmailCategoryDto, type EmailPreferencesResponseDto, type GenerateDto, type GenerationDoneData, type ImageGenerationStatus, type ImageStatusResponseDto, type LoginDto, type MessageResponseDto, type MessageRole, type OtpType, type PingResponseDto, type PlanResponseDto, type PlanType, type PreferenceResponseDto, type ReceiptItemDto, type RefreshTokenDto, type RegisterDto, type RequestEmailChangeDto, type SseStreamOptions, type StartAuthResponseDto, type TenantPublicInfoDto, type TokensResponseDto, type TriggerImageDto, type UpdateEmailPreferencesDto, type UpdateEmailPreferencesTokenDto, type UpdatePreferencesDto, type UpdateProfileDto, type UpsertBillingDto, type UserResponseDto, type UserRole, type VerifyOtpDto, createClient };
|
package/dist/index.js
CHANGED
|
@@ -189,9 +189,6 @@ var CreditsResource = class {
|
|
|
189
189
|
getTransactions(query) {
|
|
190
190
|
return this.http.get("/api/v1/credits/transactions", { query });
|
|
191
191
|
}
|
|
192
|
-
purchase(data) {
|
|
193
|
-
return this.http.post("/api/v1/credits/purchase", data);
|
|
194
|
-
}
|
|
195
192
|
};
|
|
196
193
|
|
|
197
194
|
// src/resources/billing.ts
|
|
@@ -365,6 +362,43 @@ var ReceiptsResource = class {
|
|
|
365
362
|
}
|
|
366
363
|
};
|
|
367
364
|
|
|
365
|
+
// src/resources/email-preferences.ts
|
|
366
|
+
var EmailPreferencesResource = class {
|
|
367
|
+
constructor(http) {
|
|
368
|
+
this.http = http;
|
|
369
|
+
}
|
|
370
|
+
/** Public, token-based: fetch subscription state via an unsubscribe link token. */
|
|
371
|
+
getByToken(token) {
|
|
372
|
+
return this.http.get("/api/v1/email-preferences", {
|
|
373
|
+
authenticated: false,
|
|
374
|
+
query: { token }
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
/** Public, token-based: update subscription state via an unsubscribe link token. */
|
|
378
|
+
updateByToken(data) {
|
|
379
|
+
return this.http.patch("/api/v1/email-preferences", data, { authenticated: false });
|
|
380
|
+
}
|
|
381
|
+
/** Authenticated: fetch the current user's subscription state. */
|
|
382
|
+
getMine() {
|
|
383
|
+
return this.http.get("/api/v1/email-preferences/me");
|
|
384
|
+
}
|
|
385
|
+
/** Authenticated: update the current user's subscription state. */
|
|
386
|
+
updateMine(data) {
|
|
387
|
+
return this.http.patch("/api/v1/email-preferences/me", data);
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// src/resources/contact.ts
|
|
392
|
+
var ContactResource = class {
|
|
393
|
+
constructor(http) {
|
|
394
|
+
this.http = http;
|
|
395
|
+
}
|
|
396
|
+
/** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */
|
|
397
|
+
send(data) {
|
|
398
|
+
return this.http.post("/api/v1/contact", data, { authenticated: false });
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
|
|
368
402
|
// src/client.ts
|
|
369
403
|
function createClient(options) {
|
|
370
404
|
let accessToken = options.accessToken ?? null;
|
|
@@ -393,6 +427,8 @@ function createClient(options) {
|
|
|
393
427
|
payments: new PaymentsResource(http),
|
|
394
428
|
tenants: new TenantsResource(http),
|
|
395
429
|
receipts: new ReceiptsResource(http),
|
|
430
|
+
emailPreferences: new EmailPreferencesResource(http),
|
|
431
|
+
contact: new ContactResource(http),
|
|
396
432
|
ping() {
|
|
397
433
|
return http.get("/api/v1/ping", { authenticated: false });
|
|
398
434
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/auth.ts","../src/resources/plans.ts","../src/resources/credits.ts","../src/resources/billing.ts","../src/resources/preferences.ts","../src/resources/conversations.ts","../src/resources/generation.ts","../src/resources/images.ts","../src/resources/payments.ts","../src/resources/tenants.ts","../src/resources/receipts.ts","../src/client.ts"],"sourcesContent":["export class ApiError extends Error {\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string | string[],\n public readonly requestId?: string,\n ) {\n super(Array.isArray(message) ? message.join(\", \") : message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"./errors\";\nimport type { TokensResponseDto } from \"./types\";\n\nexport interface HttpClientConfig {\n baseUrl: string;\n tenantKey: string;\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n onTokenRefreshed: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ninterface RequestOptions {\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined | null>;\n authenticated?: boolean;\n}\n\ninterface InternalRequestOptions extends RequestOptions {\n isRetry?: boolean;\n}\n\nexport class HttpClient {\n private refreshPromise: Promise<boolean> | null = null;\n private readonly baseUrl: URL;\n private readonly fetchFn: typeof globalThis.fetch;\n\n constructor(private config: HttpClientConfig) {\n this.baseUrl = new URL(config.baseUrl);\n this.fetchFn = config.fetch ?? globalThis.fetch;\n }\n\n private buildAndFetch(\n method: HttpMethod,\n path: string,\n options: RequestOptions = {},\n ): Promise<Response> {\n const { body, query, authenticated = true } = options;\n\n const url = new URL(path, this.baseUrl);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n \"X-Tenant-Key\": this.config.tenantKey,\n };\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (authenticated) {\n const token = this.config.getAccessToken();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n }\n\n return this.fetchFn(url.toString(), {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n\n private async throwIfError(response: Response): Promise<void> {\n if (!response.ok) {\n const errorBody = await response.json().catch(() => null);\n throw new ApiError(\n response.status,\n errorBody?.error?.code ?? \"UNKNOWN_ERROR\",\n errorBody?.error?.message ?? response.statusText,\n errorBody?.meta?.requestId,\n );\n }\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<T> {\n const { isRetry = false, authenticated = true } = options;\n\n const response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && !isRetry && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n return this.request<T>(method, path, { ...options, isRetry: true });\n }\n }\n\n await this.throwIfError(response);\n\n const contentType = response.headers.get(\"content-type\");\n if (!contentType?.includes(\"application/json\")) {\n return undefined as T;\n }\n\n const json = await response.json();\n return (json && \"data\" in json && \"meta\" in json ? json.data : json) as T;\n }\n\n private attemptTokenRefresh(): Promise<boolean> {\n if (this.refreshPromise) return this.refreshPromise;\n this.refreshPromise = this.doRefresh().finally(() => {\n this.refreshPromise = null;\n });\n return this.refreshPromise;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.config.getRefreshToken();\n if (!refreshToken) return false;\n\n try {\n const tokens = await this.request<TokensResponseDto>(\n \"POST\",\n \"/api/v1/auth/refresh\",\n {\n body: { refreshToken },\n authenticated: false,\n isRetry: true,\n },\n );\n await this.config.onTokenRefreshed(tokens);\n return true;\n } catch {\n return false;\n }\n }\n\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"GET\", path, options);\n }\n\n post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"POST\", path, { ...options, body });\n }\n\n patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PATCH\", path, { ...options, body });\n }\n\n put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PUT\", path, { ...options, body });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"DELETE\", path, options);\n }\n\n async rawRequest(method: HttpMethod, path: string, options: RequestOptions = {}): Promise<Response> {\n const { authenticated = true } = options;\n\n let response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n response = await this.buildAndFetch(method, path, options);\n }\n }\n\n await this.throwIfError(response);\n\n return response;\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n StartAuthResponseDto,\n} from \"../types\";\n\nexport class AuthResource {\n constructor(private http: HttpClient) {}\n\n register(data: RegisterDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/register\", data, { authenticated: false });\n }\n\n login(data: LoginDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/login\", data, { authenticated: false });\n }\n\n startAuth(data: LoginDto): Promise<StartAuthResponseDto> {\n return this.http.post(\"/api/v1/auth/start\", data, { authenticated: false });\n }\n\n verifyOtp(data: VerifyOtpDto): Promise<AuthResponseDto> {\n return this.http.post(\"/api/v1/auth/verify-otp\", data, { authenticated: false });\n }\n\n refresh(data: RefreshTokenDto): Promise<TokensResponseDto> {\n return this.http.post(\"/api/v1/auth/refresh\", data, { authenticated: false });\n }\n\n logout(): Promise<void> {\n return this.http.post(\"/api/v1/auth/logout\");\n }\n\n getProfile(): Promise<UserResponseDto> {\n return this.http.get(\"/api/v1/auth/me\");\n }\n\n updateProfile(data: UpdateProfileDto): Promise<UserResponseDto> {\n return this.http.patch(\"/api/v1/auth/me\", data);\n }\n\n deleteAccount(): Promise<void> {\n return this.http.delete(\"/api/v1/auth/me\");\n }\n\n requestEmailChange(data: RequestEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/request-email-change\", data);\n }\n\n confirmEmailChange(data: ConfirmEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/confirm-email-change\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PlanResponseDto } from \"../types\";\n\nexport class PlansResource {\n constructor(private http: HttpClient) {}\n\n list(): Promise<PlanResponseDto[]> {\n return this.http.get(\"/api/v1/public/plans\", { authenticated: false });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n CreditTransactionType,\n PurchaseCreditsDto,\n PurchaseCreditsResponseDto,\n} from \"../types\";\n\nexport class CreditsResource {\n constructor(private http: HttpClient) {}\n\n getBalance(): Promise<CreditBalanceResponseDto> {\n return this.http.get(\"/api/v1/credits/balance\");\n }\n\n getTransactions(query?: {\n cursor?: string;\n limit?: number;\n type?: CreditTransactionType;\n }): Promise<CreditTransactionResponseDto[]> {\n return this.http.get(\"/api/v1/credits/transactions\", { query });\n }\n\n purchase(data: PurchaseCreditsDto): Promise<PurchaseCreditsResponseDto> {\n return this.http.post(\"/api/v1/credits/purchase\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { BillingResponseDto, UpsertBillingDto } from \"../types\";\n\nexport class BillingResource {\n constructor(private http: HttpClient) {}\n\n get(): Promise<BillingResponseDto> {\n return this.http.get(\"/api/v1/billing\");\n }\n\n upsert(data: UpsertBillingDto): Promise<BillingResponseDto> {\n return this.http.put(\"/api/v1/billing\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n PreferenceResponseDto,\n UpdatePreferencesDto,\n} from \"../types\";\n\nexport class PreferencesResource {\n constructor(private http: HttpClient) {}\n\n getAll(): Promise<PreferenceResponseDto[]> {\n return this.http.get(\"/api/v1/preferences\");\n }\n\n getByAppKey(appKey: string): Promise<PreferenceResponseDto> {\n return this.http.get(`/api/v1/preferences/${appKey}`);\n }\n\n upsert(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.put(`/api/v1/preferences/${appKey}`, data);\n }\n\n remove(appKey: string): Promise<void> {\n return this.http.delete(`/api/v1/preferences/${appKey}`);\n }\n\n merge(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.patch(`/api/v1/preferences/${appKey}`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateConversationDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n AddMessageDto,\n ConversationStatus,\n} from \"../types\";\n\nexport class ConversationsResource {\n constructor(private http: HttpClient) {}\n\n create(data: CreateConversationDto): Promise<ConversationResponseDto> {\n return this.http.post(\"/api/v1/conversations\", data);\n }\n\n list(query?: {\n cursor?: string;\n limit?: number;\n status?: ConversationStatus;\n appKey?: string;\n }): Promise<ConversationResponseDto[]> {\n return this.http.get(\"/api/v1/conversations\", { query });\n }\n\n get(id: string): Promise<ConversationResponseDto> {\n return this.http.get(`/api/v1/conversations/${id}`);\n }\n\n archive(id: string): Promise<ConversationResponseDto> {\n return this.http.patch(`/api/v1/conversations/${id}/archive`);\n }\n\n listMessages(conversationId: string, query?: {\n cursor?: string;\n limit?: number;\n }): Promise<ConversationMessageResponseDto[]> {\n return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });\n }\n\n addMessage(conversationId: string, data: AddMessageDto): Promise<ConversationMessageResponseDto> {\n return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { GenerateDto } from \"../types\";\n\nexport interface GenerationDoneData {\n messageId: string;\n usage?: { inputTokens: number; outputTokens: number };\n structuredOutput?: Record<string, unknown>;\n}\n\nexport interface SseStreamOptions {\n onTextDelta?: (text: string) => void;\n onDone?: (data: GenerationDoneData) => void;\n onError?: (error: string) => void;\n signal?: AbortSignal;\n}\n\ntype SseEvent =\n | { type: \"text_delta\"; text: string }\n | { type: \"done\"; messageId: string; usage?: { inputTokens: number; outputTokens: number }; structuredOutput?: Record<string, unknown> }\n | { type: \"error\"; error: string };\n\nexport class GenerationResource {\n constructor(private http: HttpClient) {}\n\n async generate(conversationId: string, data: GenerateDto, options?: SseStreamOptions): Promise<string> {\n const response = await this.http.rawRequest(\"POST\", `/api/v1/conversations/${conversationId}/generate`, {\n body: data,\n });\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"No response body\");\n\n const decoder = new TextDecoder();\n const parts: string[] = [];\n let buffer = \"\";\n\n try {\n while (true) {\n if (options?.signal?.aborted) {\n reader.cancel();\n break;\n }\n\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const jsonStr = line.slice(6).trim();\n if (!jsonStr) continue;\n\n let event: SseEvent;\n try {\n event = JSON.parse(jsonStr);\n } catch {\n continue;\n }\n\n if (event.type === \"text_delta\") {\n parts.push(event.text);\n options?.onTextDelta?.(event.text);\n } else if (event.type === \"done\") {\n options?.onDone?.(event);\n } else if (event.type === \"error\") {\n options?.onError?.(event.error);\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return parts.join(\"\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n TriggerImageDto,\n ImageStatusResponseDto,\n} from \"../types\";\n\nexport class ImagesResource {\n constructor(private http: HttpClient) {}\n\n trigger(messageId: string, data: TriggerImageDto): Promise<ImageStatusResponseDto> {\n return this.http.post(`/api/v1/messages/${messageId}/images`, data);\n }\n\n getAll(messageId: string): Promise<ImageStatusResponseDto[]> {\n return this.http.get(`/api/v1/messages/${messageId}/images`);\n }\n\n getBySlot(messageId: string, slot: string): Promise<ImageStatusResponseDto> {\n return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n} from \"../types\";\n\nexport class PaymentsResource {\n constructor(private http: HttpClient) {}\n\n checkout(data: CreateCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout\", data);\n }\n\n checkoutCustom(data: CreateCustomCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout/custom\", data);\n }\n\n creditPricing(): Promise<CreditPricingResponseDto> {\n return this.http.get(\"/api/v1/payments/credit-pricing\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { TenantPublicInfoDto } from \"../types\";\n\nexport class TenantsResource {\n constructor(private http: HttpClient) {}\n\n getPublicInfo(tenantId: string): Promise<TenantPublicInfoDto> {\n return this.http.get(\"/api/v1/tenants/public-info\", {\n authenticated: false,\n query: { tenantId },\n });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PaginatedResponse } from \"../types\";\n\nexport class ReceiptsResource {\n constructor(private http: HttpClient) {}\n\n list(query?: { cursor?: string; limit?: number }): Promise<PaginatedResponse> {\n return this.http.get(\"/api/v1/receipts\", { query });\n }\n\n async download(id: string): Promise<Blob> {\n const response = await this.http.rawRequest(\"GET\", `/api/v1/receipts/${id}/download`);\n return response.blob();\n }\n}\n","import { HttpClient } from \"./http\";\nimport type { TokensResponseDto, PingResponseDto } from \"./types\";\nimport { AuthResource } from \"./resources/auth\";\nimport { PlansResource } from \"./resources/plans\";\nimport { CreditsResource } from \"./resources/credits\";\nimport { BillingResource } from \"./resources/billing\";\nimport { PreferencesResource } from \"./resources/preferences\";\nimport { ConversationsResource } from \"./resources/conversations\";\nimport { GenerationResource } from \"./resources/generation\";\nimport { ImagesResource } from \"./resources/images\";\nimport { PaymentsResource } from \"./resources/payments\";\nimport { TenantsResource } from \"./resources/tenants\";\nimport { ReceiptsResource } from \"./resources/receipts\";\n\nexport interface ClientOptions {\n baseUrl: string;\n tenantKey: string;\n accessToken?: string;\n refreshToken?: string;\n onTokenRefreshed?: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface AiAssistantsClient {\n auth: AuthResource;\n plans: PlansResource;\n credits: CreditsResource;\n billing: BillingResource;\n preferences: PreferencesResource;\n conversations: ConversationsResource;\n generation: GenerationResource;\n images: ImagesResource;\n payments: PaymentsResource;\n tenants: TenantsResource;\n receipts: ReceiptsResource;\n /**\n * Verify the client is configured correctly: confirms the base URL is\n * reachable and the tenant key is valid. Resolves with the tenant identity\n * when the SDK is ready to use, and rejects with an {@link ApiError} otherwise.\n */\n ping(): Promise<PingResponseDto>;\n setAccessToken(token: string): void;\n setRefreshToken(token: string): void;\n}\n\nexport function createClient(options: ClientOptions): AiAssistantsClient {\n let accessToken = options.accessToken ?? null;\n let refreshToken = options.refreshToken ?? null;\n\n const http = new HttpClient({\n baseUrl: options.baseUrl,\n tenantKey: options.tenantKey,\n fetch: options.fetch,\n getAccessToken: () => accessToken,\n getRefreshToken: () => refreshToken,\n onTokenRefreshed: async (tokens) => {\n accessToken = tokens.accessToken;\n refreshToken = tokens.refreshToken;\n await options.onTokenRefreshed?.(tokens);\n },\n });\n\n return {\n auth: new AuthResource(http),\n plans: new PlansResource(http),\n credits: new CreditsResource(http),\n billing: new BillingResource(http),\n preferences: new PreferencesResource(http),\n conversations: new ConversationsResource(http),\n generation: new GenerationResource(http),\n images: new ImagesResource(http),\n payments: new PaymentsResource(http),\n tenants: new TenantsResource(http),\n receipts: new ReceiptsResource(http),\n ping() {\n return http.get<PingResponseDto>(\"/api/v1/ping\", { authenticated: false });\n },\n setAccessToken(token: string) {\n accessToken = token;\n },\n setRefreshToken(token: string) {\n refreshToken = token;\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/auth.ts","../src/resources/plans.ts","../src/resources/credits.ts","../src/resources/billing.ts","../src/resources/preferences.ts","../src/resources/conversations.ts","../src/resources/generation.ts","../src/resources/images.ts","../src/resources/payments.ts","../src/resources/tenants.ts","../src/resources/receipts.ts","../src/resources/email-preferences.ts","../src/resources/contact.ts","../src/client.ts"],"sourcesContent":["export class ApiError extends Error {\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string | string[],\n public readonly requestId?: string,\n ) {\n super(Array.isArray(message) ? message.join(\", \") : message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"./errors\";\nimport type { TokensResponseDto } from \"./types\";\n\nexport interface HttpClientConfig {\n baseUrl: string;\n tenantKey: string;\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n onTokenRefreshed: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ninterface RequestOptions {\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined | null>;\n authenticated?: boolean;\n}\n\ninterface InternalRequestOptions extends RequestOptions {\n isRetry?: boolean;\n}\n\nexport class HttpClient {\n private refreshPromise: Promise<boolean> | null = null;\n private readonly baseUrl: URL;\n private readonly fetchFn: typeof globalThis.fetch;\n\n constructor(private config: HttpClientConfig) {\n this.baseUrl = new URL(config.baseUrl);\n this.fetchFn = config.fetch ?? globalThis.fetch;\n }\n\n private buildAndFetch(\n method: HttpMethod,\n path: string,\n options: RequestOptions = {},\n ): Promise<Response> {\n const { body, query, authenticated = true } = options;\n\n const url = new URL(path, this.baseUrl);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n \"X-Tenant-Key\": this.config.tenantKey,\n };\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (authenticated) {\n const token = this.config.getAccessToken();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n }\n\n return this.fetchFn(url.toString(), {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n\n private async throwIfError(response: Response): Promise<void> {\n if (!response.ok) {\n const errorBody = await response.json().catch(() => null);\n throw new ApiError(\n response.status,\n errorBody?.error?.code ?? \"UNKNOWN_ERROR\",\n errorBody?.error?.message ?? response.statusText,\n errorBody?.meta?.requestId,\n );\n }\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<T> {\n const { isRetry = false, authenticated = true } = options;\n\n const response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && !isRetry && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n return this.request<T>(method, path, { ...options, isRetry: true });\n }\n }\n\n await this.throwIfError(response);\n\n const contentType = response.headers.get(\"content-type\");\n if (!contentType?.includes(\"application/json\")) {\n return undefined as T;\n }\n\n const json = await response.json();\n return (json && \"data\" in json && \"meta\" in json ? json.data : json) as T;\n }\n\n private attemptTokenRefresh(): Promise<boolean> {\n if (this.refreshPromise) return this.refreshPromise;\n this.refreshPromise = this.doRefresh().finally(() => {\n this.refreshPromise = null;\n });\n return this.refreshPromise;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.config.getRefreshToken();\n if (!refreshToken) return false;\n\n try {\n const tokens = await this.request<TokensResponseDto>(\n \"POST\",\n \"/api/v1/auth/refresh\",\n {\n body: { refreshToken },\n authenticated: false,\n isRetry: true,\n },\n );\n await this.config.onTokenRefreshed(tokens);\n return true;\n } catch {\n return false;\n }\n }\n\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"GET\", path, options);\n }\n\n post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"POST\", path, { ...options, body });\n }\n\n patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PATCH\", path, { ...options, body });\n }\n\n put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PUT\", path, { ...options, body });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"DELETE\", path, options);\n }\n\n async rawRequest(method: HttpMethod, path: string, options: RequestOptions = {}): Promise<Response> {\n const { authenticated = true } = options;\n\n let response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n response = await this.buildAndFetch(method, path, options);\n }\n }\n\n await this.throwIfError(response);\n\n return response;\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n StartAuthResponseDto,\n} from \"../types\";\n\nexport class AuthResource {\n constructor(private http: HttpClient) {}\n\n register(data: RegisterDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/register\", data, { authenticated: false });\n }\n\n login(data: LoginDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/login\", data, { authenticated: false });\n }\n\n startAuth(data: LoginDto): Promise<StartAuthResponseDto> {\n return this.http.post(\"/api/v1/auth/start\", data, { authenticated: false });\n }\n\n verifyOtp(data: VerifyOtpDto): Promise<AuthResponseDto> {\n return this.http.post(\"/api/v1/auth/verify-otp\", data, { authenticated: false });\n }\n\n refresh(data: RefreshTokenDto): Promise<TokensResponseDto> {\n return this.http.post(\"/api/v1/auth/refresh\", data, { authenticated: false });\n }\n\n logout(): Promise<void> {\n return this.http.post(\"/api/v1/auth/logout\");\n }\n\n getProfile(): Promise<UserResponseDto> {\n return this.http.get(\"/api/v1/auth/me\");\n }\n\n updateProfile(data: UpdateProfileDto): Promise<UserResponseDto> {\n return this.http.patch(\"/api/v1/auth/me\", data);\n }\n\n deleteAccount(): Promise<void> {\n return this.http.delete(\"/api/v1/auth/me\");\n }\n\n requestEmailChange(data: RequestEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/request-email-change\", data);\n }\n\n confirmEmailChange(data: ConfirmEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/confirm-email-change\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PlanResponseDto } from \"../types\";\n\nexport class PlansResource {\n constructor(private http: HttpClient) {}\n\n list(): Promise<PlanResponseDto[]> {\n return this.http.get(\"/api/v1/public/plans\", { authenticated: false });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n CreditTransactionType,\n} from \"../types\";\n\nexport class CreditsResource {\n constructor(private http: HttpClient) {}\n\n getBalance(): Promise<CreditBalanceResponseDto> {\n return this.http.get(\"/api/v1/credits/balance\");\n }\n\n getTransactions(query?: {\n cursor?: string;\n limit?: number;\n type?: CreditTransactionType;\n }): Promise<CreditTransactionResponseDto[]> {\n return this.http.get(\"/api/v1/credits/transactions\", { query });\n }\n\n}\n","import type { HttpClient } from \"../http\";\nimport type { BillingResponseDto, UpsertBillingDto } from \"../types\";\n\nexport class BillingResource {\n constructor(private http: HttpClient) {}\n\n get(): Promise<BillingResponseDto> {\n return this.http.get(\"/api/v1/billing\");\n }\n\n upsert(data: UpsertBillingDto): Promise<BillingResponseDto> {\n return this.http.put(\"/api/v1/billing\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n PreferenceResponseDto,\n UpdatePreferencesDto,\n} from \"../types\";\n\nexport class PreferencesResource {\n constructor(private http: HttpClient) {}\n\n getAll(): Promise<PreferenceResponseDto[]> {\n return this.http.get(\"/api/v1/preferences\");\n }\n\n getByAppKey(appKey: string): Promise<PreferenceResponseDto> {\n return this.http.get(`/api/v1/preferences/${appKey}`);\n }\n\n upsert(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.put(`/api/v1/preferences/${appKey}`, data);\n }\n\n remove(appKey: string): Promise<void> {\n return this.http.delete(`/api/v1/preferences/${appKey}`);\n }\n\n merge(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.patch(`/api/v1/preferences/${appKey}`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateConversationDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n AddMessageDto,\n ConversationStatus,\n} from \"../types\";\n\nexport class ConversationsResource {\n constructor(private http: HttpClient) {}\n\n create(data: CreateConversationDto): Promise<ConversationResponseDto> {\n return this.http.post(\"/api/v1/conversations\", data);\n }\n\n list(query?: {\n cursor?: string;\n limit?: number;\n status?: ConversationStatus;\n appKey?: string;\n }): Promise<ConversationResponseDto[]> {\n return this.http.get(\"/api/v1/conversations\", { query });\n }\n\n get(id: string): Promise<ConversationResponseDto> {\n return this.http.get(`/api/v1/conversations/${id}`);\n }\n\n archive(id: string): Promise<ConversationResponseDto> {\n return this.http.patch(`/api/v1/conversations/${id}/archive`);\n }\n\n listMessages(conversationId: string, query?: {\n cursor?: string;\n limit?: number;\n }): Promise<ConversationMessageResponseDto[]> {\n return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });\n }\n\n addMessage(conversationId: string, data: AddMessageDto): Promise<ConversationMessageResponseDto> {\n return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { GenerateDto } from \"../types\";\n\nexport interface GenerationDoneData {\n messageId: string;\n usage?: { inputTokens: number; outputTokens: number };\n structuredOutput?: Record<string, unknown>;\n}\n\nexport interface SseStreamOptions {\n onTextDelta?: (text: string) => void;\n onDone?: (data: GenerationDoneData) => void;\n onError?: (error: string) => void;\n signal?: AbortSignal;\n}\n\ntype SseEvent =\n | { type: \"text_delta\"; text: string }\n | { type: \"done\"; messageId: string; usage?: { inputTokens: number; outputTokens: number }; structuredOutput?: Record<string, unknown> }\n | { type: \"error\"; error: string };\n\nexport class GenerationResource {\n constructor(private http: HttpClient) {}\n\n async generate(conversationId: string, data: GenerateDto, options?: SseStreamOptions): Promise<string> {\n const response = await this.http.rawRequest(\"POST\", `/api/v1/conversations/${conversationId}/generate`, {\n body: data,\n });\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"No response body\");\n\n const decoder = new TextDecoder();\n const parts: string[] = [];\n let buffer = \"\";\n\n try {\n while (true) {\n if (options?.signal?.aborted) {\n reader.cancel();\n break;\n }\n\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const jsonStr = line.slice(6).trim();\n if (!jsonStr) continue;\n\n let event: SseEvent;\n try {\n event = JSON.parse(jsonStr);\n } catch {\n continue;\n }\n\n if (event.type === \"text_delta\") {\n parts.push(event.text);\n options?.onTextDelta?.(event.text);\n } else if (event.type === \"done\") {\n options?.onDone?.(event);\n } else if (event.type === \"error\") {\n options?.onError?.(event.error);\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return parts.join(\"\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n TriggerImageDto,\n ImageStatusResponseDto,\n} from \"../types\";\n\nexport class ImagesResource {\n constructor(private http: HttpClient) {}\n\n trigger(messageId: string, data: TriggerImageDto): Promise<ImageStatusResponseDto> {\n return this.http.post(`/api/v1/messages/${messageId}/images`, data);\n }\n\n getAll(messageId: string): Promise<ImageStatusResponseDto[]> {\n return this.http.get(`/api/v1/messages/${messageId}/images`);\n }\n\n getBySlot(messageId: string, slot: string): Promise<ImageStatusResponseDto> {\n return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateCheckoutDto,\n CreateCustomCheckoutDto,\n CheckoutResponseDto,\n CreditPricingResponseDto,\n} from \"../types\";\n\nexport class PaymentsResource {\n constructor(private http: HttpClient) {}\n\n checkout(data: CreateCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout\", data);\n }\n\n checkoutCustom(data: CreateCustomCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout/custom\", data);\n }\n\n creditPricing(): Promise<CreditPricingResponseDto> {\n return this.http.get(\"/api/v1/payments/credit-pricing\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { TenantPublicInfoDto } from \"../types\";\n\nexport class TenantsResource {\n constructor(private http: HttpClient) {}\n\n getPublicInfo(tenantId: string): Promise<TenantPublicInfoDto> {\n return this.http.get(\"/api/v1/tenants/public-info\", {\n authenticated: false,\n query: { tenantId },\n });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { ReceiptItemDto } from \"../types\";\n\nexport class ReceiptsResource {\n constructor(private http: HttpClient) {}\n\n list(query?: { cursor?: string; limit?: number }): Promise<ReceiptItemDto[]> {\n return this.http.get(\"/api/v1/receipts\", { query });\n }\n\n async download(id: string): Promise<Blob> {\n const response = await this.http.rawRequest(\"GET\", `/api/v1/receipts/${id}/download`);\n return response.blob();\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n EmailPreferencesResponseDto,\n UpdateEmailPreferencesDto,\n UpdateEmailPreferencesTokenDto,\n} from \"../types\";\n\nexport class EmailPreferencesResource {\n constructor(private http: HttpClient) {}\n\n /** Public, token-based: fetch subscription state via an unsubscribe link token. */\n getByToken(token: string): Promise<EmailPreferencesResponseDto> {\n return this.http.get(\"/api/v1/email-preferences\", {\n authenticated: false,\n query: { token },\n });\n }\n\n /** Public, token-based: update subscription state via an unsubscribe link token. */\n updateByToken(data: UpdateEmailPreferencesTokenDto): Promise<EmailPreferencesResponseDto> {\n return this.http.patch(\"/api/v1/email-preferences\", data, { authenticated: false });\n }\n\n /** Authenticated: fetch the current user's subscription state. */\n getMine(): Promise<EmailPreferencesResponseDto> {\n return this.http.get(\"/api/v1/email-preferences/me\");\n }\n\n /** Authenticated: update the current user's subscription state. */\n updateMine(data: UpdateEmailPreferencesDto): Promise<EmailPreferencesResponseDto> {\n return this.http.patch(\"/api/v1/email-preferences/me\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { ContactDto, MessageResponseDto } from \"../types\";\n\nexport class ContactResource {\n constructor(private http: HttpClient) {}\n\n /** Send a contact-form message to the tenant's contact inbox. Public — no auth required. */\n send(data: ContactDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/contact\", data, { authenticated: false });\n }\n}\n","import { HttpClient } from \"./http\";\nimport type { TokensResponseDto, PingResponseDto } from \"./types\";\nimport { AuthResource } from \"./resources/auth\";\nimport { PlansResource } from \"./resources/plans\";\nimport { CreditsResource } from \"./resources/credits\";\nimport { BillingResource } from \"./resources/billing\";\nimport { PreferencesResource } from \"./resources/preferences\";\nimport { ConversationsResource } from \"./resources/conversations\";\nimport { GenerationResource } from \"./resources/generation\";\nimport { ImagesResource } from \"./resources/images\";\nimport { PaymentsResource } from \"./resources/payments\";\nimport { TenantsResource } from \"./resources/tenants\";\nimport { ReceiptsResource } from \"./resources/receipts\";\nimport { EmailPreferencesResource } from \"./resources/email-preferences\";\nimport { ContactResource } from \"./resources/contact\";\n\nexport interface ClientOptions {\n baseUrl: string;\n tenantKey: string;\n accessToken?: string;\n refreshToken?: string;\n onTokenRefreshed?: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface AiAssistantsClient {\n auth: AuthResource;\n plans: PlansResource;\n credits: CreditsResource;\n billing: BillingResource;\n preferences: PreferencesResource;\n conversations: ConversationsResource;\n generation: GenerationResource;\n images: ImagesResource;\n payments: PaymentsResource;\n tenants: TenantsResource;\n receipts: ReceiptsResource;\n emailPreferences: EmailPreferencesResource;\n contact: ContactResource;\n /**\n * Verify the client is configured correctly: confirms the base URL is\n * reachable and the tenant key is valid. Resolves with the tenant identity\n * when the SDK is ready to use, and rejects with an {@link ApiError} otherwise.\n */\n ping(): Promise<PingResponseDto>;\n setAccessToken(token: string): void;\n setRefreshToken(token: string): void;\n}\n\nexport function createClient(options: ClientOptions): AiAssistantsClient {\n let accessToken = options.accessToken ?? null;\n let refreshToken = options.refreshToken ?? null;\n\n const http = new HttpClient({\n baseUrl: options.baseUrl,\n tenantKey: options.tenantKey,\n fetch: options.fetch,\n getAccessToken: () => accessToken,\n getRefreshToken: () => refreshToken,\n onTokenRefreshed: async (tokens) => {\n accessToken = tokens.accessToken;\n refreshToken = tokens.refreshToken;\n await options.onTokenRefreshed?.(tokens);\n },\n });\n\n return {\n auth: new AuthResource(http),\n plans: new PlansResource(http),\n credits: new CreditsResource(http),\n billing: new BillingResource(http),\n preferences: new PreferencesResource(http),\n conversations: new ConversationsResource(http),\n generation: new GenerationResource(http),\n images: new ImagesResource(http),\n payments: new PaymentsResource(http),\n tenants: new TenantsResource(http),\n receipts: new ReceiptsResource(http),\n emailPreferences: new EmailPreferencesResource(http),\n contact: new ContactResource(http),\n ping() {\n return http.get<PingResponseDto>(\"/api/v1/ping\", { authenticated: false });\n },\n setAccessToken(token: string) {\n accessToken = token;\n },\n setRefreshToken(token: string) {\n refreshToken = token;\n },\n };\n}\n"],"mappings":"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","names":[]}
|