cngkit 1.1.23 → 1.1.25

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.
Files changed (70) hide show
  1. package/README.md +9 -7
  2. package/dist/{chunk-AS7FIJWP.js → chunk-2Y5FMKFS.js} +3 -4
  3. package/dist/chunk-2Y5FMKFS.js.map +1 -0
  4. package/dist/{chunk-VMTXY4KQ.js → chunk-3VDQDFHG.js} +14 -6
  5. package/dist/chunk-3VDQDFHG.js.map +1 -0
  6. package/dist/{chunk-U725ZHCI.js → chunk-55IPOJ3R.js} +2 -2
  7. package/dist/{chunk-BXS4IKUA.js → chunk-DDQ5TITN.js} +91 -15
  8. package/dist/chunk-DDQ5TITN.js.map +1 -0
  9. package/dist/{chunk-BRFWVQI4.js → chunk-LC4CYVCT.js} +1 -1
  10. package/dist/chunk-LC4CYVCT.js.map +1 -0
  11. package/dist/{chunk-YALWTRIP.js → chunk-LNFZT3R3.js} +2 -2
  12. package/dist/{chunk-JNHW72SU.js → chunk-QCAHQE7Q.js} +14 -9
  13. package/dist/chunk-QCAHQE7Q.js.map +1 -0
  14. package/dist/{chunk-WIEYHKQA.js → chunk-TC6YIS5Z.js} +12 -15
  15. package/dist/chunk-TC6YIS5Z.js.map +1 -0
  16. package/dist/{chunk-67FUBMNB.js → chunk-X3UQB2CC.js} +2 -2
  17. package/dist/{chunk-67FUBMNB.js.map → chunk-X3UQB2CC.js.map} +1 -1
  18. package/dist/{chunk-GYRLVNJX.js → chunk-YIU6G2D3.js} +2 -2
  19. package/dist/{chunk-3BATDTKU.js → chunk-YPGDQ6P2.js} +2 -4
  20. package/dist/chunk-YPGDQ6P2.js.map +1 -0
  21. package/dist/cli.js +2 -2
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands/coderoom/index.js +3 -3
  24. package/dist/commands/coderoom/join.js +14 -5
  25. package/dist/commands/coderoom/join.js.map +1 -1
  26. package/dist/commands/coderoom/share.js +4 -4
  27. package/dist/commands/hookify/index.js +3 -3
  28. package/dist/commands/hookify/ingest.js +3 -3
  29. package/dist/commands/hooks/index.js +3 -3
  30. package/dist/commands/hooks/install.js +3 -3
  31. package/dist/commands/hooks/uninstall.js +3 -3
  32. package/dist/commands/index.js +3 -3
  33. package/dist/commands/knowledges/audiences.js +6 -6
  34. package/dist/commands/knowledges/cat.js +6 -6
  35. package/dist/commands/knowledges/files.js +6 -6
  36. package/dist/commands/knowledges/find.js +6 -6
  37. package/dist/commands/knowledges/find.js.map +1 -1
  38. package/dist/commands/knowledges/glob.js +5 -5
  39. package/dist/commands/knowledges/grep.js +5 -5
  40. package/dist/commands/knowledges/grep.js.map +1 -1
  41. package/dist/commands/knowledges/head.js +6 -6
  42. package/dist/commands/knowledges/index.js +3 -3
  43. package/dist/commands/knowledges/list.js +6 -6
  44. package/dist/commands/knowledges/ls.js +6 -6
  45. package/dist/commands/knowledges/ls.js.map +1 -1
  46. package/dist/commands/knowledges/read.js +5 -5
  47. package/dist/commands/knowledges/read.js.map +1 -1
  48. package/dist/commands/knowledges/realpath.js +3 -3
  49. package/dist/commands/knowledges/realpath.js.map +1 -1
  50. package/dist/commands/knowledges/search.js +6 -6
  51. package/dist/commands/knowledges/stat.js +6 -6
  52. package/dist/commands/knowledges/status.js +6 -6
  53. package/dist/commands/knowledges/tail.js +6 -6
  54. package/dist/commands/knowledges/tree.js +6 -6
  55. package/dist/commands/login.js +2 -2
  56. package/dist/commands/scrub.js +17 -14
  57. package/dist/commands/scrub.js.map +1 -1
  58. package/dist/commands/transcripts.js +37 -27
  59. package/dist/commands/transcripts.js.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/chunk-3BATDTKU.js.map +0 -1
  62. package/dist/chunk-AS7FIJWP.js.map +0 -1
  63. package/dist/chunk-BRFWVQI4.js.map +0 -1
  64. package/dist/chunk-BXS4IKUA.js.map +0 -1
  65. package/dist/chunk-JNHW72SU.js.map +0 -1
  66. package/dist/chunk-VMTXY4KQ.js.map +0 -1
  67. package/dist/chunk-WIEYHKQA.js.map +0 -1
  68. /package/dist/{chunk-U725ZHCI.js.map → chunk-55IPOJ3R.js.map} +0 -0
  69. /package/dist/{chunk-YALWTRIP.js.map → chunk-LNFZT3R3.js.map} +0 -0
  70. /package/dist/{chunk-GYRLVNJX.js.map → chunk-YIU6G2D3.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/config.ts","../../../packages/client/src/generated/core/json.ts","../../../packages/client/src/generated/errors/CngApiError.ts","../../../packages/client/src/generated/errors/CngApiTimeoutError.ts","../../../packages/client/src/generated/api/errors/BadGatewayError.ts","../../../packages/client/src/generated/api/errors/BadRequestError.ts","../../../packages/client/src/generated/api/errors/ConflictError.ts","../../../packages/client/src/generated/api/errors/ContentTooLargeError.ts","../../../packages/client/src/generated/api/errors/InternalServerError.ts","../../../packages/client/src/generated/api/errors/NotFoundError.ts","../../../packages/client/src/generated/api/errors/ServiceUnavailableError.ts","../../../packages/client/src/generated/api/errors/UnauthorizedError.ts","../../../packages/client/src/generated/api/resources/llm/client/requests/CreateLlmChatRequest.ts","../../../packages/client/src/generated/api/resources/llm/types/GetLlmHealthResponse.ts","../../../packages/client/src/generated/api/resources/system/types/GetHealthResponse.ts","../../../packages/client/src/generated/api/resources/telemetry/client/requests/NavigationEventRequest.ts","../../../packages/client/src/generated/api/types/HarnessCatalogSummary.ts","../../../packages/client/src/generated/api/types/HarnessDatabaseBinding.ts","../../../packages/client/src/generated/api/types/HarnessSemanticSearchResponse.ts","../../../packages/client/src/generated/api/types/HookifyIngestResponse.ts","../../../packages/client/src/generated/api/types/HookifyRequestResponse.ts","../../../packages/client/src/generated/core/headers.ts","../../../packages/client/src/generated/core/fetcher/EndpointSupplier.ts","../../../packages/client/src/generated/core/logging/logger.ts","../../../packages/client/src/generated/core/url/qs.ts","../../../packages/client/src/generated/core/fetcher/createRequestUrl.ts","../../../packages/client/src/generated/core/fetcher/BinaryResponse.ts","../../../packages/client/src/generated/core/fetcher/getResponseBody.ts","../../../packages/client/src/generated/core/fetcher/getErrorResponseBody.ts","../../../packages/client/src/generated/core/fetcher/getFetchFn.ts","../../../packages/client/src/generated/core/fetcher/getRequestBody.ts","../../../packages/client/src/generated/core/fetcher/Headers.ts","../../../packages/client/src/generated/core/fetcher/signals.ts","../../../packages/client/src/generated/core/fetcher/makeRequest.ts","../../../packages/client/src/generated/core/fetcher/RawResponse.ts","../../../packages/client/src/generated/core/fetcher/requestWithRetries.ts","../../../packages/client/src/generated/core/fetcher/Fetcher.ts","../../../packages/client/src/generated/core/fetcher/HttpResponsePromise.ts","../../../packages/client/src/generated/core/url/join.ts","../../../packages/client/src/generated/core/fetcher/Supplier.ts","../../../packages/client/src/generated/core/fetcher/makePassthroughRequest.ts","../../../packages/client/src/generated/core/file/index.ts","../../../packages/client/src/generated/core/file/file.ts","../../../packages/client/src/generated/core/logging/index.ts","../../../packages/client/src/generated/core/runtime/runtime.ts","../../../packages/client/src/generated/core/stream/Stream.ts","../../../packages/client/src/generated/core/url/index.ts","../../../packages/client/src/generated/core/url/encodePathParam.ts","../../../packages/client/src/generated/core/url/QueryStringBuilder.ts","../../../packages/client/src/generated/BaseClient.ts","../../../packages/client/src/generated/environments.ts","../../../packages/client/src/generated/errors/handleNonStatusCodeError.ts","../../../packages/client/src/generated/api/resources/auth/client/Client.ts","../../../packages/client/src/generated/api/resources/coderoom/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessFilesystem/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessInternalKnowledges/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessKnowledges/client/Client.ts","../../../packages/client/src/generated/api/resources/hookify/client/Client.ts","../../../packages/client/src/generated/api/resources/llm/client/Client.ts","../../../packages/client/src/generated/api/resources/polar/client/Client.ts","../../../packages/client/src/generated/api/resources/system/client/Client.ts","../../../packages/client/src/generated/api/resources/telemetry/client/Client.ts","../../../packages/client/src/generated/Client.ts","../../../packages/client/src/generated/core/logging/exports.ts","../src/shared/output/errors.ts"],"sourcesContent":["import process from \"node:process\";\n\nexport const packageVersion = \"1.1.23\";\nexport const defaultApiBaseUrl = \"https://curly.ng\";\nexport const outputFormats = [\"text\", \"json\", \"markdown\"] as const;\n\nexport type OutputFormat = (typeof outputFormats)[number];\n\nexport type GlobalCommandOptions = {\n readonly apiBaseUrl?: never;\n};\n\nexport function resolveApiBaseUrl(options: GlobalCommandOptions): string {\n void options;\n return defaultApiBaseUrl;\n}\n\nexport function resolveOutputFormat(): OutputFormat {\n const value = process.env.CNGKIT_FORMAT?.toLowerCase();\n if (value === \"json\" || value === \"markdown\") {\n return value;\n }\n\n return \"text\";\n}\n\nexport function parseOutputFormat(value: string): OutputFormat {\n const normalizedValue = value.toLowerCase();\n if (normalizedValue === \"text\" || normalizedValue === \"json\" || normalizedValue === \"markdown\") {\n return normalizedValue;\n }\n\n throw new Error(\"Unknown --format value. Use one of: text, json, markdown.\");\n}\n","/**\n * Serialize a value to JSON\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n * @returns JSON string\n */\nexport const toJson = (\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string => {\n return JSON.stringify(value, replacer, space);\n};\n\n/**\n * Parse JSON string to object, array, or other type\n * @param text A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.\n * @returns Parsed object, array, or other type\n */\nexport function fromJson<T = unknown>(\n text: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n): T {\n return JSON.parse(text, reviver);\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../core/index.js\";\nimport { toJson } from \"../core/json.js\";\n\nexport class CngApiError extends Error {\n public readonly statusCode?: number;\n public readonly body?: unknown;\n public readonly rawResponse?: core.RawResponse;\n public readonly cause?: unknown;\n\n constructor({\n message,\n statusCode,\n body,\n rawResponse,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n body?: unknown;\n rawResponse?: core.RawResponse;\n cause?: unknown;\n }) {\n super(buildMessage({ message, statusCode, body }));\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"CngApiError\";\n this.statusCode = statusCode;\n this.body = body;\n this.rawResponse = rawResponse;\n if (cause != null) {\n this.cause = cause;\n }\n }\n}\n\nfunction buildMessage({\n message,\n statusCode,\n body,\n}: {\n message: string | undefined;\n statusCode: number | undefined;\n body: unknown | undefined;\n}): string {\n const lines: string[] = [];\n if (message != null) {\n lines.push(message);\n }\n\n if (statusCode != null) {\n lines.push(`Status code: ${statusCode.toString()}`);\n }\n\n if (body != null) {\n lines.push(`Body: ${toJson(body, undefined, 2)}`);\n }\n\n return lines.join(\"\\n\");\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport class CngApiTimeoutError extends Error {\n public readonly cause?: unknown;\n\n constructor(message: string, opts?: { cause?: unknown }) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"CngApiTimeoutError\";\n if (opts?.cause != null) {\n this.cause = opts.cause;\n }\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class BadGatewayError extends errors.CngApiError {\n constructor(body: CngApi.PolarCheckoutErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"BadGatewayError\",\n statusCode: 502,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"BadGatewayError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class BadRequestError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"BadRequestError\",\n statusCode: 400,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"BadRequestError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class ConflictError extends errors.CngApiError {\n constructor(body: CngApi.ApiErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"ConflictError\",\n statusCode: 409,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ConflictError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class ContentTooLargeError extends errors.CngApiError {\n constructor(body: CngApi.ApiErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"ContentTooLargeError\",\n statusCode: 413,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ContentTooLargeError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class InternalServerError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"InternalServerError\",\n statusCode: 500,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"InternalServerError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class NotFoundError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"NotFoundError\",\n statusCode: 404,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"NotFoundError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class ServiceUnavailableError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"ServiceUnavailableError\",\n statusCode: 503,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ServiceUnavailableError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class UnauthorizedError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"UnauthorizedError\",\n statusCode: 401,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"UnauthorizedError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * messages: [{\n * id: \"id\",\n * role: \"system\",\n * parts: [{\n * type: \"text\",\n * text: \"text\"\n * }]\n * }]\n * }\n */\nexport interface CreateLlmChatRequest {\n messages: CreateLlmChatRequest.Messages.Item[];\n}\n\nexport namespace CreateLlmChatRequest {\n export type Messages = Messages.Item[];\n\n export namespace Messages {\n export interface Item {\n id: string;\n role: Item.Role;\n parts: Item.Parts.Item[];\n /** Accepts any additional properties */\n [key: string]: any;\n }\n\n export namespace Item {\n export const Role = {\n System: \"system\",\n User: \"user\",\n Assistant: \"assistant\",\n } as const;\n export type Role = (typeof Role)[keyof typeof Role];\n export type Parts = Parts.Item[];\n\n export namespace Parts {\n export interface Item {\n type: Item.Type;\n text: string;\n state?: Item.State | undefined;\n /** Accepts any additional properties */\n [key: string]: any;\n }\n\n export namespace Item {\n export const Type = {\n Text: \"text\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n export const State = {\n Streaming: \"streaming\",\n Done: \"done\",\n } as const;\n export type State = (typeof State)[keyof typeof State];\n }\n }\n }\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface GetLlmHealthResponse {\n ok: boolean;\n service: GetLlmHealthResponse.Service;\n model: GetLlmHealthResponse.Model;\n}\n\nexport namespace GetLlmHealthResponse {\n export const Service = {\n CurlyNgBackend: \"curly-ng-backend\",\n } as const;\n export type Service = (typeof Service)[keyof typeof Service];\n export const Model = {\n CfGoogleGemma426Ba4BIt: \"@cf/google/gemma-4-26b-a4b-it\",\n } as const;\n export type Model = (typeof Model)[keyof typeof Model];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface GetHealthResponse {\n ok: boolean;\n service: GetHealthResponse.Service;\n}\n\nexport namespace GetHealthResponse {\n export const Service = {\n CurlyNgBackend: \"curly-ng-backend\",\n } as const;\n export type Service = (typeof Service)[keyof typeof Service];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * url: \"url\",\n * pathname: \"pathname\",\n * timestamp: \"2024-01-15T09:30:00Z\"\n * }\n */\nexport interface NavigationEventRequest {\n eventType?: NavigationEventRequest.EventType;\n interactionType?: NavigationEventRequest.InteractionType;\n url: string;\n previousUrl?: string;\n pathname: string;\n timestamp: string;\n userAgent?: string;\n referrer?: string;\n targetTag?: string;\n targetText?: string;\n targetHref?: string;\n}\n\nexport namespace NavigationEventRequest {\n export const EventType = {\n PageView: \"page_view\",\n Interaction: \"interaction\",\n } as const;\n export type EventType = (typeof EventType)[keyof typeof EventType];\n export const InteractionType = {\n Click: \"click\",\n Submit: \"submit\",\n } as const;\n export type InteractionType = (typeof InteractionType)[keyof typeof InteractionType];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as CngApi from \"../index.js\";\n\nexport interface HarnessCatalogSummary {\n name: HarnessCatalogSummary.Name;\n files: number;\n blobs: number;\n database: CngApi.HarnessDatabaseBinding;\n}\n\nexport namespace HarnessCatalogSummary {\n export const Name = {\n CurlyHarness: \"curly-harness\",\n } as const;\n export type Name = (typeof Name)[keyof typeof Name];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HarnessDatabaseBinding {\n engine: HarnessDatabaseBinding.Engine;\n binding: HarnessDatabaseBinding.Binding;\n}\n\nexport namespace HarnessDatabaseBinding {\n export const Engine = {\n Postgres: \"postgres\",\n } as const;\n export type Engine = (typeof Engine)[keyof typeof Engine];\n export const Binding = {\n Hyperdrive: \"HYPERDRIVE\",\n } as const;\n export type Binding = (typeof Binding)[keyof typeof Binding];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as CngApi from \"../index.js\";\n\nexport interface HarnessSemanticSearchResponse {\n query: string;\n model: HarnessSemanticSearchResponse.Model;\n results: CngApi.HarnessSemanticSearchResult[];\n}\n\nexport namespace HarnessSemanticSearchResponse {\n export const Model = {\n HarnessSemanticTextSearch: \"harness-semantic-text-search\",\n } as const;\n export type Model = (typeof Model)[keyof typeof Model];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HookifyIngestResponse {\n ok: boolean;\n mode: HookifyIngestResponse.Mode;\n status: HookifyIngestResponse.Status;\n requestId: string;\n stdout?: string | undefined;\n stderr?: string | undefined;\n exitCode?: number | undefined;\n pollAfterMs?: number | undefined;\n byteLength?: number | undefined;\n}\n\nexport namespace HookifyIngestResponse {\n export const Mode = {\n Sync: \"sync\",\n Async: \"async\",\n } as const;\n export type Mode = (typeof Mode)[keyof typeof Mode];\n export const Status = {\n Completed: \"completed\",\n Pending: \"pending\",\n } as const;\n export type Status = (typeof Status)[keyof typeof Status];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HookifyRequestResponse {\n ok: boolean;\n status: HookifyRequestResponse.Status;\n requestId: string;\n stdout?: string | undefined;\n stderr?: string | undefined;\n exitCode?: number | undefined;\n pollAfterMs?: number | undefined;\n}\n\nexport namespace HookifyRequestResponse {\n export const Status = {\n Completed: \"completed\",\n Pending: \"pending\",\n } as const;\n export type Status = (typeof Status)[keyof typeof Status];\n}\n","export function mergeHeaders(...headersArray: (Record<string, unknown> | null | undefined)[]): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n const insensitiveKey = key.toLowerCase();\n if (value != null) {\n result[insensitiveKey] = value;\n } else if (insensitiveKey in result) {\n delete result[insensitiveKey];\n }\n }\n\n return result;\n}\n\nexport function mergeOnlyDefinedHeaders(\n ...headersArray: (Record<string, unknown> | null | undefined)[]\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n const insensitiveKey = key.toLowerCase();\n if (value != null) {\n result[insensitiveKey] = value;\n }\n }\n\n return result;\n}\n","import type { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport type { Supplier } from \"./Supplier.js\";\n\ntype EndpointSupplierFn<T> = (arg: { endpointMetadata?: EndpointMetadata }) => T | Promise<T>;\nexport type EndpointSupplier<T> = Supplier<T> | EndpointSupplierFn<T>;\nexport const EndpointSupplier = {\n get: async <T>(supplier: EndpointSupplier<T>, arg: { endpointMetadata?: EndpointMetadata }): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as EndpointSupplierFn<T>)(arg);\n } else {\n return supplier;\n }\n },\n};\n","export const LogLevel = {\n Debug: \"debug\",\n Info: \"info\",\n Warn: \"warn\",\n Error: \"error\",\n} as const;\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\nconst logLevelMap: Record<LogLevel, number> = {\n [LogLevel.Debug]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Warn]: 3,\n [LogLevel.Error]: 4,\n};\n\nexport interface ILogger {\n /**\n * Logs a debug message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n debug(message: string, ...args: unknown[]): void;\n /**\n * Logs an info message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n info(message: string, ...args: unknown[]): void;\n /**\n * Logs a warning message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n warn(message: string, ...args: unknown[]): void;\n /**\n * Logs an error message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n error(message: string, ...args: unknown[]): void;\n}\n\n/**\n * Configuration for logger initialization.\n */\nexport interface LogConfig {\n /**\n * Minimum log level to output.\n * @default LogLevel.Info\n */\n level?: LogLevel;\n /**\n * Logger implementation to use.\n * @default new ConsoleLogger()\n */\n logger?: ILogger;\n /**\n * Whether logging should be silenced.\n * @default true\n */\n silent?: boolean;\n}\n\n/**\n * Default console-based logger implementation.\n */\nexport class ConsoleLogger implements ILogger {\n debug(message: string, ...args: unknown[]): void {\n console.debug(message, ...args);\n }\n info(message: string, ...args: unknown[]): void {\n console.info(message, ...args);\n }\n warn(message: string, ...args: unknown[]): void {\n console.warn(message, ...args);\n }\n error(message: string, ...args: unknown[]): void {\n console.error(message, ...args);\n }\n}\n\n/**\n * Logger class that provides level-based logging functionality.\n */\nexport class Logger {\n private readonly level: number;\n private readonly logger: ILogger;\n private readonly silent: boolean;\n\n /**\n * Creates a new logger instance.\n * @param config - Logger configuration\n */\n constructor(config: Required<LogConfig>) {\n this.level = logLevelMap[config.level];\n this.logger = config.logger;\n this.silent = config.silent;\n }\n\n /**\n * Checks if a log level should be output based on configuration.\n * @param level - The log level to check\n * @returns True if the level should be logged\n */\n public shouldLog(level: LogLevel): boolean {\n return !this.silent && this.level <= logLevelMap[level];\n }\n\n /**\n * Checks if debug logging is enabled.\n * @returns True if debug logs should be output\n */\n public isDebug(): boolean {\n return this.shouldLog(LogLevel.Debug);\n }\n\n /**\n * Logs a debug message if debug logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public debug(message: string, ...args: unknown[]): void {\n if (this.isDebug()) {\n this.logger.debug(message, ...args);\n }\n }\n\n /**\n * Checks if info logging is enabled.\n * @returns True if info logs should be output\n */\n public isInfo(): boolean {\n return this.shouldLog(LogLevel.Info);\n }\n\n /**\n * Logs an info message if info logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public info(message: string, ...args: unknown[]): void {\n if (this.isInfo()) {\n this.logger.info(message, ...args);\n }\n }\n\n /**\n * Checks if warning logging is enabled.\n * @returns True if warning logs should be output\n */\n public isWarn(): boolean {\n return this.shouldLog(LogLevel.Warn);\n }\n\n /**\n * Logs a warning message if warning logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public warn(message: string, ...args: unknown[]): void {\n if (this.isWarn()) {\n this.logger.warn(message, ...args);\n }\n }\n\n /**\n * Checks if error logging is enabled.\n * @returns True if error logs should be output\n */\n public isError(): boolean {\n return this.shouldLog(LogLevel.Error);\n }\n\n /**\n * Logs an error message if error logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public error(message: string, ...args: unknown[]): void {\n if (this.isError()) {\n this.logger.error(message, ...args);\n }\n }\n}\n\nexport function createLogger(config?: LogConfig | Logger): Logger {\n if (config == null) {\n return defaultLogger;\n }\n if (config instanceof Logger) {\n return config;\n }\n config = config ?? {};\n config.level ??= LogLevel.Info;\n config.logger ??= new ConsoleLogger();\n config.silent ??= true;\n return new Logger(config as Required<LogConfig>);\n}\n\nconst defaultLogger: Logger = new Logger({\n level: LogLevel.Info,\n logger: new ConsoleLogger(),\n silent: true,\n});\n","type ArrayFormat = \"indices\" | \"repeat\" | \"comma\";\n\ninterface QueryStringOptions {\n arrayFormat?: ArrayFormat;\n encode?: boolean;\n}\n\nconst defaultQsOptions: Required<QueryStringOptions> = {\n arrayFormat: \"indices\",\n encode: true,\n} as const;\n\nfunction encodeValue(value: unknown, shouldEncode: boolean): string {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n const stringValue = String(value);\n return shouldEncode ? encodeURIComponent(stringValue) : stringValue;\n}\n\nfunction stringifyObject(obj: Record<string, unknown>, prefix = \"\", options: Required<QueryStringOptions>): string[] {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n const fullKey = prefix ? `${prefix}[${key}]` : key;\n\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n const effectiveFormat = options.arrayFormat;\n if (effectiveFormat === \"comma\") {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n const encodedValues = value\n .filter((item) => item !== undefined && item !== null)\n .map((item) => encodeValue(item, options.encode));\n if (encodedValues.length > 0) {\n parts.push(`${encodedKey}=${encodedValues.join(\",\")}`);\n }\n } else {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined) {\n continue;\n }\n if (typeof item === \"object\" && !Array.isArray(item) && item !== null) {\n const arrayKey = effectiveFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n parts.push(...stringifyObject(item as Record<string, unknown>, arrayKey, options));\n } else {\n const arrayKey = effectiveFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n const encodedKey = options.encode ? encodeURIComponent(arrayKey) : arrayKey;\n parts.push(`${encodedKey}=${encodeValue(item, options.encode)}`);\n }\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value as Record<string, unknown>).length === 0) {\n continue;\n }\n parts.push(...stringifyObject(value as Record<string, unknown>, fullKey, options));\n } else {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n parts.push(`${encodedKey}=${encodeValue(value, options.encode)}`);\n }\n }\n\n return parts;\n}\n\nexport function toQueryString(obj: unknown, options?: QueryStringOptions): string {\n if (obj == null || typeof obj !== \"object\") {\n return \"\";\n }\n\n const parts = stringifyObject(obj as Record<string, unknown>, \"\", {\n ...defaultQsOptions,\n ...options,\n });\n return parts.join(\"&\");\n}\n","import { toQueryString } from \"../url/qs.js\";\n\nexport function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string {\n const queryString = toQueryString(queryParameters, { arrayFormat: \"repeat\" });\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n","export type BinaryResponse = {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */\n bodyUsed: Response[\"bodyUsed\"];\n /**\n * Returns a ReadableStream of the response body.\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body)\n */\n stream: () => Response[\"body\"];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */\n arrayBuffer: () => ReturnType<Response[\"arrayBuffer\"]>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */\n blob: () => ReturnType<Response[\"blob\"]>;\n /**\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes)\n * Some versions of the Fetch API may not support this method.\n */\n bytes?(): Promise<Uint8Array>;\n};\n\nexport function getBinaryResponse(response: Response): BinaryResponse {\n const binaryResponse: BinaryResponse = {\n get bodyUsed() {\n return response.bodyUsed;\n },\n stream: () => response.body,\n arrayBuffer: response.arrayBuffer.bind(response),\n blob: response.blob.bind(response),\n };\n if (\"bytes\" in response && typeof response.bytes === \"function\") {\n binaryResponse.bytes = response.bytes.bind(response);\n }\n\n return binaryResponse;\n}\n","import { fromJson } from \"../json.js\";\nimport { getBinaryResponse } from \"./BinaryResponse.js\";\n\n// Pins the upstream Response so undici's FinalizationRegistry can't GC it and cancel the body stream.\nfunction retainResponse(target: object, response: Response): void {\n Object.defineProperty(target, \"__fern_response_ref\", {\n value: response,\n enumerable: false,\n configurable: true,\n writable: false,\n });\n}\n\nexport async function getResponseBody(response: Response, responseType?: string): Promise<unknown> {\n switch (responseType) {\n case \"binary-response\":\n return getBinaryResponse(response);\n case \"blob\":\n return await response.blob();\n case \"arrayBuffer\":\n return await response.arrayBuffer();\n case \"sse\":\n if (response.body == null) {\n return {\n ok: false,\n error: {\n reason: \"body-is-null\",\n statusCode: response.status,\n },\n };\n }\n retainResponse(response.body, response);\n return response.body;\n case \"streaming\":\n if (response.body == null) {\n return {\n ok: false,\n error: {\n reason: \"body-is-null\",\n statusCode: response.status,\n },\n };\n }\n\n retainResponse(response.body, response);\n return response.body;\n\n case \"text\":\n return await response.text();\n }\n\n // if responseType is \"json\" or not specified, try to parse as JSON\n const text = await response.text();\n if (text.length > 0) {\n try {\n const responseBody = fromJson(text);\n return responseBody;\n } catch (_err) {\n return {\n ok: false,\n error: {\n reason: \"non-json\",\n statusCode: response.status,\n rawBody: text,\n },\n };\n }\n }\n return undefined;\n}\n","import { fromJson } from \"../json.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\n\nexport async function getErrorResponseBody(response: Response): Promise<unknown> {\n let contentType = response.headers.get(\"Content-Type\")?.toLowerCase();\n if (contentType == null || contentType.length === 0) {\n return getResponseBody(response);\n }\n\n if (contentType.indexOf(\";\") !== -1) {\n contentType = contentType.split(\";\")[0]?.trim() ?? \"\";\n }\n switch (contentType) {\n case \"application/hal+json\":\n case \"application/json\":\n case \"application/ld+json\":\n case \"application/problem+json\":\n case \"application/vnd.api+json\":\n case \"text/json\": {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n default:\n if (contentType.startsWith(\"application/vnd.\") && contentType.endsWith(\"+json\")) {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n\n // Fallback to plain text if content type is not recognized\n // Even if no body is present, the response will be an empty string\n return await response.text();\n }\n}\n","export async function getFetchFn(): Promise<typeof fetch> {\n return fetch;\n}\n","import { toJson } from \"../json.js\";\nimport { toQueryString } from \"../url/qs.js\";\n\nexport declare namespace GetRequestBody {\n interface Args {\n body: unknown;\n type: \"json\" | \"file\" | \"bytes\" | \"form\" | \"other\";\n }\n}\n\nexport async function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined> {\n if (type === \"form\") {\n return toQueryString(body, { arrayFormat: \"repeat\", encode: true });\n }\n if (type.includes(\"json\")) {\n return toJson(body);\n } else {\n return body as BodyInit;\n }\n}\n","let Headers: typeof globalThis.Headers;\n\nif (typeof globalThis.Headers !== \"undefined\") {\n Headers = globalThis.Headers;\n} else {\n Headers = class Headers implements Headers {\n private headers: Map<string, string[]>;\n\n constructor(init?: HeadersInit) {\n this.headers = new Map();\n\n if (init) {\n if (init instanceof Headers) {\n init.forEach((value, key) => this.append(key, value));\n } else if (Array.isArray(init)) {\n for (const [key, value] of init) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Each header entry must be a [string, string] tuple\");\n }\n }\n } else {\n for (const [key, value] of Object.entries(init)) {\n if (typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Header values must be strings\");\n }\n }\n }\n }\n }\n\n append(name: string, value: string): void {\n const key = name.toLowerCase();\n const existing = this.headers.get(key) || [];\n this.headers.set(key, [...existing, value]);\n }\n\n delete(name: string): void {\n const key = name.toLowerCase();\n this.headers.delete(key);\n }\n\n get(name: string): string | null {\n const key = name.toLowerCase();\n const values = this.headers.get(key);\n return values ? values.join(\", \") : null;\n }\n\n has(name: string): boolean {\n const key = name.toLowerCase();\n return this.headers.has(key);\n }\n\n set(name: string, value: string): void {\n const key = name.toLowerCase();\n this.headers.set(key, [value]);\n }\n\n forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void {\n const boundCallback = thisArg ? callbackfn.bind(thisArg) : callbackfn;\n this.headers.forEach((values, key) => boundCallback(values.join(\", \"), key, this));\n }\n\n getSetCookie(): string[] {\n return this.headers.get(\"set-cookie\") || [];\n }\n\n *entries(): HeadersIterator<[string, string]> {\n for (const [key, values] of this.headers.entries()) {\n yield [key, values.join(\", \")];\n }\n }\n\n *keys(): HeadersIterator<string> {\n yield* this.headers.keys();\n }\n\n *values(): HeadersIterator<string> {\n for (const values of this.headers.values()) {\n yield values.join(\", \");\n }\n }\n\n [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries();\n }\n };\n}\n\nexport { Headers };\n","const TIMEOUT = \"timeout\";\n\nexport function getTimeoutSignal(timeoutMs: number): { signal: AbortSignal; abortId: ReturnType<typeof setTimeout> } {\n const controller = new AbortController();\n const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);\n return { signal: controller.signal, abortId };\n}\n\nexport function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal {\n const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args) as AbortSignal[];\n\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n controller.abort((signal as any)?.reason);\n return controller.signal;\n }\n\n signal.addEventListener(\"abort\", () => controller.abort((signal as any)?.reason), {\n signal: controller.signal,\n });\n\n // Re-check after adding listener: the signal may have aborted\n // between the initial `signal.aborted` check and the `addEventListener`\n // call above. If it did, the abort event was already dispatched and\n // the listener will never fire — we must manually abort.\n if (signal.aborted) {\n controller.abort((signal as any)?.reason);\n return controller.signal;\n }\n }\n\n return controller.signal;\n}\n","import { anySignal, getTimeoutSignal } from \"./signals.js\";\n\n/**\n * Cached result of checking whether the current runtime supports\n * the `cache` option in `Request`. Some runtimes (e.g. Cloudflare Workers)\n * throw a TypeError when this option is used.\n */\nlet _cacheNoStoreSupported: boolean | undefined;\nexport function isCacheNoStoreSupported(): boolean {\n if (_cacheNoStoreSupported != null) {\n return _cacheNoStoreSupported;\n }\n try {\n new Request(\"http://localhost\", { cache: \"no-store\" });\n _cacheNoStoreSupported = true;\n } catch {\n _cacheNoStoreSupported = false;\n }\n return _cacheNoStoreSupported;\n}\n\n/**\n * Reset the cached result of `isCacheNoStoreSupported`. Exposed for testing only.\n */\nexport function resetCacheNoStoreSupported(): void {\n _cacheNoStoreSupported = undefined;\n}\n\nexport const makeRequest = async (\n fetchFn: (url: string, init: RequestInit) => Promise<Response>,\n url: string,\n method: string,\n headers: Headers | Record<string, string>,\n requestBody: BodyInit | undefined,\n timeoutMs?: number,\n abortSignal?: AbortSignal,\n withCredentials?: boolean,\n duplex?: \"half\",\n disableCache?: boolean,\n): Promise<Response> => {\n const signals: AbortSignal[] = [];\n\n let timeoutAbortId: ReturnType<typeof setTimeout> | undefined;\n if (timeoutMs != null) {\n const { signal, abortId } = getTimeoutSignal(timeoutMs);\n timeoutAbortId = abortId;\n signals.push(signal);\n }\n\n if (abortSignal != null) {\n signals.push(abortSignal);\n }\n const newSignals = anySignal(signals);\n const response = await fetchFn(url, {\n method: method,\n headers,\n body: requestBody,\n signal: newSignals,\n credentials: withCredentials ? \"include\" : undefined,\n // @ts-ignore\n duplex,\n ...(disableCache && isCacheNoStoreSupported() ? { cache: \"no-store\" as RequestCache } : {}),\n });\n\n if (timeoutAbortId != null) {\n clearTimeout(timeoutAbortId);\n }\n\n return response;\n};\n","import { Headers } from \"./Headers.js\";\n\n/**\n * The raw response from the fetch call excluding the body.\n */\nexport type RawResponse = Omit<\n {\n [K in keyof Response as Response[K] extends Function ? never : K]: Response[K]; // strips out functions\n },\n \"ok\" | \"body\" | \"bodyUsed\"\n>; // strips out body and bodyUsed\n\n/**\n * A raw response indicating that the request was aborted.\n */\nexport const abortRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 499,\n statusText: \"Client Closed Request\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * A raw response indicating an unknown error.\n */\nexport const unknownRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 0,\n statusText: \"Unknown Error\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * Converts a `RawResponse` object into a `RawResponse` by extracting its properties,\n * excluding the `body` and `bodyUsed` fields.\n *\n * @param response - The `RawResponse` object to convert.\n * @returns A `RawResponse` object containing the extracted properties of the input response.\n */\nexport function toRawResponse(response: Response): RawResponse {\n return {\n headers: response.headers,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n url: response.url,\n };\n}\n\n/**\n * Creates a `RawResponse` from a standard `Response` object.\n */\nexport interface WithRawResponse<T> {\n readonly data: T;\n readonly rawResponse: RawResponse;\n}\n","const INITIAL_RETRY_DELAY = 1000; // in milliseconds\nconst MAX_RETRY_DELAY = 60000; // in milliseconds\nconst DEFAULT_MAX_RETRIES = 2;\nconst JITTER_FACTOR = 0.2; // 20% random jitter\n\nfunction isRetryableStatusCode(statusCode: number): boolean {\n return [408, 429].includes(statusCode) || statusCode >= 500;\n}\n\nfunction addPositiveJitter(delay: number): number {\n const jitterMultiplier = 1 + Math.random() * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction addSymmetricJitter(delay: number): number {\n const jitterMultiplier = 1 + (Math.random() - 0.5) * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction getRetryDelayFromHeaders(response: Response, retryAttempt: number): number {\n const retryAfter = response.headers.get(\"Retry-After\");\n if (retryAfter) {\n const retryAfterSeconds = parseInt(retryAfter, 10);\n if (!Number.isNaN(retryAfterSeconds) && retryAfterSeconds > 0) {\n return Math.min(retryAfterSeconds * 1000, MAX_RETRY_DELAY);\n }\n\n const retryAfterDate = new Date(retryAfter);\n if (!Number.isNaN(retryAfterDate.getTime())) {\n const delay = retryAfterDate.getTime() - Date.now();\n if (delay > 0) {\n return Math.min(Math.max(delay, 0), MAX_RETRY_DELAY);\n }\n }\n }\n\n const rateLimitReset = response.headers.get(\"X-RateLimit-Reset\");\n if (rateLimitReset) {\n const resetTime = parseInt(rateLimitReset, 10);\n if (!Number.isNaN(resetTime)) {\n const delay = resetTime * 1000 - Date.now();\n if (delay > 0) {\n return addPositiveJitter(Math.min(delay, MAX_RETRY_DELAY));\n }\n }\n }\n\n return addSymmetricJitter(Math.min(INITIAL_RETRY_DELAY * 2 ** retryAttempt, MAX_RETRY_DELAY));\n}\n\nexport async function requestWithRetries(\n requestFn: () => Promise<Response>,\n maxRetries: number = DEFAULT_MAX_RETRIES,\n): Promise<Response> {\n let response: Response = await requestFn();\n\n for (let i = 0; i < maxRetries; ++i) {\n if (isRetryableStatusCode(response.status)) {\n const delay = getRetryDelayFromHeaders(response, i);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n response = await requestFn();\n } else {\n break;\n }\n }\n return response!;\n}\n","import { toJson } from \"../json.js\";\nimport { createLogger, type LogConfig, type Logger } from \"../logging/logger.js\";\nimport type { APIResponse } from \"./APIResponse.js\";\nimport { createRequestUrl } from \"./createRequestUrl.js\";\nimport type { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getErrorResponseBody } from \"./getErrorResponseBody.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { getRequestBody } from \"./getRequestBody.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\nimport { Headers } from \"./Headers.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { abortRawResponse, toRawResponse, unknownRawResponse } from \"./RawResponse.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\n\nexport type FetchFunction = <R = unknown>(args: Fetcher.Args) => Promise<APIResponse<R, Fetcher.Error>>;\n\nexport declare namespace Fetcher {\n export interface Args {\n url: string;\n method: string;\n contentType?: string;\n headers?: Record<string, unknown>;\n /**\n * @deprecated Prefer `queryString` (produced by `core.url.queryBuilder()`).\n * Retained for backwards compatibility with custom fetchers and callers that\n * still construct request args with a query-parameter object.\n */\n queryParameters?: Record<string, unknown>;\n queryString?: string;\n body?: unknown;\n timeoutMs?: number;\n maxRetries?: number;\n withCredentials?: boolean;\n abortSignal?: AbortSignal;\n requestType?: \"json\" | \"file\" | \"bytes\" | \"form\" | \"other\";\n responseType?: \"json\" | \"blob\" | \"sse\" | \"streaming\" | \"text\" | \"arrayBuffer\" | \"binary-response\";\n duplex?: \"half\";\n endpointMetadata?: EndpointMetadata;\n fetchFn?: typeof fetch;\n logging?: LogConfig | Logger;\n }\n\n export type Error = FailedStatusCodeError | NonJsonError | BodyIsNullError | TimeoutError | UnknownError;\n\n export interface FailedStatusCodeError {\n reason: \"status-code\";\n statusCode: number;\n body: unknown;\n }\n\n export interface NonJsonError {\n reason: \"non-json\";\n statusCode: number;\n rawBody: string;\n }\n\n export interface BodyIsNullError {\n reason: \"body-is-null\";\n statusCode: number;\n }\n\n export interface TimeoutError {\n reason: \"timeout\";\n cause?: unknown;\n }\n\n export interface UnknownError {\n reason: \"unknown\";\n errorMessage: string;\n cause?: unknown;\n }\n}\n\nconst SENSITIVE_HEADERS = new Set([\n \"authorization\",\n \"www-authenticate\",\n \"x-api-key\",\n \"api-key\",\n \"apikey\",\n \"x-api-token\",\n \"x-auth-token\",\n \"auth-token\",\n \"cookie\",\n \"set-cookie\",\n \"proxy-authorization\",\n \"proxy-authenticate\",\n \"x-csrf-token\",\n \"x-xsrf-token\",\n \"x-session-token\",\n \"x-access-token\",\n]);\n\nfunction redactHeaders(headers: Headers | Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {};\n for (const [key, value] of headers instanceof Headers ? headers.entries() : Object.entries(headers)) {\n if (SENSITIVE_HEADERS.has(key.toLowerCase())) {\n filtered[key] = \"[REDACTED]\";\n } else {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\nconst SENSITIVE_QUERY_PARAMS = new Set([\n \"api_key\",\n \"api-key\",\n \"apikey\",\n \"token\",\n \"access_token\",\n \"access-token\",\n \"auth_token\",\n \"auth-token\",\n \"password\",\n \"passwd\",\n \"secret\",\n \"api_secret\",\n \"api-secret\",\n \"apisecret\",\n \"key\",\n \"session\",\n \"session_id\",\n \"session-id\",\n]);\n\nfunction redactQueryParameters(\n queryParameters: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (queryParameters == null) {\n return undefined;\n }\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(queryParameters)) {\n redacted[key] = SENSITIVE_QUERY_PARAMS.has(key.toLowerCase()) ? \"[REDACTED]\" : value;\n }\n return redacted;\n}\n\nfunction redactUrl(url: string): string {\n const protocolIndex = url.indexOf(\"://\");\n if (protocolIndex === -1) return url;\n\n const afterProtocol = protocolIndex + 3;\n\n // Find the first delimiter that marks the end of the authority section\n const pathStart = url.indexOf(\"/\", afterProtocol);\n let queryStart = url.indexOf(\"?\", afterProtocol);\n let fragmentStart = url.indexOf(\"#\", afterProtocol);\n\n const firstDelimiter = Math.min(\n pathStart === -1 ? url.length : pathStart,\n queryStart === -1 ? url.length : queryStart,\n fragmentStart === -1 ? url.length : fragmentStart,\n );\n\n // Find the LAST @ before the delimiter (handles multiple @ in credentials)\n let atIndex = -1;\n for (let i = afterProtocol; i < firstDelimiter; i++) {\n if (url[i] === \"@\") {\n atIndex = i;\n }\n }\n\n if (atIndex !== -1) {\n url = `${url.slice(0, afterProtocol)}[REDACTED]@${url.slice(atIndex + 1)}`;\n }\n\n // Recalculate queryStart since url might have changed\n queryStart = url.indexOf(\"?\");\n if (queryStart === -1) return url;\n\n fragmentStart = url.indexOf(\"#\", queryStart);\n const queryEnd = fragmentStart !== -1 ? fragmentStart : url.length;\n const queryString = url.slice(queryStart + 1, queryEnd);\n\n if (queryString.length === 0) return url;\n\n // FAST PATH: Quick check if any sensitive keywords present\n // Using indexOf is faster than regex for simple substring matching\n const lower = queryString.toLowerCase();\n const hasSensitive =\n lower.includes(\"token\") ||\n lower.includes(\"key\") ||\n lower.includes(\"password\") ||\n lower.includes(\"passwd\") ||\n lower.includes(\"secret\") ||\n lower.includes(\"session\") ||\n lower.includes(\"auth\");\n\n if (!hasSensitive) {\n return url;\n }\n\n // SLOW PATH: Parse and redact\n const redactedParams: string[] = [];\n const params = queryString.split(\"&\");\n\n for (const param of params) {\n const equalIndex = param.indexOf(\"=\");\n if (equalIndex === -1) {\n redactedParams.push(param);\n continue;\n }\n\n const key = param.slice(0, equalIndex);\n let shouldRedact = SENSITIVE_QUERY_PARAMS.has(key.toLowerCase());\n\n if (!shouldRedact && key.includes(\"%\")) {\n try {\n const decodedKey = decodeURIComponent(key);\n shouldRedact = SENSITIVE_QUERY_PARAMS.has(decodedKey.toLowerCase());\n } catch {}\n }\n\n redactedParams.push(shouldRedact ? `${key}=[REDACTED]` : param);\n }\n\n return url.slice(0, queryStart + 1) + redactedParams.join(\"&\") + url.slice(queryEnd);\n}\n\nasync function getHeaders(args: Fetcher.Args): Promise<Headers> {\n const newHeaders: Headers = new Headers();\n\n newHeaders.set(\n \"Accept\",\n args.responseType === \"json\"\n ? \"application/json\"\n : args.responseType === \"text\"\n ? \"text/plain\"\n : args.responseType === \"sse\"\n ? \"text/event-stream\"\n : \"*/*\",\n );\n if (args.body !== undefined && args.contentType != null) {\n newHeaders.set(\"Content-Type\", args.contentType);\n }\n\n if (args.headers == null) {\n return newHeaders;\n }\n\n for (const [key, value] of Object.entries(args.headers)) {\n const result = await EndpointSupplier.get(value, { endpointMetadata: args.endpointMetadata ?? {} });\n if (typeof result === \"string\") {\n newHeaders.set(key, result);\n continue;\n }\n if (result == null) {\n continue;\n }\n newHeaders.set(key, `${result}`);\n }\n return newHeaders;\n}\n\nexport async function fetcherImpl<R = unknown>(args: Fetcher.Args): Promise<APIResponse<R, Fetcher.Error>> {\n let url = args.url;\n if (args.queryString != null && args.queryString.length > 0) {\n url = `${url}?${args.queryString}`;\n } else {\n url = createRequestUrl(args.url, args.queryParameters);\n }\n const requestBody: BodyInit | undefined = await getRequestBody({\n body: args.body,\n type: args.requestType ?? \"other\",\n });\n const fetchFn = args.fetchFn ?? (await getFetchFn());\n const headers = await getHeaders(args);\n const logger = createLogger(args.logging);\n\n if (logger.isDebug()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n headers: redactHeaders(headers),\n queryParameters: redactQueryParameters(args.queryParameters),\n hasBody: requestBody != null,\n };\n logger.debug(\"Making HTTP request\", metadata);\n }\n\n try {\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n url,\n args.method,\n headers,\n requestBody,\n args.timeoutMs,\n args.abortSignal,\n args.withCredentials,\n args.duplex,\n args.responseType === \"streaming\" || args.responseType === \"sse\",\n ),\n args.maxRetries,\n );\n\n if (response.status >= 200 && response.status < 400) {\n if (logger.isDebug()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n statusCode: response.status,\n responseHeaders: redactHeaders(response.headers),\n };\n logger.debug(\"HTTP request succeeded\", metadata);\n }\n const body = await getResponseBody(response, args.responseType);\n return {\n ok: true,\n body: body as R,\n headers: response.headers,\n rawResponse: toRawResponse(response),\n };\n } else {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n statusCode: response.status,\n responseHeaders: redactHeaders(Object.fromEntries(response.headers.entries())),\n };\n logger.error(\"HTTP request failed with error status\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"status-code\",\n statusCode: response.status,\n body: await getErrorResponseBody(response),\n },\n rawResponse: toRawResponse(response),\n };\n }\n } catch (error) {\n if (args.abortSignal?.aborted) {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n };\n logger.error(\"HTTP request was aborted\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: \"The user aborted a request\",\n cause: error,\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error && error.name === \"AbortError\") {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n timeoutMs: args.timeoutMs,\n };\n logger.error(\"HTTP request timed out\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"timeout\",\n cause: error,\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error) {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n errorMessage: error.message,\n };\n logger.error(\"HTTP request failed with error\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: error.message,\n cause: error,\n },\n rawResponse: unknownRawResponse,\n };\n }\n\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n error: toJson(error),\n };\n logger.error(\"HTTP request failed with unknown error\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: toJson(error),\n cause: error,\n },\n rawResponse: unknownRawResponse,\n };\n }\n}\n\nexport const fetcher: FetchFunction = fetcherImpl;\n","import type { WithRawResponse } from \"./RawResponse.js\";\n\n/**\n * A promise that returns the parsed response and lets you retrieve the raw response too.\n */\nexport class HttpResponsePromise<T> extends Promise<T> {\n private innerPromise: Promise<WithRawResponse<T>>;\n private unwrappedPromise: Promise<T> | undefined;\n\n private constructor(promise: Promise<WithRawResponse<T>>) {\n // Initialize with a no-op to avoid premature parsing\n super((resolve) => {\n resolve(undefined as unknown as T);\n });\n this.innerPromise = promise;\n }\n\n /**\n * Creates an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @param args - Arguments to pass to the function.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromFunction<F extends (...args: never[]) => Promise<WithRawResponse<T>>, T>(\n fn: F,\n ...args: Parameters<F>\n ): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(fn(...args));\n }\n\n /**\n * Creates a function that returns an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @returns A function that returns an `HttpResponsePromise` instance.\n */\n public static interceptFunction<\n F extends (...args: never[]) => Promise<WithRawResponse<T>>,\n T = Awaited<ReturnType<F>>[\"data\"],\n >(fn: F): (...args: Parameters<F>) => HttpResponsePromise<T> {\n return (...args: Parameters<F>): HttpResponsePromise<T> => {\n return HttpResponsePromise.fromPromise<T>(fn(...args));\n };\n }\n\n /**\n * Creates an `HttpResponsePromise` from an existing promise.\n *\n * @param promise - A promise resolving to a `WithRawResponse` object.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromPromise<T>(promise: Promise<WithRawResponse<T>>): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from an executor function.\n *\n * @param executor - A function that takes resolve and reject callbacks to create a promise.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromExecutor<T>(\n executor: (resolve: (value: WithRawResponse<T>) => void, reject: (reason?: unknown) => void) => void,\n ): HttpResponsePromise<T> {\n const promise = new Promise<WithRawResponse<T>>(executor);\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from a resolved result.\n *\n * @param result - A `WithRawResponse` object to resolve immediately.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromResult<T>(result: WithRawResponse<T>): HttpResponsePromise<T> {\n const promise = Promise.resolve(result);\n return new HttpResponsePromise<T>(promise);\n }\n\n private unwrap(): Promise<T> {\n if (!this.unwrappedPromise) {\n this.unwrappedPromise = this.innerPromise.then(({ data }) => data);\n }\n return this.unwrappedPromise;\n }\n\n /** @inheritdoc */\n public override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.unwrap().then(onfulfilled, onrejected);\n }\n\n /** @inheritdoc */\n public override catch<TResult = never>(\n onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<T | TResult> {\n return this.unwrap().catch(onrejected);\n }\n\n /** @inheritdoc */\n public override finally(onfinally?: (() => void) | null): Promise<T> {\n return this.unwrap().finally(onfinally);\n }\n\n /**\n * Retrieves the data and raw response.\n *\n * @returns A promise resolving to a `WithRawResponse` object.\n */\n public async withRawResponse(): Promise<WithRawResponse<T>> {\n return await this.innerPromise;\n }\n}\n","export function join(base: string, ...segments: string[]): string {\n if (!base) {\n return \"\";\n }\n\n if (segments.length === 0) {\n return base;\n }\n\n if (base.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(base);\n } catch {\n return joinPath(base, ...segments);\n }\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment?.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n url.pathname = joinPathSegments(url.pathname, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !url.pathname.endsWith(\"/\")) {\n url.pathname += \"/\";\n }\n\n return url.toString();\n }\n\n return joinPath(base, ...segments);\n}\n\nfunction joinPath(base: string, ...segments: string[]): string {\n if (segments.length === 0) {\n return base;\n }\n\n let result = base;\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment?.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n result = joinPathSegments(result, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !result.endsWith(\"/\")) {\n result += \"/\";\n }\n\n return result;\n}\n\nfunction joinPathSegments(left: string, right: string): string {\n if (left.endsWith(\"/\")) {\n return left + right;\n }\n return `${left}/${right}`;\n}\n\nfunction trimSlashes(str: string): string {\n if (!str) return str;\n\n let start = 0;\n let end = str.length;\n\n if (str.startsWith(\"/\")) start = 1;\n if (str.endsWith(\"/\")) end = str.length - 1;\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n","export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);\n\nexport const Supplier = {\n get: async <T>(supplier: Supplier<T>): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as () => T)();\n } else {\n return supplier;\n }\n },\n};\n","import { createLogger, type LogConfig, type Logger } from \"../logging/logger.js\";\nimport { join } from \"../url/join.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\nimport { Supplier } from \"./Supplier.js\";\n\nexport declare namespace PassthroughRequest {\n /**\n * Per-request options that can override the SDK client defaults.\n */\n export interface RequestOptions {\n /** Override the default timeout for this request (in seconds). */\n timeoutInSeconds?: number;\n /** Override the default number of retries for this request. */\n maxRetries?: number;\n /** Additional headers to include in this request. */\n headers?: Record<string, string>;\n /** Abort signal for this request. */\n abortSignal?: AbortSignal;\n }\n\n /**\n * SDK client configuration used by the passthrough fetch method.\n */\n export interface ClientOptions {\n /** The base URL or environment for the client. */\n environment?: Supplier<string>;\n /** Override the base URL. */\n baseUrl?: Supplier<string>;\n /** Default headers to include in requests. */\n headers?: Record<string, unknown>;\n /** Default maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** Default number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A custom fetch function. */\n fetch?: typeof fetch;\n /** Logging configuration. */\n logging?: LogConfig | Logger;\n /** A function that returns auth headers. */\n getAuthHeaders?: () => Promise<Record<string, string>>;\n }\n}\n\n/**\n * Makes a passthrough HTTP request using the SDK's configuration (auth, retry, logging, etc.)\n * while mimicking the standard `fetch` API.\n *\n * @param input - The URL, path, or Request object. If a relative path, it will be resolved against the configured base URL.\n * @param init - Standard RequestInit options (method, headers, body, signal, etc.)\n * @param clientOptions - SDK client options (auth, default headers, logging, etc.)\n * @param requestOptions - Per-request overrides (timeout, retries, extra headers, abort signal).\n * @returns A standard Response object.\n */\nexport async function makePassthroughRequest(\n input: Request | string | URL,\n init: RequestInit | undefined,\n clientOptions: PassthroughRequest.ClientOptions,\n requestOptions?: PassthroughRequest.RequestOptions,\n): Promise<Response> {\n const logger = createLogger(clientOptions.logging);\n\n // Extract URL and default init properties from Request object if provided\n let url: string;\n let effectiveInit: RequestInit | undefined = init;\n if (input instanceof Request) {\n url = input.url;\n // If no explicit init provided, extract properties from the Request object\n if (init == null) {\n effectiveInit = {\n method: input.method,\n headers: Object.fromEntries(input.headers.entries()),\n body: input.body,\n signal: input.signal,\n credentials: input.credentials,\n cache: input.cache as RequestCache,\n redirect: input.redirect,\n referrer: input.referrer,\n integrity: input.integrity,\n mode: input.mode,\n };\n }\n } else {\n url = input instanceof URL ? input.toString() : input;\n }\n\n // Resolve the base URL\n const baseUrl =\n (clientOptions.baseUrl != null ? await Supplier.get(clientOptions.baseUrl) : undefined) ??\n (clientOptions.environment != null ? await Supplier.get(clientOptions.environment) : undefined);\n\n // Determine the full URL\n let fullUrl: string;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n fullUrl = url;\n } else if (baseUrl != null) {\n fullUrl = join(baseUrl, url);\n } else {\n fullUrl = url;\n }\n\n // Merge headers: SDK default headers -> auth headers -> user-provided headers\n const mergedHeaders: Record<string, string> = {};\n\n // Apply SDK default headers (resolve suppliers)\n if (clientOptions.headers != null) {\n for (const [key, value] of Object.entries(clientOptions.headers)) {\n const resolved = await EndpointSupplier.get(value, { endpointMetadata: {} });\n if (resolved != null) {\n mergedHeaders[key.toLowerCase()] = `${resolved}`;\n }\n }\n }\n\n // Apply auth headers\n if (clientOptions.getAuthHeaders != null) {\n const authHeaders = await clientOptions.getAuthHeaders();\n for (const [key, value] of Object.entries(authHeaders)) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n\n // Apply user-provided headers from init\n if (effectiveInit?.headers != null) {\n const initHeaders =\n effectiveInit.headers instanceof Headers\n ? Object.fromEntries(effectiveInit.headers.entries())\n : Array.isArray(effectiveInit.headers)\n ? Object.fromEntries(effectiveInit.headers)\n : effectiveInit.headers;\n for (const [key, value] of Object.entries(initHeaders)) {\n if (value != null) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n }\n\n // Apply per-request option headers (highest priority)\n if (requestOptions?.headers != null) {\n for (const [key, value] of Object.entries(requestOptions.headers)) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n\n const method = effectiveInit?.method ?? \"GET\";\n const body = effectiveInit?.body;\n const timeoutInSeconds = requestOptions?.timeoutInSeconds ?? clientOptions.timeoutInSeconds;\n const timeoutMs = timeoutInSeconds != null ? timeoutInSeconds * 1000 : undefined;\n const maxRetries = requestOptions?.maxRetries ?? clientOptions.maxRetries;\n const abortSignal = requestOptions?.abortSignal ?? effectiveInit?.signal ?? undefined;\n const fetchFn = clientOptions.fetch ?? (await getFetchFn());\n\n if (logger.isDebug()) {\n logger.debug(\"Making passthrough HTTP request\", {\n method,\n url: fullUrl,\n hasBody: body != null,\n });\n }\n\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n fullUrl,\n method,\n mergedHeaders,\n body ?? undefined,\n timeoutMs,\n abortSignal,\n effectiveInit?.credentials === \"include\",\n undefined, // duplex\n false, // disableCache\n ),\n maxRetries,\n );\n\n if (logger.isDebug()) {\n logger.debug(\"Passthrough HTTP request completed\", {\n method,\n url: fullUrl,\n statusCode: response.status,\n });\n }\n\n return response;\n}\n","export * from \"./file.js\";\nexport * from \"./types.js\";\n","import type { Uploadable } from \"./types.js\";\n\nexport async function toBinaryUploadRequest(\n file: Uploadable,\n): Promise<{ body: Uploadable.FileLike; headers?: Record<string, string> }> {\n const { data, filename, contentLength, contentType } = await getFileWithMetadata(file);\n const request = {\n body: data,\n headers: {} as Record<string, string>,\n };\n if (filename) {\n request.headers[\"Content-Disposition\"] = `attachment; filename=\"${filename}\"`;\n }\n if (contentType) {\n request.headers[\"Content-Type\"] = contentType;\n }\n if (contentLength != null) {\n request.headers[\"Content-Length\"] = contentLength.toString();\n }\n return request;\n}\n\nexport async function toMultipartDataPart(\n file: Uploadable,\n): Promise<{ data: Uploadable.FileLike; filename?: string; contentType?: string }> {\n const { data, filename, contentType } = await getFileWithMetadata(file, {\n noSniffFileSize: true,\n });\n return {\n data,\n filename,\n contentType,\n };\n}\n\nasync function getFileWithMetadata(\n file: Uploadable,\n { noSniffFileSize }: { noSniffFileSize?: boolean } = {},\n): Promise<Uploadable.WithMetadata> {\n if (isFileLike(file)) {\n return getFileWithMetadata(\n {\n data: file,\n },\n { noSniffFileSize },\n );\n }\n\n if (\"path\" in file) {\n const fs = await import(\"fs\");\n if (!fs?.createReadStream) {\n throw new Error(\"File path uploads are not supported in this environment.\");\n }\n const data = fs.createReadStream(file.path);\n const contentLength =\n file.contentLength ?? (noSniffFileSize === true ? undefined : await tryGetFileSizeFromPath(file.path));\n const filename = file.filename ?? getNameFromPath(file.path);\n return {\n data,\n filename,\n contentType: file.contentType,\n contentLength,\n };\n }\n if (\"data\" in file) {\n const data = file.data;\n const contentLength =\n file.contentLength ??\n (await tryGetContentLengthFromFileLike(data, {\n noSniffFileSize,\n }));\n const filename = file.filename ?? tryGetNameFromFileLike(data);\n return {\n data,\n filename,\n contentType: file.contentType ?? tryGetContentTypeFromFileLike(data),\n contentLength,\n };\n }\n\n throw new Error(`Invalid FileUpload of type ${typeof file}: ${JSON.stringify(file)}`);\n}\n\nfunction isFileLike(value: unknown): value is Uploadable.FileLike {\n return (\n isBuffer(value) ||\n isArrayBufferView(value) ||\n isArrayBuffer(value) ||\n isUint8Array(value) ||\n isBlob(value) ||\n isFile(value) ||\n isStreamLike(value) ||\n isReadableStream(value)\n );\n}\n\nasync function tryGetFileSizeFromPath(path: string): Promise<number | undefined> {\n try {\n const fs = await import(\"fs\");\n if (!fs?.promises?.stat) {\n return undefined;\n }\n const fileStat = await fs.promises.stat(path);\n return fileStat.size;\n } catch (_fallbackError) {\n return undefined;\n }\n}\n\nfunction tryGetNameFromFileLike(data: Uploadable.FileLike): string | undefined {\n if (isNamedValue(data)) {\n return data.name;\n }\n if (isPathedValue(data)) {\n return getNameFromPath(data.path.toString());\n }\n return undefined;\n}\n\nasync function tryGetContentLengthFromFileLike(\n data: Uploadable.FileLike,\n { noSniffFileSize }: { noSniffFileSize?: boolean } = {},\n): Promise<number | undefined> {\n if (isBuffer(data)) {\n return data.length;\n }\n if (isArrayBufferView(data)) {\n return data.byteLength;\n }\n if (isArrayBuffer(data)) {\n return data.byteLength;\n }\n if (isBlob(data)) {\n return data.size;\n }\n if (isFile(data)) {\n return data.size;\n }\n if (noSniffFileSize === true) {\n return undefined;\n }\n if (isPathedValue(data)) {\n return await tryGetFileSizeFromPath(data.path.toString());\n }\n return undefined;\n}\n\nfunction tryGetContentTypeFromFileLike(data: Uploadable.FileLike): string | undefined {\n if (isBlob(data)) {\n return data.type;\n }\n if (isFile(data)) {\n return data.type;\n }\n\n return undefined;\n}\n\nfunction getNameFromPath(path: string): string | undefined {\n const lastForwardSlash = path.lastIndexOf(\"/\");\n const lastBackSlash = path.lastIndexOf(\"\\\\\");\n const lastSlashIndex = Math.max(lastForwardSlash, lastBackSlash);\n return lastSlashIndex >= 0 ? path.substring(lastSlashIndex + 1) : path;\n}\n\ntype NamedValue = {\n name: string;\n} & unknown;\n\ntype PathedValue = {\n path: string | { toString(): string };\n} & unknown;\n\ntype StreamLike = {\n read?: () => unknown;\n pipe?: (dest: unknown) => unknown;\n} & unknown;\n\nfunction isNamedValue(value: unknown): value is NamedValue {\n return typeof value === \"object\" && value != null && \"name\" in value;\n}\n\nfunction isPathedValue(value: unknown): value is PathedValue {\n return typeof value === \"object\" && value != null && \"path\" in value;\n}\n\nfunction isStreamLike(value: unknown): value is StreamLike {\n return typeof value === \"object\" && value != null && (\"read\" in value || \"pipe\" in value);\n}\n\nfunction isReadableStream(value: unknown): value is ReadableStream {\n return typeof value === \"object\" && value != null && \"getReader\" in value;\n}\n\nfunction isBuffer(value: unknown): value is Buffer {\n return typeof Buffer !== \"undefined\" && Buffer.isBuffer && Buffer.isBuffer(value);\n}\n\nfunction isArrayBufferView(value: unknown): value is ArrayBufferView {\n return typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView(value);\n}\n\nfunction isArrayBuffer(value: unknown): value is ArrayBuffer {\n return typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer;\n}\n\nfunction isUint8Array(value: unknown): value is Uint8Array {\n return typeof Uint8Array !== \"undefined\" && value instanceof Uint8Array;\n}\n\nfunction isBlob(value: unknown): value is Blob {\n return typeof Blob !== \"undefined\" && value instanceof Blob;\n}\n\nfunction isFile(value: unknown): value is File {\n return typeof File !== \"undefined\" && value instanceof File;\n}\n","export * from \"./logger.js\";\n","interface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\ndeclare const Deno: DenoGlobal | undefined;\ndeclare const Bun: BunGlobal | undefined;\ndeclare const EdgeRuntime: string | undefined;\ndeclare const self: typeof globalThis.self & {\n importScripts?: unknown;\n};\n\n/**\n * A constant that indicates which environment and version the SDK is running in.\n */\nexport const RUNTIME: Runtime = evaluateRuntime();\n\nexport interface Runtime {\n type: \"browser\" | \"web-worker\" | \"deno\" | \"bun\" | \"node\" | \"react-native\" | \"unknown\" | \"workerd\" | \"edge-runtime\";\n version?: string;\n parsedVersion?: number;\n}\n\nfunction evaluateRuntime(): Runtime {\n /**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n if (isBrowser) {\n return {\n type: \"browser\",\n version: window.navigator.userAgent,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Cloudflare.\n * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\n const isCloudflare = typeof globalThis !== \"undefined\" && globalThis?.navigator?.userAgent === \"Cloudflare-Workers\";\n if (isCloudflare) {\n return {\n type: \"workerd\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Edge Runtime.\n * https://vercel.com/docs/functions/runtimes/edge-runtime#check-if-you're-running-on-the-edge-runtime\n */\n const isEdgeRuntime = typeof EdgeRuntime === \"string\";\n if (isEdgeRuntime) {\n return {\n type: \"edge-runtime\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\n const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n if (isWebWorker) {\n return {\n type: \"web-worker\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Deno.\n * FYI Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n */\n const isDeno =\n typeof Deno !== \"undefined\" && typeof Deno.version !== \"undefined\" && typeof Deno.version.deno !== \"undefined\";\n if (isDeno) {\n return {\n type: \"deno\",\n version: Deno.version.deno,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\n const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n if (isBun) {\n return {\n type: \"bun\",\n version: Bun.version,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is in React-Native.\n * This check should come before Node.js detection since React Native may have a process polyfill.\n * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\n */\n const isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n if (isReactNative) {\n return {\n type: \"react-native\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Node.JS.\n *\n * We assign `process` to a local variable first to avoid being flagged by\n * bundlers that perform static analysis on `process.versions` (e.g. Next.js\n * Edge Runtime warns about Node.js APIs even when they are guarded).\n */\n const _process = typeof process !== \"undefined\" ? process : undefined;\n const isNode = typeof _process !== \"undefined\" && typeof _process.versions?.node === \"string\";\n if (isNode) {\n return {\n type: \"node\",\n version: _process.versions.node,\n parsedVersion: Number(_process.versions.node.split(\".\")[0]),\n };\n }\n\n return {\n type: \"unknown\",\n };\n}\n","import { fromJson } from \"../json.js\";\nimport { RUNTIME } from \"../runtime/index.js\";\n\nexport declare namespace Stream {\n interface Args {\n /**\n * The HTTP response stream to read from.\n */\n\n stream: ReadableStream;\n\n /**\n * The event shape to use for parsing the stream data.\n */\n eventShape: JsonEvent | SseEvent;\n /**\n * An abort signal to stop the stream.\n */\n signal?: AbortSignal;\n }\n\n interface JsonEvent {\n type: \"json\";\n messageTerminator: string;\n }\n\n interface SseEvent {\n type: \"sse\";\n streamTerminator?: string;\n eventDiscriminator?: string;\n }\n}\n\nconst DATA_PREFIX = \"data:\";\nconst EVENT_PREFIX = \"event:\";\n\nexport class Stream<T> implements AsyncIterable<T> {\n private stream: ReadableStream;\n\n private parse: (val: unknown) => Promise<T>;\n /**\n * The prefix to use for each message. For example,\n * for SSE, the prefix is \"data: \".\n */\n private prefix: string | undefined;\n private messageTerminator: string;\n private streamTerminator: string | undefined;\n private eventDiscriminator: string | undefined;\n private controller: AbortController = new AbortController();\n private decoder: TextDecoder | undefined;\n\n constructor({ stream, parse, eventShape, signal }: Stream.Args & { parse: (val: unknown) => Promise<T> }) {\n this.stream = stream;\n this.parse = parse;\n if (eventShape.type === \"sse\") {\n this.prefix = DATA_PREFIX;\n this.messageTerminator = \"\\n\";\n this.streamTerminator = eventShape.streamTerminator;\n this.eventDiscriminator = eventShape.eventDiscriminator;\n } else {\n this.messageTerminator = eventShape.messageTerminator;\n }\n signal?.addEventListener(\"abort\", () => this.controller.abort());\n\n // Initialize shared TextDecoder\n if (typeof TextDecoder !== \"undefined\") {\n this.decoder = new TextDecoder(\"utf-8\");\n }\n }\n\n private async *iterMessages(): AsyncGenerator<T, void> {\n if (this.eventDiscriminator != null) {\n yield* this.iterSseEvents();\n } else {\n yield* this.iterDataMessages();\n }\n }\n\n private async *iterDataMessages(): AsyncGenerator<T, void> {\n const stream = readableStreamAsyncIterable<any>(this.stream);\n let buf = \"\";\n let prefixSeen = false;\n for await (const chunk of stream) {\n buf += this.decodeChunk(chunk);\n\n let terminatorIndex: number;\n while ((terminatorIndex = buf.indexOf(this.messageTerminator)) >= 0) {\n let line = buf.slice(0, terminatorIndex);\n buf = buf.slice(terminatorIndex + this.messageTerminator.length);\n\n if (!line.trim()) {\n continue;\n }\n\n if (!prefixSeen && this.prefix != null) {\n const prefixIndex = line.indexOf(this.prefix);\n if (prefixIndex === -1) {\n continue;\n }\n prefixSeen = true;\n line = line.slice(prefixIndex + this.prefix.length);\n }\n\n if (this.streamTerminator != null && line.includes(this.streamTerminator)) {\n return;\n }\n const message = await this.parse(fromJson(line));\n yield message;\n prefixSeen = false;\n }\n }\n }\n\n private async *iterSseEvents(): AsyncGenerator<T, void> {\n const stream = readableStreamAsyncIterable<any>(this.stream);\n let buf = \"\";\n let eventType: string | undefined;\n let dataValue: string | undefined;\n\n for await (const chunk of stream) {\n buf += this.decodeChunk(chunk);\n\n let terminatorIndex: number;\n while ((terminatorIndex = buf.indexOf(\"\\n\")) >= 0) {\n const line = buf.slice(0, terminatorIndex).replace(/\\r$/, \"\");\n buf = buf.slice(terminatorIndex + 1);\n\n if (!line.trim()) {\n if (dataValue != null) {\n const message = await this.dispatchSseEvent(dataValue, eventType);\n if (message == null) {\n return;\n }\n yield message;\n }\n eventType = undefined;\n dataValue = undefined;\n continue;\n }\n\n if (line.startsWith(EVENT_PREFIX)) {\n eventType = line.slice(EVENT_PREFIX.length).trim();\n } else if (line.startsWith(DATA_PREFIX)) {\n const val = line.slice(DATA_PREFIX.length).trim();\n dataValue = dataValue != null ? `${dataValue}\\n${val}` : val;\n }\n }\n }\n\n if (dataValue != null) {\n const message = await this.dispatchSseEvent(dataValue, eventType);\n if (message != null) {\n yield message;\n }\n }\n }\n\n /**\n * Parses and returns a single SSE event, or returns null if the event is a stream terminator.\n */\n private async dispatchSseEvent(dataValue: string, eventType: string | undefined): Promise<T | null> {\n if (this.streamTerminator != null && dataValue.includes(this.streamTerminator)) {\n return null;\n }\n return this.parse(this.injectDiscriminator(fromJson(dataValue), eventType));\n }\n\n private injectDiscriminator(parsed: unknown, eventType: string | undefined): unknown {\n if (this.eventDiscriminator == null || eventType == null) {\n return parsed;\n }\n if (parsed == null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return parsed;\n }\n const obj = parsed as Record<string, unknown>;\n if (this.eventDiscriminator in obj) {\n return parsed;\n }\n return { [this.eventDiscriminator]: eventType, ...obj };\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T, void, unknown> {\n for await (const message of this.iterMessages()) {\n yield message;\n }\n }\n\n private decodeChunk(chunk: any): string {\n let decoded = \"\";\n // If TextDecoder is available, use the streaming decoder instance\n if (this.decoder != null) {\n decoded += this.decoder.decode(chunk, { stream: true });\n }\n // Buffer is present in Node.js environment\n else if (RUNTIME.type === \"node\" && typeof chunk !== \"undefined\") {\n decoded += Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n }\n return decoded;\n }\n}\n\n/**\n * Browser polyfill for ReadableStream\n */\n// biome-ignore lint/suspicious/noExplicitAny: allow explicit any\nexport function readableStreamAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {\n if (stream[Symbol.asyncIterator]) {\n return stream;\n }\n\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done) {\n reader.releaseLock();\n } // release lock when stream becomes closed\n return result;\n } catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n","export { encodePathParam } from \"./encodePathParam.js\";\nexport { join } from \"./join.js\";\nexport { queryBuilder } from \"./QueryStringBuilder.js\";\nexport { toQueryString } from \"./qs.js\";\n","export function encodePathParam(param: unknown): string {\n if (param === null) {\n return \"null\";\n }\n const typeofParam = typeof param;\n switch (typeofParam) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n case \"number\":\n case \"boolean\":\n break;\n default:\n param = String(param);\n break;\n }\n return encodeURIComponent(param as string | number | boolean);\n}\n","import { toQueryString } from \"./qs.js\";\n\n/**\n * Creates a fluent builder for constructing URL query strings.\n *\n * Each `.add()` call serializes its value immediately (like C#'s builder),\n * so no format tracking is needed — the style is applied at add-time.\n *\n * Usage (generated code):\n *\n * const qs = core.url.queryBuilder()\n * .add(\"limit\", limit)\n * .add(\"tags\", tags, { style: \"comma\" }) // explode: false\n * .mergeAdditional(requestOptions?.queryParams)\n * .build();\n */\nexport function queryBuilder(): QueryStringBuilder {\n return new QueryStringBuilder();\n}\n\nclass QueryStringBuilder {\n private parts: Map<string, string> = new Map();\n\n /**\n * Adds a query parameter, serializing it immediately.\n *\n * By default arrays use \"repeat\" format (`key=a&key=b`).\n * Pass `{ style: \"comma\" }` for OpenAPI `explode: false` parameters\n * to get comma-separated values (`key=a,b,c`).\n *\n * Null / undefined values are silently skipped.\n */\n add(key: string, value: unknown, options?: { style?: \"comma\" }): this {\n if (value === undefined || value === null) {\n return this;\n }\n const serialized = toQueryString(\n { [key]: value },\n { arrayFormat: options?.style === \"comma\" ? \"comma\" : \"repeat\" },\n );\n if (serialized.length > 0) {\n this.parts.set(key, serialized);\n }\n return this;\n }\n\n /**\n * Adds multiple query parameters at once from a record.\n * All parameters use the default \"repeat\" array format.\n * Null / undefined values are silently skipped.\n */\n addMany(params: Record<string, unknown>): this {\n if (params != null) {\n for (const [key, value] of Object.entries(params)) {\n this.add(key, value);\n }\n }\n return this;\n }\n\n /**\n * Merges additional query parameters supplied at call-time via\n * `requestOptions.queryParams`. Overrides existing keys (last-write-wins).\n */\n mergeAdditional(additionalParams?: Record<string, unknown>): this {\n if (additionalParams != null) {\n for (const [key, value] of Object.entries(additionalParams)) {\n if (value === undefined || value === null) {\n continue;\n }\n const serialized = toQueryString({ [key]: value }, { arrayFormat: \"repeat\" });\n if (serialized.length > 0) {\n this.parts.set(key, serialized);\n }\n }\n }\n return this;\n }\n\n /**\n * Returns the assembled query string (without the leading `?`).\n * Returns an empty string when no parameters were added.\n */\n build(): string {\n return [...this.parts.values()].join(\"&\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport { mergeHeaders } from \"./core/headers.js\";\nimport * as core from \"./core/index.js\";\nimport type * as environments from \"./environments.js\";\n\nexport interface BaseClientOptions {\n environment?: core.Supplier<environments.CngApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n /** The default maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The default number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */\n fetch?: typeof fetch;\n /** Configure logging for the client. */\n logging?: core.logging.LogConfig | core.logging.Logger;\n}\n\nexport interface BaseRequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n}\n\nexport type NormalizedClientOptions<T extends BaseClientOptions = BaseClientOptions> = T & {\n logging: core.logging.Logger;\n};\n\nexport function normalizeClientOptions<T extends BaseClientOptions = BaseClientOptions>(\n options: T,\n): NormalizedClientOptions<T> {\n const headers = mergeHeaders(\n {\n \"X-Fern-Language\": \"JavaScript\",\n \"X-Fern-Runtime\": core.RUNTIME.type,\n \"X-Fern-Runtime-Version\": core.RUNTIME.version,\n },\n options?.headers,\n );\n\n return {\n ...options,\n logging: core.logging.createLogger(options?.logging),\n headers,\n } as NormalizedClientOptions<T>;\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const CngApiEnvironment = {\n Default: \"https://curly.ng\",\n} as const;\n\nexport type CngApiEnvironment = typeof CngApiEnvironment.Default;\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../core/index.js\";\nimport * as errors from \"./index.js\";\n\nexport function handleNonStatusCodeError(\n error: core.Fetcher.Error,\n rawResponse: core.RawResponse,\n method: string,\n path: string,\n): never {\n switch (error.reason) {\n case \"non-json\":\n throw new errors.CngApiError({\n statusCode: error.statusCode,\n body: error.rawBody,\n rawResponse: rawResponse,\n });\n case \"body-is-null\":\n throw new errors.CngApiError({\n statusCode: error.statusCode,\n rawResponse: rawResponse,\n });\n case \"timeout\":\n throw new errors.CngApiTimeoutError(`Timeout exceeded when calling ${method} ${path}.`, {\n cause: error.cause,\n });\n case \"unknown\":\n throw new errors.CngApiError({\n message: error.errorMessage,\n rawResponse: rawResponse,\n cause: error.cause,\n });\n default:\n throw new errors.CngApiError({\n message: \"Unknown error\",\n rawResponse: rawResponse,\n });\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace AuthClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class AuthClient {\n protected readonly _options: NormalizedClientOptions<AuthClient.Options>;\n\n constructor(options: AuthClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {AuthClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n *\n * @example\n * await client.auth.getAuthWhoami()\n */\n public getAuthWhoami(\n requestOptions?: AuthClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.GetAuthWhoamiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getAuthWhoami(requestOptions));\n }\n\n private async __getAuthWhoami(\n requestOptions?: AuthClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetAuthWhoamiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/auth/whoami\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetAuthWhoamiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/auth/whoami\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace CoderoomClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class CoderoomClient {\n protected readonly _options: NormalizedClientOptions<CoderoomClient.Options>;\n\n constructor(options: CoderoomClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CoderoomClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.InternalServerError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.coderoom.createCoderoomRoom()\n */\n public createCoderoomRoom(\n requestOptions?: CoderoomClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.CoderoomCreateRoomResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createCoderoomRoom(requestOptions));\n }\n\n private async __createCoderoomRoom(\n requestOptions?: CoderoomClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.CoderoomCreateRoomResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/cng/coderoom/rooms\",\n ),\n method: \"POST\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.CoderoomCreateRoomResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 500:\n throw new CngApi.InternalServerError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/cng/coderoom/rooms\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport { toJson } from \"../../../../core/json.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessFilesystemClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessFilesystemClient {\n protected readonly _options: NormalizedClientOptions<HarnessFilesystemClient.Options>;\n\n constructor(options: HarnessFilesystemClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemReadRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ContentTooLargeError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemRead({\n * file_path: \"file_path\"\n * })\n */\n public getHarnessFilesystemRead(\n request: CngApi.GetHarnessFilesystemReadRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessReadApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemRead(request, requestOptions));\n }\n\n private async __getHarnessFilesystemRead(\n request: CngApi.GetHarnessFilesystemReadRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessReadApiResponse>> {\n const { file_path: filePath, offset, limit } = request;\n const _queryParams: Record<string, unknown> = {\n file_path: filePath,\n offset,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/read\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessReadApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 413:\n throw new CngApi.ContentTooLargeError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/read\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemTailRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ContentTooLargeError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemTail({\n * file_path: \"file_path\"\n * })\n */\n public getHarnessFilesystemTail(\n request: CngApi.GetHarnessFilesystemTailRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemTailApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTail(request, requestOptions));\n }\n\n private async __getHarnessFilesystemTail(\n request: CngApi.GetHarnessFilesystemTailRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemTailApiResponse>> {\n const { file_path: filePath, lines } = request;\n const _queryParams: Record<string, unknown> = {\n file_path: filePath,\n lines,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/tail\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemTailApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 413:\n throw new CngApi.ContentTooLargeError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/tail\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemGrepRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemGrep({\n * pattern: \"pattern\"\n * })\n */\n public getHarnessFilesystemGrep(\n request: CngApi.GetHarnessFilesystemGrepRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessGrepApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemGrep(request, requestOptions));\n }\n\n private async __getHarnessFilesystemGrep(\n request: CngApi.GetHarnessFilesystemGrepRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessGrepApiResponse>> {\n const { pattern, path, include, output_mode: outputMode, context, case_insensitive: caseInsensitive } = request;\n const _queryParams: Record<string, unknown> = {\n pattern,\n path,\n include,\n output_mode: outputMode != null ? outputMode : undefined,\n context,\n case_insensitive: Array.isArray(caseInsensitive)\n ? caseInsensitive.map((item) => (typeof item === \"string\" ? item : toJson(item)))\n : caseInsensitive != null\n ? typeof caseInsensitive === \"string\"\n ? caseInsensitive\n : toJson(caseInsensitive)\n : undefined,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/grep\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessGrepApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/grep\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemGlobRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemGlob({\n * pattern: \"pattern\"\n * })\n */\n public getHarnessFilesystemGlob(\n request: CngApi.GetHarnessFilesystemGlobRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessGlobApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemGlob(request, requestOptions));\n }\n\n private async __getHarnessFilesystemGlob(\n request: CngApi.GetHarnessFilesystemGlobRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessGlobApiResponse>> {\n const { pattern, path } = request;\n const _queryParams: Record<string, unknown> = {\n pattern,\n path,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/glob\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessGlobApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/glob\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemLsRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemLs()\n */\n public getHarnessFilesystemLs(\n request: CngApi.GetHarnessFilesystemLsRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemLsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemLs(request, requestOptions));\n }\n\n private async __getHarnessFilesystemLs(\n request: CngApi.GetHarnessFilesystemLsRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemLsApiResponse>> {\n const { path, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/ls\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemLsApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/ls\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemTreeRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemTree()\n */\n public getHarnessFilesystemTree(\n request: CngApi.GetHarnessFilesystemTreeRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemTreeApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTree(request, requestOptions));\n }\n\n private async __getHarnessFilesystemTree(\n request: CngApi.GetHarnessFilesystemTreeRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemTreeApiResponse>> {\n const { path, depth, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n depth,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/tree\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemTreeApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/tree\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemStatRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemStat({\n * path: \"path\"\n * })\n */\n public getHarnessFilesystemStat(\n request: CngApi.GetHarnessFilesystemStatRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemStatApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemStat(request, requestOptions));\n }\n\n private async __getHarnessFilesystemStat(\n request: CngApi.GetHarnessFilesystemStatRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemStatApiResponse>> {\n const { path } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/stat\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemStatApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/stat\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemFindRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemFind()\n */\n public getHarnessFilesystemFind(\n request: CngApi.GetHarnessFilesystemFindRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemFindApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemFind(request, requestOptions));\n }\n\n private async __getHarnessFilesystemFind(\n request: CngApi.GetHarnessFilesystemFindRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemFindApiResponse>> {\n const { path, name, type: type_, max_depth: maxDepth, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n name,\n type: type_ != null ? type_ : undefined,\n max_depth: maxDepth,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/find\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemFindApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/find\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessInternalKnowledgesClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessInternalKnowledgesClient {\n protected readonly _options: NormalizedClientOptions<HarnessInternalKnowledgesClient.Options>;\n\n constructor(options: HarnessInternalKnowledgesClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.harnessInternalKnowledges.createHarnessTopicAssetsSyncPlan()\n */\n public createHarnessTopicAssetsSyncPlan(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__createHarnessTopicAssetsSyncPlan(requestOptions));\n }\n\n private async __createHarnessTopicAssetsSyncPlan(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/sync-plans\",\n ),\n method: \"POST\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"POST\",\n \"/api/harness/internal/knowledges/sync-plans\",\n );\n }\n\n /**\n * @param {CngApi.GetHarnessTopicAssetRawFileRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.harnessInternalKnowledges.getHarnessTopicAssetRawFile({\n * path: \"x\",\n * sha256: \"sha256\"\n * })\n */\n public getHarnessTopicAssetRawFile(\n request: CngApi.GetHarnessTopicAssetRawFileRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessTopicAssetRawFile(request, requestOptions));\n }\n\n private async __getHarnessTopicAssetRawFile(\n request: CngApi.GetHarnessTopicAssetRawFileRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const { path, sha256 } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n sha256,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files/raw\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/internal/knowledges/files/raw\",\n );\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n *\n * @example\n * await client.harnessInternalKnowledges.listHarnessTopicAssetHashes()\n */\n public listHarnessTopicAssetHashes(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadHashMapApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessTopicAssetHashes(requestOptions));\n }\n\n private async __listHarnessTopicAssetHashes(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadHashMapApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files/hashes\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessUploadHashMapApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/internal/knowledges/files/hashes\",\n );\n }\n\n /**\n * @param {CngApi.HarnessUploadAddRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.replaceHarnessTopicAssets({\n * uploadedAt: \"uploadedAt\",\n * files: [{\n * path: \"path\",\n * sha256: \"sha256\",\n * size: 1,\n * mode: \"mode\",\n * assetKind: \"skill\",\n * topicName: \"topicName\",\n * displayTitle: \"displayTitle\",\n * displayDescription: \"displayDescription\",\n * displayRating: 1,\n * sourceText: \"sourceText\",\n * frontmatterText: \"frontmatterText\",\n * bodyText: \"bodyText\"\n * }]\n * })\n */\n public replaceHarnessTopicAssets(\n request: CngApi.HarnessUploadAddRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadAddApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__replaceHarnessTopicAssets(request, requestOptions));\n }\n\n private async __replaceHarnessTopicAssets(\n request: CngApi.HarnessUploadAddRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadAddApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessUploadAddApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"POST\",\n \"/api/harness/internal/knowledges/files\",\n );\n }\n\n /**\n * @param {CngApi.HarnessUploadRemoveRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.deleteHarnessTopicAssets({\n * uploadedAt: \"uploadedAt\",\n * paths: [\"paths\"]\n * })\n */\n public deleteHarnessTopicAssets(\n request: CngApi.HarnessUploadRemoveRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadRemoveApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteHarnessTopicAssets(request, requestOptions));\n }\n\n private async __deleteHarnessTopicAssets(\n request: CngApi.HarnessUploadRemoveRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadRemoveApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files\",\n ),\n method: \"DELETE\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessUploadRemoveApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"DELETE\",\n \"/api/harness/internal/knowledges/files\",\n );\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.cleanHarnessKnowledgesCatalog()\n */\n public cleanHarnessKnowledgesCatalog(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadCleanApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__cleanHarnessKnowledgesCatalog(requestOptions));\n }\n\n private async __cleanHarnessKnowledgesCatalog(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadCleanApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/catalog\",\n ),\n method: \"DELETE\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessUploadCleanApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"DELETE\",\n \"/api/harness/internal/knowledges/catalog\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessKnowledgesClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessKnowledgesClient {\n protected readonly _options: NormalizedClientOptions<HarnessKnowledgesClient.Options>;\n\n constructor(options: HarnessKnowledgesClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesCatalog()\n */\n public getHarnessKnowledgesCatalog(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessCatalogSummaryApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesCatalog(requestOptions));\n }\n\n private async __getHarnessKnowledgesCatalog(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessCatalogSummaryApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/catalog\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessCatalogSummaryApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/catalog\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessKnowledgesAudiences()\n */\n public listHarnessKnowledgesAudiences(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessAudiencesApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesAudiences(requestOptions));\n }\n\n private async __listHarnessKnowledgesAudiences(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessAudiencesApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/audiences\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessAudiencesApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/audiences\",\n );\n }\n\n /**\n * @param {CngApi.ListHarnessTopicAssetsRequest} request\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessTopicAssets()\n */\n public listHarnessTopicAssets(\n request: CngApi.ListHarnessTopicAssetsRequest = {},\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessTopicAssetsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessTopicAssets(request, requestOptions));\n }\n\n private async __listHarnessTopicAssets(\n request: CngApi.ListHarnessTopicAssetsRequest = {},\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessTopicAssetsApiResponse>> {\n const { q, audience, limit } = request;\n const _queryParams: Record<string, unknown> = {\n q,\n audience: audience != null ? audience : undefined,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/files\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessTopicAssetsApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/knowledges/files\");\n }\n\n /**\n * @param {CngApi.SearchHarnessKnowledgesRequest} request\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.InternalServerError}\n *\n * @example\n * await client.harnessKnowledges.searchHarnessKnowledges({\n * q: \"q\"\n * })\n */\n public searchHarnessKnowledges(\n request: CngApi.SearchHarnessKnowledgesRequest,\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessSemanticSearchApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__searchHarnessKnowledges(request, requestOptions));\n }\n\n private async __searchHarnessKnowledges(\n request: CngApi.SearchHarnessKnowledgesRequest,\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessSemanticSearchApiResponse>> {\n const { q, limit } = request;\n const _queryParams: Record<string, unknown> = {\n q,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/search\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessSemanticSearchApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 500:\n throw new CngApi.InternalServerError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/search\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesConnectome()\n */\n public getHarnessKnowledgesConnectome(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessConnectomeApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesConnectome(requestOptions));\n }\n\n private async __getHarnessKnowledgesConnectome(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessConnectomeApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/connectome\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessConnectomeApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/connectome\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesBrain()\n */\n public getHarnessKnowledgesBrain(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessBrainApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesBrain(requestOptions));\n }\n\n private async __getHarnessKnowledgesBrain(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessBrainApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/brain\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessBrainApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/knowledges/brain\");\n }\n\n /**\n * Returns the full topic index for agent discovery. Use search for semantic lookup, or filesystem/read for content.\n *\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessKnowledgesTopics()\n */\n public listHarnessKnowledgesTopics(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessTopicsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesTopics(requestOptions));\n }\n\n private async __listHarnessKnowledgesTopics(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessTopicsApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/topics\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessTopicsApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/topics\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesInstallScript()\n */\n public getHarnessKnowledgesInstallScript(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesInstallScript(requestOptions));\n }\n\n private async __getHarnessKnowledgesInstallScript(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/install.sh\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/install.sh\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesInstallPowerShell()\n */\n public getHarnessKnowledgesInstallPowerShell(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesInstallPowerShell(requestOptions));\n }\n\n private async __getHarnessKnowledgesInstallPowerShell(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/install.ps1\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/install.ps1\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport type * as CngApi from \"../../../index.js\";\n\nexport declare namespace HookifyClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HookifyClient {\n protected readonly _options: NormalizedClientOptions<HookifyClient.Options>;\n\n constructor(options: HookifyClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {core.file.Uploadable} uploadable\n * @param {CngApi.IngestHookifyHookRequest} request\n * @param {HookifyClient.RequestOptions} requestOptions - Request-specific configuration.\n */\n public ingestHookifyHook(\n uploadable: core.file.Uploadable,\n request: CngApi.IngestHookifyHookRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HookifyIngestResponse> {\n return core.HttpResponsePromise.fromPromise(this.__ingestHookifyHook(uploadable, request, requestOptions));\n }\n\n private async __ingestHookifyHook(\n uploadable: core.file.Uploadable,\n request: CngApi.IngestHookifyHookRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HookifyIngestResponse>> {\n const _queryParams: Record<string, unknown> = {\n mode: request.mode != null ? request.mode : undefined,\n event: request.event,\n };\n const _binaryUploadRequest = await core.file.toBinaryUploadRequest(uploadable);\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n _binaryUploadRequest.headers,\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/hookify/ingest\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/octet-stream\",\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n requestType: \"bytes\",\n duplex: \"half\",\n body: _binaryUploadRequest.body,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HookifyIngestResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/hookify/ingest\");\n }\n\n /**\n * @param {CngApi.GetHookifyRequestRequest} request\n * @param {HookifyClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.hookify.getHookifyRequest({\n * requestId: \"requestId\"\n * })\n */\n public getHookifyRequest(\n request: CngApi.GetHookifyRequestRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HookifyRequestResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHookifyRequest(request, requestOptions));\n }\n\n private async __getHookifyRequest(\n request: CngApi.GetHookifyRequestRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HookifyRequestResponse>> {\n const { requestId } = request;\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n `api/hookify/requests/${core.url.encodePathParam(requestId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HookifyRequestResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/hookify/requests/{requestId}\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace LlmClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class LlmClient {\n protected readonly _options: NormalizedClientOptions<LlmClient.Options>;\n\n constructor(options: LlmClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {LlmClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.llm.getLlmHealth()\n */\n public getLlmHealth(\n requestOptions?: LlmClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.GetLlmHealthResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getLlmHealth(requestOptions));\n }\n\n private async __getLlmHealth(\n requestOptions?: LlmClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetLlmHealthResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/llm/health\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetLlmHealthResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/llm/health\");\n }\n\n public createLlmChat(\n request: CngApi.CreateLlmChatRequest,\n requestOptions?: LlmClient.RequestOptions,\n ): core.HttpResponsePromise<core.Stream<string>> {\n return core.HttpResponsePromise.fromPromise(this.__createLlmChat(request, requestOptions));\n }\n\n private async __createLlmChat(\n request: CngApi.CreateLlmChatRequest,\n requestOptions?: LlmClient.RequestOptions,\n ): Promise<core.WithRawResponse<core.Stream<string>>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher<ReadableStream>({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/llm/chat\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n responseType: \"sse\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: new core.Stream({\n stream: _response.body,\n parse: (data) => data as any,\n signal: requestOptions?.abortSignal,\n eventShape: {\n type: \"sse\",\n },\n }),\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/llm/chat\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace PolarClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class PolarClient {\n protected readonly _options: NormalizedClientOptions<PolarClient.Options>;\n\n constructor(options: PolarClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {PolarClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadGatewayError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.polar.createHarnessPolarCheckout()\n */\n public createHarnessPolarCheckout(requestOptions?: PolarClient.RequestOptions): core.HttpResponsePromise<void> {\n return core.HttpResponsePromise.fromPromise(this.__createHarnessPolarCheckout(requestOptions));\n }\n\n private async __createHarnessPolarCheckout(\n requestOptions?: PolarClient.RequestOptions,\n ): Promise<core.WithRawResponse<void>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/polar/harness/checkout\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: undefined, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 502:\n throw new CngApi.BadGatewayError(\n _response.error.body as CngApi.PolarCheckoutErrorResponse,\n _response.rawResponse,\n );\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/polar/harness/checkout\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport type * as CngApi from \"../../../index.js\";\n\nexport declare namespace SystemClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class SystemClient {\n protected readonly _options: NormalizedClientOptions<SystemClient.Options>;\n\n constructor(options: SystemClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {SystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.system.getHealth()\n */\n public getHealth(requestOptions?: SystemClient.RequestOptions): core.HttpResponsePromise<CngApi.GetHealthResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHealth(requestOptions));\n }\n\n private async __getHealth(\n requestOptions?: SystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetHealthResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/health\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetHealthResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/health\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace TelemetryClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class TelemetryClient {\n protected readonly _options: NormalizedClientOptions<TelemetryClient.Options>;\n\n constructor(options: TelemetryClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CngApi.NavigationEventRequest} request\n * @param {TelemetryClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.telemetry.createNavigationEvent({\n * url: \"url\",\n * pathname: \"pathname\",\n * timestamp: \"2024-01-15T09:30:00Z\"\n * })\n */\n public createNavigationEvent(\n request: CngApi.NavigationEventRequest,\n requestOptions?: TelemetryClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.NavigationEventAcceptedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createNavigationEvent(request, requestOptions));\n }\n\n private async __createNavigationEvent(\n request: CngApi.NavigationEventRequest,\n requestOptions?: TelemetryClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.NavigationEventAcceptedResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/navigation-events\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.NavigationEventAcceptedResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/navigation-events\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport { AuthClient } from \"./api/resources/auth/client/Client.js\";\nimport { CoderoomClient } from \"./api/resources/coderoom/client/Client.js\";\nimport { HarnessFilesystemClient } from \"./api/resources/harnessFilesystem/client/Client.js\";\nimport { HarnessInternalKnowledgesClient } from \"./api/resources/harnessInternalKnowledges/client/Client.js\";\nimport { HarnessKnowledgesClient } from \"./api/resources/harnessKnowledges/client/Client.js\";\nimport { HookifyClient } from \"./api/resources/hookify/client/Client.js\";\nimport { LlmClient } from \"./api/resources/llm/client/Client.js\";\nimport { PolarClient } from \"./api/resources/polar/client/Client.js\";\nimport { SystemClient } from \"./api/resources/system/client/Client.js\";\nimport { TelemetryClient } from \"./api/resources/telemetry/client/Client.js\";\nimport type { BaseClientOptions, BaseRequestOptions } from \"./BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"./BaseClient.js\";\nimport * as core from \"./core/index.js\";\n\nexport declare namespace CngApiClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class CngApiClient {\n protected readonly _options: NormalizedClientOptions<CngApiClient.Options>;\n protected _system: SystemClient | undefined;\n protected _auth: AuthClient | undefined;\n protected _harnessKnowledges: HarnessKnowledgesClient | undefined;\n protected _harnessFilesystem: HarnessFilesystemClient | undefined;\n protected _harnessInternalKnowledges: HarnessInternalKnowledgesClient | undefined;\n protected _polar: PolarClient | undefined;\n protected _telemetry: TelemetryClient | undefined;\n protected _llm: LlmClient | undefined;\n protected _hookify: HookifyClient | undefined;\n protected _coderoom: CoderoomClient | undefined;\n\n constructor(options: CngApiClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n public get system(): SystemClient {\n return (this._system ??= new SystemClient(this._options));\n }\n\n public get auth(): AuthClient {\n return (this._auth ??= new AuthClient(this._options));\n }\n\n public get harnessKnowledges(): HarnessKnowledgesClient {\n return (this._harnessKnowledges ??= new HarnessKnowledgesClient(this._options));\n }\n\n public get harnessFilesystem(): HarnessFilesystemClient {\n return (this._harnessFilesystem ??= new HarnessFilesystemClient(this._options));\n }\n\n public get harnessInternalKnowledges(): HarnessInternalKnowledgesClient {\n return (this._harnessInternalKnowledges ??= new HarnessInternalKnowledgesClient(this._options));\n }\n\n public get polar(): PolarClient {\n return (this._polar ??= new PolarClient(this._options));\n }\n\n public get telemetry(): TelemetryClient {\n return (this._telemetry ??= new TelemetryClient(this._options));\n }\n\n public get llm(): LlmClient {\n return (this._llm ??= new LlmClient(this._options));\n }\n\n public get hookify(): HookifyClient {\n return (this._hookify ??= new HookifyClient(this._options));\n }\n\n public get coderoom(): CoderoomClient {\n return (this._coderoom ??= new CoderoomClient(this._options));\n }\n\n /**\n * Make a passthrough request using the SDK's configured auth, retry, logging, etc.\n * This is useful for making requests to endpoints not yet supported in the SDK.\n * The input can be a URL string, URL object, or Request object. Relative paths are resolved against the configured base URL.\n *\n * @param {Request | string | URL} input - The URL, path, or Request object.\n * @param {RequestInit} init - Standard fetch RequestInit options.\n * @param {core.PassthroughRequest.RequestOptions} requestOptions - Per-request overrides (timeout, retries, headers, abort signal).\n * @returns {Promise<Response>} A standard Response object.\n */\n public async fetch(\n input: Request | string | URL,\n init?: RequestInit,\n requestOptions?: core.PassthroughRequest.RequestOptions,\n ): Promise<Response> {\n return core.makePassthroughRequest(\n input,\n init,\n {\n baseUrl: this._options.baseUrl ?? this._options.environment,\n headers: this._options.headers,\n timeoutInSeconds: this._options.timeoutInSeconds,\n maxRetries: this._options.maxRetries,\n fetch: this._options.fetch,\n logging: this._options.logging,\n },\n requestOptions,\n );\n }\n}\n","import * as logger from \"./logger.js\";\n\nexport namespace logging {\n /**\n * Configuration for logger instances.\n */\n export type LogConfig = logger.LogConfig;\n export type LogLevel = logger.LogLevel;\n export const LogLevel: typeof logger.LogLevel = logger.LogLevel;\n export type ILogger = logger.ILogger;\n /**\n * Console logger implementation that outputs to the console.\n */\n export type ConsoleLogger = logger.ConsoleLogger;\n /**\n * Console logger implementation that outputs to the console.\n */\n export const ConsoleLogger: typeof logger.ConsoleLogger = logger.ConsoleLogger;\n}\n","import { CngApiError } from \"@cng/client\";\n\nimport { resolveOutputFormat } from \"../config.js\";\n\nexport function formatError(error: unknown): string {\n if (error instanceof CngApiError) {\n return formatApiError(error);\n }\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction formatApiError(error: CngApiError): string {\n if (resolveOutputFormat() === \"json\") {\n return error.message;\n }\n\n const statusCode = error.statusCode ?? 0;\n\n if (statusCode >= 500) {\n return `Backend error (${statusCode}). The service encountered an internal error.`;\n }\n\n if (statusCode >= 400) {\n const bodyMessage = extractBodyErrorMessage(error.body);\n if (bodyMessage) {\n return `Request error (${statusCode}): ${bodyMessage}`;\n }\n return `Request error (${statusCode}).`;\n }\n\n return error.message;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction extractBodyErrorMessage(body: unknown): string | undefined {\n if (!isRecord(body)) {\n return undefined;\n }\n\n const errorField = body.error;\n\n if (errorField != null && isRecord(errorField)) {\n const message = errorField.message;\n if (typeof message === \"string\") {\n return message;\n }\n }\n\n if (typeof body.message === \"string\") {\n return body.message;\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["process","process","CreateLlmChatRequest","Messages","Item","Parts","GetLlmHealthResponse","GetHealthResponse","NavigationEventRequest","HarnessCatalogSummary","HarnessDatabaseBinding","HarnessSemanticSearchResponse","HookifyIngestResponse","HookifyRequestResponse","Headers","Headers","Headers","logging"]}
1
+ {"version":3,"sources":["../src/shared/config.ts","../../../packages/client/src/generated/core/json.ts","../../../packages/client/src/generated/errors/CngApiError.ts","../../../packages/client/src/generated/errors/CngApiTimeoutError.ts","../../../packages/client/src/generated/api/errors/BadGatewayError.ts","../../../packages/client/src/generated/api/errors/BadRequestError.ts","../../../packages/client/src/generated/api/errors/ConflictError.ts","../../../packages/client/src/generated/api/errors/ContentTooLargeError.ts","../../../packages/client/src/generated/api/errors/InternalServerError.ts","../../../packages/client/src/generated/api/errors/NotFoundError.ts","../../../packages/client/src/generated/api/errors/ServiceUnavailableError.ts","../../../packages/client/src/generated/api/errors/UnauthorizedError.ts","../../../packages/client/src/generated/api/resources/llm/client/requests/CreateLlmChatRequest.ts","../../../packages/client/src/generated/api/resources/llm/types/GetLlmHealthResponse.ts","../../../packages/client/src/generated/api/resources/system/types/GetHealthResponse.ts","../../../packages/client/src/generated/api/resources/telemetry/client/requests/NavigationEventRequest.ts","../../../packages/client/src/generated/api/types/HarnessCatalogSummary.ts","../../../packages/client/src/generated/api/types/HarnessDatabaseBinding.ts","../../../packages/client/src/generated/api/types/HarnessSemanticSearchResponse.ts","../../../packages/client/src/generated/api/types/HookifyIngestResponse.ts","../../../packages/client/src/generated/api/types/HookifyRequestResponse.ts","../../../packages/client/src/generated/core/headers.ts","../../../packages/client/src/generated/core/fetcher/EndpointSupplier.ts","../../../packages/client/src/generated/core/logging/logger.ts","../../../packages/client/src/generated/core/url/qs.ts","../../../packages/client/src/generated/core/fetcher/createRequestUrl.ts","../../../packages/client/src/generated/core/fetcher/BinaryResponse.ts","../../../packages/client/src/generated/core/fetcher/getResponseBody.ts","../../../packages/client/src/generated/core/fetcher/getErrorResponseBody.ts","../../../packages/client/src/generated/core/fetcher/getFetchFn.ts","../../../packages/client/src/generated/core/fetcher/getRequestBody.ts","../../../packages/client/src/generated/core/fetcher/Headers.ts","../../../packages/client/src/generated/core/fetcher/signals.ts","../../../packages/client/src/generated/core/fetcher/makeRequest.ts","../../../packages/client/src/generated/core/fetcher/RawResponse.ts","../../../packages/client/src/generated/core/fetcher/requestWithRetries.ts","../../../packages/client/src/generated/core/fetcher/Fetcher.ts","../../../packages/client/src/generated/core/fetcher/HttpResponsePromise.ts","../../../packages/client/src/generated/core/url/join.ts","../../../packages/client/src/generated/core/fetcher/Supplier.ts","../../../packages/client/src/generated/core/fetcher/makePassthroughRequest.ts","../../../packages/client/src/generated/core/file/index.ts","../../../packages/client/src/generated/core/file/file.ts","../../../packages/client/src/generated/core/logging/index.ts","../../../packages/client/src/generated/core/runtime/runtime.ts","../../../packages/client/src/generated/core/stream/Stream.ts","../../../packages/client/src/generated/core/url/index.ts","../../../packages/client/src/generated/core/url/encodePathParam.ts","../../../packages/client/src/generated/core/url/QueryStringBuilder.ts","../../../packages/client/src/generated/BaseClient.ts","../../../packages/client/src/generated/environments.ts","../../../packages/client/src/generated/errors/handleNonStatusCodeError.ts","../../../packages/client/src/generated/api/resources/auth/client/Client.ts","../../../packages/client/src/generated/api/resources/coderoom/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessFilesystem/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessInternalKnowledges/client/Client.ts","../../../packages/client/src/generated/api/resources/harnessKnowledges/client/Client.ts","../../../packages/client/src/generated/api/resources/hookify/client/Client.ts","../../../packages/client/src/generated/api/resources/llm/client/Client.ts","../../../packages/client/src/generated/api/resources/polar/client/Client.ts","../../../packages/client/src/generated/api/resources/system/client/Client.ts","../../../packages/client/src/generated/api/resources/telemetry/client/Client.ts","../../../packages/client/src/generated/Client.ts","../../../packages/client/src/generated/core/logging/exports.ts","../src/shared/output/errors.ts"],"sourcesContent":["import process from \"node:process\";\n\nexport const packageVersion = \"1.1.25\";\nexport const defaultApiBaseUrl = \"https://curly.ng\";\nexport const outputFormats = [\"text\", \"json\", \"markdown\"] as const;\n\nexport type OutputFormat = (typeof outputFormats)[number];\n\nexport type GlobalCommandOptions = {\n readonly apiBaseUrl?: never;\n};\n\nexport function resolveApiBaseUrl(options: GlobalCommandOptions): string {\n void options;\n return defaultApiBaseUrl;\n}\n\nexport function resolveOutputFormat(): OutputFormat {\n const value = process.env.CNGKIT_FORMAT?.toLowerCase();\n if (value === \"json\" || value === \"markdown\") {\n return value;\n }\n\n return \"text\";\n}\n\nexport function parseOutputFormat(value: string): OutputFormat {\n const normalizedValue = value.toLowerCase();\n if (normalizedValue === \"text\" || normalizedValue === \"json\" || normalizedValue === \"markdown\") {\n return normalizedValue;\n }\n\n throw new Error(\"Unknown --format value. Use one of: text, json, markdown.\");\n}\n","/**\n * Serialize a value to JSON\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n * @returns JSON string\n */\nexport const toJson = (\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string => {\n return JSON.stringify(value, replacer, space);\n};\n\n/**\n * Parse JSON string to object, array, or other type\n * @param text A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of the object. If a member contains nested objects, the nested objects are transformed before the parent object is.\n * @returns Parsed object, array, or other type\n */\nexport function fromJson<T = unknown>(\n text: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n): T {\n return JSON.parse(text, reviver);\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../core/index.js\";\nimport { toJson } from \"../core/json.js\";\n\nexport class CngApiError extends Error {\n public readonly statusCode?: number;\n public readonly body?: unknown;\n public readonly rawResponse?: core.RawResponse;\n public readonly cause?: unknown;\n\n constructor({\n message,\n statusCode,\n body,\n rawResponse,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n body?: unknown;\n rawResponse?: core.RawResponse;\n cause?: unknown;\n }) {\n super(buildMessage({ message, statusCode, body }));\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"CngApiError\";\n this.statusCode = statusCode;\n this.body = body;\n this.rawResponse = rawResponse;\n if (cause != null) {\n this.cause = cause;\n }\n }\n}\n\nfunction buildMessage({\n message,\n statusCode,\n body,\n}: {\n message: string | undefined;\n statusCode: number | undefined;\n body: unknown | undefined;\n}): string {\n const lines: string[] = [];\n if (message != null) {\n lines.push(message);\n }\n\n if (statusCode != null) {\n lines.push(`Status code: ${statusCode.toString()}`);\n }\n\n if (body != null) {\n lines.push(`Body: ${toJson(body, undefined, 2)}`);\n }\n\n return lines.join(\"\\n\");\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport class CngApiTimeoutError extends Error {\n public readonly cause?: unknown;\n\n constructor(message: string, opts?: { cause?: unknown }) {\n super(message);\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"CngApiTimeoutError\";\n if (opts?.cause != null) {\n this.cause = opts.cause;\n }\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class BadGatewayError extends errors.CngApiError {\n constructor(body: CngApi.PolarCheckoutErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"BadGatewayError\",\n statusCode: 502,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"BadGatewayError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class BadRequestError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"BadRequestError\",\n statusCode: 400,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"BadRequestError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class ConflictError extends errors.CngApiError {\n constructor(body: CngApi.ApiErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"ConflictError\",\n statusCode: 409,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ConflictError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\nimport type * as CngApi from \"../index.js\";\n\nexport class ContentTooLargeError extends errors.CngApiError {\n constructor(body: CngApi.ApiErrorResponse, rawResponse?: core.RawResponse) {\n super({\n message: \"ContentTooLargeError\",\n statusCode: 413,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ContentTooLargeError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class InternalServerError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"InternalServerError\",\n statusCode: 500,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"InternalServerError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class NotFoundError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"NotFoundError\",\n statusCode: 404,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"NotFoundError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class ServiceUnavailableError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"ServiceUnavailableError\",\n statusCode: 503,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"ServiceUnavailableError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../../core/index.js\";\nimport * as errors from \"../../errors/index.js\";\n\nexport class UnauthorizedError extends errors.CngApiError {\n constructor(body?: unknown, rawResponse?: core.RawResponse) {\n super({\n message: \"UnauthorizedError\",\n statusCode: 401,\n body: body,\n rawResponse: rawResponse,\n });\n Object.setPrototypeOf(this, new.target.prototype);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"UnauthorizedError\";\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * messages: [{\n * id: \"id\",\n * role: \"system\",\n * parts: [{\n * type: \"text\",\n * text: \"text\"\n * }]\n * }]\n * }\n */\nexport interface CreateLlmChatRequest {\n messages: CreateLlmChatRequest.Messages.Item[];\n}\n\nexport namespace CreateLlmChatRequest {\n export type Messages = Messages.Item[];\n\n export namespace Messages {\n export interface Item {\n id: string;\n role: Item.Role;\n parts: Item.Parts.Item[];\n /** Accepts any additional properties */\n [key: string]: any;\n }\n\n export namespace Item {\n export const Role = {\n System: \"system\",\n User: \"user\",\n Assistant: \"assistant\",\n } as const;\n export type Role = (typeof Role)[keyof typeof Role];\n export type Parts = Parts.Item[];\n\n export namespace Parts {\n export interface Item {\n type: Item.Type;\n text: string;\n state?: Item.State | undefined;\n /** Accepts any additional properties */\n [key: string]: any;\n }\n\n export namespace Item {\n export const Type = {\n Text: \"text\",\n } as const;\n export type Type = (typeof Type)[keyof typeof Type];\n export const State = {\n Streaming: \"streaming\",\n Done: \"done\",\n } as const;\n export type State = (typeof State)[keyof typeof State];\n }\n }\n }\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface GetLlmHealthResponse {\n ok: boolean;\n service: GetLlmHealthResponse.Service;\n model: GetLlmHealthResponse.Model;\n}\n\nexport namespace GetLlmHealthResponse {\n export const Service = {\n CurlyNgBackend: \"curly-ng-backend\",\n } as const;\n export type Service = (typeof Service)[keyof typeof Service];\n export const Model = {\n CfGoogleGemma426Ba4BIt: \"@cf/google/gemma-4-26b-a4b-it\",\n } as const;\n export type Model = (typeof Model)[keyof typeof Model];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface GetHealthResponse {\n ok: boolean;\n service: GetHealthResponse.Service;\n}\n\nexport namespace GetHealthResponse {\n export const Service = {\n CurlyNgBackend: \"curly-ng-backend\",\n } as const;\n export type Service = (typeof Service)[keyof typeof Service];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\n/**\n * @example\n * {\n * url: \"url\",\n * pathname: \"pathname\",\n * timestamp: \"2024-01-15T09:30:00Z\"\n * }\n */\nexport interface NavigationEventRequest {\n eventType?: NavigationEventRequest.EventType;\n interactionType?: NavigationEventRequest.InteractionType;\n url: string;\n previousUrl?: string;\n pathname: string;\n timestamp: string;\n userAgent?: string;\n referrer?: string;\n targetTag?: string;\n targetText?: string;\n targetHref?: string;\n}\n\nexport namespace NavigationEventRequest {\n export const EventType = {\n PageView: \"page_view\",\n Interaction: \"interaction\",\n } as const;\n export type EventType = (typeof EventType)[keyof typeof EventType];\n export const InteractionType = {\n Click: \"click\",\n Submit: \"submit\",\n } as const;\n export type InteractionType = (typeof InteractionType)[keyof typeof InteractionType];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as CngApi from \"../index.js\";\n\nexport interface HarnessCatalogSummary {\n name: HarnessCatalogSummary.Name;\n files: number;\n blobs: number;\n database: CngApi.HarnessDatabaseBinding;\n}\n\nexport namespace HarnessCatalogSummary {\n export const Name = {\n CurlyHarness: \"curly-harness\",\n } as const;\n export type Name = (typeof Name)[keyof typeof Name];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HarnessDatabaseBinding {\n engine: HarnessDatabaseBinding.Engine;\n binding: HarnessDatabaseBinding.Binding;\n}\n\nexport namespace HarnessDatabaseBinding {\n export const Engine = {\n Postgres: \"postgres\",\n } as const;\n export type Engine = (typeof Engine)[keyof typeof Engine];\n export const Binding = {\n Hyperdrive: \"HYPERDRIVE\",\n } as const;\n export type Binding = (typeof Binding)[keyof typeof Binding];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as CngApi from \"../index.js\";\n\nexport interface HarnessSemanticSearchResponse {\n query: string;\n model: HarnessSemanticSearchResponse.Model;\n results: CngApi.HarnessSemanticSearchResult[];\n}\n\nexport namespace HarnessSemanticSearchResponse {\n export const Model = {\n HarnessSemanticTextSearch: \"harness-semantic-text-search\",\n } as const;\n export type Model = (typeof Model)[keyof typeof Model];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HookifyIngestResponse {\n ok: boolean;\n mode: HookifyIngestResponse.Mode;\n status: HookifyIngestResponse.Status;\n requestId: string;\n stdout?: string | undefined;\n stderr?: string | undefined;\n exitCode?: number | undefined;\n pollAfterMs?: number | undefined;\n byteLength?: number | undefined;\n}\n\nexport namespace HookifyIngestResponse {\n export const Mode = {\n Sync: \"sync\",\n Async: \"async\",\n } as const;\n export type Mode = (typeof Mode)[keyof typeof Mode];\n export const Status = {\n Completed: \"completed\",\n Pending: \"pending\",\n } as const;\n export type Status = (typeof Status)[keyof typeof Status];\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport interface HookifyRequestResponse {\n ok: boolean;\n status: HookifyRequestResponse.Status;\n requestId: string;\n stdout?: string | undefined;\n stderr?: string | undefined;\n exitCode?: number | undefined;\n pollAfterMs?: number | undefined;\n}\n\nexport namespace HookifyRequestResponse {\n export const Status = {\n Completed: \"completed\",\n Pending: \"pending\",\n } as const;\n export type Status = (typeof Status)[keyof typeof Status];\n}\n","export function mergeHeaders(...headersArray: (Record<string, unknown> | null | undefined)[]): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n const insensitiveKey = key.toLowerCase();\n if (value != null) {\n result[insensitiveKey] = value;\n } else if (insensitiveKey in result) {\n delete result[insensitiveKey];\n }\n }\n\n return result;\n}\n\nexport function mergeOnlyDefinedHeaders(\n ...headersArray: (Record<string, unknown> | null | undefined)[]\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of headersArray\n .filter((headers) => headers != null)\n .flatMap((headers) => Object.entries(headers))) {\n const insensitiveKey = key.toLowerCase();\n if (value != null) {\n result[insensitiveKey] = value;\n }\n }\n\n return result;\n}\n","import type { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport type { Supplier } from \"./Supplier.js\";\n\ntype EndpointSupplierFn<T> = (arg: { endpointMetadata?: EndpointMetadata }) => T | Promise<T>;\nexport type EndpointSupplier<T> = Supplier<T> | EndpointSupplierFn<T>;\nexport const EndpointSupplier = {\n get: async <T>(supplier: EndpointSupplier<T>, arg: { endpointMetadata?: EndpointMetadata }): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as EndpointSupplierFn<T>)(arg);\n } else {\n return supplier;\n }\n },\n};\n","export const LogLevel = {\n Debug: \"debug\",\n Info: \"info\",\n Warn: \"warn\",\n Error: \"error\",\n} as const;\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\nconst logLevelMap: Record<LogLevel, number> = {\n [LogLevel.Debug]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Warn]: 3,\n [LogLevel.Error]: 4,\n};\n\nexport interface ILogger {\n /**\n * Logs a debug message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n debug(message: string, ...args: unknown[]): void;\n /**\n * Logs an info message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n info(message: string, ...args: unknown[]): void;\n /**\n * Logs a warning message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n warn(message: string, ...args: unknown[]): void;\n /**\n * Logs an error message.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n error(message: string, ...args: unknown[]): void;\n}\n\n/**\n * Configuration for logger initialization.\n */\nexport interface LogConfig {\n /**\n * Minimum log level to output.\n * @default LogLevel.Info\n */\n level?: LogLevel;\n /**\n * Logger implementation to use.\n * @default new ConsoleLogger()\n */\n logger?: ILogger;\n /**\n * Whether logging should be silenced.\n * @default true\n */\n silent?: boolean;\n}\n\n/**\n * Default console-based logger implementation.\n */\nexport class ConsoleLogger implements ILogger {\n debug(message: string, ...args: unknown[]): void {\n console.debug(message, ...args);\n }\n info(message: string, ...args: unknown[]): void {\n console.info(message, ...args);\n }\n warn(message: string, ...args: unknown[]): void {\n console.warn(message, ...args);\n }\n error(message: string, ...args: unknown[]): void {\n console.error(message, ...args);\n }\n}\n\n/**\n * Logger class that provides level-based logging functionality.\n */\nexport class Logger {\n private readonly level: number;\n private readonly logger: ILogger;\n private readonly silent: boolean;\n\n /**\n * Creates a new logger instance.\n * @param config - Logger configuration\n */\n constructor(config: Required<LogConfig>) {\n this.level = logLevelMap[config.level];\n this.logger = config.logger;\n this.silent = config.silent;\n }\n\n /**\n * Checks if a log level should be output based on configuration.\n * @param level - The log level to check\n * @returns True if the level should be logged\n */\n public shouldLog(level: LogLevel): boolean {\n return !this.silent && this.level <= logLevelMap[level];\n }\n\n /**\n * Checks if debug logging is enabled.\n * @returns True if debug logs should be output\n */\n public isDebug(): boolean {\n return this.shouldLog(LogLevel.Debug);\n }\n\n /**\n * Logs a debug message if debug logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public debug(message: string, ...args: unknown[]): void {\n if (this.isDebug()) {\n this.logger.debug(message, ...args);\n }\n }\n\n /**\n * Checks if info logging is enabled.\n * @returns True if info logs should be output\n */\n public isInfo(): boolean {\n return this.shouldLog(LogLevel.Info);\n }\n\n /**\n * Logs an info message if info logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public info(message: string, ...args: unknown[]): void {\n if (this.isInfo()) {\n this.logger.info(message, ...args);\n }\n }\n\n /**\n * Checks if warning logging is enabled.\n * @returns True if warning logs should be output\n */\n public isWarn(): boolean {\n return this.shouldLog(LogLevel.Warn);\n }\n\n /**\n * Logs a warning message if warning logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public warn(message: string, ...args: unknown[]): void {\n if (this.isWarn()) {\n this.logger.warn(message, ...args);\n }\n }\n\n /**\n * Checks if error logging is enabled.\n * @returns True if error logs should be output\n */\n public isError(): boolean {\n return this.shouldLog(LogLevel.Error);\n }\n\n /**\n * Logs an error message if error logging is enabled.\n * @param message - The message to log\n * @param args - Additional arguments to log\n */\n public error(message: string, ...args: unknown[]): void {\n if (this.isError()) {\n this.logger.error(message, ...args);\n }\n }\n}\n\nexport function createLogger(config?: LogConfig | Logger): Logger {\n if (config == null) {\n return defaultLogger;\n }\n if (config instanceof Logger) {\n return config;\n }\n config = config ?? {};\n config.level ??= LogLevel.Info;\n config.logger ??= new ConsoleLogger();\n config.silent ??= true;\n return new Logger(config as Required<LogConfig>);\n}\n\nconst defaultLogger: Logger = new Logger({\n level: LogLevel.Info,\n logger: new ConsoleLogger(),\n silent: true,\n});\n","type ArrayFormat = \"indices\" | \"repeat\" | \"comma\";\n\ninterface QueryStringOptions {\n arrayFormat?: ArrayFormat;\n encode?: boolean;\n}\n\nconst defaultQsOptions: Required<QueryStringOptions> = {\n arrayFormat: \"indices\",\n encode: true,\n} as const;\n\nfunction encodeValue(value: unknown, shouldEncode: boolean): string {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n const stringValue = String(value);\n return shouldEncode ? encodeURIComponent(stringValue) : stringValue;\n}\n\nfunction stringifyObject(obj: Record<string, unknown>, prefix = \"\", options: Required<QueryStringOptions>): string[] {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n const fullKey = prefix ? `${prefix}[${key}]` : key;\n\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n const effectiveFormat = options.arrayFormat;\n if (effectiveFormat === \"comma\") {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n const encodedValues = value\n .filter((item) => item !== undefined && item !== null)\n .map((item) => encodeValue(item, options.encode));\n if (encodedValues.length > 0) {\n parts.push(`${encodedKey}=${encodedValues.join(\",\")}`);\n }\n } else {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined) {\n continue;\n }\n if (typeof item === \"object\" && !Array.isArray(item) && item !== null) {\n const arrayKey = effectiveFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n parts.push(...stringifyObject(item as Record<string, unknown>, arrayKey, options));\n } else {\n const arrayKey = effectiveFormat === \"indices\" ? `${fullKey}[${i}]` : fullKey;\n const encodedKey = options.encode ? encodeURIComponent(arrayKey) : arrayKey;\n parts.push(`${encodedKey}=${encodeValue(item, options.encode)}`);\n }\n }\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value as Record<string, unknown>).length === 0) {\n continue;\n }\n parts.push(...stringifyObject(value as Record<string, unknown>, fullKey, options));\n } else {\n const encodedKey = options.encode ? encodeURIComponent(fullKey) : fullKey;\n parts.push(`${encodedKey}=${encodeValue(value, options.encode)}`);\n }\n }\n\n return parts;\n}\n\nexport function toQueryString(obj: unknown, options?: QueryStringOptions): string {\n if (obj == null || typeof obj !== \"object\") {\n return \"\";\n }\n\n const parts = stringifyObject(obj as Record<string, unknown>, \"\", {\n ...defaultQsOptions,\n ...options,\n });\n return parts.join(\"&\");\n}\n","import { toQueryString } from \"../url/qs.js\";\n\nexport function createRequestUrl(baseUrl: string, queryParameters?: Record<string, unknown>): string {\n const queryString = toQueryString(queryParameters, { arrayFormat: \"repeat\" });\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n","export type BinaryResponse = {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */\n bodyUsed: Response[\"bodyUsed\"];\n /**\n * Returns a ReadableStream of the response body.\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body)\n */\n stream: () => Response[\"body\"];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */\n arrayBuffer: () => ReturnType<Response[\"arrayBuffer\"]>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */\n blob: () => ReturnType<Response[\"blob\"]>;\n /**\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bytes)\n * Some versions of the Fetch API may not support this method.\n */\n bytes?(): Promise<Uint8Array>;\n};\n\nexport function getBinaryResponse(response: Response): BinaryResponse {\n const binaryResponse: BinaryResponse = {\n get bodyUsed() {\n return response.bodyUsed;\n },\n stream: () => response.body,\n arrayBuffer: response.arrayBuffer.bind(response),\n blob: response.blob.bind(response),\n };\n if (\"bytes\" in response && typeof response.bytes === \"function\") {\n binaryResponse.bytes = response.bytes.bind(response);\n }\n\n return binaryResponse;\n}\n","import { fromJson } from \"../json.js\";\nimport { getBinaryResponse } from \"./BinaryResponse.js\";\n\n// Pins the upstream Response so undici's FinalizationRegistry can't GC it and cancel the body stream.\nfunction retainResponse(target: object, response: Response): void {\n Object.defineProperty(target, \"__fern_response_ref\", {\n value: response,\n enumerable: false,\n configurable: true,\n writable: false,\n });\n}\n\nexport async function getResponseBody(response: Response, responseType?: string): Promise<unknown> {\n switch (responseType) {\n case \"binary-response\":\n return getBinaryResponse(response);\n case \"blob\":\n return await response.blob();\n case \"arrayBuffer\":\n return await response.arrayBuffer();\n case \"sse\":\n if (response.body == null) {\n return {\n ok: false,\n error: {\n reason: \"body-is-null\",\n statusCode: response.status,\n },\n };\n }\n retainResponse(response.body, response);\n return response.body;\n case \"streaming\":\n if (response.body == null) {\n return {\n ok: false,\n error: {\n reason: \"body-is-null\",\n statusCode: response.status,\n },\n };\n }\n\n retainResponse(response.body, response);\n return response.body;\n\n case \"text\":\n return await response.text();\n }\n\n // if responseType is \"json\" or not specified, try to parse as JSON\n const text = await response.text();\n if (text.length > 0) {\n try {\n const responseBody = fromJson(text);\n return responseBody;\n } catch (_err) {\n return {\n ok: false,\n error: {\n reason: \"non-json\",\n statusCode: response.status,\n rawBody: text,\n },\n };\n }\n }\n return undefined;\n}\n","import { fromJson } from \"../json.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\n\nexport async function getErrorResponseBody(response: Response): Promise<unknown> {\n let contentType = response.headers.get(\"Content-Type\")?.toLowerCase();\n if (contentType == null || contentType.length === 0) {\n return getResponseBody(response);\n }\n\n if (contentType.indexOf(\";\") !== -1) {\n contentType = contentType.split(\";\")[0]?.trim() ?? \"\";\n }\n switch (contentType) {\n case \"application/hal+json\":\n case \"application/json\":\n case \"application/ld+json\":\n case \"application/problem+json\":\n case \"application/vnd.api+json\":\n case \"text/json\": {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n default:\n if (contentType.startsWith(\"application/vnd.\") && contentType.endsWith(\"+json\")) {\n const text = await response.text();\n return text.length > 0 ? fromJson(text) : undefined;\n }\n\n // Fallback to plain text if content type is not recognized\n // Even if no body is present, the response will be an empty string\n return await response.text();\n }\n}\n","export async function getFetchFn(): Promise<typeof fetch> {\n return fetch;\n}\n","import { toJson } from \"../json.js\";\nimport { toQueryString } from \"../url/qs.js\";\n\nexport declare namespace GetRequestBody {\n interface Args {\n body: unknown;\n type: \"json\" | \"file\" | \"bytes\" | \"form\" | \"other\";\n }\n}\n\nexport async function getRequestBody({ body, type }: GetRequestBody.Args): Promise<BodyInit | undefined> {\n if (type === \"form\") {\n return toQueryString(body, { arrayFormat: \"repeat\", encode: true });\n }\n if (type.includes(\"json\")) {\n return toJson(body);\n } else {\n return body as BodyInit;\n }\n}\n","let Headers: typeof globalThis.Headers;\n\nif (typeof globalThis.Headers !== \"undefined\") {\n Headers = globalThis.Headers;\n} else {\n Headers = class Headers implements Headers {\n private headers: Map<string, string[]>;\n\n constructor(init?: HeadersInit) {\n this.headers = new Map();\n\n if (init) {\n if (init instanceof Headers) {\n init.forEach((value, key) => this.append(key, value));\n } else if (Array.isArray(init)) {\n for (const [key, value] of init) {\n if (typeof key === \"string\" && typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Each header entry must be a [string, string] tuple\");\n }\n }\n } else {\n for (const [key, value] of Object.entries(init)) {\n if (typeof value === \"string\") {\n this.append(key, value);\n } else {\n throw new TypeError(\"Header values must be strings\");\n }\n }\n }\n }\n }\n\n append(name: string, value: string): void {\n const key = name.toLowerCase();\n const existing = this.headers.get(key) || [];\n this.headers.set(key, [...existing, value]);\n }\n\n delete(name: string): void {\n const key = name.toLowerCase();\n this.headers.delete(key);\n }\n\n get(name: string): string | null {\n const key = name.toLowerCase();\n const values = this.headers.get(key);\n return values ? values.join(\", \") : null;\n }\n\n has(name: string): boolean {\n const key = name.toLowerCase();\n return this.headers.has(key);\n }\n\n set(name: string, value: string): void {\n const key = name.toLowerCase();\n this.headers.set(key, [value]);\n }\n\n forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void {\n const boundCallback = thisArg ? callbackfn.bind(thisArg) : callbackfn;\n this.headers.forEach((values, key) => boundCallback(values.join(\", \"), key, this));\n }\n\n getSetCookie(): string[] {\n return this.headers.get(\"set-cookie\") || [];\n }\n\n *entries(): HeadersIterator<[string, string]> {\n for (const [key, values] of this.headers.entries()) {\n yield [key, values.join(\", \")];\n }\n }\n\n *keys(): HeadersIterator<string> {\n yield* this.headers.keys();\n }\n\n *values(): HeadersIterator<string> {\n for (const values of this.headers.values()) {\n yield values.join(\", \");\n }\n }\n\n [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries();\n }\n };\n}\n\nexport { Headers };\n","const TIMEOUT = \"timeout\";\n\nexport function getTimeoutSignal(timeoutMs: number): { signal: AbortSignal; abortId: ReturnType<typeof setTimeout> } {\n const controller = new AbortController();\n const abortId = setTimeout(() => controller.abort(TIMEOUT), timeoutMs);\n return { signal: controller.signal, abortId };\n}\n\nexport function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal {\n const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args) as AbortSignal[];\n\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n controller.abort((signal as any)?.reason);\n return controller.signal;\n }\n\n signal.addEventListener(\"abort\", () => controller.abort((signal as any)?.reason), {\n signal: controller.signal,\n });\n\n // Re-check after adding listener: the signal may have aborted\n // between the initial `signal.aborted` check and the `addEventListener`\n // call above. If it did, the abort event was already dispatched and\n // the listener will never fire — we must manually abort.\n if (signal.aborted) {\n controller.abort((signal as any)?.reason);\n return controller.signal;\n }\n }\n\n return controller.signal;\n}\n","import { anySignal, getTimeoutSignal } from \"./signals.js\";\n\n/**\n * Cached result of checking whether the current runtime supports\n * the `cache` option in `Request`. Some runtimes (e.g. Cloudflare Workers)\n * throw a TypeError when this option is used.\n */\nlet _cacheNoStoreSupported: boolean | undefined;\nexport function isCacheNoStoreSupported(): boolean {\n if (_cacheNoStoreSupported != null) {\n return _cacheNoStoreSupported;\n }\n try {\n new Request(\"http://localhost\", { cache: \"no-store\" });\n _cacheNoStoreSupported = true;\n } catch {\n _cacheNoStoreSupported = false;\n }\n return _cacheNoStoreSupported;\n}\n\n/**\n * Reset the cached result of `isCacheNoStoreSupported`. Exposed for testing only.\n */\nexport function resetCacheNoStoreSupported(): void {\n _cacheNoStoreSupported = undefined;\n}\n\nexport const makeRequest = async (\n fetchFn: (url: string, init: RequestInit) => Promise<Response>,\n url: string,\n method: string,\n headers: Headers | Record<string, string>,\n requestBody: BodyInit | undefined,\n timeoutMs?: number,\n abortSignal?: AbortSignal,\n withCredentials?: boolean,\n duplex?: \"half\",\n disableCache?: boolean,\n): Promise<Response> => {\n const signals: AbortSignal[] = [];\n\n let timeoutAbortId: ReturnType<typeof setTimeout> | undefined;\n if (timeoutMs != null) {\n const { signal, abortId } = getTimeoutSignal(timeoutMs);\n timeoutAbortId = abortId;\n signals.push(signal);\n }\n\n if (abortSignal != null) {\n signals.push(abortSignal);\n }\n const newSignals = anySignal(signals);\n const response = await fetchFn(url, {\n method: method,\n headers,\n body: requestBody,\n signal: newSignals,\n credentials: withCredentials ? \"include\" : undefined,\n // @ts-ignore\n duplex,\n ...(disableCache && isCacheNoStoreSupported() ? { cache: \"no-store\" as RequestCache } : {}),\n });\n\n if (timeoutAbortId != null) {\n clearTimeout(timeoutAbortId);\n }\n\n return response;\n};\n","import { Headers } from \"./Headers.js\";\n\n/**\n * The raw response from the fetch call excluding the body.\n */\nexport type RawResponse = Omit<\n {\n [K in keyof Response as Response[K] extends Function ? never : K]: Response[K]; // strips out functions\n },\n \"ok\" | \"body\" | \"bodyUsed\"\n>; // strips out body and bodyUsed\n\n/**\n * A raw response indicating that the request was aborted.\n */\nexport const abortRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 499,\n statusText: \"Client Closed Request\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * A raw response indicating an unknown error.\n */\nexport const unknownRawResponse: RawResponse = {\n headers: new Headers(),\n redirected: false,\n status: 0,\n statusText: \"Unknown Error\",\n type: \"error\",\n url: \"\",\n} as const;\n\n/**\n * Converts a `RawResponse` object into a `RawResponse` by extracting its properties,\n * excluding the `body` and `bodyUsed` fields.\n *\n * @param response - The `RawResponse` object to convert.\n * @returns A `RawResponse` object containing the extracted properties of the input response.\n */\nexport function toRawResponse(response: Response): RawResponse {\n return {\n headers: response.headers,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n url: response.url,\n };\n}\n\n/**\n * Creates a `RawResponse` from a standard `Response` object.\n */\nexport interface WithRawResponse<T> {\n readonly data: T;\n readonly rawResponse: RawResponse;\n}\n","const INITIAL_RETRY_DELAY = 1000; // in milliseconds\nconst MAX_RETRY_DELAY = 60000; // in milliseconds\nconst DEFAULT_MAX_RETRIES = 2;\nconst JITTER_FACTOR = 0.2; // 20% random jitter\n\nfunction isRetryableStatusCode(statusCode: number): boolean {\n return [408, 429].includes(statusCode) || statusCode >= 500;\n}\n\nfunction addPositiveJitter(delay: number): number {\n const jitterMultiplier = 1 + Math.random() * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction addSymmetricJitter(delay: number): number {\n const jitterMultiplier = 1 + (Math.random() - 0.5) * JITTER_FACTOR;\n return delay * jitterMultiplier;\n}\n\nfunction getRetryDelayFromHeaders(response: Response, retryAttempt: number): number {\n const retryAfter = response.headers.get(\"Retry-After\");\n if (retryAfter) {\n const retryAfterSeconds = parseInt(retryAfter, 10);\n if (!Number.isNaN(retryAfterSeconds) && retryAfterSeconds > 0) {\n return Math.min(retryAfterSeconds * 1000, MAX_RETRY_DELAY);\n }\n\n const retryAfterDate = new Date(retryAfter);\n if (!Number.isNaN(retryAfterDate.getTime())) {\n const delay = retryAfterDate.getTime() - Date.now();\n if (delay > 0) {\n return Math.min(Math.max(delay, 0), MAX_RETRY_DELAY);\n }\n }\n }\n\n const rateLimitReset = response.headers.get(\"X-RateLimit-Reset\");\n if (rateLimitReset) {\n const resetTime = parseInt(rateLimitReset, 10);\n if (!Number.isNaN(resetTime)) {\n const delay = resetTime * 1000 - Date.now();\n if (delay > 0) {\n return addPositiveJitter(Math.min(delay, MAX_RETRY_DELAY));\n }\n }\n }\n\n return addSymmetricJitter(Math.min(INITIAL_RETRY_DELAY * 2 ** retryAttempt, MAX_RETRY_DELAY));\n}\n\nexport async function requestWithRetries(\n requestFn: () => Promise<Response>,\n maxRetries: number = DEFAULT_MAX_RETRIES,\n): Promise<Response> {\n let response: Response = await requestFn();\n\n for (let i = 0; i < maxRetries; ++i) {\n if (isRetryableStatusCode(response.status)) {\n const delay = getRetryDelayFromHeaders(response, i);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n response = await requestFn();\n } else {\n break;\n }\n }\n return response!;\n}\n","import { toJson } from \"../json.js\";\nimport { createLogger, type LogConfig, type Logger } from \"../logging/logger.js\";\nimport type { APIResponse } from \"./APIResponse.js\";\nimport { createRequestUrl } from \"./createRequestUrl.js\";\nimport type { EndpointMetadata } from \"./EndpointMetadata.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getErrorResponseBody } from \"./getErrorResponseBody.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { getRequestBody } from \"./getRequestBody.js\";\nimport { getResponseBody } from \"./getResponseBody.js\";\nimport { Headers } from \"./Headers.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { abortRawResponse, toRawResponse, unknownRawResponse } from \"./RawResponse.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\n\nexport type FetchFunction = <R = unknown>(args: Fetcher.Args) => Promise<APIResponse<R, Fetcher.Error>>;\n\nexport declare namespace Fetcher {\n export interface Args {\n url: string;\n method: string;\n contentType?: string;\n headers?: Record<string, unknown>;\n /**\n * @deprecated Prefer `queryString` (produced by `core.url.queryBuilder()`).\n * Retained for backwards compatibility with custom fetchers and callers that\n * still construct request args with a query-parameter object.\n */\n queryParameters?: Record<string, unknown>;\n queryString?: string;\n body?: unknown;\n timeoutMs?: number;\n maxRetries?: number;\n withCredentials?: boolean;\n abortSignal?: AbortSignal;\n requestType?: \"json\" | \"file\" | \"bytes\" | \"form\" | \"other\";\n responseType?: \"json\" | \"blob\" | \"sse\" | \"streaming\" | \"text\" | \"arrayBuffer\" | \"binary-response\";\n duplex?: \"half\";\n endpointMetadata?: EndpointMetadata;\n fetchFn?: typeof fetch;\n logging?: LogConfig | Logger;\n }\n\n export type Error = FailedStatusCodeError | NonJsonError | BodyIsNullError | TimeoutError | UnknownError;\n\n export interface FailedStatusCodeError {\n reason: \"status-code\";\n statusCode: number;\n body: unknown;\n }\n\n export interface NonJsonError {\n reason: \"non-json\";\n statusCode: number;\n rawBody: string;\n }\n\n export interface BodyIsNullError {\n reason: \"body-is-null\";\n statusCode: number;\n }\n\n export interface TimeoutError {\n reason: \"timeout\";\n cause?: unknown;\n }\n\n export interface UnknownError {\n reason: \"unknown\";\n errorMessage: string;\n cause?: unknown;\n }\n}\n\nconst SENSITIVE_HEADERS = new Set([\n \"authorization\",\n \"www-authenticate\",\n \"x-api-key\",\n \"api-key\",\n \"apikey\",\n \"x-api-token\",\n \"x-auth-token\",\n \"auth-token\",\n \"cookie\",\n \"set-cookie\",\n \"proxy-authorization\",\n \"proxy-authenticate\",\n \"x-csrf-token\",\n \"x-xsrf-token\",\n \"x-session-token\",\n \"x-access-token\",\n]);\n\nfunction redactHeaders(headers: Headers | Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {};\n for (const [key, value] of headers instanceof Headers ? headers.entries() : Object.entries(headers)) {\n if (SENSITIVE_HEADERS.has(key.toLowerCase())) {\n filtered[key] = \"[REDACTED]\";\n } else {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\nconst SENSITIVE_QUERY_PARAMS = new Set([\n \"api_key\",\n \"api-key\",\n \"apikey\",\n \"token\",\n \"access_token\",\n \"access-token\",\n \"auth_token\",\n \"auth-token\",\n \"password\",\n \"passwd\",\n \"secret\",\n \"api_secret\",\n \"api-secret\",\n \"apisecret\",\n \"key\",\n \"session\",\n \"session_id\",\n \"session-id\",\n]);\n\nfunction redactQueryParameters(\n queryParameters: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (queryParameters == null) {\n return undefined;\n }\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(queryParameters)) {\n redacted[key] = SENSITIVE_QUERY_PARAMS.has(key.toLowerCase()) ? \"[REDACTED]\" : value;\n }\n return redacted;\n}\n\nfunction redactUrl(url: string): string {\n const protocolIndex = url.indexOf(\"://\");\n if (protocolIndex === -1) return url;\n\n const afterProtocol = protocolIndex + 3;\n\n // Find the first delimiter that marks the end of the authority section\n const pathStart = url.indexOf(\"/\", afterProtocol);\n let queryStart = url.indexOf(\"?\", afterProtocol);\n let fragmentStart = url.indexOf(\"#\", afterProtocol);\n\n const firstDelimiter = Math.min(\n pathStart === -1 ? url.length : pathStart,\n queryStart === -1 ? url.length : queryStart,\n fragmentStart === -1 ? url.length : fragmentStart,\n );\n\n // Find the LAST @ before the delimiter (handles multiple @ in credentials)\n let atIndex = -1;\n for (let i = afterProtocol; i < firstDelimiter; i++) {\n if (url[i] === \"@\") {\n atIndex = i;\n }\n }\n\n if (atIndex !== -1) {\n url = `${url.slice(0, afterProtocol)}[REDACTED]@${url.slice(atIndex + 1)}`;\n }\n\n // Recalculate queryStart since url might have changed\n queryStart = url.indexOf(\"?\");\n if (queryStart === -1) return url;\n\n fragmentStart = url.indexOf(\"#\", queryStart);\n const queryEnd = fragmentStart !== -1 ? fragmentStart : url.length;\n const queryString = url.slice(queryStart + 1, queryEnd);\n\n if (queryString.length === 0) return url;\n\n // FAST PATH: Quick check if any sensitive keywords present\n // Using indexOf is faster than regex for simple substring matching\n const lower = queryString.toLowerCase();\n const hasSensitive =\n lower.includes(\"token\") ||\n lower.includes(\"key\") ||\n lower.includes(\"password\") ||\n lower.includes(\"passwd\") ||\n lower.includes(\"secret\") ||\n lower.includes(\"session\") ||\n lower.includes(\"auth\");\n\n if (!hasSensitive) {\n return url;\n }\n\n // SLOW PATH: Parse and redact\n const redactedParams: string[] = [];\n const params = queryString.split(\"&\");\n\n for (const param of params) {\n const equalIndex = param.indexOf(\"=\");\n if (equalIndex === -1) {\n redactedParams.push(param);\n continue;\n }\n\n const key = param.slice(0, equalIndex);\n let shouldRedact = SENSITIVE_QUERY_PARAMS.has(key.toLowerCase());\n\n if (!shouldRedact && key.includes(\"%\")) {\n try {\n const decodedKey = decodeURIComponent(key);\n shouldRedact = SENSITIVE_QUERY_PARAMS.has(decodedKey.toLowerCase());\n } catch {}\n }\n\n redactedParams.push(shouldRedact ? `${key}=[REDACTED]` : param);\n }\n\n return url.slice(0, queryStart + 1) + redactedParams.join(\"&\") + url.slice(queryEnd);\n}\n\nasync function getHeaders(args: Fetcher.Args): Promise<Headers> {\n const newHeaders: Headers = new Headers();\n\n newHeaders.set(\n \"Accept\",\n args.responseType === \"json\"\n ? \"application/json\"\n : args.responseType === \"text\"\n ? \"text/plain\"\n : args.responseType === \"sse\"\n ? \"text/event-stream\"\n : \"*/*\",\n );\n if (args.body !== undefined && args.contentType != null) {\n newHeaders.set(\"Content-Type\", args.contentType);\n }\n\n if (args.headers == null) {\n return newHeaders;\n }\n\n for (const [key, value] of Object.entries(args.headers)) {\n const result = await EndpointSupplier.get(value, { endpointMetadata: args.endpointMetadata ?? {} });\n if (typeof result === \"string\") {\n newHeaders.set(key, result);\n continue;\n }\n if (result == null) {\n continue;\n }\n newHeaders.set(key, `${result}`);\n }\n return newHeaders;\n}\n\nexport async function fetcherImpl<R = unknown>(args: Fetcher.Args): Promise<APIResponse<R, Fetcher.Error>> {\n let url = args.url;\n if (args.queryString != null && args.queryString.length > 0) {\n url = `${url}?${args.queryString}`;\n } else {\n url = createRequestUrl(args.url, args.queryParameters);\n }\n const requestBody: BodyInit | undefined = await getRequestBody({\n body: args.body,\n type: args.requestType ?? \"other\",\n });\n const fetchFn = args.fetchFn ?? (await getFetchFn());\n const headers = await getHeaders(args);\n const logger = createLogger(args.logging);\n\n if (logger.isDebug()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n headers: redactHeaders(headers),\n queryParameters: redactQueryParameters(args.queryParameters),\n hasBody: requestBody != null,\n };\n logger.debug(\"Making HTTP request\", metadata);\n }\n\n try {\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n url,\n args.method,\n headers,\n requestBody,\n args.timeoutMs,\n args.abortSignal,\n args.withCredentials,\n args.duplex,\n args.responseType === \"streaming\" || args.responseType === \"sse\",\n ),\n args.maxRetries,\n );\n\n if (response.status >= 200 && response.status < 400) {\n if (logger.isDebug()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n statusCode: response.status,\n responseHeaders: redactHeaders(response.headers),\n };\n logger.debug(\"HTTP request succeeded\", metadata);\n }\n const body = await getResponseBody(response, args.responseType);\n return {\n ok: true,\n body: body as R,\n headers: response.headers,\n rawResponse: toRawResponse(response),\n };\n } else {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n statusCode: response.status,\n responseHeaders: redactHeaders(Object.fromEntries(response.headers.entries())),\n };\n logger.error(\"HTTP request failed with error status\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"status-code\",\n statusCode: response.status,\n body: await getErrorResponseBody(response),\n },\n rawResponse: toRawResponse(response),\n };\n }\n } catch (error) {\n if (args.abortSignal?.aborted) {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n };\n logger.error(\"HTTP request was aborted\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: \"The user aborted a request\",\n cause: error,\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error && error.name === \"AbortError\") {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n timeoutMs: args.timeoutMs,\n };\n logger.error(\"HTTP request timed out\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"timeout\",\n cause: error,\n },\n rawResponse: abortRawResponse,\n };\n } else if (error instanceof Error) {\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n errorMessage: error.message,\n };\n logger.error(\"HTTP request failed with error\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: error.message,\n cause: error,\n },\n rawResponse: unknownRawResponse,\n };\n }\n\n if (logger.isError()) {\n const metadata = {\n method: args.method,\n url: redactUrl(url),\n error: toJson(error),\n };\n logger.error(\"HTTP request failed with unknown error\", metadata);\n }\n return {\n ok: false,\n error: {\n reason: \"unknown\",\n errorMessage: toJson(error),\n cause: error,\n },\n rawResponse: unknownRawResponse,\n };\n }\n}\n\nexport const fetcher: FetchFunction = fetcherImpl;\n","import type { WithRawResponse } from \"./RawResponse.js\";\n\n/**\n * A promise that returns the parsed response and lets you retrieve the raw response too.\n */\nexport class HttpResponsePromise<T> extends Promise<T> {\n private innerPromise: Promise<WithRawResponse<T>>;\n private unwrappedPromise: Promise<T> | undefined;\n\n private constructor(promise: Promise<WithRawResponse<T>>) {\n // Initialize with a no-op to avoid premature parsing\n super((resolve) => {\n resolve(undefined as unknown as T);\n });\n this.innerPromise = promise;\n }\n\n /**\n * Creates an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @param args - Arguments to pass to the function.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromFunction<F extends (...args: never[]) => Promise<WithRawResponse<T>>, T>(\n fn: F,\n ...args: Parameters<F>\n ): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(fn(...args));\n }\n\n /**\n * Creates a function that returns an `HttpResponsePromise` from a function that returns a promise.\n *\n * @param fn - A function that returns a promise resolving to a `WithRawResponse` object.\n * @returns A function that returns an `HttpResponsePromise` instance.\n */\n public static interceptFunction<\n F extends (...args: never[]) => Promise<WithRawResponse<T>>,\n T = Awaited<ReturnType<F>>[\"data\"],\n >(fn: F): (...args: Parameters<F>) => HttpResponsePromise<T> {\n return (...args: Parameters<F>): HttpResponsePromise<T> => {\n return HttpResponsePromise.fromPromise<T>(fn(...args));\n };\n }\n\n /**\n * Creates an `HttpResponsePromise` from an existing promise.\n *\n * @param promise - A promise resolving to a `WithRawResponse` object.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromPromise<T>(promise: Promise<WithRawResponse<T>>): HttpResponsePromise<T> {\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from an executor function.\n *\n * @param executor - A function that takes resolve and reject callbacks to create a promise.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromExecutor<T>(\n executor: (resolve: (value: WithRawResponse<T>) => void, reject: (reason?: unknown) => void) => void,\n ): HttpResponsePromise<T> {\n const promise = new Promise<WithRawResponse<T>>(executor);\n return new HttpResponsePromise<T>(promise);\n }\n\n /**\n * Creates an `HttpResponsePromise` from a resolved result.\n *\n * @param result - A `WithRawResponse` object to resolve immediately.\n * @returns An `HttpResponsePromise` instance.\n */\n public static fromResult<T>(result: WithRawResponse<T>): HttpResponsePromise<T> {\n const promise = Promise.resolve(result);\n return new HttpResponsePromise<T>(promise);\n }\n\n private unwrap(): Promise<T> {\n if (!this.unwrappedPromise) {\n this.unwrappedPromise = this.innerPromise.then(({ data }) => data);\n }\n return this.unwrappedPromise;\n }\n\n /** @inheritdoc */\n public override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.unwrap().then(onfulfilled, onrejected);\n }\n\n /** @inheritdoc */\n public override catch<TResult = never>(\n onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<T | TResult> {\n return this.unwrap().catch(onrejected);\n }\n\n /** @inheritdoc */\n public override finally(onfinally?: (() => void) | null): Promise<T> {\n return this.unwrap().finally(onfinally);\n }\n\n /**\n * Retrieves the data and raw response.\n *\n * @returns A promise resolving to a `WithRawResponse` object.\n */\n public async withRawResponse(): Promise<WithRawResponse<T>> {\n return await this.innerPromise;\n }\n}\n","export function join(base: string, ...segments: string[]): string {\n if (!base) {\n return \"\";\n }\n\n if (segments.length === 0) {\n return base;\n }\n\n if (base.includes(\"://\")) {\n let url: URL;\n try {\n url = new URL(base);\n } catch {\n return joinPath(base, ...segments);\n }\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment?.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n url.pathname = joinPathSegments(url.pathname, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !url.pathname.endsWith(\"/\")) {\n url.pathname += \"/\";\n }\n\n return url.toString();\n }\n\n return joinPath(base, ...segments);\n}\n\nfunction joinPath(base: string, ...segments: string[]): string {\n if (segments.length === 0) {\n return base;\n }\n\n let result = base;\n\n const lastSegment = segments[segments.length - 1];\n const shouldPreserveTrailingSlash = lastSegment?.endsWith(\"/\");\n\n for (const segment of segments) {\n const cleanSegment = trimSlashes(segment);\n if (cleanSegment) {\n result = joinPathSegments(result, cleanSegment);\n }\n }\n\n if (shouldPreserveTrailingSlash && !result.endsWith(\"/\")) {\n result += \"/\";\n }\n\n return result;\n}\n\nfunction joinPathSegments(left: string, right: string): string {\n if (left.endsWith(\"/\")) {\n return left + right;\n }\n return `${left}/${right}`;\n}\n\nfunction trimSlashes(str: string): string {\n if (!str) return str;\n\n let start = 0;\n let end = str.length;\n\n if (str.startsWith(\"/\")) start = 1;\n if (str.endsWith(\"/\")) end = str.length - 1;\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n","export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);\n\nexport const Supplier = {\n get: async <T>(supplier: Supplier<T>): Promise<T> => {\n if (typeof supplier === \"function\") {\n return (supplier as () => T)();\n } else {\n return supplier;\n }\n },\n};\n","import { createLogger, type LogConfig, type Logger } from \"../logging/logger.js\";\nimport { join } from \"../url/join.js\";\nimport { EndpointSupplier } from \"./EndpointSupplier.js\";\nimport { getFetchFn } from \"./getFetchFn.js\";\nimport { makeRequest } from \"./makeRequest.js\";\nimport { requestWithRetries } from \"./requestWithRetries.js\";\nimport { Supplier } from \"./Supplier.js\";\n\nexport declare namespace PassthroughRequest {\n /**\n * Per-request options that can override the SDK client defaults.\n */\n export interface RequestOptions {\n /** Override the default timeout for this request (in seconds). */\n timeoutInSeconds?: number;\n /** Override the default number of retries for this request. */\n maxRetries?: number;\n /** Additional headers to include in this request. */\n headers?: Record<string, string>;\n /** Abort signal for this request. */\n abortSignal?: AbortSignal;\n }\n\n /**\n * SDK client configuration used by the passthrough fetch method.\n */\n export interface ClientOptions {\n /** The base URL or environment for the client. */\n environment?: Supplier<string>;\n /** Override the base URL. */\n baseUrl?: Supplier<string>;\n /** Default headers to include in requests. */\n headers?: Record<string, unknown>;\n /** Default maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** Default number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A custom fetch function. */\n fetch?: typeof fetch;\n /** Logging configuration. */\n logging?: LogConfig | Logger;\n /** A function that returns auth headers. */\n getAuthHeaders?: () => Promise<Record<string, string>>;\n }\n}\n\n/**\n * Makes a passthrough HTTP request using the SDK's configuration (auth, retry, logging, etc.)\n * while mimicking the standard `fetch` API.\n *\n * @param input - The URL, path, or Request object. If a relative path, it will be resolved against the configured base URL.\n * @param init - Standard RequestInit options (method, headers, body, signal, etc.)\n * @param clientOptions - SDK client options (auth, default headers, logging, etc.)\n * @param requestOptions - Per-request overrides (timeout, retries, extra headers, abort signal).\n * @returns A standard Response object.\n */\nexport async function makePassthroughRequest(\n input: Request | string | URL,\n init: RequestInit | undefined,\n clientOptions: PassthroughRequest.ClientOptions,\n requestOptions?: PassthroughRequest.RequestOptions,\n): Promise<Response> {\n const logger = createLogger(clientOptions.logging);\n\n // Extract URL and default init properties from Request object if provided\n let url: string;\n let effectiveInit: RequestInit | undefined = init;\n if (input instanceof Request) {\n url = input.url;\n // If no explicit init provided, extract properties from the Request object\n if (init == null) {\n effectiveInit = {\n method: input.method,\n headers: Object.fromEntries(input.headers.entries()),\n body: input.body,\n signal: input.signal,\n credentials: input.credentials,\n cache: input.cache as RequestCache,\n redirect: input.redirect,\n referrer: input.referrer,\n integrity: input.integrity,\n mode: input.mode,\n };\n }\n } else {\n url = input instanceof URL ? input.toString() : input;\n }\n\n // Resolve the base URL\n const baseUrl =\n (clientOptions.baseUrl != null ? await Supplier.get(clientOptions.baseUrl) : undefined) ??\n (clientOptions.environment != null ? await Supplier.get(clientOptions.environment) : undefined);\n\n // Determine the full URL\n let fullUrl: string;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n fullUrl = url;\n } else if (baseUrl != null) {\n fullUrl = join(baseUrl, url);\n } else {\n fullUrl = url;\n }\n\n // Merge headers: SDK default headers -> auth headers -> user-provided headers\n const mergedHeaders: Record<string, string> = {};\n\n // Apply SDK default headers (resolve suppliers)\n if (clientOptions.headers != null) {\n for (const [key, value] of Object.entries(clientOptions.headers)) {\n const resolved = await EndpointSupplier.get(value, { endpointMetadata: {} });\n if (resolved != null) {\n mergedHeaders[key.toLowerCase()] = `${resolved}`;\n }\n }\n }\n\n // Apply auth headers\n if (clientOptions.getAuthHeaders != null) {\n const authHeaders = await clientOptions.getAuthHeaders();\n for (const [key, value] of Object.entries(authHeaders)) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n\n // Apply user-provided headers from init\n if (effectiveInit?.headers != null) {\n const initHeaders =\n effectiveInit.headers instanceof Headers\n ? Object.fromEntries(effectiveInit.headers.entries())\n : Array.isArray(effectiveInit.headers)\n ? Object.fromEntries(effectiveInit.headers)\n : effectiveInit.headers;\n for (const [key, value] of Object.entries(initHeaders)) {\n if (value != null) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n }\n\n // Apply per-request option headers (highest priority)\n if (requestOptions?.headers != null) {\n for (const [key, value] of Object.entries(requestOptions.headers)) {\n mergedHeaders[key.toLowerCase()] = value;\n }\n }\n\n const method = effectiveInit?.method ?? \"GET\";\n const body = effectiveInit?.body;\n const timeoutInSeconds = requestOptions?.timeoutInSeconds ?? clientOptions.timeoutInSeconds;\n const timeoutMs = timeoutInSeconds != null ? timeoutInSeconds * 1000 : undefined;\n const maxRetries = requestOptions?.maxRetries ?? clientOptions.maxRetries;\n const abortSignal = requestOptions?.abortSignal ?? effectiveInit?.signal ?? undefined;\n const fetchFn = clientOptions.fetch ?? (await getFetchFn());\n\n if (logger.isDebug()) {\n logger.debug(\"Making passthrough HTTP request\", {\n method,\n url: fullUrl,\n hasBody: body != null,\n });\n }\n\n const response = await requestWithRetries(\n async () =>\n makeRequest(\n fetchFn,\n fullUrl,\n method,\n mergedHeaders,\n body ?? undefined,\n timeoutMs,\n abortSignal,\n effectiveInit?.credentials === \"include\",\n undefined, // duplex\n false, // disableCache\n ),\n maxRetries,\n );\n\n if (logger.isDebug()) {\n logger.debug(\"Passthrough HTTP request completed\", {\n method,\n url: fullUrl,\n statusCode: response.status,\n });\n }\n\n return response;\n}\n","export * from \"./file.js\";\nexport * from \"./types.js\";\n","import type { Uploadable } from \"./types.js\";\n\nexport async function toBinaryUploadRequest(\n file: Uploadable,\n): Promise<{ body: Uploadable.FileLike; headers?: Record<string, string> }> {\n const { data, filename, contentLength, contentType } = await getFileWithMetadata(file);\n const request = {\n body: data,\n headers: {} as Record<string, string>,\n };\n if (filename) {\n request.headers[\"Content-Disposition\"] = `attachment; filename=\"${filename}\"`;\n }\n if (contentType) {\n request.headers[\"Content-Type\"] = contentType;\n }\n if (contentLength != null) {\n request.headers[\"Content-Length\"] = contentLength.toString();\n }\n return request;\n}\n\nexport async function toMultipartDataPart(\n file: Uploadable,\n): Promise<{ data: Uploadable.FileLike; filename?: string; contentType?: string }> {\n const { data, filename, contentType } = await getFileWithMetadata(file, {\n noSniffFileSize: true,\n });\n return {\n data,\n filename,\n contentType,\n };\n}\n\nasync function getFileWithMetadata(\n file: Uploadable,\n { noSniffFileSize }: { noSniffFileSize?: boolean } = {},\n): Promise<Uploadable.WithMetadata> {\n if (isFileLike(file)) {\n return getFileWithMetadata(\n {\n data: file,\n },\n { noSniffFileSize },\n );\n }\n\n if (\"path\" in file) {\n const fs = await import(\"fs\");\n if (!fs?.createReadStream) {\n throw new Error(\"File path uploads are not supported in this environment.\");\n }\n const data = fs.createReadStream(file.path);\n const contentLength =\n file.contentLength ?? (noSniffFileSize === true ? undefined : await tryGetFileSizeFromPath(file.path));\n const filename = file.filename ?? getNameFromPath(file.path);\n return {\n data,\n filename,\n contentType: file.contentType,\n contentLength,\n };\n }\n if (\"data\" in file) {\n const data = file.data;\n const contentLength =\n file.contentLength ??\n (await tryGetContentLengthFromFileLike(data, {\n noSniffFileSize,\n }));\n const filename = file.filename ?? tryGetNameFromFileLike(data);\n return {\n data,\n filename,\n contentType: file.contentType ?? tryGetContentTypeFromFileLike(data),\n contentLength,\n };\n }\n\n throw new Error(`Invalid FileUpload of type ${typeof file}: ${JSON.stringify(file)}`);\n}\n\nfunction isFileLike(value: unknown): value is Uploadable.FileLike {\n return (\n isBuffer(value) ||\n isArrayBufferView(value) ||\n isArrayBuffer(value) ||\n isUint8Array(value) ||\n isBlob(value) ||\n isFile(value) ||\n isStreamLike(value) ||\n isReadableStream(value)\n );\n}\n\nasync function tryGetFileSizeFromPath(path: string): Promise<number | undefined> {\n try {\n const fs = await import(\"fs\");\n if (!fs?.promises?.stat) {\n return undefined;\n }\n const fileStat = await fs.promises.stat(path);\n return fileStat.size;\n } catch (_fallbackError) {\n return undefined;\n }\n}\n\nfunction tryGetNameFromFileLike(data: Uploadable.FileLike): string | undefined {\n if (isNamedValue(data)) {\n return data.name;\n }\n if (isPathedValue(data)) {\n return getNameFromPath(data.path.toString());\n }\n return undefined;\n}\n\nasync function tryGetContentLengthFromFileLike(\n data: Uploadable.FileLike,\n { noSniffFileSize }: { noSniffFileSize?: boolean } = {},\n): Promise<number | undefined> {\n if (isBuffer(data)) {\n return data.length;\n }\n if (isArrayBufferView(data)) {\n return data.byteLength;\n }\n if (isArrayBuffer(data)) {\n return data.byteLength;\n }\n if (isBlob(data)) {\n return data.size;\n }\n if (isFile(data)) {\n return data.size;\n }\n if (noSniffFileSize === true) {\n return undefined;\n }\n if (isPathedValue(data)) {\n return await tryGetFileSizeFromPath(data.path.toString());\n }\n return undefined;\n}\n\nfunction tryGetContentTypeFromFileLike(data: Uploadable.FileLike): string | undefined {\n if (isBlob(data)) {\n return data.type;\n }\n if (isFile(data)) {\n return data.type;\n }\n\n return undefined;\n}\n\nfunction getNameFromPath(path: string): string | undefined {\n const lastForwardSlash = path.lastIndexOf(\"/\");\n const lastBackSlash = path.lastIndexOf(\"\\\\\");\n const lastSlashIndex = Math.max(lastForwardSlash, lastBackSlash);\n return lastSlashIndex >= 0 ? path.substring(lastSlashIndex + 1) : path;\n}\n\ntype NamedValue = {\n name: string;\n} & unknown;\n\ntype PathedValue = {\n path: string | { toString(): string };\n} & unknown;\n\ntype StreamLike = {\n read?: () => unknown;\n pipe?: (dest: unknown) => unknown;\n} & unknown;\n\nfunction isNamedValue(value: unknown): value is NamedValue {\n return typeof value === \"object\" && value != null && \"name\" in value;\n}\n\nfunction isPathedValue(value: unknown): value is PathedValue {\n return typeof value === \"object\" && value != null && \"path\" in value;\n}\n\nfunction isStreamLike(value: unknown): value is StreamLike {\n return typeof value === \"object\" && value != null && (\"read\" in value || \"pipe\" in value);\n}\n\nfunction isReadableStream(value: unknown): value is ReadableStream {\n return typeof value === \"object\" && value != null && \"getReader\" in value;\n}\n\nfunction isBuffer(value: unknown): value is Buffer {\n return typeof Buffer !== \"undefined\" && Buffer.isBuffer && Buffer.isBuffer(value);\n}\n\nfunction isArrayBufferView(value: unknown): value is ArrayBufferView {\n return typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView(value);\n}\n\nfunction isArrayBuffer(value: unknown): value is ArrayBuffer {\n return typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer;\n}\n\nfunction isUint8Array(value: unknown): value is Uint8Array {\n return typeof Uint8Array !== \"undefined\" && value instanceof Uint8Array;\n}\n\nfunction isBlob(value: unknown): value is Blob {\n return typeof Blob !== \"undefined\" && value instanceof Blob;\n}\n\nfunction isFile(value: unknown): value is File {\n return typeof File !== \"undefined\" && value instanceof File;\n}\n","export * from \"./logger.js\";\n","interface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\ndeclare const Deno: DenoGlobal | undefined;\ndeclare const Bun: BunGlobal | undefined;\ndeclare const EdgeRuntime: string | undefined;\ndeclare const self: typeof globalThis.self & {\n importScripts?: unknown;\n};\n\n/**\n * A constant that indicates which environment and version the SDK is running in.\n */\nexport const RUNTIME: Runtime = evaluateRuntime();\n\nexport interface Runtime {\n type: \"browser\" | \"web-worker\" | \"deno\" | \"bun\" | \"node\" | \"react-native\" | \"unknown\" | \"workerd\" | \"edge-runtime\";\n version?: string;\n parsedVersion?: number;\n}\n\nfunction evaluateRuntime(): Runtime {\n /**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n if (isBrowser) {\n return {\n type: \"browser\",\n version: window.navigator.userAgent,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Cloudflare.\n * https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n */\n const isCloudflare = typeof globalThis !== \"undefined\" && globalThis?.navigator?.userAgent === \"Cloudflare-Workers\";\n if (isCloudflare) {\n return {\n type: \"workerd\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Edge Runtime.\n * https://vercel.com/docs/functions/runtimes/edge-runtime#check-if-you're-running-on-the-edge-runtime\n */\n const isEdgeRuntime = typeof EdgeRuntime === \"string\";\n if (isEdgeRuntime) {\n return {\n type: \"edge-runtime\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\n const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n if (isWebWorker) {\n return {\n type: \"web-worker\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Deno.\n * FYI Deno spoofs process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n */\n const isDeno =\n typeof Deno !== \"undefined\" && typeof Deno.version !== \"undefined\" && typeof Deno.version.deno !== \"undefined\";\n if (isDeno) {\n return {\n type: \"deno\",\n version: Deno.version.deno,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\n const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n if (isBun) {\n return {\n type: \"bun\",\n version: Bun.version,\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is in React-Native.\n * This check should come before Node.js detection since React Native may have a process polyfill.\n * https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\n */\n const isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n if (isReactNative) {\n return {\n type: \"react-native\",\n };\n }\n\n /**\n * A constant that indicates whether the environment the code is running is Node.JS.\n *\n * We assign `process` to a local variable first to avoid being flagged by\n * bundlers that perform static analysis on `process.versions` (e.g. Next.js\n * Edge Runtime warns about Node.js APIs even when they are guarded).\n */\n const _process = typeof process !== \"undefined\" ? process : undefined;\n const isNode = typeof _process !== \"undefined\" && typeof _process.versions?.node === \"string\";\n if (isNode) {\n return {\n type: \"node\",\n version: _process.versions.node,\n parsedVersion: Number(_process.versions.node.split(\".\")[0]),\n };\n }\n\n return {\n type: \"unknown\",\n };\n}\n","import { fromJson } from \"../json.js\";\nimport { RUNTIME } from \"../runtime/index.js\";\n\nexport declare namespace Stream {\n interface Args {\n /**\n * The HTTP response stream to read from.\n */\n\n stream: ReadableStream;\n\n /**\n * The event shape to use for parsing the stream data.\n */\n eventShape: JsonEvent | SseEvent;\n /**\n * An abort signal to stop the stream.\n */\n signal?: AbortSignal;\n }\n\n interface JsonEvent {\n type: \"json\";\n messageTerminator: string;\n }\n\n interface SseEvent {\n type: \"sse\";\n streamTerminator?: string;\n eventDiscriminator?: string;\n }\n}\n\nconst DATA_PREFIX = \"data:\";\nconst EVENT_PREFIX = \"event:\";\n\nexport class Stream<T> implements AsyncIterable<T> {\n private stream: ReadableStream;\n\n private parse: (val: unknown) => Promise<T>;\n /**\n * The prefix to use for each message. For example,\n * for SSE, the prefix is \"data: \".\n */\n private prefix: string | undefined;\n private messageTerminator: string;\n private streamTerminator: string | undefined;\n private eventDiscriminator: string | undefined;\n private controller: AbortController = new AbortController();\n private decoder: TextDecoder | undefined;\n\n constructor({ stream, parse, eventShape, signal }: Stream.Args & { parse: (val: unknown) => Promise<T> }) {\n this.stream = stream;\n this.parse = parse;\n if (eventShape.type === \"sse\") {\n this.prefix = DATA_PREFIX;\n this.messageTerminator = \"\\n\";\n this.streamTerminator = eventShape.streamTerminator;\n this.eventDiscriminator = eventShape.eventDiscriminator;\n } else {\n this.messageTerminator = eventShape.messageTerminator;\n }\n signal?.addEventListener(\"abort\", () => this.controller.abort());\n\n // Initialize shared TextDecoder\n if (typeof TextDecoder !== \"undefined\") {\n this.decoder = new TextDecoder(\"utf-8\");\n }\n }\n\n private async *iterMessages(): AsyncGenerator<T, void> {\n if (this.eventDiscriminator != null) {\n yield* this.iterSseEvents();\n } else {\n yield* this.iterDataMessages();\n }\n }\n\n private async *iterDataMessages(): AsyncGenerator<T, void> {\n const stream = readableStreamAsyncIterable<any>(this.stream);\n let buf = \"\";\n let prefixSeen = false;\n for await (const chunk of stream) {\n buf += this.decodeChunk(chunk);\n\n let terminatorIndex: number;\n while ((terminatorIndex = buf.indexOf(this.messageTerminator)) >= 0) {\n let line = buf.slice(0, terminatorIndex);\n buf = buf.slice(terminatorIndex + this.messageTerminator.length);\n\n if (!line.trim()) {\n continue;\n }\n\n if (!prefixSeen && this.prefix != null) {\n const prefixIndex = line.indexOf(this.prefix);\n if (prefixIndex === -1) {\n continue;\n }\n prefixSeen = true;\n line = line.slice(prefixIndex + this.prefix.length);\n }\n\n if (this.streamTerminator != null && line.includes(this.streamTerminator)) {\n return;\n }\n const message = await this.parse(fromJson(line));\n yield message;\n prefixSeen = false;\n }\n }\n }\n\n private async *iterSseEvents(): AsyncGenerator<T, void> {\n const stream = readableStreamAsyncIterable<any>(this.stream);\n let buf = \"\";\n let eventType: string | undefined;\n let dataValue: string | undefined;\n\n for await (const chunk of stream) {\n buf += this.decodeChunk(chunk);\n\n let terminatorIndex: number;\n while ((terminatorIndex = buf.indexOf(\"\\n\")) >= 0) {\n const line = buf.slice(0, terminatorIndex).replace(/\\r$/, \"\");\n buf = buf.slice(terminatorIndex + 1);\n\n if (!line.trim()) {\n if (dataValue != null) {\n const message = await this.dispatchSseEvent(dataValue, eventType);\n if (message == null) {\n return;\n }\n yield message;\n }\n eventType = undefined;\n dataValue = undefined;\n continue;\n }\n\n if (line.startsWith(EVENT_PREFIX)) {\n eventType = line.slice(EVENT_PREFIX.length).trim();\n } else if (line.startsWith(DATA_PREFIX)) {\n const val = line.slice(DATA_PREFIX.length).trim();\n dataValue = dataValue != null ? `${dataValue}\\n${val}` : val;\n }\n }\n }\n\n if (dataValue != null) {\n const message = await this.dispatchSseEvent(dataValue, eventType);\n if (message != null) {\n yield message;\n }\n }\n }\n\n /**\n * Parses and returns a single SSE event, or returns null if the event is a stream terminator.\n */\n private async dispatchSseEvent(dataValue: string, eventType: string | undefined): Promise<T | null> {\n if (this.streamTerminator != null && dataValue.includes(this.streamTerminator)) {\n return null;\n }\n return this.parse(this.injectDiscriminator(fromJson(dataValue), eventType));\n }\n\n private injectDiscriminator(parsed: unknown, eventType: string | undefined): unknown {\n if (this.eventDiscriminator == null || eventType == null) {\n return parsed;\n }\n if (parsed == null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return parsed;\n }\n const obj = parsed as Record<string, unknown>;\n if (this.eventDiscriminator in obj) {\n return parsed;\n }\n return { [this.eventDiscriminator]: eventType, ...obj };\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T, void, unknown> {\n for await (const message of this.iterMessages()) {\n yield message;\n }\n }\n\n private decodeChunk(chunk: any): string {\n let decoded = \"\";\n // If TextDecoder is available, use the streaming decoder instance\n if (this.decoder != null) {\n decoded += this.decoder.decode(chunk, { stream: true });\n }\n // Buffer is present in Node.js environment\n else if (RUNTIME.type === \"node\" && typeof chunk !== \"undefined\") {\n decoded += Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n }\n return decoded;\n }\n}\n\n/**\n * Browser polyfill for ReadableStream\n */\n// biome-ignore lint/suspicious/noExplicitAny: allow explicit any\nexport function readableStreamAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {\n if (stream[Symbol.asyncIterator]) {\n return stream;\n }\n\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done) {\n reader.releaseLock();\n } // release lock when stream becomes closed\n return result;\n } catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n","export { encodePathParam } from \"./encodePathParam.js\";\nexport { join } from \"./join.js\";\nexport { queryBuilder } from \"./QueryStringBuilder.js\";\nexport { toQueryString } from \"./qs.js\";\n","export function encodePathParam(param: unknown): string {\n if (param === null) {\n return \"null\";\n }\n const typeofParam = typeof param;\n switch (typeofParam) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n case \"number\":\n case \"boolean\":\n break;\n default:\n param = String(param);\n break;\n }\n return encodeURIComponent(param as string | number | boolean);\n}\n","import { toQueryString } from \"./qs.js\";\n\n/**\n * Creates a fluent builder for constructing URL query strings.\n *\n * Each `.add()` call serializes its value immediately (like C#'s builder),\n * so no format tracking is needed — the style is applied at add-time.\n *\n * Usage (generated code):\n *\n * const qs = core.url.queryBuilder()\n * .add(\"limit\", limit)\n * .add(\"tags\", tags, { style: \"comma\" }) // explode: false\n * .mergeAdditional(requestOptions?.queryParams)\n * .build();\n */\nexport function queryBuilder(): QueryStringBuilder {\n return new QueryStringBuilder();\n}\n\nclass QueryStringBuilder {\n private parts: Map<string, string> = new Map();\n\n /**\n * Adds a query parameter, serializing it immediately.\n *\n * By default arrays use \"repeat\" format (`key=a&key=b`).\n * Pass `{ style: \"comma\" }` for OpenAPI `explode: false` parameters\n * to get comma-separated values (`key=a,b,c`).\n *\n * Null / undefined values are silently skipped.\n */\n add(key: string, value: unknown, options?: { style?: \"comma\" }): this {\n if (value === undefined || value === null) {\n return this;\n }\n const serialized = toQueryString(\n { [key]: value },\n { arrayFormat: options?.style === \"comma\" ? \"comma\" : \"repeat\" },\n );\n if (serialized.length > 0) {\n this.parts.set(key, serialized);\n }\n return this;\n }\n\n /**\n * Adds multiple query parameters at once from a record.\n * All parameters use the default \"repeat\" array format.\n * Null / undefined values are silently skipped.\n */\n addMany(params: Record<string, unknown>): this {\n if (params != null) {\n for (const [key, value] of Object.entries(params)) {\n this.add(key, value);\n }\n }\n return this;\n }\n\n /**\n * Merges additional query parameters supplied at call-time via\n * `requestOptions.queryParams`. Overrides existing keys (last-write-wins).\n */\n mergeAdditional(additionalParams?: Record<string, unknown>): this {\n if (additionalParams != null) {\n for (const [key, value] of Object.entries(additionalParams)) {\n if (value === undefined || value === null) {\n continue;\n }\n const serialized = toQueryString({ [key]: value }, { arrayFormat: \"repeat\" });\n if (serialized.length > 0) {\n this.parts.set(key, serialized);\n }\n }\n }\n return this;\n }\n\n /**\n * Returns the assembled query string (without the leading `?`).\n * Returns an empty string when no parameters were added.\n */\n build(): string {\n return [...this.parts.values()].join(\"&\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport { mergeHeaders } from \"./core/headers.js\";\nimport * as core from \"./core/index.js\";\nimport type * as environments from \"./environments.js\";\n\nexport interface BaseClientOptions {\n environment?: core.Supplier<environments.CngApiEnvironment | string>;\n /** Specify a custom URL to connect the client to. */\n baseUrl?: core.Supplier<string>;\n /** Additional headers to include in requests. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n /** The default maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The default number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */\n fetch?: typeof fetch;\n /** Configure logging for the client. */\n logging?: core.logging.LogConfig | core.logging.Logger;\n}\n\nexport interface BaseRequestOptions {\n /** The maximum time to wait for a response in seconds. */\n timeoutInSeconds?: number;\n /** The number of times to retry the request. Defaults to 2. */\n maxRetries?: number;\n /** A hook to abort the request. */\n abortSignal?: AbortSignal;\n /** Additional query string parameters to include in the request. */\n queryParams?: Record<string, unknown>;\n /** Additional headers to include in the request. */\n headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;\n}\n\nexport type NormalizedClientOptions<T extends BaseClientOptions = BaseClientOptions> = T & {\n logging: core.logging.Logger;\n};\n\nexport function normalizeClientOptions<T extends BaseClientOptions = BaseClientOptions>(\n options: T,\n): NormalizedClientOptions<T> {\n const headers = mergeHeaders(\n {\n \"X-Fern-Language\": \"JavaScript\",\n \"X-Fern-Runtime\": core.RUNTIME.type,\n \"X-Fern-Runtime-Version\": core.RUNTIME.version,\n },\n options?.headers,\n );\n\n return {\n ...options,\n logging: core.logging.createLogger(options?.logging),\n headers,\n } as NormalizedClientOptions<T>;\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nexport const CngApiEnvironment = {\n Default: \"https://curly.ng\",\n} as const;\n\nexport type CngApiEnvironment = typeof CngApiEnvironment.Default;\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type * as core from \"../core/index.js\";\nimport * as errors from \"./index.js\";\n\nexport function handleNonStatusCodeError(\n error: core.Fetcher.Error,\n rawResponse: core.RawResponse,\n method: string,\n path: string,\n): never {\n switch (error.reason) {\n case \"non-json\":\n throw new errors.CngApiError({\n statusCode: error.statusCode,\n body: error.rawBody,\n rawResponse: rawResponse,\n });\n case \"body-is-null\":\n throw new errors.CngApiError({\n statusCode: error.statusCode,\n rawResponse: rawResponse,\n });\n case \"timeout\":\n throw new errors.CngApiTimeoutError(`Timeout exceeded when calling ${method} ${path}.`, {\n cause: error.cause,\n });\n case \"unknown\":\n throw new errors.CngApiError({\n message: error.errorMessage,\n rawResponse: rawResponse,\n cause: error.cause,\n });\n default:\n throw new errors.CngApiError({\n message: \"Unknown error\",\n rawResponse: rawResponse,\n });\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace AuthClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class AuthClient {\n protected readonly _options: NormalizedClientOptions<AuthClient.Options>;\n\n constructor(options: AuthClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {AuthClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n *\n * @example\n * await client.auth.getAuthWhoami()\n */\n public getAuthWhoami(\n requestOptions?: AuthClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.GetAuthWhoamiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getAuthWhoami(requestOptions));\n }\n\n private async __getAuthWhoami(\n requestOptions?: AuthClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetAuthWhoamiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/auth/whoami\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetAuthWhoamiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/auth/whoami\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace CoderoomClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class CoderoomClient {\n protected readonly _options: NormalizedClientOptions<CoderoomClient.Options>;\n\n constructor(options: CoderoomClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CoderoomClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.InternalServerError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.coderoom.createCoderoomRoom()\n */\n public createCoderoomRoom(\n requestOptions?: CoderoomClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.CoderoomCreateRoomResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createCoderoomRoom(requestOptions));\n }\n\n private async __createCoderoomRoom(\n requestOptions?: CoderoomClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.CoderoomCreateRoomResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/cng/coderoom/rooms\",\n ),\n method: \"POST\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.CoderoomCreateRoomResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 500:\n throw new CngApi.InternalServerError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/cng/coderoom/rooms\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport { toJson } from \"../../../../core/json.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessFilesystemClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessFilesystemClient {\n protected readonly _options: NormalizedClientOptions<HarnessFilesystemClient.Options>;\n\n constructor(options: HarnessFilesystemClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemReadRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ContentTooLargeError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemRead({\n * file_path: \"file_path\"\n * })\n */\n public getHarnessFilesystemRead(\n request: CngApi.GetHarnessFilesystemReadRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessReadApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemRead(request, requestOptions));\n }\n\n private async __getHarnessFilesystemRead(\n request: CngApi.GetHarnessFilesystemReadRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessReadApiResponse>> {\n const { file_path: filePath, offset, limit } = request;\n const _queryParams: Record<string, unknown> = {\n file_path: filePath,\n offset,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/read\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessReadApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 413:\n throw new CngApi.ContentTooLargeError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/read\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemTailRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ContentTooLargeError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemTail({\n * file_path: \"file_path\"\n * })\n */\n public getHarnessFilesystemTail(\n request: CngApi.GetHarnessFilesystemTailRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemTailApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTail(request, requestOptions));\n }\n\n private async __getHarnessFilesystemTail(\n request: CngApi.GetHarnessFilesystemTailRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemTailApiResponse>> {\n const { file_path: filePath, lines } = request;\n const _queryParams: Record<string, unknown> = {\n file_path: filePath,\n lines,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/tail\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemTailApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 413:\n throw new CngApi.ContentTooLargeError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/tail\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemGrepRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemGrep({\n * pattern: \"pattern\"\n * })\n */\n public getHarnessFilesystemGrep(\n request: CngApi.GetHarnessFilesystemGrepRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessGrepApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemGrep(request, requestOptions));\n }\n\n private async __getHarnessFilesystemGrep(\n request: CngApi.GetHarnessFilesystemGrepRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessGrepApiResponse>> {\n const { pattern, path, include, output_mode: outputMode, context, case_insensitive: caseInsensitive } = request;\n const _queryParams: Record<string, unknown> = {\n pattern,\n path,\n include,\n output_mode: outputMode != null ? outputMode : undefined,\n context,\n case_insensitive: Array.isArray(caseInsensitive)\n ? caseInsensitive.map((item) => (typeof item === \"string\" ? item : toJson(item)))\n : caseInsensitive != null\n ? typeof caseInsensitive === \"string\"\n ? caseInsensitive\n : toJson(caseInsensitive)\n : undefined,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/grep\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessGrepApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/grep\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemGlobRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemGlob({\n * pattern: \"pattern\"\n * })\n */\n public getHarnessFilesystemGlob(\n request: CngApi.GetHarnessFilesystemGlobRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessGlobApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemGlob(request, requestOptions));\n }\n\n private async __getHarnessFilesystemGlob(\n request: CngApi.GetHarnessFilesystemGlobRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessGlobApiResponse>> {\n const { pattern, path } = request;\n const _queryParams: Record<string, unknown> = {\n pattern,\n path,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/glob\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessGlobApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/glob\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemLsRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemLs()\n */\n public getHarnessFilesystemLs(\n request: CngApi.GetHarnessFilesystemLsRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemLsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemLs(request, requestOptions));\n }\n\n private async __getHarnessFilesystemLs(\n request: CngApi.GetHarnessFilesystemLsRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemLsApiResponse>> {\n const { path, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/ls\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemLsApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/ls\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemTreeRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemTree()\n */\n public getHarnessFilesystemTree(\n request: CngApi.GetHarnessFilesystemTreeRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemTreeApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemTree(request, requestOptions));\n }\n\n private async __getHarnessFilesystemTree(\n request: CngApi.GetHarnessFilesystemTreeRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemTreeApiResponse>> {\n const { path, depth, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n depth,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/tree\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemTreeApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/tree\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemStatRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n * @throws {@link CngApi.NotFoundError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemStat({\n * path: \"path\"\n * })\n */\n public getHarnessFilesystemStat(\n request: CngApi.GetHarnessFilesystemStatRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemStatApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemStat(request, requestOptions));\n }\n\n private async __getHarnessFilesystemStat(\n request: CngApi.GetHarnessFilesystemStatRequest,\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemStatApiResponse>> {\n const { path } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/stat\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemStatApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/stat\");\n }\n\n /**\n * @param {CngApi.GetHarnessFilesystemFindRequest} request\n * @param {HarnessFilesystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.harnessFilesystem.getHarnessFilesystemFind()\n */\n public getHarnessFilesystemFind(\n request: CngApi.GetHarnessFilesystemFindRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessFilesystemFindApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessFilesystemFind(request, requestOptions));\n }\n\n private async __getHarnessFilesystemFind(\n request: CngApi.GetHarnessFilesystemFindRequest = {},\n requestOptions?: HarnessFilesystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessFilesystemFindApiResponse>> {\n const { path, name, type: type_, max_depth: maxDepth, limit } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n name,\n type: type_ != null ? type_ : undefined,\n max_depth: maxDepth,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/filesystem/find\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessFilesystemFindApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/filesystem/find\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessInternalKnowledgesClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessInternalKnowledgesClient {\n protected readonly _options: NormalizedClientOptions<HarnessInternalKnowledgesClient.Options>;\n\n constructor(options: HarnessInternalKnowledgesClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.harnessInternalKnowledges.createHarnessTopicAssetsSyncPlan()\n */\n public createHarnessTopicAssetsSyncPlan(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__createHarnessTopicAssetsSyncPlan(requestOptions));\n }\n\n private async __createHarnessTopicAssetsSyncPlan(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/sync-plans\",\n ),\n method: \"POST\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"POST\",\n \"/api/harness/internal/knowledges/sync-plans\",\n );\n }\n\n /**\n * @param {CngApi.GetHarnessTopicAssetRawFileRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.NotFoundError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.harnessInternalKnowledges.getHarnessTopicAssetRawFile({\n * path: \"x\",\n * sha256: \"sha256\"\n * })\n */\n public getHarnessTopicAssetRawFile(\n request: CngApi.GetHarnessTopicAssetRawFileRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessTopicAssetRawFile(request, requestOptions));\n }\n\n private async __getHarnessTopicAssetRawFile(\n request: CngApi.GetHarnessTopicAssetRawFileRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const { path, sha256 } = request;\n const _queryParams: Record<string, unknown> = {\n path,\n sha256,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files/raw\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 404:\n throw new CngApi.NotFoundError(_response.error.body as unknown, _response.rawResponse);\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/internal/knowledges/files/raw\",\n );\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n *\n * @example\n * await client.harnessInternalKnowledges.listHarnessTopicAssetHashes()\n */\n public listHarnessTopicAssetHashes(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadHashMapApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessTopicAssetHashes(requestOptions));\n }\n\n private async __listHarnessTopicAssetHashes(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadHashMapApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files/hashes\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessUploadHashMapApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/internal/knowledges/files/hashes\",\n );\n }\n\n /**\n * @param {CngApi.HarnessUploadAddRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.replaceHarnessTopicAssets({\n * uploadedAt: \"uploadedAt\",\n * files: [{\n * path: \"path\",\n * sha256: \"sha256\",\n * size: 1,\n * mode: \"mode\",\n * assetKind: \"skill\",\n * topicName: \"topicName\",\n * displayTitle: \"displayTitle\",\n * displayDescription: \"displayDescription\",\n * displayRating: 1,\n * sourceText: \"sourceText\",\n * frontmatterText: \"frontmatterText\",\n * bodyText: \"bodyText\"\n * }]\n * })\n */\n public replaceHarnessTopicAssets(\n request: CngApi.HarnessUploadAddRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadAddApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__replaceHarnessTopicAssets(request, requestOptions));\n }\n\n private async __replaceHarnessTopicAssets(\n request: CngApi.HarnessUploadAddRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadAddApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessUploadAddApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"POST\",\n \"/api/harness/internal/knowledges/files\",\n );\n }\n\n /**\n * @param {CngApi.HarnessUploadRemoveRequest} request\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.deleteHarnessTopicAssets({\n * uploadedAt: \"uploadedAt\",\n * paths: [\"paths\"]\n * })\n */\n public deleteHarnessTopicAssets(\n request: CngApi.HarnessUploadRemoveRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadRemoveApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__deleteHarnessTopicAssets(request, requestOptions));\n }\n\n private async __deleteHarnessTopicAssets(\n request: CngApi.HarnessUploadRemoveRequest,\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadRemoveApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/files\",\n ),\n method: \"DELETE\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessUploadRemoveApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"DELETE\",\n \"/api/harness/internal/knowledges/files\",\n );\n }\n\n /**\n * @param {HarnessInternalKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.UnauthorizedError}\n * @throws {@link CngApi.ConflictError}\n *\n * @example\n * await client.harnessInternalKnowledges.cleanHarnessKnowledgesCatalog()\n */\n public cleanHarnessKnowledgesCatalog(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessUploadCleanApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__cleanHarnessKnowledgesCatalog(requestOptions));\n }\n\n private async __cleanHarnessKnowledgesCatalog(\n requestOptions?: HarnessInternalKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessUploadCleanApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/internal/knowledges/catalog\",\n ),\n method: \"DELETE\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessUploadCleanApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 401:\n throw new CngApi.UnauthorizedError(_response.error.body as unknown, _response.rawResponse);\n case 409:\n throw new CngApi.ConflictError(\n _response.error.body as CngApi.ApiErrorResponse,\n _response.rawResponse,\n );\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"DELETE\",\n \"/api/harness/internal/knowledges/catalog\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace HarnessKnowledgesClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HarnessKnowledgesClient {\n protected readonly _options: NormalizedClientOptions<HarnessKnowledgesClient.Options>;\n\n constructor(options: HarnessKnowledgesClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesCatalog()\n */\n public getHarnessKnowledgesCatalog(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessCatalogSummaryApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesCatalog(requestOptions));\n }\n\n private async __getHarnessKnowledgesCatalog(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessCatalogSummaryApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/catalog\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessCatalogSummaryApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/catalog\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessKnowledgesAudiences()\n */\n public listHarnessKnowledgesAudiences(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessAudiencesApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesAudiences(requestOptions));\n }\n\n private async __listHarnessKnowledgesAudiences(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessAudiencesApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/audiences\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessAudiencesApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/audiences\",\n );\n }\n\n /**\n * @param {CngApi.ListHarnessTopicAssetsRequest} request\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessTopicAssets()\n */\n public listHarnessTopicAssets(\n request: CngApi.ListHarnessTopicAssetsRequest = {},\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessTopicAssetsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessTopicAssets(request, requestOptions));\n }\n\n private async __listHarnessTopicAssets(\n request: CngApi.ListHarnessTopicAssetsRequest = {},\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessTopicAssetsApiResponse>> {\n const { q, audience, limit } = request;\n const _queryParams: Record<string, unknown> = {\n q,\n audience: audience != null ? audience : undefined,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/files\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessTopicAssetsApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/knowledges/files\");\n }\n\n /**\n * @param {CngApi.SearchHarnessKnowledgesRequest} request\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.InternalServerError}\n *\n * @example\n * await client.harnessKnowledges.searchHarnessKnowledges({\n * q: \"q\"\n * })\n */\n public searchHarnessKnowledges(\n request: CngApi.SearchHarnessKnowledgesRequest,\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessSemanticSearchApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__searchHarnessKnowledges(request, requestOptions));\n }\n\n private async __searchHarnessKnowledges(\n request: CngApi.SearchHarnessKnowledgesRequest,\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessSemanticSearchApiResponse>> {\n const { q, limit } = request;\n const _queryParams: Record<string, unknown> = {\n q,\n limit,\n };\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/search\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.HarnessSemanticSearchApiResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 500:\n throw new CngApi.InternalServerError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/search\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesConnectome()\n */\n public getHarnessKnowledgesConnectome(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessConnectomeApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesConnectome(requestOptions));\n }\n\n private async __getHarnessKnowledgesConnectome(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessConnectomeApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/connectome\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessConnectomeApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/connectome\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesBrain()\n */\n public getHarnessKnowledgesBrain(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessBrainApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesBrain(requestOptions));\n }\n\n private async __getHarnessKnowledgesBrain(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessBrainApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/brain\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessBrainApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/harness/knowledges/brain\");\n }\n\n /**\n * Returns the full topic index for agent discovery. Use search for semantic lookup, or filesystem/read for content.\n *\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.listHarnessKnowledgesTopics()\n */\n public listHarnessKnowledgesTopics(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HarnessTopicsApiResponse> {\n return core.HttpResponsePromise.fromPromise(this.__listHarnessKnowledgesTopics(requestOptions));\n }\n\n private async __listHarnessKnowledgesTopics(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HarnessTopicsApiResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/topics\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HarnessTopicsApiResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/topics\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesInstallScript()\n */\n public getHarnessKnowledgesInstallScript(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesInstallScript(requestOptions));\n }\n\n private async __getHarnessKnowledgesInstallScript(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/install.sh\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/install.sh\",\n );\n }\n\n /**\n * @param {HarnessKnowledgesClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.harnessKnowledges.getHarnessKnowledgesInstallPowerShell()\n */\n public getHarnessKnowledgesInstallPowerShell(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): core.HttpResponsePromise<string> {\n return core.HttpResponsePromise.fromPromise(this.__getHarnessKnowledgesInstallPowerShell(requestOptions));\n }\n\n private async __getHarnessKnowledgesInstallPowerShell(\n requestOptions?: HarnessKnowledgesClient.RequestOptions,\n ): Promise<core.WithRawResponse<string>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/harness/knowledges/install.ps1\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n responseType: \"text\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as string, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/harness/knowledges/install.ps1\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport type * as CngApi from \"../../../index.js\";\n\nexport declare namespace HookifyClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class HookifyClient {\n protected readonly _options: NormalizedClientOptions<HookifyClient.Options>;\n\n constructor(options: HookifyClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {core.file.Uploadable} uploadable\n * @param {CngApi.IngestHookifyHookRequest} request\n * @param {HookifyClient.RequestOptions} requestOptions - Request-specific configuration.\n */\n public ingestHookifyHook(\n uploadable: core.file.Uploadable,\n request: CngApi.IngestHookifyHookRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HookifyIngestResponse> {\n return core.HttpResponsePromise.fromPromise(this.__ingestHookifyHook(uploadable, request, requestOptions));\n }\n\n private async __ingestHookifyHook(\n uploadable: core.file.Uploadable,\n request: CngApi.IngestHookifyHookRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HookifyIngestResponse>> {\n const _queryParams: Record<string, unknown> = {\n mode: request.mode != null ? request.mode : undefined,\n event: request.event,\n };\n const _binaryUploadRequest = await core.file.toBinaryUploadRequest(uploadable);\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(\n this._options?.headers,\n _binaryUploadRequest.headers,\n requestOptions?.headers,\n );\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/hookify/ingest\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/octet-stream\",\n queryString: core.url\n .queryBuilder()\n .addMany(_queryParams)\n .mergeAdditional(requestOptions?.queryParams)\n .build(),\n requestType: \"bytes\",\n duplex: \"half\",\n body: _binaryUploadRequest.body,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HookifyIngestResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/hookify/ingest\");\n }\n\n /**\n * @param {CngApi.GetHookifyRequestRequest} request\n * @param {HookifyClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.hookify.getHookifyRequest({\n * requestId: \"requestId\"\n * })\n */\n public getHookifyRequest(\n request: CngApi.GetHookifyRequestRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.HookifyRequestResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHookifyRequest(request, requestOptions));\n }\n\n private async __getHookifyRequest(\n request: CngApi.GetHookifyRequestRequest,\n requestOptions?: HookifyClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.HookifyRequestResponse>> {\n const { requestId } = request;\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n `api/hookify/requests/${core.url.encodePathParam(requestId)}`,\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.HookifyRequestResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(\n _response.error,\n _response.rawResponse,\n \"GET\",\n \"/api/hookify/requests/{requestId}\",\n );\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace LlmClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class LlmClient {\n protected readonly _options: NormalizedClientOptions<LlmClient.Options>;\n\n constructor(options: LlmClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {LlmClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.llm.getLlmHealth()\n */\n public getLlmHealth(\n requestOptions?: LlmClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.GetLlmHealthResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getLlmHealth(requestOptions));\n }\n\n private async __getLlmHealth(\n requestOptions?: LlmClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetLlmHealthResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/llm/health\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetLlmHealthResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/llm/health\");\n }\n\n public createLlmChat(\n request: CngApi.CreateLlmChatRequest,\n requestOptions?: LlmClient.RequestOptions,\n ): core.HttpResponsePromise<core.Stream<string>> {\n return core.HttpResponsePromise.fromPromise(this.__createLlmChat(request, requestOptions));\n }\n\n private async __createLlmChat(\n request: CngApi.CreateLlmChatRequest,\n requestOptions?: LlmClient.RequestOptions,\n ): Promise<core.WithRawResponse<core.Stream<string>>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher<ReadableStream>({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/llm/chat\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n responseType: \"sse\",\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: new core.Stream({\n stream: _response.body,\n parse: (data) => data as any,\n signal: requestOptions?.abortSignal,\n eventShape: {\n type: \"sse\",\n },\n }),\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/llm/chat\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace PolarClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class PolarClient {\n protected readonly _options: NormalizedClientOptions<PolarClient.Options>;\n\n constructor(options: PolarClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {PolarClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadGatewayError}\n * @throws {@link CngApi.ServiceUnavailableError}\n *\n * @example\n * await client.polar.createHarnessPolarCheckout()\n */\n public createHarnessPolarCheckout(requestOptions?: PolarClient.RequestOptions): core.HttpResponsePromise<void> {\n return core.HttpResponsePromise.fromPromise(this.__createHarnessPolarCheckout(requestOptions));\n }\n\n private async __createHarnessPolarCheckout(\n requestOptions?: PolarClient.RequestOptions,\n ): Promise<core.WithRawResponse<void>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/polar/harness/checkout\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: undefined, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 502:\n throw new CngApi.BadGatewayError(\n _response.error.body as CngApi.PolarCheckoutErrorResponse,\n _response.rawResponse,\n );\n case 503:\n throw new CngApi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/polar/harness/checkout\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport type * as CngApi from \"../../../index.js\";\n\nexport declare namespace SystemClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class SystemClient {\n protected readonly _options: NormalizedClientOptions<SystemClient.Options>;\n\n constructor(options: SystemClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {SystemClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @example\n * await client.system.getHealth()\n */\n public getHealth(requestOptions?: SystemClient.RequestOptions): core.HttpResponsePromise<CngApi.GetHealthResponse> {\n return core.HttpResponsePromise.fromPromise(this.__getHealth(requestOptions));\n }\n\n private async __getHealth(\n requestOptions?: SystemClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.GetHealthResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/health\",\n ),\n method: \"GET\",\n headers: _headers,\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return { data: _response.body as CngApi.GetHealthResponse, rawResponse: _response.rawResponse };\n }\n\n if (_response.error.reason === \"status-code\") {\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"GET\", \"/api/health\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport type { BaseClientOptions, BaseRequestOptions } from \"../../../../BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"../../../../BaseClient.js\";\nimport { mergeHeaders } from \"../../../../core/headers.js\";\nimport * as core from \"../../../../core/index.js\";\nimport * as environments from \"../../../../environments.js\";\nimport { handleNonStatusCodeError } from \"../../../../errors/handleNonStatusCodeError.js\";\nimport * as errors from \"../../../../errors/index.js\";\nimport * as CngApi from \"../../../index.js\";\n\nexport declare namespace TelemetryClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class TelemetryClient {\n protected readonly _options: NormalizedClientOptions<TelemetryClient.Options>;\n\n constructor(options: TelemetryClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n /**\n * @param {CngApi.NavigationEventRequest} request\n * @param {TelemetryClient.RequestOptions} requestOptions - Request-specific configuration.\n *\n * @throws {@link CngApi.BadRequestError}\n *\n * @example\n * await client.telemetry.createNavigationEvent({\n * url: \"url\",\n * pathname: \"pathname\",\n * timestamp: \"2024-01-15T09:30:00Z\"\n * })\n */\n public createNavigationEvent(\n request: CngApi.NavigationEventRequest,\n requestOptions?: TelemetryClient.RequestOptions,\n ): core.HttpResponsePromise<CngApi.NavigationEventAcceptedResponse> {\n return core.HttpResponsePromise.fromPromise(this.__createNavigationEvent(request, requestOptions));\n }\n\n private async __createNavigationEvent(\n request: CngApi.NavigationEventRequest,\n requestOptions?: TelemetryClient.RequestOptions,\n ): Promise<core.WithRawResponse<CngApi.NavigationEventAcceptedResponse>> {\n const _headers: core.Fetcher.Args[\"headers\"] = mergeHeaders(this._options?.headers, requestOptions?.headers);\n const _response = await core.fetcher({\n url: core.url.join(\n (await core.Supplier.get(this._options.baseUrl)) ??\n (await core.Supplier.get(this._options.environment)) ??\n environments.CngApiEnvironment.Default,\n \"api/navigation-events\",\n ),\n method: \"POST\",\n headers: _headers,\n contentType: \"application/json\",\n queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(),\n requestType: \"json\",\n body: request,\n timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,\n maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,\n abortSignal: requestOptions?.abortSignal,\n fetchFn: this._options?.fetch,\n logging: this._options.logging,\n });\n if (_response.ok) {\n return {\n data: _response.body as CngApi.NavigationEventAcceptedResponse,\n rawResponse: _response.rawResponse,\n };\n }\n\n if (_response.error.reason === \"status-code\") {\n switch (_response.error.statusCode) {\n case 400:\n throw new CngApi.BadRequestError(_response.error.body as unknown, _response.rawResponse);\n default:\n throw new errors.CngApiError({\n statusCode: _response.error.statusCode,\n body: _response.error.body,\n rawResponse: _response.rawResponse,\n });\n }\n }\n\n return handleNonStatusCodeError(_response.error, _response.rawResponse, \"POST\", \"/api/navigation-events\");\n }\n}\n","// This file was auto-generated by Fern from our API Definition.\n\nimport { AuthClient } from \"./api/resources/auth/client/Client.js\";\nimport { CoderoomClient } from \"./api/resources/coderoom/client/Client.js\";\nimport { HarnessFilesystemClient } from \"./api/resources/harnessFilesystem/client/Client.js\";\nimport { HarnessInternalKnowledgesClient } from \"./api/resources/harnessInternalKnowledges/client/Client.js\";\nimport { HarnessKnowledgesClient } from \"./api/resources/harnessKnowledges/client/Client.js\";\nimport { HookifyClient } from \"./api/resources/hookify/client/Client.js\";\nimport { LlmClient } from \"./api/resources/llm/client/Client.js\";\nimport { PolarClient } from \"./api/resources/polar/client/Client.js\";\nimport { SystemClient } from \"./api/resources/system/client/Client.js\";\nimport { TelemetryClient } from \"./api/resources/telemetry/client/Client.js\";\nimport type { BaseClientOptions, BaseRequestOptions } from \"./BaseClient.js\";\nimport { type NormalizedClientOptions, normalizeClientOptions } from \"./BaseClient.js\";\nimport * as core from \"./core/index.js\";\n\nexport declare namespace CngApiClient {\n export type Options = BaseClientOptions;\n\n export interface RequestOptions extends BaseRequestOptions {}\n}\n\nexport class CngApiClient {\n protected readonly _options: NormalizedClientOptions<CngApiClient.Options>;\n protected _system: SystemClient | undefined;\n protected _auth: AuthClient | undefined;\n protected _harnessKnowledges: HarnessKnowledgesClient | undefined;\n protected _harnessFilesystem: HarnessFilesystemClient | undefined;\n protected _harnessInternalKnowledges: HarnessInternalKnowledgesClient | undefined;\n protected _polar: PolarClient | undefined;\n protected _telemetry: TelemetryClient | undefined;\n protected _llm: LlmClient | undefined;\n protected _hookify: HookifyClient | undefined;\n protected _coderoom: CoderoomClient | undefined;\n\n constructor(options: CngApiClient.Options = {}) {\n this._options = normalizeClientOptions(options);\n }\n\n public get system(): SystemClient {\n return (this._system ??= new SystemClient(this._options));\n }\n\n public get auth(): AuthClient {\n return (this._auth ??= new AuthClient(this._options));\n }\n\n public get harnessKnowledges(): HarnessKnowledgesClient {\n return (this._harnessKnowledges ??= new HarnessKnowledgesClient(this._options));\n }\n\n public get harnessFilesystem(): HarnessFilesystemClient {\n return (this._harnessFilesystem ??= new HarnessFilesystemClient(this._options));\n }\n\n public get harnessInternalKnowledges(): HarnessInternalKnowledgesClient {\n return (this._harnessInternalKnowledges ??= new HarnessInternalKnowledgesClient(this._options));\n }\n\n public get polar(): PolarClient {\n return (this._polar ??= new PolarClient(this._options));\n }\n\n public get telemetry(): TelemetryClient {\n return (this._telemetry ??= new TelemetryClient(this._options));\n }\n\n public get llm(): LlmClient {\n return (this._llm ??= new LlmClient(this._options));\n }\n\n public get hookify(): HookifyClient {\n return (this._hookify ??= new HookifyClient(this._options));\n }\n\n public get coderoom(): CoderoomClient {\n return (this._coderoom ??= new CoderoomClient(this._options));\n }\n\n /**\n * Make a passthrough request using the SDK's configured auth, retry, logging, etc.\n * This is useful for making requests to endpoints not yet supported in the SDK.\n * The input can be a URL string, URL object, or Request object. Relative paths are resolved against the configured base URL.\n *\n * @param {Request | string | URL} input - The URL, path, or Request object.\n * @param {RequestInit} init - Standard fetch RequestInit options.\n * @param {core.PassthroughRequest.RequestOptions} requestOptions - Per-request overrides (timeout, retries, headers, abort signal).\n * @returns {Promise<Response>} A standard Response object.\n */\n public async fetch(\n input: Request | string | URL,\n init?: RequestInit,\n requestOptions?: core.PassthroughRequest.RequestOptions,\n ): Promise<Response> {\n return core.makePassthroughRequest(\n input,\n init,\n {\n baseUrl: this._options.baseUrl ?? this._options.environment,\n headers: this._options.headers,\n timeoutInSeconds: this._options.timeoutInSeconds,\n maxRetries: this._options.maxRetries,\n fetch: this._options.fetch,\n logging: this._options.logging,\n },\n requestOptions,\n );\n }\n}\n","import * as logger from \"./logger.js\";\n\nexport namespace logging {\n /**\n * Configuration for logger instances.\n */\n export type LogConfig = logger.LogConfig;\n export type LogLevel = logger.LogLevel;\n export const LogLevel: typeof logger.LogLevel = logger.LogLevel;\n export type ILogger = logger.ILogger;\n /**\n * Console logger implementation that outputs to the console.\n */\n export type ConsoleLogger = logger.ConsoleLogger;\n /**\n * Console logger implementation that outputs to the console.\n */\n export const ConsoleLogger: typeof logger.ConsoleLogger = logger.ConsoleLogger;\n}\n","import { CngApiError } from \"@cng/client\";\n\nimport { resolveOutputFormat } from \"../config.js\";\n\nexport function formatError(error: unknown): string {\n if (error instanceof CngApiError) {\n return formatApiError(error);\n }\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction formatApiError(error: CngApiError): string {\n if (resolveOutputFormat() === \"json\") {\n return error.message;\n }\n\n const statusCode = error.statusCode ?? 0;\n\n if (statusCode >= 500) {\n return `Backend error (${statusCode}). The service encountered an internal error.`;\n }\n\n if (statusCode >= 400) {\n const bodyMessage = extractBodyErrorMessage(error.body);\n if (bodyMessage) {\n return `Request error (${statusCode}): ${bodyMessage}`;\n }\n return `Request error (${statusCode}).`;\n }\n\n return error.message;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction extractBodyErrorMessage(body: unknown): string | undefined {\n if (!isRecord(body)) {\n return undefined;\n }\n\n const errorField = body.error;\n\n if (errorField != null && isRecord(errorField)) {\n const message = errorField.message;\n if (typeof message === \"string\") {\n return message;\n }\n }\n\n if (typeof body.message === \"string\") {\n return body.message;\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["process","process","CreateLlmChatRequest","Messages","Item","Parts","GetLlmHealthResponse","GetHealthResponse","NavigationEventRequest","HarnessCatalogSummary","HarnessDatabaseBinding","HarnessSemanticSearchResponse","HookifyIngestResponse","HookifyRequestResponse","Headers","Headers","Headers","logging"]}