@claritylabs/cl-sdk 3.2.12 → 4.0.1

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
@@ -24,25 +24,20 @@ npm install @claritylabs/cl-sdk pdf-lib zod
24
24
  ## Quick Start
25
25
 
26
26
  ```typescript
27
- import { createExtractor } from "@claritylabs/cl-sdk";
27
+ import { buildPageSourceSpans, createExtractor } from "@claritylabs/cl-sdk";
28
28
 
29
29
  const extractor = createExtractor({
30
- generateText: async ({ prompt, system, maxTokens, taskKind, budgetDiagnostics, providerOptions }) => {
31
- const result = await yourProvider.generate({ prompt, system, maxTokens, taskKind, budgetDiagnostics, providerOptions });
32
- return { text: result.text, usage: result.usage };
33
- },
34
30
  generateObject: async ({ prompt, system, schema, maxTokens, taskKind, budgetDiagnostics, providerOptions }) => {
35
- // Pass providerOptions.pdfBase64 and/or providerOptions.images to your model
36
31
  const result = await yourProvider.generateStructured({ prompt, system, schema, maxTokens, taskKind, budgetDiagnostics, providerOptions });
37
32
  return { object: result.object, usage: result.usage };
38
33
  },
39
- concurrency: 3,
40
- extractorConcurrency: 4,
41
- formatConcurrency: 2,
42
- reviewMode: "auto",
43
34
  });
44
35
 
45
- const result = await extractor.extract(pdfBase64);
36
+ const sourceSpans = buildPageSourceSpans([
37
+ { documentId: "policy-123", sourceKind: "policy_pdf", pageNumber: 1, text: pageOneText },
38
+ ]);
39
+
40
+ const result = await extractor.extract(pdfBase64, "policy-123", { sourceSpans });
46
41
  console.log(result.sourceTree); // DocumentSourceNode[] canonical hierarchy
47
42
  console.log(result.sourceSpans); // SourceSpan[] smallest PDF evidence units
48
43
  console.log(result.operationalProfile); // Source-backed facts for policy lists, COIs, compliance
@@ -75,12 +70,14 @@ const sourceSpans = buildPageSourceSpans([
75
70
  ]);
76
71
 
77
72
  const sourceStore = new MemorySourceStore();
78
- const extractor = createExtractor({ generateText, generateObject, sourceStore });
73
+ const extractor = createExtractor({ generateObject, sourceStore });
79
74
 
80
75
  const result = await extractor.extract(pdfBase64, "policy-123", { sourceSpans });
81
76
  ```
82
77
 
83
- 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, parties, coverage units, nested coverage limit terms, deductibles/retentions, premiums, key dates, and endorsement-support facts, each with `sourceNodeIds` and `sourceSpanIds`. Source-backed identity records such as insurer, producer, contacts, named insured rows, endorsement parties, and standalone insured addresses 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, 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, and endorsement-support facts, each with `sourceNodeIds` and `sourceSpanIds`. Source-backed identity records such as insurer, producer, contacts, named insured rows, endorsement parties, and standalone insured addresses 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
+
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`.
84
81
 
85
82
  Store `result.sourceTree` in a retrievable node index and embed node `description` values for search. Keep `result.sourceSpans` as the exact PDF highlighting layer. `result.document` and its `documentOutline` remain compatibility projections for existing host screens; do not treat broad structured policy JSON as canonical extraction truth.
86
83
 
@@ -149,7 +146,6 @@ CL-SDK uses deterministic scaffolding with agentic decision points rather than f
149
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.
150
147
  - Referential coverage resolution and application/query workflows still use bounded target-specific actions when those workflows need lookup or explanation steps.
151
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.
152
- - `reviewMode: "auto"` skips the expensive LLM review pass when deterministic checks are clean and source spans are available. Use `"always"` for maximum review coverage or `"skip"` when the host owns quality review separately.
153
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.
154
150
 
155
151
  These gates reduce unnecessary provider calls while preserving reliability for edge cases where additional focused extraction or retrieval is needed.
@@ -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, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bp as ReplyIntent, bq as ReplyIntentSchema, 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, b_ as validateApplicationPacket } from './index-WjheX6Dt.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, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bp as ReplyIntent, bq as ReplyIntentSchema, 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, b_ as validateApplicationPacket } from './index-Cte-BzHF.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, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bp as ReplyIntent, bq as ReplyIntentSchema, 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, b_ as validateApplicationPacket } from './index-WjheX6Dt.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, b7 as ParsedAnswer, b8 as ParsedAnswerSchema, bg as PriorAnswer, bh as ProcessApplicationInput, bi as ProcessApplicationResult, bj as ProcessReplyInput, bk as ProcessReplyResult, bl as QuestionBatchResult, bm as QuestionBatchResultSchema, bp as ReplyIntent, bq as ReplyIntentSchema, 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, b_ as validateApplicationPacket } from './index-Cte-BzHF.js';
2
2
  import 'zod';