@claritylabs/cl-sdk 4.2.0 → 4.4.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/README.md CHANGED
@@ -75,7 +75,7 @@ const extractor = createExtractor({ generateObject, sourceStore });
75
75
  const result = await extractor.extract(pdfBase64, "policy-123", { sourceSpans });
76
76
  ```
77
77
 
78
- When source spans are available, extraction returns `sourceTree`, `sourceSpans`, `operationalProfile`, `warnings`, `tokenUsage`, and `performanceReport`. The source tree is canonical for policy wording and hierarchy. The extractor groups parser-provided page, title, table, row, and text spans into declarations, policy forms, endorsements, sections, and schedules without running a separate form-inventory, page-map, or source-tree-organizer model call. The operational profile model receives a bounded packet of high-value declaration, schedule, premium, producer, endorsement, and coverage evidence rather than the full document wording. The operational profile contains model-extracted policy metadata, ACORD `linesOfBusiness`, parties, coverage units, nested coverage limit terms, deductibles/retentions, premiums, key dates, endorsement-support facts, and source-backed `declarationFacts` for named-insured identity details such as mailing address, DBA, entity type, tax ID, and additional named insured rows. Each fact keeps `sourceNodeIds` and `sourceSpanIds`. Source-backed identity records such as insurer, producer, contacts, named insured rows, endorsement parties, standalone insured addresses, and declaration facts must include non-empty `sourceSpanIds`. After extraction, a bounded model cleanup pass may keep, drop, or update existing coverage rows and terms by index; the SDK enforces the schema and rejects source IDs that are not present in the current source tree/spans. Endorsement schedules are modeled as whole endorsement coverage units with their own `limits[]` terms instead of unrelated flat rows like `Aggregate Limit`.
78
+ When source spans are available, extraction returns `sourceTree`, `sourceSpans`, `operationalProfile`, `warnings`, `tokenUsage`, and `performanceReport`. The source tree is canonical for policy wording and hierarchy. The extractor groups parser-provided page, title, table, row, and text spans into declarations, policy forms, endorsements, sections, and schedules without running a separate form-inventory, page-map, or source-tree-organizer model call. The operational profile model receives a bounded packet of high-value declaration, schedule, premium, policy-party, operations-description, endorsement, and coverage evidence rather than the full document wording. The operational profile contains model-extracted policy metadata, ACORD `linesOfBusiness`, a source-backed insured operations description, policy-scoped parties and their available structured addresses, coverage units, nested coverage limit terms, deductibles/retentions, premiums, key dates, endorsement-support facts, and source-backed `declarationFacts` for named-insured identity details such as mailing address, DBA, entity type, tax ID, and additional named insured rows. Each fact keeps `sourceNodeIds` and `sourceSpanIds`. The compatibility document projection materializes complete named-insured, producer, and insurer addresses while partial and MGA/administrator addresses remain available in `operationalProfile.parties`. Source-backed identity records such as insurer, producer, contacts, named insured rows, endorsement parties, standalone insured addresses, and declaration facts must include non-empty `sourceSpanIds`. After extraction, a bounded model cleanup pass may keep, drop, or update existing coverage rows and terms by index; the SDK enforces the schema and rejects source IDs that are not present in the current source tree/spans. Endorsement schedules are modeled as whole endorsement coverage units with their own `limits[]` terms instead of unrelated flat rows like `Aggregate Limit`.
79
79
 
80
80
  CL SDK 4.0 replaces the old `PolicyType` enum and operational-profile `policyTypes` field with ACORD line of business codes. Use `AcordLobCode`, `AcordLobCodeSchema`, `ACORD_LOB_CODES`, `ACORD_LOB_LABELS`, `LEGACY_POLICY_TYPE_TO_LOB`, `PERSONAL_LOB_CODES`, `normalizeOperationalLinesOfBusiness`, and `resolveOperationalProfileLinesOfBusiness`. Serialized legacy profiles with `policyTypes` are still accepted by `PolicyOperationalProfileSchema` and normalize to `linesOfBusiness`.
81
81
 
@@ -143,7 +143,7 @@ Every SDK model callback may receive `taskKind`, `budgetDiagnostics`, and `trace
143
143
  CL-SDK uses deterministic scaffolding with agentic decision points rather than fixed all-tools-all-the-time chains:
144
144
 
145
145
  - Policy extraction requires caller-provided source spans and does not run the older form-inventory, page-map, focused-extractor, or source-tree-organizer model calls.
146
- - Source-tree construction stays deterministic from parser spans; the model is used for the operational profile and optional coverage cleanup because those are end-user facts.
146
+ - Source-tree construction stays deterministic from parser spans; models are used for the operational profile, opt-in document-wide coverage recovery, and coverage cleanup because those are end-user facts. Recovery uses compact sketches for every page and bounded source-cited region batches.
147
147
  - Referential coverage resolution and application/query workflows still use bounded target-specific actions when those workflows need lookup or explanation steps.
148
148
  - Formatting skips the LLM cleanup pass for plain prose and formats long or noisy markdown/table/list content in parallel batches outside the v3 source-span extraction path.
149
149
  - Application processing plans optional backfill, context auto-fill, document search, batching, reply parsing, lookup, explanations, and next-batch email generation based on current active question state. Conditional fields that are not active are skipped until their parent answers trigger them.
@@ -1,2 +1,2 @@
1
- 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, C as ApplicationEmailReviewSchema, E as ApplicationField, F as ApplicationFieldSchema, H as ApplicationListFilters, J as ApplicationNextQuestions, K as ApplicationPacket, N 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, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, aq as ContextProposalResult, av as CreateApplicationRunInput, aN as FieldExtractionResult, aO as FieldExtractionResultSchema, aP as FieldType, aQ as FieldTypeSchema, aR as FlatPdfPlacement, aS as FlatPdfPlacementSchema, aU as LookupFill, aV as LookupFillResult, aW as LookupFillResultSchema, aX as LookupFillSchema, aY as LookupRequest, aZ as LookupRequestSchema, bb as ParsedAnswer, bc as ParsedAnswerSchema, bk as PriorAnswer, bl as ProcessApplicationInput, bm as ProcessApplicationResult, bn as ProcessReplyInput, bo as ProcessReplyResult, bp as QuestionBatchResult, bq as QuestionBatchResultSchema, bt as ReplyIntent, bu as ReplyIntentSchema, bR as applyApplicationAnswers, bS as buildApplicationPacket, bT as buildQuestionGraphFromFields, bU as createApplicationPipeline, bV as createApplicationRun, bW as extractQuestionGraphFromFields, bX as flattenQuestionGraph, bY as getActiveApplicationFields, bZ as getNextApplicationQuestions, b_ as normalizeApplicationQuestionGraph, b$ as planNextApplicationQuestions, c0 as proposeContextWrites, c2 as validateApplicationPacket } from './index-C9XfOdmx.mjs';
1
+ 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, C as ApplicationEmailReviewSchema, E as ApplicationField, F as ApplicationFieldSchema, H as ApplicationListFilters, J as ApplicationNextQuestions, K as ApplicationPacket, N 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, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, aq as ContextProposalResult, av as CreateApplicationRunInput, aN as FieldExtractionResult, aO as FieldExtractionResultSchema, aP as FieldType, aQ as FieldTypeSchema, aR as FlatPdfPlacement, aS as FlatPdfPlacementSchema, aU as LookupFill, aV as LookupFillResult, aW as LookupFillResultSchema, aX as LookupFillSchema, aY as LookupRequest, aZ as LookupRequestSchema, bl as ParsedAnswer, bm as ParsedAnswerSchema, bu as PriorAnswer, bv as ProcessApplicationInput, bw as ProcessApplicationResult, bx as ProcessReplyInput, by as ProcessReplyResult, bz as QuestionBatchResult, bA as QuestionBatchResultSchema, bD as ReplyIntent, bE as ReplyIntentSchema, b$ as applyApplicationAnswers, c0 as buildApplicationPacket, c1 as buildQuestionGraphFromFields, c2 as createApplicationPipeline, c3 as createApplicationRun, c4 as extractQuestionGraphFromFields, c5 as flattenQuestionGraph, c6 as getActiveApplicationFields, c7 as getNextApplicationQuestions, c8 as normalizeApplicationQuestionGraph, c9 as planNextApplicationQuestions, ca as proposeContextWrites, cc as validateApplicationPacket } from './index-CReSzyKJ.mjs';
2
2
  import 'zod';
@@ -1,2 +1,2 @@
1
- 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, C as ApplicationEmailReviewSchema, E as ApplicationField, F as ApplicationFieldSchema, H as ApplicationListFilters, J as ApplicationNextQuestions, K as ApplicationPacket, N 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, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, aq as ContextProposalResult, av as CreateApplicationRunInput, aN as FieldExtractionResult, aO as FieldExtractionResultSchema, aP as FieldType, aQ as FieldTypeSchema, aR as FlatPdfPlacement, aS as FlatPdfPlacementSchema, aU as LookupFill, aV as LookupFillResult, aW as LookupFillResultSchema, aX as LookupFillSchema, aY as LookupRequest, aZ as LookupRequestSchema, bb as ParsedAnswer, bc as ParsedAnswerSchema, bk as PriorAnswer, bl as ProcessApplicationInput, bm as ProcessApplicationResult, bn as ProcessReplyInput, bo as ProcessReplyResult, bp as QuestionBatchResult, bq as QuestionBatchResultSchema, bt as ReplyIntent, bu as ReplyIntentSchema, bR as applyApplicationAnswers, bS as buildApplicationPacket, bT as buildQuestionGraphFromFields, bU as createApplicationPipeline, bV as createApplicationRun, bW as extractQuestionGraphFromFields, bX as flattenQuestionGraph, bY as getActiveApplicationFields, bZ as getNextApplicationQuestions, b_ as normalizeApplicationQuestionGraph, b$ as planNextApplicationQuestions, c0 as proposeContextWrites, c2 as validateApplicationPacket } from './index-C9XfOdmx.js';
1
+ 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, C as ApplicationEmailReviewSchema, E as ApplicationField, F as ApplicationFieldSchema, H as ApplicationListFilters, J as ApplicationNextQuestions, K as ApplicationPacket, N 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, ak as BackfillProvider, al as BuildApplicationPacketInput, am as BuildApplicationPacketResult, aq as ContextProposalResult, av as CreateApplicationRunInput, aN as FieldExtractionResult, aO as FieldExtractionResultSchema, aP as FieldType, aQ as FieldTypeSchema, aR as FlatPdfPlacement, aS as FlatPdfPlacementSchema, aU as LookupFill, aV as LookupFillResult, aW as LookupFillResultSchema, aX as LookupFillSchema, aY as LookupRequest, aZ as LookupRequestSchema, bl as ParsedAnswer, bm as ParsedAnswerSchema, bu as PriorAnswer, bv as ProcessApplicationInput, bw as ProcessApplicationResult, bx as ProcessReplyInput, by as ProcessReplyResult, bz as QuestionBatchResult, bA as QuestionBatchResultSchema, bD as ReplyIntent, bE as ReplyIntentSchema, b$ as applyApplicationAnswers, c0 as buildApplicationPacket, c1 as buildQuestionGraphFromFields, c2 as createApplicationPipeline, c3 as createApplicationRun, c4 as extractQuestionGraphFromFields, c5 as flattenQuestionGraph, c6 as getActiveApplicationFields, c7 as getNextApplicationQuestions, c8 as normalizeApplicationQuestionGraph, c9 as planNextApplicationQuestions, ca as proposeContextWrites, cc as validateApplicationPacket } from './index-CReSzyKJ.js';
2
2
  import 'zod';
@@ -1610,9 +1610,45 @@ var OperationalCoverageLineSchema = import_zod3.z.object({
1610
1610
  sourceNodeIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),
1611
1611
  sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([])
1612
1612
  });
1613
+ var OperationalCoverageScheduleValueSchema = import_zod3.z.object({
1614
+ label: import_zod3.z.string(),
1615
+ value: import_zod3.z.string()
1616
+ });
1617
+ var OperationalCoverageScheduleItemSchema = import_zod3.z.object({
1618
+ label: import_zod3.z.string(),
1619
+ description: import_zod3.z.string().optional(),
1620
+ values: import_zod3.z.array(OperationalCoverageScheduleValueSchema).default([]),
1621
+ sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([])
1622
+ });
1623
+ var OperationalCoverageScheduleSchema = import_zod3.z.object({
1624
+ name: import_zod3.z.string(),
1625
+ kind: import_zod3.z.enum(["vehicle", "property", "location", "other"]),
1626
+ description: import_zod3.z.string().optional(),
1627
+ items: import_zod3.z.array(OperationalCoverageScheduleItemSchema).default([]),
1628
+ sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),
1629
+ pageStart: import_zod3.z.number().int().positive().optional(),
1630
+ pageEnd: import_zod3.z.number().int().positive().optional()
1631
+ });
1632
+ var OperationalPremiumLineSchema = import_zod3.z.object({
1633
+ line: import_zod3.z.string(),
1634
+ amount: import_zod3.z.string(),
1635
+ amountValue: import_zod3.z.number().optional(),
1636
+ sourceNodeIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),
1637
+ sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([])
1638
+ });
1639
+ var OperationalTaxFeeItemSchema = import_zod3.z.object({
1640
+ name: import_zod3.z.string(),
1641
+ amount: import_zod3.z.string(),
1642
+ amountValue: import_zod3.z.number().optional(),
1643
+ type: import_zod3.z.string().optional(),
1644
+ description: import_zod3.z.string().optional(),
1645
+ sourceNodeIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),
1646
+ sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([])
1647
+ });
1613
1648
  var OperationalPartySchema = import_zod3.z.object({
1614
1649
  role: import_zod3.z.string(),
1615
1650
  name: import_zod3.z.string(),
1651
+ address: OperationalAddressSchema.optional(),
1616
1652
  sourceNodeIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),
1617
1653
  sourceSpanIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([])
1618
1654
  });
@@ -1650,8 +1686,13 @@ var PolicyOperationalProfileSchema = import_zod3.z.preprocess(
1650
1686
  expirationDate: SourceBackedValueSchema.optional(),
1651
1687
  retroactiveDate: SourceBackedValueSchema.optional(),
1652
1688
  premium: SourceBackedValueSchema.optional(),
1689
+ operationsDescription: SourceBackedValueSchema.optional(),
1653
1690
  declarationFacts: import_zod3.z.array(OperationalDeclarationFactSchema).default([]),
1654
1691
  coverages: import_zod3.z.array(OperationalCoverageLineSchema).default([]),
1692
+ coverageSchedules: import_zod3.z.array(OperationalCoverageScheduleSchema).optional(),
1693
+ premiumBreakdown: import_zod3.z.array(OperationalPremiumLineSchema).optional(),
1694
+ taxesAndFees: import_zod3.z.array(OperationalTaxFeeItemSchema).optional(),
1695
+ totalCost: SourceBackedValueSchema.optional(),
1655
1696
  parties: import_zod3.z.array(OperationalPartySchema).default([]),
1656
1697
  endorsementSupport: import_zod3.z.array(OperationalEndorsementSupportSchema).default([]),
1657
1698
  sourceNodeIds: import_zod3.z.array(import_zod3.z.string().min(1)).default([]),