@claritylabs/cl-sdk 3.1.17 → 3.1.19

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.
@@ -71,6 +71,8 @@ interface ModelCallTrace {
71
71
  batchCount?: number;
72
72
  phase?: string;
73
73
  sourceBacked?: boolean;
74
+ coverageGroup?: string;
75
+ itemCount?: number;
74
76
  }
75
77
  /** Callback to generate text from a prompt. Provider-agnostic. */
76
78
  type GenerateText = (params: {
@@ -71,6 +71,8 @@ interface ModelCallTrace {
71
71
  batchCount?: number;
72
72
  phase?: string;
73
73
  sourceBacked?: boolean;
74
+ coverageGroup?: string;
75
+ itemCount?: number;
74
76
  }
75
77
  /** Callback to generate text from a prompt. Provider-agnostic. */
76
78
  type GenerateText = (params: {
package/dist/index.d.mts CHANGED
@@ -1,10 +1,14 @@
1
- import { L as LogFn, M as ModelTaskKind, a as ModelBudgetResolution, b as ModelCallTrace, G as GenerateObject, T as TokenUsage, S as SourceSpanLocation, c as SourceSpan, D as DocumentSourceNode, d as SourceKind, e as SourceSpanUnit, f as SourceSpanTableLocation, g as SourceChunk, h as SourceSpanBBox, U as UnifiedQualityReport, B as BaseQualityIssue, Q as QualityGateStatus, I as InsuranceDocument, P as PdfInput, i as DocumentChunk, j as PolicyOperationalProfile, k as PerformanceReport, l as GenerateText, C as ConvertPdfToImagesFn, m as QualityGateMode, n as ModelCapabilities, o as ModelBudgetConstraint, A as AgentContext, p as DocumentStore, q as MemoryStore, r as Platform } from './index-CTxWtbqE.mjs';
2
- export { s as AcroFormMapping, t as AcroFormMappingSchema, u as AnswerParsingResult, v as AnswerParsingResultSchema, w as ApplicationClassifyResult, x as ApplicationClassifyResultSchema, y as ApplicationContextProposal, z as ApplicationContextProposalSchema, E as ApplicationEmailReviewSchema, F as ApplicationField, H as ApplicationFieldSchema, J as ApplicationListFilters, K as ApplicationNextQuestions, N as ApplicationPacket, O as ApplicationPacketAnswer, R as ApplicationPacketAnswerSchema, V as ApplicationPacketSchema, W as ApplicationPipelineConfig, X as ApplicationQualityArtifactSchema, Y as ApplicationQualityIssueSchema, Z as ApplicationQualityReportSchema, _ as ApplicationQualityRoundSchema, $ as ApplicationQuestionCondition, a0 as ApplicationQuestionConditionSchema, a1 as ApplicationQuestionGraph, a2 as ApplicationQuestionGraphSchema, a3 as ApplicationQuestionNode, a4 as ApplicationQuestionNodeSchema, a5 as ApplicationRepeat, a6 as ApplicationRepeatSchema, a7 as ApplicationState, a8 as ApplicationStateSchema, a9 as ApplicationStore, aa as ApplicationTemplate, ab as ApplicationTemplateListFilters, ac as ApplicationTemplateSchema, ad as ApplicationTemplateStore, ae as AutoFillMatch, af as AutoFillMatchSchema, ag as AutoFillResult, ah as AutoFillResultSchema, ai as AuxiliaryFact, aj as AuxiliaryFactSchema, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, an as ChunkFilter, ao as CommunicationIntent, ap as CommunicationIntentSchema, aq as ContextProposalResult, ar as ConversationTurn, as as CoveredReason, at as CoveredReasonSchema, au as CreateApplicationRunInput, av as Definition, aw as DefinitionSchema, ax as DocumentAgentGuidance, ay as DocumentAgentGuidanceSchema, az as DocumentFilters, aA as DocumentMetadata, aB as DocumentMetadataSchema, aC as DocumentNode, aD as DocumentNodeSchema, aE as DocumentPageMapEntry, aF as DocumentPageMapEntrySchema, aG as DocumentSourceNodeKind, aH as DocumentSourceNodeKindSchema, aI as DocumentSourceNodeSchema, aJ as DocumentTableOfContentsEntry, aK as DocumentTableOfContentsEntrySchema, aL as EmbedText, aM as FieldExtractionResult, aN as FieldExtractionResultSchema, aO as FieldType, aP as FieldTypeSchema, aQ as FlatPdfPlacement, aR as FlatPdfPlacementSchema, aS as InsuranceDocumentSchema, aT as LookupFill, aU as LookupFillResult, aV as LookupFillResultSchema, aW as LookupFillSchema, aX as LookupRequest, aY as LookupRequestSchema, aZ as ModelCallReport, a_ as OperationalCoverageLine, a$ as OperationalCoverageLineSchema, b0 as OperationalCoverageTerm, b1 as OperationalCoverageTermSchema, b2 as OperationalEndorsementSupport, b3 as OperationalEndorsementSupportSchema, b4 as OperationalParty, b5 as OperationalPartySchema, b6 as PLATFORM_CONFIGS, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, b9 as PlatformConfig, ba as PlatformSchema, bb as PolicyDocument, bc as PolicyDocumentSchema, bd as PolicyOperationalProfileSchema, be as PremiumLine, bf as PremiumLineSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bn as QuoteDocument, bo as QuoteDocumentSchema, bp as ReplyIntent, bq as ReplyIntentSchema, br as ResolveModelBudgetParams, bs as Section, bt as SectionSchema, bu as SourceBackedValue, bv as SourceBackedValueSchema, bw as SourceChunkSchema, bx as SourceKindSchema, by as SourceSpanBBoxSchema, bz as SourceSpanKind, bA as SourceSpanKindSchema, bB as SourceSpanLocationSchema, bC as SourceSpanRef, bD as SourceSpanRefSchema, bE as SourceSpanSchema, bF as SourceSpanTableLocationSchema, bG as SourceSpanUnitSchema, bH as Subjectivity, bI as SubjectivitySchema, bJ as Subsection, bK as SubsectionSchema, bL as UnderwritingCondition, bM as UnderwritingConditionSchema, bN as applyApplicationAnswers, bO as buildApplicationPacket, bP as buildQuestionGraphFromFields, bQ as createApplicationPipeline, bR as createApplicationRun, bS as extractQuestionGraphFromFields, bT as flattenQuestionGraph, bU as getActiveApplicationFields, bV as getNextApplicationQuestions, bW as normalizeApplicationQuestionGraph, bX as planNextApplicationQuestions, bY as proposeContextWrites, bZ as resolveModelBudget, b_ as validateApplicationPacket } from './index-CTxWtbqE.mjs';
1
+ import { L as LogFn, M as ModelTaskKind, a as ModelBudgetResolution, b as ModelCallTrace, G as GenerateObject, T as TokenUsage, S as SourceSpanLocation, c as SourceSpan, D as DocumentSourceNode, d as SourceKind, e as SourceSpanUnit, f as SourceSpanTableLocation, g as SourceChunk, h as SourceSpanBBox, U as UnifiedQualityReport, B as BaseQualityIssue, Q as QualityGateStatus, I as InsuranceDocument, P as PdfInput, i as DocumentChunk, j as PolicyOperationalProfile, k as PerformanceReport, l as GenerateText, C as ConvertPdfToImagesFn, m as QualityGateMode, n as ModelCapabilities, o as ModelBudgetConstraint, A as AgentContext, p as DocumentStore, q as MemoryStore, r as Platform } from './index-q8LQXen9.mjs';
2
+ export { s as AcroFormMapping, t as AcroFormMappingSchema, u as AnswerParsingResult, v as AnswerParsingResultSchema, w as ApplicationClassifyResult, x as ApplicationClassifyResultSchema, y as ApplicationContextProposal, z as ApplicationContextProposalSchema, E as ApplicationEmailReviewSchema, F as ApplicationField, H as ApplicationFieldSchema, J as ApplicationListFilters, K as ApplicationNextQuestions, N as ApplicationPacket, O as ApplicationPacketAnswer, R as ApplicationPacketAnswerSchema, V as ApplicationPacketSchema, W as ApplicationPipelineConfig, X as ApplicationQualityArtifactSchema, Y as ApplicationQualityIssueSchema, Z as ApplicationQualityReportSchema, _ as ApplicationQualityRoundSchema, $ as ApplicationQuestionCondition, a0 as ApplicationQuestionConditionSchema, a1 as ApplicationQuestionGraph, a2 as ApplicationQuestionGraphSchema, a3 as ApplicationQuestionNode, a4 as ApplicationQuestionNodeSchema, a5 as ApplicationRepeat, a6 as ApplicationRepeatSchema, a7 as ApplicationState, a8 as ApplicationStateSchema, a9 as ApplicationStore, aa as ApplicationTemplate, ab as ApplicationTemplateListFilters, ac as ApplicationTemplateSchema, ad as ApplicationTemplateStore, ae as AutoFillMatch, af as AutoFillMatchSchema, ag as AutoFillResult, ah as AutoFillResultSchema, ai as AuxiliaryFact, aj as AuxiliaryFactSchema, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, an as ChunkFilter, ao as CommunicationIntent, ap as CommunicationIntentSchema, aq as ContextProposalResult, ar as ConversationTurn, as as CoveredReason, at as CoveredReasonSchema, au as CreateApplicationRunInput, av as Definition, aw as DefinitionSchema, ax as DocumentAgentGuidance, ay as DocumentAgentGuidanceSchema, az as DocumentFilters, aA as DocumentMetadata, aB as DocumentMetadataSchema, aC as DocumentNode, aD as DocumentNodeSchema, aE as DocumentPageMapEntry, aF as DocumentPageMapEntrySchema, aG as DocumentSourceNodeKind, aH as DocumentSourceNodeKindSchema, aI as DocumentSourceNodeSchema, aJ as DocumentTableOfContentsEntry, aK as DocumentTableOfContentsEntrySchema, aL as EmbedText, aM as FieldExtractionResult, aN as FieldExtractionResultSchema, aO as FieldType, aP as FieldTypeSchema, aQ as FlatPdfPlacement, aR as FlatPdfPlacementSchema, aS as InsuranceDocumentSchema, aT as LookupFill, aU as LookupFillResult, aV as LookupFillResultSchema, aW as LookupFillSchema, aX as LookupRequest, aY as LookupRequestSchema, aZ as ModelCallReport, a_ as OperationalCoverageLine, a$ as OperationalCoverageLineSchema, b0 as OperationalCoverageTerm, b1 as OperationalCoverageTermSchema, b2 as OperationalEndorsementSupport, b3 as OperationalEndorsementSupportSchema, b4 as OperationalParty, b5 as OperationalPartySchema, b6 as PLATFORM_CONFIGS, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, b9 as PlatformConfig, ba as PlatformSchema, bb as PolicyDocument, bc as PolicyDocumentSchema, bd as PolicyOperationalProfileSchema, be as PremiumLine, bf as PremiumLineSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bn as QuoteDocument, bo as QuoteDocumentSchema, bp as ReplyIntent, bq as ReplyIntentSchema, br as ResolveModelBudgetParams, bs as Section, bt as SectionSchema, bu as SourceBackedValue, bv as SourceBackedValueSchema, bw as SourceChunkSchema, bx as SourceKindSchema, by as SourceSpanBBoxSchema, bz as SourceSpanKind, bA as SourceSpanKindSchema, bB as SourceSpanLocationSchema, bC as SourceSpanRef, bD as SourceSpanRefSchema, bE as SourceSpanSchema, bF as SourceSpanTableLocationSchema, bG as SourceSpanUnitSchema, bH as Subjectivity, bI as SubjectivitySchema, bJ as Subsection, bK as SubsectionSchema, bL as UnderwritingCondition, bM as UnderwritingConditionSchema, bN as applyApplicationAnswers, bO as buildApplicationPacket, bP as buildQuestionGraphFromFields, bQ as createApplicationPipeline, bR as createApplicationRun, bS as extractQuestionGraphFromFields, bT as flattenQuestionGraph, bU as getActiveApplicationFields, bV as getNextApplicationQuestions, bW as normalizeApplicationQuestionGraph, bX as planNextApplicationQuestions, bY as proposeContextWrites, bZ as resolveModelBudget, b_ as validateApplicationPacket } from './index-q8LQXen9.mjs';
3
3
  import * as zod from 'zod';
4
4
  import { ZodTypeAny, z, ZodSchema } from 'zod';
5
5
  import { PDFDocument } from 'pdf-lib';
6
6
 
7
- declare function withRetry<T>(fn: () => Promise<T>, log?: LogFn): Promise<T>;
7
+ interface RetryOptions {
8
+ maxRetries?: number;
9
+ baseDelayMs?: number;
10
+ }
11
+ declare function withRetry<T>(fn: () => Promise<T>, log?: LogFn, options?: RetryOptions): Promise<T>;
8
12
 
9
13
  /**
10
14
  * Concurrency limiter — returns a function that wraps async tasks
@@ -31,6 +35,8 @@ interface SafeGenerateOptions<T> {
31
35
  onError?: (error: unknown, attempt: number) => void;
32
36
  /** Logger for pipeline status messages. */
33
37
  log?: LogFn;
38
+ /** Controls retryable provider-error backoff around the host callback. Use false when the host already owns fallback. */
39
+ retry?: RetryOptions | false;
34
40
  }
35
41
  interface SafeGenerateParams {
36
42
  prompt: string;
@@ -44,7 +50,7 @@ interface SafeGenerateParams {
44
50
  /**
45
51
  * Wraps a `generateObject` call with two layers of resilience:
46
52
  *
47
- * 1. Inner: `withRetry` handles 429 / rate-limit errors with exponential backoff
53
+ * 1. Inner: `withRetry` handles retryable provider errors with exponential backoff unless disabled.
48
54
  * 2. Outer: catches all other errors (schema validation, malformed JSON, transient API errors)
49
55
  * and retries up to `maxRetries` times. If all retries fail, returns `fallback` (if provided)
50
56
  * or re-throws.
@@ -8734,6 +8740,7 @@ interface ExtractorConfig {
8734
8740
  sourceStore?: SourceStore;
8735
8741
  qualityGate?: QualityGateMode;
8736
8742
  modelCapabilities?: ModelCapabilities;
8743
+ modelCapabilitiesByTaskKind?: Partial<Record<ModelTaskKind, ModelCapabilities>>;
8737
8744
  modelBudgetConstraints?: Partial<Record<ModelTaskKind, ModelBudgetConstraint>>;
8738
8745
  /** Optional checkpoint persistence callback. */
8739
8746
  onCheckpointSave?: (checkpoint: PipelineCheckpoint<ExtractionState>) => Promise<void>;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,14 @@
1
- import { L as LogFn, M as ModelTaskKind, a as ModelBudgetResolution, b as ModelCallTrace, G as GenerateObject, T as TokenUsage, S as SourceSpanLocation, c as SourceSpan, D as DocumentSourceNode, d as SourceKind, e as SourceSpanUnit, f as SourceSpanTableLocation, g as SourceChunk, h as SourceSpanBBox, U as UnifiedQualityReport, B as BaseQualityIssue, Q as QualityGateStatus, I as InsuranceDocument, P as PdfInput, i as DocumentChunk, j as PolicyOperationalProfile, k as PerformanceReport, l as GenerateText, C as ConvertPdfToImagesFn, m as QualityGateMode, n as ModelCapabilities, o as ModelBudgetConstraint, A as AgentContext, p as DocumentStore, q as MemoryStore, r as Platform } from './index-CTxWtbqE.js';
2
- export { s as AcroFormMapping, t as AcroFormMappingSchema, u as AnswerParsingResult, v as AnswerParsingResultSchema, w as ApplicationClassifyResult, x as ApplicationClassifyResultSchema, y as ApplicationContextProposal, z as ApplicationContextProposalSchema, E as ApplicationEmailReviewSchema, F as ApplicationField, H as ApplicationFieldSchema, J as ApplicationListFilters, K as ApplicationNextQuestions, N as ApplicationPacket, O as ApplicationPacketAnswer, R as ApplicationPacketAnswerSchema, V as ApplicationPacketSchema, W as ApplicationPipelineConfig, X as ApplicationQualityArtifactSchema, Y as ApplicationQualityIssueSchema, Z as ApplicationQualityReportSchema, _ as ApplicationQualityRoundSchema, $ as ApplicationQuestionCondition, a0 as ApplicationQuestionConditionSchema, a1 as ApplicationQuestionGraph, a2 as ApplicationQuestionGraphSchema, a3 as ApplicationQuestionNode, a4 as ApplicationQuestionNodeSchema, a5 as ApplicationRepeat, a6 as ApplicationRepeatSchema, a7 as ApplicationState, a8 as ApplicationStateSchema, a9 as ApplicationStore, aa as ApplicationTemplate, ab as ApplicationTemplateListFilters, ac as ApplicationTemplateSchema, ad as ApplicationTemplateStore, ae as AutoFillMatch, af as AutoFillMatchSchema, ag as AutoFillResult, ah as AutoFillResultSchema, ai as AuxiliaryFact, aj as AuxiliaryFactSchema, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, an as ChunkFilter, ao as CommunicationIntent, ap as CommunicationIntentSchema, aq as ContextProposalResult, ar as ConversationTurn, as as CoveredReason, at as CoveredReasonSchema, au as CreateApplicationRunInput, av as Definition, aw as DefinitionSchema, ax as DocumentAgentGuidance, ay as DocumentAgentGuidanceSchema, az as DocumentFilters, aA as DocumentMetadata, aB as DocumentMetadataSchema, aC as DocumentNode, aD as DocumentNodeSchema, aE as DocumentPageMapEntry, aF as DocumentPageMapEntrySchema, aG as DocumentSourceNodeKind, aH as DocumentSourceNodeKindSchema, aI as DocumentSourceNodeSchema, aJ as DocumentTableOfContentsEntry, aK as DocumentTableOfContentsEntrySchema, aL as EmbedText, aM as FieldExtractionResult, aN as FieldExtractionResultSchema, aO as FieldType, aP as FieldTypeSchema, aQ as FlatPdfPlacement, aR as FlatPdfPlacementSchema, aS as InsuranceDocumentSchema, aT as LookupFill, aU as LookupFillResult, aV as LookupFillResultSchema, aW as LookupFillSchema, aX as LookupRequest, aY as LookupRequestSchema, aZ as ModelCallReport, a_ as OperationalCoverageLine, a$ as OperationalCoverageLineSchema, b0 as OperationalCoverageTerm, b1 as OperationalCoverageTermSchema, b2 as OperationalEndorsementSupport, b3 as OperationalEndorsementSupportSchema, b4 as OperationalParty, b5 as OperationalPartySchema, b6 as PLATFORM_CONFIGS, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, b9 as PlatformConfig, ba as PlatformSchema, bb as PolicyDocument, bc as PolicyDocumentSchema, bd as PolicyOperationalProfileSchema, be as PremiumLine, bf as PremiumLineSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bn as QuoteDocument, bo as QuoteDocumentSchema, bp as ReplyIntent, bq as ReplyIntentSchema, br as ResolveModelBudgetParams, bs as Section, bt as SectionSchema, bu as SourceBackedValue, bv as SourceBackedValueSchema, bw as SourceChunkSchema, bx as SourceKindSchema, by as SourceSpanBBoxSchema, bz as SourceSpanKind, bA as SourceSpanKindSchema, bB as SourceSpanLocationSchema, bC as SourceSpanRef, bD as SourceSpanRefSchema, bE as SourceSpanSchema, bF as SourceSpanTableLocationSchema, bG as SourceSpanUnitSchema, bH as Subjectivity, bI as SubjectivitySchema, bJ as Subsection, bK as SubsectionSchema, bL as UnderwritingCondition, bM as UnderwritingConditionSchema, bN as applyApplicationAnswers, bO as buildApplicationPacket, bP as buildQuestionGraphFromFields, bQ as createApplicationPipeline, bR as createApplicationRun, bS as extractQuestionGraphFromFields, bT as flattenQuestionGraph, bU as getActiveApplicationFields, bV as getNextApplicationQuestions, bW as normalizeApplicationQuestionGraph, bX as planNextApplicationQuestions, bY as proposeContextWrites, bZ as resolveModelBudget, b_ as validateApplicationPacket } from './index-CTxWtbqE.js';
1
+ import { L as LogFn, M as ModelTaskKind, a as ModelBudgetResolution, b as ModelCallTrace, G as GenerateObject, T as TokenUsage, S as SourceSpanLocation, c as SourceSpan, D as DocumentSourceNode, d as SourceKind, e as SourceSpanUnit, f as SourceSpanTableLocation, g as SourceChunk, h as SourceSpanBBox, U as UnifiedQualityReport, B as BaseQualityIssue, Q as QualityGateStatus, I as InsuranceDocument, P as PdfInput, i as DocumentChunk, j as PolicyOperationalProfile, k as PerformanceReport, l as GenerateText, C as ConvertPdfToImagesFn, m as QualityGateMode, n as ModelCapabilities, o as ModelBudgetConstraint, A as AgentContext, p as DocumentStore, q as MemoryStore, r as Platform } from './index-q8LQXen9.js';
2
+ export { s as AcroFormMapping, t as AcroFormMappingSchema, u as AnswerParsingResult, v as AnswerParsingResultSchema, w as ApplicationClassifyResult, x as ApplicationClassifyResultSchema, y as ApplicationContextProposal, z as ApplicationContextProposalSchema, E as ApplicationEmailReviewSchema, F as ApplicationField, H as ApplicationFieldSchema, J as ApplicationListFilters, K as ApplicationNextQuestions, N as ApplicationPacket, O as ApplicationPacketAnswer, R as ApplicationPacketAnswerSchema, V as ApplicationPacketSchema, W as ApplicationPipelineConfig, X as ApplicationQualityArtifactSchema, Y as ApplicationQualityIssueSchema, Z as ApplicationQualityReportSchema, _ as ApplicationQualityRoundSchema, $ as ApplicationQuestionCondition, a0 as ApplicationQuestionConditionSchema, a1 as ApplicationQuestionGraph, a2 as ApplicationQuestionGraphSchema, a3 as ApplicationQuestionNode, a4 as ApplicationQuestionNodeSchema, a5 as ApplicationRepeat, a6 as ApplicationRepeatSchema, a7 as ApplicationState, a8 as ApplicationStateSchema, a9 as ApplicationStore, aa as ApplicationTemplate, ab as ApplicationTemplateListFilters, ac as ApplicationTemplateSchema, ad as ApplicationTemplateStore, ae as AutoFillMatch, af as AutoFillMatchSchema, ag as AutoFillResult, ah as AutoFillResultSchema, ai as AuxiliaryFact, aj as AuxiliaryFactSchema, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, an as ChunkFilter, ao as CommunicationIntent, ap as CommunicationIntentSchema, aq as ContextProposalResult, ar as ConversationTurn, as as CoveredReason, at as CoveredReasonSchema, au as CreateApplicationRunInput, av as Definition, aw as DefinitionSchema, ax as DocumentAgentGuidance, ay as DocumentAgentGuidanceSchema, az as DocumentFilters, aA as DocumentMetadata, aB as DocumentMetadataSchema, aC as DocumentNode, aD as DocumentNodeSchema, aE as DocumentPageMapEntry, aF as DocumentPageMapEntrySchema, aG as DocumentSourceNodeKind, aH as DocumentSourceNodeKindSchema, aI as DocumentSourceNodeSchema, aJ as DocumentTableOfContentsEntry, aK as DocumentTableOfContentsEntrySchema, aL as EmbedText, aM as FieldExtractionResult, aN as FieldExtractionResultSchema, aO as FieldType, aP as FieldTypeSchema, aQ as FlatPdfPlacement, aR as FlatPdfPlacementSchema, aS as InsuranceDocumentSchema, aT as LookupFill, aU as LookupFillResult, aV as LookupFillResultSchema, aW as LookupFillSchema, aX as LookupRequest, aY as LookupRequestSchema, aZ as ModelCallReport, a_ as OperationalCoverageLine, a$ as OperationalCoverageLineSchema, b0 as OperationalCoverageTerm, b1 as OperationalCoverageTermSchema, b2 as OperationalEndorsementSupport, b3 as OperationalEndorsementSupportSchema, b4 as OperationalParty, b5 as OperationalPartySchema, b6 as PLATFORM_CONFIGS, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, b9 as PlatformConfig, ba as PlatformSchema, bb as PolicyDocument, bc as PolicyDocumentSchema, bd as PolicyOperationalProfileSchema, be as PremiumLine, bf as PremiumLineSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bn as QuoteDocument, bo as QuoteDocumentSchema, bp as ReplyIntent, bq as ReplyIntentSchema, br as ResolveModelBudgetParams, bs as Section, bt as SectionSchema, bu as SourceBackedValue, bv as SourceBackedValueSchema, bw as SourceChunkSchema, bx as SourceKindSchema, by as SourceSpanBBoxSchema, bz as SourceSpanKind, bA as SourceSpanKindSchema, bB as SourceSpanLocationSchema, bC as SourceSpanRef, bD as SourceSpanRefSchema, bE as SourceSpanSchema, bF as SourceSpanTableLocationSchema, bG as SourceSpanUnitSchema, bH as Subjectivity, bI as SubjectivitySchema, bJ as Subsection, bK as SubsectionSchema, bL as UnderwritingCondition, bM as UnderwritingConditionSchema, bN as applyApplicationAnswers, bO as buildApplicationPacket, bP as buildQuestionGraphFromFields, bQ as createApplicationPipeline, bR as createApplicationRun, bS as extractQuestionGraphFromFields, bT as flattenQuestionGraph, bU as getActiveApplicationFields, bV as getNextApplicationQuestions, bW as normalizeApplicationQuestionGraph, bX as planNextApplicationQuestions, bY as proposeContextWrites, bZ as resolveModelBudget, b_ as validateApplicationPacket } from './index-q8LQXen9.js';
3
3
  import * as zod from 'zod';
4
4
  import { ZodTypeAny, z, ZodSchema } from 'zod';
5
5
  import { PDFDocument } from 'pdf-lib';
6
6
 
7
- declare function withRetry<T>(fn: () => Promise<T>, log?: LogFn): Promise<T>;
7
+ interface RetryOptions {
8
+ maxRetries?: number;
9
+ baseDelayMs?: number;
10
+ }
11
+ declare function withRetry<T>(fn: () => Promise<T>, log?: LogFn, options?: RetryOptions): Promise<T>;
8
12
 
9
13
  /**
10
14
  * Concurrency limiter — returns a function that wraps async tasks
@@ -31,6 +35,8 @@ interface SafeGenerateOptions<T> {
31
35
  onError?: (error: unknown, attempt: number) => void;
32
36
  /** Logger for pipeline status messages. */
33
37
  log?: LogFn;
38
+ /** Controls retryable provider-error backoff around the host callback. Use false when the host already owns fallback. */
39
+ retry?: RetryOptions | false;
34
40
  }
35
41
  interface SafeGenerateParams {
36
42
  prompt: string;
@@ -44,7 +50,7 @@ interface SafeGenerateParams {
44
50
  /**
45
51
  * Wraps a `generateObject` call with two layers of resilience:
46
52
  *
47
- * 1. Inner: `withRetry` handles 429 / rate-limit errors with exponential backoff
53
+ * 1. Inner: `withRetry` handles retryable provider errors with exponential backoff unless disabled.
48
54
  * 2. Outer: catches all other errors (schema validation, malformed JSON, transient API errors)
49
55
  * and retries up to `maxRetries` times. If all retries fail, returns `fallback` (if provided)
50
56
  * or re-throws.
@@ -8734,6 +8740,7 @@ interface ExtractorConfig {
8734
8740
  sourceStore?: SourceStore;
8735
8741
  qualityGate?: QualityGateMode;
8736
8742
  modelCapabilities?: ModelCapabilities;
8743
+ modelCapabilitiesByTaskKind?: Partial<Record<ModelTaskKind, ModelCapabilities>>;
8737
8744
  modelBudgetConstraints?: Partial<Record<ModelTaskKind, ModelBudgetConstraint>>;
8738
8745
  /** Optional checkpoint persistence callback. */
8739
8746
  onCheckpointSave?: (checkpoint: PipelineCheckpoint<ExtractionState>) => Promise<void>;
package/dist/index.js CHANGED
@@ -396,17 +396,19 @@ function isRetryableError(error) {
396
396
  }
397
397
  return false;
398
398
  }
399
- async function withRetry(fn, log) {
399
+ async function withRetry(fn, log, options) {
400
+ const maxRetries = options?.maxRetries ?? MAX_RETRIES;
401
+ const baseDelayMs = options?.baseDelayMs ?? BASE_DELAY_MS;
400
402
  for (let attempt = 0; ; attempt++) {
401
403
  try {
402
404
  return await fn();
403
405
  } catch (error) {
404
- if (!isRetryableError(error) || attempt >= MAX_RETRIES) {
406
+ if (!isRetryableError(error) || attempt >= maxRetries) {
405
407
  throw error;
406
408
  }
407
409
  const jitter = Math.random() * 1e3;
408
- const delay = BASE_DELAY_MS * Math.pow(2, attempt) + jitter;
409
- await log?.(`Retryable error, retrying in ${(delay / 1e3).toFixed(1)}s (attempt ${attempt + 1}/${MAX_RETRIES})...`);
410
+ const delay = baseDelayMs * Math.pow(2, attempt) + jitter;
411
+ await log?.(`Retryable error, retrying in ${(delay / 1e3).toFixed(1)}s (attempt ${attempt + 1}/${maxRetries})...`);
410
412
  await new Promise((resolve) => setTimeout(resolve, delay));
411
413
  }
412
414
  }
@@ -533,10 +535,8 @@ async function safeGenerateObject(generateObject, params, options) {
533
535
  const strictParams = { ...params, schema: toStrictSchema(params.schema) };
534
536
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
535
537
  try {
536
- const result = await withRetry(
537
- () => generateObject(strictParams),
538
- options?.log
539
- );
538
+ const generate = () => generateObject(strictParams);
539
+ const result = options?.retry === false ? await generate() : await withRetry(generate, options?.log, options?.retry);
540
540
  return {
541
541
  ...result,
542
542
  object: params.schema.parse(sanitizeNulls(result.object))
@@ -9578,11 +9578,20 @@ function coverageTextForSelection(coverage) {
9578
9578
  ])
9579
9579
  ].filter(Boolean).join(" ");
9580
9580
  }
9581
+ function coverageCleanupEntries(profile, coverageIndexes) {
9582
+ if (!coverageIndexes) {
9583
+ return profile.coverages.map((coverage, coverageIndex) => ({ coverage, coverageIndex }));
9584
+ }
9585
+ return [...new Set(coverageIndexes)].sort((left, right) => left - right).map((coverageIndex) => {
9586
+ const coverage = profile.coverages[coverageIndex];
9587
+ return coverage ? { coverage, coverageIndex } : void 0;
9588
+ }).filter((entry) => Boolean(entry));
9589
+ }
9581
9590
  function nodeTextMatchesCoverage(node, coverageTerms) {
9582
9591
  const text = nodeTextForSelection(node).toLowerCase();
9583
9592
  return coverageTerms.some((term) => term.length >= 5 && text.includes(term));
9584
9593
  }
9585
- function selectCoverageCleanupNodes(sourceTree, profile) {
9594
+ function selectCoverageCleanupNodes(sourceTree, coverages) {
9586
9595
  const nodeById = new Map(sourceTree.map((node) => [node.id, node]));
9587
9596
  const childrenByParent = /* @__PURE__ */ new Map();
9588
9597
  for (const node of sourceTree) {
@@ -9600,12 +9609,12 @@ function selectCoverageCleanupNodes(sourceTree, profile) {
9600
9609
  const current = selected.get(node.id);
9601
9610
  if (!current || score > current.score) selected.set(node.id, { node, score });
9602
9611
  };
9603
- const sourceNodeIds = uniqueStrings(profile.coverages.flatMap((coverage) => [
9612
+ const sourceNodeIds = uniqueStrings(coverages.flatMap((coverage) => [
9604
9613
  ...coverage.sourceNodeIds,
9605
9614
  ...coverage.limits.flatMap((term) => term.sourceNodeIds)
9606
9615
  ]));
9607
9616
  const coveragePages2 = /* @__PURE__ */ new Set();
9608
- const coverageTerms = uniqueStrings(profile.coverages.flatMap(
9617
+ const coverageTerms = uniqueStrings(coverages.flatMap(
9609
9618
  (coverage) => coverageTextForSelection(coverage).toLowerCase().split(/[^a-z0-9$,.]+/i).filter((part) => part.length >= 5)
9610
9619
  ));
9611
9620
  for (const id of sourceNodeIds) {
@@ -9648,8 +9657,9 @@ function selectCoverageCleanupNodes(sourceTree, profile) {
9648
9657
  (left, right) => (left.node.pageStart ?? Number.MAX_SAFE_INTEGER) - (right.node.pageStart ?? Number.MAX_SAFE_INTEGER) || left.node.order - right.node.order
9649
9658
  ).map((entry) => entry.node);
9650
9659
  }
9651
- function buildOperationalProfileCleanupPrompt(sourceTree, profile) {
9652
- const nodes = selectCoverageCleanupNodes(sourceTree, profile).map((node) => compactNode(
9660
+ function buildOperationalProfileCleanupPrompt(sourceTree, profile, options = {}) {
9661
+ const coverageEntries = coverageCleanupEntries(profile, options.coverageIndexes);
9662
+ const nodes = selectCoverageCleanupNodes(sourceTree, coverageEntries.map((entry) => entry.coverage)).map((node) => compactNode(
9653
9663
  node,
9654
9664
  node.kind === "page" || node.kind === "page_group" ? 260 : node.kind === "table_row" || node.kind === "table_cell" ? 520 : 360
9655
9665
  ));
@@ -9657,9 +9667,12 @@ function buildOperationalProfileCleanupPrompt(sourceTree, profile) {
9657
9667
  documentType: profile.documentType,
9658
9668
  policyTypes: profile.policyTypes,
9659
9669
  coverageTypes: profile.coverageTypes,
9660
- coverages: profile.coverages.map(compactCoverageForCleanup)
9670
+ coverages: coverageEntries.map(({ coverage, coverageIndex }) => compactCoverageForCleanup(coverage, coverageIndex))
9661
9671
  };
9662
9672
  return `Review and clean a source-backed operational profile projection for an insurance policy.
9673
+ ${options.label ? `
9674
+ Coverage group: ${options.label}
9675
+ ` : ""}
9663
9676
 
9664
9677
  Task:
9665
9678
  - Inspect the candidate coverage projection against the source nodes.
@@ -11744,7 +11757,8 @@ async function runVisualTableRepair(params) {
11744
11757
  if (candidates.length === 0) return { sourceTree: params.sourceTree, warnings: [] };
11745
11758
  let sourceTree = params.sourceTree;
11746
11759
  const warnings = [];
11747
- for (const [index, candidate] of candidates.entries()) {
11760
+ const repairResults = await Promise.all(candidates.map(async (candidate, index) => {
11761
+ const label = `source_tree_visual_table_repair_p${candidate.page}`;
11748
11762
  try {
11749
11763
  const budget = params.resolveBudget("extraction_source_tree", 1800);
11750
11764
  const maxTokens = Math.min(budget.maxTokens, 2400);
@@ -11758,7 +11772,7 @@ async function runVisualTableRepair(params) {
11758
11772
  taskKind: "extraction_source_tree",
11759
11773
  budgetDiagnostics: { ...budget, maxTokens },
11760
11774
  trace: {
11761
- label: `source_tree_visual_table_repair_p${candidate.page}`,
11775
+ label,
11762
11776
  startPage: candidate.page,
11763
11777
  endPage: candidate.page,
11764
11778
  batchIndex: index + 1,
@@ -11768,23 +11782,43 @@ async function runVisualTableRepair(params) {
11768
11782
  },
11769
11783
  {
11770
11784
  fallback: { tables: [], warnings: [] },
11771
- log: params.log
11785
+ maxRetries: 0,
11786
+ log: params.log,
11787
+ retry: false
11772
11788
  }
11773
11789
  );
11774
- params.trackUsage(response.usage, {
11775
- taskKind: "extraction_source_tree",
11776
- label: `source_tree_visual_table_repair_p${candidate.page}`,
11790
+ return {
11791
+ index,
11792
+ candidate,
11793
+ label,
11777
11794
  maxTokens,
11778
- durationMs: Date.now() - startedAt
11779
- });
11780
- const repair = response.object;
11781
- sourceTree = applyVisualTableRepair(sourceTree, repair);
11782
- warnings.push(...repair.warnings.map(
11783
- (warning) => `Visual table repair warning on page ${candidate.page}: ${warning}`
11784
- ));
11795
+ durationMs: Date.now() - startedAt,
11796
+ usage: response.usage,
11797
+ repair: response.object
11798
+ };
11785
11799
  } catch (error) {
11786
- warnings.push(`Visual table repair skipped on page ${candidate.page}; parsed table kept (${error instanceof Error ? error.message : String(error)})`);
11800
+ return {
11801
+ index,
11802
+ candidate,
11803
+ error: error instanceof Error ? error.message : String(error)
11804
+ };
11787
11805
  }
11806
+ }));
11807
+ for (const result of repairResults.sort((left, right) => left.index - right.index)) {
11808
+ if ("error" in result) {
11809
+ warnings.push(`Visual table repair skipped on page ${result.candidate.page}; parsed table kept (${result.error})`);
11810
+ continue;
11811
+ }
11812
+ params.trackUsage(result.usage, {
11813
+ taskKind: "extraction_source_tree",
11814
+ label: result.label,
11815
+ maxTokens: result.maxTokens,
11816
+ durationMs: result.durationMs
11817
+ });
11818
+ sourceTree = applyVisualTableRepair(sourceTree, result.repair);
11819
+ warnings.push(...result.repair.warnings.map(
11820
+ (warning) => `Visual table repair warning on page ${result.candidate.page}: ${warning}`
11821
+ ));
11788
11822
  }
11789
11823
  return { sourceTree, warnings };
11790
11824
  }
@@ -12037,9 +12071,9 @@ async function runSourceTreeExtraction(params) {
12037
12071
  };
12038
12072
  if (shouldRunSourceTreeOrganizer(sourceTree, sourceSpans)) {
12039
12073
  try {
12040
- const organizations = [];
12041
12074
  const batches = organizationBatches(sourceTree);
12042
- for (const [batchIndex, batch] of batches.entries()) {
12075
+ const organizationResults = await Promise.all(batches.map(async (batch, batchIndex) => {
12076
+ const label = batches.length > 1 ? `source_tree_organizer_${batchIndex + 1}` : "source_tree_organizer";
12043
12077
  const budget = params.resolveBudget("extraction_source_tree", 4096);
12044
12078
  const startedAt = Date.now();
12045
12079
  const response = await safeGenerateObject(
@@ -12049,20 +12083,39 @@ async function runSourceTreeExtraction(params) {
12049
12083
  schema: SourceTreeOrganizationSchema,
12050
12084
  maxTokens: budget.maxTokens,
12051
12085
  taskKind: "extraction_source_tree",
12052
- budgetDiagnostics: budget
12086
+ budgetDiagnostics: budget,
12087
+ trace: {
12088
+ label,
12089
+ batchIndex: batchIndex + 1,
12090
+ batchCount: batches.length,
12091
+ sourceBacked: true
12092
+ }
12053
12093
  },
12054
12094
  {
12055
12095
  fallback: { labels: [], groups: [] },
12056
- log: params.log
12096
+ maxRetries: 0,
12097
+ log: params.log,
12098
+ retry: false
12057
12099
  }
12058
12100
  );
12059
- localTrack(response.usage, {
12101
+ return {
12102
+ batchIndex,
12103
+ label,
12104
+ budget,
12105
+ durationMs: Date.now() - startedAt,
12106
+ usage: response.usage,
12107
+ organization: response.object
12108
+ };
12109
+ }));
12110
+ const organizations = [];
12111
+ for (const result of organizationResults.sort((left, right) => left.batchIndex - right.batchIndex)) {
12112
+ localTrack(result.usage, {
12060
12113
  taskKind: "extraction_source_tree",
12061
- label: batches.length > 1 ? `source_tree_organizer_${batchIndex + 1}` : "source_tree_organizer",
12062
- maxTokens: budget.maxTokens,
12063
- durationMs: Date.now() - startedAt
12114
+ label: result.label,
12115
+ maxTokens: result.budget.maxTokens,
12116
+ durationMs: result.durationMs
12064
12117
  });
12065
- organizations.push(response.object);
12118
+ organizations.push(result.organization);
12066
12119
  }
12067
12120
  sourceTree = applyOrganization(sourceTree, mergeOrganizationResults(organizations));
12068
12121
  } catch (error) {
@@ -12087,7 +12140,9 @@ async function runSourceTreeExtraction(params) {
12087
12140
  },
12088
12141
  {
12089
12142
  fallback: { labels: [], groups: [] },
12090
- log: params.log
12143
+ maxRetries: 0,
12144
+ log: params.log,
12145
+ retry: false
12091
12146
  }
12092
12147
  );
12093
12148
  localTrack(response.usage, {
@@ -12129,7 +12184,9 @@ async function runSourceTreeExtraction(params) {
12129
12184
  },
12130
12185
  {
12131
12186
  fallback: emptyProfile,
12132
- log: params.log
12187
+ maxRetries: 0,
12188
+ log: params.log,
12189
+ retry: false
12133
12190
  }
12134
12191
  );
12135
12192
  localTrack(response.usage, {
@@ -12162,16 +12219,23 @@ async function runSourceTreeExtraction(params) {
12162
12219
  taskKind: "extraction_coverage_cleanup",
12163
12220
  budgetDiagnostics: budget,
12164
12221
  providerOptions: params.providerOptions,
12165
- trace: { phase: "coverage_cleanup", sourceBacked: true }
12222
+ trace: {
12223
+ phase: "coverage_cleanup",
12224
+ label: "Coverage cleanup",
12225
+ itemCount: operationalProfile.coverages.length,
12226
+ sourceBacked: true
12227
+ }
12166
12228
  },
12167
12229
  {
12168
12230
  fallback: { coverageDecisions: [], warnings: [] },
12169
- log: params.log
12231
+ maxRetries: 0,
12232
+ log: params.log,
12233
+ retry: false
12170
12234
  }
12171
12235
  );
12172
12236
  localTrack(response.usage, {
12173
12237
  taskKind: "extraction_coverage_cleanup",
12174
- label: "operational_profile_cleanup",
12238
+ label: "coverage_cleanup",
12175
12239
  maxTokens: budget.maxTokens,
12176
12240
  durationMs: Date.now() - startedAt
12177
12241
  });
@@ -12231,6 +12295,7 @@ function createExtractor(config) {
12231
12295
  sourceStore,
12232
12296
  qualityGate = "warn",
12233
12297
  modelCapabilities,
12298
+ modelCapabilitiesByTaskKind,
12234
12299
  modelBudgetConstraints,
12235
12300
  onCheckpointSave
12236
12301
  } = config;
@@ -12247,10 +12312,11 @@ function createExtractor(config) {
12247
12312
  };
12248
12313
  let activeProviderOptions = providerOptions;
12249
12314
  function resolveBudget(taskKind, hintTokens) {
12315
+ const taskModelCapabilities = modelCapabilitiesByTaskKind?.[taskKind] ?? modelCapabilities;
12250
12316
  return resolveModelBudget({
12251
12317
  taskKind,
12252
12318
  hintTokens,
12253
- modelCapabilities,
12319
+ modelCapabilities: taskModelCapabilities,
12254
12320
  constraint: modelBudgetConstraints?.[taskKind]
12255
12321
  });
12256
12322
  }
@@ -12573,7 +12639,9 @@ ${sourceText}`;
12573
12639
  },
12574
12640
  {
12575
12641
  fallback: { forms: [] },
12642
+ maxRetries: 0,
12576
12643
  log,
12644
+ retry: false,
12577
12645
  onError: (err, attempt) => log?.(`Form inventory attempt ${attempt + 1} failed: ${err instanceof Error ? err.message : String(err)}`)
12578
12646
  }
12579
12647
  );