donobu 2.3.0 → 2.4.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/README.md +14 -0
- package/dist/apis/SpecialFlowsApi.d.ts +7 -1
- package/dist/apis/SpecialFlowsApi.js +41 -29
- package/dist/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/apis/ToolsApi.d.ts +1 -1
- package/dist/apis/ToolsApi.js +1 -1
- package/dist/apis/ToolsApi.js.map +1 -1
- package/dist/assets/control-panel.js +3 -3
- package/dist/assets/generated/parameter-schemas.json +4 -4
- package/dist/assets/generated/version +1 -1
- package/dist/clients/AnthropicAwsBedrockGptClient.js +1 -1
- package/dist/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
- package/dist/clients/AnthropicGptClient.js +1 -1
- package/dist/clients/AnthropicGptClient.js.map +1 -1
- package/dist/clients/GoogleGptClient.js +3 -3
- package/dist/clients/GoogleGptClient.js.map +1 -1
- package/dist/clients/GptClient.d.ts +1 -1
- package/dist/clients/OpenAiGptClient.js +1 -1
- package/dist/clients/OpenAiGptClient.js.map +1 -1
- package/dist/clients/VercelAiGptClient.js +1 -1
- package/dist/clients/VercelAiGptClient.js.map +1 -1
- package/dist/esm/apis/SpecialFlowsApi.d.ts +7 -1
- package/dist/esm/apis/SpecialFlowsApi.js +41 -29
- package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/esm/apis/ToolsApi.d.ts +1 -1
- package/dist/esm/apis/ToolsApi.js +1 -1
- package/dist/esm/apis/ToolsApi.js.map +1 -1
- package/dist/esm/assets/control-panel.js +3 -3
- package/dist/esm/assets/generated/parameter-schemas.json +4 -4
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.js +1 -1
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
- package/dist/esm/clients/AnthropicGptClient.js +1 -1
- package/dist/esm/clients/AnthropicGptClient.js.map +1 -1
- package/dist/esm/clients/GoogleGptClient.js +3 -3
- package/dist/esm/clients/GoogleGptClient.js.map +1 -1
- package/dist/esm/clients/GptClient.d.ts +1 -1
- package/dist/esm/clients/OpenAiGptClient.js +1 -1
- package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
- package/dist/esm/clients/VercelAiGptClient.js +1 -1
- package/dist/esm/clients/VercelAiGptClient.js.map +1 -1
- package/dist/esm/main.d.ts +6 -6
- package/dist/esm/main.js +50 -39
- package/dist/esm/main.js.map +1 -1
- package/dist/esm/managers/AdminApiController.js +12 -25
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/managers/CodeGenerator.d.ts +8 -0
- package/dist/esm/managers/CodeGenerator.js +25 -9
- package/dist/esm/managers/CodeGenerator.js.map +1 -1
- package/dist/esm/managers/DonobuFlow.js +4 -2
- package/dist/esm/managers/DonobuFlow.js.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +16 -7
- package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/esm/managers/DonobuMcpServer.d.ts +24 -0
- package/dist/esm/managers/DonobuMcpServer.js +146 -0
- package/dist/esm/managers/DonobuMcpServer.js.map +1 -0
- package/dist/esm/managers/DonobuStack.d.ts +19 -0
- package/dist/esm/managers/DonobuStack.js +29 -0
- package/dist/esm/managers/DonobuStack.js.map +1 -0
- package/dist/esm/managers/ToolManager.d.ts +1 -2
- package/dist/esm/managers/ToolManager.js +14 -14
- package/dist/esm/managers/ToolManager.js.map +1 -1
- package/dist/esm/models/BrowserFramework.d.ts +8 -15
- package/dist/esm/models/BrowserFramework.js +74 -96
- package/dist/esm/models/BrowserFramework.js.map +1 -1
- package/dist/esm/models/CustomTool.d.ts +1 -1
- package/dist/esm/persistence/DonobuSqliteDb.js +3 -2
- package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
- package/dist/esm/test.d.ts +2 -15
- package/dist/esm/test.js +37 -54
- package/dist/esm/test.js.map +1 -1
- package/dist/esm/tools/CustomToolRunnerTool.js +5 -5
- package/dist/esm/tools/CustomToolRunnerTool.js.map +1 -1
- package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js +9 -11
- package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
- package/dist/esm/tools/Tool.d.ts +2 -2
- package/dist/esm/tools/Tool.js +4 -4
- package/dist/esm/tools/Tool.js.map +1 -1
- package/dist/esm/utils/PlaywrightUtils.js +0 -2
- package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
- package/dist/main.d.ts +6 -6
- package/dist/main.js +50 -39
- package/dist/main.js.map +1 -1
- package/dist/managers/AdminApiController.js +12 -25
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/managers/CodeGenerator.d.ts +8 -0
- package/dist/managers/CodeGenerator.js +25 -9
- package/dist/managers/CodeGenerator.js.map +1 -1
- package/dist/managers/DonobuFlow.js +4 -2
- package/dist/managers/DonobuFlow.js.map +1 -1
- package/dist/managers/DonobuFlowsManager.js +16 -7
- package/dist/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/managers/DonobuMcpServer.d.ts +24 -0
- package/dist/managers/DonobuMcpServer.js +146 -0
- package/dist/managers/DonobuMcpServer.js.map +1 -0
- package/dist/managers/DonobuStack.d.ts +19 -0
- package/dist/managers/DonobuStack.js +29 -0
- package/dist/managers/DonobuStack.js.map +1 -0
- package/dist/managers/ToolManager.d.ts +1 -2
- package/dist/managers/ToolManager.js +14 -14
- package/dist/managers/ToolManager.js.map +1 -1
- package/dist/models/BrowserFramework.d.ts +8 -15
- package/dist/models/BrowserFramework.js +74 -96
- package/dist/models/BrowserFramework.js.map +1 -1
- package/dist/models/CustomTool.d.ts +1 -1
- package/dist/persistence/DonobuSqliteDb.js +3 -2
- package/dist/persistence/DonobuSqliteDb.js.map +1 -1
- package/dist/test.d.ts +2 -15
- package/dist/test.js +37 -54
- package/dist/test.js.map +1 -1
- package/dist/tools/CustomToolRunnerTool.js +5 -5
- package/dist/tools/CustomToolRunnerTool.js.map +1 -1
- package/dist/tools/GoToGoogleMapsStreetViewTool.js +9 -11
- package/dist/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
- package/dist/tools/Tool.d.ts +2 -2
- package/dist/tools/Tool.js +4 -4
- package/dist/tools/Tool.js.map +1 -1
- package/dist/utils/PlaywrightUtils.js +0 -2
- package/dist/utils/PlaywrightUtils.js.map +1 -1
- package/package.json +1 -1
- package/dist/apis/GptResourcesApi.d.ts +0 -20
- package/dist/apis/GptResourcesApi.js +0 -53
- package/dist/apis/GptResourcesApi.js.map +0 -1
- package/dist/apis/KeysApi.d.ts +0 -25
- package/dist/apis/KeysApi.js +0 -64
- package/dist/apis/KeysApi.js.map +0 -1
- package/dist/assets/Donobu.entitlements.plist +0 -28
- package/dist/clients/GoogleGptClient2.d.ts +0 -18
- package/dist/clients/GoogleGptClient2.js +0 -237
- package/dist/clients/GoogleGptClient2.js.map +0 -1
- package/dist/donobu.fixtures.d.ts +0 -57
- package/dist/donobu.fixtures.js +0 -167
- package/dist/donobu.fixtures.js.map +0 -1
- package/dist/esm/apis/GptResourcesApi.d.ts +0 -20
- package/dist/esm/apis/GptResourcesApi.js +0 -53
- package/dist/esm/apis/GptResourcesApi.js.map +0 -1
- package/dist/esm/apis/KeysApi.d.ts +0 -25
- package/dist/esm/apis/KeysApi.js +0 -64
- package/dist/esm/apis/KeysApi.js.map +0 -1
- package/dist/esm/assets/Donobu.entitlements.plist +0 -28
- package/dist/esm/donobu.fixtures.d.ts +0 -57
- package/dist/esm/donobu.fixtures.js +0 -167
- package/dist/esm/donobu.fixtures.js.map +0 -1
- package/dist/esm/exceptions/GptResourceNotFoundException.d.ts +0 -8
- package/dist/esm/exceptions/GptResourceNotFoundException.js +0 -16
- package/dist/esm/exceptions/GptResourceNotFoundException.js.map +0 -1
- package/dist/esm/managers/FlowsPersistence.d.ts +0 -79
- package/dist/esm/managers/FlowsPersistence.js +0 -3
- package/dist/esm/managers/FlowsPersistence.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceAwsS3.d.ts +0 -48
- package/dist/esm/managers/FlowsPersistenceAwsS3.js +0 -284
- package/dist/esm/managers/FlowsPersistenceAwsS3.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceFactory.d.ts +0 -9
- package/dist/esm/managers/FlowsPersistenceFactory.js +0 -3
- package/dist/esm/managers/FlowsPersistenceFactory.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceFactoryImpl.d.ts +0 -57
- package/dist/esm/managers/FlowsPersistenceFactoryImpl.js +0 -119
- package/dist/esm/managers/FlowsPersistenceFactoryImpl.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceFactoryPreset.d.ts +0 -12
- package/dist/esm/managers/FlowsPersistenceFactoryPreset.js +0 -25
- package/dist/esm/managers/FlowsPersistenceFactoryPreset.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceFilesystem.d.ts +0 -33
- package/dist/esm/managers/FlowsPersistenceFilesystem.js +0 -180
- package/dist/esm/managers/FlowsPersistenceFilesystem.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceGoogleCloudStorage.d.ts +0 -40
- package/dist/esm/managers/FlowsPersistenceGoogleCloudStorage.js +0 -209
- package/dist/esm/managers/FlowsPersistenceGoogleCloudStorage.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceSupabase.d.ts +0 -33
- package/dist/esm/managers/FlowsPersistenceSupabase.js +0 -152
- package/dist/esm/managers/FlowsPersistenceSupabase.js.map +0 -1
- package/dist/esm/managers/FlowsPersistenceVolatile.d.ts +0 -30
- package/dist/esm/managers/FlowsPersistenceVolatile.js +0 -103
- package/dist/esm/managers/FlowsPersistenceVolatile.js.map +0 -1
- package/dist/esm/managers/GptPlatformApiKeysManager.d.ts +0 -36
- package/dist/esm/managers/GptPlatformApiKeysManager.js +0 -3
- package/dist/esm/managers/GptPlatformApiKeysManager.js.map +0 -1
- package/dist/esm/managers/GptPlatformApiKeysManagerFilesystem.d.ts +0 -29
- package/dist/esm/managers/GptPlatformApiKeysManagerFilesystem.js +0 -136
- package/dist/esm/managers/GptPlatformApiKeysManagerFilesystem.js.map +0 -1
- package/dist/esm/managers/GptPlatformApiKeysManagerVolatile.d.ts +0 -35
- package/dist/esm/managers/GptPlatformApiKeysManagerVolatile.js +0 -51
- package/dist/esm/managers/GptPlatformApiKeysManagerVolatile.js.map +0 -1
- package/dist/esm/managers/GptResourcesManager.d.ts +0 -39
- package/dist/esm/managers/GptResourcesManager.js +0 -130
- package/dist/esm/managers/GptResourcesManager.js.map +0 -1
- package/dist/esm/managers/SelectorGenerator.d.ts +0 -8
- package/dist/esm/managers/SelectorGenerator.js +0 -15
- package/dist/esm/managers/SelectorGenerator.js.map +0 -1
- package/dist/esm/models/ElementSelectorForReplay.d.ts +0 -14
- package/dist/esm/models/ElementSelectorForReplay.js +0 -3
- package/dist/esm/models/ElementSelectorForReplay.js.map +0 -1
- package/dist/esm/models/GptResource.d.ts +0 -33
- package/dist/esm/models/GptResource.js +0 -3
- package/dist/esm/models/GptResource.js.map +0 -1
- package/dist/esm/persistence/AgentsPersistenceFilesystem.d.ts +0 -15
- package/dist/esm/persistence/AgentsPersistenceFilesystem.js +0 -48
- package/dist/esm/persistence/AgentsPersistenceFilesystem.js.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistenceFilesystem.d.ts +0 -16
- package/dist/esm/persistence/GptConfigsPersistenceFilesystem.js +0 -54
- package/dist/esm/persistence/GptConfigsPersistenceFilesystem.js.map +0 -1
- package/dist/esm/persistence/GptResourcesPersistence.d.ts +0 -11
- package/dist/esm/persistence/GptResourcesPersistence.js +0 -3
- package/dist/esm/persistence/GptResourcesPersistence.js.map +0 -1
- package/dist/esm/persistence/GptResourcesPersistenceFilesystem.d.ts +0 -20
- package/dist/esm/persistence/GptResourcesPersistenceFilesystem.js +0 -79
- package/dist/esm/persistence/GptResourcesPersistenceFilesystem.js.map +0 -1
- package/dist/esm/persistence/GptResourcesPersistenceVolatile.d.ts +0 -14
- package/dist/esm/persistence/GptResourcesPersistenceVolatile.js +0 -32
- package/dist/esm/persistence/GptResourcesPersistenceVolatile.js.map +0 -1
- package/dist/esm/testfixtures.d.ts +0 -66
- package/dist/esm/testfixtures.js +0 -288
- package/dist/esm/testfixtures.js.map +0 -1
- package/dist/esm/tools/AssertTextVisibility.d.ts +0 -19
- package/dist/esm/tools/AssertTextVisibility.js +0 -32
- package/dist/esm/tools/AssertTextVisibility.js.map +0 -1
- package/dist/esm/tools/ClickButtonTool.d.ts +0 -14
- package/dist/esm/tools/ClickButtonTool.js +0 -36
- package/dist/esm/tools/ClickButtonTool.js.map +0 -1
- package/dist/esm/tools/NavigateToWebpageTool.d.ts +0 -20
- package/dist/esm/tools/NavigateToWebpageTool.js +0 -40
- package/dist/esm/tools/NavigateToWebpageTool.js.map +0 -1
- package/dist/esm/utils/DirectoryUtils.d.ts +0 -11
- package/dist/esm/utils/DirectoryUtils.js +0 -37
- package/dist/esm/utils/DirectoryUtils.js.map +0 -1
- package/dist/exceptions/GptResourceNotFoundException.d.ts +0 -8
- package/dist/exceptions/GptResourceNotFoundException.js +0 -16
- package/dist/exceptions/GptResourceNotFoundException.js.map +0 -1
- package/dist/managers/FlowsPersistence.d.ts +0 -79
- package/dist/managers/FlowsPersistence.js +0 -3
- package/dist/managers/FlowsPersistence.js.map +0 -1
- package/dist/managers/FlowsPersistenceAwsS3.d.ts +0 -48
- package/dist/managers/FlowsPersistenceAwsS3.js +0 -284
- package/dist/managers/FlowsPersistenceAwsS3.js.map +0 -1
- package/dist/managers/FlowsPersistenceFactory.d.ts +0 -9
- package/dist/managers/FlowsPersistenceFactory.js +0 -3
- package/dist/managers/FlowsPersistenceFactory.js.map +0 -1
- package/dist/managers/FlowsPersistenceFactoryImpl.d.ts +0 -57
- package/dist/managers/FlowsPersistenceFactoryImpl.js +0 -119
- package/dist/managers/FlowsPersistenceFactoryImpl.js.map +0 -1
- package/dist/managers/FlowsPersistenceFactoryPreset.d.ts +0 -12
- package/dist/managers/FlowsPersistenceFactoryPreset.js +0 -25
- package/dist/managers/FlowsPersistenceFactoryPreset.js.map +0 -1
- package/dist/managers/FlowsPersistenceFilesystem.d.ts +0 -33
- package/dist/managers/FlowsPersistenceFilesystem.js +0 -180
- package/dist/managers/FlowsPersistenceFilesystem.js.map +0 -1
- package/dist/managers/FlowsPersistenceGoogleCloudStorage.d.ts +0 -40
- package/dist/managers/FlowsPersistenceGoogleCloudStorage.js +0 -209
- package/dist/managers/FlowsPersistenceGoogleCloudStorage.js.map +0 -1
- package/dist/managers/FlowsPersistenceSupabase.d.ts +0 -33
- package/dist/managers/FlowsPersistenceSupabase.js +0 -152
- package/dist/managers/FlowsPersistenceSupabase.js.map +0 -1
- package/dist/managers/FlowsPersistenceVolatile.d.ts +0 -30
- package/dist/managers/FlowsPersistenceVolatile.js +0 -103
- package/dist/managers/FlowsPersistenceVolatile.js.map +0 -1
- package/dist/managers/GptPlatformApiKeysManager.d.ts +0 -36
- package/dist/managers/GptPlatformApiKeysManager.js +0 -3
- package/dist/managers/GptPlatformApiKeysManager.js.map +0 -1
- package/dist/managers/GptPlatformApiKeysManagerFilesystem.d.ts +0 -29
- package/dist/managers/GptPlatformApiKeysManagerFilesystem.js +0 -136
- package/dist/managers/GptPlatformApiKeysManagerFilesystem.js.map +0 -1
- package/dist/managers/GptPlatformApiKeysManagerVolatile.d.ts +0 -35
- package/dist/managers/GptPlatformApiKeysManagerVolatile.js +0 -51
- package/dist/managers/GptPlatformApiKeysManagerVolatile.js.map +0 -1
- package/dist/managers/GptResourcesManager.d.ts +0 -44
- package/dist/managers/GptResourcesManager.js +0 -180
- package/dist/managers/GptResourcesManager.js.map +0 -1
- package/dist/managers/SelectorGenerator.d.ts +0 -8
- package/dist/managers/SelectorGenerator.js +0 -15
- package/dist/managers/SelectorGenerator.js.map +0 -1
- package/dist/models/BaseToolParam.d.ts +0 -9
- package/dist/models/BaseToolParam.js +0 -3
- package/dist/models/BaseToolParam.js.map +0 -1
- package/dist/models/BaseToolParameters.d.ts +0 -9
- package/dist/models/BaseToolParameters.js +0 -3
- package/dist/models/BaseToolParameters.js.map +0 -1
- package/dist/models/DonobuAnnotated.d.ts +0 -23
- package/dist/models/DonobuAnnotated.js +0 -12
- package/dist/models/DonobuAnnotated.js.map +0 -1
- package/dist/models/ElementSelectorForReplay.d.ts +0 -14
- package/dist/models/ElementSelectorForReplay.js +0 -3
- package/dist/models/ElementSelectorForReplay.js.map +0 -1
- package/dist/models/GptResource.d.ts +0 -33
- package/dist/models/GptResource.js +0 -3
- package/dist/models/GptResource.js.map +0 -1
- package/dist/persistence/AgentsPersistenceFilesystem.d.ts +0 -15
- package/dist/persistence/AgentsPersistenceFilesystem.js +0 -48
- package/dist/persistence/AgentsPersistenceFilesystem.js.map +0 -1
- package/dist/persistence/GptConfigsPersistenceFilesystem.d.ts +0 -16
- package/dist/persistence/GptConfigsPersistenceFilesystem.js +0 -54
- package/dist/persistence/GptConfigsPersistenceFilesystem.js.map +0 -1
- package/dist/persistence/GptResourcesPersistence.d.ts +0 -11
- package/dist/persistence/GptResourcesPersistence.js +0 -3
- package/dist/persistence/GptResourcesPersistence.js.map +0 -1
- package/dist/persistence/GptResourcesPersistenceFilesystem.d.ts +0 -20
- package/dist/persistence/GptResourcesPersistenceFilesystem.js +0 -79
- package/dist/persistence/GptResourcesPersistenceFilesystem.js.map +0 -1
- package/dist/persistence/GptResourcesPersistenceVolatile.d.ts +0 -14
- package/dist/persistence/GptResourcesPersistenceVolatile.js +0 -32
- package/dist/persistence/GptResourcesPersistenceVolatile.js.map +0 -1
- package/dist/testfixtures.d.ts +0 -66
- package/dist/testfixtures.js +0 -288
- package/dist/testfixtures.js.map +0 -1
- package/dist/tools/AssertTextVisibility.d.ts +0 -19
- package/dist/tools/AssertTextVisibility.js +0 -32
- package/dist/tools/AssertTextVisibility.js.map +0 -1
- package/dist/tools/ClickButtonTool.d.ts +0 -14
- package/dist/tools/ClickButtonTool.js +0 -36
- package/dist/tools/ClickButtonTool.js.map +0 -1
- package/dist/tools/NavigateToWebpage.d.ts +0 -19
- package/dist/tools/NavigateToWebpage.js +0 -25
- package/dist/tools/NavigateToWebpage.js.map +0 -1
- package/dist/tools/NavigateToWebpageTool.d.ts +0 -20
- package/dist/tools/NavigateToWebpageTool.js +0 -40
- package/dist/tools/NavigateToWebpageTool.js.map +0 -1
- package/dist/utils/DirectoryUtils.d.ts +0 -11
- package/dist/utils/DirectoryUtils.js +0 -37
- package/dist/utils/DirectoryUtils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistence.js","sourceRoot":"","sources":["../../src/managers/FlowsPersistence.ts"],"names":[],"mappings":""}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
2
|
-
import { FlowMetadata } from '../models/FlowMetadata';
|
|
3
|
-
import { ToolCall } from '../models/ToolCall';
|
|
4
|
-
import { VideoSegment } from '../models/VideoSegment';
|
|
5
|
-
import { BrowserStorageState } from '../models/BrowserState';
|
|
6
|
-
/**
|
|
7
|
-
* A persistence implementation that uses AWS S3.
|
|
8
|
-
* Ensure AWS credentials are properly configured in your environment,
|
|
9
|
-
* or provide them directly in the constructor.
|
|
10
|
-
*/
|
|
11
|
-
export declare class FlowsPersistenceAwsS3 implements FlowsPersistence {
|
|
12
|
-
private static readonly METADATA_FILENAME;
|
|
13
|
-
private static readonly BROWSER_STATE_FILENAME;
|
|
14
|
-
private static readonly SCREENSHOT_FILENAME_SUFFIX;
|
|
15
|
-
private static readonly TOOL_CALL_FILENAME_SUFFIX;
|
|
16
|
-
private static readonly VIDEO_FILENAME;
|
|
17
|
-
private readonly s3Client;
|
|
18
|
-
private readonly bucketName;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a new instance of the AWS S3 persistence layer.
|
|
21
|
-
*
|
|
22
|
-
* @param bucketName The name of the S3 bucket to use for storage
|
|
23
|
-
* @param region AWS region (defaults to 'us-east-1')
|
|
24
|
-
* @param credentials Optional AWS credentials (if not provided, will use environment variables)
|
|
25
|
-
*/
|
|
26
|
-
constructor(bucketName: string, region: string, credentials?: {
|
|
27
|
-
accessKeyId: string;
|
|
28
|
-
secretAccessKey: string;
|
|
29
|
-
});
|
|
30
|
-
/**
|
|
31
|
-
* Utility method to stream S3 object data to a Buffer
|
|
32
|
-
*/
|
|
33
|
-
private streamToBuffer;
|
|
34
|
-
saveMetadata(flowMetadata: FlowMetadata): Promise<void>;
|
|
35
|
-
getMetadataByFlowId(flowId: string): Promise<FlowMetadata>;
|
|
36
|
-
getMetadataByFlowName(flowName: string): Promise<FlowMetadata>;
|
|
37
|
-
savePngScreenShot(flowId: string, bytes: Buffer): Promise<string>;
|
|
38
|
-
saveToolCall(flowId: string, toolCall: ToolCall): Promise<void>;
|
|
39
|
-
getToolCalls(flowId: string): Promise<ToolCall[]>;
|
|
40
|
-
getFlows(): Promise<FlowMetadata[]>;
|
|
41
|
-
setVideo(flowId: string, bytes: Buffer): Promise<void>;
|
|
42
|
-
getVideoSegment(flowId: string, startOffset: number, length: number): Promise<VideoSegment | null>;
|
|
43
|
-
getFlowFile(flowId: string, fileId: string): Promise<Buffer | null>;
|
|
44
|
-
setFlowFile(flowId: string, fileId: string, fileBytes: Buffer): Promise<void>;
|
|
45
|
-
setBrowserState(flowId: string, browserState: BrowserStorageState): Promise<void>;
|
|
46
|
-
getBrowserState(flowId: string): Promise<BrowserStorageState | null>;
|
|
47
|
-
deleteFlow(flowId: string): Promise<void>;
|
|
48
|
-
}
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlowsPersistenceAwsS3 = void 0;
|
|
4
|
-
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
-
const FlowNotFoundException_1 = require("../exceptions/FlowNotFoundException");
|
|
6
|
-
const Logger_1 = require("../utils/Logger");
|
|
7
|
-
const JsonUtils_1 = require("../utils/JsonUtils");
|
|
8
|
-
/**
|
|
9
|
-
* A persistence implementation that uses AWS S3.
|
|
10
|
-
* Ensure AWS credentials are properly configured in your environment,
|
|
11
|
-
* or provide them directly in the constructor.
|
|
12
|
-
*/
|
|
13
|
-
class FlowsPersistenceAwsS3 {
|
|
14
|
-
static METADATA_FILENAME = 'metadata.json';
|
|
15
|
-
static BROWSER_STATE_FILENAME = 'browserstate.json';
|
|
16
|
-
static SCREENSHOT_FILENAME_SUFFIX = '.screenshot.png';
|
|
17
|
-
static TOOL_CALL_FILENAME_SUFFIX = '.tool-call.json';
|
|
18
|
-
static VIDEO_FILENAME = 'video.webm';
|
|
19
|
-
s3Client;
|
|
20
|
-
bucketName;
|
|
21
|
-
/**
|
|
22
|
-
* Creates a new instance of the AWS S3 persistence layer.
|
|
23
|
-
*
|
|
24
|
-
* @param bucketName The name of the S3 bucket to use for storage
|
|
25
|
-
* @param region AWS region (defaults to 'us-east-1')
|
|
26
|
-
* @param credentials Optional AWS credentials (if not provided, will use environment variables)
|
|
27
|
-
*/
|
|
28
|
-
constructor(bucketName, region, credentials) {
|
|
29
|
-
this.bucketName = bucketName;
|
|
30
|
-
this.s3Client = new client_s3_1.S3Client({
|
|
31
|
-
region,
|
|
32
|
-
credentials,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Utility method to stream S3 object data to a Buffer
|
|
37
|
-
*/
|
|
38
|
-
async streamToBuffer(stream) {
|
|
39
|
-
return new Promise((resolve, reject) => {
|
|
40
|
-
const chunks = [];
|
|
41
|
-
stream.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
|
|
42
|
-
stream.on('error', reject);
|
|
43
|
-
stream.on('end', () => resolve(Buffer.concat(chunks)));
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async saveMetadata(flowMetadata) {
|
|
47
|
-
const objectKey = `${flowMetadata.id}/${FlowsPersistenceAwsS3.METADATA_FILENAME}`;
|
|
48
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
49
|
-
Bucket: this.bucketName,
|
|
50
|
-
Key: objectKey,
|
|
51
|
-
Body: JSON.stringify(flowMetadata, null, 2),
|
|
52
|
-
ContentType: 'application/json',
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
async getMetadataByFlowId(flowId) {
|
|
56
|
-
const objectKey = `${flowId}/${FlowsPersistenceAwsS3.METADATA_FILENAME}`;
|
|
57
|
-
try {
|
|
58
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
59
|
-
Bucket: this.bucketName,
|
|
60
|
-
Key: objectKey,
|
|
61
|
-
}));
|
|
62
|
-
if (!response.Body) {
|
|
63
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
64
|
-
}
|
|
65
|
-
const data = await this.streamToBuffer(response.Body);
|
|
66
|
-
return JSON.parse(data.toString('utf-8'));
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
Logger_1.Logger.appLogger.error(`Failed to get metadata for flow ${flowId}`, error);
|
|
70
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async getMetadataByFlowName(flowName) {
|
|
74
|
-
const flows = (await this.getFlows()).filter((flow) => flow.name === flowName);
|
|
75
|
-
if (flows.length > 0) {
|
|
76
|
-
return flows[0];
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forName(flowName);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async savePngScreenShot(flowId, bytes) {
|
|
83
|
-
const filename = `${new Date().toISOString()}${FlowsPersistenceAwsS3.SCREENSHOT_FILENAME_SUFFIX}`;
|
|
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: 'image/png',
|
|
90
|
-
}));
|
|
91
|
-
return filename;
|
|
92
|
-
}
|
|
93
|
-
async saveToolCall(flowId, toolCall) {
|
|
94
|
-
const filename = `${toolCall.startedAt}${FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX}`;
|
|
95
|
-
const objectKey = `${flowId}/${filename}`;
|
|
96
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
97
|
-
Bucket: this.bucketName,
|
|
98
|
-
Key: objectKey,
|
|
99
|
-
Body: JSON.stringify(toolCall, null, 2),
|
|
100
|
-
ContentType: 'application/json',
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
async getToolCalls(flowId) {
|
|
104
|
-
const prefix = `${flowId}/`;
|
|
105
|
-
try {
|
|
106
|
-
const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
|
|
107
|
-
Bucket: this.bucketName,
|
|
108
|
-
Prefix: prefix,
|
|
109
|
-
}));
|
|
110
|
-
if (!response.Contents || response.Contents.length === 0) {
|
|
111
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
112
|
-
}
|
|
113
|
-
const toolCallFiles = response.Contents.filter((item) => item.Key &&
|
|
114
|
-
item.Key.endsWith(FlowsPersistenceAwsS3.TOOL_CALL_FILENAME_SUFFIX));
|
|
115
|
-
if (toolCallFiles.length === 0) {
|
|
116
|
-
return [];
|
|
117
|
-
}
|
|
118
|
-
const toolCalls = await Promise.all(toolCallFiles.map(async (file) => {
|
|
119
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
120
|
-
Bucket: this.bucketName,
|
|
121
|
-
Key: file.Key,
|
|
122
|
-
}));
|
|
123
|
-
if (!response.Body) {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
const data = await this.streamToBuffer(response.Body);
|
|
127
|
-
return JSON.parse(data.toString('utf-8'));
|
|
128
|
-
}));
|
|
129
|
-
return toolCalls
|
|
130
|
-
.filter((toolCall) => toolCall !== null)
|
|
131
|
-
.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
Logger_1.Logger.appLogger.error(`Failed to get tool calls for flow ${flowId}`, error);
|
|
135
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async getFlows() {
|
|
139
|
-
try {
|
|
140
|
-
const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
|
|
141
|
-
Bucket: this.bucketName,
|
|
142
|
-
}));
|
|
143
|
-
if (!response.Contents) {
|
|
144
|
-
return [];
|
|
145
|
-
}
|
|
146
|
-
const metadataFiles = response.Contents.filter((item) => item.Key &&
|
|
147
|
-
item.Key.endsWith(`/${FlowsPersistenceAwsS3.METADATA_FILENAME}`));
|
|
148
|
-
const flowIds = metadataFiles.map((file) => {
|
|
149
|
-
const key = file.Key;
|
|
150
|
-
return key.substring(0, key.indexOf('/'));
|
|
151
|
-
});
|
|
152
|
-
const flows = [];
|
|
153
|
-
for (const flowId of flowIds) {
|
|
154
|
-
try {
|
|
155
|
-
flows.push(await this.getMetadataByFlowId(flowId));
|
|
156
|
-
}
|
|
157
|
-
catch (e) {
|
|
158
|
-
Logger_1.Logger.appLogger.warn(`Flow not found: ${flowId}`, e);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return flows;
|
|
162
|
-
}
|
|
163
|
-
catch (error) {
|
|
164
|
-
Logger_1.Logger.appLogger.error('Failed to list flows', error);
|
|
165
|
-
return [];
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
async setVideo(flowId, bytes) {
|
|
169
|
-
const objectKey = `${flowId}/${FlowsPersistenceAwsS3.VIDEO_FILENAME}`;
|
|
170
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
171
|
-
Bucket: this.bucketName,
|
|
172
|
-
Key: objectKey,
|
|
173
|
-
Body: bytes,
|
|
174
|
-
ContentType: 'video/webm',
|
|
175
|
-
}));
|
|
176
|
-
}
|
|
177
|
-
async getVideoSegment(flowId, startOffset, length) {
|
|
178
|
-
const objectKey = `${flowId}/${FlowsPersistenceAwsS3.VIDEO_FILENAME}`;
|
|
179
|
-
try {
|
|
180
|
-
// First, get the total size of the video file
|
|
181
|
-
const headResponse = await this.s3Client.send(new client_s3_1.HeadObjectCommand({
|
|
182
|
-
Bucket: this.bucketName,
|
|
183
|
-
Key: objectKey,
|
|
184
|
-
}));
|
|
185
|
-
const totalLength = headResponse.ContentLength || 0;
|
|
186
|
-
const adjustedLength = Math.min(length, totalLength - startOffset);
|
|
187
|
-
if (adjustedLength <= 0) {
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
const range = `bytes=${startOffset}-${startOffset + adjustedLength - 1}`;
|
|
191
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
192
|
-
Bucket: this.bucketName,
|
|
193
|
-
Key: objectKey,
|
|
194
|
-
Range: range,
|
|
195
|
-
}));
|
|
196
|
-
if (!response.Body) {
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
const buffer = await this.streamToBuffer(response.Body);
|
|
200
|
-
return {
|
|
201
|
-
bytes: buffer,
|
|
202
|
-
totalLength: totalLength,
|
|
203
|
-
startOffset: startOffset,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
catch (error) {
|
|
207
|
-
Logger_1.Logger.appLogger.error(`Error reading video segment for flow ${flowId}`, error);
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
async getFlowFile(flowId, fileId) {
|
|
212
|
-
const objectKey = `${flowId}/${fileId}`;
|
|
213
|
-
try {
|
|
214
|
-
const response = await this.s3Client.send(new client_s3_1.GetObjectCommand({
|
|
215
|
-
Bucket: this.bucketName,
|
|
216
|
-
Key: objectKey,
|
|
217
|
-
}));
|
|
218
|
-
if (!response.Body) {
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
return await this.streamToBuffer(response.Body);
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
Logger_1.Logger.appLogger.debug(`File not found: ${objectKey}`, error);
|
|
225
|
-
return null;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
async setFlowFile(flowId, fileId, fileBytes) {
|
|
229
|
-
const objectKey = `${flowId}/${fileId}`;
|
|
230
|
-
await this.s3Client.send(new client_s3_1.PutObjectCommand({
|
|
231
|
-
Bucket: this.bucketName,
|
|
232
|
-
Key: objectKey,
|
|
233
|
-
Body: fileBytes,
|
|
234
|
-
ContentType: 'application/octet-stream',
|
|
235
|
-
}));
|
|
236
|
-
}
|
|
237
|
-
async setBrowserState(flowId, browserState) {
|
|
238
|
-
const serializedBrowserState = Buffer.from(JSON.stringify(browserState), 'utf-8');
|
|
239
|
-
await this.setFlowFile(flowId, FlowsPersistenceAwsS3.BROWSER_STATE_FILENAME, serializedBrowserState);
|
|
240
|
-
}
|
|
241
|
-
async getBrowserState(flowId) {
|
|
242
|
-
const browserStateRaw = await this.getFlowFile(flowId, FlowsPersistenceAwsS3.BROWSER_STATE_FILENAME);
|
|
243
|
-
if (browserStateRaw) {
|
|
244
|
-
const browserState = JsonUtils_1.JsonUtils.jsonStringToJsonObject(browserStateRaw.toString('utf-8'));
|
|
245
|
-
if (browserState) {
|
|
246
|
-
return browserState;
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
throw new Error(`Cannot load malformed browser state from flow ${flowId}`);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
async deleteFlow(flowId) {
|
|
257
|
-
const prefix = `${flowId}/`;
|
|
258
|
-
try {
|
|
259
|
-
// List all objects with the flow prefix
|
|
260
|
-
const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
|
|
261
|
-
Bucket: this.bucketName,
|
|
262
|
-
Prefix: prefix,
|
|
263
|
-
}));
|
|
264
|
-
if (!response.Contents || response.Contents.length === 0) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
// Delete each object
|
|
268
|
-
for (const object of response.Contents) {
|
|
269
|
-
if (object.Key) {
|
|
270
|
-
await this.s3Client.send(new client_s3_1.DeleteObjectCommand({
|
|
271
|
-
Bucket: this.bucketName,
|
|
272
|
-
Key: object.Key,
|
|
273
|
-
}));
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
catch (error) {
|
|
278
|
-
Logger_1.Logger.appLogger.error(`Failed to delete flow ${flowId}`, error);
|
|
279
|
-
throw error;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
exports.FlowsPersistenceAwsS3 = FlowsPersistenceAwsS3;
|
|
284
|
-
//# sourceMappingURL=FlowsPersistenceAwsS3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceAwsS3.js","sourceRoot":"","sources":["../../src/managers/FlowsPersistenceAwsS3.ts"],"names":[],"mappings":";;;AAAA,kDAO4B;AAK5B,+EAA4E;AAC5E,4CAAyC;AAEzC,kDAA+C;AAG/C;;;;GAIG;AACH,MAAa,qBAAqB;IACxB,MAAM,CAAU,iBAAiB,GAAG,eAAe,CAAC;IACpD,MAAM,CAAU,sBAAsB,GAAG,mBAAmB,CAAC;IAC7D,MAAM,CAAU,0BAA0B,GAAG,iBAAiB,CAAC;IAC/D,MAAM,CAAU,yBAAyB,GAAG,iBAAiB,CAAC;IAC9D,MAAM,CAAU,cAAc,GAAG,YAAY,CAAC;IAErC,QAAQ,CAAW;IACnB,UAAU,CAAS;IAEpC;;;;;;OAMG;IACH,YACE,UAAkB,EAClB,MAAc,EACd,WAA8D;QAE9D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC;YAC3B,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,MAAgB;QAC3C,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,YAA0B;QAClD,MAAM,SAAS,GAAG,GAAG,YAAY,CAAC,EAAE,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QAElF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,4BAAgB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,WAAW,EAAE,kBAAkB;SAChC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,MAAc;QAC7C,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,4BAAgB,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,6CAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CACpB,mCAAmC,MAAM,EAAE,EAC3C,KAAK,CACN,CAAC;YACF,MAAM,6CAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QACjD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CACjC,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,6CAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,MAAc,EACd,KAAa;QAEb,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,qBAAqB,CAAC,0BAA0B,EAAE,CAAC;QAClG,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;QAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,4BAAgB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,WAAW;SACzB,CAAC,CACH,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,QAAkB;QAC1D,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,SAAS,GAAG,qBAAqB,CAAC,yBAAyB,EAAE,CAAC;QAC3F,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;QAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,4BAAgB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,WAAW,EAAE,kBAAkB;SAChC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAc;QACtC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,gCAAoB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,MAAM,EAAE,MAAM;aACf,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,6CAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,GAAG;gBACR,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CACrE,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,4BAAgB,CAAC;oBACnB,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CAAC,CACH,CAAC;gBAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa,CAAC;YACxD,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,SAAS;iBACb,MAAM,CAAC,CAAC,QAAQ,EAAwB,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC;iBAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CACpB,qCAAqC,MAAM,EAAE,EAC7C,KAAK,CACN,CAAC;YACF,MAAM,6CAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,gCAAoB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU;aACxB,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,GAAG;gBACR,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,CACnE,CAAC;YAEF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;gBAC/B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAmB,EAAE,CAAC;YACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,KAAa;QACjD,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,qBAAqB,CAAC,cAAc,EAAE,CAAC;QAEtE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,4BAAgB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,YAAY;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,MAAc,EACd,WAAmB,EACnB,MAAc;QAEd,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,qBAAqB,CAAC,cAAc,EAAE,CAAC;QAEtE,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC3C,IAAI,6BAAiB,CAAC;gBACpB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CACH,CAAC;YAEF,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;YAEnE,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,WAAW,IAAI,WAAW,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC;YAEzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,4BAAgB,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,KAAK;aACb,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAC;YAEpE,OAAO;gBACL,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,WAAW;aACF,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CACpB,wCAAwC,MAAM,EAAE,EAChD,KAAK,CACN,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,MAAc,EACd,MAAc;QAEd,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,4BAAgB,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,MAAc,EACd,MAAc,EACd,SAAiB;QAEjB,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QAExC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,4BAAgB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,0BAA0B;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,YAAiC;QAEjC,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CACxC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAC5B,OAAO,CACR,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CACpB,MAAM,EACN,qBAAqB,CAAC,sBAAsB,EAC5C,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAC5C,MAAM,EACN,qBAAqB,CAAC,sBAAsB,CAC7C,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,qBAAS,CAAC,sBAAsB,CACnD,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAClC,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAmC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,iDAAiD,MAAM,EAAE,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAc;QACpC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;QAE5B,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,IAAI,gCAAoB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,MAAM,EAAE,MAAM;aACf,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtB,IAAI,+BAAmB,CAAC;wBACtB,MAAM,EAAE,IAAI,CAAC,UAAU;wBACvB,GAAG,EAAE,MAAM,CAAC,GAAG;qBAChB,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,SAAS,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;;AA7YH,sDA8YC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
2
|
-
export interface FlowsPersistenceFactory {
|
|
3
|
-
/**
|
|
4
|
-
* Creates a new FlowsPersistence instance. Throws an error if no persistence layer is available.
|
|
5
|
-
*/
|
|
6
|
-
createPersistenceLayer(): Promise<FlowsPersistence>;
|
|
7
|
-
/** Returns a list of all valid persistence layers. Note that the returned list may be empty! */
|
|
8
|
-
createPersistenceLayers(): Promise<FlowsPersistence[]>;
|
|
9
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceFactory.js","sourceRoot":"","sources":["../../src/managers/FlowsPersistenceFactory.ts"],"names":[],"mappings":""}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
2
|
-
import { RequestContextHolder } from './RequestContextHolder';
|
|
3
|
-
import { DonobuDeploymentEnvironment } from '../models/DonobuDeploymentEnvironment';
|
|
4
|
-
import { FlowsPersistenceFactory } from './FlowsPersistenceFactory';
|
|
5
|
-
/**
|
|
6
|
-
* A factory class for creating new FlowsPersistence instances. The type of persistence
|
|
7
|
-
* objects created varies depending on this factory's constructor arguments and the current API
|
|
8
|
-
* request context.
|
|
9
|
-
*/
|
|
10
|
-
export declare class FlowsPersistenceFactoryImpl implements FlowsPersistenceFactory {
|
|
11
|
-
private readonly deploymentEnvironment;
|
|
12
|
-
private readonly awsS3Bucket;
|
|
13
|
-
private readonly awsS3Region;
|
|
14
|
-
private readonly googleCloudStorageBucket;
|
|
15
|
-
private readonly supabaseJwtSecretKey;
|
|
16
|
-
private readonly baseOutputDir;
|
|
17
|
-
private readonly requestContextHolder;
|
|
18
|
-
private static readonly AWS_S3_BUCKET_KEY;
|
|
19
|
-
private static readonly AWS_S3_REGION_KEY;
|
|
20
|
-
private static readonly GOOGLE_CLOUD_STORAGE_BUCKET_ENV;
|
|
21
|
-
private static readonly SUPABASE_JWT_SECRET_KEY_ENV;
|
|
22
|
-
/**
|
|
23
|
-
* Creates an instance.
|
|
24
|
-
*
|
|
25
|
-
* @param deploymentEnvironment The deployment environment for this application. If this is set to
|
|
26
|
-
* a value of DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, then the
|
|
27
|
-
* supabaseJwtSecretKey must also be specified.
|
|
28
|
-
* @param awsS3Bucket The name of the AWS S3 bucket to use for persistence.
|
|
29
|
-
* @param awsS3Region The region of the AWS S3 bucket.
|
|
30
|
-
* @param googleCloudStorageBucket The name of the Google Cloud storage bucket to use for
|
|
31
|
-
* persistence. Note that no special authentication is performed, so the current environment
|
|
32
|
-
* must be able to reach said bucket. If deployed in Google Cloud, this may be done
|
|
33
|
-
* automatically. If running locally, this may mean you have to log in to Google Cloud using
|
|
34
|
-
* the Google Cloud CLI before running this application.
|
|
35
|
-
* @param supabaseJwtSecretKey The Supabase JWT secret key used to generate new JWTs for the
|
|
36
|
-
* purposes of authentication. This key is extremely sensitive! This parameter MUST be
|
|
37
|
-
* specified if deploymentEnvironment is set to DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT.
|
|
38
|
-
* @param baseOutputDir The local directory to store files.
|
|
39
|
-
* @param requestContextHolder The object used to get the current API request context.
|
|
40
|
-
*/
|
|
41
|
-
constructor(deploymentEnvironment: DonobuDeploymentEnvironment, awsS3Bucket: string | null, awsS3Region: string | null, googleCloudStorageBucket: string | null, supabaseJwtSecretKey: string | null, baseOutputDir: string, requestContextHolder: RequestContextHolder);
|
|
42
|
-
/**
|
|
43
|
-
* Creates an instance, fetching the values for googleCloudStorageBucket and
|
|
44
|
-
* supabaseJwtSecretKey from the environment variables.
|
|
45
|
-
*/
|
|
46
|
-
static fromEnvironment(deploymentEnvironment: DonobuDeploymentEnvironment, baseOutputDir: string, requestContextHolder: RequestContextHolder): FlowsPersistenceFactoryImpl;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a new FlowsPersistence instance.
|
|
49
|
-
*
|
|
50
|
-
* @throws NoApiAccessTokenPresentException If the deploymentEnvironment has a value of
|
|
51
|
-
* DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, and the current RequestContext
|
|
52
|
-
* accessToken is null or invalid.
|
|
53
|
-
*/
|
|
54
|
-
createPersistenceLayer(): Promise<FlowsPersistence>;
|
|
55
|
-
/** Returns a list of all valid persistence layers. Note that the returned list may be empty! */
|
|
56
|
-
createPersistenceLayers(): Promise<FlowsPersistence[]>;
|
|
57
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlowsPersistenceFactoryImpl = void 0;
|
|
4
|
-
const NoApiAccessTokenPresentException_1 = require("../exceptions/NoApiAccessTokenPresentException");
|
|
5
|
-
const FlowsPersistenceGoogleCloudStorage_1 = require("./FlowsPersistenceGoogleCloudStorage");
|
|
6
|
-
const FlowsPersistenceFilesystem_1 = require("./FlowsPersistenceFilesystem");
|
|
7
|
-
const FlowsPersistenceSupabase_1 = require("./FlowsPersistenceSupabase");
|
|
8
|
-
const SupabaseClient_1 = require("../clients/SupabaseClient");
|
|
9
|
-
const DonobuDeploymentEnvironment_1 = require("../models/DonobuDeploymentEnvironment");
|
|
10
|
-
const FlowsPersistenceAwsS3_1 = require("./FlowsPersistenceAwsS3");
|
|
11
|
-
/**
|
|
12
|
-
* A factory class for creating new FlowsPersistence instances. The type of persistence
|
|
13
|
-
* objects created varies depending on this factory's constructor arguments and the current API
|
|
14
|
-
* request context.
|
|
15
|
-
*/
|
|
16
|
-
class FlowsPersistenceFactoryImpl {
|
|
17
|
-
deploymentEnvironment;
|
|
18
|
-
awsS3Bucket;
|
|
19
|
-
awsS3Region;
|
|
20
|
-
googleCloudStorageBucket;
|
|
21
|
-
supabaseJwtSecretKey;
|
|
22
|
-
baseOutputDir;
|
|
23
|
-
requestContextHolder;
|
|
24
|
-
static AWS_S3_BUCKET_KEY = 'AWS_S3_BUCKET';
|
|
25
|
-
static AWS_S3_REGION_KEY = 'AWS_S3_REGION';
|
|
26
|
-
static GOOGLE_CLOUD_STORAGE_BUCKET_ENV = 'GOOGLE_CLOUD_STORAGE_BUCKET';
|
|
27
|
-
static SUPABASE_JWT_SECRET_KEY_ENV = 'SUPABASE_JWT_SECRET_KEY';
|
|
28
|
-
/**
|
|
29
|
-
* Creates an instance.
|
|
30
|
-
*
|
|
31
|
-
* @param deploymentEnvironment The deployment environment for this application. If this is set to
|
|
32
|
-
* a value of DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, then the
|
|
33
|
-
* supabaseJwtSecretKey must also be specified.
|
|
34
|
-
* @param awsS3Bucket The name of the AWS S3 bucket to use for persistence.
|
|
35
|
-
* @param awsS3Region The region of the AWS S3 bucket.
|
|
36
|
-
* @param googleCloudStorageBucket The name of the Google Cloud storage bucket to use for
|
|
37
|
-
* persistence. Note that no special authentication is performed, so the current environment
|
|
38
|
-
* must be able to reach said bucket. If deployed in Google Cloud, this may be done
|
|
39
|
-
* automatically. If running locally, this may mean you have to log in to Google Cloud using
|
|
40
|
-
* the Google Cloud CLI before running this application.
|
|
41
|
-
* @param supabaseJwtSecretKey The Supabase JWT secret key used to generate new JWTs for the
|
|
42
|
-
* purposes of authentication. This key is extremely sensitive! This parameter MUST be
|
|
43
|
-
* specified if deploymentEnvironment is set to DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT.
|
|
44
|
-
* @param baseOutputDir The local directory to store files.
|
|
45
|
-
* @param requestContextHolder The object used to get the current API request context.
|
|
46
|
-
*/
|
|
47
|
-
constructor(deploymentEnvironment, awsS3Bucket, awsS3Region, googleCloudStorageBucket, supabaseJwtSecretKey, baseOutputDir, requestContextHolder) {
|
|
48
|
-
this.deploymentEnvironment = deploymentEnvironment;
|
|
49
|
-
this.awsS3Bucket = awsS3Bucket;
|
|
50
|
-
this.awsS3Region = awsS3Region;
|
|
51
|
-
this.googleCloudStorageBucket = googleCloudStorageBucket;
|
|
52
|
-
this.supabaseJwtSecretKey = supabaseJwtSecretKey;
|
|
53
|
-
this.baseOutputDir = baseOutputDir;
|
|
54
|
-
this.requestContextHolder = requestContextHolder;
|
|
55
|
-
if (deploymentEnvironment ===
|
|
56
|
-
DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT &&
|
|
57
|
-
!supabaseJwtSecretKey) {
|
|
58
|
-
throw new Error('supabaseJwtSecretKey cannot be null if deploymentEnvironment is set to DONOBU_HOSTED_MULTI_TENANT.');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Creates an instance, fetching the values for googleCloudStorageBucket and
|
|
63
|
-
* supabaseJwtSecretKey from the environment variables.
|
|
64
|
-
*/
|
|
65
|
-
static fromEnvironment(deploymentEnvironment, baseOutputDir, requestContextHolder) {
|
|
66
|
-
const awsS3Bucket = process.env[FlowsPersistenceFactoryImpl.AWS_S3_BUCKET_KEY];
|
|
67
|
-
const awsS3Region = process.env[FlowsPersistenceFactoryImpl.AWS_S3_REGION_KEY];
|
|
68
|
-
const googleCloudStorageBucket = process.env[FlowsPersistenceFactoryImpl.GOOGLE_CLOUD_STORAGE_BUCKET_ENV];
|
|
69
|
-
const supabaseJwtSecretKey = process.env[FlowsPersistenceFactoryImpl.SUPABASE_JWT_SECRET_KEY_ENV];
|
|
70
|
-
return new FlowsPersistenceFactoryImpl(deploymentEnvironment, awsS3Bucket ? awsS3Bucket : null, awsS3Region ? awsS3Region : null, googleCloudStorageBucket ? googleCloudStorageBucket : null, supabaseJwtSecretKey ? supabaseJwtSecretKey : null, baseOutputDir, requestContextHolder);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Creates a new FlowsPersistence instance.
|
|
74
|
-
*
|
|
75
|
-
* @throws NoApiAccessTokenPresentException If the deploymentEnvironment has a value of
|
|
76
|
-
* DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT, and the current RequestContext
|
|
77
|
-
* accessToken is null or invalid.
|
|
78
|
-
*/
|
|
79
|
-
async createPersistenceLayer() {
|
|
80
|
-
const requestContext = this.requestContextHolder.get();
|
|
81
|
-
if (this.awsS3Bucket && this.awsS3Region) {
|
|
82
|
-
return new FlowsPersistenceAwsS3_1.FlowsPersistenceAwsS3(this.awsS3Bucket, this.awsS3Region);
|
|
83
|
-
}
|
|
84
|
-
else if (this.googleCloudStorageBucket) {
|
|
85
|
-
return FlowsPersistenceGoogleCloudStorage_1.FlowsPersistenceGoogleCloudStorage.create(this.googleCloudStorageBucket);
|
|
86
|
-
}
|
|
87
|
-
else if (this.deploymentEnvironment === DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.LOCAL) {
|
|
88
|
-
return new FlowsPersistenceFilesystem_1.FlowsPersistenceFilesystem(this.baseOutputDir);
|
|
89
|
-
}
|
|
90
|
-
else if (this.deploymentEnvironment ===
|
|
91
|
-
DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT) {
|
|
92
|
-
if (!requestContext.accessToken) {
|
|
93
|
-
throw new NoApiAccessTokenPresentException_1.NoApiAccessTokenPresentException();
|
|
94
|
-
}
|
|
95
|
-
return new FlowsPersistenceSupabase_1.FlowsPersistenceSupabase(SupabaseClient_1.SupabaseClient.createClient(requestContext.accessToken, this.supabaseJwtSecretKey));
|
|
96
|
-
}
|
|
97
|
-
throw new Error('No valid flow persistence implementation available!');
|
|
98
|
-
}
|
|
99
|
-
/** Returns a list of all valid persistence layers. Note that the returned list may be empty! */
|
|
100
|
-
async createPersistenceLayers() {
|
|
101
|
-
const flowsPersistences = [];
|
|
102
|
-
const requestContext = this.requestContextHolder.get();
|
|
103
|
-
if (this.googleCloudStorageBucket) {
|
|
104
|
-
flowsPersistences.push(await FlowsPersistenceGoogleCloudStorage_1.FlowsPersistenceGoogleCloudStorage.create(this.googleCloudStorageBucket));
|
|
105
|
-
}
|
|
106
|
-
if (this.deploymentEnvironment ===
|
|
107
|
-
DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.DONOBU_HOSTED_MULTI_TENANT &&
|
|
108
|
-
requestContext.accessToken &&
|
|
109
|
-
this.supabaseJwtSecretKey) {
|
|
110
|
-
flowsPersistences.push(new FlowsPersistenceSupabase_1.FlowsPersistenceSupabase(SupabaseClient_1.SupabaseClient.createClient(requestContext.accessToken, this.supabaseJwtSecretKey)));
|
|
111
|
-
}
|
|
112
|
-
else if (this.deploymentEnvironment === DonobuDeploymentEnvironment_1.DonobuDeploymentEnvironment.LOCAL) {
|
|
113
|
-
flowsPersistences.push(new FlowsPersistenceFilesystem_1.FlowsPersistenceFilesystem(this.baseOutputDir));
|
|
114
|
-
}
|
|
115
|
-
return flowsPersistences;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.FlowsPersistenceFactoryImpl = FlowsPersistenceFactoryImpl;
|
|
119
|
-
//# sourceMappingURL=FlowsPersistenceFactoryImpl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceFactoryImpl.js","sourceRoot":"","sources":["../../src/managers/FlowsPersistenceFactoryImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
2
|
-
import { FlowsPersistenceFactory } from './FlowsPersistenceFactory';
|
|
3
|
-
/**
|
|
4
|
-
* An implementation of FlowsPersistenceFactory that always returns the same
|
|
5
|
-
* persistence layers given at construction time.
|
|
6
|
-
*/
|
|
7
|
-
export declare class FlowsPersistenceFactoryPreset implements FlowsPersistenceFactory {
|
|
8
|
-
private readonly persistenceLayers;
|
|
9
|
-
constructor(persistenceLayers: FlowsPersistence[]);
|
|
10
|
-
createPersistenceLayer(): Promise<FlowsPersistence>;
|
|
11
|
-
createPersistenceLayers(): Promise<FlowsPersistence[]>;
|
|
12
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FlowsPersistenceFactoryPreset = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* An implementation of FlowsPersistenceFactory that always returns the same
|
|
6
|
-
* persistence layers given at construction time.
|
|
7
|
-
*/
|
|
8
|
-
class FlowsPersistenceFactoryPreset {
|
|
9
|
-
persistenceLayers;
|
|
10
|
-
constructor(persistenceLayers) {
|
|
11
|
-
this.persistenceLayers = persistenceLayers;
|
|
12
|
-
}
|
|
13
|
-
async createPersistenceLayer() {
|
|
14
|
-
const persistenceLayer = this.persistenceLayers[0];
|
|
15
|
-
if (!persistenceLayer) {
|
|
16
|
-
throw new Error('No persistence layer available');
|
|
17
|
-
}
|
|
18
|
-
return persistenceLayer;
|
|
19
|
-
}
|
|
20
|
-
async createPersistenceLayers() {
|
|
21
|
-
return this.persistenceLayers;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.FlowsPersistenceFactoryPreset = FlowsPersistenceFactoryPreset;
|
|
25
|
-
//# sourceMappingURL=FlowsPersistenceFactoryPreset.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceFactoryPreset.js","sourceRoot":"","sources":["../../src/managers/FlowsPersistenceFactoryPreset.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,6BAA6B;IACJ;IAApC,YAAoC,iBAAqC;QAArC,sBAAiB,GAAjB,iBAAiB,CAAoB;IAAG,CAAC;IAE7E,KAAK,CAAC,sBAAsB;QAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF;AAhBD,sEAgBC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { FlowMetadata } from '../models/FlowMetadata';
|
|
2
|
-
import { ToolCall } from '../models/ToolCall';
|
|
3
|
-
import { VideoSegment } from '../models/VideoSegment';
|
|
4
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
5
|
-
import { BrowserStorageState } from '../models/BrowserState';
|
|
6
|
-
/**
|
|
7
|
-
* A persistence implementation that uses the filesystem.
|
|
8
|
-
*/
|
|
9
|
-
export declare class FlowsPersistenceFilesystem implements FlowsPersistence {
|
|
10
|
-
private static readonly METADATA_FILENAME;
|
|
11
|
-
private static readonly BROWSER_STATE_FILENAME;
|
|
12
|
-
private static readonly SCREENSHOT_FILENAME_SUFFIX;
|
|
13
|
-
private static readonly TOOL_CALL_FILENAME_SUFFIX;
|
|
14
|
-
private static readonly VIDEO_FILENAME;
|
|
15
|
-
private readonly flowsDirectory;
|
|
16
|
-
constructor(baseFlowsDirectory: string);
|
|
17
|
-
saveMetadata(flowMetadata: FlowMetadata): Promise<void>;
|
|
18
|
-
getMetadataByFlowId(flowId: string): Promise<FlowMetadata>;
|
|
19
|
-
getMetadataByFlowName(flowName: string): Promise<FlowMetadata>;
|
|
20
|
-
savePngScreenShot(flowId: string, bytes: Buffer): Promise<string>;
|
|
21
|
-
saveToolCall(flowId: string, toolCall: ToolCall): Promise<void>;
|
|
22
|
-
getToolCalls(flowId: string): Promise<ToolCall[]>;
|
|
23
|
-
getFlows(): Promise<FlowMetadata[]>;
|
|
24
|
-
setVideo(flowId: string, bytes: Buffer): Promise<void>;
|
|
25
|
-
getVideoSegment(flowId: string, startOffset: number, length: number): Promise<VideoSegment | null>;
|
|
26
|
-
getFlowFile(flowId: string, fileId: string): Promise<Buffer | null>;
|
|
27
|
-
setFlowFile(flowId: string, fileId: string, fileBytes: Buffer): Promise<void>;
|
|
28
|
-
setBrowserState(flowId: string, browserState: BrowserStorageState): Promise<void>;
|
|
29
|
-
getBrowserState(flowId: string): Promise<BrowserStorageState | null>;
|
|
30
|
-
deleteFlow(flowId: string): Promise<void>;
|
|
31
|
-
private getFlowDirectory;
|
|
32
|
-
private getAllFlowDirectories;
|
|
33
|
-
}
|