@happyvertical/smrt-ingestion 0.0.0-stage → 0.55.6
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/AGENTS.md +35 -0
- package/CLAUDE.md +1 -0
- package/EXTRACTION.md +120 -0
- package/LICENSE +7 -0
- package/PROPOSALS.md +173 -0
- package/README.md +150 -2
- package/agents/execution.md +132 -0
- package/dist/__smrt-register__.d.ts +2 -0
- package/dist/__smrt-register__.d.ts.map +1 -0
- package/dist/chunks/execution-C6HJvl9e.js +7667 -0
- package/dist/chunks/execution-C6HJvl9e.js.map +1 -0
- package/dist/chunks/execution-internal-DWteDHM2.js +7 -0
- package/dist/chunks/execution-internal-DWteDHM2.js.map +1 -0
- package/dist/chunks/extraction-bseWZuWN.js +293 -0
- package/dist/chunks/extraction-bseWZuWN.js.map +1 -0
- package/dist/chunks/extraction-providers-C66ADDVe.js +433 -0
- package/dist/chunks/extraction-providers-C66ADDVe.js.map +1 -0
- package/dist/dto.d.ts +54 -0
- package/dist/dto.d.ts.map +1 -0
- package/dist/dto.js +0 -0
- package/dist/execution-contracts.d.ts +131 -0
- package/dist/execution-contracts.d.ts.map +1 -0
- package/dist/execution-dto.d.ts +70 -0
- package/dist/execution-dto.d.ts.map +1 -0
- package/dist/execution-internal.d.ts +7 -0
- package/dist/execution-internal.d.ts.map +1 -0
- package/dist/execution.d.ts +64 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +2 -0
- package/dist/extraction-providers.d.ts +35 -0
- package/dist/extraction-providers.d.ts.map +1 -0
- package/dist/extraction-types.d.ts +94 -0
- package/dist/extraction-types.d.ts.map +1 -0
- package/dist/extraction-worker.d.ts +2 -0
- package/dist/extraction-worker.d.ts.map +1 -0
- package/dist/extraction-worker.js +81 -0
- package/dist/extraction-worker.js.map +1 -0
- package/dist/extraction.d.ts +49 -0
- package/dist/extraction.d.ts.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/manifest.json +4091 -0
- package/dist/models.d.ts +186 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +923 -0
- package/dist/models.js.map +1 -0
- package/dist/policy.d.ts +46 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/proposal-contracts.d.ts +85 -0
- package/dist/proposal-contracts.d.ts.map +1 -0
- package/dist/proposal-dto.d.ts +120 -0
- package/dist/proposal-dto.d.ts.map +1 -0
- package/dist/proposal-sdk.d.ts +12 -0
- package/dist/proposal-sdk.d.ts.map +1 -0
- package/dist/proposal-validation.d.ts +188 -0
- package/dist/proposal-validation.d.ts.map +1 -0
- package/dist/proposals.d.ts +41 -0
- package/dist/proposals.d.ts.map +1 -0
- package/dist/proposals.js +865 -0
- package/dist/proposals.js.map +1 -0
- package/dist/server.d.ts +200 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1588 -0
- package/dist/server.js.map +1 -0
- package/dist/smrt-knowledge.json +1621 -0
- package/dist/sources/common.d.ts +32 -0
- package/dist/sources/common.d.ts.map +1 -0
- package/dist/sources/email.d.ts +40 -0
- package/dist/sources/email.d.ts.map +1 -0
- package/dist/sources/http.d.ts +30 -0
- package/dist/sources/http.d.ts.map +1 -0
- package/dist/sources/index.d.ts +8 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/watch-folder.d.ts +27 -0
- package/dist/sources/watch-folder.d.ts.map +1 -0
- package/package.json +86 -3
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { PrincipalRun } from '@happyvertical/smrt-agents';
|
|
2
|
+
import type { CapabilityDeclaration } from '@happyvertical/smrt-types';
|
|
3
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
4
|
+
import type { ExecutionCeiling, IntakeValues } from './execution-dto.js';
|
|
5
|
+
import type { IntakePolicy, IntakePolicyLayer } from './policy.js';
|
|
6
|
+
import type { HandlerDiscovery } from './proposal-contracts.js';
|
|
7
|
+
import type { IngestionScope } from './server.js';
|
|
8
|
+
export type * from './execution-dto.js';
|
|
9
|
+
export interface HandlerContext {
|
|
10
|
+
db: DatabaseInterface;
|
|
11
|
+
scope: Readonly<IngestionScope>;
|
|
12
|
+
itemId: string;
|
|
13
|
+
principal?: PrincipalRun;
|
|
14
|
+
policy: Readonly<IntakePolicy>;
|
|
15
|
+
/** Must check current tenant/confidential ownership and optionally CAS revision. */
|
|
16
|
+
assertTarget(model: string, id: string, revision?: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export interface HandlerPreview {
|
|
19
|
+
display: IntakeValues;
|
|
20
|
+
normalizedArgs: IntakeValues;
|
|
21
|
+
targetPreconditions: Array<{
|
|
22
|
+
model: string;
|
|
23
|
+
id: string;
|
|
24
|
+
revision: string;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
interface HandlerBase {
|
|
28
|
+
/** Optional proposal discovery on this same authoritative execution catalog. */
|
|
29
|
+
discovery?: HandlerDiscovery;
|
|
30
|
+
id: string;
|
|
31
|
+
version: string;
|
|
32
|
+
description: string;
|
|
33
|
+
argsSchema: IntakeValues;
|
|
34
|
+
resultSchema: IntakeValues;
|
|
35
|
+
/** Schema-allowlisted record-ID fields, never arbitrary expression values. */
|
|
36
|
+
resultModels: Record<string, string>;
|
|
37
|
+
preview(args: IntakeValues, context: HandlerContext): Promise<HandlerPreview>;
|
|
38
|
+
validate(args: IntakeValues, context: HandlerContext): Promise<{
|
|
39
|
+
ok: boolean;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export interface OperationHandler extends HandlerBase {
|
|
43
|
+
operation: {
|
|
44
|
+
model: string;
|
|
45
|
+
action: string;
|
|
46
|
+
version: string;
|
|
47
|
+
};
|
|
48
|
+
/** Explicit application adapter declaration; checked against registered model. */
|
|
49
|
+
capability: CapabilityDeclaration;
|
|
50
|
+
execution: {
|
|
51
|
+
kind: 'database';
|
|
52
|
+
apply(args: IntakeValues, context: HandlerContext): Promise<IntakeValues>;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'external';
|
|
55
|
+
submit(args: IntakeValues, context: HandlerContext, idempotencyKey: string): Promise<IntakeValues>;
|
|
56
|
+
reconcile(context: HandlerContext, idempotencyKey: string): Promise<{
|
|
57
|
+
kind: 'succeeded';
|
|
58
|
+
result: IntakeValues;
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'not_applied';
|
|
61
|
+
} | {
|
|
62
|
+
kind: 'unknown';
|
|
63
|
+
}>;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export interface PlanHandler extends HandlerBase {
|
|
67
|
+
operation: {
|
|
68
|
+
playbookKey: string;
|
|
69
|
+
definitionHash: string;
|
|
70
|
+
};
|
|
71
|
+
expand(args: IntakeValues, definition: unknown): Promise<Array<{
|
|
72
|
+
stepIndex: number;
|
|
73
|
+
handlerId: string;
|
|
74
|
+
handlerVersion: string;
|
|
75
|
+
args: IntakeValues;
|
|
76
|
+
resultBindings: Record<string, {
|
|
77
|
+
stepIndex: number;
|
|
78
|
+
resultField: string;
|
|
79
|
+
expectedModel: string;
|
|
80
|
+
}>;
|
|
81
|
+
}>>;
|
|
82
|
+
}
|
|
83
|
+
export type IntakeHandler = OperationHandler | PlanHandler;
|
|
84
|
+
export interface ExecutionAccessInput {
|
|
85
|
+
db: DatabaseInterface;
|
|
86
|
+
scope: Readonly<IngestionScope>;
|
|
87
|
+
itemId: string;
|
|
88
|
+
capturedCeiling: Readonly<ExecutionCeiling>;
|
|
89
|
+
operation: 'preview' | 'review' | 'execute' | 'read' | 'reconcile';
|
|
90
|
+
handlerId: string;
|
|
91
|
+
}
|
|
92
|
+
/** Every callback is server configuration. It must never be deserialized from input. */
|
|
93
|
+
export interface IntakeExecutionOptions {
|
|
94
|
+
handlers: readonly IntakeHandler[];
|
|
95
|
+
/** Resolve current policy and grants using this exact executor. */
|
|
96
|
+
authorize(input: ExecutionAccessInput): Promise<{
|
|
97
|
+
allowed: boolean;
|
|
98
|
+
reviewer: boolean;
|
|
99
|
+
principalId: string;
|
|
100
|
+
permissions: string[];
|
|
101
|
+
policy: [
|
|
102
|
+
IntakePolicyLayer,
|
|
103
|
+
IntakePolicyLayer,
|
|
104
|
+
IntakePolicyLayer,
|
|
105
|
+
...IntakePolicyLayer[]
|
|
106
|
+
];
|
|
107
|
+
/** Host serializes/revalidates grant changes within this mutation boundary. */
|
|
108
|
+
mutationBoundary: 'serialized';
|
|
109
|
+
}>;
|
|
110
|
+
evaluateAutomatic?(input: {
|
|
111
|
+
bindingHash: string;
|
|
112
|
+
handlerId: string;
|
|
113
|
+
context: HandlerContext;
|
|
114
|
+
}): Promise<{
|
|
115
|
+
eligible: boolean;
|
|
116
|
+
evaluationVersion: string;
|
|
117
|
+
certainty: number;
|
|
118
|
+
}>;
|
|
119
|
+
/** Lock/serialize target ownership and revision checks with writers on this executor. */
|
|
120
|
+
assertTarget(input: {
|
|
121
|
+
db: DatabaseInterface;
|
|
122
|
+
scope: Readonly<IngestionScope>;
|
|
123
|
+
itemId: string;
|
|
124
|
+
model: string;
|
|
125
|
+
id: string;
|
|
126
|
+
revision?: string;
|
|
127
|
+
}): Promise<{
|
|
128
|
+
revision: string;
|
|
129
|
+
}>;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=execution-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-contracts.d.ts","sourceRoot":"","sources":["../src/execution-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Browser-safe execution messages. Authority and handler callbacks live on the server. */
|
|
2
|
+
export type IntakeValues = Record<string, unknown>;
|
|
3
|
+
/** Captured by the authenticated source host, not by extracted content. */
|
|
4
|
+
export interface ExecutionCeiling {
|
|
5
|
+
principalId: string;
|
|
6
|
+
permissions: string[];
|
|
7
|
+
handlers: string[];
|
|
8
|
+
operations: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface ResultReference {
|
|
11
|
+
actionId: string;
|
|
12
|
+
proposalRevision: number;
|
|
13
|
+
resultField: string;
|
|
14
|
+
expectedModel: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PreviewProposalInput {
|
|
17
|
+
itemId: string;
|
|
18
|
+
actionId: string;
|
|
19
|
+
attemptId: string;
|
|
20
|
+
expectedRevision: number;
|
|
21
|
+
requestId: string;
|
|
22
|
+
handlerId: string;
|
|
23
|
+
handlerVersion: string;
|
|
24
|
+
args: IntakeValues;
|
|
25
|
+
dependencies?: Record<string, ResultReference>;
|
|
26
|
+
}
|
|
27
|
+
export interface ProposalReview {
|
|
28
|
+
actionId: string;
|
|
29
|
+
proposalId: string;
|
|
30
|
+
revision: number;
|
|
31
|
+
reviewVersion: number;
|
|
32
|
+
bindingHash: string;
|
|
33
|
+
display: IntakeValues;
|
|
34
|
+
state: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ReviewInput {
|
|
37
|
+
actionId: string;
|
|
38
|
+
expectedRevision: number;
|
|
39
|
+
expectedReviewVersion: number;
|
|
40
|
+
bindingHash: string;
|
|
41
|
+
requestId: string;
|
|
42
|
+
decision: 'approve' | 'reject' | 'defer' | 'correct';
|
|
43
|
+
reason?: string;
|
|
44
|
+
correctedArgs?: IntakeValues;
|
|
45
|
+
}
|
|
46
|
+
export interface ActionResult {
|
|
47
|
+
state: 'succeeded' | 'failed' | 'outcome_unknown' | 'executing' | 'waiting_review';
|
|
48
|
+
actionId: string;
|
|
49
|
+
result?: IntakeValues;
|
|
50
|
+
resultDigest?: string;
|
|
51
|
+
tombstone?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface PreviewPlanInput {
|
|
54
|
+
itemId: string;
|
|
55
|
+
attemptId: string;
|
|
56
|
+
planKey: string;
|
|
57
|
+
expectedRevision: number;
|
|
58
|
+
requestId: string;
|
|
59
|
+
handlerId: string;
|
|
60
|
+
handlerVersion: string;
|
|
61
|
+
args: IntakeValues;
|
|
62
|
+
}
|
|
63
|
+
export interface PlanReview {
|
|
64
|
+
id: string;
|
|
65
|
+
key: string;
|
|
66
|
+
revision: number;
|
|
67
|
+
digest: string;
|
|
68
|
+
steps: ProposalReview[];
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=execution-dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-dto.d.ts","sourceRoot":"","sources":["../src/execution-dto.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAChD;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AACD,MAAM,WAAW,YAAY;IAC3B,KAAK,EACD,WAAW,GACX,QAAQ,GACR,iBAAiB,GACjB,WAAW,GACX,gBAAgB,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
|
+
import type { HandlerContext } from './execution-contracts.js';
|
|
3
|
+
export declare const discoveryTransaction: unique symbol;
|
|
4
|
+
export declare const generationSnapshotRead: unique symbol;
|
|
5
|
+
export type TransactionRunner<T> = (work: (db: DatabaseInterface) => Promise<T>) => Promise<T>;
|
|
6
|
+
export type DiscoveryGate = <T>(handlerId: string, handlerVersion: string, work: (context: HandlerContext) => Promise<T>) => Promise<T>;
|
|
7
|
+
//# sourceMappingURL=execution-internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-internal.d.ts","sourceRoot":"","sources":["../src/execution-internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,oBAAoB,eAA2C,CAAC;AAC7E,eAAO,MAAM,sBAAsB,eAElC,CAAC;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CACjC,IAAI,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,KAC1C,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { JobExecutionContext } from '@happyvertical/smrt-jobs';
|
|
2
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
3
|
+
import type { ActionResult, HandlerContext, IntakeExecutionOptions, PlanReview, PreviewPlanInput, PreviewProposalInput, ProposalReview, ReviewInput } from './execution-contracts.js';
|
|
4
|
+
import { type DiscoveryGate, discoveryTransaction, type TransactionRunner } from './execution-internal.js';
|
|
5
|
+
import type { IngestionOptions } from './server.js';
|
|
6
|
+
export type * from './execution-contracts.js';
|
|
7
|
+
export type { IntakePolicy, IntakePolicyLayer } from './policy.js';
|
|
8
|
+
export { resolveIntakePolicy } from './policy.js';
|
|
9
|
+
export declare function intakeBindingDigest(value: unknown): string;
|
|
10
|
+
/** Server-only authoritative review/apply. Construct only from authenticated host options. */
|
|
11
|
+
export declare class IntakeExecutionService {
|
|
12
|
+
private readonly options;
|
|
13
|
+
private readonly retentionIntents;
|
|
14
|
+
private readonly db;
|
|
15
|
+
private readonly config;
|
|
16
|
+
private readonly scope;
|
|
17
|
+
private readonly ajv;
|
|
18
|
+
constructor(options: IngestionOptions, config: IntakeExecutionOptions);
|
|
19
|
+
private now;
|
|
20
|
+
private tx;
|
|
21
|
+
private withRetention;
|
|
22
|
+
private restoreRetention;
|
|
23
|
+
private redactExecution;
|
|
24
|
+
private narrowRetention;
|
|
25
|
+
private rows;
|
|
26
|
+
private insert;
|
|
27
|
+
private item;
|
|
28
|
+
private ceiling;
|
|
29
|
+
private handler;
|
|
30
|
+
private operation;
|
|
31
|
+
private validate;
|
|
32
|
+
private access;
|
|
33
|
+
private principal;
|
|
34
|
+
/** Current discovery authority. Trusted callbacks use context.db for bounded reads. */
|
|
35
|
+
withDiscoveryContext<T>(itemId: string, handlerId: string, handlerVersion: string, work: (context: HandlerContext) => Promise<T>): Promise<T>;
|
|
36
|
+
/** Keep retention restoration outside the supplied foundation transaction. */
|
|
37
|
+
[discoveryTransaction]<T>(run: TransactionRunner<T>, itemId: string, work: (db: DatabaseInterface, authorize: DiscoveryGate) => Promise<T>): Promise<T>;
|
|
38
|
+
private discoveryContext;
|
|
39
|
+
private bound;
|
|
40
|
+
private review;
|
|
41
|
+
getAction(actionId: string): Promise<ProposalReview>;
|
|
42
|
+
private buildBinding;
|
|
43
|
+
private publish;
|
|
44
|
+
previewProposal(input: PreviewProposalInput): Promise<ProposalReview>;
|
|
45
|
+
submitDecision(input: ReviewInput): Promise<ProposalReview>;
|
|
46
|
+
private verifyEvidence;
|
|
47
|
+
private approved;
|
|
48
|
+
private arguments;
|
|
49
|
+
private retained;
|
|
50
|
+
private successful;
|
|
51
|
+
private finish;
|
|
52
|
+
applyAction(actionId: string): Promise<ActionResult>;
|
|
53
|
+
reconcileAction(actionId: string): Promise<ActionResult>;
|
|
54
|
+
/** Machine authorization is separate provenance, never a fabricated human decision. */
|
|
55
|
+
authorizeAutomatic(actionId: string): Promise<ProposalReview>;
|
|
56
|
+
previewPlan(input: PreviewPlanInput): Promise<PlanReview>;
|
|
57
|
+
applyPlan(planId: string): Promise<ActionResult[]>;
|
|
58
|
+
}
|
|
59
|
+
/** A jobs answer only wakes execution; the ledger's authoritative decision still gates apply. */
|
|
60
|
+
export declare function continueIntakeReview(service: {
|
|
61
|
+
getAction(id: string): Promise<ProposalReview>;
|
|
62
|
+
applyAction(id: string): Promise<ActionResult>;
|
|
63
|
+
}, actionId: string, task: NonNullable<JobExecutionContext['task']>): Promise<ActionResult>;
|
|
64
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AIInterface } from '@happyvertical/ai';
|
|
2
|
+
import type { OCRCapabilities, OCRImage, OCROptions, OCRResult } from '@happyvertical/ocr';
|
|
3
|
+
import type { PDFReader } from '@happyvertical/pdf';
|
|
4
|
+
import type { Transcriber } from '@happyvertical/speech';
|
|
5
|
+
import type { IntakeFailure } from './dto.js';
|
|
6
|
+
import type { ExtractionRequest, ExtractionResult, ProviderIdentity } from './extraction-types.js';
|
|
7
|
+
export interface ExtractionProviders {
|
|
8
|
+
pdf?: {
|
|
9
|
+
client: Pick<PDFReader, 'checkCapabilities' | 'extractMetadata' | 'extractText' | 'renderPages'>;
|
|
10
|
+
identity: ProviderIdentity;
|
|
11
|
+
};
|
|
12
|
+
ocr?: {
|
|
13
|
+
performOCR(images: OCRImage[], options?: OCROptions): Promise<OCRResult>;
|
|
14
|
+
capabilities(): Promise<OCRCapabilities>;
|
|
15
|
+
identity: ProviderIdentity;
|
|
16
|
+
};
|
|
17
|
+
speech?: {
|
|
18
|
+
client: Transcriber;
|
|
19
|
+
identity: ProviderIdentity;
|
|
20
|
+
};
|
|
21
|
+
vision?: {
|
|
22
|
+
client: Pick<AIInterface, 'chat' | 'getCapabilities'>;
|
|
23
|
+
identity: ProviderIdentity;
|
|
24
|
+
};
|
|
25
|
+
imageMode?: 'ocr' | 'vision';
|
|
26
|
+
}
|
|
27
|
+
export declare class ExtractionFailure extends Error {
|
|
28
|
+
readonly category: IntakeFailure;
|
|
29
|
+
constructor(category: IntakeFailure);
|
|
30
|
+
}
|
|
31
|
+
export declare function emptyExtraction(request: ExtractionRequest): ExtractionResult;
|
|
32
|
+
export declare function validateExtractionRequest(request: ExtractionRequest): void;
|
|
33
|
+
/** SDK-boundary normalization. Production calls this only inside a disposable worker. */
|
|
34
|
+
export declare function extractWithProviders(request: ExtractionRequest, providers: ExtractionProviders, progress?: (result: ExtractionResult) => void): Promise<ExtractionResult>;
|
|
35
|
+
//# sourceMappingURL=extraction-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-providers.d.ts","sourceRoot":"","sources":["../src/extraction-providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,SAAS,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAEV,iBAAiB,EACjB,gBAAgB,EAEhB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE,IAAI,CACV,SAAS,EACT,mBAAmB,GAAG,iBAAiB,GAAG,aAAa,GAAG,aAAa,CACxE,CAAC;QACF,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACzE,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QACzC,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC;QACtD,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC9B;AACD,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa;gBAAvB,QAAQ,EAAE,aAAa;CAG7C;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAmB5E;AACD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAU1E;AACD,yFAAyF;AACzF,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CAkc3B"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { IntakeEvidenceDTO, IntakeFailure } from './dto.js';
|
|
2
|
+
export interface ExtractionLimits {
|
|
3
|
+
maxBytes: number;
|
|
4
|
+
maxPages: number;
|
|
5
|
+
maxPixels: number;
|
|
6
|
+
maxOutputBytes: number;
|
|
7
|
+
timeoutMs: number;
|
|
8
|
+
maxTokens: number;
|
|
9
|
+
workerHeapMb: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ProviderIdentity {
|
|
12
|
+
provider: string;
|
|
13
|
+
model: string;
|
|
14
|
+
version: string;
|
|
15
|
+
}
|
|
16
|
+
/** Project host/provider objects onto the only persistable identity fields. */
|
|
17
|
+
export declare function providerIdentity(value: unknown): ProviderIdentity;
|
|
18
|
+
export type EvidenceLocation = {
|
|
19
|
+
kind: 'source';
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'page';
|
|
22
|
+
page: number;
|
|
23
|
+
} | {
|
|
24
|
+
kind: 'pages';
|
|
25
|
+
startPage: number;
|
|
26
|
+
endPage: number;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'time';
|
|
29
|
+
startMs: number;
|
|
30
|
+
endMs: number;
|
|
31
|
+
};
|
|
32
|
+
export interface ExtractionSegment {
|
|
33
|
+
text: string;
|
|
34
|
+
location: EvidenceLocation;
|
|
35
|
+
confidence: {
|
|
36
|
+
value: number;
|
|
37
|
+
scale: '0-1';
|
|
38
|
+
calibration: 'unknown';
|
|
39
|
+
} | null;
|
|
40
|
+
boxes: Array<{
|
|
41
|
+
text: string;
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
}> | null;
|
|
47
|
+
provenance: ProviderIdentity;
|
|
48
|
+
kind: 'text' | 'transcript' | 'observation';
|
|
49
|
+
}
|
|
50
|
+
export interface ExtractionResult {
|
|
51
|
+
status: 'complete' | 'partial' | 'failed' | 'unsupported';
|
|
52
|
+
evidence: IntakeEvidenceDTO;
|
|
53
|
+
configurationRevision: string;
|
|
54
|
+
options: {
|
|
55
|
+
imageMode: 'ocr' | 'vision';
|
|
56
|
+
pdfOCRFallback: 'empty-page';
|
|
57
|
+
ocrOutputFormat: 'json';
|
|
58
|
+
};
|
|
59
|
+
limits: ExtractionLimits;
|
|
60
|
+
segments: ExtractionSegment[];
|
|
61
|
+
/** Full provider transcript when timed segments are also returned. */
|
|
62
|
+
transcriptText?: string;
|
|
63
|
+
capabilities: Array<ProviderIdentity & {
|
|
64
|
+
confidence: boolean;
|
|
65
|
+
boxes: boolean;
|
|
66
|
+
location: 'source' | 'page' | 'time';
|
|
67
|
+
/** Whether the SDK exposed upstream completion/usage metadata. */
|
|
68
|
+
truncation: 'unknown' | 'reported';
|
|
69
|
+
usage: 'unknown' | 'reported';
|
|
70
|
+
}>;
|
|
71
|
+
errors: Array<{
|
|
72
|
+
category: IntakeFailure;
|
|
73
|
+
location: EvidenceLocation;
|
|
74
|
+
}>;
|
|
75
|
+
omitted: EvidenceLocation[];
|
|
76
|
+
truncated: boolean;
|
|
77
|
+
usage: Record<string, number>;
|
|
78
|
+
/** Extraction is evidence, never an approval or automatic-action grant. */
|
|
79
|
+
automaticActionEligible: false;
|
|
80
|
+
}
|
|
81
|
+
export interface ExtractionRequest {
|
|
82
|
+
evidence: IntakeEvidenceDTO;
|
|
83
|
+
bytes: Uint8Array;
|
|
84
|
+
limits: ExtractionLimits;
|
|
85
|
+
configurationRevision: string;
|
|
86
|
+
signal?: AbortSignal;
|
|
87
|
+
/** Trusted parent authorization; adapters must await before every provider call. */
|
|
88
|
+
beforeProviderCall?: () => Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
export interface ExtractionAdapter {
|
|
91
|
+
extract(request: ExtractionRequest): Promise<ExtractionResult>;
|
|
92
|
+
}
|
|
93
|
+
export declare function validLimits(limits: ExtractionLimits): boolean;
|
|
94
|
+
//# sourceMappingURL=extraction-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-types.d.ts","sourceRoot":"","sources":["../src/extraction-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-worker.d.ts","sourceRoot":"","sources":["../src/extraction-worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { r as extractWithProviders } from "./chunks/extraction-providers-C66ADDVe.js";
|
|
2
|
+
import { getAI } from "@happyvertical/ai";
|
|
3
|
+
import { UnlimitedOCRProvider, getOCR } from "@happyvertical/ocr";
|
|
4
|
+
import { getPDFReader } from "@happyvertical/pdf";
|
|
5
|
+
import { getTranscriber } from "@happyvertical/speech";
|
|
6
|
+
//#region src/extraction-worker.ts
|
|
7
|
+
process.once("message", async (message) => {
|
|
8
|
+
try {
|
|
9
|
+
const { request, configuration } = message;
|
|
10
|
+
let sequence = 0;
|
|
11
|
+
const beforeProviderCall = () => new Promise((resolve) => {
|
|
12
|
+
const id = ++sequence;
|
|
13
|
+
const receive = (reply) => {
|
|
14
|
+
if (reply.kind === "authorized" && reply.id === id) {
|
|
15
|
+
process.off("message", receive);
|
|
16
|
+
resolve();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
process.on("message", receive);
|
|
20
|
+
process.send?.({
|
|
21
|
+
kind: "authorize",
|
|
22
|
+
id
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
const providers = { imageMode: configuration.imageMode };
|
|
26
|
+
const mime = request.evidence.mediaType.split(";")[0].trim().toLowerCase();
|
|
27
|
+
const needsImages = mime === "application/pdf" || mime.startsWith("image/");
|
|
28
|
+
if (configuration.pdf && mime === "application/pdf") providers.pdf = {
|
|
29
|
+
identity: configuration.pdf.identity,
|
|
30
|
+
client: await getPDFReader({
|
|
31
|
+
provider: configuration.pdf.provider,
|
|
32
|
+
enableOCR: false,
|
|
33
|
+
maxFileSize: request.limits.maxBytes,
|
|
34
|
+
timeout: request.limits.timeoutMs
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
if (configuration.ocr && needsImages && (mime === "application/pdf" || configuration.imageMode !== "vision")) {
|
|
38
|
+
const config = configuration.ocr;
|
|
39
|
+
const unlimited = config.identity.provider === "unlimited-ocr" ? new UnlimitedOCRProvider(config.options) : void 0;
|
|
40
|
+
const factory = getOCR({
|
|
41
|
+
provider: config.identity.provider,
|
|
42
|
+
fallbackProviders: [],
|
|
43
|
+
providerConfig: { [config.identity.provider]: config.options ?? {} }
|
|
44
|
+
});
|
|
45
|
+
providers.ocr = {
|
|
46
|
+
identity: config.identity,
|
|
47
|
+
performOCR: (images, options) => unlimited ? unlimited.performOCR(images, options) : factory.performOCR(images, options),
|
|
48
|
+
capabilities: async () => {
|
|
49
|
+
if (unlimited) return unlimited.checkCapabilities();
|
|
50
|
+
const info = (await factory.getProvidersInfo()).find((candidate) => candidate.name === config.identity.provider);
|
|
51
|
+
if (!info?.available || !info.capabilities) throw new Error("Provider unavailable");
|
|
52
|
+
return info.capabilities;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (configuration.speech && mime.startsWith("audio/")) providers.speech = {
|
|
57
|
+
identity: configuration.speech.identity,
|
|
58
|
+
client: await getTranscriber(configuration.speech.options)
|
|
59
|
+
};
|
|
60
|
+
if (configuration.vision && needsImages && configuration.imageMode === "vision") providers.vision = {
|
|
61
|
+
identity: configuration.vision.identity,
|
|
62
|
+
client: await getAI(configuration.vision.options)
|
|
63
|
+
};
|
|
64
|
+
const result = await extractWithProviders({
|
|
65
|
+
...request,
|
|
66
|
+
beforeProviderCall
|
|
67
|
+
}, providers, (partial) => process.send?.({
|
|
68
|
+
kind: "progress",
|
|
69
|
+
result: partial
|
|
70
|
+
}));
|
|
71
|
+
process.send?.({
|
|
72
|
+
kind: "result",
|
|
73
|
+
result
|
|
74
|
+
}, () => process.exit(0));
|
|
75
|
+
} catch {
|
|
76
|
+
process.send?.({ kind: "failure" }, () => process.exit(1));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
//#endregion
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=extraction-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-worker.js","names":[],"sources":["../src/extraction-worker.ts"],"sourcesContent":["import { getAI } from '@happyvertical/ai';\nimport { getOCR, UnlimitedOCRProvider } from '@happyvertical/ocr';\nimport { getPDFReader } from '@happyvertical/pdf';\nimport { getTranscriber } from '@happyvertical/speech';\nimport type { ExtractionSDKConfiguration } from './extraction.js';\nimport {\n type ExtractionProviders,\n extractWithProviders,\n} from './extraction-providers.js';\nimport type { ExtractionRequest } from './extraction-types.js';\n\n// A separate entry, never imported by browser or normal server initialization.\nprocess.once(\n 'message',\n async (message: {\n request: Omit<ExtractionRequest, 'signal' | 'beforeProviderCall'>;\n configuration: ExtractionSDKConfiguration;\n }) => {\n try {\n const { request, configuration } = message;\n let sequence = 0;\n const beforeProviderCall = () =>\n new Promise<void>((resolve) => {\n const id = ++sequence;\n const receive = (reply: { kind: string; id?: number }) => {\n if (reply.kind === 'authorized' && reply.id === id) {\n process.off('message', receive);\n resolve();\n }\n };\n process.on('message', receive);\n process.send?.({ kind: 'authorize', id });\n });\n const providers: ExtractionProviders = {\n imageMode: configuration.imageMode,\n };\n const mime = request.evidence.mediaType\n .split(';')[0]\n .trim()\n .toLowerCase();\n const needsImages =\n mime === 'application/pdf' || mime.startsWith('image/');\n if (configuration.pdf && mime === 'application/pdf')\n providers.pdf = {\n identity: configuration.pdf.identity,\n client: await getPDFReader({\n provider: configuration.pdf.provider,\n enableOCR: false,\n maxFileSize: request.limits.maxBytes,\n timeout: request.limits.timeoutMs,\n }),\n };\n if (\n configuration.ocr &&\n needsImages &&\n (mime === 'application/pdf' || configuration.imageMode !== 'vision')\n ) {\n const config = configuration.ocr;\n const unlimited =\n config.identity.provider === 'unlimited-ocr'\n ? new UnlimitedOCRProvider(config.options)\n : undefined;\n const factory = getOCR({\n provider: config.identity.provider,\n fallbackProviders: [],\n providerConfig: { [config.identity.provider]: config.options ?? {} },\n });\n providers.ocr = {\n identity: config.identity,\n performOCR: (images, options) =>\n unlimited\n ? unlimited.performOCR(images, options)\n : factory.performOCR(images, options),\n capabilities: async () => {\n if (unlimited) return unlimited.checkCapabilities();\n const infos = await factory.getProvidersInfo();\n const info = infos.find(\n (candidate) => candidate.name === config.identity.provider,\n );\n if (!info?.available || !info.capabilities)\n throw new Error('Provider unavailable');\n return info.capabilities;\n },\n };\n }\n if (configuration.speech && mime.startsWith('audio/'))\n providers.speech = {\n identity: configuration.speech.identity,\n client: await getTranscriber(configuration.speech.options),\n };\n if (\n configuration.vision &&\n needsImages &&\n configuration.imageMode === 'vision'\n )\n providers.vision = {\n identity: configuration.vision.identity,\n client: await getAI(configuration.vision.options),\n };\n const result = await extractWithProviders(\n { ...request, beforeProviderCall },\n providers,\n (partial) => process.send?.({ kind: 'progress', result: partial }),\n );\n process.send?.({ kind: 'result', result }, () => process.exit(0));\n } catch {\n process.send?.({ kind: 'failure' }, () => process.exit(1));\n }\n },\n);\n"],"mappings":";;;;;;AAYA,QAAQ,KACN,WACA,OAAO,YAGD;CACJ,IAAI;EACF,MAAM,EAAE,SAAS,kBAAkB;EACnC,IAAI,WAAW;EACf,MAAM,2BACJ,IAAI,SAAe,YAAY;GAC7B,MAAM,KAAK,EAAE;GACb,MAAM,WAAW,UAAyC;IACxD,IAAI,MAAM,SAAS,gBAAgB,MAAM,OAAO,IAAI;KAClD,QAAQ,IAAI,WAAW,OAAO;KAC9B,QAAQ;IACV;GACF;GACA,QAAQ,GAAG,WAAW,OAAO;GAC7B,QAAQ,OAAO;IAAE,MAAM;IAAa;GAAG,CAAC;EAC1C,CAAC;EACH,MAAM,YAAiC,EACrC,WAAW,cAAc,UAC3B;EACA,MAAM,OAAO,QAAQ,SAAS,UAC3B,MAAM,GAAG,CAAA,CAAE,EAAC,CACZ,KAAK,CAAA,CACL,YAAY;EACf,MAAM,cACJ,SAAS,qBAAqB,KAAK,WAAW,QAAQ;EACxD,IAAI,cAAc,OAAO,SAAS,mBAChC,UAAU,MAAM;GACd,UAAU,cAAc,IAAI;GAC5B,QAAQ,MAAM,aAAa;IACzB,UAAU,cAAc,IAAI;IAC5B,WAAW;IACX,aAAa,QAAQ,OAAO;IAC5B,SAAS,QAAQ,OAAO;GAC1B,CAAC;EACH;EACF,IACE,cAAc,OACd,gBACC,SAAS,qBAAqB,cAAc,cAAc,WAC3D;GACA,MAAM,SAAS,cAAc;GAC7B,MAAM,YACJ,OAAO,SAAS,aAAa,kBACzB,IAAI,qBAAqB,OAAO,OAAO,IACvC,KAAA;GACN,MAAM,UAAU,OAAO;IACrB,UAAU,OAAO,SAAS;IAC1B,mBAAmB,CAAC;IACpB,gBAAgB,GAAG,OAAO,SAAS,WAAW,OAAO,WAAW,CAAC,EAAE;GACrE,CAAC;GACD,UAAU,MAAM;IACd,UAAU,OAAO;IACjB,aAAa,QAAQ,YACnB,YACI,UAAU,WAAW,QAAQ,OAAO,IACpC,QAAQ,WAAW,QAAQ,OAAO;IACxC,cAAc,YAAY;KACxB,IAAI,WAAW,OAAO,UAAU,kBAAkB;KAElD,MAAM,QAAO,MADO,QAAQ,iBAAiB,EAAA,CAC1B,MAChB,cAAc,UAAU,SAAS,OAAO,SAAS,QACpD;KACA,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,cAC5B,MAAM,IAAI,MAAM,sBAAsB;KACxC,OAAO,KAAK;IACd;GACF;EACF;EACA,IAAI,cAAc,UAAU,KAAK,WAAW,QAAQ,GAClD,UAAU,SAAS;GACjB,UAAU,cAAc,OAAO;GAC/B,QAAQ,MAAM,eAAe,cAAc,OAAO,OAAO;EAC3D;EACF,IACE,cAAc,UACd,eACA,cAAc,cAAc,UAE5B,UAAU,SAAS;GACjB,UAAU,cAAc,OAAO;GAC/B,QAAQ,MAAM,MAAM,cAAc,OAAO,OAAO;EAClD;EACF,MAAM,SAAS,MAAM,qBACnB;GAAE,GAAG;GAAS;EAAmB,GACjC,YACC,YAAY,QAAQ,OAAO;GAAE,MAAM;GAAY,QAAQ;EAAQ,CAAC,CACnE;EACA,QAAQ,OAAO;GAAE,MAAM;GAAU;EAAO,SAAS,QAAQ,KAAK,CAAC,CAAC;CAClE,QAAQ;EACN,QAAQ,OAAO,EAAE,MAAM,UAAU,SAAS,QAAQ,KAAK,CAAC,CAAC;CAC3D;AACF,CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { GetAIOptions } from '@happyvertical/ai';
|
|
2
|
+
import type { PDFReaderOptions } from '@happyvertical/pdf';
|
|
3
|
+
import type { GetTranscriberOptions } from '@happyvertical/speech';
|
|
4
|
+
import type { ExtractionAdapter, ExtractionRequest, ExtractionResult, ProviderIdentity } from './extraction-types.js';
|
|
5
|
+
import type { AnalysisLease, IngestionService } from './server.js';
|
|
6
|
+
export type * from './extraction-types.js';
|
|
7
|
+
/** Trusted server configuration. Credentials never enter analysis provenance. */
|
|
8
|
+
export interface ExtractionSDKConfiguration {
|
|
9
|
+
pdf?: {
|
|
10
|
+
provider: NonNullable<PDFReaderOptions['provider']>;
|
|
11
|
+
identity: ProviderIdentity;
|
|
12
|
+
};
|
|
13
|
+
ocr?: {
|
|
14
|
+
identity: ProviderIdentity;
|
|
15
|
+
options?: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
speech?: {
|
|
18
|
+
identity: ProviderIdentity;
|
|
19
|
+
options: GetTranscriberOptions;
|
|
20
|
+
};
|
|
21
|
+
vision?: {
|
|
22
|
+
identity: ProviderIdentity;
|
|
23
|
+
options: GetAIOptions;
|
|
24
|
+
};
|
|
25
|
+
imageMode?: 'ocr' | 'vision';
|
|
26
|
+
/** Maximum concurrent child processes for this adapter instance (default 1). */
|
|
27
|
+
maxConcurrentProcesses?: number;
|
|
28
|
+
/** The deployment enforces a native-memory ceiling outside Node (e.g. container).
|
|
29
|
+
* Required for native decoders: Node's heap cap does not bound native allocation. */
|
|
30
|
+
nativeMemoryIsolation: 'host-enforced';
|
|
31
|
+
}
|
|
32
|
+
/** Production adapter: bounded per-evidence child, terminated on deadline/abort. */
|
|
33
|
+
export declare function createSDKExtractionAdapter(configuration: ExtractionSDKConfiguration): ExtractionAdapter;
|
|
34
|
+
/** Current access is rechecked on read and fenced publication by the foundation.
|
|
35
|
+
* The host already allocated the immutable input/config revision and lease. */
|
|
36
|
+
export declare function extractAnalysis(service: IngestionService, lease: AnalysisLease, adapter: ExtractionAdapter, options: Pick<ExtractionRequest, 'limits' | 'configurationRevision' | 'signal'>): Promise<boolean>;
|
|
37
|
+
/** Side-effect-free, versioned split proposal. Original evidence is not replaced. */
|
|
38
|
+
export declare function proposeDocumentSplits(result: ExtractionResult, revision: number, groups: number[][]): {
|
|
39
|
+
digest: string;
|
|
40
|
+
revision: number;
|
|
41
|
+
evidenceId: string;
|
|
42
|
+
inputHash: string;
|
|
43
|
+
configurationRevision: string;
|
|
44
|
+
groups: {
|
|
45
|
+
pages: number[];
|
|
46
|
+
}[];
|
|
47
|
+
status: "proposed";
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAOnE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEnE,mBAAmB,uBAAuB,CAAC;AAE3C,iFAAiF;AACjF,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACxE,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,qBAAqB,CAAA;KAAE,CAAC;IACxE,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IAC/D,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;yFACqF;IACrF,qBAAqB,EAAE,eAAe,CAAC;CACxC;AAED,oFAAoF;AACpF,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,0BAA0B,GACxC,iBAAiB,CAiKnB;AAuHD;+EAC+E;AAC/E,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,IAAI,CACX,iBAAiB,EACjB,QAAQ,GAAG,uBAAuB,GAAG,QAAQ,CAC9C,GACA,OAAO,CAAC,OAAO,CAAC,CAuGlB;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAAE;;;;;;;;;;EAgCnB"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import "./dto.js";
|
|
2
|
+
import { IntakeAction, IntakeAnalysis, IntakeAnalysisAttempt, IntakeDeletion, IntakeDispatch, IntakeEvidence, IntakeExecution, IntakeFeedback, IntakeItem, IntakePlan, IntakeProposal, IntakeReviewDecision } from "./models.js";
|
|
3
|
+
export { IntakeAction, IntakeAnalysis, IntakeAnalysisAttempt, IntakeDeletion, IntakeDispatch, IntakeEvidence, IntakeExecution, IntakeFeedback, IntakeItem, IntakePlan, IntakeProposal, IntakeReviewDecision };
|