@vertesia/workflow 0.52.0 → 0.55.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/lib/cjs/activities/createDocumentFromOther.js +1 -1
- package/lib/cjs/activities/executeInteraction.js +29 -15
- package/lib/cjs/activities/executeInteraction.js.map +1 -1
- package/lib/cjs/activities/extractDocumentText.js +33 -30
- package/lib/cjs/activities/extractDocumentText.js.map +1 -1
- package/lib/cjs/activities/generateEmbeddings.js +1 -1
- package/lib/cjs/activities/generateEmbeddings.js.map +1 -1
- package/lib/cjs/activities/generateImageRendition.js +31 -11
- package/lib/cjs/activities/generateImageRendition.js.map +1 -1
- package/lib/cjs/activities/generateOrAssignContentType.js +25 -12
- package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -1
- package/lib/cjs/activities/getObjectFromStore.js +1 -1
- package/lib/cjs/activities/handleError.js +22 -0
- package/lib/cjs/activities/handleError.js.map +1 -0
- package/lib/cjs/activities/index-dsl.js +3 -1
- package/lib/cjs/activities/index-dsl.js.map +1 -1
- package/lib/cjs/activities/index.js +0 -1
- package/lib/cjs/activities/index.js.map +1 -1
- package/lib/cjs/activities/media/processPdfWithTextract.js +4 -4
- package/lib/cjs/activities/media/transcribeMediaWithGladia.js +1 -1
- package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -1
- package/lib/cjs/activities/setDocumentStatus.js +1 -1
- package/lib/cjs/conversion/TextractProcessor.js +9 -9
- package/lib/cjs/conversion/image.js +6 -2
- package/lib/cjs/conversion/image.js.map +1 -1
- package/lib/cjs/conversion/markitdown.js +42 -0
- package/lib/cjs/conversion/markitdown.js.map +1 -0
- package/lib/cjs/conversion/mutool.js +1 -1
- package/lib/cjs/conversion/pandoc.js +9 -9
- package/lib/cjs/conversion/pandoc.js.map +1 -1
- package/lib/cjs/dsl/dsl-workflow.js +59 -11
- package/lib/cjs/dsl/dsl-workflow.js.map +1 -1
- package/lib/cjs/dsl/vars.js +6 -6
- package/lib/cjs/dsl/vars.js.map +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/iterative-generation/activities/extractToc.js +1 -1
- package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -1
- package/lib/cjs/iterative-generation/activities/generatePart.js +2 -2
- package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -1
- package/lib/cjs/iterative-generation/activities/generateToc.js +1 -1
- package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -1
- package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +1 -1
- package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +1 -1
- package/lib/cjs/iterative-generation/utils.js +4 -4
- package/lib/cjs/iterative-generation/utils.js.map +1 -1
- package/lib/esm/activities/createDocumentFromOther.js +1 -1
- package/lib/esm/activities/executeInteraction.js +31 -17
- package/lib/esm/activities/executeInteraction.js.map +1 -1
- package/lib/esm/activities/extractDocumentText.js +39 -36
- package/lib/esm/activities/extractDocumentText.js.map +1 -1
- package/lib/esm/activities/generateEmbeddings.js +1 -1
- package/lib/esm/activities/generateEmbeddings.js.map +1 -1
- package/lib/esm/activities/generateImageRendition.js +31 -11
- package/lib/esm/activities/generateImageRendition.js.map +1 -1
- package/lib/esm/activities/generateOrAssignContentType.js +25 -12
- package/lib/esm/activities/generateOrAssignContentType.js.map +1 -1
- package/lib/esm/activities/getObjectFromStore.js +1 -1
- package/lib/esm/activities/handleError.js +19 -0
- package/lib/esm/activities/handleError.js.map +1 -0
- package/lib/esm/activities/index-dsl.js +1 -0
- package/lib/esm/activities/index-dsl.js.map +1 -1
- package/lib/esm/activities/index.js +0 -1
- package/lib/esm/activities/index.js.map +1 -1
- package/lib/esm/activities/media/processPdfWithTextract.js +4 -4
- package/lib/esm/activities/media/transcribeMediaWithGladia.js +1 -1
- package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -1
- package/lib/esm/activities/setDocumentStatus.js +1 -1
- package/lib/esm/conversion/TextractProcessor.js +9 -9
- package/lib/esm/conversion/image.js +6 -2
- package/lib/esm/conversion/image.js.map +1 -1
- package/lib/esm/conversion/markitdown.js +36 -0
- package/lib/esm/conversion/markitdown.js.map +1 -0
- package/lib/esm/conversion/mutool.js +1 -1
- package/lib/esm/conversion/pandoc.js +11 -11
- package/lib/esm/conversion/pandoc.js.map +1 -1
- package/lib/esm/dsl/dsl-workflow.js +60 -12
- package/lib/esm/dsl/dsl-workflow.js.map +1 -1
- package/lib/esm/dsl/vars.js +6 -6
- package/lib/esm/dsl/vars.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/iterative-generation/activities/extractToc.js +1 -1
- package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -1
- package/lib/esm/iterative-generation/activities/generatePart.js +2 -2
- package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -1
- package/lib/esm/iterative-generation/activities/generateToc.js +1 -1
- package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -1
- package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +1 -1
- package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +1 -1
- package/lib/esm/iterative-generation/utils.js +4 -4
- package/lib/esm/iterative-generation/utils.js.map +1 -1
- package/lib/types/activities/createDocumentFromOther.d.ts +1 -1
- package/lib/types/activities/executeInteraction.d.ts +4 -4
- package/lib/types/activities/executeInteraction.d.ts.map +1 -1
- package/lib/types/activities/extractDocumentText.d.ts +3 -3
- package/lib/types/activities/extractDocumentText.d.ts.map +1 -1
- package/lib/types/activities/generateImageRendition.d.ts +1 -1
- package/lib/types/activities/generateImageRendition.d.ts.map +1 -1
- package/lib/types/activities/generateOrAssignContentType.d.ts +1 -1
- package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -1
- package/lib/types/activities/getObjectFromStore.d.ts +1 -1
- package/lib/types/activities/handleError.d.ts +6 -0
- package/lib/types/activities/handleError.d.ts.map +1 -0
- package/lib/types/activities/index-dsl.d.ts +1 -0
- package/lib/types/activities/index-dsl.d.ts.map +1 -1
- package/lib/types/activities/index.d.ts +0 -1
- package/lib/types/activities/index.d.ts.map +1 -1
- package/lib/types/activities/setDocumentStatus.d.ts +1 -1
- package/lib/types/conversion/image.d.ts.map +1 -1
- package/lib/types/conversion/markitdown.d.ts +2 -0
- package/lib/types/conversion/markitdown.d.ts.map +1 -0
- package/lib/types/conversion/mutool.d.ts +1 -1
- package/lib/types/conversion/pandoc.d.ts +1 -1
- package/lib/types/conversion/pandoc.d.ts.map +1 -1
- package/lib/types/dsl/dsl-workflow.d.ts +1 -1
- package/lib/types/dsl/dsl-workflow.d.ts.map +1 -1
- package/lib/types/dsl/vars.d.ts +2 -2
- package/lib/types/index.d.ts +1 -1
- package/lib/types/iterative-generation/types.d.ts +3 -3
- package/lib/types/iterative-generation/types.d.ts.map +1 -1
- package/lib/workflows-bundle.js +396 -94
- package/package.json +5 -4
- package/src/activities/createDocumentFromOther.ts +1 -1
- package/src/activities/executeInteraction.ts +66 -39
- package/src/activities/extractDocumentText.ts +67 -51
- package/src/activities/generateEmbeddings.ts +1 -1
- package/src/activities/generateImageRendition.ts +35 -14
- package/src/activities/generateOrAssignContentType.ts +52 -26
- package/src/activities/getObjectFromStore.ts +1 -1
- package/src/activities/handleError.ts +25 -0
- package/src/activities/index-dsl.ts +1 -0
- package/src/activities/index.ts +0 -1
- package/src/activities/media/processPdfWithTextract.ts +4 -4
- package/src/activities/media/transcribeMediaWithGladia.ts +1 -1
- package/src/activities/setDocumentStatus.ts +1 -1
- package/src/conversion/TextractProcessor.ts +9 -9
- package/src/conversion/image.ts +8 -2
- package/src/conversion/markitdown.ts +41 -0
- package/src/conversion/mutool.ts +1 -1
- package/src/conversion/pandoc.test.ts +2 -2
- package/src/conversion/pandoc.ts +38 -42
- package/src/dsl/dsl-workflow.ts +80 -12
- package/src/dsl/validation.test.ts +2 -2
- package/src/dsl/vars.test.ts +1 -1
- package/src/dsl/vars.ts +6 -6
- package/src/dsl/workflow-exec-child.test.ts +14 -4
- package/src/dsl/workflow-fetch.test.ts +1 -1
- package/src/dsl/workflow-import.test.ts +1 -1
- package/src/dsl/workflow.test.ts +12 -2
- package/src/index.ts +1 -1
- package/src/iterative-generation/activities/extractToc.ts +1 -1
- package/src/iterative-generation/activities/generatePart.ts +2 -2
- package/src/iterative-generation/activities/generateToc.ts +1 -1
- package/src/iterative-generation/iterativeGenerationWorkflow.ts +1 -1
- package/src/iterative-generation/types.ts +4 -4
- package/src/iterative-generation/utils.ts +4 -4
@@ -18,14 +18,19 @@ export async function generateOrAssignContentType(payload) {
|
|
18
18
|
log.warn(`Object ${objectId} has already a type. Skipping type creation.`);
|
19
19
|
return { status: "skipped", message: "Object already has a type: " + object.type.name };
|
20
20
|
}
|
21
|
-
if (!object ||
|
21
|
+
if (!object ||
|
22
|
+
(!object.text &&
|
23
|
+
!object.content?.type?.startsWith("image/") &&
|
24
|
+
!object.content?.type?.startsWith("application/pdf"))) {
|
22
25
|
log.info(`Object ${objectId} not found or text is empty and not an image`, { object });
|
23
26
|
return { status: "failed", error: "no-text" };
|
24
27
|
}
|
25
|
-
const types = await client.types.list(
|
28
|
+
const types = await client.types.list(undefined, {
|
29
|
+
schema: true,
|
30
|
+
});
|
26
31
|
//make a list of all existing types, and add hints if any
|
27
|
-
const existing_types = types.filter(t => !["DocumentPart", "Rendition"].includes(t.name));
|
28
|
-
const content = object.text ? truncByMaxTokens(object.text, params.truncate ||
|
32
|
+
const existing_types = types.filter((t) => !["DocumentPart", "Rendition"].includes(t.name));
|
33
|
+
const content = object.text ? truncByMaxTokens(object.text, params.truncate || 30000) : undefined;
|
29
34
|
const getImage = async () => {
|
30
35
|
if (object.content?.type?.includes("pdf") && object.text?.length && object.text?.length < 100) {
|
31
36
|
return "store:" + objectId;
|
@@ -33,7 +38,11 @@ export async function generateOrAssignContentType(payload) {
|
|
33
38
|
if (!object.content?.type?.startsWith("image/")) {
|
34
39
|
return undefined;
|
35
40
|
}
|
36
|
-
const res = await client.objects.getRendition(objectId, {
|
41
|
+
const res = await client.objects.getRendition(objectId, {
|
42
|
+
max_hw: 1024,
|
43
|
+
format: "image/png",
|
44
|
+
generate_if_missing: true,
|
45
|
+
});
|
37
46
|
if (!res.rendition && res.status === "generating") {
|
38
47
|
//throw to try again
|
39
48
|
throw new Error(`Rendition for object ${objectId} is in progress`);
|
@@ -43,16 +52,19 @@ export async function generateOrAssignContentType(payload) {
|
|
43
52
|
}
|
44
53
|
};
|
45
54
|
const fileRef = await getImage();
|
46
|
-
log.info("Execute SelectDocumentType interaction on content with \nexisting types
|
55
|
+
log.info("Execute SelectDocumentType interaction on content with \nexisting types - passing full types: " +
|
56
|
+
existing_types.filter((t) => !t.tags?.includes("system")));
|
47
57
|
const res = await executeInteractionFromActivity(client, interactionName, params, {
|
48
|
-
existing_types,
|
58
|
+
existing_types,
|
59
|
+
content,
|
60
|
+
image: fileRef,
|
49
61
|
});
|
50
62
|
log.info("Selected Content Type Result: " + JSON.stringify(res.result));
|
51
63
|
//if type is not identified or not present in the database, generate a new type
|
52
64
|
let selectedType = undefined;
|
53
|
-
selectedType = types.find(t => t.name === res.result.document_type);
|
65
|
+
selectedType = types.find((t) => t.name === res.result.document_type);
|
54
66
|
if (!selectedType) {
|
55
|
-
log.warn("Document type not
|
67
|
+
log.warn("Document type not identified: starting type generation");
|
56
68
|
const newType = await generateNewType(context, existing_types, content, fileRef);
|
57
69
|
selectedType = { id: newType.id, name: newType.name };
|
58
70
|
}
|
@@ -67,7 +79,7 @@ export async function generateOrAssignContentType(payload) {
|
|
67
79
|
return {
|
68
80
|
id: selectedType.id,
|
69
81
|
name: selectedType.name,
|
70
|
-
isNew: !types.find(t => t.name === selectedType.name)
|
82
|
+
isNew: !types.find((t) => t.name === selectedType.name),
|
71
83
|
};
|
72
84
|
}
|
73
85
|
async function generateNewType(context, existing_types, content, fileRef) {
|
@@ -75,10 +87,10 @@ async function generateNewType(context, existing_types, content, fileRef) {
|
|
75
87
|
const project = await context.fetchProject();
|
76
88
|
const interactionName = params.interactionNames?.generateMetadataModel ?? INT_GENERATE_METADATA_MODEL;
|
77
89
|
const genTypeRes = await executeInteractionFromActivity(client, interactionName, params, {
|
78
|
-
existing_types
|
90
|
+
existing_types,
|
79
91
|
content: content,
|
80
92
|
human_context: project?.configuration?.human_context ?? undefined,
|
81
|
-
image: fileRef ? fileRef : undefined
|
93
|
+
image: fileRef ? fileRef : undefined,
|
82
94
|
});
|
83
95
|
if (!genTypeRes.result.document_type) {
|
84
96
|
log.error("No name generated for type", genTypeRes);
|
@@ -89,6 +101,7 @@ async function generateNewType(context, existing_types, content, fileRef) {
|
|
89
101
|
name: genTypeRes.result.document_type,
|
90
102
|
object_schema: genTypeRes.result.metadata_schema,
|
91
103
|
is_chunkable: genTypeRes.result.is_chunkable,
|
104
|
+
table_layout: genTypeRes.result.table_layout,
|
92
105
|
};
|
93
106
|
const type = await client.types.create(typeData);
|
94
107
|
return type;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateOrAssignContentType.js","sourceRoot":"","sources":["../../../src/activities/generateOrAssignContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;
|
1
|
+
{"version":3,"file":"generateOrAssignContentType.js","sourceRoot":"","sources":["../../../src/activities/generateOrAssignContentType.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { projectResult } from "../dsl/projections.js";
|
2
2
|
import { setupActivity } from "../dsl/setup/ActivityContext.js";
|
3
3
|
/**
|
4
|
-
* We are using a union type for the status parameter since typescript
|
4
|
+
* We are using a union type for the status parameter since typescript enums breaks the workflow code generation
|
5
5
|
* @param objectId
|
6
6
|
* @param status
|
7
7
|
*/
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { ContentObjectStatus } from "@vertesia/common";
|
2
|
+
import { setupActivity } from "../dsl/setup/ActivityContext.js";
|
3
|
+
import { log } from "@temporalio/activity";
|
4
|
+
export async function handleDslError(payload) {
|
5
|
+
const { client, params, objectId } = await setupActivity(payload);
|
6
|
+
const isIntake = payload.workflow_name === "StandardDocumentIntake" || payload.workflow_name === "StandardImageIntake";
|
7
|
+
if (!isIntake) {
|
8
|
+
log.warn(`Workflow execution failed, but no error handler registered for this workflow: ${payload.workflow_name}`, { error: params.errorMessage });
|
9
|
+
return;
|
10
|
+
}
|
11
|
+
try {
|
12
|
+
await client.objects.update(objectId, { status: ContentObjectStatus.failed });
|
13
|
+
}
|
14
|
+
catch (e) {
|
15
|
+
log.error("Failed to handle error", { error: e });
|
16
|
+
}
|
17
|
+
return;
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=handleError.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handleError.js","sourceRoot":"","sources":["../../../src/activities/handleError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA+B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAM1C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA0D;IAC3F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAuB,OAAO,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,KAAK,wBAAwB,IAAI,OAAO,CAAC,aAAa,KAAK,qBAAqB,CAAC;IACvH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,iFAAiF,OAAO,CAAC,aAAa,EAAE,EAC7G,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CACjC,CAAC;QACF,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO;AACX,CAAC"}
|
@@ -11,6 +11,7 @@ export { generateEmbeddings } from "./generateEmbeddings.js";
|
|
11
11
|
export { generateImageRendition } from "./generateImageRendition.js";
|
12
12
|
export { generateOrAssignContentType } from "./generateOrAssignContentType.js";
|
13
13
|
export { getObjectFromStore } from "./getObjectFromStore.js";
|
14
|
+
export { handleDslError } from "./handleError.js";
|
14
15
|
export { convertPdfToStructuredText } from "./media/processPdfWithTextract.js";
|
15
16
|
export { transcribeMedia } from "./media/transcribeMediaWithGladia.js";
|
16
17
|
export { notifyWebhook } from "./notifyWebhook.js";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index-dsl.js","sourceRoot":"","sources":["../../../src/activities/index-dsl.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAC;AAC1G,OAAO,EAAE,wCAAwC,EAAE,MAAM,wDAAwD,CAAC;AAClH,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
1
|
+
{"version":3,"file":"index-dsl.js","sourceRoot":"","sources":["../../../src/activities/index-dsl.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAC;AAC1G,OAAO,EAAE,wCAAwC,EAAE,MAAM,wDAAwD,CAAC;AAClH,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/activities/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/activities/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gBAAgB,CAAC"}
|
@@ -55,11 +55,11 @@ export async function convertPdfToStructuredText(payload) {
|
|
55
55
|
}
|
56
56
|
if (jobStatus === "SUCCEEDED") {
|
57
57
|
log.info(`Job ${jobId} succeeded, saving results`, { jobId });
|
58
|
-
const
|
59
|
-
const tokensData = countTokens(
|
60
|
-
const etag = object.content.etag ?? md5(
|
58
|
+
const fText = await processor.processResults(jobId);
|
59
|
+
const tokensData = countTokens(fText);
|
60
|
+
const etag = object.content.etag ?? md5(fText);
|
61
61
|
const updateData = {
|
62
|
-
text:
|
62
|
+
text: fText,
|
63
63
|
text_etag: etag,
|
64
64
|
tokens: {
|
65
65
|
...tokensData,
|
@@ -43,6 +43,6 @@ export async function transcribeMedia(payload) {
|
|
43
43
|
throw new CompleteAsyncError();
|
44
44
|
}
|
45
45
|
function generateCallbackUrlForGladia(baseUrl, authToken, taskToken, objectId) {
|
46
|
-
return `${baseUrl}/api/v1/webhooks/gladia/${objectId}?
|
46
|
+
return `${baseUrl}/api/v1/webhooks/gladia/${objectId}?access_token=${authToken}&task_token=${taskToken}`;
|
47
47
|
}
|
48
48
|
//# sourceMappingURL=transcribeMediaWithGladia.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transcribeMediaWithGladia.js","sourceRoot":"","sources":["../../../../src/activities/media/transcribeMediaWithGladia.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"transcribeMediaWithGladia.js","sourceRoot":"","sources":["../../../../src/activities/media/transcribeMediaWithGladia.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { setupActivity } from "../dsl/setup/ActivityContext.js";
|
2
2
|
/**
|
3
|
-
* We are using a union type for the status parameter since typescript
|
3
|
+
* We are using a union type for the status parameter since typescript enums breaks the workflow code generation
|
4
4
|
* @param objectId
|
5
5
|
* @param status
|
6
6
|
*/
|
@@ -376,22 +376,22 @@ export class TextractProcessor {
|
|
376
376
|
pageContents.push(currentPage);
|
377
377
|
}
|
378
378
|
// Build final output
|
379
|
-
let
|
379
|
+
let fullText = '';
|
380
380
|
let imgNumber = 1;
|
381
381
|
let tableNumber = 1;
|
382
382
|
for (const page of pageContents) {
|
383
|
-
|
383
|
+
fullText += `<page number="${page.pageNumber}">\n`;
|
384
384
|
for (const block of page.blocks) {
|
385
385
|
if (block.type === 'text') {
|
386
|
-
|
386
|
+
fullText += `<text>\n${block.content}\n</text>\n\n`;
|
387
387
|
}
|
388
388
|
else if (block.type === 'table') {
|
389
389
|
const confidenceAttr = block.confidence !== undefined && this.includeConfidenceInTables
|
390
390
|
? ` confidence="${block.confidence.toFixed(2)}"`
|
391
391
|
: '';
|
392
|
-
|
393
|
-
|
394
|
-
|
392
|
+
fullText += `<table number=${tableNumber++} type="csv" ${confidenceAttr}>\n`;
|
393
|
+
fullText += `${block.content}\n`;
|
394
|
+
fullText += `</table>\n\n`;
|
395
395
|
}
|
396
396
|
else if (block.type === 'image') {
|
397
397
|
// Include geometry if you like
|
@@ -399,12 +399,12 @@ export class TextractProcessor {
|
|
399
399
|
const topAttr = block.top ? ` top="${block.top.toFixed(4)}"` : '';
|
400
400
|
const widthAttr = block.width ? ` width="${block.width.toFixed(4)}"` : '';
|
401
401
|
const heightAttr = block.height ? ` height="${block.height.toFixed(4)}"` : '';
|
402
|
-
|
402
|
+
fullText += `<image id="${imgNumber++}" ${leftAttr}${topAttr}${widthAttr}${heightAttr}>\n${block.content.trim()}\n</image>\n\n`;
|
403
403
|
}
|
404
404
|
}
|
405
|
-
|
405
|
+
fullText += `</page>\n\n`;
|
406
406
|
}
|
407
|
-
return
|
407
|
+
return fullText;
|
408
408
|
}
|
409
409
|
}
|
410
410
|
//# sourceMappingURL=TextractProcessor.js.map
|
@@ -14,6 +14,7 @@ const execFile = promisify(execFileCallback);
|
|
14
14
|
* @returns Path to the resized image
|
15
15
|
*/
|
16
16
|
export async function imageResizer(inputPath, max_hw, format, progressive = true) {
|
17
|
+
log.info(`[image-resizer] Resizing image: ${inputPath} to max_hw: ${max_hw}, format: ${format}, progressive: ${progressive}`);
|
17
18
|
const allowedFormats = ["jpg", "jpeg", "png", "webp"];
|
18
19
|
if (!format || format.trim() === "") {
|
19
20
|
throw new Error(`Invalid format: ${format}.Supported : ${allowedFormats.join(", ")}`);
|
@@ -57,13 +58,16 @@ export async function imageResizer(inputPath, max_hw, format, progressive = true
|
|
57
58
|
}
|
58
59
|
}
|
59
60
|
log.info(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
|
60
|
-
const
|
61
|
+
const command = `convert`;
|
62
|
+
const args = [
|
61
63
|
inputPath,
|
62
64
|
"-resize",
|
63
65
|
`${max_hw}x${max_hw}>`,
|
64
66
|
...(conversionOption ? conversionOption.split(" ") : []),
|
65
67
|
outputPath,
|
66
|
-
]
|
68
|
+
];
|
69
|
+
log.info(`ImageMagick command: ${command} ${args.join(" ")}`);
|
70
|
+
const { stderr } = await execFile(command, args);
|
67
71
|
if (stderr) {
|
68
72
|
log.warn(`ImageMagick warning: ${stderr}`);
|
69
73
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/conversion/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,SAAiB,EACjB,MAAc,EACd,MAAc,EACd,cAAuB,IAAI;IAE3B,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,gBAAgB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,0BAA0B;IAC1B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC;QACD,6BAA6B;QAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,8BAA8B;QAC9B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,0DAA0D;QAC1D,IAAI,WAAW,EAAE,CAAC;YACd,0DAA0D;YAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAClD,gBAAgB,GAAG,iBAAiB,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,gBAAgB,GAAG,gBAAgB,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC/B,gBAAgB,GAAG,gBAAgB,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,qCAAqC,SAAS,OAAO,UAAU,EAAE,CAAC,CAAC;QAE5E,MAAM,
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/conversion/image.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { log } from "@temporalio/activity";
|
2
|
+
import { spawn } from "child_process";
|
3
|
+
import fs from "fs";
|
4
|
+
import tmp from "tmp";
|
5
|
+
export function markdownWithMarkitdown(buffer, ext) {
|
6
|
+
const inputFile = tmp.fileSync({ postfix: ext });
|
7
|
+
const targetFileName = tmp.tmpNameSync({ postfix: ".md" });
|
8
|
+
fs.writeSync(inputFile.fd, buffer);
|
9
|
+
return new Promise((resolve, reject) => {
|
10
|
+
const tool = "markitdown";
|
11
|
+
log.info(`Converting document to markdown with ${tool}`, { inputFile: inputFile.name, targetFileName });
|
12
|
+
const command = spawn(tool, [inputFile.name, "-o", targetFileName]);
|
13
|
+
command.on("exit", function (code) {
|
14
|
+
if (code) {
|
15
|
+
reject(new Error(`${tool} exited with code ${code}`));
|
16
|
+
}
|
17
|
+
});
|
18
|
+
command.on("close", function (code) {
|
19
|
+
if (code) {
|
20
|
+
reject(new Error(`${tool} exited with code ${code}`));
|
21
|
+
}
|
22
|
+
else {
|
23
|
+
return fs.readFile(targetFileName, "utf8", (err, data) => {
|
24
|
+
if (err) {
|
25
|
+
reject(err);
|
26
|
+
}
|
27
|
+
return resolve(data);
|
28
|
+
});
|
29
|
+
}
|
30
|
+
});
|
31
|
+
command.on("error", (err) => {
|
32
|
+
reject(err);
|
33
|
+
});
|
34
|
+
});
|
35
|
+
}
|
36
|
+
//# sourceMappingURL=markitdown.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"markitdown.js","sourceRoot":"","sources":["../../../src/conversion/markitdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,GAAY;IAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3D,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,YAAY,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,wCAAwC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAExG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAEpE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACrD,IAAI,GAAG,EAAE,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC;oBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -91,7 +91,7 @@ export async function pdfToImages(file, pages) {
|
|
91
91
|
});
|
92
92
|
}
|
93
93
|
/**
|
94
|
-
* Get
|
94
|
+
* Get some pages from a PDF to create a new one
|
95
95
|
*/
|
96
96
|
export async function pdfExtractPages(file, pages) {
|
97
97
|
const workDir = tmp.dirSync();
|
@@ -1,34 +1,34 @@
|
|
1
|
-
import { log } from
|
2
|
-
import { spawn } from
|
3
|
-
import { PassThrough } from
|
4
|
-
export function
|
1
|
+
import { log } from "@temporalio/activity";
|
2
|
+
import { spawn } from "child_process";
|
3
|
+
import { PassThrough } from "stream";
|
4
|
+
export function markdownWithPandoc(buffer, fromFormat) {
|
5
5
|
const fromType = undefined;
|
6
6
|
return new Promise((resolve, reject) => {
|
7
7
|
log.info(`Converting ${fromType} to markdown`);
|
8
8
|
const input = new PassThrough();
|
9
9
|
input.end(buffer);
|
10
10
|
let result = [];
|
11
|
-
const command = spawn("pandoc", ["-t", "markdown",
|
12
|
-
stdio:
|
11
|
+
const command = spawn("pandoc", ["-t", "markdown", "-f", fromFormat], {
|
12
|
+
stdio: "pipe",
|
13
13
|
});
|
14
14
|
input.pipe(command.stdin);
|
15
|
-
command.stdout.on(
|
15
|
+
command.stdout.on("data", function (data) {
|
16
16
|
result.push(data.toString());
|
17
17
|
});
|
18
|
-
command.on(
|
18
|
+
command.on("exit", function (code) {
|
19
19
|
if (code) {
|
20
20
|
reject(new Error(`pandoc exited with code ${code}`));
|
21
21
|
}
|
22
22
|
});
|
23
|
-
command.on(
|
23
|
+
command.on("close", function (code) {
|
24
24
|
if (code) {
|
25
25
|
reject(new Error(`pandoc exited with code ${code}`));
|
26
26
|
}
|
27
27
|
else {
|
28
|
-
resolve(result.join(
|
28
|
+
resolve(result.join(""));
|
29
29
|
}
|
30
30
|
});
|
31
|
-
command.on(
|
31
|
+
command.on("error", (err) => {
|
32
32
|
reject(err);
|
33
33
|
});
|
34
34
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pandoc.js","sourceRoot":"","sources":["../../../src/conversion/pandoc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
1
|
+
{"version":3,"file":"pandoc.js","sourceRoot":"","sources":["../../../src/conversion/pandoc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,UAAkB;IACjE,MAAM,QAAQ,GAAG,SAAS,CAAC;IAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,GAAG,CAAC,IAAI,CAAC,cAAc,QAAQ,cAAc,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAElB,IAAI,MAAM,GAAa,EAAE,CAAC;QAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE;YAClE,KAAK,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAY;YAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI;YAC9B,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import { executeChild, log, proxyActivities, startChild } from "@temporalio/workflow";
|
1
|
+
import { CancellationScope, executeChild, isCancellation, log, patched, proxyActivities, startChild, } from "@temporalio/workflow";
|
2
|
+
import { getDocumentIds } from "@vertesia/common";
|
2
3
|
import ms from 'ms';
|
3
4
|
import { ActivityParamNotFound, NoDocumentFound, WorkflowParamNotFound } from "../errors.js";
|
4
5
|
import { Vars } from "./vars.js";
|
@@ -14,7 +15,7 @@ export async function dslWorkflow(payload) {
|
|
14
15
|
if (!definition) {
|
15
16
|
throw new WorkflowParamNotFound("workflow");
|
16
17
|
}
|
17
|
-
// the base payload
|
18
|
+
// the base payload will be used to create the activities payload
|
18
19
|
const basePayload = {
|
19
20
|
...payload,
|
20
21
|
workflow_name: definition.name,
|
@@ -25,9 +26,9 @@ export async function dslWorkflow(payload) {
|
|
25
26
|
...convertDSLActivityOptions(definition.options),
|
26
27
|
startToCloseTimeout: "5 minute",
|
27
28
|
retry: {
|
28
|
-
initialInterval: '
|
29
|
+
initialInterval: '10s',
|
29
30
|
backoffCoefficient: 2,
|
30
|
-
maximumAttempts:
|
31
|
+
maximumAttempts: 10,
|
31
32
|
maximumInterval: 100 * 30 * 1000, //ms
|
32
33
|
nonRetryableErrorTypes: [
|
33
34
|
NoDocumentFound.name,
|
@@ -41,7 +42,7 @@ export async function dslWorkflow(payload) {
|
|
41
42
|
});
|
42
43
|
const defaultProxy = proxyActivities(defaultOptions);
|
43
44
|
log.debug("Default activity proxy is ready");
|
44
|
-
// merge default vars with the payload vars and add objectIds and
|
45
|
+
// merge default vars with the payload vars and add objectIds and objectId
|
45
46
|
const vars = new Vars({
|
46
47
|
...definition.vars,
|
47
48
|
...payload.vars,
|
@@ -49,6 +50,26 @@ export async function dslWorkflow(payload) {
|
|
49
50
|
objectId: payload.objectIds ? payload.objectIds[0] : undefined
|
50
51
|
});
|
51
52
|
log.info("Executing workflow", { payload });
|
53
|
+
// TODO(mhuang): remove patch when all workflows are migrated to v2
|
54
|
+
// It avoids breaking the ongoing workflow execution running in v1 and also allows us to
|
55
|
+
// deploy the new error handler in production.
|
56
|
+
// See https://docs.temporal.io/develop/typescript/versioning
|
57
|
+
if (patched('dsl-workflow-error-handling')) {
|
58
|
+
// v2: new version with error handler
|
59
|
+
try {
|
60
|
+
await executeSteps(definition, payload, basePayload, vars, defaultProxy, defaultOptions);
|
61
|
+
}
|
62
|
+
catch (e) {
|
63
|
+
await handleError(e, basePayload, defaultOptions);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
else {
|
67
|
+
// v1: old version without error handler, deprecated since v0.52.0
|
68
|
+
await executeSteps(definition, payload, basePayload, vars, defaultProxy, defaultOptions);
|
69
|
+
}
|
70
|
+
return vars.getValue(definition.result || 'result');
|
71
|
+
}
|
72
|
+
async function executeSteps(definition, payload, basePayload, vars, defaultProxy, defaultOptions) {
|
52
73
|
if (definition.steps) {
|
53
74
|
for (const step of definition.steps) {
|
54
75
|
const stepType = step.type;
|
@@ -74,7 +95,26 @@ export async function dslWorkflow(payload) {
|
|
74
95
|
else {
|
75
96
|
throw new Error("No steps or activities found in the workflow definition");
|
76
97
|
}
|
77
|
-
|
98
|
+
}
|
99
|
+
async function handleError(originalError, basePayload, defaultOptions) {
|
100
|
+
const { handleDslError } = proxyActivities(defaultOptions);
|
101
|
+
const payload = dslActivityPayload(basePayload, {
|
102
|
+
name: "handleDslError",
|
103
|
+
params: { errorMessage: originalError.message },
|
104
|
+
}, { errorMessage: originalError.message });
|
105
|
+
if (isCancellation(originalError)) {
|
106
|
+
log.warn(`Workflow execution cancelled, executing error handler to update document status`, { error: originalError });
|
107
|
+
// Cleanup logic must be in a nonCancellable scope
|
108
|
+
// If we'd run cleanup outside of a nonCancellable scope it would've been cancelled
|
109
|
+
// before being started because the Workflow's root scope is cancelled.
|
110
|
+
// see https://docs.temporal.io/develop/typescript/cancellation
|
111
|
+
await CancellationScope.nonCancellable(() => handleDslError(payload));
|
112
|
+
}
|
113
|
+
else {
|
114
|
+
log.warn(`Workflow execution failed, executing error handler to update document status`, { error: originalError });
|
115
|
+
handleDslError(payload);
|
116
|
+
}
|
117
|
+
throw originalError;
|
78
118
|
}
|
79
119
|
async function startChildWorkflow(step, payload, vars, debug_mode) {
|
80
120
|
const resolvedVars = vars.resolve();
|
@@ -85,14 +125,18 @@ async function startChildWorkflow(step, payload, vars, debug_mode) {
|
|
85
125
|
if (debug_mode) {
|
86
126
|
log.debug(`Workflow vars before starting child workflow ${step.name}`, { vars: resolvedVars });
|
87
127
|
}
|
88
|
-
//@ts-ignore
|
89
128
|
const handle = await startChild(step.name, {
|
90
129
|
...step.options,
|
91
130
|
args: [{
|
92
131
|
...payload,
|
93
132
|
workflow: step.spec,
|
94
133
|
vars: resolvedVars
|
95
|
-
}]
|
134
|
+
}],
|
135
|
+
searchAttributes: {
|
136
|
+
AccountId: [payload.account_id],
|
137
|
+
DocumentId: getDocumentIds(payload),
|
138
|
+
ProjectId: [payload.project_id],
|
139
|
+
},
|
96
140
|
});
|
97
141
|
if (step.output) {
|
98
142
|
vars.setValue(step.output, handle.workflowId);
|
@@ -105,16 +149,20 @@ async function executeChildWorkflow(step, payload, vars, debug_mode) {
|
|
105
149
|
Object.assign(resolvedVars, step.vars);
|
106
150
|
}
|
107
151
|
if (debug_mode) {
|
108
|
-
log.debug(`Workflow vars before
|
152
|
+
log.debug(`Workflow vars before executing child workflow ${step.name}`, { vars: resolvedVars });
|
109
153
|
}
|
110
|
-
//@ts-ignore
|
111
154
|
const result = await executeChild(step.name, {
|
112
155
|
...step.options,
|
113
156
|
args: [{
|
114
157
|
...payload,
|
115
158
|
workflow: step.spec,
|
116
159
|
vars: resolvedVars,
|
117
|
-
}]
|
160
|
+
}],
|
161
|
+
searchAttributes: {
|
162
|
+
AccountId: [payload.account_id],
|
163
|
+
DocumentId: getDocumentIds(payload),
|
164
|
+
ProjectId: [payload.project_id],
|
165
|
+
},
|
118
166
|
});
|
119
167
|
if (step.output) {
|
120
168
|
vars.setValue(step.output, result);
|
@@ -131,7 +179,7 @@ async function runActivity(activity, basePayload, vars, defaultProxy, defaultOpt
|
|
131
179
|
log.debug(`Workflow vars before executing activity ${activity.name}`, { vars: vars.resolve() });
|
132
180
|
}
|
133
181
|
if (activity.condition && !vars.match(activity.condition)) {
|
134
|
-
log.info("Activity
|
182
|
+
log.info("Activity skipped: condition not satisfied", activity.condition);
|
135
183
|
return;
|
136
184
|
}
|
137
185
|
const importParams = vars.createImportVars(activity.import);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dsl-workflow.js","sourceRoot":"","sources":["../../../src/dsl/dsl-workflow.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"dsl-workflow.js","sourceRoot":"","sources":["../../../src/dsl/dsl-workflow.ts"],"names":[],"mappings":"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"}
|