donobu 2.18.4 → 2.19.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/dist/apis/FlowsApi.d.ts +4 -0
- package/dist/apis/FlowsApi.d.ts.map +1 -1
- package/dist/apis/FlowsApi.js +15 -1
- package/dist/apis/FlowsApi.js.map +1 -1
- package/dist/apis/SpecialFlowsApi.d.ts.map +1 -1
- package/dist/apis/SpecialFlowsApi.js +11 -9
- package/dist/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/assets/control-panel.js +7 -1
- package/dist/assets/generated/parameter-schemas.json +44 -0
- package/dist/assets/generated/version +1 -1
- package/dist/assets/page-interactions-tracker.js +27 -30
- package/dist/bindings/PageInteractionTracker.d.ts.map +1 -1
- package/dist/bindings/PageInteractionTracker.js +1 -1
- package/dist/bindings/PageInteractionTracker.js.map +1 -1
- package/dist/esm/apis/FlowsApi.d.ts +4 -0
- package/dist/esm/apis/FlowsApi.d.ts.map +1 -1
- package/dist/esm/apis/FlowsApi.js +15 -1
- package/dist/esm/apis/FlowsApi.js.map +1 -1
- package/dist/esm/apis/SpecialFlowsApi.d.ts.map +1 -1
- package/dist/esm/apis/SpecialFlowsApi.js +11 -9
- package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/esm/assets/control-panel.js +7 -1
- package/dist/esm/assets/generated/parameter-schemas.json +44 -0
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/assets/page-interactions-tracker.js +27 -30
- package/dist/esm/bindings/PageInteractionTracker.d.ts.map +1 -1
- package/dist/esm/bindings/PageInteractionTracker.js +1 -1
- package/dist/esm/bindings/PageInteractionTracker.js.map +1 -1
- package/dist/esm/lib/testExtension.d.ts.map +1 -1
- package/dist/esm/lib/testExtension.js +20 -19
- package/dist/esm/lib/testExtension.js.map +1 -1
- package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
- package/dist/esm/managers/AdminApiController.js +1 -0
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/managers/CodeGenerator.d.ts +47 -1
- package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/esm/managers/CodeGenerator.js +211 -19
- package/dist/esm/managers/CodeGenerator.js.map +1 -1
- package/dist/esm/managers/ControlPanel.d.ts.map +1 -1
- package/dist/esm/managers/ControlPanel.js +7 -5
- package/dist/esm/managers/ControlPanel.js.map +1 -1
- package/dist/esm/managers/DonobuFlow.d.ts +3 -4
- package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlow.js +57 -44
- package/dist/esm/managers/DonobuFlow.js.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts +58 -34
- package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +217 -64
- package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/esm/managers/FlowDependencyAnalyzer.d.ts +40 -0
- package/dist/esm/managers/FlowDependencyAnalyzer.d.ts.map +1 -0
- package/dist/esm/managers/FlowDependencyAnalyzer.js +236 -0
- package/dist/esm/managers/FlowDependencyAnalyzer.js.map +1 -0
- package/dist/esm/managers/ProjectStructureGenerator.d.ts +62 -0
- package/dist/esm/managers/ProjectStructureGenerator.d.ts.map +1 -0
- package/dist/esm/managers/ProjectStructureGenerator.js +234 -0
- package/dist/esm/managers/ProjectStructureGenerator.js.map +1 -0
- package/dist/esm/managers/ToolManager.d.ts.map +1 -1
- package/dist/esm/managers/ToolManager.js +4 -2
- package/dist/esm/managers/ToolManager.js.map +1 -1
- package/dist/esm/models/FlowMetadata.d.ts +52 -0
- package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistence.d.ts +11 -9
- package/dist/esm/persistence/flows/FlowsPersistence.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.d.ts +4 -5
- package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.js +76 -77
- package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js +2 -2
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.d.ts +7 -7
- package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.js +51 -60
- package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts +4 -5
- package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.js +40 -41
- package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts +4 -4
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js +40 -40
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSupabase.d.ts +4 -5
- package/dist/esm/persistence/flows/FlowsPersistenceSupabase.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSupabase.js +37 -37
- package/dist/esm/persistence/flows/FlowsPersistenceSupabase.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceVolatile.d.ts +7 -7
- package/dist/esm/persistence/flows/FlowsPersistenceVolatile.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceVolatile.js +35 -33
- package/dist/esm/persistence/flows/FlowsPersistenceVolatile.js.map +1 -1
- package/dist/esm/tools/AssertPageTool.d.ts +34 -0
- package/dist/esm/tools/AssertPageTool.d.ts.map +1 -0
- package/dist/esm/tools/AssertPageTool.js +156 -0
- package/dist/esm/tools/AssertPageTool.js.map +1 -0
- package/dist/esm/tools/AssertTool.js +1 -1
- package/dist/esm/tools/AssertTool.js.map +1 -1
- package/dist/esm/tools/ClickTool.d.ts.map +1 -1
- package/dist/esm/tools/ClickTool.js +3 -0
- package/dist/esm/tools/ClickTool.js.map +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
- package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.d.ts +47 -1
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.d.ts.map +1 -1
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.js +160 -25
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
- package/dist/esm/tools/SolveMfaChallenge.d.ts.map +1 -1
- package/dist/esm/tools/SolveMfaChallenge.js.map +1 -1
- package/dist/esm/utils/BrowserUtils.d.ts +52 -0
- package/dist/esm/utils/BrowserUtils.d.ts.map +1 -0
- package/dist/esm/utils/BrowserUtils.js +340 -0
- package/dist/esm/utils/BrowserUtils.js.map +1 -0
- package/dist/esm/utils/PlaywrightUtils.d.ts +15 -11
- package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/esm/utils/PlaywrightUtils.js +110 -122
- package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
- package/dist/lib/autoTest.d.ts +2 -0
- package/dist/lib/autoTest.d.ts.map +1 -0
- package/dist/lib/autoTest.js +17 -0
- package/dist/lib/autoTest.js.map +1 -0
- package/dist/lib/testExtension.d.ts.map +1 -1
- package/dist/lib/testExtension.js +20 -19
- package/dist/lib/testExtension.js.map +1 -1
- package/dist/managers/AdminApiController.d.ts.map +1 -1
- package/dist/managers/AdminApiController.js +1 -0
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/managers/CodeGenerator.d.ts +47 -1
- package/dist/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/managers/CodeGenerator.js +211 -19
- package/dist/managers/CodeGenerator.js.map +1 -1
- package/dist/managers/ControlPanel.d.ts.map +1 -1
- package/dist/managers/ControlPanel.js +7 -5
- package/dist/managers/ControlPanel.js.map +1 -1
- package/dist/managers/DonobuFlow.d.ts +3 -4
- package/dist/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/managers/DonobuFlow.js +57 -44
- package/dist/managers/DonobuFlow.js.map +1 -1
- package/dist/managers/DonobuFlowsManager.d.ts +58 -34
- package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/managers/DonobuFlowsManager.js +217 -64
- package/dist/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/managers/FlowDependencyAnalyzer.d.ts +40 -0
- package/dist/managers/FlowDependencyAnalyzer.d.ts.map +1 -0
- package/dist/managers/FlowDependencyAnalyzer.js +236 -0
- package/dist/managers/FlowDependencyAnalyzer.js.map +1 -0
- package/dist/managers/ProjectStructureGenerator.d.ts +62 -0
- package/dist/managers/ProjectStructureGenerator.d.ts.map +1 -0
- package/dist/managers/ProjectStructureGenerator.js +234 -0
- package/dist/managers/ProjectStructureGenerator.js.map +1 -0
- package/dist/managers/ToolManager.d.ts.map +1 -1
- package/dist/managers/ToolManager.js +4 -2
- package/dist/managers/ToolManager.js.map +1 -1
- package/dist/models/BrowserFramework.d.ts +2 -12
- package/dist/models/BrowserFramework.d.ts.map +1 -1
- package/dist/models/BrowserFramework.js +91 -66
- package/dist/models/BrowserFramework.js.map +1 -1
- package/dist/models/FlowMetadata.d.ts +52 -0
- package/dist/models/FlowMetadata.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistence.d.ts +11 -9
- package/dist/persistence/flows/FlowsPersistence.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceAwsS3.d.ts +4 -5
- package/dist/persistence/flows/FlowsPersistenceAwsS3.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceAwsS3.js +76 -77
- package/dist/persistence/flows/FlowsPersistenceAwsS3.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js +2 -2
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFilesystem.d.ts +7 -7
- package/dist/persistence/flows/FlowsPersistenceFilesystem.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFilesystem.js +51 -60
- package/dist/persistence/flows/FlowsPersistenceFilesystem.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts +4 -5
- package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.js +40 -41
- package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts +4 -4
- package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSqlite.js +40 -40
- package/dist/persistence/flows/FlowsPersistenceSqlite.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSupabase.d.ts +4 -5
- package/dist/persistence/flows/FlowsPersistenceSupabase.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSupabase.js +37 -37
- package/dist/persistence/flows/FlowsPersistenceSupabase.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceVolatile.d.ts +7 -7
- package/dist/persistence/flows/FlowsPersistenceVolatile.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceVolatile.js +35 -33
- package/dist/persistence/flows/FlowsPersistenceVolatile.js.map +1 -1
- package/dist/tools/AssertPageTool.d.ts +34 -0
- package/dist/tools/AssertPageTool.d.ts.map +1 -0
- package/dist/tools/AssertPageTool.js +156 -0
- package/dist/tools/AssertPageTool.js.map +1 -0
- package/dist/tools/AssertTool.js +1 -1
- package/dist/tools/AssertTool.js.map +1 -1
- package/dist/tools/ClickTool.d.ts.map +1 -1
- package/dist/tools/ClickTool.js +3 -0
- package/dist/tools/ClickTool.js.map +1 -1
- package/dist/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
- package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
- package/dist/tools/ExtractPaymentProviderKeyTool.d.ts +47 -1
- package/dist/tools/ExtractPaymentProviderKeyTool.d.ts.map +1 -1
- package/dist/tools/ExtractPaymentProviderKeyTool.js +160 -25
- package/dist/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
- package/dist/tools/SolveMfaChallenge.d.ts.map +1 -1
- package/dist/tools/SolveMfaChallenge.js.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +52 -0
- package/dist/utils/BrowserUtils.d.ts.map +1 -0
- package/dist/utils/BrowserUtils.js +340 -0
- package/dist/utils/BrowserUtils.js.map +1 -0
- package/dist/utils/PlaywrightUtils.d.ts +15 -11
- package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/utils/PlaywrightUtils.js +110 -122
- package/dist/utils/PlaywrightUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFramework.d.ts","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"BrowserFramework.d.ts","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAA0B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIxE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IACjE;;;;;;;OAOG;WACW,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;WAY3C,MAAM,CACxB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,cAAc,CAAC;IAiH1B;;;;;OAKG;WACiB,sBAAsB,CACxC,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IA6E/B;;;OAGG;mBACkB,gBAAgB;IAiCrC;;;OAGG;mBACkB,SAAS;IAiF9B;;;;;;;OAOG;mBACkB,cAAc;IA2BnC;;;;OAIG;mBACkB,2BAA2B;mBAkC3B,oCAAoC;CA0C1D"}
|
|
@@ -11,53 +11,6 @@ const path_1 = __importDefault(require("path"));
|
|
|
11
11
|
const envVars_1 = require("../envVars");
|
|
12
12
|
const Logger_1 = require("../utils/Logger");
|
|
13
13
|
class BrowserFramework {
|
|
14
|
-
constructor(browserConfig, browser, browserContext, browserBaseData) {
|
|
15
|
-
this.browserConfig = browserConfig;
|
|
16
|
-
this.browser = browser;
|
|
17
|
-
this.browserContext = browserContext;
|
|
18
|
-
this.browserBaseData = browserBaseData;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Closes the browser and browser context. If the browser is a BrowserBase
|
|
22
|
-
* instance, it will also release the session.
|
|
23
|
-
*/
|
|
24
|
-
async close() {
|
|
25
|
-
try {
|
|
26
|
-
await this.browserContext.close();
|
|
27
|
-
}
|
|
28
|
-
catch (_error) {
|
|
29
|
-
// Ignore, the browser context may have already been closed and that is fine.
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
await this.browser.close();
|
|
33
|
-
}
|
|
34
|
-
catch (_error) {
|
|
35
|
-
// Ignore, the browser may have already been closed and that is fine.
|
|
36
|
-
}
|
|
37
|
-
if (this.browserConfig.using.type === 'browserBase' &&
|
|
38
|
-
this.browserBaseData) {
|
|
39
|
-
const body = {
|
|
40
|
-
projectId: this.browserBaseData.projectId,
|
|
41
|
-
status: 'REQUEST_RELEASE',
|
|
42
|
-
};
|
|
43
|
-
const password = process.env[envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY] ?? '';
|
|
44
|
-
const options = {
|
|
45
|
-
method: 'POST',
|
|
46
|
-
headers: {
|
|
47
|
-
'X-BB-API-Key': password,
|
|
48
|
-
'Content-Type': 'application/json',
|
|
49
|
-
},
|
|
50
|
-
body: JSON.stringify(body),
|
|
51
|
-
};
|
|
52
|
-
try {
|
|
53
|
-
await fetch(`https://api.browserbase.com/v1/sessions/${this.browserBaseData.id}`, options);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
// Ignore, BrowserBase sessions expire automatically anyway.
|
|
57
|
-
Logger_1.appLogger.warn('Failed to release BrowserBase session', error);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
14
|
/**
|
|
62
15
|
* Loads all the pre-canned browser device configurations from the local
|
|
63
16
|
* filesystem.
|
|
@@ -75,30 +28,96 @@ class BrowserFramework {
|
|
|
75
28
|
}
|
|
76
29
|
static async create(browserConfig, outputDir, storageState) {
|
|
77
30
|
const type = browserConfig.using.type;
|
|
78
|
-
let
|
|
31
|
+
let browser;
|
|
32
|
+
let browserContext;
|
|
33
|
+
let close;
|
|
79
34
|
switch (type) {
|
|
80
35
|
case 'device': {
|
|
81
|
-
|
|
82
|
-
BrowserFramework.DEFAULT_DEVICE_NAME, browserConfig.using.headless ?? false, outputDir, storageState);
|
|
83
|
-
|
|
36
|
+
({ browser, browserContext } = await BrowserFramework.forDevice(browserConfig.using.deviceName ??
|
|
37
|
+
BrowserFramework.DEFAULT_DEVICE_NAME, browserConfig.using.headless ?? false, outputDir, storageState));
|
|
38
|
+
close = async (_options) => {
|
|
39
|
+
try {
|
|
40
|
+
await browserContext.close();
|
|
41
|
+
}
|
|
42
|
+
catch (_error) {
|
|
43
|
+
// Ignore, the browser context may have already been closed and that is fine.
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
await browser.close();
|
|
47
|
+
}
|
|
48
|
+
catch (_error) {
|
|
49
|
+
// Ignore, the browser may have already been closed and that is fine.
|
|
50
|
+
}
|
|
51
|
+
};
|
|
84
52
|
break;
|
|
85
53
|
}
|
|
86
54
|
case 'remoteInstance': {
|
|
87
|
-
|
|
88
|
-
|
|
55
|
+
({ browser, browserContext } = await BrowserFramework.forRemoteBrowser(browserConfig.using.url, outputDir, storageState));
|
|
56
|
+
close = async (_options) => {
|
|
57
|
+
try {
|
|
58
|
+
await browserContext.close();
|
|
59
|
+
}
|
|
60
|
+
catch (_error) {
|
|
61
|
+
// Ignore, the browser context may have already been closed and that is fine.
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
await browser.close();
|
|
65
|
+
}
|
|
66
|
+
catch (_error) {
|
|
67
|
+
// Ignore, the browser may have already been closed and that is fine.
|
|
68
|
+
}
|
|
69
|
+
};
|
|
89
70
|
break;
|
|
90
71
|
}
|
|
91
72
|
case 'browserBase': {
|
|
92
|
-
|
|
93
|
-
|
|
73
|
+
let browserBaseData;
|
|
74
|
+
({ browser, browserContext, browserBaseData } =
|
|
75
|
+
await BrowserFramework.forBrowserBase(browserConfig.using.sessionArgs, outputDir, storageState));
|
|
76
|
+
close = async (_options) => {
|
|
77
|
+
try {
|
|
78
|
+
await browserContext.close();
|
|
79
|
+
}
|
|
80
|
+
catch (_error) {
|
|
81
|
+
// Ignore, the browser context may have already been closed and that is fine.
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
await browser.close();
|
|
85
|
+
}
|
|
86
|
+
catch (_error) {
|
|
87
|
+
// Ignore, the browser may have already been closed and that is fine.
|
|
88
|
+
}
|
|
89
|
+
const body = {
|
|
90
|
+
projectId: browserBaseData.projectId,
|
|
91
|
+
status: 'REQUEST_RELEASE',
|
|
92
|
+
};
|
|
93
|
+
const password = process.env[envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY] ?? '';
|
|
94
|
+
const options = {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers: {
|
|
97
|
+
'X-BB-API-Key': password,
|
|
98
|
+
'Content-Type': 'application/json',
|
|
99
|
+
},
|
|
100
|
+
body: JSON.stringify(body),
|
|
101
|
+
};
|
|
102
|
+
try {
|
|
103
|
+
await fetch(`https://api.browserbase.com/v1/sessions/${browserBaseData.id}`, options);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
// Ignore, BrowserBase sessions expire automatically anyway.
|
|
107
|
+
Logger_1.appLogger.warn('Failed to release BrowserBase session', error);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
94
110
|
break;
|
|
95
111
|
}
|
|
96
112
|
default: {
|
|
97
113
|
throw new InvalidParamValueException_1.InvalidParamValueException('type', type);
|
|
98
114
|
}
|
|
99
115
|
}
|
|
100
|
-
await BrowserFramework.attachSessionStorageToBrowserContext(
|
|
101
|
-
return
|
|
116
|
+
await BrowserFramework.attachSessionStorageToBrowserContext(browserContext, storageState);
|
|
117
|
+
return {
|
|
118
|
+
...browserContext,
|
|
119
|
+
close: close,
|
|
120
|
+
};
|
|
102
121
|
}
|
|
103
122
|
/**
|
|
104
123
|
* Gets the browser storage state including cookies, localStorage, and sessionStorage.
|
|
@@ -174,16 +193,22 @@ class BrowserFramework {
|
|
|
174
193
|
static async forRemoteBrowser(remoteBrowserInstanceUrl, outputDir, storageState) {
|
|
175
194
|
try {
|
|
176
195
|
const browser = await playwright_1.chromium.connectOverCDP(remoteBrowserInstanceUrl);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
196
|
+
try {
|
|
197
|
+
const contextOptions = {
|
|
198
|
+
recordVideo: { dir: outputDir },
|
|
199
|
+
};
|
|
200
|
+
if (storageState) {
|
|
201
|
+
contextOptions.storageState = storageState;
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
browser: browser,
|
|
205
|
+
browserContext: await browser.newContext(contextOptions),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
browser.close();
|
|
210
|
+
throw error;
|
|
182
211
|
}
|
|
183
|
-
return {
|
|
184
|
-
browser: browser,
|
|
185
|
-
browserContext: await browser.newContext(contextOptions),
|
|
186
|
-
};
|
|
187
212
|
}
|
|
188
213
|
catch (_) {
|
|
189
214
|
throw new InvalidParamValueException_1.InvalidParamValueException('remoteBrowserInstanceUrl', remoteBrowserInstanceUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserFramework.js","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":";;;;;;AAMA,2CAAuD;AACvD,kDAA+C;AAC/C,yFAAsF;AAGtF,gDAAwB;AAExB,wCAA2C;AAC3C,4CAA4C;AAE5C,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BrowserFramework.js","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,13 +103,65 @@ export type RunMode =
|
|
|
103
103
|
*/
|
|
104
104
|
| 'DETERMINISTIC';
|
|
105
105
|
export declare const RunModes: RunMode[];
|
|
106
|
+
/**
|
|
107
|
+
* Query parameters for filtering and paginating flow metadata results.
|
|
108
|
+
*/
|
|
106
109
|
export type FlowsQuery = {
|
|
110
|
+
/**
|
|
111
|
+
* Filter flows by exact name match.
|
|
112
|
+
*
|
|
113
|
+
* When specified, only flows with this exact name will be returned.
|
|
114
|
+
* This uses indexed lookups in most persistence implementations for efficient querying.
|
|
115
|
+
*
|
|
116
|
+
* @example "user-onboarding-flow"
|
|
117
|
+
*/
|
|
107
118
|
name?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Filter flows that started after this timestamp (inclusive).
|
|
121
|
+
*
|
|
122
|
+
* Unix epoch timestamp in milliseconds. Flows with `startedAt` greater than
|
|
123
|
+
* or equal to this value will be included in results.
|
|
124
|
+
*
|
|
125
|
+
* @example Date.now() - (24 * 60 * 60 * 1000) // Flows from last 24 hours
|
|
126
|
+
*/
|
|
108
127
|
startedAfter?: number;
|
|
128
|
+
/**
|
|
129
|
+
* Filter flows that started before this timestamp (inclusive).
|
|
130
|
+
*
|
|
131
|
+
* Unix epoch timestamp in milliseconds. Flows with `startedAt` less than
|
|
132
|
+
* or equal to this value will be included in results.
|
|
133
|
+
*
|
|
134
|
+
* @example new Date('2024-01-01').getTime() // Flows before 2024
|
|
135
|
+
*/
|
|
109
136
|
startedBefore?: number;
|
|
137
|
+
/**
|
|
138
|
+
* Filter flows by run mode.
|
|
139
|
+
*/
|
|
110
140
|
runMode?: RunMode;
|
|
141
|
+
/**
|
|
142
|
+
* Filter flows by current state.
|
|
143
|
+
*/
|
|
111
144
|
state?: State;
|
|
145
|
+
/**
|
|
146
|
+
* Maximum number of flows to return per page.
|
|
147
|
+
*
|
|
148
|
+
* Valid range is 1-100. Values outside this range will be clamped.
|
|
149
|
+
* Results are ordered by `startedAt` in descending order (newest first).
|
|
150
|
+
*
|
|
151
|
+
* @minimum 1
|
|
152
|
+
* @maximum 100
|
|
153
|
+
*/
|
|
112
154
|
limit?: number;
|
|
155
|
+
/**
|
|
156
|
+
* Pagination token for retrieving subsequent pages of results.
|
|
157
|
+
*
|
|
158
|
+
* This token is returned in the `nextPageToken` field of `PaginatedResult`
|
|
159
|
+
* and should be passed as-is to retrieve the next page. The format and
|
|
160
|
+
* content of this token is implementation-specific and should not be parsed
|
|
161
|
+
* or modified by client code.
|
|
162
|
+
*
|
|
163
|
+
* @example "eyJvZmZzZXQiOjIwfQ=="
|
|
164
|
+
*/
|
|
113
165
|
pageToken?: string;
|
|
114
166
|
};
|
|
115
167
|
//# sourceMappingURL=FlowMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowMetadata.d.ts","sourceRoot":"","sources":["../../src/models/FlowMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,mDAAmD;IACnD,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAElC,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAE3C,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAE1C,+GAA+G;IAC/G,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IAEjB,qEAAqE;IACrE,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,4CAA4C;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,uCAAuC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEhC,0EAA0E;IAC1E,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IAErC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEvC,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;IAExB,iEAAiE;IACjE,oBAAoB,EAAE,MAAM,CAAC;IAE7B,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IAEnB,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,qEAAqE;IACrE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC;IAEb,0CAA0C;IAC1C,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,KAAK,GACb,WAAW,GACX,cAAc,GACd,8BAA8B,GAC9B,iCAAiC,GACjC,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,SAAS,CAAC;AACd,eAAO,MAAM,MAAM,EAAE,KAAK,EAUzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,KAAG,OAEzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO;AACjB;;;GAGG;AACD,YAAY;AACd;;;GAGG;GACD,UAAU;AACZ;;;GAGG;GACD,eAAe,CAAC;AAEpB,eAAO,MAAM,QAAQ,EAAE,OAAO,EAAgD,CAAC;AAE/E,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FlowMetadata.d.ts","sourceRoot":"","sources":["../../src/models/FlowMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,17 +11,23 @@ export interface FlowsPersistence {
|
|
|
11
11
|
* Set the given FlowMetadata for the associated flow. It can be looked up by
|
|
12
12
|
* its {@link FlowMetadata.id}.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
setFlowMetadata(flowMetadata: FlowMetadata): Promise<void>;
|
|
15
15
|
/**
|
|
16
|
-
* Load metadata for a specific flow.
|
|
16
|
+
* Load metadata for a specific flow by its ID.
|
|
17
17
|
* @throws FlowNotFoundException if the flow is not found
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
getFlowMetadataById(flowId: string): Promise<FlowMetadata>;
|
|
20
20
|
/**
|
|
21
|
-
* Load metadata by a given flow name.
|
|
21
|
+
* Load metadata by a given flow name. If there are multiple flows with
|
|
22
|
+
* the same name, the one with the latest `startedAt` timestamp will be
|
|
23
|
+
* returned.
|
|
22
24
|
* @throws FlowNotFoundException if the flow is not found
|
|
23
25
|
*/
|
|
24
|
-
|
|
26
|
+
getFlowMetadataByName(flowName: string): Promise<FlowMetadata>;
|
|
27
|
+
/**
|
|
28
|
+
* Get flows' metadata matching a given query.
|
|
29
|
+
*/
|
|
30
|
+
getFlowsMetadata(query: FlowsQuery): Promise<PaginatedResult<FlowMetadata>>;
|
|
25
31
|
/**
|
|
26
32
|
* Save a screenshot for a specific flow. Supports PNG and JPEG images.
|
|
27
33
|
* @returns The identifier for the saved screenshot
|
|
@@ -40,10 +46,6 @@ export interface FlowsPersistence {
|
|
|
40
46
|
* @throws FlowNotFoundException if the flow is not found
|
|
41
47
|
*/
|
|
42
48
|
getToolCalls(flowId: string): Promise<ToolCall[]>;
|
|
43
|
-
/**
|
|
44
|
-
* Get flows matching a given query.
|
|
45
|
-
*/
|
|
46
|
-
getFlows(query: FlowsQuery): Promise<PaginatedResult<FlowMetadata>>;
|
|
47
49
|
/**
|
|
48
50
|
* Set video data for a specific flow.
|
|
49
51
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistence.d.ts","sourceRoot":"","sources":["../../../src/persistence/flows/FlowsPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"FlowsPersistence.d.ts","sourceRoot":"","sources":["../../../src/persistence/flows/FlowsPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/D;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5E;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAElD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;OAGG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEhC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEpE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;;;;;;OAOG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAErE;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
|
|
@@ -10,7 +10,6 @@ import { PaginatedResult } from '../../models/PaginatedResult';
|
|
|
10
10
|
* or provide them directly in the constructor.
|
|
11
11
|
*/
|
|
12
12
|
export declare class FlowsPersistenceAwsS3 implements FlowsPersistence {
|
|
13
|
-
private static readonly ENVIRONMENT_DATA_PREFIX;
|
|
14
13
|
private static readonly NAME_INDEX_PREFIX;
|
|
15
14
|
private static readonly RUN_MODE_INDEX_PREFIX;
|
|
16
15
|
private static readonly STATE_INDEX_PREFIX;
|
|
@@ -32,14 +31,14 @@ export declare class FlowsPersistenceAwsS3 implements FlowsPersistence {
|
|
|
32
31
|
accessKeyId: string;
|
|
33
32
|
secretAccessKey: string;
|
|
34
33
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
setFlowMetadata(flowMetadata: FlowMetadata): Promise<void>;
|
|
35
|
+
getFlowMetadataById(flowId: string): Promise<FlowMetadata>;
|
|
36
|
+
getFlowMetadataByName(flowName: string): Promise<FlowMetadata>;
|
|
37
|
+
getFlowsMetadata(query: FlowsQuery): Promise<PaginatedResult<FlowMetadata>>;
|
|
38
38
|
saveScreenShot(flowId: string, bytes: Buffer): Promise<string>;
|
|
39
39
|
getScreenShot(flowId: string, screenShotId: string): Promise<Buffer | null>;
|
|
40
40
|
saveToolCall(flowId: string, toolCall: ToolCall): Promise<void>;
|
|
41
41
|
getToolCalls(flowId: string): Promise<ToolCall[]>;
|
|
42
|
-
getFlows(query: FlowsQuery): Promise<PaginatedResult<FlowMetadata>>;
|
|
43
42
|
setVideo(flowId: string, bytes: Buffer): Promise<void>;
|
|
44
43
|
getVideoSegment(flowId: string, startOffset: number, length: number): Promise<VideoSegment | null>;
|
|
45
44
|
getFlowFile(flowId: string, fileId: string): Promise<Buffer | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceAwsS3.d.ts","sourceRoot":"","sources":["../../../src/persistence/flows/FlowsPersistenceAwsS3.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"FlowsPersistenceAwsS3.d.ts","sourceRoot":"","sources":["../../../src/persistence/flows/FlowsPersistenceAwsS3.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
26
26
|
credentials,
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
async
|
|
29
|
+
async setFlowMetadata(flowMetadata) {
|
|
30
30
|
const objectKey = `${flowMetadata.id}/${FlowsPersistenceAwsS3.METADATA_FILENAME}`;
|
|
31
31
|
// Save the main metadata file.
|
|
32
32
|
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
@@ -46,7 +46,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
46
46
|
// Update combined runMode+state index
|
|
47
47
|
await this.updateRunModeStateIndex(flowMetadata.id, flowMetadata.runMode, flowMetadata.state);
|
|
48
48
|
}
|
|
49
|
-
async
|
|
49
|
+
async getFlowMetadataById(flowId) {
|
|
50
50
|
const objectKey = `${flowId}/${FlowsPersistenceAwsS3.METADATA_FILENAME}`;
|
|
51
51
|
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
52
52
|
Bucket: this.bucketName,
|
|
@@ -58,7 +58,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
58
58
|
const data = await this.streamToBuffer(response.Body);
|
|
59
59
|
return JSON.parse(data.toString('utf-8'));
|
|
60
60
|
}
|
|
61
|
-
async
|
|
61
|
+
async getFlowMetadataByName(flowName) {
|
|
62
62
|
if (!flowName) {
|
|
63
63
|
throw FlowNotFoundException_1.FlowNotFoundException.forName('null');
|
|
64
64
|
}
|
|
@@ -75,77 +75,9 @@ class FlowsPersistenceAwsS3 {
|
|
|
75
75
|
const data = await this.streamToBuffer(response.Body);
|
|
76
76
|
const flowId = data.toString('utf-8');
|
|
77
77
|
// Get the flow metadata using the ID
|
|
78
|
-
return await this.
|
|
78
|
+
return await this.getFlowMetadataById(flowId);
|
|
79
79
|
}
|
|
80
|
-
async
|
|
81
|
-
const imageType = MiscUtils_1.MiscUtils.detectImageType(bytes);
|
|
82
|
-
const mimeType = `image/${imageType}`;
|
|
83
|
-
const filename = `${new Date().toISOString()}.screenshot.${imageType}`;
|
|
84
|
-
const objectKey = `${flowId}/${filename}`;
|
|
85
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
86
|
-
Bucket: this.bucketName,
|
|
87
|
-
Key: objectKey,
|
|
88
|
-
Body: bytes,
|
|
89
|
-
ContentType: mimeType,
|
|
90
|
-
}));
|
|
91
|
-
return filename;
|
|
92
|
-
}
|
|
93
|
-
async getScreenShot(flowId, screenShotId) {
|
|
94
|
-
const objectKey = `${flowId}/${screenShotId}`;
|
|
95
|
-
try {
|
|
96
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
97
|
-
Bucket: this.bucketName,
|
|
98
|
-
Key: objectKey,
|
|
99
|
-
}));
|
|
100
|
-
if (!response.Body || !response.ContentType?.startsWith('image')) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
return await this.streamToBuffer(response.Body);
|
|
104
|
-
}
|
|
105
|
-
catch (_error) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async saveToolCall(flowId, toolCall) {
|
|
110
|
-
const filename = `${toolCall.startedAt}${FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX}`;
|
|
111
|
-
const objectKey = `${flowId}/${filename}`;
|
|
112
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
113
|
-
Bucket: this.bucketName,
|
|
114
|
-
Key: objectKey,
|
|
115
|
-
Body: JSON.stringify(toolCall, null, 2),
|
|
116
|
-
ContentType: 'application/json',
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
async getToolCalls(flowId) {
|
|
120
|
-
const prefix = `${flowId}/`;
|
|
121
|
-
const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
|
|
122
|
-
Bucket: this.bucketName,
|
|
123
|
-
Prefix: prefix,
|
|
124
|
-
}));
|
|
125
|
-
if (!response.Contents || response.Contents.length === 0) {
|
|
126
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
127
|
-
}
|
|
128
|
-
const toolCallFiles = response.Contents.filter((item) => item.Key &&
|
|
129
|
-
item.Key.endsWith(FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX));
|
|
130
|
-
if (toolCallFiles.length === 0) {
|
|
131
|
-
return [];
|
|
132
|
-
}
|
|
133
|
-
const toolCalls = await Promise.all(toolCallFiles.map(async (file) => {
|
|
134
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
135
|
-
Bucket: this.bucketName,
|
|
136
|
-
Key: file.Key,
|
|
137
|
-
}));
|
|
138
|
-
if (!response.Body) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
const data = await this.streamToBuffer(response.Body);
|
|
142
|
-
return JSON.parse(data.toString('utf-8'));
|
|
143
|
-
}));
|
|
144
|
-
return toolCalls
|
|
145
|
-
.filter((toolCall) => toolCall !== null)
|
|
146
|
-
.sort((a, b) => (a.startedAt || 0) - (b.startedAt || 0));
|
|
147
|
-
}
|
|
148
|
-
async getFlows(query) {
|
|
80
|
+
async getFlowsMetadata(query) {
|
|
149
81
|
const { limit = 20, pageToken, name, runMode, state, startedAfter, startedBefore, } = query || {};
|
|
150
82
|
const validLimit = Math.min(Math.max(1, limit), 100);
|
|
151
83
|
// Determine which index to use based on query params
|
|
@@ -154,7 +86,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
154
86
|
if (name) {
|
|
155
87
|
// If querying by name, directly fetch that specific flow
|
|
156
88
|
try {
|
|
157
|
-
const flow = await this.
|
|
89
|
+
const flow = await this.getFlowMetadataByName(name);
|
|
158
90
|
// Apply other filters
|
|
159
91
|
let includeFlow = true;
|
|
160
92
|
if (runMode && flow.runMode !== runMode) {
|
|
@@ -232,7 +164,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
232
164
|
const flows = [];
|
|
233
165
|
for (const flowId of flowIds) {
|
|
234
166
|
try {
|
|
235
|
-
const flowMetadata = await this.
|
|
167
|
+
const flowMetadata = await this.getFlowMetadataById(flowId);
|
|
236
168
|
// Apply remaining filters
|
|
237
169
|
let includeFlow = true;
|
|
238
170
|
// Apply date range filters
|
|
@@ -269,6 +201,74 @@ class FlowsPersistenceAwsS3 {
|
|
|
269
201
|
nextPageToken: hasMore ? response.NextContinuationToken : undefined,
|
|
270
202
|
};
|
|
271
203
|
}
|
|
204
|
+
async saveScreenShot(flowId, bytes) {
|
|
205
|
+
const imageType = MiscUtils_1.MiscUtils.detectImageType(bytes);
|
|
206
|
+
const mimeType = `image/${imageType}`;
|
|
207
|
+
const filename = `${new Date().toISOString()}.screenshot.${imageType}`;
|
|
208
|
+
const objectKey = `${flowId}/${filename}`;
|
|
209
|
+
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
210
|
+
Bucket: this.bucketName,
|
|
211
|
+
Key: objectKey,
|
|
212
|
+
Body: bytes,
|
|
213
|
+
ContentType: mimeType,
|
|
214
|
+
}));
|
|
215
|
+
return filename;
|
|
216
|
+
}
|
|
217
|
+
async getScreenShot(flowId, screenShotId) {
|
|
218
|
+
const objectKey = `${flowId}/${screenShotId}`;
|
|
219
|
+
try {
|
|
220
|
+
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
221
|
+
Bucket: this.bucketName,
|
|
222
|
+
Key: objectKey,
|
|
223
|
+
}));
|
|
224
|
+
if (!response.Body || !response.ContentType?.startsWith('image')) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
return await this.streamToBuffer(response.Body);
|
|
228
|
+
}
|
|
229
|
+
catch (_error) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async saveToolCall(flowId, toolCall) {
|
|
234
|
+
const filename = `${toolCall.startedAt}${FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX}`;
|
|
235
|
+
const objectKey = `${flowId}/${filename}`;
|
|
236
|
+
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
237
|
+
Bucket: this.bucketName,
|
|
238
|
+
Key: objectKey,
|
|
239
|
+
Body: JSON.stringify(toolCall, null, 2),
|
|
240
|
+
ContentType: 'application/json',
|
|
241
|
+
}));
|
|
242
|
+
}
|
|
243
|
+
async getToolCalls(flowId) {
|
|
244
|
+
const prefix = `${flowId}/`;
|
|
245
|
+
const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
|
|
246
|
+
Bucket: this.bucketName,
|
|
247
|
+
Prefix: prefix,
|
|
248
|
+
}));
|
|
249
|
+
if (!response.Contents || response.Contents.length === 0) {
|
|
250
|
+
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
251
|
+
}
|
|
252
|
+
const toolCallFiles = response.Contents.filter((item) => item.Key &&
|
|
253
|
+
item.Key.endsWith(FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX));
|
|
254
|
+
if (toolCallFiles.length === 0) {
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
const toolCalls = await Promise.all(toolCallFiles.map(async (file) => {
|
|
258
|
+
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
259
|
+
Bucket: this.bucketName,
|
|
260
|
+
Key: file.Key,
|
|
261
|
+
}));
|
|
262
|
+
if (!response.Body) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const data = await this.streamToBuffer(response.Body);
|
|
266
|
+
return JSON.parse(data.toString('utf-8'));
|
|
267
|
+
}));
|
|
268
|
+
return toolCalls
|
|
269
|
+
.filter((toolCall) => toolCall !== null)
|
|
270
|
+
.sort((a, b) => (a.startedAt || 0) - (b.startedAt || 0));
|
|
271
|
+
}
|
|
272
272
|
async setVideo(flowId, bytes) {
|
|
273
273
|
const objectKey = `${flowId}/${FlowsPersistenceAwsS3.VIDEO_FILENAME}`;
|
|
274
274
|
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
@@ -347,7 +347,7 @@ class FlowsPersistenceAwsS3 {
|
|
|
347
347
|
}
|
|
348
348
|
async deleteFlow(flowId) {
|
|
349
349
|
// Get flow metadata to find its name.
|
|
350
|
-
const metadata = await this.
|
|
350
|
+
const metadata = await this.getFlowMetadataById(flowId);
|
|
351
351
|
// Delete the name index entry if name exists.
|
|
352
352
|
if (metadata.name) {
|
|
353
353
|
const indexKey = `${FlowsPersistenceAwsS3.NAME_INDEX_PREFIX}${encodeURIComponent(metadata.name)}`;
|
|
@@ -436,7 +436,6 @@ class FlowsPersistenceAwsS3 {
|
|
|
436
436
|
}
|
|
437
437
|
}
|
|
438
438
|
exports.FlowsPersistenceAwsS3 = FlowsPersistenceAwsS3;
|
|
439
|
-
FlowsPersistenceAwsS3.ENVIRONMENT_DATA_PREFIX = 'environment/';
|
|
440
439
|
FlowsPersistenceAwsS3.NAME_INDEX_PREFIX = '_name-index/';
|
|
441
440
|
FlowsPersistenceAwsS3.RUN_MODE_INDEX_PREFIX = '_run-mode-index/';
|
|
442
441
|
FlowsPersistenceAwsS3.STATE_INDEX_PREFIX = '_state-index/';
|