@vertesia/workflow 0.47.0 → 0.49.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/advanced/createDocumentTypeFromInteractionRun.js.map +1 -1
- package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -1
- package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -1
- package/lib/cjs/activities/chunkDocument.js.map +1 -1
- package/lib/cjs/activities/createDocumentFromOther.js.map +1 -1
- package/lib/cjs/activities/executeInteraction.js.map +1 -1
- package/lib/cjs/activities/extractDocumentText.js +1 -0
- package/lib/cjs/activities/extractDocumentText.js.map +1 -1
- package/lib/cjs/activities/generateDocumentProperties.js.map +1 -1
- package/lib/cjs/activities/generateEmbeddings.js.map +1 -1
- package/lib/cjs/activities/generateImageRendition.js.map +1 -1
- package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -1
- package/lib/cjs/activities/getObjectFromStore.js.map +1 -1
- package/lib/cjs/activities/index-dsl.js +37 -0
- package/lib/cjs/activities/index-dsl.js.map +1 -0
- package/lib/cjs/activities/index.js +1 -33
- package/lib/cjs/activities/index.js.map +1 -1
- package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -1
- package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -1
- package/lib/cjs/activities/notifyWebhook.js.map +1 -1
- package/lib/cjs/activities/setDocumentStatus.js.map +1 -1
- package/lib/cjs/dsl/dsl-workflow.js +2 -2
- package/lib/cjs/dsl/dsl-workflow.js.map +1 -1
- package/lib/cjs/dsl/dslProxyActivities.js +23 -0
- package/lib/cjs/dsl/dslProxyActivities.js.map +1 -0
- package/lib/cjs/dsl/projections.js.map +1 -1
- package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -1
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/system/generateObjectText.js +5 -18
- package/lib/cjs/system/generateObjectText.js.map +1 -1
- package/lib/cjs/system/notifyWebhookWorkflow.js +12 -18
- package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -1
- package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +5 -14
- package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -1
- package/lib/cjs/utils/blobs.js +1 -1
- package/lib/cjs/utils/blobs.js.map +1 -1
- package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -1
- package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -1
- package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -1
- package/lib/esm/activities/chunkDocument.js.map +1 -1
- package/lib/esm/activities/createDocumentFromOther.js.map +1 -1
- package/lib/esm/activities/executeInteraction.js.map +1 -1
- package/lib/esm/activities/extractDocumentText.js +1 -0
- package/lib/esm/activities/extractDocumentText.js.map +1 -1
- package/lib/esm/activities/generateDocumentProperties.js.map +1 -1
- package/lib/esm/activities/generateEmbeddings.js.map +1 -1
- package/lib/esm/activities/generateImageRendition.js.map +1 -1
- package/lib/esm/activities/generateOrAssignContentType.js.map +1 -1
- package/lib/esm/activities/getObjectFromStore.js.map +1 -1
- package/lib/esm/activities/index-dsl.js +18 -0
- package/lib/esm/activities/index-dsl.js.map +1 -0
- package/lib/esm/activities/index.js +1 -16
- package/lib/esm/activities/index.js.map +1 -1
- package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -1
- package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -1
- package/lib/esm/activities/notifyWebhook.js.map +1 -1
- package/lib/esm/activities/setDocumentStatus.js.map +1 -1
- package/lib/esm/dsl/dsl-workflow.js +2 -2
- package/lib/esm/dsl/dsl-workflow.js.map +1 -1
- package/lib/esm/dsl/dslProxyActivities.js +20 -0
- package/lib/esm/dsl/dslProxyActivities.js.map +1 -0
- package/lib/esm/dsl/projections.js.map +1 -1
- package/lib/esm/dsl/setup/ActivityContext.js.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/system/generateObjectText.js +6 -19
- package/lib/esm/system/generateObjectText.js.map +1 -1
- package/lib/esm/system/notifyWebhookWorkflow.js +12 -18
- package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -1
- package/lib/esm/system/recalculateEmbeddingsWorkflow.js +5 -14
- package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -1
- package/lib/esm/utils/blobs.js +1 -1
- package/lib/esm/utils/blobs.js.map +1 -1
- package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +1 -1
- package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -1
- package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +1 -1
- package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -1
- package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +1 -1
- package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -1
- package/lib/types/activities/chunkDocument.d.ts +1 -1
- package/lib/types/activities/chunkDocument.d.ts.map +1 -1
- package/lib/types/activities/createDocumentFromOther.d.ts +1 -1
- package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -1
- package/lib/types/activities/executeInteraction.d.ts +1 -1
- package/lib/types/activities/executeInteraction.d.ts.map +1 -1
- package/lib/types/activities/extractDocumentText.d.ts +3 -2
- package/lib/types/activities/extractDocumentText.d.ts.map +1 -1
- package/lib/types/activities/generateDocumentProperties.d.ts +1 -1
- package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -1
- package/lib/types/activities/generateEmbeddings.d.ts +1 -1
- package/lib/types/activities/generateEmbeddings.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/getObjectFromStore.d.ts.map +1 -1
- package/lib/types/activities/index-dsl.d.ts +17 -0
- package/lib/types/activities/index-dsl.d.ts.map +1 -0
- package/lib/types/activities/index.d.ts +1 -16
- package/lib/types/activities/index.d.ts.map +1 -1
- package/lib/types/activities/media/processPdfWithTextract.d.ts +1 -1
- package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -1
- package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +1 -1
- package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -1
- package/lib/types/activities/notifyWebhook.d.ts +1 -1
- package/lib/types/activities/notifyWebhook.d.ts.map +1 -1
- package/lib/types/activities/setDocumentStatus.d.ts +1 -1
- package/lib/types/activities/setDocumentStatus.d.ts.map +1 -1
- package/lib/types/dsl/dslProxyActivities.d.ts +10 -0
- package/lib/types/dsl/dslProxyActivities.d.ts.map +1 -0
- package/lib/types/dsl/projections.d.ts +1 -1
- package/lib/types/dsl/projections.d.ts.map +1 -1
- package/lib/types/dsl/setup/ActivityContext.d.ts +5 -5
- package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/system/generateObjectText.d.ts +2 -2
- package/lib/types/system/generateObjectText.d.ts.map +1 -1
- package/lib/types/system/notifyWebhookWorkflow.d.ts +2 -5
- package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -1
- package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +2 -2
- package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -1
- package/lib/workflows-bundle.js +84 -323
- package/package.json +4 -4
- package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +1 -1
- package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +1 -1
- package/src/activities/advanced/updateDocumentFromInteractionRun.ts +1 -1
- package/src/activities/chunkDocument.ts +1 -1
- package/src/activities/createDocumentFromOther.ts +1 -1
- package/src/activities/executeInteraction.ts +1 -1
- package/src/activities/extractDocumentText.ts +2 -3
- package/src/activities/generateDocumentProperties.ts +1 -1
- package/src/activities/generateEmbeddings.ts +1 -1
- package/src/activities/generateImageRendition.ts +1 -1
- package/src/activities/generateOrAssignContentType.ts +3 -3
- package/src/activities/getObjectFromStore.ts +1 -1
- package/src/activities/index-dsl.ts +17 -0
- package/src/activities/index.ts +1 -17
- package/src/activities/media/processPdfWithTextract.ts +1 -1
- package/src/activities/media/transcribeMediaWithGladia.ts +1 -1
- package/src/activities/notifyWebhook.ts +2 -2
- package/src/activities/setDocumentStatus.ts +1 -1
- package/src/dsl/dsl-workflow.ts +3 -3
- package/src/dsl/dslProxyActivities.ts +38 -0
- package/src/dsl/projections.ts +1 -1
- package/src/dsl/setup/ActivityContext.ts +5 -5
- package/src/dsl/workflow-exec-child.test.ts +11 -3
- package/src/dsl/workflow-fetch.test.ts +4 -1
- package/src/index.ts +1 -0
- package/src/system/generateObjectText.ts +12 -26
- package/src/system/notifyWebhookWorkflow.ts +16 -25
- package/src/system/recalculateEmbeddingsWorkflow.ts +9 -20
- package/src/utils/blobs.ts +1 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vertesia/workflow",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.49.0",
|
4
4
|
"type": "module",
|
5
5
|
"description": "Composable prompts workflow dsl",
|
6
6
|
"main": "./lib/esm/index.js",
|
@@ -49,9 +49,9 @@
|
|
49
49
|
"tiktoken": "^1.0.15",
|
50
50
|
"tmp": "^0.2.3",
|
51
51
|
"yaml": "^2.6.0",
|
52
|
-
"@
|
53
|
-
"@vertesia/
|
54
|
-
"@
|
52
|
+
"@llumiverse/core": "0.15.0",
|
53
|
+
"@vertesia/client": "0.49.0",
|
54
|
+
"@vertesia/common": "0.49.0"
|
55
55
|
},
|
56
56
|
"ts_dual_module": {
|
57
57
|
"outDir": "lib",
|
@@ -21,7 +21,7 @@ export interface CreateDocumentTypeFromInteractionRun extends DSLActivitySpec<Cr
|
|
21
21
|
name: 'createDocumentTypeFromInteractionRun';
|
22
22
|
}
|
23
23
|
|
24
|
-
export async function createDocumentTypeFromInteractionRun(payload: DSLActivityExecutionPayload) {
|
24
|
+
export async function createDocumentTypeFromInteractionRun(payload: DSLActivityExecutionPayload<CreateDocumentTypeFromInteractionRunParams>) {
|
25
25
|
const { params, client } = await setupActivity<CreateDocumentTypeFromInteractionRunParams>(payload);
|
26
26
|
|
27
27
|
if (!params.run) {
|
@@ -28,7 +28,7 @@ export interface CreateOrUpdateObjectFromInteractionRun extends DSLActivitySpec<
|
|
28
28
|
name: 'createOrUpdateDocumentFromInteractionRun';
|
29
29
|
}
|
30
30
|
|
31
|
-
export async function createOrUpdateDocumentFromInteractionRun(payload: DSLActivityExecutionPayload) {
|
31
|
+
export async function createOrUpdateDocumentFromInteractionRun(payload: DSLActivityExecutionPayload<CreateOrUpdateObjectFromInteractionRunParams>) {
|
32
32
|
const { params, client } = await setupActivity<CreateOrUpdateObjectFromInteractionRunParams>(payload);
|
33
33
|
|
34
34
|
const runId = params.run_id;
|
@@ -15,7 +15,7 @@ export interface UpdateDocumentFromInteractionRun extends DSLActivitySpec<Update
|
|
15
15
|
name: 'updateDocumentFromInteractionRun';
|
16
16
|
}
|
17
17
|
|
18
|
-
export async function updateDocumentFromInteractionRun(payload: DSLActivityExecutionPayload) {
|
18
|
+
export async function updateDocumentFromInteractionRun(payload: DSLActivityExecutionPayload<UpdateDocumentFromInteractionRunParams>) {
|
19
19
|
const { params, client, objectId } = await setupActivity<UpdateDocumentFromInteractionRunParams>(payload);
|
20
20
|
|
21
21
|
if (!params.run) {
|
@@ -32,7 +32,7 @@ export interface ChunkDocument extends DSLActivitySpec<ChunkDocumentParams> {
|
|
32
32
|
}
|
33
33
|
|
34
34
|
|
35
|
-
export async function chunkDocument(payload: DSLActivityExecutionPayload): Promise<ChunkDocumentResult> {
|
35
|
+
export async function chunkDocument(payload: DSLActivityExecutionPayload<ChunkDocumentParams>): Promise<ChunkDocumentResult> {
|
36
36
|
const { params, client, objectId } = await setupActivity<ChunkDocumentParams>(payload);
|
37
37
|
|
38
38
|
const { force } = params;
|
@@ -27,7 +27,7 @@ export interface CreatePdfDocumentFromSource extends DSLActivitySpec<CreatePdfDo
|
|
27
27
|
* Create a new PDF by extrracting pages from a source PDF
|
28
28
|
* @returns
|
29
29
|
*/
|
30
|
-
export async function createPdfDocumentFromSource(payload: DSLActivityExecutionPayload) {
|
30
|
+
export async function createPdfDocumentFromSource(payload: DSLActivityExecutionPayload<CreatePdfDocumentFromSourceParams>) {
|
31
31
|
const { client, objectId, params } = await setupActivity<CreatePdfDocumentFromSourceParams>(payload);
|
32
32
|
const inputObject = await client.objects.retrieve(objectId);
|
33
33
|
|
@@ -93,7 +93,7 @@ export interface ExecuteInteraction extends DSLActivitySpec<ExecuteInteractionPa
|
|
93
93
|
name: 'executeInteraction';
|
94
94
|
}
|
95
95
|
|
96
|
-
export async function executeInteraction(payload: DSLActivityExecutionPayload) {
|
96
|
+
export async function executeInteraction(payload: DSLActivityExecutionPayload<ExecuteInteractionParams>) {
|
97
97
|
const {
|
98
98
|
client, params
|
99
99
|
} = await setupActivity<ExecuteInteractionParams>(payload);
|
@@ -15,14 +15,13 @@ const JSON: DSLActivitySpec = {
|
|
15
15
|
}
|
16
16
|
|
17
17
|
// doesn't have any own param
|
18
|
-
export
|
19
|
-
|
18
|
+
export interface ExtractDocumentTextParams { };
|
20
19
|
export interface ExtractDocumentText extends DSLActivitySpec<ExtractDocumentTextParams> {
|
21
20
|
name: 'extractDocumentText';
|
22
21
|
projection?: never;
|
23
22
|
}
|
24
23
|
|
25
|
-
export async function extractDocumentText(payload: DSLActivityExecutionPayload): Promise<TextExtractionResult> {
|
24
|
+
export async function extractDocumentText(payload: DSLActivityExecutionPayload<ExtractDocumentTextParams>): Promise<TextExtractionResult> {
|
26
25
|
const { client, objectId } = await setupActivity(payload);
|
27
26
|
|
28
27
|
const r = await client.objects.find({
|
@@ -20,7 +20,7 @@ export interface GenerateDocumentProperties extends DSLActivitySpec<GenerateDocu
|
|
20
20
|
name: 'generateDocumentProperties';
|
21
21
|
}
|
22
22
|
|
23
|
-
export async function generateDocumentProperties(payload: DSLActivityExecutionPayload) {
|
23
|
+
export async function generateDocumentProperties(payload: DSLActivityExecutionPayload<GenerateDocumentPropertiesParams>) {
|
24
24
|
const context = await setupActivity<GenerateDocumentPropertiesParams>(payload);
|
25
25
|
const { params, client, objectId } = context;
|
26
26
|
const interactionName = params.interactionName ?? INT_EXTRACT_INFORMATION;
|
@@ -20,7 +20,7 @@ export interface GenerateEmbeddings extends DSLActivitySpec<GenerateEmbeddingsPa
|
|
20
20
|
name: 'generateEmbeddings';
|
21
21
|
}
|
22
22
|
|
23
|
-
export async function generateEmbeddings(payload: DSLActivityExecutionPayload) {
|
23
|
+
export async function generateEmbeddings(payload: DSLActivityExecutionPayload<GenerateEmbeddingsParams>) {
|
24
24
|
const { params, client, objectId, fetchProject } = await setupActivity<GenerateEmbeddingsParams>(payload);
|
25
25
|
const { force, type } = params;
|
26
26
|
|
@@ -22,7 +22,7 @@ export interface GenerateImageRendition extends DSLActivitySpec<GenerateImageRen
|
|
22
22
|
}
|
23
23
|
|
24
24
|
|
25
|
-
export async function generateImageRendition(payload: DSLActivityExecutionPayload) {
|
25
|
+
export async function generateImageRendition(payload: DSLActivityExecutionPayload<GenerateImageRenditionParams>) {
|
26
26
|
const { client, objectId, params } = await setupActivity<GenerateImageRenditionParams>(payload);
|
27
27
|
|
28
28
|
const supportedNonImageInputTypes = ['application/pdf']
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { CreateContentObjectTypePayload, DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
|
2
1
|
import { log } from "@temporalio/activity";
|
2
|
+
import { CreateContentObjectTypePayload, DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
|
3
3
|
import { ActivityContext, setupActivity } from "../dsl/setup/ActivityContext.js";
|
4
4
|
import { TruncateSpec, truncByMaxTokens } from "../utils/tokens.js";
|
5
5
|
import { InteractionExecutionParams, executeInteractionFromActivity } from "./executeInteraction.js";
|
@@ -28,7 +28,7 @@ export interface GenerateOrAssignContentType extends DSLActivitySpec<GenerateOrA
|
|
28
28
|
name: 'generateOrAssignContentType';
|
29
29
|
}
|
30
30
|
|
31
|
-
export async function generateOrAssignContentType(payload: DSLActivityExecutionPayload) {
|
31
|
+
export async function generateOrAssignContentType(payload: DSLActivityExecutionPayload<GenerateOrAssignContentTypeParams>) {
|
32
32
|
const context = await setupActivity<GenerateOrAssignContentTypeParams>(payload);
|
33
33
|
const { params, client, objectId } = context;
|
34
34
|
|
@@ -119,7 +119,7 @@ export async function generateOrAssignContentType(payload: DSLActivityExecutionP
|
|
119
119
|
};
|
120
120
|
}
|
121
121
|
|
122
|
-
async function generateNewType(context: ActivityContext
|
122
|
+
async function generateNewType(context: ActivityContext<GenerateOrAssignContentTypeParams>, existing_types: string[], content?: string, fileRef?: string) {
|
123
123
|
const { client, params } = context;
|
124
124
|
|
125
125
|
const project = await context.fetchProject();
|
@@ -16,7 +16,7 @@ export interface GetObject extends DSLActivitySpec<GetObjectParams> {
|
|
16
16
|
* @param objectId
|
17
17
|
* @param status
|
18
18
|
*/
|
19
|
-
export async function getObjectFromStore(payload: DSLActivityExecutionPayload): Promise<ContentObject> {
|
19
|
+
export async function getObjectFromStore(payload: DSLActivityExecutionPayload<GetObjectParams>): Promise<ContentObject> {
|
20
20
|
const { client, params, objectId } = await setupActivity<GetObjectParams>(payload);
|
21
21
|
|
22
22
|
const obj = await client.objects.retrieve(objectId, params.select);
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// Export here DSL activities
|
2
|
+
export { createDocumentTypeFromInteractionRun } from "./advanced/createDocumentTypeFromInteractionRun.js";
|
3
|
+
export { createOrUpdateDocumentFromInteractionRun } from "./advanced/createOrUpdateDocumentFromInteractionRun.js";
|
4
|
+
export { updateDocumentFromInteractionRun } from "./advanced/updateDocumentFromInteractionRun.js";
|
5
|
+
export { chunkDocument } from "./chunkDocument.js";
|
6
|
+
export { createPdfDocumentFromSource } from "./createDocumentFromOther.js";
|
7
|
+
export { executeInteraction } from "./executeInteraction.js";
|
8
|
+
export { extractDocumentText } from "./extractDocumentText.js";
|
9
|
+
export { generateDocumentProperties } from "./generateDocumentProperties.js";
|
10
|
+
export { generateEmbeddings } from "./generateEmbeddings.js";
|
11
|
+
export { generateImageRendition } from "./generateImageRendition.js";
|
12
|
+
export { generateOrAssignContentType } from "./generateOrAssignContentType.js";
|
13
|
+
export { getObjectFromStore } from "./getObjectFromStore.js";
|
14
|
+
export { convertPdfToStructuredText } from "./media/processPdfWithTextract.js";
|
15
|
+
export { transcribeMedia } from "./media/transcribeMediaWithGladia.js";
|
16
|
+
export { notifyWebhook } from "./notifyWebhook.js";
|
17
|
+
export { setDocumentStatus } from "./setDocumentStatus.js";
|
package/src/activities/index.ts
CHANGED
@@ -1,21 +1,5 @@
|
|
1
1
|
/**
|
2
2
|
* Here we export all activities to be registered with the temporal worker
|
3
3
|
*/
|
4
|
-
export
|
5
|
-
export { createOrUpdateDocumentFromInteractionRun } from "./advanced/createOrUpdateDocumentFromInteractionRun.js";
|
6
|
-
export { updateDocumentFromInteractionRun } from "./advanced/updateDocumentFromInteractionRun.js";
|
7
|
-
export { chunkDocument } from "./chunkDocument.js";
|
8
|
-
export { createPdfDocumentFromSource } from "./createDocumentFromOther.js";
|
9
|
-
export { executeInteraction } from "./executeInteraction.js";
|
10
|
-
export { extractDocumentText } from "./extractDocumentText.js";
|
11
|
-
export { generateDocumentProperties } from "./generateDocumentProperties.js";
|
12
|
-
export { generateEmbeddings } from "./generateEmbeddings.js";
|
13
|
-
export { generateImageRendition } from "./generateImageRendition.js";
|
14
|
-
export { generateOrAssignContentType } from "./generateOrAssignContentType.js";
|
15
|
-
export { getObjectFromStore } from "./getObjectFromStore.js";
|
16
|
-
export { convertPdfToStructuredText } from "./media/processPdfWithTextract.js";
|
17
|
-
export { transcribeMedia } from "./media/transcribeMediaWithGladia.js";
|
18
|
-
export { notifyWebhook } from "./notifyWebhook.js";
|
19
|
-
export { setDocumentStatus } from "./setDocumentStatus.js";
|
20
|
-
|
4
|
+
export * from "./index-dsl.js";
|
21
5
|
export * from "../iterative-generation/activities/index.js";
|
@@ -37,7 +37,7 @@ export interface StructuredTextResult extends TextExtractionResult {
|
|
37
37
|
|
38
38
|
|
39
39
|
|
40
|
-
export async function convertPdfToStructuredText(payload: DSLActivityExecutionPayload): Promise<StructuredTextResult> {
|
40
|
+
export async function convertPdfToStructuredText(payload: DSLActivityExecutionPayload<ConvertPdfToStructuredTextParams>): Promise<StructuredTextResult> {
|
41
41
|
|
42
42
|
|
43
43
|
const { params, client, objectId } = await setupActivity<ConvertPdfToStructuredTextParams>(payload);
|
@@ -21,7 +21,7 @@ export interface TranscriptMediaResult extends TextExtractionResult {
|
|
21
21
|
|
22
22
|
const GLADIA_URL = "https://api.gladia.io/v2";
|
23
23
|
|
24
|
-
export async function transcribeMedia(payload: DSLActivityExecutionPayload): Promise<TranscriptMediaResult> {
|
24
|
+
export async function transcribeMedia(payload: DSLActivityExecutionPayload<TranscriptMediaParams>): Promise<TranscriptMediaResult> {
|
25
25
|
|
26
26
|
const { params, client, objectId } = await setupActivity<TranscriptMediaParams>(payload);
|
27
27
|
|
@@ -16,7 +16,7 @@ export interface NotifyWebhook extends DSLActivitySpec<NotifyWebhookParams> {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
|
19
|
-
export async function notifyWebhook(payload: DSLActivityExecutionPayload) {
|
19
|
+
export async function notifyWebhook(payload: DSLActivityExecutionPayload<NotifyWebhookParams>) {
|
20
20
|
|
21
21
|
const { params } = await setupActivity<NotifyWebhookParams>(payload);
|
22
22
|
const { target_url, method, payload: requestPayload, headers } = params
|
@@ -46,6 +46,6 @@ export async function notifyWebhook(payload: DSLActivityExecutionPayload) {
|
|
46
46
|
throw new Error(`Failed to notify webhook ${target_url}: ${res.statusText}`);
|
47
47
|
}
|
48
48
|
|
49
|
-
return {status: res.status, message: res.statusText, url: res.url }
|
49
|
+
return { status: res.status, message: res.statusText, url: res.url }
|
50
50
|
|
51
51
|
}
|
@@ -15,7 +15,7 @@ export interface SetDocumentStatus extends DSLActivitySpec<SetDocumentStatusPara
|
|
15
15
|
* @param objectId
|
16
16
|
* @param status
|
17
17
|
*/
|
18
|
-
export async function setDocumentStatus(payload: DSLActivityExecutionPayload) {
|
18
|
+
export async function setDocumentStatus(payload: DSLActivityExecutionPayload<SetDocumentStatusParams>) {
|
19
19
|
const { client, params, objectId } = await setupActivity<SetDocumentStatusParams>(payload);
|
20
20
|
|
21
21
|
const res = await client.objects.update(objectId, { status: params.status });
|
package/src/dsl/dsl-workflow.ts
CHANGED
@@ -16,12 +16,12 @@ interface BaseActivityPayload extends WorkflowExecutionPayload {
|
|
16
16
|
debug_mode?: boolean;
|
17
17
|
}
|
18
18
|
|
19
|
-
function dslActivityPayload(basePayload: BaseActivityPayload, activity: DSLActivitySpec, params:
|
19
|
+
function dslActivityPayload<ParamsT extends Record<string, any>>(basePayload: BaseActivityPayload, activity: DSLActivitySpec, params: ParamsT) {
|
20
20
|
return {
|
21
21
|
...basePayload,
|
22
22
|
activity,
|
23
|
-
params,
|
24
|
-
} as DSLActivityExecutionPayload
|
23
|
+
params: params || {},
|
24
|
+
} as DSLActivityExecutionPayload<ParamsT>
|
25
25
|
}
|
26
26
|
|
27
27
|
export async function dslWorkflow(payload: DSLWorkflowExecutionPayload) {
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { ActivityOptions, proxyActivities } from "@temporalio/workflow";
|
2
|
+
import { DSLActivityExecutionPayload, WorkflowExecutionPayload } from "@vertesia/common";
|
3
|
+
|
4
|
+
export interface DslActivityFunction<ParamsT extends Record<string, any> = any, ReturnT = any> {
|
5
|
+
(payload: DSLActivityExecutionPayload<ParamsT>): Promise<ReturnT>;
|
6
|
+
}
|
7
|
+
|
8
|
+
export interface DslSimplifiedActivityFunction<ParamsT = any, ReturnT = any> {
|
9
|
+
(payload: WorkflowExecutionPayload, params: ParamsT): Promise<ReturnT>;
|
10
|
+
}
|
11
|
+
|
12
|
+
export function dslProxyActivities<
|
13
|
+
ActivitiesT extends Record<string, DslActivityFunction<any, any>>
|
14
|
+
>(workflowName: string, options: ActivityOptions = {}) {
|
15
|
+
type DslActivities = {
|
16
|
+
[K in keyof ActivitiesT]: ActivitiesT[K] extends DslActivityFunction<infer ParamsT, infer ReturnT>
|
17
|
+
? DslSimplifiedActivityFunction<ParamsT, ReturnT>
|
18
|
+
: never;
|
19
|
+
};
|
20
|
+
|
21
|
+
const activities = proxyActivities<ActivitiesT>(options) as ActivitiesT;
|
22
|
+
|
23
|
+
return new Proxy({}, {
|
24
|
+
get(_target, prop) {
|
25
|
+
const activityFn = activities[prop as keyof ActivitiesT] as DslActivityFunction;
|
26
|
+
return (payload: WorkflowExecutionPayload, params: any) => {
|
27
|
+
return activityFn({
|
28
|
+
...payload,
|
29
|
+
activity: {
|
30
|
+
name: prop as string,
|
31
|
+
},
|
32
|
+
workflow_name: workflowName,
|
33
|
+
params,
|
34
|
+
});
|
35
|
+
};
|
36
|
+
},
|
37
|
+
}) as unknown as DslActivities;
|
38
|
+
}
|
package/src/dsl/projections.ts
CHANGED
@@ -51,7 +51,7 @@ function runProjection(obj: any, vars: Vars) {
|
|
51
51
|
return obj; // return the value as is
|
52
52
|
}
|
53
53
|
|
54
|
-
export function projectResult(payload: DSLActivityExecutionPayload
|
54
|
+
export function projectResult<TParams extends Record<string, any>>(payload: DSLActivityExecutionPayload<TParams>, params: Record<string, any>, result: any, fallback: any) {
|
55
55
|
return payload.activity.projection ? makeProjection(payload.activity.projection, params, result) : fallback;
|
56
56
|
}
|
57
57
|
|
@@ -13,11 +13,11 @@ registerFetchProviderFactory(DocumentProvider.ID, DocumentProvider.factory);
|
|
13
13
|
registerFetchProviderFactory(DocumentTypeProvider.ID, DocumentTypeProvider.factory);
|
14
14
|
registerFetchProviderFactory(InteractionRunProvider.ID, InteractionRunProvider.factory);
|
15
15
|
|
16
|
-
export class ActivityContext<
|
16
|
+
export class ActivityContext<ParamsT extends Record<string, any>> {
|
17
17
|
client: VertesiaClient;
|
18
18
|
_project?: Promise<Project | undefined>;
|
19
19
|
|
20
|
-
constructor(public payload: DSLActivityExecutionPayload
|
20
|
+
constructor(public payload: DSLActivityExecutionPayload<ParamsT>, client: VertesiaClient, public params: ParamsT) {
|
21
21
|
this.client = client;
|
22
22
|
this.fetchProject = this.fetchProject.bind(this);
|
23
23
|
}
|
@@ -45,7 +45,7 @@ export class ActivityContext<T extends Record<string, any> = Record<string, any>
|
|
45
45
|
}
|
46
46
|
|
47
47
|
|
48
|
-
export async function setupActivity<
|
48
|
+
export async function setupActivity<ParamsT extends Record<string, any>>(payload: DSLActivityExecutionPayload<ParamsT>) {
|
49
49
|
|
50
50
|
const isDebugMode = !!payload.debug_mode;
|
51
51
|
|
@@ -93,10 +93,10 @@ export async function setupActivity<T extends Record<string, any> = Record<strin
|
|
93
93
|
}
|
94
94
|
}
|
95
95
|
|
96
|
-
const params = vars.resolve() as
|
96
|
+
const params = vars.resolve() as ParamsT;
|
97
97
|
log.info(`Activity ${payload.activity.name} setup complete`, { params });
|
98
98
|
|
99
|
-
return new ActivityContext<
|
99
|
+
return new ActivityContext<ParamsT>(payload, client, params);
|
100
100
|
}
|
101
101
|
|
102
102
|
|
@@ -5,17 +5,25 @@ import { afterAll, beforeAll, describe, expect, test } from 'vitest';
|
|
5
5
|
import { dslWorkflow } from './dsl-workflow.js';
|
6
6
|
import { setupActivity } from './setup/ActivityContext.js';
|
7
7
|
|
8
|
-
|
8
|
+
interface SayHelloParams {
|
9
|
+
name: string;
|
10
|
+
}
|
11
|
+
interface PrepareResultParams {
|
12
|
+
parent: string;
|
13
|
+
child: string;
|
14
|
+
}
|
15
|
+
|
16
|
+
async function sayHelloFromParent(payload: DSLActivityExecutionPayload<SayHelloParams>) {
|
9
17
|
const { params } = await setupActivity(payload);
|
10
18
|
return `Parent: Hello, ${params.name}!`;
|
11
19
|
}
|
12
20
|
|
13
|
-
async function sayHelloFromDSLChild(payload: DSLActivityExecutionPayload) {
|
21
|
+
async function sayHelloFromDSLChild(payload: DSLActivityExecutionPayload<SayHelloParams>) {
|
14
22
|
const { params } = await setupActivity(payload);
|
15
23
|
return `DSL Child: Hello, ${params.name}!`;
|
16
24
|
}
|
17
25
|
|
18
|
-
async function prepareResult(payload: DSLActivityExecutionPayload) {
|
26
|
+
async function prepareResult(payload: DSLActivityExecutionPayload<PrepareResultParams>) {
|
19
27
|
const { params } = await setupActivity(payload);
|
20
28
|
return [params.parent, params.child]
|
21
29
|
}
|
@@ -8,6 +8,9 @@ import { setupActivity } from "./setup/ActivityContext.js";
|
|
8
8
|
import { DataProvider } from './setup/fetch/DataProvider.js';
|
9
9
|
import { registerFetchProviderFactory } from './setup/fetch/index.js';
|
10
10
|
|
11
|
+
interface SayMessageParams {
|
12
|
+
message: string;
|
13
|
+
}
|
11
14
|
|
12
15
|
class DocumentTestProvider extends DataProvider {
|
13
16
|
|
@@ -35,7 +38,7 @@ class DocumentTestProvider extends DataProvider {
|
|
35
38
|
registerFetchProviderFactory(DocumentTestProvider.ID, DocumentTestProvider.factory);
|
36
39
|
|
37
40
|
|
38
|
-
async function sayMessage(payload: DSLActivityExecutionPayload): Promise<string> {
|
41
|
+
async function sayMessage(payload: DSLActivityExecutionPayload<SayMessageParams>): Promise<string> {
|
39
42
|
const { params } = await setupActivity(payload);
|
40
43
|
return params.message;
|
41
44
|
}
|
package/src/index.ts
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import
|
5
|
-
import
|
2
|
+
import { log } from "@temporalio/workflow";
|
3
|
+
import { WorkflowExecutionPayload } from "@vertesia/common";
|
4
|
+
import * as activities from "../activities/index-dsl.js";
|
5
|
+
import { dslProxyActivities } from "../dsl/dslProxyActivities.js";
|
6
6
|
import { NoDocumentFound } from "../errors.js";
|
7
7
|
import { TextExtractionResult } from "../index.js";
|
8
8
|
|
9
9
|
const {
|
10
10
|
getObjectFromStore,
|
11
11
|
extractDocumentText
|
12
|
-
} =
|
12
|
+
} = dslProxyActivities<typeof activities>("generateTextWorkflow", {
|
13
13
|
startToCloseTimeout: "5 minute",
|
14
14
|
retry: {
|
15
15
|
initialInterval: '5s',
|
@@ -23,7 +23,7 @@ const {
|
|
23
23
|
const {
|
24
24
|
transcribeMedia,
|
25
25
|
convertPdfToStructuredText
|
26
|
-
} =
|
26
|
+
} = dslProxyActivities<typeof activities>("generateTextWorkflow", {
|
27
27
|
startToCloseTimeout: "30 minute",
|
28
28
|
retry: {
|
29
29
|
initialInterval: '30s',
|
@@ -35,19 +35,12 @@ const {
|
|
35
35
|
});
|
36
36
|
|
37
37
|
|
38
|
-
export async function generateObjectText(payload:
|
38
|
+
export async function generateObjectText(payload: WorkflowExecutionPayload): Promise<TextExtractionResult> {
|
39
39
|
|
40
40
|
const { objectIds } = payload;
|
41
41
|
const objectId = objectIds[0];
|
42
42
|
|
43
|
-
const object = await getObjectFromStore({
|
44
|
-
...payload,
|
45
|
-
activity: {
|
46
|
-
name: "getObject",
|
47
|
-
} satisfies GetObject,
|
48
|
-
params: {},
|
49
|
-
workflow_name: "Generate Text",
|
50
|
-
});
|
43
|
+
const object = await getObjectFromStore(payload, {});
|
51
44
|
|
52
45
|
if (!object.content?.source) {
|
53
46
|
throw new NoDocumentFound(`No source or mimetype found for object ${objectId}`, objectIds);
|
@@ -63,16 +56,9 @@ export async function generateObjectText(payload: DSLWorkflowExecutionPayload):
|
|
63
56
|
}
|
64
57
|
log.info(`Converting file type ${mimetype} to text with ${converter.name}`);
|
65
58
|
|
66
|
-
const res = await converter.activity(payload)(
|
67
|
-
...payload,
|
68
|
-
activity: {
|
69
|
-
name: converter.name,
|
70
|
-
},
|
71
|
-
params: converter.params,
|
72
|
-
workflow_name: "Generate Text",
|
73
|
-
});
|
59
|
+
const res = await converter.activity(payload)(payload, converter.params);
|
74
60
|
|
75
|
-
log.info("Generated text for object", {res, objectId});
|
61
|
+
log.info("Generated text for object", { res, objectId });
|
76
62
|
return res;
|
77
63
|
|
78
64
|
}
|
@@ -81,8 +67,8 @@ export async function generateObjectText(payload: DSLWorkflowExecutionPayload):
|
|
81
67
|
const ConverterActivity = [
|
82
68
|
{
|
83
69
|
type: /application\/pdf/,
|
84
|
-
activity: (payload:
|
85
|
-
const useTextractForPDF = payload.vars?.useTextractForPdf?? false;
|
70
|
+
activity: (payload: WorkflowExecutionPayload) => {
|
71
|
+
const useTextractForPDF = payload.vars?.useTextractForPdf ?? false;
|
86
72
|
return useTextractForPDF ? convertPdfToStructuredText : extractDocumentText;
|
87
73
|
},
|
88
74
|
name: "ConvertPdfToStructuredText",
|
@@ -1,11 +1,12 @@
|
|
1
1
|
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import * as activities from "../activities/index.js";
|
2
|
+
import { log } from "@temporalio/workflow";
|
3
|
+
import { ContentEventName, WorkflowExecutionPayload } from "@vertesia/common";
|
4
|
+
import * as activities from "../activities/index-dsl.js";
|
5
|
+
import { dslProxyActivities } from "../dsl/dslProxyActivities.js";
|
5
6
|
|
6
7
|
const {
|
7
8
|
notifyWebhook
|
8
|
-
} =
|
9
|
+
} = dslProxyActivities<typeof activities>("notifyWebhookWorkflow", {
|
9
10
|
startToCloseTimeout: "5 minute",
|
10
11
|
retry: {
|
11
12
|
initialInterval: '5s',
|
@@ -17,10 +18,7 @@ const {
|
|
17
18
|
});
|
18
19
|
|
19
20
|
|
20
|
-
|
21
|
-
}
|
22
|
-
|
23
|
-
export async function notifyWebhookWorkflow(payload: NotifyWebhookWorkflowParams): Promise<any> {
|
21
|
+
export async function notifyWebhookWorkflow(payload: WorkflowExecutionPayload): Promise<any> {
|
24
22
|
|
25
23
|
const { objectIds, vars } = payload;
|
26
24
|
const notifications = [];
|
@@ -33,23 +31,16 @@ export async function notifyWebhookWorkflow(payload: NotifyWebhookWorkflowParams
|
|
33
31
|
}
|
34
32
|
|
35
33
|
for (const ep of endpoints) {
|
36
|
-
const n = notifyWebhook({
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
event: eventName,
|
47
|
-
data: vars.webhook_data ?? undefined,
|
48
|
-
vars
|
49
|
-
}
|
50
|
-
},
|
51
|
-
workflow_name: "Notify Webhook",
|
52
|
-
} ).then(res => {
|
34
|
+
const n = notifyWebhook(payload, {
|
35
|
+
target_url: ep,
|
36
|
+
method: 'POST',
|
37
|
+
payload: {
|
38
|
+
object_ids: objectIds,
|
39
|
+
event: eventName,
|
40
|
+
data: vars.webhook_data ?? undefined,
|
41
|
+
vars
|
42
|
+
}
|
43
|
+
}).then(res => {
|
53
44
|
log.info(`Webhook notified at ${ep} with response code: ${res.status}`, { res });
|
54
45
|
return res;
|
55
46
|
});
|
@@ -1,13 +1,12 @@
|
|
1
|
-
import { proxyActivities } from "@temporalio/workflow";
|
2
1
|
|
3
|
-
import {
|
4
|
-
import
|
5
|
-
import
|
2
|
+
import { SupportedEmbeddingTypes, WorkflowExecutionPayload } from "@vertesia/common";
|
3
|
+
import * as activities from "../activities/index-dsl.js";
|
4
|
+
import { dslProxyActivities } from "../dsl/dslProxyActivities.js";
|
6
5
|
import { NoDocumentFound } from "../errors.js";
|
7
6
|
|
8
7
|
const {
|
9
8
|
generateEmbeddings,
|
10
|
-
} =
|
9
|
+
} = dslProxyActivities<typeof activities>("recalculateEmbeddingsWorkflow", {
|
11
10
|
startToCloseTimeout: "5 minute",
|
12
11
|
retry: {
|
13
12
|
initialInterval: '10s',
|
@@ -18,25 +17,15 @@ const {
|
|
18
17
|
},
|
19
18
|
});
|
20
19
|
|
21
|
-
export async function recalculateEmbeddingsWorkflow(payload:
|
20
|
+
export async function recalculateEmbeddingsWorkflow(payload: WorkflowExecutionPayload) {
|
22
21
|
|
23
22
|
const embeddings = [];
|
24
23
|
|
25
24
|
for (const type of Object.values(SupportedEmbeddingTypes)) {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
type
|
31
|
-
},
|
32
|
-
} satisfies GenerateEmbeddings;
|
33
|
-
|
34
|
-
embeddings.push(generateEmbeddings({
|
35
|
-
...payload,
|
36
|
-
params: {},
|
37
|
-
workflow_name: 'recalculateEmbeddingsWorkflow',
|
38
|
-
activity: activityConfig,
|
39
|
-
}));
|
25
|
+
embeddings.push(generateEmbeddings(payload, {
|
26
|
+
force: true,
|
27
|
+
type
|
28
|
+
}))
|
40
29
|
}
|
41
30
|
|
42
31
|
const res = await Promise.all(embeddings);
|
package/src/utils/blobs.ts
CHANGED
@@ -10,7 +10,7 @@ export async function fetchBlobAsStream(client: VertesiaClient, blobUri: string)
|
|
10
10
|
try {
|
11
11
|
return await client.files.downloadFile(blobUri);
|
12
12
|
} catch (err: any) {
|
13
|
-
throw new NoDocumentFound(`
|
13
|
+
throw new NoDocumentFound(`Failed to download blob ${blobUri}: ${err.message}`, []);
|
14
14
|
}
|
15
15
|
}
|
16
16
|
export async function fetchBlobAsBuffer(client: VertesiaClient, blobUri: string): Promise<Buffer> {
|