@vertesia/workflow 0.50.1 → 0.51.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 (107) hide show
  1. package/lib/cjs/activities/createDocumentFromOther.js.map +1 -1
  2. package/lib/cjs/activities/executeInteraction.js +1 -2
  3. package/lib/cjs/activities/executeInteraction.js.map +1 -1
  4. package/lib/cjs/activities/extractDocumentText.js +1 -7
  5. package/lib/cjs/activities/extractDocumentText.js.map +1 -1
  6. package/lib/cjs/dsl/setup/ActivityContext.js +2 -2
  7. package/lib/cjs/dsl/setup/ActivityContext.js.map +1 -1
  8. package/lib/cjs/dsl.js +20 -0
  9. package/lib/cjs/dsl.js.map +1 -0
  10. package/lib/cjs/index.js +8 -2
  11. package/lib/cjs/index.js.map +1 -1
  12. package/lib/cjs/iterative-generation/activities/extractToc.js +2 -2
  13. package/lib/cjs/iterative-generation/activities/extractToc.js.map +1 -1
  14. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +1 -1
  15. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +1 -1
  16. package/lib/cjs/iterative-generation/activities/generatePart.js +1 -1
  17. package/lib/cjs/iterative-generation/activities/generatePart.js.map +1 -1
  18. package/lib/cjs/iterative-generation/activities/generateToc.js +1 -1
  19. package/lib/cjs/iterative-generation/activities/generateToc.js.map +1 -1
  20. package/lib/cjs/iterative-generation/utils.js +7 -4
  21. package/lib/cjs/iterative-generation/utils.js.map +1 -1
  22. package/lib/cjs/utils/blobs.js +2 -2
  23. package/lib/cjs/utils/blobs.js.map +1 -1
  24. package/lib/cjs/utils/client.js +2 -2
  25. package/lib/cjs/utils/client.js.map +1 -1
  26. package/lib/cjs/workflows.js +1 -3
  27. package/lib/cjs/workflows.js.map +1 -1
  28. package/lib/esm/activities/createDocumentFromOther.js.map +1 -1
  29. package/lib/esm/activities/executeInteraction.js +1 -2
  30. package/lib/esm/activities/executeInteraction.js.map +1 -1
  31. package/lib/esm/activities/extractDocumentText.js +1 -7
  32. package/lib/esm/activities/extractDocumentText.js.map +1 -1
  33. package/lib/esm/dsl/setup/ActivityContext.js +3 -3
  34. package/lib/esm/dsl/setup/ActivityContext.js.map +1 -1
  35. package/lib/esm/dsl.js +4 -0
  36. package/lib/esm/dsl.js.map +1 -0
  37. package/lib/esm/index.js +8 -2
  38. package/lib/esm/index.js.map +1 -1
  39. package/lib/esm/iterative-generation/activities/extractToc.js +3 -3
  40. package/lib/esm/iterative-generation/activities/extractToc.js.map +1 -1
  41. package/lib/esm/iterative-generation/activities/finalizeOutput.js +2 -2
  42. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +1 -1
  43. package/lib/esm/iterative-generation/activities/generatePart.js +2 -2
  44. package/lib/esm/iterative-generation/activities/generatePart.js.map +1 -1
  45. package/lib/esm/iterative-generation/activities/generateToc.js +2 -2
  46. package/lib/esm/iterative-generation/activities/generateToc.js.map +1 -1
  47. package/lib/esm/iterative-generation/utils.js +7 -4
  48. package/lib/esm/iterative-generation/utils.js.map +1 -1
  49. package/lib/esm/utils/blobs.js +2 -2
  50. package/lib/esm/utils/blobs.js.map +1 -1
  51. package/lib/esm/utils/client.js +1 -1
  52. package/lib/esm/utils/client.js.map +1 -1
  53. package/lib/esm/workflows.js +0 -1
  54. package/lib/esm/workflows.js.map +1 -1
  55. package/lib/types/activities/createDocumentFromOther.d.ts.map +1 -1
  56. package/lib/types/activities/executeInteraction.d.ts +5 -1
  57. package/lib/types/activities/executeInteraction.d.ts.map +1 -1
  58. package/lib/types/activities/extractDocumentText.d.ts.map +1 -1
  59. package/lib/types/dsl/dslProxyActivities.d.ts +2 -2
  60. package/lib/types/dsl/dslProxyActivities.d.ts.map +1 -1
  61. package/lib/types/dsl/setup/ActivityContext.d.ts.map +1 -1
  62. package/lib/types/dsl.d.ts +4 -0
  63. package/lib/types/dsl.d.ts.map +1 -0
  64. package/lib/types/index.d.ts +8 -2
  65. package/lib/types/index.d.ts.map +1 -1
  66. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +1 -1
  67. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +1 -1
  68. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +1 -1
  69. package/lib/types/iterative-generation/utils.d.ts +2 -2
  70. package/lib/types/iterative-generation/utils.d.ts.map +1 -1
  71. package/lib/types/utils/client.d.ts +2 -2
  72. package/lib/types/utils/client.d.ts.map +1 -1
  73. package/lib/types/workflows.d.ts +0 -1
  74. package/lib/types/workflows.d.ts.map +1 -1
  75. package/lib/workflows-bundle.js +1889 -160
  76. package/package.json +24 -8
  77. package/src/activities/createDocumentFromOther.ts +1 -1
  78. package/src/activities/executeInteraction.ts +7 -4
  79. package/src/activities/extractDocumentText.ts +2 -7
  80. package/src/dsl/dslProxyActivities.ts +2 -2
  81. package/src/dsl/setup/ActivityContext.ts +4 -4
  82. package/src/dsl.ts +3 -0
  83. package/src/index.ts +9 -2
  84. package/src/iterative-generation/activities/extractToc.ts +3 -3
  85. package/src/iterative-generation/activities/finalizeOutput.ts +3 -3
  86. package/src/iterative-generation/activities/generatePart.ts +3 -3
  87. package/src/iterative-generation/activities/generateToc.ts +2 -2
  88. package/src/iterative-generation/utils.ts +10 -6
  89. package/src/system/notifyWebhookWorkflow.ts +1 -1
  90. package/src/utils/blobs.ts +2 -2
  91. package/src/utils/client.ts +2 -2
  92. package/src/workflows.ts +0 -2
  93. package/lib/cjs/conversion/pdf.js +0 -13
  94. package/lib/cjs/conversion/pdf.js.map +0 -1
  95. package/lib/cjs/system/generateObjectText.js +0 -76
  96. package/lib/cjs/system/generateObjectText.js.map +0 -1
  97. package/lib/esm/conversion/pdf.js +0 -7
  98. package/lib/esm/conversion/pdf.js.map +0 -1
  99. package/lib/esm/system/generateObjectText.js +0 -73
  100. package/lib/esm/system/generateObjectText.js.map +0 -1
  101. package/lib/types/conversion/pdf.d.ts +0 -2
  102. package/lib/types/conversion/pdf.d.ts.map +0 -1
  103. package/lib/types/system/generateObjectText.d.ts +0 -4
  104. package/lib/types/system/generateObjectText.d.ts.map +0 -1
  105. package/src/conversion/pdf.test.ts +0 -35
  106. package/src/conversion/pdf.ts +0 -8
  107. package/src/system/generateObjectText.ts +0 -95
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/workflow",
3
- "version": "0.50.1",
3
+ "version": "0.51.0",
4
4
  "type": "module",
5
5
  "description": "Composable prompts workflow dsl",
6
6
  "main": "./lib/esm/index.js",
@@ -18,6 +18,7 @@
18
18
  },
19
19
  "license": "Apache-2.0",
20
20
  "devDependencies": {
21
+ "@smithy/types": "^3.7.2",
21
22
  "@temporalio/testing": "^1.11.5",
22
23
  "@temporalio/worker": "^1.11.5",
23
24
  "@types/jsonwebtoken": "^9.0.7",
@@ -25,19 +26,17 @@
25
26
  "@types/papaparse": "^5.3.15",
26
27
  "@types/tmp": "^0.2.6",
27
28
  "ts-dual-module": "^0.6.3",
28
- "vitest": "^2.1.8",
29
- "@smithy/types": "^3.7.2"
29
+ "vitest": "^2.1.9"
30
30
  },
31
31
  "dependencies": {
32
32
  "@aws-sdk/client-s3": "^3.693.0",
33
33
  "@aws-sdk/client-textract": "^3.693.0",
34
34
  "@aws-sdk/credential-providers": "^3.693.0",
35
- "@vertesia/memory": "^0.43.0",
36
- "@opendocsg/pdf2md": "0.2.0",
37
35
  "@temporalio/activity": "^1.11.5",
38
36
  "@temporalio/workflow": "^1.11.5",
39
37
  "@tensorflow/tfjs-node": "^4.19.0",
40
38
  "@types/json-schema": "^7.0.15",
39
+ "@vertesia/memory": "^0.43.0",
41
40
  "api-fetch-client": "^0.13.0",
42
41
  "fast-deep-equal": "^3.1.3",
43
42
  "jsonwebtoken": "^9.0.2",
@@ -50,13 +49,14 @@
50
49
  "tmp": "^0.2.3",
51
50
  "yaml": "^2.6.0",
52
51
  "@llumiverse/core": "0.15.0",
53
- "@vertesia/client": "0.50.1",
54
- "@vertesia/common": "0.50.1"
52
+ "@vertesia/client": "0.51.0",
53
+ "@vertesia/common": "0.51.0"
55
54
  },
56
55
  "ts_dual_module": {
57
56
  "outDir": "lib",
58
57
  "exports": {
59
- "activities": "./activities",
58
+ "activities": "./activities/index.js",
59
+ "dsl-activities": "./activities/index-dsl.js",
60
60
  "workflows": "./workflows",
61
61
  "workflows-bundle": "./workflows-bundle.js",
62
62
  "vars": "./vars"
@@ -78,11 +78,21 @@
78
78
  "import": "./lib/esm/activities/index.js",
79
79
  "require": "./lib/cjs/activities/index.js"
80
80
  },
81
+ "./dsl-activities": {
82
+ "types": "./lib/types/activities/index-dsl.d.ts",
83
+ "import": "./lib/esm/activities/index-dsl.js",
84
+ "require": "./lib/cjs/activities/index-dsl.js"
85
+ },
81
86
  "./workflows": {
82
87
  "types": "./lib/types/workflows.d.ts",
83
88
  "import": "./lib/esm/workflows.js",
84
89
  "require": "./lib/cjs/workflows.js"
85
90
  },
91
+ "./dsl": {
92
+ "types": "./lib/types/dsl.d.ts",
93
+ "import": "./lib/esm/dsl.js",
94
+ "require": "./lib/cjs/dsl.js"
95
+ },
86
96
  "./workflows-bundle": {
87
97
  "import": "./lib/workflows-bundle.js"
88
98
  }
@@ -93,9 +103,15 @@
93
103
  "activities": [
94
104
  "./lib/types/activities/index.d.ts"
95
105
  ],
106
+ "dsl-activities": [
107
+ "./lib/types/activities/index-dsl.d.ts"
108
+ ],
96
109
  "workflows": [
97
110
  "./lib/types/workflows.d.ts"
98
111
  ],
112
+ "dsl": [
113
+ "./lib/types/dsl.d.ts"
114
+ ],
99
115
  "vars": [
100
116
  "./lib/types/dsl/vars.d.ts"
101
117
  ]
@@ -1,5 +1,5 @@
1
- import { DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
2
1
  import { log } from "@temporalio/activity";
2
+ import { DSLActivityExecutionPayload, DSLActivitySpec } from "@vertesia/common";
3
3
  import fs from 'fs';
4
4
  import { pdfExtractPages } from "../conversion/mutool.js";
5
5
  import { setupActivity } from "../dsl/setup/ActivityContext.js";
@@ -52,8 +52,7 @@ const JSON: DSLActivitySpec = {
52
52
  }
53
53
  }
54
54
  }
55
-
56
- export interface InteractionExecutionParams extends ModelOptions {
55
+ export interface InteractionExecutionParams {
57
56
  /**
58
57
  * The environment to use. If not specified the project default environment will be used.
59
58
  * If the latter is not specified an exeption will be thrown.
@@ -80,6 +79,11 @@ export interface InteractionExecutionParams extends ModelOptions {
80
79
  * Wether or not to include the previous error in the interaction prompt data
81
80
  */
82
81
  include_previous_error?: boolean;
82
+
83
+ /**
84
+ * Options to control generation
85
+ */
86
+ model_options?: ModelOptions;
83
87
  }
84
88
 
85
89
 
@@ -153,8 +157,7 @@ export async function executeInteractionFromActivity(client: VertesiaClient, int
153
157
  const config: InteractionExecutionConfiguration = {
154
158
  environment: params.environment,
155
159
  model: params.model,
156
- max_tokens: params.max_tokens,
157
- temperature: params.temperature
160
+ model_options: params.model_options,
158
161
  }
159
162
  const data = {
160
163
  ...prompt_data,
@@ -1,8 +1,7 @@
1
- import { ContentObject, CreateContentObjectPayload, DSLActivityExecutionPayload, DSLActivitySpec } from '@vertesia/common';
2
1
  import { log } from "@temporalio/activity";
2
+ import { ContentObject, CreateContentObjectPayload, DSLActivityExecutionPayload, DSLActivitySpec } from '@vertesia/common';
3
3
  import { mutoolPdfToText } from '../conversion/mutool.js';
4
4
  import { manyToMarkdown } from '../conversion/pandoc.js';
5
- import { trasformPdfToMarkdown } from '../conversion/pdf.js';
6
5
  import { setupActivity } from "../dsl/setup/ActivityContext.js";
7
6
  import { NoDocumentFound } from '../errors.js';
8
7
  import { TextExtractionResult, TextExtractionStatus } from '../result-types.js';
@@ -66,11 +65,7 @@ export async function extractDocumentText(payload: DSLActivityExecutionPayload<E
66
65
 
67
66
  case 'application/pdf':
68
67
  //if pdf is more than 2MB, use mutool
69
- if (fileBuffer.length > 2 * 1024 * 1024) {
70
- txt = await mutoolPdfToText(fileBuffer);
71
- } else {
72
- txt = await trasformPdfToMarkdown(fileBuffer);
73
- }
68
+ txt = await mutoolPdfToText(fileBuffer);
74
69
  break;
75
70
 
76
71
  case 'text/plain':
@@ -1,12 +1,12 @@
1
1
  import { ActivityOptions, proxyActivities } from "@temporalio/workflow";
2
- import { DSLActivityExecutionPayload, WorkflowExecutionPayload } from "@vertesia/common";
2
+ import { DSLActivityExecutionPayload, WorkflowExecutionBaseParams, WorkflowExecutionPayload } from "@vertesia/common";
3
3
 
4
4
  export interface DslActivityFunction<ParamsT extends Record<string, any> = any, ReturnT = any> {
5
5
  (payload: DSLActivityExecutionPayload<ParamsT>): Promise<ReturnT>;
6
6
  }
7
7
 
8
8
  export interface DslSimplifiedActivityFunction<ParamsT = any, ReturnT = any> {
9
- (payload: WorkflowExecutionPayload, params: ParamsT): Promise<ReturnT>;
9
+ (payload: WorkflowExecutionBaseParams, params: ParamsT): Promise<ReturnT>;
10
10
  }
11
11
 
12
12
  export function dslProxyActivities<
@@ -1,12 +1,12 @@
1
+ import { log } from "@temporalio/activity";
1
2
  import { VertesiaClient } from "@vertesia/client";
2
3
  import { DSLActivityExecutionPayload, DSLWorkflowExecutionPayload, Project, WorkflowExecutionPayload } from "@vertesia/common";
3
- import { log } from "@temporalio/activity";
4
4
  import { NoDocumentFound, WorkflowParamNotFound } from "../../errors.js";
5
- import { getClient } from "../../utils/client.js";
5
+ import { getProjectFromToken } from "../../utils/auth.js";
6
+ import { getVertesiaClient } from "../../utils/client.js";
6
7
  import { Vars } from "../vars.js";
7
8
  import { getFetchProvider, registerFetchProviderFactory } from "./fetch/index.js";
8
9
  import { DocumentProvider, DocumentTypeProvider, InteractionRunProvider } from "./fetch/providers.js";
9
- import { getProjectFromToken } from "../../utils/auth.js";
10
10
 
11
11
 
12
12
  registerFetchProviderFactory(DocumentProvider.ID, DocumentProvider.factory);
@@ -59,7 +59,7 @@ export async function setupActivity<ParamsT extends Record<string, any>>(payload
59
59
  log.info(`Setting up activity ${payload.activity.name}`, { config: payload.config, activity: payload.activity, params: payload.params, vars });
60
60
  }
61
61
 
62
- const client = getClient(payload);
62
+ const client = getVertesiaClient(payload);
63
63
  const fetchSpecs = payload.activity.fetch;
64
64
  if (fetchSpecs) {
65
65
 
package/src/dsl.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./dsl/dslProxyActivities.js";
2
+ export * from "./result-types.js";
3
+ export * from "./errors.js";
package/src/index.ts CHANGED
@@ -20,9 +20,16 @@ export * from "./activities/generateDocumentProperties.js";
20
20
  export * from "./activities/generateEmbeddings.js";
21
21
  export * from "./activities/generateImageRendition.js";
22
22
  export * from "./activities/generateOrAssignContentType.js";
23
- export * from "./activities/setDocumentStatus.js";
24
23
  export * from "./activities/notifyWebhook.js";
24
+ export * from "./activities/setDocumentStatus.js";
25
25
  export * from "./iterative-generation/activities/index.js";
26
26
 
27
+ export * from "./dsl/setup/ActivityContext.js";
28
+ export * from "./errors.js";
27
29
  export * from "./result-types.js";
28
- export * from "./dsl/dslProxyActivities.js";
30
+ export * from "./utils/blobs.js";
31
+ export * from "./utils/client.js";
32
+ export * from "./utils/memory.js";
33
+ export * from "./utils/tokens.js";
34
+
35
+ export * from "./conversion/image.js";
@@ -1,10 +1,10 @@
1
+ import { log } from "@temporalio/activity";
1
2
  import { WorkflowExecutionPayload } from "@vertesia/common";
2
3
  import { parse as parseYaml } from "yaml";
3
- import { getClient } from "../../utils/client.js";
4
+ import { getVertesiaClient } from "../../utils/client.js";
4
5
  import { buildAndPublishMemoryPack, loadMemoryPack } from "../../utils/memory.js";
5
6
  import { IterativeGenerationPayload, OutputMemoryMeta, Toc, TocIndex } from "../types.js";
6
7
  import { tocIndex } from "../utils.js";
7
- import { log } from "@temporalio/activity";
8
8
 
9
9
  /**
10
10
  * This activity is called if the toc was provided in the payload. Otherwise
@@ -15,7 +15,7 @@ import { log } from "@temporalio/activity";
15
15
  export async function it_gen_extractToc(payload: WorkflowExecutionPayload): Promise<TocIndex | null> {
16
16
  const vars = payload.vars as IterativeGenerationPayload;
17
17
  const memory = vars.memory;
18
- const client = getClient(payload);
18
+ const client = getVertesiaClient(payload);
19
19
 
20
20
  const inMemory = await loadMemoryPack(client, `${memory}/input`);
21
21
  let tocJson: string | null = null;
@@ -1,6 +1,6 @@
1
- import { WorkflowExecutionPayload } from "@vertesia/common";
2
1
  import { log } from "@temporalio/activity";
3
- import { getClient } from "../../utils/client.js";
2
+ import { WorkflowExecutionPayload } from "@vertesia/common";
3
+ import { getVertesiaClient } from "../../utils/client.js";
4
4
  import { expandVars } from "../../utils/expand-vars.js";
5
5
  import { buildAndPublishMemoryPack, loadMemoryPack } from "../../utils/memory.js";
6
6
  import { IterativeGenerationPayload, Section, SECTION_ID_PLACEHOLDER, TocSection } from "../types.js";
@@ -9,7 +9,7 @@ export async function it_gen_finalizeOutput(payload: WorkflowExecutionPayload):
9
9
  const vars = payload.vars as IterativeGenerationPayload;
10
10
 
11
11
  const memory = vars.memory;
12
- const client = getClient(payload);
12
+ const client = getVertesiaClient(payload);
13
13
  const inMemory = await loadMemoryPack(client, `${memory}/input`);
14
14
  const outMemory = await loadMemoryPack(client, `${memory}/output`);
15
15
 
@@ -1,14 +1,14 @@
1
+ import { ApplicationFailure } from "@temporalio/workflow";
1
2
  import { WorkflowExecutionPayload } from "@vertesia/common";
2
3
  import { MemoryPack } from "@vertesia/memory";
3
- import { ApplicationFailure } from "@temporalio/workflow";
4
- import { getClient } from "../../utils/client.js";
4
+ import { getVertesiaClient } from "../../utils/client.js";
5
5
  import { buildAndPublishMemoryPack, loadMemoryPack } from "../../utils/memory.js";
6
6
  import { IterativeGenerationPayload, OutputMemoryMeta, Section, TocPart, TocSection } from "../types.js";
7
7
  import { executeWithVars, expectMemoryIsConsistent } from "../utils.js";
8
8
 
9
9
  export async function it_gen_generatePart(payload: WorkflowExecutionPayload, path: number[]) {
10
10
  const vars = payload.vars as IterativeGenerationPayload;
11
- const client = getClient(payload);
11
+ const client = getVertesiaClient(payload);
12
12
  const memory = vars.memory;
13
13
 
14
14
  const [sectionIndex, partIndex] = path;
@@ -1,5 +1,5 @@
1
1
  import { WorkflowExecutionPayload } from "@vertesia/common";
2
- import { getClient } from "../../utils/client.js";
2
+ import { getVertesiaClient } from "../../utils/client.js";
3
3
  import { buildAndPublishMemoryPack } from "../../utils/memory.js";
4
4
  import { IterativeGenerationPayload, OutputMemoryMeta, Toc, TocIndex } from "../types.js";
5
5
  import { executeWithVars, tocIndex } from "../utils.js";
@@ -80,7 +80,7 @@ export async function it_gen_generateToc(payload: WorkflowExecutionPayload): Pro
80
80
 
81
81
  const schema = vars.toc_schema || defaultTocSchema;
82
82
 
83
- const client = getClient(payload);
83
+ const client = getVertesiaClient(payload);
84
84
 
85
85
  const run = await executeWithVars(client, vars.interaction, vars, undefined, schema);
86
86
 
@@ -2,15 +2,16 @@ import { VertesiaClient } from "@vertesia/client";
2
2
  import { ExecutionRun } from "@vertesia/common";
3
3
  import { ApplicationFailure } from "@temporalio/workflow";
4
4
  import { OutputMemoryMeta, PartIndex, Toc, TocIndex, TocSection } from "./types.js";
5
+ import { ModelOptions, TextFallbackOptions } from "@llumiverse/core";
5
6
 
7
+ //TODO: For whole file, support for options beyond max_tokens and temperature and multiple modalities.
6
8
  export interface ExecuteOptions {
7
9
  interaction: string;
8
10
  memory: string;
9
11
  memory_mapping?: Record<string, any>;
10
12
  environment?: string;
11
13
  model?: string;
12
- max_tokens?: number;
13
- temperature?: number;
14
+ model_options?: ModelOptions;
14
15
  result_schema?: Record<string, any>;
15
16
  }
16
17
 
@@ -24,8 +25,7 @@ export async function execute<T = any>(client: VertesiaClient, options: ExecuteO
24
25
  config: {
25
26
  environment: options.environment,
26
27
  model: options.model,
27
- max_tokens: options.max_tokens,
28
- temperature: options.temperature,
28
+ model_options: options.model_options,
29
29
  }
30
30
  });
31
31
  }
@@ -36,14 +36,18 @@ export function executeWithVars<T = any>(client: VertesiaClient, interaction: st
36
36
  } else {
37
37
  mapping = vars.input_mapping;
38
38
  }
39
+ const model_options: TextFallbackOptions = {
40
+ _option_id: "text-fallback",
41
+ max_tokens: vars.max_tokens,
42
+ temperature: vars.temperature
43
+ }
39
44
  return execute(client, {
40
45
  interaction: interaction,
41
46
  memory: `${vars.memory}/input`,
42
47
  memory_mapping: mapping,
43
48
  environment: vars.environment,
44
49
  model: vars.model,
45
- max_tokens: vars.max_tokens,
46
- temperature: vars.temperature,
50
+ model_options: model_options,
47
51
  result_schema: result_schema
48
52
  });
49
53
  }
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { log } from "@temporalio/workflow";
3
3
  import { ContentEventName, WorkflowExecutionPayload } from "@vertesia/common";
4
- import * as activities from "../activities/index-dsl.js";
4
+ import * as activities from "../activities/notifyWebhook.js";
5
5
  import { dslProxyActivities } from "../dsl/dslProxyActivities.js";
6
6
 
7
7
  const {
@@ -35,8 +35,8 @@ export async function saveBlobToFile(client: VertesiaClient, blobUri: string, to
35
35
 
36
36
  export async function saveBlobToTempFile(client: VertesiaClient, blobUri: string, fileExt?: string): Promise<string> {
37
37
  const tmpFile = tmp.fileSync({
38
- prefix: "composable-activity-",
39
- postfix: fileExt,
38
+ prefix: "vertesia-activity-",
39
+ postfix: "." + fileExt,
40
40
  discardDescriptor: true
41
41
  });
42
42
  await saveBlobToFile(client, blobUri, tmpFile.name);
@@ -3,10 +3,10 @@
3
3
  */
4
4
 
5
5
  import { VertesiaClient } from "@vertesia/client";
6
- import { WorkflowExecutionPayload } from "@vertesia/common";
6
+ import { WorkflowExecutionBaseParams } from "@vertesia/common";
7
7
 
8
8
 
9
- export function getClient(payload: WorkflowExecutionPayload) {
9
+ export function getVertesiaClient(payload: WorkflowExecutionBaseParams) {
10
10
 
11
11
  if (!payload.auth_token) {
12
12
  throw new Error("Authentication Token is missing from WorkflowExecutionPayload.authToken");
package/src/workflows.ts CHANGED
@@ -3,7 +3,5 @@
3
3
  */
4
4
  export { dslWorkflow } from "./dsl/dsl-workflow.js";
5
5
  export { iterativeGenerationWorkflow } from "./iterative-generation/iterativeGenerationWorkflow.js";
6
- export { generateObjectText } from "./system/generateObjectText.js";
7
6
  export { notifyWebhookWorkflow } from "./system/notifyWebhookWorkflow.js";
8
7
  export { recalculateEmbeddingsWorkflow } from "./system/recalculateEmbeddingsWorkflow.js";
9
-
@@ -1,13 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.trasformPdfToMarkdown = trasformPdfToMarkdown;
7
- const pdf2md_1 = __importDefault(require("@opendocsg/pdf2md"));
8
- const pdf2mdFn = pdf2md_1.default;
9
- function trasformPdfToMarkdown(buffer) {
10
- const arr = new Uint8Array(buffer);
11
- return pdf2mdFn(arr);
12
- }
13
- //# sourceMappingURL=pdf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/conversion/pdf.ts"],"names":[],"mappings":";;;;;AAIA,sDAGC;AAPD,+DAAuC;AAEvC,MAAM,QAAQ,GAAG,gBAA4D,CAAC;AAE9E,SAAgB,qBAAqB,CAAC,MAAc;IAChD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateObjectText = generateObjectText;
4
- const workflow_1 = require("@temporalio/workflow");
5
- const dslProxyActivities_js_1 = require("../dsl/dslProxyActivities.js");
6
- const errors_js_1 = require("../errors.js");
7
- const { getObjectFromStore, extractDocumentText } = (0, dslProxyActivities_js_1.dslProxyActivities)("generateTextWorkflow", {
8
- startToCloseTimeout: "5 minute",
9
- retry: {
10
- initialInterval: '5s',
11
- backoffCoefficient: 2,
12
- maximumAttempts: 5,
13
- maximumInterval: 100 * 30 * 1000, //ms
14
- nonRetryableErrorTypes: [],
15
- },
16
- });
17
- const { transcribeMedia, convertPdfToStructuredText } = (0, dslProxyActivities_js_1.dslProxyActivities)("generateTextWorkflow", {
18
- startToCloseTimeout: "30 minute",
19
- retry: {
20
- initialInterval: '30s',
21
- backoffCoefficient: 2,
22
- maximumAttempts: 5,
23
- maximumInterval: 100 * 30 * 1000, //ms
24
- nonRetryableErrorTypes: [],
25
- },
26
- });
27
- async function generateObjectText(payload) {
28
- const { objectIds } = payload;
29
- const objectId = objectIds[0];
30
- const object = await getObjectFromStore(payload, {});
31
- if (!object.content?.source) {
32
- throw new errors_js_1.NoDocumentFound(`No source or mimetype found for object ${objectId}`, objectIds);
33
- }
34
- const mimetype = object.content.type;
35
- if (!mimetype) {
36
- throw new errors_js_1.NoDocumentFound(`No mimetype found for object ${objectId}`, objectIds);
37
- }
38
- const converter = ConverterActivity.find(({ type }) => type.test(mimetype));
39
- if (!converter) {
40
- throw new errors_js_1.NoDocumentFound(`No converter found for mimetype ${mimetype}`, objectIds);
41
- }
42
- workflow_1.log.info(`Converting file type ${mimetype} to text with ${converter.name}`);
43
- const res = await converter.activity(payload)(payload, converter.params);
44
- workflow_1.log.info("Generated text for object", { res, objectId });
45
- return res;
46
- }
47
- const ConverterActivity = [
48
- {
49
- type: /application\/pdf/,
50
- activity: (payload) => {
51
- const useTextractForPDF = payload.vars?.useTextractForPdf ?? false;
52
- return useTextractForPDF ? convertPdfToStructuredText : extractDocumentText;
53
- },
54
- name: "ConvertPdfToStructuredText",
55
- params: {},
56
- },
57
- {
58
- type: /audio\/.+/,
59
- activity: () => transcribeMedia,
60
- name: "TranscribeMedia",
61
- params: {},
62
- },
63
- {
64
- type: /video\/.+/,
65
- activity: () => transcribeMedia,
66
- name: "TranscribeMedia",
67
- params: {},
68
- },
69
- {
70
- type: /.+/,
71
- activity: () => extractDocumentText,
72
- name: "extractText",
73
- params: {},
74
- }
75
- ];
76
- //# sourceMappingURL=generateObjectText.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateObjectText.js","sourceRoot":"","sources":["../../../src/system/generateObjectText.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import pdf2md from "@opendocsg/pdf2md";
2
- const pdf2mdFn = pdf2md;
3
- export function trasformPdfToMarkdown(buffer) {
4
- const arr = new Uint8Array(buffer);
5
- return pdf2mdFn(arr);
6
- }
7
- //# sourceMappingURL=pdf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/conversion/pdf.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,QAAQ,GAAG,MAA4D,CAAC;AAE9E,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAChD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,73 +0,0 @@
1
- import { log } from "@temporalio/workflow";
2
- import { dslProxyActivities } from "../dsl/dslProxyActivities.js";
3
- import { NoDocumentFound } from "../errors.js";
4
- const { getObjectFromStore, extractDocumentText } = dslProxyActivities("generateTextWorkflow", {
5
- startToCloseTimeout: "5 minute",
6
- retry: {
7
- initialInterval: '5s',
8
- backoffCoefficient: 2,
9
- maximumAttempts: 5,
10
- maximumInterval: 100 * 30 * 1000, //ms
11
- nonRetryableErrorTypes: [],
12
- },
13
- });
14
- const { transcribeMedia, convertPdfToStructuredText } = dslProxyActivities("generateTextWorkflow", {
15
- startToCloseTimeout: "30 minute",
16
- retry: {
17
- initialInterval: '30s',
18
- backoffCoefficient: 2,
19
- maximumAttempts: 5,
20
- maximumInterval: 100 * 30 * 1000, //ms
21
- nonRetryableErrorTypes: [],
22
- },
23
- });
24
- export async function generateObjectText(payload) {
25
- const { objectIds } = payload;
26
- const objectId = objectIds[0];
27
- const object = await getObjectFromStore(payload, {});
28
- if (!object.content?.source) {
29
- throw new NoDocumentFound(`No source or mimetype found for object ${objectId}`, objectIds);
30
- }
31
- const mimetype = object.content.type;
32
- if (!mimetype) {
33
- throw new NoDocumentFound(`No mimetype found for object ${objectId}`, objectIds);
34
- }
35
- const converter = ConverterActivity.find(({ type }) => type.test(mimetype));
36
- if (!converter) {
37
- throw new NoDocumentFound(`No converter found for mimetype ${mimetype}`, objectIds);
38
- }
39
- log.info(`Converting file type ${mimetype} to text with ${converter.name}`);
40
- const res = await converter.activity(payload)(payload, converter.params);
41
- log.info("Generated text for object", { res, objectId });
42
- return res;
43
- }
44
- const ConverterActivity = [
45
- {
46
- type: /application\/pdf/,
47
- activity: (payload) => {
48
- const useTextractForPDF = payload.vars?.useTextractForPdf ?? false;
49
- return useTextractForPDF ? convertPdfToStructuredText : extractDocumentText;
50
- },
51
- name: "ConvertPdfToStructuredText",
52
- params: {},
53
- },
54
- {
55
- type: /audio\/.+/,
56
- activity: () => transcribeMedia,
57
- name: "TranscribeMedia",
58
- params: {},
59
- },
60
- {
61
- type: /video\/.+/,
62
- activity: () => transcribeMedia,
63
- name: "TranscribeMedia",
64
- params: {},
65
- },
66
- {
67
- type: /.+/,
68
- activity: () => extractDocumentText,
69
- name: "extractText",
70
- params: {},
71
- }
72
- ];
73
- //# sourceMappingURL=generateObjectText.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateObjectText.js","sourceRoot":"","sources":["../../../src/system/generateObjectText.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function trasformPdfToMarkdown(buffer: Buffer): Promise<string>;
2
- //# sourceMappingURL=pdf.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/conversion/pdf.ts"],"names":[],"mappings":"AAIA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,mBAGnD"}
@@ -1,4 +0,0 @@
1
- import { WorkflowExecutionPayload } from "@vertesia/common";
2
- import { TextExtractionResult } from "../index.js";
3
- export declare function generateObjectText(payload: WorkflowExecutionPayload): Promise<TextExtractionResult>;
4
- //# sourceMappingURL=generateObjectText.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateObjectText.d.ts","sourceRoot":"","sources":["../../../src/system/generateObjectText.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA+BnD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0BzG"}
@@ -1,35 +0,0 @@
1
- import { MockActivityEnvironment, TestWorkflowEnvironment } from '@temporalio/testing';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { beforeAll, expect, test } from 'vitest';
5
- import { trasformPdfToMarkdown } from '../conversion/pdf';
6
-
7
-
8
- let testEnv: TestWorkflowEnvironment;
9
- let activityContext: MockActivityEnvironment;
10
-
11
- beforeAll(async () => {
12
- //testEnv = await TestWorkflowEnvironment.createLocal();
13
- activityContext = new MockActivityEnvironment();
14
- });
15
-
16
-
17
- test('Converts a PDF to markdown', async () => {
18
- const pdfPath = path.resolve(__dirname, '../../fixtures', 'test-pdf1.pdf');
19
- const pdfBuffer = fs.readFileSync(pdfPath);
20
- const result = await activityContext.run(trasformPdfToMarkdown, pdfBuffer);
21
-
22
- expect(result).toContain('America');
23
- });
24
-
25
- // https://github.com/becomposable/studio/issues/432 Skip tests
26
- // The file "test-pdf2.pdf" could not be opened. It may be damanged or use a file format that
27
- // Preview doesn't recognize.
28
- test.skip('Converts another PDF to markdown', async () => {
29
- const pdfPath = path.resolve(__dirname, '../../fixtures', 'test-pdf2.pdf');
30
- const pdfBuffer = fs.readFileSync(pdfPath);
31
- const result = await activityContext.run(trasformPdfToMarkdown, pdfBuffer);
32
-
33
- expect(result).toContain('America');
34
-
35
- });