@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.
Files changed (155) hide show
  1. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -1
  2. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -1
  3. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -1
  4. package/lib/cjs/activities/chunkDocument.js.map +1 -1
  5. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -1
  6. package/lib/cjs/activities/executeInteraction.js.map +1 -1
  7. package/lib/cjs/activities/extractDocumentText.js +1 -0
  8. package/lib/cjs/activities/extractDocumentText.js.map +1 -1
  9. package/lib/cjs/activities/generateDocumentProperties.js.map +1 -1
  10. package/lib/cjs/activities/generateEmbeddings.js.map +1 -1
  11. package/lib/cjs/activities/generateImageRendition.js.map +1 -1
  12. package/lib/cjs/activities/generateOrAssignContentType.js.map +1 -1
  13. package/lib/cjs/activities/getObjectFromStore.js.map +1 -1
  14. package/lib/cjs/activities/index-dsl.js +37 -0
  15. package/lib/cjs/activities/index-dsl.js.map +1 -0
  16. package/lib/cjs/activities/index.js +1 -33
  17. package/lib/cjs/activities/index.js.map +1 -1
  18. package/lib/cjs/activities/media/processPdfWithTextract.js.map +1 -1
  19. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +1 -1
  20. package/lib/cjs/activities/notifyWebhook.js.map +1 -1
  21. package/lib/cjs/activities/setDocumentStatus.js.map +1 -1
  22. package/lib/cjs/dsl/dsl-workflow.js +2 -2
  23. package/lib/cjs/dsl/dsl-workflow.js.map +1 -1
  24. package/lib/cjs/dsl/dslProxyActivities.js +23 -0
  25. package/lib/cjs/dsl/dslProxyActivities.js.map +1 -0
  26. package/lib/cjs/dsl/projections.js.map +1 -1
  27. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -1
  28. package/lib/cjs/index.js +1 -0
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/cjs/system/generateObjectText.js +5 -18
  31. package/lib/cjs/system/generateObjectText.js.map +1 -1
  32. package/lib/cjs/system/notifyWebhookWorkflow.js +12 -18
  33. package/lib/cjs/system/notifyWebhookWorkflow.js.map +1 -1
  34. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +5 -14
  35. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +1 -1
  36. package/lib/cjs/utils/blobs.js +1 -1
  37. package/lib/cjs/utils/blobs.js.map +1 -1
  38. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +1 -1
  39. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +1 -1
  40. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +1 -1
  41. package/lib/esm/activities/chunkDocument.js.map +1 -1
  42. package/lib/esm/activities/createDocumentFromOther.js.map +1 -1
  43. package/lib/esm/activities/executeInteraction.js.map +1 -1
  44. package/lib/esm/activities/extractDocumentText.js +1 -0
  45. package/lib/esm/activities/extractDocumentText.js.map +1 -1
  46. package/lib/esm/activities/generateDocumentProperties.js.map +1 -1
  47. package/lib/esm/activities/generateEmbeddings.js.map +1 -1
  48. package/lib/esm/activities/generateImageRendition.js.map +1 -1
  49. package/lib/esm/activities/generateOrAssignContentType.js.map +1 -1
  50. package/lib/esm/activities/getObjectFromStore.js.map +1 -1
  51. package/lib/esm/activities/index-dsl.js +18 -0
  52. package/lib/esm/activities/index-dsl.js.map +1 -0
  53. package/lib/esm/activities/index.js +1 -16
  54. package/lib/esm/activities/index.js.map +1 -1
  55. package/lib/esm/activities/media/processPdfWithTextract.js.map +1 -1
  56. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +1 -1
  57. package/lib/esm/activities/notifyWebhook.js.map +1 -1
  58. package/lib/esm/activities/setDocumentStatus.js.map +1 -1
  59. package/lib/esm/dsl/dsl-workflow.js +2 -2
  60. package/lib/esm/dsl/dsl-workflow.js.map +1 -1
  61. package/lib/esm/dsl/dslProxyActivities.js +20 -0
  62. package/lib/esm/dsl/dslProxyActivities.js.map +1 -0
  63. package/lib/esm/dsl/projections.js.map +1 -1
  64. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -1
  65. package/lib/esm/index.js +1 -0
  66. package/lib/esm/index.js.map +1 -1
  67. package/lib/esm/system/generateObjectText.js +6 -19
  68. package/lib/esm/system/generateObjectText.js.map +1 -1
  69. package/lib/esm/system/notifyWebhookWorkflow.js +12 -18
  70. package/lib/esm/system/notifyWebhookWorkflow.js.map +1 -1
  71. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +5 -14
  72. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +1 -1
  73. package/lib/esm/utils/blobs.js +1 -1
  74. package/lib/esm/utils/blobs.js.map +1 -1
  75. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +1 -1
  76. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +1 -1
  77. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +1 -1
  78. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +1 -1
  79. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +1 -1
  80. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +1 -1
  81. package/lib/types/activities/chunkDocument.d.ts +1 -1
  82. package/lib/types/activities/chunkDocument.d.ts.map +1 -1
  83. package/lib/types/activities/createDocumentFromOther.d.ts +1 -1
  84. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -1
  85. package/lib/types/activities/executeInteraction.d.ts +1 -1
  86. package/lib/types/activities/executeInteraction.d.ts.map +1 -1
  87. package/lib/types/activities/extractDocumentText.d.ts +3 -2
  88. package/lib/types/activities/extractDocumentText.d.ts.map +1 -1
  89. package/lib/types/activities/generateDocumentProperties.d.ts +1 -1
  90. package/lib/types/activities/generateDocumentProperties.d.ts.map +1 -1
  91. package/lib/types/activities/generateEmbeddings.d.ts +1 -1
  92. package/lib/types/activities/generateEmbeddings.d.ts.map +1 -1
  93. package/lib/types/activities/generateImageRendition.d.ts +1 -1
  94. package/lib/types/activities/generateImageRendition.d.ts.map +1 -1
  95. package/lib/types/activities/generateOrAssignContentType.d.ts +1 -1
  96. package/lib/types/activities/generateOrAssignContentType.d.ts.map +1 -1
  97. package/lib/types/activities/getObjectFromStore.d.ts +1 -1
  98. package/lib/types/activities/getObjectFromStore.d.ts.map +1 -1
  99. package/lib/types/activities/index-dsl.d.ts +17 -0
  100. package/lib/types/activities/index-dsl.d.ts.map +1 -0
  101. package/lib/types/activities/index.d.ts +1 -16
  102. package/lib/types/activities/index.d.ts.map +1 -1
  103. package/lib/types/activities/media/processPdfWithTextract.d.ts +1 -1
  104. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +1 -1
  105. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +1 -1
  106. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +1 -1
  107. package/lib/types/activities/notifyWebhook.d.ts +1 -1
  108. package/lib/types/activities/notifyWebhook.d.ts.map +1 -1
  109. package/lib/types/activities/setDocumentStatus.d.ts +1 -1
  110. package/lib/types/activities/setDocumentStatus.d.ts.map +1 -1
  111. package/lib/types/dsl/dslProxyActivities.d.ts +10 -0
  112. package/lib/types/dsl/dslProxyActivities.d.ts.map +1 -0
  113. package/lib/types/dsl/projections.d.ts +1 -1
  114. package/lib/types/dsl/projections.d.ts.map +1 -1
  115. package/lib/types/dsl/setup/ActivityContext.d.ts +5 -5
  116. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -1
  117. package/lib/types/index.d.ts +1 -0
  118. package/lib/types/index.d.ts.map +1 -1
  119. package/lib/types/system/generateObjectText.d.ts +2 -2
  120. package/lib/types/system/generateObjectText.d.ts.map +1 -1
  121. package/lib/types/system/notifyWebhookWorkflow.d.ts +2 -5
  122. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +1 -1
  123. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +2 -2
  124. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +1 -1
  125. package/lib/workflows-bundle.js +84 -323
  126. package/package.json +4 -4
  127. package/src/activities/advanced/createDocumentTypeFromInteractionRun.ts +1 -1
  128. package/src/activities/advanced/createOrUpdateDocumentFromInteractionRun.ts +1 -1
  129. package/src/activities/advanced/updateDocumentFromInteractionRun.ts +1 -1
  130. package/src/activities/chunkDocument.ts +1 -1
  131. package/src/activities/createDocumentFromOther.ts +1 -1
  132. package/src/activities/executeInteraction.ts +1 -1
  133. package/src/activities/extractDocumentText.ts +2 -3
  134. package/src/activities/generateDocumentProperties.ts +1 -1
  135. package/src/activities/generateEmbeddings.ts +1 -1
  136. package/src/activities/generateImageRendition.ts +1 -1
  137. package/src/activities/generateOrAssignContentType.ts +3 -3
  138. package/src/activities/getObjectFromStore.ts +1 -1
  139. package/src/activities/index-dsl.ts +17 -0
  140. package/src/activities/index.ts +1 -17
  141. package/src/activities/media/processPdfWithTextract.ts +1 -1
  142. package/src/activities/media/transcribeMediaWithGladia.ts +1 -1
  143. package/src/activities/notifyWebhook.ts +2 -2
  144. package/src/activities/setDocumentStatus.ts +1 -1
  145. package/src/dsl/dsl-workflow.ts +3 -3
  146. package/src/dsl/dslProxyActivities.ts +38 -0
  147. package/src/dsl/projections.ts +1 -1
  148. package/src/dsl/setup/ActivityContext.ts +5 -5
  149. package/src/dsl/workflow-exec-child.test.ts +11 -3
  150. package/src/dsl/workflow-fetch.test.ts +4 -1
  151. package/src/index.ts +1 -0
  152. package/src/system/generateObjectText.ts +12 -26
  153. package/src/system/notifyWebhookWorkflow.ts +16 -25
  154. package/src/system/recalculateEmbeddingsWorkflow.ts +9 -20
  155. 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.47.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
- "@vertesia/client": "0.47.0",
53
- "@vertesia/common": "0.47.0",
54
- "@llumiverse/core": "0.15.0"
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 type ExtractDocumentTextParams = never;
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, existing_types: string[], content?: string, fileRef?: string) {
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";
@@ -1,21 +1,5 @@
1
1
  /**
2
2
  * Here we export all activities to be registered with the temporal worker
3
3
  */
4
- export { createDocumentTypeFromInteractionRun } from "./advanced/createDocumentTypeFromInteractionRun.js";
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 });
@@ -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: Record<string, any> = {}) {
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
+ }
@@ -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, params: Record<string, any>, result: any, fallback: any) {
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<T extends Record<string, any> = Record<string, any>> {
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, client: VertesiaClient, public params: T) {
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<T extends Record<string, any> = Record<string, any>>(payload: DSLActivityExecutionPayload) {
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 T;
96
+ const params = vars.resolve() as ParamsT;
97
97
  log.info(`Activity ${payload.activity.name} setup complete`, { params });
98
98
 
99
- return new ActivityContext<T>(payload, client, params);
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
- async function sayHelloFromParent(payload: DSLActivityExecutionPayload) {
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
@@ -25,3 +25,4 @@ export * from "./activities/notifyWebhook.js";
25
25
  export * from "./iterative-generation/activities/index.js";
26
26
 
27
27
  export * from "./result-types.js";
28
+ export * from "./dsl/dslProxyActivities.js";
@@ -1,15 +1,15 @@
1
1
 
2
- import { DSLWorkflowExecutionPayload } from "@vertesia/common";
3
- import { log, proxyActivities } from "@temporalio/workflow";
4
- import { GetObject } from "../activities/getObjectFromStore.js";
5
- import * as activities from "../activities/index.js";
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
- } = proxyActivities<typeof activities>({
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
- } = proxyActivities<typeof activities>({
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: DSLWorkflowExecutionPayload): Promise<TextExtractionResult> {
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: DSLWorkflowExecutionPayload) => {
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 { ContentEventName, DSLWorkflowExecutionPayload } from "@vertesia/common";
3
- import { log, proxyActivities } from "@temporalio/workflow";
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
- } = proxyActivities<typeof activities>({
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
- interface NotifyWebhookWorkflowParams extends DSLWorkflowExecutionPayload {
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
- ...payload,
38
- activity: {
39
- name: "notifyWebhook",
40
- } ,
41
- params: {
42
- target_url: ep,
43
- method: 'POST',
44
- payload: {
45
- object_ids: objectIds,
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 { DSLActivitySpec, DSLWorkflowExecutionPayload, SupportedEmbeddingTypes } from "@vertesia/common";
4
- import { GenerateEmbeddings } from "../activities/generateEmbeddings.js";
5
- import * as activities from "../activities/index.js";
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
- } = proxyActivities<typeof activities>({
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: DSLWorkflowExecutionPayload) {
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
- const activityConfig: DSLActivitySpec = {
27
- name: 'generateEmbeddings',
28
- params: {
29
- force: true,
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);
@@ -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(`Blob ${blobUri} not found`, []);
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> {