@docmana/sdk 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +5 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -37
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.23.0 - 2026-08-07
|
|
6
|
+
|
|
7
|
+
- Align the Fraud result with Consumer Edge's functional public contract.
|
|
8
|
+
- Keep verdict, confidence, reasoning, summary, findings, document id, and duration.
|
|
9
|
+
- Remove internal preprocessing, layer telemetry, model usage, token counts, costs,
|
|
10
|
+
and persistence diagnostics; finding categories remain available through `finding.layer`.
|
|
11
|
+
|
|
3
12
|
## 0.22.0 - 2026-08-06
|
|
4
13
|
|
|
5
14
|
- Expose the complete Consumer Edge fraud-analysis telemetry: global totals,
|
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ const fraud = await docmana.detectFraud({
|
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
console.log(fraud.verdict, fraud.summary.highestSeverity);
|
|
46
|
-
console.log(fraud.
|
|
46
|
+
console.log(fraud.summary, fraud.findings);
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## Authentication
|
|
@@ -145,10 +145,10 @@ use `RunFlowParams` for request data:
|
|
|
145
145
|
- `detectFraud(params, options?)` starts fraud detection from either `documentUrl`
|
|
146
146
|
plus `filename`, or a local `file` using the standard `FileInput` contract. It polls
|
|
147
147
|
Consumer until `COMPLETED` or `FAILED` and returns the normalized verdict, aggregate
|
|
148
|
-
`summary
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
`summary` and `findings` with job-local references. Each finding keeps its analysis
|
|
149
|
+
category in `layer`. Internal preprocessing, layer telemetry, token counts, LLM calls,
|
|
150
|
+
model usage, costs, persistence diagnostics, and the sensitive Fraud `document`
|
|
151
|
+
payload are intentionally never exposed by Consumer or SDK.
|
|
152
152
|
- `detectFraudAsync(params, options?)` starts fraud detection and immediately returns
|
|
153
153
|
`{ jobId, status }` without polling.
|
|
154
154
|
- `getFraudDetectionStatus(jobId, signal?)` and
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Docmana } from "./client.js";
|
|
2
2
|
export { DocmanaError, DocmanaAuthError, DocmanaRequestError, DocmanaPermissionError, DocmanaNotFoundError, DocmanaExecutionError, DocmanaFraudDetectionError, DocmanaTimeoutError, DocmanaAbortError, } from "./errors.js";
|
|
3
|
-
export type { AccessibleOrganization, DownloadedOrganizationDocument, DocmanaConfig, FlowDefinition, FlowDefinitionField, FlowDefinitionNode, FlowDefinitionNodeMetadata, FlowDocumentRequirement, FlowListItem, FlowMetadata, FraudDetectionAccepted, FraudDetectionAsyncOptions, FraudDetectionBaseParams, FraudDetectionError, FraudDetectionFileParams,
|
|
3
|
+
export type { AccessibleOrganization, DownloadedOrganizationDocument, DocmanaConfig, FlowDefinition, FlowDefinitionField, FlowDefinitionNode, FlowDefinitionNodeMetadata, FlowDocumentRequirement, FlowListItem, FlowMetadata, FraudDetectionAccepted, FraudDetectionAsyncOptions, FraudDetectionBaseParams, FraudDetectionError, FraudDetectionFileParams, FraudDetectionOptions, FraudDetectionParams, FraudDetectionResult, FraudDetectionStatus, FraudDetectionStatusResult, FraudDetectionSummary, FraudDetectionUrlParams, FraudDetectionVerdict, FraudFinding, FraudFindingLocation, FraudFindingSeverity, FraudSeverityCounts, OrganizationDocument, OrganizationDocumentsPayload, PartialExecutionFlowVersion, PartialExecutionMetadata, PartialExecutionScope, RunFlowAsyncParams, RunFlowAsyncOptions, RunFlowOptions, RunFlowParams, RunPartialFlowAsyncParams, RunPartialFlowOptions, RunPartialFlowParams, FileInput, NamedFileInput, PathFileInput, DocmanaExecutionResult, DocmanaExecutionVerdict, ExecutionStatus, DocmanaDocumentMapping, DocmanaDocumentResult, DocmanaNodeResult, DocmanaScoreNodeResult, DocmanaCrossValidationResult, DocmanaConclusionResult, DocmanaClassificationResult, DocmanaMetadataExtractionResult, DocmanaExtractionResult, DocmanaValidationResult, DocmanaPreprocessingResult, } from "./types.js";
|
|
4
4
|
export type { ExecutionProgress, VirtualDocument, PhysicalDocument, DocumentContent, FlowNodeType, FlowConfigs, FlowNode, FlowEdge, Flow, NodeTranslationResult, DocmanaApiExecutionResult, DocmanaApiNodeResult, DocmanaApiDocumentExecutionResult, DocmanaApiDocumentRequest, DocmanaApiPreprocessDocumentResult, } from "./models/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk/index.ts","../src/sdk/config.ts","../src/sdk/errors.ts","../src/sdk/http/http-client.ts","../src/sdk/files/resolve-input.ts","../src/sdk/api/run-flow.ts","../src/sdk/api/run-partial-flow.ts","../src/sdk/status.ts","../src/sdk/api/execution-status.ts","../src/sdk/api/execution-result.ts","../src/sdk/api/fraud-detection.ts","../src/sdk/api/list-flows.ts","../src/sdk/api/list-organizations.ts","../src/sdk/api/flow-metadata.ts","../src/sdk/api/flow-definition.ts","../src/sdk/api/organization-documents.ts","../src/sdk/polling/poll.ts","../src/sdk/client.ts"],"sourcesContent":["export { Docmana } from \"./client.js\";\nexport {\n DocmanaError,\n DocmanaAuthError,\n DocmanaRequestError,\n DocmanaPermissionError,\n DocmanaNotFoundError,\n DocmanaExecutionError,\n DocmanaFraudDetectionError,\n DocmanaTimeoutError,\n DocmanaAbortError,\n} from \"./errors.js\";\nexport type {\n AccessibleOrganization,\n DownloadedOrganizationDocument,\n DocmanaConfig,\n FlowDefinition,\n FlowDefinitionField,\n FlowDefinitionNode,\n FlowDefinitionNodeMetadata,\n FlowDocumentRequirement,\n FlowListItem,\n FlowMetadata,\n FraudDetectionAccepted,\n FraudDetectionAsyncOptions,\n FraudDetectionBaseParams,\n FraudDetectionError,\n FraudDetectionFileParams,\n FraudDetectionLayer,\n FraudDetectionLayerStatus,\n FraudDetectionModelUsage,\n FraudDetectionOptions,\n FraudDetectionParams,\n FraudDetectionPreprocess,\n FraudDetectionPreprocessStatus,\n FraudDetectionResult,\n FraudDetectionStatus,\n FraudDetectionStatusResult,\n FraudDetectionSummary,\n FraudDetectionTelemetry,\n FraudDetectionUrlParams,\n FraudDetectionVerdict,\n FraudFinding,\n FraudFindingLocation,\n FraudFindingSeverity,\n FraudSeverityCounts,\n OrganizationDocument,\n OrganizationDocumentsPayload,\n PartialExecutionFlowVersion,\n PartialExecutionMetadata,\n PartialExecutionScope,\n RunFlowAsyncParams,\n RunFlowAsyncOptions,\n RunFlowOptions,\n RunFlowParams,\n RunPartialFlowAsyncParams,\n RunPartialFlowOptions,\n RunPartialFlowParams,\n FileInput,\n NamedFileInput,\n PathFileInput,\n DocmanaExecutionResult,\n DocmanaExecutionVerdict,\n ExecutionStatus,\n DocmanaDocumentMapping,\n DocmanaDocumentResult,\n DocmanaNodeResult,\n DocmanaScoreNodeResult,\n DocmanaCrossValidationResult,\n DocmanaConclusionResult,\n DocmanaClassificationResult,\n DocmanaMetadataExtractionResult,\n DocmanaExtractionResult,\n DocmanaValidationResult,\n DocmanaPreprocessingResult,\n} from \"./types.js\";\nexport type {\n ExecutionProgress,\n VirtualDocument,\n PhysicalDocument,\n DocumentContent,\n FlowNodeType,\n FlowConfigs,\n FlowNode,\n FlowEdge,\n Flow,\n NodeTranslationResult,\n DocmanaApiExecutionResult,\n DocmanaApiNodeResult,\n DocmanaApiDocumentExecutionResult,\n DocmanaApiDocumentRequest,\n DocmanaApiPreprocessDocumentResult,\n} from \"./models/index.js\";\n","import type { DocmanaConfig } from \"./types.js\";\n\nexport const DEFAULTS = {\n tokenEndpoint:\n \"https://4fe70f5b-e013-4f65-9fa7-3109a33beba5.ciamlogin.com/4fe70f5b-e013-4f65-9fa7-3109a33beba5/oauth2/v2.0/token\",\n scope: \"api://d781e6ba-cc08-4618-8099-ad968abd2b9e/.default\",\n timeoutMs: 300_000,\n pollIntervalMs: 2_000,\n pollMaxIntervalMs: 10_000,\n} as const;\n\nexport interface ResolvedConfig {\n apiBaseUrl: string;\n accessToken?: string;\n getAccessToken?: (options?: { forceRefresh?: boolean }) => string | Promise<string>;\n timeoutMs: number;\n pollIntervalMs: number;\n pollMaxIntervalMs: number;\n fetchImpl: typeof fetch;\n headers: Record<string, string>;\n}\n\nexport function resolveConfig(config: DocmanaConfig): ResolvedConfig {\n if (!config.apiBaseUrl) throw new Error(\"DocmanaConfig.apiBaseUrl is required\");\n if (!config.accessToken && !config.getAccessToken) {\n throw new Error(\"DocmanaConfig.accessToken or DocmanaConfig.getAccessToken is required\");\n }\n const apiBaseUrl = normalizeApiBaseUrl(config.apiBaseUrl);\n return {\n apiBaseUrl,\n accessToken: config.accessToken,\n getAccessToken: config.getAccessToken,\n timeoutMs: config.timeoutMs ?? DEFAULTS.timeoutMs,\n pollIntervalMs: config.pollIntervalMs ?? DEFAULTS.pollIntervalMs,\n pollMaxIntervalMs: config.pollMaxIntervalMs ?? DEFAULTS.pollMaxIntervalMs,\n fetchImpl: config.fetch ?? fetch,\n headers: config.headers ?? {},\n };\n}\n\nfunction normalizeApiBaseUrl(value: string): string {\n const trimmed = value.replace(/\\/+$/, \"\");\n return /\\/v\\d+$/i.test(trimmed) ? trimmed : `${trimmed}/v1`;\n}\n","import type { DocmanaExecutionResult } from \"./models/docmana-execution-result.model.js\";\nimport type { FraudDetectionError, FraudDetectionResult } from \"./types.js\";\n\nexport class DocmanaError extends Error {\n readonly status?: number;\n readonly requestId?: string;\n readonly code: string;\n constructor(message: string, opts: { status?: number; requestId?: string; code?: string } = {}) {\n super(message);\n this.name = new.target.name;\n this.status = opts.status;\n this.requestId = opts.requestId;\n this.code = opts.code ?? \"docmana_error\";\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class DocmanaAuthError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"auth_error\" });\n }\n}\n\nexport class DocmanaPermissionError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"permission_error\" });\n }\n}\n\nexport class DocmanaNotFoundError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"not_found\" });\n }\n}\n\nexport class DocmanaRequestError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"bad_request\" });\n }\n}\n\nexport class DocmanaExecutionError extends DocmanaError {\n readonly errors: unknown[];\n readonly result?: DocmanaExecutionResult;\n constructor(message: string, errors: unknown[] = [], result?: DocmanaExecutionResult) {\n super(message, { code: \"execution_failed\" });\n this.errors = errors;\n this.result = result;\n }\n}\n\nexport class DocmanaFraudDetectionError extends DocmanaError {\n readonly jobId: string;\n readonly error?: FraudDetectionError;\n readonly result: FraudDetectionResult;\n constructor(message: string, result: FraudDetectionResult) {\n super(message, { code: \"fraud_detection_failed\" });\n this.jobId = result.jobId;\n this.error = result.error;\n this.result = result;\n }\n}\n\nexport class DocmanaTimeoutError extends DocmanaError {\n constructor(message: string) {\n super(message, { code: \"timeout\" });\n }\n}\n\nexport class DocmanaAbortError extends DocmanaError {\n constructor(message: string) {\n super(message, { code: \"aborted\" });\n }\n}\n\nexport class DocmanaRateLimitError extends DocmanaError {\n readonly retryAfterMs?: number;\n constructor(\n message: string,\n opts: { status?: number; requestId?: string; retryAfterMs?: number } = {},\n ) {\n super(message, { ...opts, code: \"rate_limited\" });\n this.retryAfterMs = opts.retryAfterMs;\n }\n}\n\nexport function errorFromResponse(\n status: number,\n message: string,\n requestId?: string,\n retryAfterMs?: number,\n): DocmanaError {\n const opts = { status, requestId };\n switch (status) {\n case 400:\n return new DocmanaRequestError(message, opts);\n case 401:\n return new DocmanaAuthError(message, opts);\n case 403:\n return new DocmanaPermissionError(message, opts);\n case 404:\n return new DocmanaNotFoundError(message, opts);\n case 429:\n return new DocmanaRateLimitError(message, { ...opts, retryAfterMs });\n default:\n return new DocmanaError(message, opts);\n }\n}\n","import { DocmanaError, DocmanaAbortError, errorFromResponse } from \"../errors.js\";\n\nexport interface HttpClientOptions {\n apiBaseUrl: string;\n fetchImpl: typeof fetch;\n accessToken?: string;\n getAccessToken?: (options?: { forceRefresh?: boolean }) => string | Promise<string>;\n headers?: Record<string, string>;\n}\n\ntype FetchBody = NonNullable<Parameters<typeof fetch>[1]>[\"body\"];\n\nexport interface RequestOptions {\n query?: Record<string, string>;\n body?: FetchBody;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n}\n\nexport interface BytesResponse {\n bytes: Uint8Array;\n headers: Headers;\n}\n\nexport class HttpClient {\n constructor(private readonly opts: HttpClientOptions) {}\n\n async requestJson<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const res = await this.requestRaw(method, path, options);\n const text = await res.text();\n if (!text) return {} as T;\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new DocmanaError(\"Invalid JSON response from Docmana\", { status: res.status });\n }\n }\n\n async requestBytes(\n method: string,\n path: string,\n options: RequestOptions = {},\n ): Promise<BytesResponse> {\n const res = await this.requestRaw(method, path, options);\n return { bytes: new Uint8Array(await res.arrayBuffer()), headers: res.headers };\n }\n\n async requestRaw(method: string, path: string, options: RequestOptions = {}): Promise<Response> {\n let res = await this.send(method, path, options);\n if (res.status === 401 && this.opts.getAccessToken) {\n res = await this.send(method, path, options, true);\n }\n if (!res.ok) {\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const message = await this.extractMessage(res);\n throw errorFromResponse(\n res.status,\n message,\n requestId,\n parseRetryAfterMs(res.headers.get(\"retry-after\")),\n );\n }\n return res;\n }\n\n private async send(\n method: string,\n path: string,\n options: RequestOptions,\n forceRefresh = false,\n ): Promise<Response> {\n const token = await this.resolveToken(forceRefresh);\n const url = new URL(this.opts.apiBaseUrl + path);\n for (const [k, v] of Object.entries(options.query ?? {})) url.searchParams.set(k, v);\n const headers: Record<string, string> = {\n ...(this.opts.headers ?? {}),\n authorization: `Bearer ${token}`,\n ...(options.headers ?? {}),\n };\n try {\n return await this.opts.fetchImpl(url, {\n method,\n headers,\n body: options.body,\n signal: options.signal,\n });\n } catch (err) {\n if (options.signal?.aborted || (err instanceof Error && err.name === \"AbortError\")) {\n throw new DocmanaAbortError(\"Request aborted\");\n }\n throw err;\n }\n }\n\n private async resolveToken(forceRefresh: boolean): Promise<string> {\n const token = this.opts.getAccessToken\n ? await this.opts.getAccessToken(forceRefresh ? { forceRefresh: true } : undefined)\n : this.opts.accessToken;\n if (!token) {\n throw new DocmanaError(\"Missing Docmana access token\", { code: \"auth_missing\" });\n }\n return token;\n }\n\n private async extractMessage(res: Response): Promise<string> {\n try {\n const data = (await res.clone().json()) as { message?: string; error?: string };\n return data.message ?? data.error ?? res.statusText ?? `HTTP ${res.status}`;\n } catch {\n return res.statusText ?? `HTTP ${res.status}`;\n }\n }\n}\n\nfunction parseRetryAfterMs(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) {\n return seconds * 1000;\n }\n const retryAt = Date.parse(value);\n if (!Number.isNaN(retryAt)) {\n return Math.max(0, retryAt - Date.now());\n }\n return undefined;\n}\n","import { readFile } from \"node:fs/promises\";\nimport { basename } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport type { FileInput } from \"../types.js\";\n\nexport interface ResolvedPart {\n data: Blob;\n filename: string;\n contentType: string;\n}\n\nconst CONTENT_TYPES: Record<string, string> = {\n \".pdf\": \"application/pdf\",\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".tif\": \"image/tiff\",\n \".tiff\": \"image/tiff\",\n \".txt\": \"text/plain\",\n \".json\": \"application/json\",\n};\n\nfunction contentTypeFor(name: string): string {\n const dot = name.lastIndexOf(\".\");\n if (dot < 0) return \"application/octet-stream\";\n const ext = name.slice(dot).toLowerCase();\n return CONTENT_TYPES[ext] ?? \"application/octet-stream\";\n}\n\nfunction isReadable(x: unknown): x is Readable {\n return typeof x === \"object\" && x !== null && typeof (x as Readable).pipe === \"function\";\n}\n\nfunction isPathInput(x: unknown): x is { path: string } {\n return typeof x === \"object\" && x !== null && typeof (x as { path?: unknown }).path === \"string\";\n}\n\nfunction isNamedFileInput(\n x: unknown,\n): x is { data: Uint8Array | Readable; filename: string; contentType?: string } {\n if (typeof x !== \"object\" || x === null) return false;\n const value = x as { data?: unknown; filename?: unknown };\n return (\n typeof value.filename === \"string\" &&\n (value.data instanceof Uint8Array || isReadable(value.data))\n );\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) chunks.push(Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nfunction toBlobBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer> {\n return new Uint8Array(bytes);\n}\n\nasync function resolveOne(input: FileInput): Promise<ResolvedPart> {\n if (typeof input === \"string\" || isPathInput(input)) {\n const path = typeof input === \"string\" ? input : input.path;\n const data = await readFile(path);\n const filename = basename(path);\n return { data: new Blob([toBlobBytes(data)]), filename, contentType: contentTypeFor(filename) };\n }\n if (isNamedFileInput(input)) {\n const bytes = input.data instanceof Uint8Array ? input.data : await streamToBuffer(input.data);\n return {\n data: new Blob([toBlobBytes(bytes)]),\n filename: input.filename,\n contentType: input.contentType ?? contentTypeFor(input.filename),\n };\n }\n throw new Error(\"Unsupported file input type\");\n}\n\nexport async function resolveInputs(input: { files: FileInput[] }): Promise<ResolvedPart[]> {\n const list: FileInput[] = input.files;\n if (list.length === 0) throw new Error(\"runFlow requires `files`\");\n return Promise.all(list.map((item) => resolveOne(item)));\n}\n","import type { ResolvedPart } from \"../files/resolve-input.js\";\nimport type { HttpClient } from \"../http/http-client.js\";\n\nexport async function runFlow(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n signal?: AbortSignal,\n useDraftVersion = false,\n context?: Record<string, unknown>,\n callbackUrl?: string,\n language?: string,\n organization?: string,\n): Promise<{ executionResultId: string; fileIds: string[] }> {\n const form = new FormData();\n for (const part of parts) {\n form.append(\"files\", new File([part.data], part.filename, { type: part.contentType }));\n }\n if (context !== undefined) form.append(\"jsonContext\", JSON.stringify(context));\n if (callbackUrl !== undefined) form.append(\"callbackUrl\", callbackUrl);\n if (language !== undefined) form.append(\"language\", language);\n if (useDraftVersion) form.append(\"useDraftVersion\", \"true\");\n\n const path = `/flows/${flowId}/execute-async`;\n return http.requestJson<{ executionResultId: string; fileIds: string[] }>(\n \"POST\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n { body: form, signal },\n );\n}\n","import type { ResolvedPart } from \"../files/resolve-input.js\";\nimport type { HttpClient } from \"../http/http-client.js\";\nimport type {\n DocmanaExecutionResult,\n RunPartialFlowAsyncParams,\n RunPartialFlowParams,\n} from \"../types.js\";\n\nfunction buildRequest(\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowParams,\n asyncMode: boolean,\n): { path: string; form: FormData } {\n const form = new FormData();\n for (const part of parts) {\n form.append(\"files\", new File([part.data], part.filename, { type: part.contentType }));\n }\n if (params.context !== undefined) form.append(\"jsonContext\", JSON.stringify(params.context));\n\n form.append(\"executionScope\", params.executionScope);\n if (params.flowVersion !== undefined) form.append(\"flowVersion\", params.flowVersion);\n for (const name of params.classificationNodeNames ?? []) {\n form.append(\"classificationNodeNames\", name);\n }\n\n const suffix = asyncMode ? \"partial-execute-async\" : \"partial-execute\";\n const path = `/flows/${flowId}/${suffix}`;\n return {\n path: params.organization\n ? `${path}?organization=${encodeURIComponent(params.organization)}`\n : path,\n form,\n };\n}\n\nexport async function runPartialFlow(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowParams,\n signal?: AbortSignal,\n): Promise<DocmanaExecutionResult> {\n const { path, form } = buildRequest(flowId, parts, params, false);\n return http.requestJson<DocmanaExecutionResult>(\"POST\", path, { body: form, signal });\n}\n\nexport async function runPartialFlowAsync(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowAsyncParams,\n signal?: AbortSignal,\n): Promise<{ executionResultId: string; fileIds: string[] }> {\n const { path, form } = buildRequest(flowId, parts, params, true);\n if (params.callbackUrl !== undefined) form.append(\"callbackUrl\", params.callbackUrl);\n if (params.language !== undefined) form.append(\"language\", params.language);\n return http.requestJson<{ executionResultId: string; fileIds: string[] }>(\"POST\", path, {\n body: form,\n signal,\n });\n}\n","export function normalizeStatus(status: unknown, fallback = \"UNKNOWN\"): string {\n if (typeof status !== \"string\") return fallback;\n const trimmed = status.trim();\n if (!trimmed) return fallback;\n return trimmed\n .replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n .replace(/[\\s-]+/g, \"_\")\n .toUpperCase();\n}\n\nexport function isFailedStatus(status: string): boolean {\n return normalizeStatus(status) === \"FAILED\";\n}\n\nexport function isTerminalStatus(status: string): boolean {\n const normalized = normalizeStatus(status);\n return normalized === \"COMPLETED\" || normalized === \"FAILED\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { ExecutionStatus } from \"../types.js\";\nimport { normalizeStatus, isTerminalStatus } from \"../status.js\";\n\nexport async function getStatus(\n http: HttpClient,\n executionResultId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<{ status: ExecutionStatus | string; pollAfterMs?: number }> {\n const res = await http.requestRaw(\"GET\", `/executions/${executionResultId}/status`, {\n query: organization ? { organization } : undefined,\n signal,\n });\n const text = await res.text();\n const body = text ? (JSON.parse(text) as { status: ExecutionStatus | string }) : { status: \"\" };\n const normalizedBody = { ...body, status: normalizeStatus(body.status) };\n const pollAfterMs = parsePositiveInt(res.headers.get(\"x-poll-after\"));\n // Diagnostic (execution-hang): opt-in via DOCMANA_SDK_DEBUG. Shows the raw status\n // string returned by the edge vs the normalized value + terminal decision, so we\n // can see why a poll never terminates (e.g. a non-terminal status looping forever).\n if (typeof process !== \"undefined\" && process.env?.DOCMANA_SDK_DEBUG) {\n console.log(\n `[docmana-sdk][status-diag] execution=${executionResultId} rawEdgeStatus=${JSON.stringify(\n body.status,\n )} normalized=${normalizedBody.status} terminal=${isTerminalStatus(normalizedBody.status)}`,\n );\n }\n return pollAfterMs === undefined ? normalizedBody : { ...normalizedBody, pollAfterMs };\n}\n\nfunction parsePositiveInt(value: string | null): number | undefined {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { DocmanaExecutionResult } from \"../types.js\";\n\nexport async function getResult(\n http: HttpClient,\n executionResultId: string,\n signal?: AbortSignal,\n language?: string,\n organization?: string,\n): Promise<DocmanaExecutionResult> {\n const query: Record<string, string> = {};\n if (language) query.language = language;\n if (organization) query.organization = organization;\n return http.requestJson(\"GET\", `/executions/${executionResultId}/result`, {\n query: Object.keys(query).length > 0 ? query : undefined,\n signal,\n });\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport { resolveInputs } from \"../files/resolve-input.js\";\nimport type {\n FraudDetectionAccepted,\n FraudDetectionParams,\n FraudDetectionResult,\n FraudDetectionStatusResult,\n} from \"../types.js\";\nimport { normalizeStatus } from \"../status.js\";\n\nexport async function startFraudDetection(\n http: HttpClient,\n params: FraudDetectionParams,\n signal?: AbortSignal,\n): Promise<FraudDetectionAccepted> {\n if (params.file !== undefined) {\n const [part] = await resolveInputs({ files: [params.file] });\n const form = new FormData();\n form.append(\"file\", new File([part.data], part.filename, { type: part.contentType }));\n if (params.analystContext !== undefined) {\n form.append(\"analystContext\", params.analystContext);\n }\n return http.requestJson(\"POST\", \"/fraud-detections\", {\n body: form,\n signal,\n });\n }\n\n return http.requestJson(\"POST\", \"/fraud-detections\", {\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n documentUrl: params.documentUrl,\n filename: params.filename,\n ...(params.analystContext === undefined ? {} : { analystContext: params.analystContext }),\n }),\n signal,\n });\n}\n\nexport async function getFraudDetectionStatus(\n http: HttpClient,\n jobId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<FraudDetectionStatusResult> {\n void organization;\n const res = await http.requestRaw(\n \"GET\",\n `/fraud-detections/${encodeURIComponent(jobId)}/status`,\n {\n signal,\n },\n );\n const text = await res.text();\n const body = text\n ? (JSON.parse(text) as FraudDetectionStatusResult)\n : ({ jobId, status: \"\" } as unknown as FraudDetectionStatusResult);\n const normalized = {\n ...body,\n status: normalizeStatus(body.status),\n } as FraudDetectionStatusResult;\n const pollAfterMs = parsePositiveInt(res.headers.get(\"x-poll-after\"));\n return pollAfterMs === undefined ? normalized : { ...normalized, pollAfterMs };\n}\n\nexport async function getFraudDetectionResult(\n http: HttpClient,\n jobId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<FraudDetectionResult> {\n void organization;\n return http.requestJson(\"GET\", `/fraud-detections/${encodeURIComponent(jobId)}/result`, {\n signal,\n });\n}\n\nfunction parsePositiveInt(value: string | null): number | undefined {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowListItem } from \"../types.js\";\n\nexport async function listFlows(http: HttpClient, organization?: string): Promise<FlowListItem[]> {\n const path = organization ? `/flows?organization=${encodeURIComponent(organization)}` : \"/flows\";\n const flows = await http.requestJson<unknown>(\"GET\", path);\n return Array.isArray(flows) ? flows.map(toFlowListItem) : [];\n}\n\nfunction toFlowListItem(flow: unknown): FlowListItem {\n const value = flow && typeof flow === \"object\" ? (flow as Record<string, unknown>) : {};\n const item: FlowListItem = {\n id: toStringValue(value.id),\n name: toStringValue(value.name),\n state: toStateValue(value.state),\n };\n if (typeof value.organization === \"string\") {\n item.organization = value.organization;\n }\n return item;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction toStateValue(value: unknown): string {\n return typeof value === \"string\" && value.trim() ? value : \"unknown\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { AccessibleOrganization } from \"../types.js\";\n\nexport async function listOrganizations(http: HttpClient): Promise<AccessibleOrganization[]> {\n const organizations = await http.requestJson<unknown>(\"GET\", \"/organizations\");\n return Array.isArray(organizations)\n ? organizations.map(toAccessibleOrganization).filter(isAccessibleOrganization)\n : [];\n}\n\nfunction toAccessibleOrganization(organization: unknown): AccessibleOrganization | undefined {\n const value =\n organization && typeof organization === \"object\"\n ? (organization as Record<string, unknown>)\n : {};\n const id = toStringValue(value.id).trim();\n if (!id) return undefined;\n const name = toStringValue(value.name).trim() || id;\n\n return {\n id,\n name,\n };\n}\n\nfunction isAccessibleOrganization(\n organization: AccessibleOrganization | undefined,\n): organization is AccessibleOrganization {\n return organization !== undefined;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowMetadata } from \"../types.js\";\n\nexport async function getFlowMetadata(\n http: HttpClient,\n flowId: string,\n organization?: string,\n): Promise<FlowMetadata> {\n const path = `/flows/${encodeURIComponent(flowId)}/metadata`;\n return http.requestJson<FlowMetadata>(\n \"GET\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n );\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowDefinition } from \"../types.js\";\n\nexport async function getFlowDefinition(\n http: HttpClient,\n flowId: string,\n organization?: string,\n): Promise<FlowDefinition> {\n const path = `/flows/${encodeURIComponent(flowId)}/definition`;\n return http.requestJson<FlowDefinition>(\n \"GET\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n );\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type {\n DownloadedOrganizationDocument,\n OrganizationDocument,\n OrganizationDocumentsPayload,\n} from \"../types.js\";\n\nexport async function listOrganizationDocuments(\n http: HttpClient,\n options: { prefix?: string; organization?: string } = {},\n): Promise<OrganizationDocumentsPayload> {\n const query: Record<string, string> = {};\n if (options.prefix) query.prefix = options.prefix;\n if (options.organization) query.organization = options.organization;\n const result = await http.requestJson<unknown>(\"GET\", \"/organization-documents\", {\n query: Object.keys(query).length ? query : undefined,\n });\n const value = result && typeof result === \"object\" ? (result as Record<string, unknown>) : {};\n return {\n configured: value.configured === true,\n documents: Array.isArray(value.documents)\n ? value.documents.map(toOrganizationDocument).filter(isOrganizationDocument)\n : [],\n };\n}\n\nexport async function downloadOrganizationDocument(\n http: HttpClient,\n path: string,\n organization?: string,\n): Promise<DownloadedOrganizationDocument> {\n const query: Record<string, string> = { path };\n if (organization) query.organization = organization;\n const result = await http.requestBytes(\"GET\", \"/organization-documents/download\", {\n query,\n });\n return {\n bytes: result.bytes,\n filename: filenameFromHeaders(result.headers) ?? filenameFromPath(path),\n contentType: result.headers.get(\"content-type\") || undefined,\n };\n}\n\nexport async function downloadOrganizationDocuments(\n http: HttpClient,\n paths: string[],\n organization?: string,\n): Promise<DownloadedOrganizationDocument[]> {\n return Promise.all(paths.map((path) => downloadOrganizationDocument(http, path, organization)));\n}\n\nfunction toOrganizationDocument(document: unknown): OrganizationDocument | undefined {\n const value =\n document && typeof document === \"object\" ? (document as Record<string, unknown>) : {};\n const path = toStringValue(value.path).trim();\n if (!path) return undefined;\n const contentType = toStringValue(value.contentType).trim();\n return {\n path,\n name: toStringValue(value.name).trim() || filenameFromPath(path),\n size: toNumberValue(value.size),\n lastModified: toStringValue(value.lastModified).trim(),\n ...(contentType ? { contentType } : {}),\n };\n}\n\nfunction isOrganizationDocument(\n document: OrganizationDocument | undefined,\n): document is OrganizationDocument {\n return document !== undefined;\n}\n\nfunction filenameFromHeaders(headers: Headers): string | undefined {\n const disposition = headers.get(\"content-disposition\");\n if (!disposition) return undefined;\n const utf8 = /filename\\*=UTF-8''([^;]+)/i.exec(disposition);\n if (utf8?.[1]) return decodeURIComponent(utf8[1]);\n const quoted = /filename=\"([^\"]+)\"/i.exec(disposition);\n if (quoted?.[1]) return quoted[1];\n const plain = /filename=([^;]+)/i.exec(disposition);\n return plain?.[1]?.trim();\n}\n\nfunction filenameFromPath(path: string): string {\n return path.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean).pop() || path;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction toNumberValue(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n","import { DocmanaTimeoutError, DocmanaAbortError, DocmanaRateLimitError } from \"../errors.js\";\nimport { isTerminalStatus, normalizeStatus } from \"../status.js\";\n\nexport interface PollCheckResult {\n status: string;\n nextDelayMs?: number;\n}\n\nexport interface PollOptions {\n check: () => Promise<string | PollCheckResult>;\n intervalMs: number;\n maxIntervalMs: number;\n timeoutMs: number;\n sleep?: (ms: number) => Promise<void>;\n elapsed?: () => number;\n random?: () => number;\n signal?: AbortSignal;\n shouldRetryError?: (error: unknown) => boolean;\n}\n\nconst defaultSleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));\n\nexport async function pollUntilTerminal(opts: PollOptions): Promise<string> {\n const sleep = opts.sleep ?? defaultSleep;\n const start = Date.now();\n const elapsed = opts.elapsed ?? (() => Date.now() - start);\n const random = opts.random ?? Math.random;\n let fallbackAttempt = 0;\n for (;;) {\n if (opts.signal?.aborted) throw new DocmanaAbortError(\"Polling aborted\");\n let result: PollCheckResult;\n try {\n result = normalizePollResult(await opts.check());\n } catch (err) {\n const retryAfterMs =\n err instanceof DocmanaRateLimitError\n ? (err.retryAfterMs ?? opts.intervalMs)\n : opts.shouldRetryError?.(err)\n ? fullJitterDelay(opts.intervalMs, opts.maxIntervalMs, fallbackAttempt, random)\n : undefined;\n if (retryAfterMs === undefined) throw err;\n if (elapsed() >= opts.timeoutMs) {\n throw new DocmanaTimeoutError(`Execution did not finish within ${opts.timeoutMs}ms`);\n }\n fallbackAttempt += 1;\n await sleep(retryAfterMs);\n continue;\n }\n const status = normalizeStatus(result.status);\n if (isTerminalStatus(status)) return status;\n if (elapsed() >= opts.timeoutMs) {\n throw new DocmanaTimeoutError(`Execution did not finish within ${opts.timeoutMs}ms`);\n }\n const fallbackDelay = fullJitterDelay(\n opts.intervalMs,\n opts.maxIntervalMs,\n fallbackAttempt,\n random,\n );\n fallbackAttempt += 1;\n await sleep(result.nextDelayMs ?? fallbackDelay);\n }\n}\n\nfunction normalizePollResult(result: string | PollCheckResult): PollCheckResult {\n return typeof result === \"string\" ? { status: result } : result;\n}\n\nfunction fullJitterDelay(\n intervalMs: number,\n maxIntervalMs: number,\n attempt: number,\n random: () => number,\n): number {\n const capDelay = Math.min(maxIntervalMs, intervalMs * 2 ** attempt);\n return Math.round(intervalMs + random() * (capDelay - intervalMs));\n}\n","import { resolveConfig } from \"./config.js\";\nimport type { ResolvedConfig } from \"./config.js\";\nimport type {\n AccessibleOrganization,\n DocmanaConfig,\n DocmanaExecutionResult,\n DownloadedOrganizationDocument,\n ExecutionStatus,\n FraudDetectionAccepted,\n FraudDetectionAsyncOptions,\n FraudDetectionOptions,\n FraudDetectionParams,\n FraudDetectionResult,\n FraudDetectionStatusResult,\n FlowDefinition,\n FlowListItem,\n FlowMetadata,\n OrganizationDocumentsPayload,\n RunFlowAsyncParams,\n RunFlowAsyncOptions,\n RunFlowOptions,\n RunFlowParams,\n RunPartialFlowAsyncParams,\n RunPartialFlowOptions,\n RunPartialFlowParams,\n} from \"./types.js\";\nimport { HttpClient } from \"./http/http-client.js\";\nimport { resolveInputs } from \"./files/resolve-input.js\";\nimport { runFlow as runFlowApi } from \"./api/run-flow.js\";\nimport {\n runPartialFlow as runPartialFlowApi,\n runPartialFlowAsync as runPartialFlowAsyncApi,\n} from \"./api/run-partial-flow.js\";\nimport { getStatus as getStatusApi } from \"./api/execution-status.js\";\nimport { getResult as getResultApi } from \"./api/execution-result.js\";\nimport {\n getFraudDetectionResult as getFraudDetectionResultApi,\n getFraudDetectionStatus as getFraudDetectionStatusApi,\n startFraudDetection as startFraudDetectionApi,\n} from \"./api/fraud-detection.js\";\nimport { listFlows as listFlowsApi } from \"./api/list-flows.js\";\nimport { listOrganizations as listOrganizationsApi } from \"./api/list-organizations.js\";\nimport { getFlowMetadata as getFlowMetadataApi } from \"./api/flow-metadata.js\";\nimport { getFlowDefinition as getFlowDefinitionApi } from \"./api/flow-definition.js\";\nimport {\n downloadOrganizationDocument as downloadOrganizationDocumentApi,\n downloadOrganizationDocuments as downloadOrganizationDocumentsApi,\n listOrganizationDocuments as listOrganizationDocumentsApi,\n} from \"./api/organization-documents.js\";\nimport { pollUntilTerminal } from \"./polling/poll.js\";\nimport {\n DocmanaError,\n DocmanaExecutionError,\n DocmanaFraudDetectionError,\n DocmanaRateLimitError,\n} from \"./errors.js\";\nimport { isFailedStatus, isTerminalStatus } from \"./status.js\";\n\nexport class Docmana {\n private readonly config: ResolvedConfig;\n private readonly http: HttpClient;\n\n constructor(config: DocmanaConfig) {\n this.config = resolveConfig(config);\n this.http = new HttpClient({\n apiBaseUrl: this.config.apiBaseUrl,\n fetchImpl: this.config.fetchImpl,\n accessToken: this.config.accessToken,\n getAccessToken: this.config.getAccessToken,\n headers: this.config.headers,\n });\n }\n\n async runFlowAsync(\n flowId: string,\n params: RunFlowAsyncParams,\n options: RunFlowAsyncOptions = {},\n ): Promise<{ executionResultId: string; fileIds: string[] }> {\n const parts = await resolveInputs(params);\n return runFlowApi(\n this.http,\n flowId,\n parts,\n options.signal,\n params.useDraftVersion ?? false,\n params.context,\n params.callbackUrl,\n params.language,\n params.organization,\n );\n }\n\n async detectFraudAsync(\n params: FraudDetectionParams,\n options: FraudDetectionAsyncOptions = {},\n ): Promise<FraudDetectionAccepted> {\n return startFraudDetectionApi(this.http, params, options.signal);\n }\n\n async getFraudDetectionStatus(\n jobId: string,\n signal?: AbortSignal,\n /** @deprecated Fraud jobs are not organization-scoped. */\n organization?: string,\n ): Promise<FraudDetectionStatusResult> {\n return getFraudDetectionStatusApi(this.http, jobId, signal, organization);\n }\n\n async getFraudDetectionResult(\n jobId: string,\n signal?: AbortSignal,\n /** @deprecated Fraud jobs are not organization-scoped. */\n organization?: string,\n ): Promise<FraudDetectionResult> {\n return getFraudDetectionResultApi(this.http, jobId, signal, organization);\n }\n\n async detectFraud(\n params: FraudDetectionParams,\n options: FraudDetectionOptions = {},\n ): Promise<FraudDetectionResult> {\n const { jobId } = await this.detectFraudAsync(params, { signal: options.signal });\n let attempt = 0;\n const startedAt = Date.now();\n await pollUntilTerminal({\n check: async () => {\n attempt += 1;\n try {\n const statusResult = await this.getFraudDetectionStatus(jobId, options.signal);\n const nextPollAfterMs = isTerminalStatus(statusResult.status)\n ? undefined\n : statusResult.pollAfterMs;\n options.onPoll?.({\n jobId,\n status: statusResult.status,\n attempt,\n elapsedMs: Date.now() - startedAt,\n nextPollAfterMs,\n });\n return { status: statusResult.status, nextDelayMs: nextPollAfterMs };\n } catch (err) {\n if (err instanceof DocmanaRateLimitError) {\n options.onRateLimit?.({\n jobId,\n attempt,\n elapsedMs: Date.now() - startedAt,\n retryAfterMs:\n err.retryAfterMs ?? options.pollIntervalMs ?? this.config.pollIntervalMs,\n });\n }\n throw err;\n }\n },\n intervalMs: options.pollIntervalMs ?? this.config.pollIntervalMs,\n maxIntervalMs: options.pollMaxIntervalMs ?? this.config.pollMaxIntervalMs,\n timeoutMs: options.timeoutMs ?? this.config.timeoutMs,\n signal: options.signal,\n shouldRetryError: isTransientPollingError,\n });\n const result = await this.getFraudDetectionResult(jobId, options.signal);\n if (isFailedStatus(result.status)) {\n throw new DocmanaFraudDetectionError(\n result.error?.message ?? `Fraud detection ${jobId} failed`,\n result,\n );\n }\n return result;\n }\n\n async runPartialFlow(\n flowId: string,\n params: RunPartialFlowParams,\n options: RunPartialFlowOptions = {},\n ): Promise<DocmanaExecutionResult> {\n const parts = await resolveInputs(params);\n return runPartialFlowApi(this.http, flowId, parts, params, options.signal);\n }\n\n async runPartialFlowAsync(\n flowId: string,\n params: RunPartialFlowAsyncParams,\n options: RunPartialFlowOptions = {},\n ): Promise<{ executionResultId: string; fileIds: string[] }> {\n const parts = await resolveInputs(params);\n return runPartialFlowAsyncApi(this.http, flowId, parts, params, options.signal);\n }\n\n async getStatus(\n executionResultId: string,\n signal?: AbortSignal,\n organization?: string,\n ): Promise<{ status: ExecutionStatus | string; pollAfterMs?: number }> {\n return getStatusApi(this.http, executionResultId, signal, organization);\n }\n\n async getResult(\n executionResultId: string,\n signal?: AbortSignal,\n language?: string,\n organization?: string,\n ): Promise<DocmanaExecutionResult> {\n return getResultApi(this.http, executionResultId, signal, language, organization);\n }\n\n async runFlow(\n flowId: string,\n params: RunFlowParams,\n options: RunFlowOptions = {},\n ): Promise<DocmanaExecutionResult> {\n const { executionResultId } = await this.runFlowAsync(flowId, params, {\n signal: options.signal,\n });\n let attempt = 0;\n const startedAt = Date.now();\n await pollUntilTerminal({\n check: async () => {\n attempt += 1;\n try {\n const statusResult = await this.getStatus(\n executionResultId,\n options.signal,\n params.organization,\n );\n const status = statusResult.status;\n const nextPollAfterMs = this.isTerminalStatus(status)\n ? undefined\n : statusResult.pollAfterMs;\n options.onPoll?.({\n executionResultId,\n status,\n attempt,\n elapsedMs: Date.now() - startedAt,\n nextPollAfterMs,\n });\n return { status, nextDelayMs: nextPollAfterMs };\n } catch (err) {\n if (err instanceof DocmanaRateLimitError) {\n options.onRateLimit?.({\n executionResultId,\n attempt,\n elapsedMs: Date.now() - startedAt,\n retryAfterMs:\n err.retryAfterMs ?? options.pollIntervalMs ?? this.config.pollIntervalMs,\n });\n }\n throw err;\n }\n },\n intervalMs: options.pollIntervalMs ?? this.config.pollIntervalMs,\n maxIntervalMs: options.pollMaxIntervalMs ?? this.config.pollMaxIntervalMs,\n timeoutMs: options.timeoutMs ?? this.config.timeoutMs,\n signal: options.signal,\n });\n const result = await this.getResult(\n executionResultId,\n options.signal,\n params.language,\n params.organization,\n );\n if (isFailedStatus(result.status)) {\n throw new DocmanaExecutionError(\n `Flow ${flowId} execution failed`,\n result.errors ?? [],\n result,\n );\n }\n return result;\n }\n\n async listFlows(options: { organization?: string } = {}): Promise<FlowListItem[]> {\n return listFlowsApi(this.http, options.organization);\n }\n\n async listOrganizations(): Promise<AccessibleOrganization[]> {\n return listOrganizationsApi(this.http);\n }\n\n async getFlowMetadata(\n flowId: string,\n options: { organization?: string } = {},\n ): Promise<FlowMetadata> {\n return getFlowMetadataApi(this.http, flowId, options.organization);\n }\n\n async getFlowDefinition(\n flowId: string,\n options: { organization?: string } = {},\n ): Promise<FlowDefinition> {\n return getFlowDefinitionApi(this.http, flowId, options.organization);\n }\n\n async listOrganizationDocuments(\n options: { prefix?: string; organization?: string } = {},\n ): Promise<OrganizationDocumentsPayload> {\n return listOrganizationDocumentsApi(this.http, options);\n }\n\n async downloadOrganizationDocument(\n path: string,\n organization?: string,\n ): Promise<DownloadedOrganizationDocument> {\n return downloadOrganizationDocumentApi(this.http, path, organization);\n }\n\n async downloadOrganizationDocuments(\n paths: string[],\n organization?: string,\n ): Promise<DownloadedOrganizationDocument[]> {\n return downloadOrganizationDocumentsApi(this.http, paths, organization);\n }\n\n private isTerminalStatus(status: string): boolean {\n return isTerminalStatus(status);\n }\n}\n\nfunction isTransientPollingError(error: unknown): boolean {\n if (error instanceof DocmanaRateLimitError) return false;\n if (error instanceof DocmanaError) {\n return error.status !== undefined && error.status >= 500;\n }\n return error instanceof TypeError;\n}\n"],"mappings":"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","names":["parsePositiveInt","toStringValue","toStringValue"]}
|
|
1
|
+
{"version":3,"sources":["../src/sdk/index.ts","../src/sdk/config.ts","../src/sdk/errors.ts","../src/sdk/http/http-client.ts","../src/sdk/files/resolve-input.ts","../src/sdk/api/run-flow.ts","../src/sdk/api/run-partial-flow.ts","../src/sdk/status.ts","../src/sdk/api/execution-status.ts","../src/sdk/api/execution-result.ts","../src/sdk/api/fraud-detection.ts","../src/sdk/api/list-flows.ts","../src/sdk/api/list-organizations.ts","../src/sdk/api/flow-metadata.ts","../src/sdk/api/flow-definition.ts","../src/sdk/api/organization-documents.ts","../src/sdk/polling/poll.ts","../src/sdk/client.ts"],"sourcesContent":["export { Docmana } from \"./client.js\";\nexport {\n DocmanaError,\n DocmanaAuthError,\n DocmanaRequestError,\n DocmanaPermissionError,\n DocmanaNotFoundError,\n DocmanaExecutionError,\n DocmanaFraudDetectionError,\n DocmanaTimeoutError,\n DocmanaAbortError,\n} from \"./errors.js\";\nexport type {\n AccessibleOrganization,\n DownloadedOrganizationDocument,\n DocmanaConfig,\n FlowDefinition,\n FlowDefinitionField,\n FlowDefinitionNode,\n FlowDefinitionNodeMetadata,\n FlowDocumentRequirement,\n FlowListItem,\n FlowMetadata,\n FraudDetectionAccepted,\n FraudDetectionAsyncOptions,\n FraudDetectionBaseParams,\n FraudDetectionError,\n FraudDetectionFileParams,\n FraudDetectionOptions,\n FraudDetectionParams,\n FraudDetectionResult,\n FraudDetectionStatus,\n FraudDetectionStatusResult,\n FraudDetectionSummary,\n FraudDetectionUrlParams,\n FraudDetectionVerdict,\n FraudFinding,\n FraudFindingLocation,\n FraudFindingSeverity,\n FraudSeverityCounts,\n OrganizationDocument,\n OrganizationDocumentsPayload,\n PartialExecutionFlowVersion,\n PartialExecutionMetadata,\n PartialExecutionScope,\n RunFlowAsyncParams,\n RunFlowAsyncOptions,\n RunFlowOptions,\n RunFlowParams,\n RunPartialFlowAsyncParams,\n RunPartialFlowOptions,\n RunPartialFlowParams,\n FileInput,\n NamedFileInput,\n PathFileInput,\n DocmanaExecutionResult,\n DocmanaExecutionVerdict,\n ExecutionStatus,\n DocmanaDocumentMapping,\n DocmanaDocumentResult,\n DocmanaNodeResult,\n DocmanaScoreNodeResult,\n DocmanaCrossValidationResult,\n DocmanaConclusionResult,\n DocmanaClassificationResult,\n DocmanaMetadataExtractionResult,\n DocmanaExtractionResult,\n DocmanaValidationResult,\n DocmanaPreprocessingResult,\n} from \"./types.js\";\nexport type {\n ExecutionProgress,\n VirtualDocument,\n PhysicalDocument,\n DocumentContent,\n FlowNodeType,\n FlowConfigs,\n FlowNode,\n FlowEdge,\n Flow,\n NodeTranslationResult,\n DocmanaApiExecutionResult,\n DocmanaApiNodeResult,\n DocmanaApiDocumentExecutionResult,\n DocmanaApiDocumentRequest,\n DocmanaApiPreprocessDocumentResult,\n} from \"./models/index.js\";\n","import type { DocmanaConfig } from \"./types.js\";\n\nexport const DEFAULTS = {\n tokenEndpoint:\n \"https://4fe70f5b-e013-4f65-9fa7-3109a33beba5.ciamlogin.com/4fe70f5b-e013-4f65-9fa7-3109a33beba5/oauth2/v2.0/token\",\n scope: \"api://d781e6ba-cc08-4618-8099-ad968abd2b9e/.default\",\n timeoutMs: 300_000,\n pollIntervalMs: 2_000,\n pollMaxIntervalMs: 10_000,\n} as const;\n\nexport interface ResolvedConfig {\n apiBaseUrl: string;\n accessToken?: string;\n getAccessToken?: (options?: { forceRefresh?: boolean }) => string | Promise<string>;\n timeoutMs: number;\n pollIntervalMs: number;\n pollMaxIntervalMs: number;\n fetchImpl: typeof fetch;\n headers: Record<string, string>;\n}\n\nexport function resolveConfig(config: DocmanaConfig): ResolvedConfig {\n if (!config.apiBaseUrl) throw new Error(\"DocmanaConfig.apiBaseUrl is required\");\n if (!config.accessToken && !config.getAccessToken) {\n throw new Error(\"DocmanaConfig.accessToken or DocmanaConfig.getAccessToken is required\");\n }\n const apiBaseUrl = normalizeApiBaseUrl(config.apiBaseUrl);\n return {\n apiBaseUrl,\n accessToken: config.accessToken,\n getAccessToken: config.getAccessToken,\n timeoutMs: config.timeoutMs ?? DEFAULTS.timeoutMs,\n pollIntervalMs: config.pollIntervalMs ?? DEFAULTS.pollIntervalMs,\n pollMaxIntervalMs: config.pollMaxIntervalMs ?? DEFAULTS.pollMaxIntervalMs,\n fetchImpl: config.fetch ?? fetch,\n headers: config.headers ?? {},\n };\n}\n\nfunction normalizeApiBaseUrl(value: string): string {\n const trimmed = value.replace(/\\/+$/, \"\");\n return /\\/v\\d+$/i.test(trimmed) ? trimmed : `${trimmed}/v1`;\n}\n","import type { DocmanaExecutionResult } from \"./models/docmana-execution-result.model.js\";\nimport type { FraudDetectionError, FraudDetectionResult } from \"./types.js\";\n\nexport class DocmanaError extends Error {\n readonly status?: number;\n readonly requestId?: string;\n readonly code: string;\n constructor(message: string, opts: { status?: number; requestId?: string; code?: string } = {}) {\n super(message);\n this.name = new.target.name;\n this.status = opts.status;\n this.requestId = opts.requestId;\n this.code = opts.code ?? \"docmana_error\";\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class DocmanaAuthError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"auth_error\" });\n }\n}\n\nexport class DocmanaPermissionError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"permission_error\" });\n }\n}\n\nexport class DocmanaNotFoundError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"not_found\" });\n }\n}\n\nexport class DocmanaRequestError extends DocmanaError {\n constructor(message: string, opts: { status?: number; requestId?: string } = {}) {\n super(message, { ...opts, code: \"bad_request\" });\n }\n}\n\nexport class DocmanaExecutionError extends DocmanaError {\n readonly errors: unknown[];\n readonly result?: DocmanaExecutionResult;\n constructor(message: string, errors: unknown[] = [], result?: DocmanaExecutionResult) {\n super(message, { code: \"execution_failed\" });\n this.errors = errors;\n this.result = result;\n }\n}\n\nexport class DocmanaFraudDetectionError extends DocmanaError {\n readonly jobId: string;\n readonly error?: FraudDetectionError;\n readonly result: FraudDetectionResult;\n constructor(message: string, result: FraudDetectionResult) {\n super(message, { code: \"fraud_detection_failed\" });\n this.jobId = result.jobId;\n this.error = result.error;\n this.result = result;\n }\n}\n\nexport class DocmanaTimeoutError extends DocmanaError {\n constructor(message: string) {\n super(message, { code: \"timeout\" });\n }\n}\n\nexport class DocmanaAbortError extends DocmanaError {\n constructor(message: string) {\n super(message, { code: \"aborted\" });\n }\n}\n\nexport class DocmanaRateLimitError extends DocmanaError {\n readonly retryAfterMs?: number;\n constructor(\n message: string,\n opts: { status?: number; requestId?: string; retryAfterMs?: number } = {},\n ) {\n super(message, { ...opts, code: \"rate_limited\" });\n this.retryAfterMs = opts.retryAfterMs;\n }\n}\n\nexport function errorFromResponse(\n status: number,\n message: string,\n requestId?: string,\n retryAfterMs?: number,\n): DocmanaError {\n const opts = { status, requestId };\n switch (status) {\n case 400:\n return new DocmanaRequestError(message, opts);\n case 401:\n return new DocmanaAuthError(message, opts);\n case 403:\n return new DocmanaPermissionError(message, opts);\n case 404:\n return new DocmanaNotFoundError(message, opts);\n case 429:\n return new DocmanaRateLimitError(message, { ...opts, retryAfterMs });\n default:\n return new DocmanaError(message, opts);\n }\n}\n","import { DocmanaError, DocmanaAbortError, errorFromResponse } from \"../errors.js\";\n\nexport interface HttpClientOptions {\n apiBaseUrl: string;\n fetchImpl: typeof fetch;\n accessToken?: string;\n getAccessToken?: (options?: { forceRefresh?: boolean }) => string | Promise<string>;\n headers?: Record<string, string>;\n}\n\ntype FetchBody = NonNullable<Parameters<typeof fetch>[1]>[\"body\"];\n\nexport interface RequestOptions {\n query?: Record<string, string>;\n body?: FetchBody;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n}\n\nexport interface BytesResponse {\n bytes: Uint8Array;\n headers: Headers;\n}\n\nexport class HttpClient {\n constructor(private readonly opts: HttpClientOptions) {}\n\n async requestJson<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const res = await this.requestRaw(method, path, options);\n const text = await res.text();\n if (!text) return {} as T;\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new DocmanaError(\"Invalid JSON response from Docmana\", { status: res.status });\n }\n }\n\n async requestBytes(\n method: string,\n path: string,\n options: RequestOptions = {},\n ): Promise<BytesResponse> {\n const res = await this.requestRaw(method, path, options);\n return { bytes: new Uint8Array(await res.arrayBuffer()), headers: res.headers };\n }\n\n async requestRaw(method: string, path: string, options: RequestOptions = {}): Promise<Response> {\n let res = await this.send(method, path, options);\n if (res.status === 401 && this.opts.getAccessToken) {\n res = await this.send(method, path, options, true);\n }\n if (!res.ok) {\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const message = await this.extractMessage(res);\n throw errorFromResponse(\n res.status,\n message,\n requestId,\n parseRetryAfterMs(res.headers.get(\"retry-after\")),\n );\n }\n return res;\n }\n\n private async send(\n method: string,\n path: string,\n options: RequestOptions,\n forceRefresh = false,\n ): Promise<Response> {\n const token = await this.resolveToken(forceRefresh);\n const url = new URL(this.opts.apiBaseUrl + path);\n for (const [k, v] of Object.entries(options.query ?? {})) url.searchParams.set(k, v);\n const headers: Record<string, string> = {\n ...(this.opts.headers ?? {}),\n authorization: `Bearer ${token}`,\n ...(options.headers ?? {}),\n };\n try {\n return await this.opts.fetchImpl(url, {\n method,\n headers,\n body: options.body,\n signal: options.signal,\n });\n } catch (err) {\n if (options.signal?.aborted || (err instanceof Error && err.name === \"AbortError\")) {\n throw new DocmanaAbortError(\"Request aborted\");\n }\n throw err;\n }\n }\n\n private async resolveToken(forceRefresh: boolean): Promise<string> {\n const token = this.opts.getAccessToken\n ? await this.opts.getAccessToken(forceRefresh ? { forceRefresh: true } : undefined)\n : this.opts.accessToken;\n if (!token) {\n throw new DocmanaError(\"Missing Docmana access token\", { code: \"auth_missing\" });\n }\n return token;\n }\n\n private async extractMessage(res: Response): Promise<string> {\n try {\n const data = (await res.clone().json()) as { message?: string; error?: string };\n return data.message ?? data.error ?? res.statusText ?? `HTTP ${res.status}`;\n } catch {\n return res.statusText ?? `HTTP ${res.status}`;\n }\n }\n}\n\nfunction parseRetryAfterMs(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) {\n return seconds * 1000;\n }\n const retryAt = Date.parse(value);\n if (!Number.isNaN(retryAt)) {\n return Math.max(0, retryAt - Date.now());\n }\n return undefined;\n}\n","import { readFile } from \"node:fs/promises\";\nimport { basename } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport type { FileInput } from \"../types.js\";\n\nexport interface ResolvedPart {\n data: Blob;\n filename: string;\n contentType: string;\n}\n\nconst CONTENT_TYPES: Record<string, string> = {\n \".pdf\": \"application/pdf\",\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".tif\": \"image/tiff\",\n \".tiff\": \"image/tiff\",\n \".txt\": \"text/plain\",\n \".json\": \"application/json\",\n};\n\nfunction contentTypeFor(name: string): string {\n const dot = name.lastIndexOf(\".\");\n if (dot < 0) return \"application/octet-stream\";\n const ext = name.slice(dot).toLowerCase();\n return CONTENT_TYPES[ext] ?? \"application/octet-stream\";\n}\n\nfunction isReadable(x: unknown): x is Readable {\n return typeof x === \"object\" && x !== null && typeof (x as Readable).pipe === \"function\";\n}\n\nfunction isPathInput(x: unknown): x is { path: string } {\n return typeof x === \"object\" && x !== null && typeof (x as { path?: unknown }).path === \"string\";\n}\n\nfunction isNamedFileInput(\n x: unknown,\n): x is { data: Uint8Array | Readable; filename: string; contentType?: string } {\n if (typeof x !== \"object\" || x === null) return false;\n const value = x as { data?: unknown; filename?: unknown };\n return (\n typeof value.filename === \"string\" &&\n (value.data instanceof Uint8Array || isReadable(value.data))\n );\n}\n\nasync function streamToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) chunks.push(Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nfunction toBlobBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer> {\n return new Uint8Array(bytes);\n}\n\nasync function resolveOne(input: FileInput): Promise<ResolvedPart> {\n if (typeof input === \"string\" || isPathInput(input)) {\n const path = typeof input === \"string\" ? input : input.path;\n const data = await readFile(path);\n const filename = basename(path);\n return { data: new Blob([toBlobBytes(data)]), filename, contentType: contentTypeFor(filename) };\n }\n if (isNamedFileInput(input)) {\n const bytes = input.data instanceof Uint8Array ? input.data : await streamToBuffer(input.data);\n return {\n data: new Blob([toBlobBytes(bytes)]),\n filename: input.filename,\n contentType: input.contentType ?? contentTypeFor(input.filename),\n };\n }\n throw new Error(\"Unsupported file input type\");\n}\n\nexport async function resolveInputs(input: { files: FileInput[] }): Promise<ResolvedPart[]> {\n const list: FileInput[] = input.files;\n if (list.length === 0) throw new Error(\"runFlow requires `files`\");\n return Promise.all(list.map((item) => resolveOne(item)));\n}\n","import type { ResolvedPart } from \"../files/resolve-input.js\";\nimport type { HttpClient } from \"../http/http-client.js\";\n\nexport async function runFlow(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n signal?: AbortSignal,\n useDraftVersion = false,\n context?: Record<string, unknown>,\n callbackUrl?: string,\n language?: string,\n organization?: string,\n): Promise<{ executionResultId: string; fileIds: string[] }> {\n const form = new FormData();\n for (const part of parts) {\n form.append(\"files\", new File([part.data], part.filename, { type: part.contentType }));\n }\n if (context !== undefined) form.append(\"jsonContext\", JSON.stringify(context));\n if (callbackUrl !== undefined) form.append(\"callbackUrl\", callbackUrl);\n if (language !== undefined) form.append(\"language\", language);\n if (useDraftVersion) form.append(\"useDraftVersion\", \"true\");\n\n const path = `/flows/${flowId}/execute-async`;\n return http.requestJson<{ executionResultId: string; fileIds: string[] }>(\n \"POST\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n { body: form, signal },\n );\n}\n","import type { ResolvedPart } from \"../files/resolve-input.js\";\nimport type { HttpClient } from \"../http/http-client.js\";\nimport type {\n DocmanaExecutionResult,\n RunPartialFlowAsyncParams,\n RunPartialFlowParams,\n} from \"../types.js\";\n\nfunction buildRequest(\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowParams,\n asyncMode: boolean,\n): { path: string; form: FormData } {\n const form = new FormData();\n for (const part of parts) {\n form.append(\"files\", new File([part.data], part.filename, { type: part.contentType }));\n }\n if (params.context !== undefined) form.append(\"jsonContext\", JSON.stringify(params.context));\n\n form.append(\"executionScope\", params.executionScope);\n if (params.flowVersion !== undefined) form.append(\"flowVersion\", params.flowVersion);\n for (const name of params.classificationNodeNames ?? []) {\n form.append(\"classificationNodeNames\", name);\n }\n\n const suffix = asyncMode ? \"partial-execute-async\" : \"partial-execute\";\n const path = `/flows/${flowId}/${suffix}`;\n return {\n path: params.organization\n ? `${path}?organization=${encodeURIComponent(params.organization)}`\n : path,\n form,\n };\n}\n\nexport async function runPartialFlow(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowParams,\n signal?: AbortSignal,\n): Promise<DocmanaExecutionResult> {\n const { path, form } = buildRequest(flowId, parts, params, false);\n return http.requestJson<DocmanaExecutionResult>(\"POST\", path, { body: form, signal });\n}\n\nexport async function runPartialFlowAsync(\n http: HttpClient,\n flowId: string,\n parts: ResolvedPart[],\n params: RunPartialFlowAsyncParams,\n signal?: AbortSignal,\n): Promise<{ executionResultId: string; fileIds: string[] }> {\n const { path, form } = buildRequest(flowId, parts, params, true);\n if (params.callbackUrl !== undefined) form.append(\"callbackUrl\", params.callbackUrl);\n if (params.language !== undefined) form.append(\"language\", params.language);\n return http.requestJson<{ executionResultId: string; fileIds: string[] }>(\"POST\", path, {\n body: form,\n signal,\n });\n}\n","export function normalizeStatus(status: unknown, fallback = \"UNKNOWN\"): string {\n if (typeof status !== \"string\") return fallback;\n const trimmed = status.trim();\n if (!trimmed) return fallback;\n return trimmed\n .replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n .replace(/[\\s-]+/g, \"_\")\n .toUpperCase();\n}\n\nexport function isFailedStatus(status: string): boolean {\n return normalizeStatus(status) === \"FAILED\";\n}\n\nexport function isTerminalStatus(status: string): boolean {\n const normalized = normalizeStatus(status);\n return normalized === \"COMPLETED\" || normalized === \"FAILED\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { ExecutionStatus } from \"../types.js\";\nimport { normalizeStatus, isTerminalStatus } from \"../status.js\";\n\nexport async function getStatus(\n http: HttpClient,\n executionResultId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<{ status: ExecutionStatus | string; pollAfterMs?: number }> {\n const res = await http.requestRaw(\"GET\", `/executions/${executionResultId}/status`, {\n query: organization ? { organization } : undefined,\n signal,\n });\n const text = await res.text();\n const body = text ? (JSON.parse(text) as { status: ExecutionStatus | string }) : { status: \"\" };\n const normalizedBody = { ...body, status: normalizeStatus(body.status) };\n const pollAfterMs = parsePositiveInt(res.headers.get(\"x-poll-after\"));\n // Diagnostic (execution-hang): opt-in via DOCMANA_SDK_DEBUG. Shows the raw status\n // string returned by the edge vs the normalized value + terminal decision, so we\n // can see why a poll never terminates (e.g. a non-terminal status looping forever).\n if (typeof process !== \"undefined\" && process.env?.DOCMANA_SDK_DEBUG) {\n console.log(\n `[docmana-sdk][status-diag] execution=${executionResultId} rawEdgeStatus=${JSON.stringify(\n body.status,\n )} normalized=${normalizedBody.status} terminal=${isTerminalStatus(normalizedBody.status)}`,\n );\n }\n return pollAfterMs === undefined ? normalizedBody : { ...normalizedBody, pollAfterMs };\n}\n\nfunction parsePositiveInt(value: string | null): number | undefined {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { DocmanaExecutionResult } from \"../types.js\";\n\nexport async function getResult(\n http: HttpClient,\n executionResultId: string,\n signal?: AbortSignal,\n language?: string,\n organization?: string,\n): Promise<DocmanaExecutionResult> {\n const query: Record<string, string> = {};\n if (language) query.language = language;\n if (organization) query.organization = organization;\n return http.requestJson(\"GET\", `/executions/${executionResultId}/result`, {\n query: Object.keys(query).length > 0 ? query : undefined,\n signal,\n });\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport { resolveInputs } from \"../files/resolve-input.js\";\nimport type {\n FraudDetectionAccepted,\n FraudDetectionParams,\n FraudDetectionResult,\n FraudDetectionStatusResult,\n} from \"../types.js\";\nimport { normalizeStatus } from \"../status.js\";\n\nexport async function startFraudDetection(\n http: HttpClient,\n params: FraudDetectionParams,\n signal?: AbortSignal,\n): Promise<FraudDetectionAccepted> {\n if (params.file !== undefined) {\n const [part] = await resolveInputs({ files: [params.file] });\n const form = new FormData();\n form.append(\"file\", new File([part.data], part.filename, { type: part.contentType }));\n if (params.analystContext !== undefined) {\n form.append(\"analystContext\", params.analystContext);\n }\n return http.requestJson(\"POST\", \"/fraud-detections\", {\n body: form,\n signal,\n });\n }\n\n return http.requestJson(\"POST\", \"/fraud-detections\", {\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n documentUrl: params.documentUrl,\n filename: params.filename,\n ...(params.analystContext === undefined ? {} : { analystContext: params.analystContext }),\n }),\n signal,\n });\n}\n\nexport async function getFraudDetectionStatus(\n http: HttpClient,\n jobId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<FraudDetectionStatusResult> {\n void organization;\n const res = await http.requestRaw(\n \"GET\",\n `/fraud-detections/${encodeURIComponent(jobId)}/status`,\n {\n signal,\n },\n );\n const text = await res.text();\n const body = text\n ? (JSON.parse(text) as FraudDetectionStatusResult)\n : ({ jobId, status: \"\" } as unknown as FraudDetectionStatusResult);\n const normalized = {\n ...body,\n status: normalizeStatus(body.status),\n } as FraudDetectionStatusResult;\n const pollAfterMs = parsePositiveInt(res.headers.get(\"x-poll-after\"));\n return pollAfterMs === undefined ? normalized : { ...normalized, pollAfterMs };\n}\n\nexport async function getFraudDetectionResult(\n http: HttpClient,\n jobId: string,\n signal?: AbortSignal,\n organization?: string,\n): Promise<FraudDetectionResult> {\n void organization;\n return http.requestJson(\"GET\", `/fraud-detections/${encodeURIComponent(jobId)}/result`, {\n signal,\n });\n}\n\nfunction parsePositiveInt(value: string | null): number | undefined {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowListItem } from \"../types.js\";\n\nexport async function listFlows(http: HttpClient, organization?: string): Promise<FlowListItem[]> {\n const path = organization ? `/flows?organization=${encodeURIComponent(organization)}` : \"/flows\";\n const flows = await http.requestJson<unknown>(\"GET\", path);\n return Array.isArray(flows) ? flows.map(toFlowListItem) : [];\n}\n\nfunction toFlowListItem(flow: unknown): FlowListItem {\n const value = flow && typeof flow === \"object\" ? (flow as Record<string, unknown>) : {};\n const item: FlowListItem = {\n id: toStringValue(value.id),\n name: toStringValue(value.name),\n state: toStateValue(value.state),\n };\n if (typeof value.organization === \"string\") {\n item.organization = value.organization;\n }\n return item;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction toStateValue(value: unknown): string {\n return typeof value === \"string\" && value.trim() ? value : \"unknown\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { AccessibleOrganization } from \"../types.js\";\n\nexport async function listOrganizations(http: HttpClient): Promise<AccessibleOrganization[]> {\n const organizations = await http.requestJson<unknown>(\"GET\", \"/organizations\");\n return Array.isArray(organizations)\n ? organizations.map(toAccessibleOrganization).filter(isAccessibleOrganization)\n : [];\n}\n\nfunction toAccessibleOrganization(organization: unknown): AccessibleOrganization | undefined {\n const value =\n organization && typeof organization === \"object\"\n ? (organization as Record<string, unknown>)\n : {};\n const id = toStringValue(value.id).trim();\n if (!id) return undefined;\n const name = toStringValue(value.name).trim() || id;\n\n return {\n id,\n name,\n };\n}\n\nfunction isAccessibleOrganization(\n organization: AccessibleOrganization | undefined,\n): organization is AccessibleOrganization {\n return organization !== undefined;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowMetadata } from \"../types.js\";\n\nexport async function getFlowMetadata(\n http: HttpClient,\n flowId: string,\n organization?: string,\n): Promise<FlowMetadata> {\n const path = `/flows/${encodeURIComponent(flowId)}/metadata`;\n return http.requestJson<FlowMetadata>(\n \"GET\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n );\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type { FlowDefinition } from \"../types.js\";\n\nexport async function getFlowDefinition(\n http: HttpClient,\n flowId: string,\n organization?: string,\n): Promise<FlowDefinition> {\n const path = `/flows/${encodeURIComponent(flowId)}/definition`;\n return http.requestJson<FlowDefinition>(\n \"GET\",\n organization ? `${path}?organization=${encodeURIComponent(organization)}` : path,\n );\n}\n","import type { HttpClient } from \"../http/http-client.js\";\nimport type {\n DownloadedOrganizationDocument,\n OrganizationDocument,\n OrganizationDocumentsPayload,\n} from \"../types.js\";\n\nexport async function listOrganizationDocuments(\n http: HttpClient,\n options: { prefix?: string; organization?: string } = {},\n): Promise<OrganizationDocumentsPayload> {\n const query: Record<string, string> = {};\n if (options.prefix) query.prefix = options.prefix;\n if (options.organization) query.organization = options.organization;\n const result = await http.requestJson<unknown>(\"GET\", \"/organization-documents\", {\n query: Object.keys(query).length ? query : undefined,\n });\n const value = result && typeof result === \"object\" ? (result as Record<string, unknown>) : {};\n return {\n configured: value.configured === true,\n documents: Array.isArray(value.documents)\n ? value.documents.map(toOrganizationDocument).filter(isOrganizationDocument)\n : [],\n };\n}\n\nexport async function downloadOrganizationDocument(\n http: HttpClient,\n path: string,\n organization?: string,\n): Promise<DownloadedOrganizationDocument> {\n const query: Record<string, string> = { path };\n if (organization) query.organization = organization;\n const result = await http.requestBytes(\"GET\", \"/organization-documents/download\", {\n query,\n });\n return {\n bytes: result.bytes,\n filename: filenameFromHeaders(result.headers) ?? filenameFromPath(path),\n contentType: result.headers.get(\"content-type\") || undefined,\n };\n}\n\nexport async function downloadOrganizationDocuments(\n http: HttpClient,\n paths: string[],\n organization?: string,\n): Promise<DownloadedOrganizationDocument[]> {\n return Promise.all(paths.map((path) => downloadOrganizationDocument(http, path, organization)));\n}\n\nfunction toOrganizationDocument(document: unknown): OrganizationDocument | undefined {\n const value =\n document && typeof document === \"object\" ? (document as Record<string, unknown>) : {};\n const path = toStringValue(value.path).trim();\n if (!path) return undefined;\n const contentType = toStringValue(value.contentType).trim();\n return {\n path,\n name: toStringValue(value.name).trim() || filenameFromPath(path),\n size: toNumberValue(value.size),\n lastModified: toStringValue(value.lastModified).trim(),\n ...(contentType ? { contentType } : {}),\n };\n}\n\nfunction isOrganizationDocument(\n document: OrganizationDocument | undefined,\n): document is OrganizationDocument {\n return document !== undefined;\n}\n\nfunction filenameFromHeaders(headers: Headers): string | undefined {\n const disposition = headers.get(\"content-disposition\");\n if (!disposition) return undefined;\n const utf8 = /filename\\*=UTF-8''([^;]+)/i.exec(disposition);\n if (utf8?.[1]) return decodeURIComponent(utf8[1]);\n const quoted = /filename=\"([^\"]+)\"/i.exec(disposition);\n if (quoted?.[1]) return quoted[1];\n const plain = /filename=([^;]+)/i.exec(disposition);\n return plain?.[1]?.trim();\n}\n\nfunction filenameFromPath(path: string): string {\n return path.replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean).pop() || path;\n}\n\nfunction toStringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction toNumberValue(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n","import { DocmanaTimeoutError, DocmanaAbortError, DocmanaRateLimitError } from \"../errors.js\";\nimport { isTerminalStatus, normalizeStatus } from \"../status.js\";\n\nexport interface PollCheckResult {\n status: string;\n nextDelayMs?: number;\n}\n\nexport interface PollOptions {\n check: () => Promise<string | PollCheckResult>;\n intervalMs: number;\n maxIntervalMs: number;\n timeoutMs: number;\n sleep?: (ms: number) => Promise<void>;\n elapsed?: () => number;\n random?: () => number;\n signal?: AbortSignal;\n shouldRetryError?: (error: unknown) => boolean;\n}\n\nconst defaultSleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));\n\nexport async function pollUntilTerminal(opts: PollOptions): Promise<string> {\n const sleep = opts.sleep ?? defaultSleep;\n const start = Date.now();\n const elapsed = opts.elapsed ?? (() => Date.now() - start);\n const random = opts.random ?? Math.random;\n let fallbackAttempt = 0;\n for (;;) {\n if (opts.signal?.aborted) throw new DocmanaAbortError(\"Polling aborted\");\n let result: PollCheckResult;\n try {\n result = normalizePollResult(await opts.check());\n } catch (err) {\n const retryAfterMs =\n err instanceof DocmanaRateLimitError\n ? (err.retryAfterMs ?? opts.intervalMs)\n : opts.shouldRetryError?.(err)\n ? fullJitterDelay(opts.intervalMs, opts.maxIntervalMs, fallbackAttempt, random)\n : undefined;\n if (retryAfterMs === undefined) throw err;\n if (elapsed() >= opts.timeoutMs) {\n throw new DocmanaTimeoutError(`Execution did not finish within ${opts.timeoutMs}ms`);\n }\n fallbackAttempt += 1;\n await sleep(retryAfterMs);\n continue;\n }\n const status = normalizeStatus(result.status);\n if (isTerminalStatus(status)) return status;\n if (elapsed() >= opts.timeoutMs) {\n throw new DocmanaTimeoutError(`Execution did not finish within ${opts.timeoutMs}ms`);\n }\n const fallbackDelay = fullJitterDelay(\n opts.intervalMs,\n opts.maxIntervalMs,\n fallbackAttempt,\n random,\n );\n fallbackAttempt += 1;\n await sleep(result.nextDelayMs ?? fallbackDelay);\n }\n}\n\nfunction normalizePollResult(result: string | PollCheckResult): PollCheckResult {\n return typeof result === \"string\" ? { status: result } : result;\n}\n\nfunction fullJitterDelay(\n intervalMs: number,\n maxIntervalMs: number,\n attempt: number,\n random: () => number,\n): number {\n const capDelay = Math.min(maxIntervalMs, intervalMs * 2 ** attempt);\n return Math.round(intervalMs + random() * (capDelay - intervalMs));\n}\n","import { resolveConfig } from \"./config.js\";\nimport type { ResolvedConfig } from \"./config.js\";\nimport type {\n AccessibleOrganization,\n DocmanaConfig,\n DocmanaExecutionResult,\n DownloadedOrganizationDocument,\n ExecutionStatus,\n FraudDetectionAccepted,\n FraudDetectionAsyncOptions,\n FraudDetectionOptions,\n FraudDetectionParams,\n FraudDetectionResult,\n FraudDetectionStatusResult,\n FlowDefinition,\n FlowListItem,\n FlowMetadata,\n OrganizationDocumentsPayload,\n RunFlowAsyncParams,\n RunFlowAsyncOptions,\n RunFlowOptions,\n RunFlowParams,\n RunPartialFlowAsyncParams,\n RunPartialFlowOptions,\n RunPartialFlowParams,\n} from \"./types.js\";\nimport { HttpClient } from \"./http/http-client.js\";\nimport { resolveInputs } from \"./files/resolve-input.js\";\nimport { runFlow as runFlowApi } from \"./api/run-flow.js\";\nimport {\n runPartialFlow as runPartialFlowApi,\n runPartialFlowAsync as runPartialFlowAsyncApi,\n} from \"./api/run-partial-flow.js\";\nimport { getStatus as getStatusApi } from \"./api/execution-status.js\";\nimport { getResult as getResultApi } from \"./api/execution-result.js\";\nimport {\n getFraudDetectionResult as getFraudDetectionResultApi,\n getFraudDetectionStatus as getFraudDetectionStatusApi,\n startFraudDetection as startFraudDetectionApi,\n} from \"./api/fraud-detection.js\";\nimport { listFlows as listFlowsApi } from \"./api/list-flows.js\";\nimport { listOrganizations as listOrganizationsApi } from \"./api/list-organizations.js\";\nimport { getFlowMetadata as getFlowMetadataApi } from \"./api/flow-metadata.js\";\nimport { getFlowDefinition as getFlowDefinitionApi } from \"./api/flow-definition.js\";\nimport {\n downloadOrganizationDocument as downloadOrganizationDocumentApi,\n downloadOrganizationDocuments as downloadOrganizationDocumentsApi,\n listOrganizationDocuments as listOrganizationDocumentsApi,\n} from \"./api/organization-documents.js\";\nimport { pollUntilTerminal } from \"./polling/poll.js\";\nimport {\n DocmanaError,\n DocmanaExecutionError,\n DocmanaFraudDetectionError,\n DocmanaRateLimitError,\n} from \"./errors.js\";\nimport { isFailedStatus, isTerminalStatus } from \"./status.js\";\n\nexport class Docmana {\n private readonly config: ResolvedConfig;\n private readonly http: HttpClient;\n\n constructor(config: DocmanaConfig) {\n this.config = resolveConfig(config);\n this.http = new HttpClient({\n apiBaseUrl: this.config.apiBaseUrl,\n fetchImpl: this.config.fetchImpl,\n accessToken: this.config.accessToken,\n getAccessToken: this.config.getAccessToken,\n headers: this.config.headers,\n });\n }\n\n async runFlowAsync(\n flowId: string,\n params: RunFlowAsyncParams,\n options: RunFlowAsyncOptions = {},\n ): Promise<{ executionResultId: string; fileIds: string[] }> {\n const parts = await resolveInputs(params);\n return runFlowApi(\n this.http,\n flowId,\n parts,\n options.signal,\n params.useDraftVersion ?? false,\n params.context,\n params.callbackUrl,\n params.language,\n params.organization,\n );\n }\n\n async detectFraudAsync(\n params: FraudDetectionParams,\n options: FraudDetectionAsyncOptions = {},\n ): Promise<FraudDetectionAccepted> {\n return startFraudDetectionApi(this.http, params, options.signal);\n }\n\n async getFraudDetectionStatus(\n jobId: string,\n signal?: AbortSignal,\n /** @deprecated Fraud jobs are not organization-scoped. */\n organization?: string,\n ): Promise<FraudDetectionStatusResult> {\n return getFraudDetectionStatusApi(this.http, jobId, signal, organization);\n }\n\n async getFraudDetectionResult(\n jobId: string,\n signal?: AbortSignal,\n /** @deprecated Fraud jobs are not organization-scoped. */\n organization?: string,\n ): Promise<FraudDetectionResult> {\n return getFraudDetectionResultApi(this.http, jobId, signal, organization);\n }\n\n async detectFraud(\n params: FraudDetectionParams,\n options: FraudDetectionOptions = {},\n ): Promise<FraudDetectionResult> {\n const { jobId } = await this.detectFraudAsync(params, { signal: options.signal });\n let attempt = 0;\n const startedAt = Date.now();\n await pollUntilTerminal({\n check: async () => {\n attempt += 1;\n try {\n const statusResult = await this.getFraudDetectionStatus(jobId, options.signal);\n const nextPollAfterMs = isTerminalStatus(statusResult.status)\n ? undefined\n : statusResult.pollAfterMs;\n options.onPoll?.({\n jobId,\n status: statusResult.status,\n attempt,\n elapsedMs: Date.now() - startedAt,\n nextPollAfterMs,\n });\n return { status: statusResult.status, nextDelayMs: nextPollAfterMs };\n } catch (err) {\n if (err instanceof DocmanaRateLimitError) {\n options.onRateLimit?.({\n jobId,\n attempt,\n elapsedMs: Date.now() - startedAt,\n retryAfterMs:\n err.retryAfterMs ?? options.pollIntervalMs ?? this.config.pollIntervalMs,\n });\n }\n throw err;\n }\n },\n intervalMs: options.pollIntervalMs ?? this.config.pollIntervalMs,\n maxIntervalMs: options.pollMaxIntervalMs ?? this.config.pollMaxIntervalMs,\n timeoutMs: options.timeoutMs ?? this.config.timeoutMs,\n signal: options.signal,\n shouldRetryError: isTransientPollingError,\n });\n const result = await this.getFraudDetectionResult(jobId, options.signal);\n if (isFailedStatus(result.status)) {\n throw new DocmanaFraudDetectionError(\n result.error?.message ?? `Fraud detection ${jobId} failed`,\n result,\n );\n }\n return result;\n }\n\n async runPartialFlow(\n flowId: string,\n params: RunPartialFlowParams,\n options: RunPartialFlowOptions = {},\n ): Promise<DocmanaExecutionResult> {\n const parts = await resolveInputs(params);\n return runPartialFlowApi(this.http, flowId, parts, params, options.signal);\n }\n\n async runPartialFlowAsync(\n flowId: string,\n params: RunPartialFlowAsyncParams,\n options: RunPartialFlowOptions = {},\n ): Promise<{ executionResultId: string; fileIds: string[] }> {\n const parts = await resolveInputs(params);\n return runPartialFlowAsyncApi(this.http, flowId, parts, params, options.signal);\n }\n\n async getStatus(\n executionResultId: string,\n signal?: AbortSignal,\n organization?: string,\n ): Promise<{ status: ExecutionStatus | string; pollAfterMs?: number }> {\n return getStatusApi(this.http, executionResultId, signal, organization);\n }\n\n async getResult(\n executionResultId: string,\n signal?: AbortSignal,\n language?: string,\n organization?: string,\n ): Promise<DocmanaExecutionResult> {\n return getResultApi(this.http, executionResultId, signal, language, organization);\n }\n\n async runFlow(\n flowId: string,\n params: RunFlowParams,\n options: RunFlowOptions = {},\n ): Promise<DocmanaExecutionResult> {\n const { executionResultId } = await this.runFlowAsync(flowId, params, {\n signal: options.signal,\n });\n let attempt = 0;\n const startedAt = Date.now();\n await pollUntilTerminal({\n check: async () => {\n attempt += 1;\n try {\n const statusResult = await this.getStatus(\n executionResultId,\n options.signal,\n params.organization,\n );\n const status = statusResult.status;\n const nextPollAfterMs = this.isTerminalStatus(status)\n ? undefined\n : statusResult.pollAfterMs;\n options.onPoll?.({\n executionResultId,\n status,\n attempt,\n elapsedMs: Date.now() - startedAt,\n nextPollAfterMs,\n });\n return { status, nextDelayMs: nextPollAfterMs };\n } catch (err) {\n if (err instanceof DocmanaRateLimitError) {\n options.onRateLimit?.({\n executionResultId,\n attempt,\n elapsedMs: Date.now() - startedAt,\n retryAfterMs:\n err.retryAfterMs ?? options.pollIntervalMs ?? this.config.pollIntervalMs,\n });\n }\n throw err;\n }\n },\n intervalMs: options.pollIntervalMs ?? this.config.pollIntervalMs,\n maxIntervalMs: options.pollMaxIntervalMs ?? this.config.pollMaxIntervalMs,\n timeoutMs: options.timeoutMs ?? this.config.timeoutMs,\n signal: options.signal,\n });\n const result = await this.getResult(\n executionResultId,\n options.signal,\n params.language,\n params.organization,\n );\n if (isFailedStatus(result.status)) {\n throw new DocmanaExecutionError(\n `Flow ${flowId} execution failed`,\n result.errors ?? [],\n result,\n );\n }\n return result;\n }\n\n async listFlows(options: { organization?: string } = {}): Promise<FlowListItem[]> {\n return listFlowsApi(this.http, options.organization);\n }\n\n async listOrganizations(): Promise<AccessibleOrganization[]> {\n return listOrganizationsApi(this.http);\n }\n\n async getFlowMetadata(\n flowId: string,\n options: { organization?: string } = {},\n ): Promise<FlowMetadata> {\n return getFlowMetadataApi(this.http, flowId, options.organization);\n }\n\n async getFlowDefinition(\n flowId: string,\n options: { organization?: string } = {},\n ): Promise<FlowDefinition> {\n return getFlowDefinitionApi(this.http, flowId, options.organization);\n }\n\n async listOrganizationDocuments(\n options: { prefix?: string; organization?: string } = {},\n ): Promise<OrganizationDocumentsPayload> {\n return listOrganizationDocumentsApi(this.http, options);\n }\n\n async downloadOrganizationDocument(\n path: string,\n organization?: string,\n ): Promise<DownloadedOrganizationDocument> {\n return downloadOrganizationDocumentApi(this.http, path, organization);\n }\n\n async downloadOrganizationDocuments(\n paths: string[],\n organization?: string,\n ): Promise<DownloadedOrganizationDocument[]> {\n return downloadOrganizationDocumentsApi(this.http, paths, organization);\n }\n\n private isTerminalStatus(status: string): boolean {\n return isTerminalStatus(status);\n }\n}\n\nfunction isTransientPollingError(error: unknown): boolean {\n if (error instanceof DocmanaRateLimitError) return false;\n if (error instanceof DocmanaError) {\n return error.status !== undefined && error.status >= 500;\n }\n return error instanceof TypeError;\n}\n"],"mappings":"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","names":["parsePositiveInt","toStringValue","toStringValue"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -65,8 +65,6 @@ export interface RunFlowAsyncOptions {
|
|
|
65
65
|
export type FraudDetectionStatus = "PENDING" | "RUNNING" | "COMPLETED" | "FAILED";
|
|
66
66
|
export type FraudDetectionVerdict = "CLEAN" | "REVIEW" | "AI_GENERATED" | "ERROR";
|
|
67
67
|
export type FraudFindingSeverity = "INFO" | "MINOR" | "MODERATE" | "MAJOR" | "AI_GENERATED";
|
|
68
|
-
export type FraudDetectionLayerStatus = "COMPLETED" | "FAILED" | "SKIPPED";
|
|
69
|
-
export type FraudDetectionPreprocessStatus = "COMPLETED" | "FAILED" | "INVALID" | "SKIPPED";
|
|
70
68
|
export interface FraudDetectionBaseParams {
|
|
71
69
|
/** Optional business context for the fraud analyst model. */
|
|
72
70
|
analystContext?: string;
|
|
@@ -120,7 +118,7 @@ export interface FraudFindingLocation {
|
|
|
120
118
|
boundingBox?: number[];
|
|
121
119
|
}
|
|
122
120
|
export interface FraudFinding {
|
|
123
|
-
/** Job-local stable reference
|
|
121
|
+
/** Job-local stable reference for UI selection and correlation. */
|
|
124
122
|
reference: string;
|
|
125
123
|
riskLevel: number;
|
|
126
124
|
severity: FraudFindingSeverity;
|
|
@@ -144,31 +142,6 @@ export interface FraudDetectionSummary {
|
|
|
144
142
|
highestSeverity: FraudFindingSeverity;
|
|
145
143
|
severityCounts: FraudSeverityCounts;
|
|
146
144
|
}
|
|
147
|
-
export interface FraudDetectionModelUsage {
|
|
148
|
-
model: string;
|
|
149
|
-
inputTokens: number;
|
|
150
|
-
outputTokens: number;
|
|
151
|
-
calls: number;
|
|
152
|
-
}
|
|
153
|
-
export interface FraudDetectionTelemetry {
|
|
154
|
-
durationMs?: number;
|
|
155
|
-
inputTokens?: number;
|
|
156
|
-
outputTokens?: number;
|
|
157
|
-
llmCalls?: number;
|
|
158
|
-
/** Per-model usage as an array so model names remain safe Mongo values, not object keys. */
|
|
159
|
-
modelUsage?: FraudDetectionModelUsage[];
|
|
160
|
-
cost?: number;
|
|
161
|
-
error?: string;
|
|
162
|
-
}
|
|
163
|
-
export interface FraudDetectionPreprocess extends FraudDetectionTelemetry {
|
|
164
|
-
status: FraudDetectionPreprocessStatus;
|
|
165
|
-
}
|
|
166
|
-
export interface FraudDetectionLayer extends FraudDetectionTelemetry {
|
|
167
|
-
status: FraudDetectionLayerStatus;
|
|
168
|
-
summary: FraudDetectionSummary;
|
|
169
|
-
/** References into FraudDetectionResult.findings. */
|
|
170
|
-
findingReferences: string[];
|
|
171
|
-
}
|
|
172
145
|
export interface FraudDetectionAccepted {
|
|
173
146
|
jobId: string;
|
|
174
147
|
status: FraudDetectionStatus;
|
|
@@ -185,19 +158,10 @@ export interface FraudDetectionResult extends FraudDetectionAccepted {
|
|
|
185
158
|
verdict?: FraudDetectionVerdict;
|
|
186
159
|
confidence?: number;
|
|
187
160
|
reasoning?: string;
|
|
188
|
-
verdictTelemetry?: FraudDetectionTelemetry;
|
|
189
|
-
preprocess?: FraudDetectionPreprocess;
|
|
190
161
|
findings: FraudFinding[];
|
|
191
162
|
summary: FraudDetectionSummary;
|
|
192
|
-
/** Detection layers keyed by their unique Fraud service name. */
|
|
193
|
-
layers: Record<string, FraudDetectionLayer>;
|
|
194
163
|
documentId?: string;
|
|
195
164
|
durationMs?: number;
|
|
196
|
-
cost?: number;
|
|
197
|
-
inputTokens?: number;
|
|
198
|
-
outputTokens?: number;
|
|
199
|
-
llmCalls?: number;
|
|
200
|
-
persistError?: string;
|
|
201
165
|
}
|
|
202
166
|
export interface RunFlowAsyncParams extends RunFlowParams {
|
|
203
167
|
/** URL Consumer will POST the completion result to (wire: `callbackUrl`). */
|