@gradientlabs/client 0.1.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/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/index.cjs +1223 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1507 -0
- package/dist/index.d.ts +1507 -0
- package/dist/index.mjs +1173 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/internal/version.ts","../src/internal/user-agent.ts","../src/internal/http.ts","../src/resources/articles.ts","../src/resources/back-office-tasks.ts","../src/resources/conversations.ts","../src/resources/hand-off-targets.ts","../src/resources/ip-addresses.ts","../src/resources/notes.ts","../src/resources/outbound-conversations.ts","../src/internal/pagination.ts","../src/resources/procedures.ts","../src/resources/resource-sources.ts","../src/resources/resource-types.ts","../src/resources/secrets.ts","../src/resources/terminology-substitutions.ts","../src/resources/tools.ts","../src/resources/topics.ts","../src/resources/traffic-groups.ts","../src/resources/voice.ts","../src/webhooks/events.ts","../src/webhooks/verifier.ts","../src/client.ts","../src/models/enums.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Well-known error codes returned by the Gradient Labs API in the `code` field\n * of an error response. Callers can switch on {@link ApiError.code} rather than\n * comparing message strings.\n *\n * The union is intentionally open (`| (string & {})`) so that a future\n * server-side code never breaks a consumer at compile time.\n */\nexport const ErrorCode = {\n NotFound: \"not_found\",\n Unauthenticated: \"unauthenticated\",\n PermissionDenied: \"permission_denied\",\n InvalidArgument: \"invalid_argument\",\n FailedPrecondition: \"failed_precondition\",\n ResourceExhausted: \"resource_exhausted\",\n AlreadyExists: \"already_exists\",\n Unavailable: \"unavailable\",\n DeadlineExceeded: \"deadline_exceeded\",\n Internal: \"internal\",\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode] | (string & {});\n\n/**\n * Base class for every error thrown by this client. Catch this to handle any\n * failure originating from the library.\n */\nexport class GradientLabsError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"GradientLabsError\";\n }\n}\n\n/**\n * Thrown when the client is misconfigured (e.g. a missing API key). These are\n * raised before any network request is made.\n */\nexport class ConfigurationError extends GradientLabsError {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\n/**\n * Thrown when the API returns a non-2xx response. It carries the HTTP status\n * code along with the parsed error envelope (`code`, `message`, `details`).\n */\nexport class ApiError extends GradientLabsError {\n /** HTTP status code of the response. */\n readonly statusCode: number;\n\n /** Machine-readable error code from the response envelope. */\n readonly code: ErrorCode;\n\n /** Arbitrary structured details returned with the error. */\n readonly details: Record<string, unknown>;\n\n constructor(args: {\n statusCode: number;\n code: ErrorCode;\n message: string;\n details?: Record<string, unknown>;\n }) {\n super(args.message || `unexpected response status: ${args.statusCode}`);\n this.name = \"ApiError\";\n this.statusCode = args.statusCode;\n this.code = args.code;\n this.details = args.details ?? {};\n }\n\n /**\n * The identifier that can be given to Gradient Labs technical support to\n * investigate an error, if present in the error details.\n */\n get traceId(): string | undefined {\n const traceId = this.details[\"trace_id\"];\n return typeof traceId === \"string\" ? traceId : undefined;\n }\n}\n","// Kept in sync with the \"version\" field in package.json.\nexport const VERSION = \"0.1.0\";\n","import { VERSION } from \"./version.js\";\n\n/**\n * Builds the User-Agent header identifying this client library, in the format\n * `Gradient-Labs-Node/<pkg-version> (node/<runtime-version>)`.\n */\nexport function userAgent(): string {\n const runtimeVersion =\n typeof process !== \"undefined\" && process.version ? process.version : \"unknown\";\n return `Gradient-Labs-Node/${VERSION} (node/${runtimeVersion})`;\n}\n","import { ApiError, GradientLabsError, type ErrorCode } from \"../errors.js\";\nimport { userAgent } from \"./user-agent.js\";\n\n/** A subset of the global `fetch` signature, so callers can inject their own. */\nexport type FetchLike = (\n input: string,\n init: {\n method: string;\n headers: Record<string, string>;\n body?: string;\n signal?: AbortSignal;\n },\n) => Promise<{\n status: number;\n text(): Promise<string>;\n}>;\n\nexport interface HttpClientConfig {\n baseUrl: string;\n apiKey: string;\n fetch: FetchLike;\n timeoutMs?: number;\n}\n\nexport interface RequestOptions {\n /** Query parameters. Undefined/null values are omitted. */\n query?: Record<string, string | number | boolean | undefined | null>;\n /** JSON request body. Serialised with JSON.stringify. */\n body?: unknown;\n /** Caller-supplied cancellation signal. */\n signal?: AbortSignal;\n}\n\n/**\n * Thin wrapper around `fetch` that handles auth, headers, JSON\n * (de)serialisation, cancellation, and error mapping. It never retries — retry\n * policy is left entirely to the caller.\n */\nexport class HttpClient {\n constructor(private readonly config: HttpClientConfig) {}\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const url = this.buildUrl(path, options.query);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.config.apiKey}`,\n Accept: \"application/json\",\n \"User-Agent\": userAgent(),\n };\n\n let body: string | undefined;\n if (options.body !== undefined) {\n body = JSON.stringify(options.body);\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const signal = this.buildSignal(options.signal);\n\n let response: { status: number; text(): Promise<string> };\n try {\n response = await this.config.fetch(url, { method, headers, body, signal });\n } catch (cause) {\n throw new GradientLabsError(`request to ${method} ${path} failed: ${errorMessage(cause)}`, {\n cause,\n });\n }\n\n const rawBody = await response.text();\n\n if (response.status < 200 || response.status > 299) {\n throw toApiError(response.status, rawBody);\n }\n\n if (!rawBody) {\n return undefined as T;\n }\n\n try {\n return JSON.parse(rawBody) as T;\n } catch (cause) {\n throw new GradientLabsError(`failed to parse response body: ${errorMessage(cause)}`, {\n cause,\n });\n }\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined | null>,\n ): string {\n const base = this.config.baseUrl.replace(/\\/+$/, \"\");\n const cleanPath = path.replace(/^\\/+/, \"\");\n const url = new URL(`${base}/${cleanPath}`);\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 return url.toString();\n }\n\n private buildSignal(callerSignal?: AbortSignal): AbortSignal | undefined {\n const { timeoutMs } = this.config;\n if (timeoutMs === undefined) {\n return callerSignal;\n }\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n if (!callerSignal) {\n return timeoutSignal;\n }\n // Node 20.3+ has AbortSignal.any; fall back to the caller signal otherwise.\n if (typeof AbortSignal.any === \"function\") {\n return AbortSignal.any([callerSignal, timeoutSignal]);\n }\n return callerSignal;\n }\n}\n\nfunction toApiError(statusCode: number, rawBody: string): ApiError {\n let code: ErrorCode = \"\";\n let message = \"\";\n let details: Record<string, unknown> = {};\n\n if (rawBody) {\n try {\n const parsed = JSON.parse(rawBody) as {\n code?: string;\n message?: string;\n details?: Record<string, unknown>;\n };\n code = parsed.code ?? \"\";\n message = parsed.message ?? \"\";\n details = parsed.details ?? {};\n } catch {\n // Leave defaults; the status code still produces a usable error.\n }\n }\n\n return new ApiError({ statusCode, code, message, details });\n}\n\nfunction errorMessage(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type { SetArticleUsageStatusParams, UpsertArticleParams } from \"../models/articles.js\";\n\n/**\n * Article management endpoints. Requires a Management API key.\n */\nexport class Articles {\n constructor(private readonly http: HttpClient) {}\n\n /** Creates or updates a help article. */\n upsert(params: UpsertArticleParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"POST\", \"articles\", { body: params, signal: config.signal });\n }\n\n /** Updates whether the AI agent can use an article or not. */\n setUsageStatus(\n id: string,\n params: SetArticleUsageStatusParams,\n config: RequestConfig = {},\n ): Promise<void> {\n return this.http.request(\"POST\", `articles/${encodeURIComponent(id)}/usage-status`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Marks an article as deleted. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `articles/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type { BackOfficeTask, CreateBackOfficeTaskParams } from \"../models/back-office-tasks.js\";\n\n/**\n * Back-office task endpoints. Requires an Integration API key.\n */\nexport class BackOfficeTasks {\n constructor(private readonly http: HttpClient) {}\n\n /** Creates a new back-office task. */\n create(params: CreateBackOfficeTaskParams, config: RequestConfig = {}): Promise<BackOfficeTask> {\n return this.http.request(\"POST\", \"back-office-tasks\", {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Retrieves detailed information about a back-office task. */\n get(id: string, config: RequestConfig = {}): Promise<BackOfficeTask> {\n return this.http.request(\"GET\", `back-office-tasks/${encodeURIComponent(id)}/read`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n AddMessageParams,\n AssignConversationParams,\n CancelConversationParams,\n Conversation,\n ConversationEventParams,\n FinishConversationParams,\n Message,\n ReadConversationParams,\n RateConversationParams,\n ResumeConversationParams,\n ReturnAsyncToolResultParams,\n StartConversationParams,\n} from \"../models/conversations.js\";\n\n/**\n * Conversation endpoints. Requires an Integration API key.\n */\nexport class Conversations {\n constructor(private readonly http: HttpClient) {}\n\n /** Begins a conversation. */\n start(params: StartConversationParams, config: RequestConfig = {}): Promise<Conversation> {\n return this.http.request(\"POST\", \"conversations\", { body: params, signal: config.signal });\n }\n\n /** Retrieves a conversation, including the latest AI agent metadata. */\n get(\n id: string,\n params: ReadConversationParams = {},\n config: RequestConfig = {},\n ): Promise<Conversation> {\n return this.http.request(\"GET\", `conversations/${encodeURIComponent(id)}/read`, {\n query: { support_platform: params.support_platform },\n signal: config.signal,\n });\n }\n\n /**\n * Retrieves a conversation.\n *\n * @deprecated Use {@link Conversations.get} instead, which reads from the\n * canonical `/read` endpoint.\n */\n getDeprecated(id: string, config: RequestConfig = {}): Promise<Conversation> {\n return this.http.request(\"GET\", `conversations/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Adds a new message to an existing conversation. */\n addMessage(id: string, params: AddMessageParams, config: RequestConfig = {}): Promise<Message> {\n return this.http.request(\"POST\", `conversations/${encodeURIComponent(id)}/messages`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Transfers responsibility for handling a conversation to a participant. */\n assign(id: string, params: AssignConversationParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"PUT\", `conversations/${encodeURIComponent(id)}/assignee`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Logs an event against the conversation (e.g. typing, delivered, read). */\n addEvent(id: string, params: ConversationEventParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"POST\", `conversations/${encodeURIComponent(id)}/events`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Adds the result of a customer survey (e.g. CSAT) to a conversation. */\n rate(id: string, params: RateConversationParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"PUT\", `conversations/${encodeURIComponent(id)}/rate`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Cancels a conversation (e.g. because a human has taken it over). */\n cancel(\n id: string,\n params: CancelConversationParams = {},\n config: RequestConfig = {},\n ): Promise<void> {\n return this.http.request(\"PUT\", `conversations/${encodeURIComponent(id)}/cancel`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Finishes a conversation that has reached a natural end state. */\n finish(\n id: string,\n params: FinishConversationParams = {},\n config: RequestConfig = {},\n ): Promise<void> {\n return this.http.request(\"PUT\", `conversations/${encodeURIComponent(id)}/finish`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Re-opens a conversation that was previously finished. */\n resume(id: string, params: ResumeConversationParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"PUT\", `conversations/${encodeURIComponent(id)}/resume`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Returns the result of an async tool execution. */\n returnAsyncToolResult(\n id: string,\n params: ReturnAsyncToolResultParams,\n config: RequestConfig = {},\n ): Promise<void> {\n return this.http.request(\n \"PUT\",\n `conversations/${encodeURIComponent(id)}/return-async-tool-result`,\n { body: params, signal: config.signal },\n );\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n DeleteHandOffTargetParams,\n GetDefaultHandOffTargetParams,\n HandOffTarget,\n SetDefaultHandOffTargetParams,\n UpsertHandOffTargetParams,\n} from \"../models/hand-off-targets.js\";\n\ninterface ListHandOffTargetsResponse {\n targets: HandOffTarget[];\n}\n\n/**\n * Hand-off target management endpoints. Requires a Management API key.\n */\nexport class HandOffTargets {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists the available hand-off targets. */\n async list(config: RequestConfig = {}): Promise<HandOffTarget[]> {\n const rsp = await this.http.request<ListHandOffTargetsResponse>(\"GET\", \"hand-off-targets\", {\n signal: config.signal,\n });\n return rsp.targets;\n }\n\n /** Creates or updates a hand-off target. */\n upsert(params: UpsertHandOffTargetParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"POST\", \"hand-off-targets\", { body: params, signal: config.signal });\n }\n\n /** Deletes a hand-off target. */\n delete(params: DeleteHandOffTargetParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", \"hand-off-targets\", {\n query: { id: params.id },\n signal: config.signal,\n });\n }\n\n /** Gets the current default hand-off target for a channel. Returns \"\" if unset. */\n async getDefault(\n params: GetDefaultHandOffTargetParams,\n config: RequestConfig = {},\n ): Promise<string> {\n const rsp = await this.http.request<{ id: string }>(\"GET\", \"hand-off-targets/default\", {\n query: { channel: params.channel },\n signal: config.signal,\n });\n return rsp.id;\n }\n\n /** Sets the default hand-off target for a channel. */\n setDefault(params: SetDefaultHandOffTargetParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"PUT\", \"hand-off-targets/default\", {\n body: params,\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\n\n/** The IP addresses Gradient Labs uses, in CIDR format. */\nexport interface IpAddresses {\n /** Addresses the public API is served from. */\n api: string[];\n /** Addresses outbound (egress) requests originate from. */\n egress: string[];\n}\n\n/**\n * IP address endpoints. Requires a Management API key.\n */\nexport class IpAddressesResource {\n constructor(private readonly http: HttpClient) {}\n\n /** Returns the list of IP addresses Gradient Labs uses, in CIDR format. */\n list(config: RequestConfig = {}): Promise<IpAddresses> {\n return this.http.request(\"GET\", \"ip-addresses\", { signal: config.signal });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateNoteParams,\n Note,\n SetNoteStatusParams,\n UpdateNoteParams,\n} from \"../models/notes.js\";\n\n/**\n * Note management endpoints. Requires a Management API key.\n */\nexport class Notes {\n constructor(private readonly http: HttpClient) {}\n\n /** Creates a new note. */\n create(params: CreateNoteParams, config: RequestConfig = {}): Promise<Note> {\n return this.http.request(\"POST\", \"notes\", { body: params, signal: config.signal });\n }\n\n /** Updates an existing note's contents. */\n update(id: string, params: UpdateNoteParams, config: RequestConfig = {}): Promise<Note> {\n return this.http.request(\"POST\", `notes/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Updates a note's status. */\n setStatus(id: string, params: SetNoteStatusParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"POST\", `notes/${encodeURIComponent(id)}/status`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Marks a note as deleted. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `notes/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n OutboundConversation,\n StartOutboundConversationParams,\n} from \"../models/conversations.js\";\n\n/**\n * Outbound conversation endpoints. Requires an Integration API key.\n */\nexport class OutboundConversations {\n constructor(private readonly http: HttpClient) {}\n\n /** Creates and starts a new outbound conversation initiated by the AI agent. */\n start(\n params: StartOutboundConversationParams,\n config: RequestConfig = {},\n ): Promise<OutboundConversation> {\n return this.http.request(\"POST\", \"outbound/conversations\", {\n body: params,\n signal: config.signal,\n });\n }\n}\n","/**\n * Cursor-based pagination metadata returned by list endpoints. Cursors are\n * opaque strings; pass `next`/`prev` back via the `after`/`before` parameters\n * to page through results.\n */\nexport interface PageInfo {\n next?: string;\n prev?: string;\n}\n\n/** A single page of a paginated list response. */\nexport interface Page<T> {\n data: T[];\n pageInfo: PageInfo;\n}\n\n/**\n * Drives an async iterator that auto-follows `next` cursors, yielding each item\n * across all pages. `fetchPage` is called once per page with the current\n * `after` cursor (undefined for the first page).\n */\nexport async function* paginate<T>(\n fetchPage: (after: string | undefined) => Promise<Page<T>>,\n): AsyncGenerator<T, void, undefined> {\n let after: string | undefined;\n do {\n const page = await fetchPage(after);\n for (const item of page.data) {\n yield item;\n }\n after = page.pageInfo.next;\n } while (after);\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { Page } from \"../internal/pagination.js\";\nimport { paginate } from \"../internal/pagination.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n ListProceduresParams,\n Procedure,\n ProcedureVersion,\n SetGatedVersionParams,\n SetProcedureLimitParams,\n} from \"../models/procedures.js\";\n\ninterface ListProceduresResponse {\n procedures: Procedure[];\n pagination: { next?: string; prev?: string };\n}\n\ninterface ListVersionsResponse {\n Versions: ProcedureVersion[];\n}\n\n/**\n * Procedure management endpoints. Requires a Management API key.\n */\nexport class Procedures {\n constructor(private readonly http: HttpClient) {}\n\n /** Retrieves one page of procedures. */\n async list(\n params: ListProceduresParams = {},\n config: RequestConfig = {},\n ): Promise<Page<Procedure>> {\n const rsp = await this.http.request<ListProceduresResponse>(\"GET\", \"procedures\", {\n query: { cursor: params.cursor, status: params.status },\n signal: config.signal,\n });\n return { data: rsp.procedures, pageInfo: rsp.pagination };\n }\n\n /** Iterates over all procedures, transparently following pagination cursors. */\n listAll(\n params: Omit<ListProceduresParams, \"cursor\"> = {},\n config: RequestConfig = {},\n ): AsyncGenerator<Procedure, void, undefined> {\n return paginate((cursor) => this.list({ ...params, cursor }, config));\n }\n\n /** Retrieves a specific procedure by ID. */\n get(id: string, config: RequestConfig = {}): Promise<Procedure> {\n return this.http.request(\"GET\", `procedure/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Configures daily usage limits for a procedure. Returns the updated procedure. */\n async setLimit(\n id: string,\n params: SetProcedureLimitParams,\n config: RequestConfig = {},\n ): Promise<Procedure> {\n const rsp = await this.http.request<{ procedure: Procedure }>(\n \"POST\",\n `procedure/${encodeURIComponent(id)}/limit`,\n { body: params, signal: config.signal },\n );\n return rsp.procedure;\n }\n\n /** Lists the non-ephemeral versions of a procedure. */\n async listVersions(id: string, config: RequestConfig = {}): Promise<ProcedureVersion[]> {\n const rsp = await this.http.request<ListVersionsResponse>(\n \"GET\",\n `procedures/${encodeURIComponent(id)}/versions`,\n { signal: config.signal },\n );\n return rsp.Versions;\n }\n\n /** Promotes a procedure version to be the live (production) version. */\n setLiveVersion(id: string, version: number, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\n \"POST\",\n `procedures/${encodeURIComponent(id)}/versions/${version}/set-live`,\n { signal: config.signal },\n );\n }\n\n /** Removes a procedure version from being the live revision. */\n unsetLiveVersion(id: string, version: number, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\n \"POST\",\n `procedures/${encodeURIComponent(id)}/versions/${version}/unset-live`,\n { signal: config.signal },\n );\n }\n\n /** Marks a procedure version as gated for A/B testing. */\n setGatedVersion(\n id: string,\n version: number,\n params: SetGatedVersionParams,\n config: RequestConfig = {},\n ): Promise<void> {\n return this.http.request(\n \"POST\",\n `procedures/${encodeURIComponent(id)}/versions/${version}/set-gated`,\n { body: params, signal: config.signal },\n );\n }\n\n /** Removes the gated marking from a procedure version. */\n unsetGatedVersion(id: string, version: number, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\n \"POST\",\n `procedures/${encodeURIComponent(id)}/versions/${version}/unset-gated`,\n { signal: config.signal },\n );\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateResourceSourceParams,\n ResourceSource,\n UpdateResourceSourceParams,\n UpdateSchemaByExamplesParams,\n} from \"../models/resources.js\";\n\ninterface ListResourceSourcesResponse {\n resource_sources: ResourceSource[];\n}\n\n/**\n * Resource source management endpoints. Requires a Management API key.\n */\nexport class ResourceSources {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists all resource sources accessible to the company. */\n async list(config: RequestConfig = {}): Promise<ResourceSource[]> {\n const rsp = await this.http.request<ListResourceSourcesResponse>(\"GET\", \"resource-sources\", {\n signal: config.signal,\n });\n return rsp.resource_sources;\n }\n\n /** Creates a new resource source. */\n create(params: CreateResourceSourceParams, config: RequestConfig = {}): Promise<ResourceSource> {\n return this.http.request(\"POST\", \"resource-sources\", { body: params, signal: config.signal });\n }\n\n /** Retrieves a specific resource source by ID. */\n get(id: string, config: RequestConfig = {}): Promise<ResourceSource> {\n return this.http.request(\"GET\", `resource-sources/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Updates an existing resource source. */\n update(\n id: string,\n params: UpdateResourceSourceParams,\n config: RequestConfig = {},\n ): Promise<ResourceSource> {\n return this.http.request(\"PUT\", `resource-sources/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Deletes a resource source. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `resource-sources/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Modifies the source schema based on the provided payload examples. */\n updateSchemaByExamples(\n id: string,\n params: UpdateSchemaByExamplesParams,\n config: RequestConfig = {},\n ): Promise<ResourceSource> {\n return this.http.request(\n \"POST\",\n `resource-sources/${encodeURIComponent(id)}/schema-by-examples`,\n { body: params, signal: config.signal },\n );\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateResourceTypeParams,\n ResourceType,\n UpdateResourceTypeParams,\n} from \"../models/resources.js\";\n\ninterface ListResourceTypesResponse {\n resource_types: ResourceType[];\n}\n\n/**\n * Resource type management endpoints. Requires a Management API key.\n */\nexport class ResourceTypes {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists all resource types accessible to the company. */\n async list(config: RequestConfig = {}): Promise<ResourceType[]> {\n const rsp = await this.http.request<ListResourceTypesResponse>(\"GET\", \"resource-types\", {\n signal: config.signal,\n });\n return rsp.resource_types;\n }\n\n /** Creates a new resource type. */\n create(params: CreateResourceTypeParams, config: RequestConfig = {}): Promise<ResourceType> {\n return this.http.request(\"POST\", \"resource-types\", { body: params, signal: config.signal });\n }\n\n /** Retrieves a specific resource type by ID. */\n get(id: string, config: RequestConfig = {}): Promise<ResourceType> {\n return this.http.request(\"GET\", `resource-types/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Updates an existing resource type. */\n update(\n id: string,\n params: UpdateResourceTypeParams,\n config: RequestConfig = {},\n ): Promise<ResourceType> {\n return this.http.request(\"PUT\", `resource-types/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Deletes a resource type. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `resource-types/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type { Secret, WriteSecretParams } from \"../models/secrets.js\";\n\ninterface ListSecretsResponse {\n secrets: Secret[];\n}\n\n/**\n * Secret management endpoints. Requires a Management API key.\n */\nexport class Secrets {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists the company's configured secrets. */\n async list(config: RequestConfig = {}): Promise<Secret[]> {\n const rsp = await this.http.request<ListSecretsResponse>(\"GET\", \"secrets\", {\n signal: config.signal,\n });\n return rsp.secrets;\n }\n\n /** Creates or updates a secret. */\n write(name: string, params: WriteSecretParams, config: RequestConfig = {}): Promise<Secret> {\n return this.http.request(\"PUT\", `secrets/${encodeURIComponent(name)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Revokes a secret so it can no longer be used. */\n revoke(name: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `secrets/${encodeURIComponent(name)}`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateTerminologySubstitutionParams,\n TerminologySubstitution,\n UpdateTerminologySubstitutionParams,\n} from \"../models/terminology.js\";\n\ninterface ListResponse {\n substitutions: TerminologySubstitution[];\n}\n\n/**\n * Terminology substitution management endpoints. Requires a Management API key.\n */\nexport class TerminologySubstitutions {\n constructor(private readonly http: HttpClient) {}\n\n /** Returns all terminology substitutions configured for the organization. */\n async list(config: RequestConfig = {}): Promise<TerminologySubstitution[]> {\n const rsp = await this.http.request<ListResponse>(\"GET\", \"terminology-substitutions\", {\n signal: config.signal,\n });\n return rsp.substitutions;\n }\n\n /** Creates a new terminology substitution. */\n create(\n params: CreateTerminologySubstitutionParams,\n config: RequestConfig = {},\n ): Promise<TerminologySubstitution> {\n return this.http.request(\"POST\", \"terminology-substitutions\", {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Returns a single terminology substitution by ID. */\n get(id: string, config: RequestConfig = {}): Promise<TerminologySubstitution> {\n return this.http.request(\"GET\", `terminology-substitutions/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Updates an existing terminology substitution. */\n update(\n id: string,\n params: UpdateTerminologySubstitutionParams,\n config: RequestConfig = {},\n ): Promise<TerminologySubstitution> {\n return this.http.request(\"PUT\", `terminology-substitutions/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Deletes a terminology substitution by ID. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `terminology-substitutions/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateToolParams,\n ExecuteToolParams,\n ReadToolParams,\n Tool,\n ToolExecutionResult,\n UpdateToolParams,\n} from \"../models/tools.js\";\n\ninterface ToolListResponse {\n tools: Tool[];\n}\n\n/**\n * Tool management endpoints. Requires a Management API key.\n */\nexport class Tools {\n constructor(private readonly http: HttpClient) {}\n\n /** Returns all tools created by the company. */\n async list(config: RequestConfig = {}): Promise<Tool[]> {\n const rsp = await this.http.request<ToolListResponse>(\"GET\", \"tools\", {\n signal: config.signal,\n });\n return rsp.tools;\n }\n\n /** Creates a new custom tool. */\n create(params: CreateToolParams, config: RequestConfig = {}): Promise<Tool> {\n return this.http.request(\"POST\", \"tools\", { body: params, signal: config.signal });\n }\n\n /** Reads a tool by ID and optional version. */\n get(id: string, params: ReadToolParams = {}, config: RequestConfig = {}): Promise<Tool> {\n return this.http.request(\"GET\", `tools/${encodeURIComponent(id)}`, {\n query: { version: params.version },\n signal: config.signal,\n });\n }\n\n /** Creates a new revision of a tool. The name and type cannot be changed. */\n update(id: string, params: UpdateToolParams, config: RequestConfig = {}): Promise<Tool> {\n return this.http.request(\"PUT\", `tools/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Deletes a tool. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `tools/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Executes a tool, enabling you to test it without an actual conversation. */\n execute(\n id: string,\n params: ExecuteToolParams,\n config: RequestConfig = {},\n ): Promise<ToolExecutionResult> {\n return this.http.request(\"POST\", `tools/${encodeURIComponent(id)}/execute`, {\n body: { arguments: params.arguments, token: params.token ?? \"\" },\n signal: config.signal,\n });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n ListTopicsParams,\n ReadTopicParams,\n Topic,\n UpsertTopicParams,\n} from \"../models/articles.js\";\n\ninterface ListTopicsResponse {\n Topics: Topic[];\n}\n\n/**\n * Article topic management endpoints. Requires a Management API key.\n */\nexport class Topics {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists the company's topics, optionally filtered by support platform. */\n async list(params: ListTopicsParams = {}, config: RequestConfig = {}): Promise<Topic[]> {\n const rsp = await this.http.request<ListTopicsResponse>(\"GET\", \"topics\", {\n query: { support_platform: params.support_platform },\n signal: config.signal,\n });\n return rsp.Topics;\n }\n\n /** Reads a single article topic. */\n get(id: string, params: ReadTopicParams = {}, config: RequestConfig = {}): Promise<Topic> {\n return this.http.request(\"GET\", `topic/${encodeURIComponent(id)}`, {\n query: { support_platform: params.support_platform },\n signal: config.signal,\n });\n }\n\n /** Creates or updates an article topic. */\n upsert(params: UpsertTopicParams, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"POST\", \"topics\", { body: params, signal: config.signal });\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type {\n CreateTrafficGroupParams,\n TrafficGroup,\n TrafficGroupTarget,\n TrafficGroupTargetParams,\n UpdateTrafficGroupParams,\n} from \"../models/traffic-groups.js\";\n\ninterface ListResponse {\n traffic_groups: TrafficGroup[];\n}\n\n/**\n * Traffic group management endpoints. Requires a Management API key.\n */\nexport class TrafficGroups {\n constructor(private readonly http: HttpClient) {}\n\n /** Lists all traffic groups for the company. */\n async list(config: RequestConfig = {}): Promise<TrafficGroup[]> {\n const rsp = await this.http.request<ListResponse>(\"GET\", \"traffic-groups\", {\n signal: config.signal,\n });\n return rsp.traffic_groups;\n }\n\n /** Creates a new traffic group. */\n create(params: CreateTrafficGroupParams, config: RequestConfig = {}): Promise<TrafficGroup> {\n return this.http.request(\"POST\", \"traffic-groups\", { body: params, signal: config.signal });\n }\n\n /** Updates an existing traffic group. */\n update(\n id: string,\n params: UpdateTrafficGroupParams,\n config: RequestConfig = {},\n ): Promise<TrafficGroup> {\n return this.http.request(\"PUT\", `traffic-groups/${encodeURIComponent(id)}`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Deletes a traffic group and all associated targets. */\n delete(id: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\"DELETE\", `traffic-groups/${encodeURIComponent(id)}`, {\n signal: config.signal,\n });\n }\n\n /** Adds a target to a traffic group. */\n addTarget(\n id: string,\n params: TrafficGroupTargetParams,\n config: RequestConfig = {},\n ): Promise<TrafficGroupTarget> {\n return this.http.request(\"POST\", `traffic-groups/${encodeURIComponent(id)}/targets`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Removes a target from a traffic group. */\n removeTarget(id: string, targetId: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\n \"DELETE\",\n `traffic-groups/${encodeURIComponent(id)}/targets/${encodeURIComponent(targetId)}`,\n { signal: config.signal },\n );\n }\n\n /** Excludes a target (e.g. a procedure) from a traffic group. */\n addExclusion(\n id: string,\n params: TrafficGroupTargetParams,\n config: RequestConfig = {},\n ): Promise<TrafficGroupTarget> {\n return this.http.request(\"POST\", `traffic-groups/${encodeURIComponent(id)}/exclusions`, {\n body: params,\n signal: config.signal,\n });\n }\n\n /** Removes a target exclusion from a traffic group. */\n removeExclusion(id: string, targetId: string, config: RequestConfig = {}): Promise<void> {\n return this.http.request(\n \"DELETE\",\n `traffic-groups/${encodeURIComponent(id)}/exclusions/${encodeURIComponent(targetId)}`,\n { signal: config.signal },\n );\n }\n}\n","import type { HttpClient } from \"../internal/http.js\";\nimport type { RequestConfig } from \"../request-config.js\";\nimport type { ReadVoiceCallContextParams, VoiceCallContext } from \"../models/voice.js\";\n\n/**\n * Voice endpoints. Requires an Integration API key.\n */\nexport class Voice {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Retrieves the most recent call context for a given phone number. Throws an\n * {@link ApiError} with status 404 if there have been no recent call events.\n */\n getLatestCallContext(\n phoneNumber: string,\n params: ReadVoiceCallContextParams = {},\n config: RequestConfig = {},\n ): Promise<VoiceCallContext> {\n return this.http.request(\n \"GET\",\n `voice/latest-call-context/${encodeURIComponent(phoneNumber)}`,\n {\n query: {\n lookback_seconds: params.lookback_seconds,\n include_large_fields: params.include_large_fields,\n },\n signal: config.signal,\n },\n );\n }\n}\n","import type { BackOfficeTask } from \"../models/back-office-tasks.js\";\nimport type { CustomerSource } from \"../models/enums.js\";\n\n/** The set of webhook event types currently delivered by Gradient Labs. */\nexport const WebhookType = {\n AgentMessage: \"agent.message\",\n ConversationHandOff: \"conversation.hand_off\",\n ConversationFinished: \"conversation.finished\",\n ActionExecute: \"action.execute\",\n ResourcePull: \"resource.pull\",\n BackOfficeTaskComplete: \"back-office-task.complete\",\n BackOfficeTaskHandOff: \"back-office-task.hand-off\",\n BackOfficeTaskFail: \"back-office-task.fail\",\n} as const;\nexport type WebhookType = (typeof WebhookType)[keyof typeof WebhookType];\n\n/**\n * The conversation an `agent.message`, `conversation.hand_off`, or\n * `conversation.finished` event relates to.\n */\nexport interface WebhookConversation {\n id: string;\n customer_id: string;\n}\n\n/**\n * The conversation an `action.execute` or `resource.pull` event relates to.\n * Present only when the action ran in a conversation context.\n */\nexport interface ActionWebhookConversation {\n id: string;\n customer_id: string;\n customer_source: CustomerSource;\n /** Metadata attached to the conversation when it was started. */\n metadata: unknown;\n}\n\n/**\n * The back-office task an `action.execute` or `resource.pull` event relates to.\n * Present only when the action ran in a back-office task context.\n */\nexport interface ActionWebhookBackOfficeTask {\n id: string;\n}\n\nexport interface AgentMessageEvent {\n conversation: WebhookConversation;\n body: string;\n total?: number;\n sequence?: number;\n intent?: string;\n /** Whether this is a holding response sent while the agent works. */\n is_holding?: boolean;\n /** External ID of the customer message this turn is responding to. */\n last_customer_message_id?: string;\n}\n\nexport interface ConversationHandOffEvent {\n conversation: WebhookConversation;\n target?: string;\n /** Coded reason the agent wants to hand off. */\n reason_code: string;\n /** Human-legible description of the reason code. */\n reason: string;\n note?: string;\n intent?: string;\n}\n\nexport interface ConversationFinishedEvent {\n conversation: WebhookConversation;\n reason_code?: string;\n intent?: string;\n}\n\nexport interface ActionExecuteEvent {\n action: string;\n /** Arguments to execute the action with. */\n params: unknown;\n /** Set when the action ran in a conversation context. */\n conversation?: ActionWebhookConversation;\n /** Set when the action ran in a back-office task context. */\n back_office_task?: ActionWebhookBackOfficeTask;\n}\n\nexport interface ResourcePullEvent {\n resource_type: string;\n /** Set when the pull ran in a conversation context. */\n conversation?: ActionWebhookConversation;\n /** Set when the pull ran in a back-office task context. */\n back_office_task?: ActionWebhookBackOfficeTask;\n}\n\n/**\n * The three back-office task events all carry the full task under a single\n * `back_office_task` key. The outcome (result / failure reasons / hand-off\n * reason) lives inside that task object.\n */\nexport interface BackOfficeTaskCompleteEvent {\n back_office_task: BackOfficeTask;\n}\n\nexport interface BackOfficeTaskHandOffEvent {\n back_office_task: BackOfficeTask;\n}\n\nexport interface BackOfficeTaskFailEvent {\n back_office_task: BackOfficeTask;\n}\n\n/** Fields common to every webhook envelope. */\ninterface WebhookBase {\n id: string;\n sequence_number: number;\n /** RFC3339 timestamp of when the event was generated. */\n timestamp: string;\n}\n\n/**\n * A parsed, verified webhook event. Discriminate on `type` for exhaustive,\n * type-safe handling of the `data` payload.\n */\nexport type WebhookEvent =\n | (WebhookBase & { type: \"agent.message\"; data: AgentMessageEvent })\n | (WebhookBase & { type: \"conversation.hand_off\"; data: ConversationHandOffEvent })\n | (WebhookBase & { type: \"conversation.finished\"; data: ConversationFinishedEvent })\n | (WebhookBase & { type: \"action.execute\"; data: ActionExecuteEvent })\n | (WebhookBase & { type: \"resource.pull\"; data: ResourcePullEvent })\n | (WebhookBase & { type: \"back-office-task.complete\"; data: BackOfficeTaskCompleteEvent })\n | (WebhookBase & { type: \"back-office-task.hand-off\"; data: BackOfficeTaskHandOffEvent })\n | (WebhookBase & { type: \"back-office-task.fail\"; data: BackOfficeTaskFailEvent });\n\n/** The result of parsing a webhook request. */\nexport interface ParsedWebhook {\n event: WebhookEvent;\n /**\n * The optional sensitive conversation token from the `X-GradientLabs-Token`\n * header, if present.\n */\n token?: string;\n}\n","import { createHmac, timingSafeEqual } from \"node:crypto\";\n\nimport { GradientLabsError } from \"../errors.js\";\nimport { WebhookType, type ParsedWebhook, type WebhookEvent } from \"./events.js\";\n\nconst SIGNATURE_HEADER = \"x-gradientlabs-signature\";\nconst TOKEN_HEADER = \"x-gradientlabs-token\";\nconst DEFAULT_LEEWAY_MS = 5 * 60 * 1000;\n\n/** Thrown when a webhook's signature or timestamp cannot be verified. Respond 401. */\nexport class InvalidWebhookSignatureError extends GradientLabsError {\n constructor(message = \"webhook signature is invalid\") {\n super(message);\n this.name = \"InvalidWebhookSignatureError\";\n }\n}\n\n/** Thrown when a webhook of an unrecognised type is received. Log it and respond 200. */\nexport class UnknownWebhookTypeError extends GradientLabsError {\n readonly type: string;\n constructor(type: string) {\n super(`unknown webhook event type received: ${type}`);\n this.name = \"UnknownWebhookTypeError\";\n this.type = type;\n }\n}\n\n/** A source of request headers: a Fetch `Headers`, a Node headers object, or a plain map. */\nexport type HeadersLike =\n | { get(name: string): string | null }\n | Record<string, string | string[] | undefined>;\n\n/** The raw request body. Signatures are computed over the exact bytes received. */\nexport type WebhookBody = string | Uint8Array;\n\nexport interface WebhookVerifierConfig {\n /** The webhook signing key configured for your workspace. */\n signingKey: string;\n /** Maximum accepted age of a webhook, in milliseconds. Defaults to 5 minutes. */\n leewayMs?: number;\n /** Injectable clock for testing. Defaults to Date.now. */\n now?: () => number;\n}\n\n/**\n * Verifies the authenticity of requests to your webhook endpoint using the\n * `X-GradientLabs-Signature` header (format `t=<unix_ts>,v1=<hex>`).\n */\nexport class WebhookVerifier {\n private readonly signingKey: string;\n private readonly leewayMs: number;\n private readonly now: () => number;\n\n constructor(config: WebhookVerifierConfig) {\n this.signingKey = config.signingKey;\n this.leewayMs = config.leewayMs ?? DEFAULT_LEEWAY_MS;\n this.now = config.now ?? Date.now;\n }\n\n /**\n * Verifies a webhook's signature and timestamp. Throws\n * {@link InvalidWebhookSignatureError} if verification fails.\n */\n verify(args: { body: WebhookBody; signature: string | null | undefined }): void {\n const body = toBuffer(args.body);\n const { timestamp, signatures } = parseSignatureHeader(args.signature);\n\n if (Math.abs(this.now() - timestamp * 1000) > this.leewayMs) {\n throw new InvalidWebhookSignatureError(\"webhook timestamp is outside the allowed leeway\");\n }\n\n const expected = this.computeSignature(timestamp, body);\n for (const candidate of signatures) {\n if (constantTimeEqual(expected, candidate)) {\n return;\n }\n }\n throw new InvalidWebhookSignatureError();\n }\n\n /**\n * Verifies a webhook request, then parses it into a typed event. Returns the\n * event along with the optional `X-GradientLabs-Token` passthrough.\n *\n * Verification always happens before the event type is inspected.\n */\n parse(args: { body: WebhookBody; headers: HeadersLike }): ParsedWebhook {\n const signature = getHeader(args.headers, SIGNATURE_HEADER);\n this.verify({ body: args.body, signature });\n\n const text =\n typeof args.body === \"string\" ? args.body : Buffer.from(args.body).toString(\"utf8\");\n const payload = JSON.parse(text) as {\n id: string;\n type: string;\n sequence_number: number;\n timestamp: string;\n data: unknown;\n };\n\n if (!isKnownType(payload.type)) {\n throw new UnknownWebhookTypeError(payload.type);\n }\n\n const event = {\n id: payload.id,\n type: payload.type,\n sequence_number: payload.sequence_number,\n timestamp: payload.timestamp,\n data: payload.data,\n } as WebhookEvent;\n\n const token = getHeader(args.headers, TOKEN_HEADER) ?? undefined;\n return { event, token };\n }\n\n private computeSignature(timestamp: number, body: Buffer): Buffer {\n return createHmac(\"sha256\", this.signingKey).update(`${timestamp}.`).update(body).digest();\n }\n}\n\nfunction isKnownType(type: string): type is WebhookEvent[\"type\"] {\n return (Object.values(WebhookType) as string[]).includes(type);\n}\n\nfunction parseSignatureHeader(header: string | null | undefined): {\n timestamp: number;\n signatures: Buffer[];\n} {\n if (!header) {\n throw new InvalidWebhookSignatureError(\"missing signature header\");\n }\n\n let timestamp: number | undefined;\n const signatures: Buffer[] = [];\n\n for (const pair of header.split(\",\")) {\n const idx = pair.indexOf(\"=\");\n if (idx === -1) {\n throw new InvalidWebhookSignatureError(\"malformed signature header\");\n }\n const key = pair.slice(0, idx);\n const value = pair.slice(idx + 1);\n if (key === \"t\") {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed)) {\n throw new InvalidWebhookSignatureError(\"invalid timestamp component\");\n }\n timestamp = parsed;\n } else if (key === \"v1\") {\n try {\n signatures.push(Buffer.from(value, \"hex\"));\n } catch {\n throw new InvalidWebhookSignatureError(\"invalid signature component\");\n }\n }\n }\n\n if (timestamp === undefined) {\n throw new InvalidWebhookSignatureError(\"signature header contains no timestamp component\");\n }\n if (signatures.length === 0) {\n throw new InvalidWebhookSignatureError(\"signature header contains no v1 signature\");\n }\n\n return { timestamp, signatures };\n}\n\nfunction constantTimeEqual(a: Buffer, b: Buffer): boolean {\n if (a.length !== b.length) {\n return false;\n }\n return timingSafeEqual(a, b);\n}\n\nfunction toBuffer(body: WebhookBody): Buffer {\n return typeof body === \"string\" ? Buffer.from(body, \"utf8\") : Buffer.from(body);\n}\n\nfunction getHeader(headers: HeadersLike, name: string): string | null {\n if (typeof (headers as { get?: unknown }).get === \"function\") {\n return (headers as { get(n: string): string | null }).get(name);\n }\n const record = headers as Record<string, string | string[] | undefined>;\n // Node lower-cases header keys; check the canonical lower-case form plus a\n // case-insensitive fallback.\n const direct = record[name];\n const value = direct ?? findCaseInsensitive(record, name);\n if (value === undefined) {\n return null;\n }\n return Array.isArray(value) ? (value[0] ?? null) : value;\n}\n\nfunction findCaseInsensitive(\n record: Record<string, string | string[] | undefined>,\n name: string,\n): string | string[] | undefined {\n const lower = name.toLowerCase();\n for (const key of Object.keys(record)) {\n if (key.toLowerCase() === lower) {\n return record[key];\n }\n }\n return undefined;\n}\n","import { ConfigurationError } from \"./errors.js\";\nimport { HttpClient, type FetchLike } from \"./internal/http.js\";\nimport { Articles } from \"./resources/articles.js\";\nimport { BackOfficeTasks } from \"./resources/back-office-tasks.js\";\nimport { Conversations } from \"./resources/conversations.js\";\nimport { HandOffTargets } from \"./resources/hand-off-targets.js\";\nimport { IpAddressesResource } from \"./resources/ip-addresses.js\";\nimport { Notes } from \"./resources/notes.js\";\nimport { OutboundConversations } from \"./resources/outbound-conversations.js\";\nimport { Procedures } from \"./resources/procedures.js\";\nimport { ResourceSources } from \"./resources/resource-sources.js\";\nimport { ResourceTypes } from \"./resources/resource-types.js\";\nimport { Secrets } from \"./resources/secrets.js\";\nimport { TerminologySubstitutions } from \"./resources/terminology-substitutions.js\";\nimport { Tools } from \"./resources/tools.js\";\nimport { Topics } from \"./resources/topics.js\";\nimport { TrafficGroups } from \"./resources/traffic-groups.js\";\nimport { Voice } from \"./resources/voice.js\";\nimport { WebhookVerifier } from \"./webhooks/verifier.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.gradient-labs.ai\";\n\nexport interface GradientLabsConfig {\n /** Your Gradient Labs API key. Required. */\n apiKey: string;\n /** Override the base URL. Defaults to https://api.gradient-labs.ai. */\n baseUrl?: string;\n /** The webhook signing key, required to verify incoming webhooks. */\n webhookSigningKey?: string;\n /** Maximum accepted age of a webhook, in milliseconds. Defaults to 5 minutes. */\n webhookLeewayMs?: number;\n /** Inject a custom fetch implementation (tests, proxies, instrumentation). */\n fetch?: FetchLike;\n /** Per-request timeout in milliseconds. No timeout by default. */\n timeoutMs?: number;\n}\n\nconst defaultFetch: FetchLike = (input, init) =>\n fetch(input, init as RequestInit) as unknown as ReturnType<FetchLike>;\n\n/**\n * The Gradient Labs API client. Construct one with your API key, then access\n * endpoints through the resource namespaces (e.g. `client.conversations.start`).\n */\nexport class GradientLabs {\n // Integration role (publicapi)\n readonly conversations: Conversations;\n readonly outboundConversations: OutboundConversations;\n readonly backOfficeTasks: BackOfficeTasks;\n readonly voice: Voice;\n\n // Management role (publicmanagementapi)\n readonly tools: Tools;\n readonly articles: Articles;\n readonly topics: Topics;\n readonly procedures: Procedures;\n readonly handOffTargets: HandOffTargets;\n readonly resourceSources: ResourceSources;\n readonly resourceTypes: ResourceTypes;\n readonly secrets: Secrets;\n readonly notes: Notes;\n readonly terminologySubstitutions: TerminologySubstitutions;\n readonly trafficGroups: TrafficGroups;\n readonly ipAddresses: IpAddressesResource;\n\n private readonly webhookVerifier?: WebhookVerifier;\n\n constructor(config: GradientLabsConfig) {\n if (!config.apiKey) {\n throw new ConfigurationError(\"apiKey is required\");\n }\n\n const http = new HttpClient({\n baseUrl: config.baseUrl ?? DEFAULT_BASE_URL,\n apiKey: config.apiKey,\n fetch: config.fetch ?? defaultFetch,\n timeoutMs: config.timeoutMs,\n });\n\n this.conversations = new Conversations(http);\n this.outboundConversations = new OutboundConversations(http);\n this.backOfficeTasks = new BackOfficeTasks(http);\n this.voice = new Voice(http);\n\n this.tools = new Tools(http);\n this.articles = new Articles(http);\n this.topics = new Topics(http);\n this.procedures = new Procedures(http);\n this.handOffTargets = new HandOffTargets(http);\n this.resourceSources = new ResourceSources(http);\n this.resourceTypes = new ResourceTypes(http);\n this.secrets = new Secrets(http);\n this.notes = new Notes(http);\n this.terminologySubstitutions = new TerminologySubstitutions(http);\n this.trafficGroups = new TrafficGroups(http);\n this.ipAddresses = new IpAddressesResource(http);\n\n if (config.webhookSigningKey) {\n this.webhookVerifier = new WebhookVerifier({\n signingKey: config.webhookSigningKey,\n leewayMs: config.webhookLeewayMs,\n });\n }\n }\n\n /**\n * The webhook verifier. Throws {@link ConfigurationError} if the client was\n * created without a `webhookSigningKey`.\n */\n get webhooks(): WebhookVerifier {\n if (!this.webhookVerifier) {\n throw new ConfigurationError(\n \"webhookSigningKey is required to verify webhooks; pass it to the GradientLabs constructor\",\n );\n }\n return this.webhookVerifier;\n }\n}\n","// Open string enums. Each is modelled as a `const` object of known values plus\n// an open union type (`| (string & {})`) so that a future server-side value\n// never breaks a consumer at compile time while retaining autocomplete.\n//\n// Values are sourced verbatim from the wearegradient Go source.\n\nexport const ArticleStatus = {\n Draft: \"draft\",\n Published: \"published\",\n Deleted: \"deleted\",\n Excluded: \"excluded\",\n Unknown: \"unknown\",\n} as const;\nexport type ArticleStatus = (typeof ArticleStatus)[keyof typeof ArticleStatus] | (string & {});\n\nexport const ArticleUsageStatus = {\n On: \"on\",\n Off: \"off\",\n} as const;\nexport type ArticleUsageStatus =\n | (typeof ArticleUsageStatus)[keyof typeof ArticleUsageStatus]\n | (string & {});\n\nexport const ArticleVisibility = {\n Public: \"public\",\n Users: \"users\",\n Internal: \"internal\",\n Unknown: \"unknown\",\n} as const;\nexport type ArticleVisibility =\n | (typeof ArticleVisibility)[keyof typeof ArticleVisibility]\n | (string & {});\n\nexport const AttachmentType = {\n Image: \"image\",\n File: \"file\",\n} as const;\nexport type AttachmentType = (typeof AttachmentType)[keyof typeof AttachmentType] | (string & {});\n\nexport const Channel = {\n Web: \"web\",\n Email: \"email\",\n Voice: \"voice\",\n Unmapped: \"unmapped\",\n} as const;\nexport type Channel = (typeof Channel)[keyof typeof Channel] | (string & {});\n\nexport const CustomerSource = {\n Dixa: \"dixa\",\n Intercom: \"intercom\",\n Freshchat: \"freshchat\",\n Freshdesk: \"freshdesk\",\n PublicApi: \"public-api\",\n ChatSdk: \"chat-sdk\",\n Salesforce: \"salesforce\",\n Zendesk: \"zendesk\",\n Livekit: \"livekit\",\n Twilio: \"twilio\",\n Talkdesk: \"talkdesk\",\n IntercomVoice: \"intercom-voice\",\n Livechat: \"livechat\",\n WebApp: \"web-app\",\n Gmail: \"gmail\",\n File: \"file\",\n} as const;\nexport type CustomerSource = (typeof CustomerSource)[keyof typeof CustomerSource] | (string & {});\n\nexport const ParticipantType = {\n Customer: \"Customer\",\n Agent: \"Agent\",\n AIAgent: \"AI Agent\",\n Bot: \"Bot\",\n} as const;\nexport type ParticipantType =\n | (typeof ParticipantType)[keyof typeof ParticipantType]\n | (string & {});\n\nexport const ConversationEventType = {\n Assigned: \"assigned\",\n Cancelled: \"cancelled\",\n Finished: \"finished\",\n Resumed: \"resumed\",\n InternalNote: \"internal-note\",\n Message: \"message\",\n Delivered: \"delivered\",\n Read: \"read\",\n Rated: \"rated\",\n Started: \"started\",\n Typing: \"typing\",\n AsyncToolResult: \"async-tool-result\",\n} as const;\nexport type ConversationEventType =\n | (typeof ConversationEventType)[keyof typeof ConversationEventType]\n | (string & {});\n\nexport const ProcedureStatus = {\n Unsaved: \"unsaved\",\n Draft: \"draft\",\n Live: \"live\",\n Archived: \"archived\",\n} as const;\nexport type ProcedureStatus =\n | (typeof ProcedureStatus)[keyof typeof ProcedureStatus]\n | (string & {});\n\nexport const NoteStatus = {\n Draft: \"draft\",\n Live: \"live\",\n Deleted: \"deleted\",\n} as const;\nexport type NoteStatus = (typeof NoteStatus)[keyof typeof NoteStatus] | (string & {});\n\nexport const BackOfficeTaskStatus = {\n Pending: \"pending\",\n InProgress: \"in-progress\",\n Completed: \"completed\",\n Failed: \"failed\",\n HandedOff: \"handed-off\",\n} as const;\nexport type BackOfficeTaskStatus =\n | (typeof BackOfficeTaskStatus)[keyof typeof BackOfficeTaskStatus]\n | (string & {});\n\nexport const BackOfficeTaskResultType = {\n Custom: \"custom\",\n} as const;\nexport type BackOfficeTaskResultType =\n | (typeof BackOfficeTaskResultType)[keyof typeof BackOfficeTaskResultType]\n | (string & {});\n\nexport const AttributeCardinality = {\n One: \"one\",\n Many: \"many\",\n} as const;\nexport type AttributeCardinality =\n | (typeof AttributeCardinality)[keyof typeof AttributeCardinality]\n | (string & {});\n\nexport const AttributeType = {\n String: \"string\",\n Date: \"date\",\n Timestamp: \"timestamp\",\n Boolean: \"boolean\",\n Number: \"number\",\n Array: \"array\",\n Complex: \"complex\",\n} as const;\nexport type AttributeType = (typeof AttributeType)[keyof typeof AttributeType] | (string & {});\n\nexport const ResourceSourceRefreshStrategy = {\n Dynamic: \"dynamic\",\n Static: \"static\",\n} as const;\nexport type ResourceSourceRefreshStrategy =\n | (typeof ResourceSourceRefreshStrategy)[keyof typeof ResourceSourceRefreshStrategy]\n | (string & {});\n\nexport const ResourceSourceScope = {\n Global: \"global\",\n Local: \"local\",\n} as const;\nexport type ResourceSourceScope =\n | (typeof ResourceSourceScope)[keyof typeof ResourceSourceScope]\n | (string & {});\n\nexport const ResourceSourceType = {\n Http: \"http\",\n Internal: \"internal\",\n Webhook: \"webhook\",\n} as const;\nexport type ResourceSourceType =\n | (typeof ResourceSourceType)[keyof typeof ResourceSourceType]\n | (string & {});\n\nexport const SchemaUpdateStrategy = {\n Replace: \"replace\",\n Merge: \"merge\",\n} as const;\nexport type SchemaUpdateStrategy =\n | (typeof SchemaUpdateStrategy)[keyof typeof SchemaUpdateStrategy]\n | (string & {});\n\nexport const ResourceTypeRefreshStrategy = {\n Dynamic: \"dynamic\",\n Static: \"static\",\n} as const;\nexport type ResourceTypeRefreshStrategy =\n | (typeof ResourceTypeRefreshStrategy)[keyof typeof ResourceTypeRefreshStrategy]\n | (string & {});\n\nexport const ResourceTypeScope = {\n Global: \"global\",\n Local: \"local\",\n} as const;\nexport type ResourceTypeScope =\n | (typeof ResourceTypeScope)[keyof typeof ResourceTypeScope]\n | (string & {});\n\nexport const SupportPlatform = {\n Dixa: \"dixa\",\n Freshchat: \"freshchat\",\n Freshdesk: \"freshdesk\",\n Gmail: \"gmail\",\n Intercom: \"intercom\",\n Livechat: \"livechat\",\n PublicApi: \"public-api\",\n ChatSdk: \"chat-sdk\",\n Salesforce: \"salesforce\",\n Zendesk: \"zendesk\",\n Livekit: \"livekit\",\n Twilio: \"twilio\",\n Talkdesk: \"talkdesk\",\n IntercomVoice: \"intercom-voice\",\n ConversationSynthesizor: \"conversation-synthesizor\",\n WebApp: \"web-app\",\n} as const;\nexport type SupportPlatform =\n | (typeof SupportPlatform)[keyof typeof SupportPlatform]\n | (string & {});\n\nexport const BodyEncoding = {\n Json: \"application/json\",\n Form: \"application/x-www-form-urlencoded\",\n} as const;\nexport type BodyEncoding = (typeof BodyEncoding)[keyof typeof BodyEncoding] | (string & {});\n\nexport const ParameterSource = {\n Llm: \"llm\",\n Literal: \"literal\",\n Resource: \"resource\",\n} as const;\nexport type ParameterSource =\n | (typeof ParameterSource)[keyof typeof ParameterSource]\n | (string & {});\n\nexport const ParameterType = {\n String: \"string\",\n StringArray: \"string_array\",\n Integer: \"integer\",\n Float: \"float\",\n Boolean: \"boolean\",\n Date: \"date\",\n Timestamp: \"timestamp\",\n Duration: \"duration\",\n} as const;\nexport type ParameterType = (typeof ParameterType)[keyof typeof ParameterType] | (string & {});\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gradientlabs/client",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Official Node.js / TypeScript client for the Gradient Labs API",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=20"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"main": "./dist/index.cjs",
|
|
17
|
+
"module": "./dist/index.mjs",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsup",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"typecheck": "tsc --noEmit",
|
|
29
|
+
"format": "prettier --write .",
|
|
30
|
+
"format:check": "prettier --check ."
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"gradient-labs",
|
|
34
|
+
"ai",
|
|
35
|
+
"customer-support",
|
|
36
|
+
"api",
|
|
37
|
+
"client",
|
|
38
|
+
"sdk"
|
|
39
|
+
],
|
|
40
|
+
"author": "Gradient Labs",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/gradientlabs-ai/nodejs-client.git"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/gradientlabs-ai/nodejs-client#readme",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/gradientlabs-ai/nodejs-client/issues"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@eslint/js": "^9.7.0",
|
|
52
|
+
"@types/node": "^20.14.0",
|
|
53
|
+
"eslint": "^9.7.0",
|
|
54
|
+
"prettier": "^3.3.0",
|
|
55
|
+
"tsup": "^8.2.0",
|
|
56
|
+
"typescript": "^5.5.0",
|
|
57
|
+
"typescript-eslint": "^8.0.0",
|
|
58
|
+
"vitest": "^2.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|