donobu 2.30.1 → 2.31.1
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/GptConfigsApi.d.ts +0 -10
- package/dist/apis/GptConfigsApi.d.ts.map +1 -1
- package/dist/apis/GptConfigsApi.js +6 -11
- package/dist/apis/GptConfigsApi.js.map +1 -1
- package/dist/apis/SpecialFlowsApi.d.ts.map +1 -1
- package/dist/apis/SpecialFlowsApi.js +1 -6
- package/dist/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/assets/generated/version +1 -1
- package/dist/assets/page-interactions-tracker.js +0 -33
- package/dist/clients/AnthropicAwsBedrockGptClient.d.ts +12 -4
- package/dist/clients/AnthropicAwsBedrockGptClient.d.ts.map +1 -1
- package/dist/clients/AnthropicAwsBedrockGptClient.js +8 -8
- package/dist/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
- package/dist/clients/AnthropicGptClient.d.ts +12 -4
- package/dist/clients/AnthropicGptClient.d.ts.map +1 -1
- package/dist/clients/AnthropicGptClient.js +12 -10
- package/dist/clients/AnthropicGptClient.js.map +1 -1
- package/dist/{esm/clients/GoogleGptClient.d.ts → clients/GoogleGenerativeAiGptClient.d.ts} +16 -8
- package/dist/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -0
- package/dist/{esm/clients/GoogleGptClient.js → clients/GoogleGenerativeAiGptClient.js} +17 -17
- package/dist/clients/GoogleGenerativeAiGptClient.js.map +1 -0
- package/dist/clients/GoogleVertexGptClient.d.ts +32 -0
- package/dist/clients/GoogleVertexGptClient.d.ts.map +1 -0
- package/dist/clients/GoogleVertexGptClient.js +98 -0
- package/dist/clients/GoogleVertexGptClient.js.map +1 -0
- package/dist/clients/GptClient.d.ts +12 -4
- package/dist/clients/GptClient.d.ts.map +1 -1
- package/dist/clients/GptClient.js.map +1 -1
- package/dist/clients/GptClientFactory.d.ts.map +1 -1
- package/dist/clients/GptClientFactory.js +6 -2
- package/dist/clients/GptClientFactory.js.map +1 -1
- package/dist/clients/OpenAiGptClient.d.ts +14 -6
- package/dist/clients/OpenAiGptClient.d.ts.map +1 -1
- package/dist/clients/OpenAiGptClient.js +12 -10
- package/dist/clients/OpenAiGptClient.js.map +1 -1
- package/dist/clients/VercelAiGptClient.d.ts +14 -5
- package/dist/clients/VercelAiGptClient.d.ts.map +1 -1
- package/dist/clients/VercelAiGptClient.js +60 -42
- package/dist/clients/VercelAiGptClient.js.map +1 -1
- package/dist/envVars.d.ts +20 -0
- package/dist/envVars.d.ts.map +1 -1
- package/dist/envVars.js +20 -0
- package/dist/envVars.js.map +1 -1
- package/dist/esm/apis/GptConfigsApi.d.ts +0 -10
- package/dist/esm/apis/GptConfigsApi.d.ts.map +1 -1
- package/dist/esm/apis/GptConfigsApi.js +6 -11
- package/dist/esm/apis/GptConfigsApi.js.map +1 -1
- package/dist/esm/apis/SpecialFlowsApi.d.ts.map +1 -1
- package/dist/esm/apis/SpecialFlowsApi.js +1 -6
- package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/assets/page-interactions-tracker.js +0 -33
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.d.ts +12 -4
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.d.ts.map +1 -1
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.js +8 -8
- package/dist/esm/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
- package/dist/esm/clients/AnthropicGptClient.d.ts +12 -4
- package/dist/esm/clients/AnthropicGptClient.d.ts.map +1 -1
- package/dist/esm/clients/AnthropicGptClient.js +12 -10
- package/dist/esm/clients/AnthropicGptClient.js.map +1 -1
- package/dist/{clients/GoogleGptClient.d.ts → esm/clients/GoogleGenerativeAiGptClient.d.ts} +16 -8
- package/dist/esm/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -0
- package/dist/{clients/GoogleGptClient.js → esm/clients/GoogleGenerativeAiGptClient.js} +17 -17
- package/dist/esm/clients/GoogleGenerativeAiGptClient.js.map +1 -0
- package/dist/esm/clients/GoogleVertexGptClient.d.ts +32 -0
- package/dist/esm/clients/GoogleVertexGptClient.d.ts.map +1 -0
- package/dist/esm/clients/GoogleVertexGptClient.js +98 -0
- package/dist/esm/clients/GoogleVertexGptClient.js.map +1 -0
- package/dist/esm/clients/GptClient.d.ts +12 -4
- package/dist/esm/clients/GptClient.d.ts.map +1 -1
- package/dist/esm/clients/GptClient.js.map +1 -1
- package/dist/esm/clients/GptClientFactory.d.ts.map +1 -1
- package/dist/esm/clients/GptClientFactory.js +6 -2
- package/dist/esm/clients/GptClientFactory.js.map +1 -1
- package/dist/esm/clients/OpenAiGptClient.d.ts +14 -6
- package/dist/esm/clients/OpenAiGptClient.d.ts.map +1 -1
- package/dist/esm/clients/OpenAiGptClient.js +12 -10
- package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
- package/dist/esm/clients/VercelAiGptClient.d.ts +14 -5
- package/dist/esm/clients/VercelAiGptClient.d.ts.map +1 -1
- package/dist/esm/clients/VercelAiGptClient.js +60 -42
- package/dist/esm/clients/VercelAiGptClient.js.map +1 -1
- package/dist/esm/envVars.d.ts +20 -0
- package/dist/esm/envVars.d.ts.map +1 -1
- package/dist/esm/envVars.js +20 -0
- package/dist/esm/envVars.js.map +1 -1
- package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.d.ts +2 -1
- package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.d.ts.map +1 -1
- package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.js +3 -2
- package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.js.map +1 -1
- package/dist/esm/exceptions/UserInterruptException.d.ts +7 -0
- package/dist/esm/exceptions/UserInterruptException.d.ts.map +1 -0
- package/dist/esm/exceptions/UserInterruptException.js +12 -0
- package/dist/esm/exceptions/UserInterruptException.js.map +1 -0
- package/dist/esm/init.d.ts +9 -0
- package/dist/esm/init.d.ts.map +1 -0
- package/dist/esm/init.js +70 -0
- package/dist/esm/init.js.map +1 -0
- package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/esm/lib/fixtures/gptClients.js +18 -5
- package/dist/esm/lib/fixtures/gptClients.js.map +1 -1
- package/dist/esm/lib/testExtension.d.ts.map +1 -1
- package/dist/esm/lib/testExtension.js +9 -4
- package/dist/esm/lib/testExtension.js.map +1 -1
- package/dist/esm/lib/utils/donobuTestStack.d.ts.map +1 -1
- package/dist/esm/lib/utils/donobuTestStack.js +2 -1
- package/dist/esm/lib/utils/donobuTestStack.js.map +1 -1
- package/dist/esm/main.d.ts +4 -1
- package/dist/esm/main.d.ts.map +1 -1
- package/dist/esm/main.js +7 -52
- package/dist/esm/main.js.map +1 -1
- package/dist/esm/managers/AdminApiController.d.ts +8 -1
- package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
- package/dist/esm/managers/AdminApiController.js +10 -4
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/esm/managers/CodeGenerator.js +22 -11
- package/dist/esm/managers/CodeGenerator.js.map +1 -1
- package/dist/esm/managers/DonobuFlow.d.ts +11 -7
- package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlow.js +138 -155
- package/dist/esm/managers/DonobuFlow.js.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts +3 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +20 -3
- package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/esm/managers/DonobuStack.d.ts +2 -1
- package/dist/esm/managers/DonobuStack.d.ts.map +1 -1
- package/dist/esm/managers/DonobuStack.js +2 -2
- package/dist/esm/managers/DonobuStack.js.map +1 -1
- package/dist/esm/managers/PageInspector.d.ts.map +1 -1
- package/dist/esm/managers/PageInspector.js +3 -7
- package/dist/esm/managers/PageInspector.js.map +1 -1
- package/dist/esm/managers/ToolManager.d.ts.map +1 -1
- package/dist/esm/managers/ToolManager.js +4 -3
- package/dist/esm/managers/ToolManager.js.map +1 -1
- package/dist/esm/models/BrowserConfig.d.ts +277 -12
- package/dist/esm/models/BrowserConfig.d.ts.map +1 -1
- package/dist/esm/models/BrowserConfig.js +17 -4
- package/dist/esm/models/BrowserConfig.js.map +1 -1
- package/dist/esm/models/BrowserStateFlowReference.d.ts +165 -14
- package/dist/esm/models/BrowserStateFlowReference.d.ts.map +1 -1
- package/dist/esm/models/BrowserStateFlowReference.js +19 -0
- package/dist/esm/models/BrowserStateFlowReference.js.map +1 -1
- package/dist/esm/models/BrowserStorageState.d.ts +88 -10
- package/dist/esm/models/BrowserStorageState.d.ts.map +1 -1
- package/dist/esm/models/BrowserStorageState.js +38 -0
- package/dist/esm/models/BrowserStorageState.js.map +1 -1
- package/dist/esm/models/CodeGenerationOptions.d.ts +6 -0
- package/dist/esm/models/CodeGenerationOptions.d.ts.map +1 -1
- package/dist/esm/models/CodeGenerationOptions.js +9 -0
- package/dist/esm/models/CodeGenerationOptions.js.map +1 -1
- package/dist/esm/models/ControlPanel.d.ts +29 -0
- package/dist/esm/models/ControlPanel.d.ts.map +1 -0
- package/dist/esm/models/ControlPanel.js +16 -0
- package/dist/esm/models/ControlPanel.js.map +1 -0
- package/dist/esm/models/CreateDonobuFlow.d.ts +355 -13
- package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
- package/dist/esm/models/FlowMetadata.d.ts +355 -13
- package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
- package/dist/esm/models/GptConfig.d.ts +44 -6
- package/dist/esm/models/GptConfig.d.ts.map +1 -1
- package/dist/esm/models/GptConfig.js +17 -7
- package/dist/esm/models/GptConfig.js.map +1 -1
- package/dist/esm/models/ToolCallContext.d.ts +1 -1
- package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
- package/dist/esm/tools/AcknowledgeUserInstruction.d.ts +1 -1
- package/dist/esm/tools/AcknowledgeUserInstruction.d.ts.map +1 -1
- package/dist/esm/tools/AcknowledgeUserInstruction.js +2 -6
- package/dist/esm/tools/AcknowledgeUserInstruction.js.map +1 -1
- package/dist/esm/tools/AssertPageTool.d.ts +4 -4
- package/dist/esm/tools/ClickTool.js +1 -1
- package/dist/esm/tools/ClickTool.js.map +1 -1
- package/dist/esm/tools/ReplayableInteraction.d.ts +1 -1
- package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
- package/dist/esm/tools/ReplayableInteraction.js +1 -8
- package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
- package/dist/esm/tools/RunInlineJavaScriptCodeTool.js +8 -8
- package/dist/esm/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
- package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.d.ts.map +1 -1
- package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.js +8 -9
- package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.js.map +1 -1
- package/dist/esm/tools/TriggerDonobuFlowTool.d.ts +870 -34
- package/dist/esm/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
- package/dist/esm/utils/BrowserUtils.d.ts +118 -5
- package/dist/esm/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/esm/utils/BrowserUtils.js +171 -31
- package/dist/esm/utils/BrowserUtils.js.map +1 -1
- package/dist/esm/utils/JsonUtils.d.ts +94 -9
- package/dist/esm/utils/JsonUtils.d.ts.map +1 -1
- package/dist/esm/utils/JsonUtils.js +96 -77
- package/dist/esm/utils/JsonUtils.js.map +1 -1
- package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/esm/utils/PlaywrightUtils.js +0 -2
- package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
- package/dist/exceptions/GptPlatformAuthenticationFailedException.d.ts +2 -1
- package/dist/exceptions/GptPlatformAuthenticationFailedException.d.ts.map +1 -1
- package/dist/exceptions/GptPlatformAuthenticationFailedException.js +3 -2
- package/dist/exceptions/GptPlatformAuthenticationFailedException.js.map +1 -1
- package/dist/exceptions/UserInterruptException.d.ts +7 -0
- package/dist/exceptions/UserInterruptException.d.ts.map +1 -0
- package/dist/exceptions/UserInterruptException.js +12 -0
- package/dist/exceptions/UserInterruptException.js.map +1 -0
- package/dist/init.d.ts +9 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +70 -0
- package/dist/init.js.map +1 -0
- package/dist/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/lib/fixtures/gptClients.js +18 -5
- package/dist/lib/fixtures/gptClients.js.map +1 -1
- package/dist/lib/testExtension.d.ts.map +1 -1
- package/dist/lib/testExtension.js +9 -4
- package/dist/lib/testExtension.js.map +1 -1
- package/dist/lib/utils/donobuTestStack.d.ts.map +1 -1
- package/dist/lib/utils/donobuTestStack.js +2 -1
- package/dist/lib/utils/donobuTestStack.js.map +1 -1
- package/dist/main.d.ts +4 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -52
- package/dist/main.js.map +1 -1
- package/dist/managers/AdminApiController.d.ts +8 -1
- package/dist/managers/AdminApiController.d.ts.map +1 -1
- package/dist/managers/AdminApiController.js +10 -4
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/managers/CodeGenerator.js +22 -11
- package/dist/managers/CodeGenerator.js.map +1 -1
- package/dist/managers/DonobuFlow.d.ts +11 -7
- package/dist/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/managers/DonobuFlow.js +138 -155
- package/dist/managers/DonobuFlow.js.map +1 -1
- package/dist/managers/DonobuFlowsManager.d.ts +3 -1
- package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/managers/DonobuFlowsManager.js +20 -3
- package/dist/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/managers/DonobuStack.d.ts +2 -1
- package/dist/managers/DonobuStack.d.ts.map +1 -1
- package/dist/managers/DonobuStack.js +2 -2
- package/dist/managers/DonobuStack.js.map +1 -1
- package/dist/managers/PageInspector.d.ts.map +1 -1
- package/dist/managers/PageInspector.js +3 -7
- package/dist/managers/PageInspector.js.map +1 -1
- package/dist/managers/ToolManager.d.ts.map +1 -1
- package/dist/managers/ToolManager.js +4 -3
- package/dist/managers/ToolManager.js.map +1 -1
- package/dist/models/BrowserConfig.d.ts +277 -12
- package/dist/models/BrowserConfig.d.ts.map +1 -1
- package/dist/models/BrowserConfig.js +17 -4
- package/dist/models/BrowserConfig.js.map +1 -1
- package/dist/models/BrowserStateFlowReference.d.ts +165 -14
- package/dist/models/BrowserStateFlowReference.d.ts.map +1 -1
- package/dist/models/BrowserStateFlowReference.js +19 -0
- package/dist/models/BrowserStateFlowReference.js.map +1 -1
- package/dist/models/BrowserStorageState.d.ts +88 -10
- package/dist/models/BrowserStorageState.d.ts.map +1 -1
- package/dist/models/BrowserStorageState.js +38 -0
- package/dist/models/BrowserStorageState.js.map +1 -1
- package/dist/models/CodeGenerationOptions.d.ts +6 -0
- package/dist/models/CodeGenerationOptions.d.ts.map +1 -1
- package/dist/models/CodeGenerationOptions.js +9 -0
- package/dist/models/CodeGenerationOptions.js.map +1 -1
- package/dist/models/ControlPanel.d.ts +29 -0
- package/dist/models/ControlPanel.d.ts.map +1 -0
- package/dist/models/ControlPanel.js +16 -0
- package/dist/models/ControlPanel.js.map +1 -0
- package/dist/models/CreateDonobuFlow.d.ts +355 -13
- package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
- package/dist/models/FlowMetadata.d.ts +355 -13
- package/dist/models/FlowMetadata.d.ts.map +1 -1
- package/dist/models/GptConfig.d.ts +44 -6
- package/dist/models/GptConfig.d.ts.map +1 -1
- package/dist/models/GptConfig.js +17 -7
- package/dist/models/GptConfig.js.map +1 -1
- package/dist/models/ToolCallContext.d.ts +1 -1
- package/dist/models/ToolCallContext.d.ts.map +1 -1
- package/dist/tools/AcknowledgeUserInstruction.d.ts +1 -1
- package/dist/tools/AcknowledgeUserInstruction.d.ts.map +1 -1
- package/dist/tools/AcknowledgeUserInstruction.js +2 -6
- package/dist/tools/AcknowledgeUserInstruction.js.map +1 -1
- package/dist/tools/AssertPageTool.d.ts +4 -4
- package/dist/tools/ClickTool.js +1 -1
- package/dist/tools/ClickTool.js.map +1 -1
- package/dist/tools/ReplayableInteraction.d.ts +1 -1
- package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
- package/dist/tools/ReplayableInteraction.js +1 -8
- package/dist/tools/ReplayableInteraction.js.map +1 -1
- package/dist/tools/RunInlineJavaScriptCodeTool.js +8 -8
- package/dist/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
- package/dist/tools/RunSandboxedJavaScriptCodeTool.d.ts.map +1 -1
- package/dist/tools/RunSandboxedJavaScriptCodeTool.js +8 -9
- package/dist/tools/RunSandboxedJavaScriptCodeTool.js.map +1 -1
- package/dist/tools/TriggerDonobuFlowTool.d.ts +870 -34
- package/dist/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +118 -5
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +171 -31
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/JsonUtils.d.ts +94 -9
- package/dist/utils/JsonUtils.d.ts.map +1 -1
- package/dist/utils/JsonUtils.js +96 -77
- package/dist/utils/JsonUtils.js.map +1 -1
- package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/utils/PlaywrightUtils.js +0 -2
- package/dist/utils/PlaywrightUtils.js.map +1 -1
- package/package.json +9 -8
- package/dist/assets/control-panel.js +0 -646
- package/dist/clients/GoogleGptClient.d.ts.map +0 -1
- package/dist/clients/GoogleGptClient.js.map +0 -1
- package/dist/esm/assets/control-panel.js +0 -646
- package/dist/esm/clients/GoogleGptClient.d.ts.map +0 -1
- package/dist/esm/clients/GoogleGptClient.js.map +0 -1
- package/dist/esm/exceptions/UnparseableJsonBodyException.d.ts +0 -5
- package/dist/esm/exceptions/UnparseableJsonBodyException.d.ts.map +0 -1
- package/dist/esm/exceptions/UnparseableJsonBodyException.js +0 -11
- package/dist/esm/exceptions/UnparseableJsonBodyException.js.map +0 -1
- package/dist/esm/managers/ControlPanel.d.ts +0 -127
- package/dist/esm/managers/ControlPanel.d.ts.map +0 -1
- package/dist/esm/managers/ControlPanel.js +0 -291
- package/dist/esm/managers/ControlPanel.js.map +0 -1
- package/dist/esm/tools/GetEntityDataFromGoogleMapResult.d.ts +0 -31
- package/dist/esm/tools/GetEntityDataFromGoogleMapResult.d.ts.map +0 -1
- package/dist/esm/tools/GetEntityDataFromGoogleMapResult.js +0 -45
- package/dist/esm/tools/GetEntityDataFromGoogleMapResult.js.map +0 -1
- package/dist/exceptions/UnparseableJsonBodyException.d.ts +0 -5
- package/dist/exceptions/UnparseableJsonBodyException.d.ts.map +0 -1
- package/dist/exceptions/UnparseableJsonBodyException.js +0 -11
- package/dist/exceptions/UnparseableJsonBodyException.js.map +0 -1
- package/dist/managers/ControlPanel.d.ts +0 -127
- package/dist/managers/ControlPanel.d.ts.map +0 -1
- package/dist/managers/ControlPanel.js +0 -291
- package/dist/managers/ControlPanel.js.map +0 -1
- package/dist/tools/GetEntityDataFromGoogleMapResult.d.ts +0 -31
- package/dist/tools/GetEntityDataFromGoogleMapResult.d.ts.map +0 -1
- package/dist/tools/GetEntityDataFromGoogleMapResult.js +0 -45
- package/dist/tools/GetEntityDataFromGoogleMapResult.js.map +0 -1
|
@@ -1,646 +0,0 @@
|
|
|
1
|
-
// control-panel.js
|
|
2
|
-
|
|
3
|
-
(() => {
|
|
4
|
-
if (!window.__donobu) {
|
|
5
|
-
Object.defineProperty(window, '__donobu', {
|
|
6
|
-
value: {},
|
|
7
|
-
enumerable: false,
|
|
8
|
-
writable: true,
|
|
9
|
-
configurable: false,
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (!window.__donobu.userMessage) {
|
|
14
|
-
Object.defineProperty(window.__donobu, 'userMessage', {
|
|
15
|
-
value: null,
|
|
16
|
-
enumerable: false,
|
|
17
|
-
writable: true,
|
|
18
|
-
configurable: false,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (!window.__donobu.controlPanelRegistered) {
|
|
23
|
-
Object.defineProperty(window.__donobu, 'controlPanelRegistered', {
|
|
24
|
-
value: true,
|
|
25
|
-
enumerable: false,
|
|
26
|
-
writable: false,
|
|
27
|
-
configurable: false,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!window.__donobu.nextState) {
|
|
32
|
-
Object.defineProperty(window.__donobu, 'nextState', {
|
|
33
|
-
value: null,
|
|
34
|
-
enumerable: false,
|
|
35
|
-
writable: true,
|
|
36
|
-
configurable: false,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
let lastRenderedState = null;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Wait until document.body is available, then call `init()`.
|
|
44
|
-
*/
|
|
45
|
-
function waitForBody(init) {
|
|
46
|
-
if (document.body) {
|
|
47
|
-
init();
|
|
48
|
-
} else {
|
|
49
|
-
document.addEventListener('DOMContentLoaded', init, { once: true });
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Build an SVG icon via DOM APIs (to avoid TrustedHTML issues).
|
|
55
|
-
*/
|
|
56
|
-
function buildSvgIcon(opts) {
|
|
57
|
-
const ns = 'http://www.w3.org/2000/svg';
|
|
58
|
-
const svg = document.createElementNS(ns, 'svg');
|
|
59
|
-
for (const [attr, val] of Object.entries(opts.svgAttrs || {})) {
|
|
60
|
-
svg.setAttribute(attr, val);
|
|
61
|
-
}
|
|
62
|
-
// Add child elements (circle, polygon, line, etc.)
|
|
63
|
-
for (const childSpec of opts.children || []) {
|
|
64
|
-
const child = document.createElementNS(ns, childSpec.tag);
|
|
65
|
-
for (const [attr, val] of Object.entries(childSpec.attrs || {})) {
|
|
66
|
-
child.setAttribute(attr, val);
|
|
67
|
-
}
|
|
68
|
-
svg.appendChild(child);
|
|
69
|
-
}
|
|
70
|
-
return svg;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Main setup logic for the control panel.
|
|
75
|
-
*/
|
|
76
|
-
function createControlPanel() {
|
|
77
|
-
// Only create if not already in DOM.
|
|
78
|
-
const existingHost = document.getElementById('donobu-control-panel');
|
|
79
|
-
if (existingHost) return existingHost;
|
|
80
|
-
|
|
81
|
-
// Host element
|
|
82
|
-
const hostEl = document.createElement('div');
|
|
83
|
-
hostEl.id = 'donobu-control-panel';
|
|
84
|
-
|
|
85
|
-
document.body.appendChild(hostEl);
|
|
86
|
-
|
|
87
|
-
// Shadow root
|
|
88
|
-
const shadow = hostEl.attachShadow({ mode: 'open' });
|
|
89
|
-
|
|
90
|
-
// Global styles
|
|
91
|
-
const styleEl = document.createElement('style');
|
|
92
|
-
styleEl.textContent = `
|
|
93
|
-
:host {
|
|
94
|
-
all: initial;
|
|
95
|
-
position: fixed;
|
|
96
|
-
top: 150px;
|
|
97
|
-
right: 20px;
|
|
98
|
-
z-index: 2147483647;
|
|
99
|
-
width: 300px;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
#panel-content,
|
|
103
|
-
#panel-content * {
|
|
104
|
-
box-sizing: border-box;
|
|
105
|
-
margin: 0;
|
|
106
|
-
padding: 0;
|
|
107
|
-
font-family: Helvetica, Arial, sans-serif;
|
|
108
|
-
font-size: 14px;
|
|
109
|
-
color: #fff !important;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
#donobu-control-panel-title-text {
|
|
113
|
-
font-weight: 600 !important;
|
|
114
|
-
margin-left: 10px;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
#panel-content input[type="text"] {
|
|
118
|
-
border: 1px solid #ddd !important;
|
|
119
|
-
background-color: #fff !important;
|
|
120
|
-
color: #000 !important;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
#donobu-play-icon,
|
|
124
|
-
#donobu-pause-icon,
|
|
125
|
-
#donobu-end-icon {
|
|
126
|
-
fill: none !important;
|
|
127
|
-
stroke: currentColor !important;
|
|
128
|
-
stroke-width: 2 !important;
|
|
129
|
-
stroke-linecap: round !important;
|
|
130
|
-
stroke-linejoin: round !important;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
#panel-content {
|
|
134
|
-
background-color: rgba(6,8,7,0.9);
|
|
135
|
-
border: 3px solid rgba(251,188,5, 0.9);
|
|
136
|
-
border-radius: 8px;
|
|
137
|
-
box-shadow: 0 4px 8px rgba(0,0,0,0.8);
|
|
138
|
-
cursor: move;
|
|
139
|
-
width: 100%;
|
|
140
|
-
overflow: hidden;
|
|
141
|
-
/* Add smooth transition for height changes */
|
|
142
|
-
transition: all 0.3s ease-in-out;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.donobu-hidden {
|
|
146
|
-
opacity: 0 !important;
|
|
147
|
-
pointer-events: none !important;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* Enhanced expandable content with smooth animations */
|
|
151
|
-
#donobu-control-panel-expandable-content {
|
|
152
|
-
padding: 0 15px; /* Remove top/bottom padding initially */
|
|
153
|
-
max-height: 0;
|
|
154
|
-
overflow: hidden;
|
|
155
|
-
opacity: 0;
|
|
156
|
-
/* Smooth transitions for max-height, opacity, and padding */
|
|
157
|
-
transition: max-height 0.3s ease-in-out,
|
|
158
|
-
opacity 0.3s ease-in-out,
|
|
159
|
-
padding 0.3s ease-in-out;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/* When expanded */
|
|
163
|
-
#donobu-control-panel-expandable-content.expanded {
|
|
164
|
-
max-height: 300px; /* Adjust based on your content */
|
|
165
|
-
opacity: 1;
|
|
166
|
-
padding: 15px; /* Full padding when expanded */
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
.navbar {
|
|
170
|
-
display: flex;
|
|
171
|
-
align-items: center;
|
|
172
|
-
justify-content: space-between;
|
|
173
|
-
padding: 15px;
|
|
174
|
-
font-weight: 600;
|
|
175
|
-
background-color: rgba(6,8,7,0.9);
|
|
176
|
-
border-bottom: 1px solid rgba(251,188,5, 0.5);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.icon-btn {
|
|
180
|
-
margin-right: 8px;
|
|
181
|
-
display: flex;
|
|
182
|
-
cursor: pointer;
|
|
183
|
-
opacity: 0.5;
|
|
184
|
-
transition: opacity 0.2s ease-in-out;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
#panel-content textarea {
|
|
188
|
-
border: 1px solid #ddd !important;
|
|
189
|
-
background-color: #fff !important;
|
|
190
|
-
color: #000 !important;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
#panel-content textarea::placeholder {
|
|
194
|
-
color: #666 !important;
|
|
195
|
-
opacity: 1 !important;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.icon-container {
|
|
199
|
-
display: flex;
|
|
200
|
-
align-items: center;
|
|
201
|
-
margin-right: 5px;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/* Smooth transition for user message section */
|
|
205
|
-
#donobu-user-message-section {
|
|
206
|
-
margin-bottom: 10px;
|
|
207
|
-
opacity: 0;
|
|
208
|
-
transform: translateY(-10px);
|
|
209
|
-
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
#donobu-user-message-section.visible {
|
|
213
|
-
opacity: 1;
|
|
214
|
-
transform: translateY(0);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/* Enhanced textarea with smooth focus transitions */
|
|
218
|
-
#donobu-user-message-input {
|
|
219
|
-
transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
#donobu-user-message-input:focus {
|
|
223
|
-
border-color: rgba(251,188,5, 0.8) !important;
|
|
224
|
-
box-shadow: 0 0 0 2px rgba(251,188,5, 0.2) !important;
|
|
225
|
-
outline: none !important;
|
|
226
|
-
}
|
|
227
|
-
`;
|
|
228
|
-
|
|
229
|
-
shadow.appendChild(styleEl);
|
|
230
|
-
|
|
231
|
-
// Main panel container
|
|
232
|
-
const panelContent = document.createElement('div');
|
|
233
|
-
panelContent.id = 'panel-content';
|
|
234
|
-
|
|
235
|
-
// Navbar
|
|
236
|
-
const navbar = document.createElement('div');
|
|
237
|
-
navbar.className = 'navbar';
|
|
238
|
-
|
|
239
|
-
// Title container
|
|
240
|
-
const titleContainer = document.createElement('div');
|
|
241
|
-
Object.assign(titleContainer.style, {
|
|
242
|
-
display: 'flex',
|
|
243
|
-
alignItems: 'center',
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
// Icon container
|
|
247
|
-
const iconContainer = document.createElement('div');
|
|
248
|
-
iconContainer.className = 'icon-container';
|
|
249
|
-
|
|
250
|
-
// Build the actual SVG DOM nodes:
|
|
251
|
-
const playIcon = buildSvgIcon({
|
|
252
|
-
svgAttrs: {
|
|
253
|
-
id: 'donobu-play-icon',
|
|
254
|
-
width: '24',
|
|
255
|
-
height: '24',
|
|
256
|
-
viewBox: '0 0 24 24',
|
|
257
|
-
},
|
|
258
|
-
children: [
|
|
259
|
-
{ tag: 'circle', attrs: { cx: '12', cy: '12', r: '10' } },
|
|
260
|
-
{ tag: 'polygon', attrs: { points: '10 8 16 12 10 16 10 8' } },
|
|
261
|
-
],
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
const pauseIcon = buildSvgIcon({
|
|
265
|
-
svgAttrs: {
|
|
266
|
-
id: 'donobu-pause-icon',
|
|
267
|
-
width: '24',
|
|
268
|
-
height: '24',
|
|
269
|
-
viewBox: '0 0 24 24',
|
|
270
|
-
},
|
|
271
|
-
children: [
|
|
272
|
-
{ tag: 'circle', attrs: { cx: '12', cy: '12', r: '10' } },
|
|
273
|
-
{ tag: 'line', attrs: { x1: '10', y1: '15', x2: '10', y2: '9' } },
|
|
274
|
-
{ tag: 'line', attrs: { x1: '14', y1: '15', x2: '14', y2: '9' } },
|
|
275
|
-
],
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
const endIcon = buildSvgIcon({
|
|
279
|
-
svgAttrs: {
|
|
280
|
-
id: 'donobu-end-icon',
|
|
281
|
-
width: '24',
|
|
282
|
-
height: '24',
|
|
283
|
-
viewBox: '0 0 24 24',
|
|
284
|
-
},
|
|
285
|
-
children: [
|
|
286
|
-
{ tag: 'circle', attrs: { cx: '12', cy: '12', r: '10' } },
|
|
287
|
-
{ tag: 'rect', attrs: { x: '9', y: '9', width: '6', height: '6' } },
|
|
288
|
-
],
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
// Helper to create an icon button
|
|
292
|
-
function createIconBtn(id, svgEl) {
|
|
293
|
-
const btn = document.createElement('span');
|
|
294
|
-
btn.id = id;
|
|
295
|
-
btn.className = 'icon-btn';
|
|
296
|
-
btn.appendChild(svgEl);
|
|
297
|
-
return btn;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// Create the 3 icon buttons
|
|
301
|
-
const playButton = createIconBtn('donobu-play', playIcon);
|
|
302
|
-
const pauseButton = createIconBtn('donobu-pause', pauseIcon);
|
|
303
|
-
const endButton = createIconBtn('donobu-end', endIcon);
|
|
304
|
-
|
|
305
|
-
iconContainer.appendChild(playButton);
|
|
306
|
-
iconContainer.appendChild(pauseButton);
|
|
307
|
-
iconContainer.appendChild(endButton);
|
|
308
|
-
|
|
309
|
-
// Title text
|
|
310
|
-
const titleText = document.createElement('span');
|
|
311
|
-
titleText.id = 'donobu-control-panel-title-text';
|
|
312
|
-
titleText.textContent = 'Loading...';
|
|
313
|
-
|
|
314
|
-
// Assemble navbar
|
|
315
|
-
titleContainer.appendChild(iconContainer);
|
|
316
|
-
titleContainer.appendChild(titleText);
|
|
317
|
-
navbar.appendChild(titleContainer);
|
|
318
|
-
|
|
319
|
-
// Expandable content
|
|
320
|
-
const expandableContent = document.createElement('div');
|
|
321
|
-
expandableContent.id = 'donobu-control-panel-expandable-content';
|
|
322
|
-
|
|
323
|
-
// User message input section (initially hidden)
|
|
324
|
-
const userMessageSection = document.createElement('div');
|
|
325
|
-
userMessageSection.id = 'donobu-user-message-section';
|
|
326
|
-
userMessageSection.style.display = 'none';
|
|
327
|
-
userMessageSection.style.marginBottom = '10px';
|
|
328
|
-
|
|
329
|
-
const userMessageInput = document.createElement('textarea');
|
|
330
|
-
userMessageInput.id = 'donobu-user-message-input';
|
|
331
|
-
userMessageInput.placeholder =
|
|
332
|
-
'Additional instructions...\n(Press Enter or Resume to submit)';
|
|
333
|
-
userMessageInput.style.width = '100%';
|
|
334
|
-
userMessageInput.style.height = '60px';
|
|
335
|
-
userMessageInput.style.padding = '8px';
|
|
336
|
-
userMessageInput.style.border = '1px solid #ddd';
|
|
337
|
-
userMessageInput.style.borderRadius = '4px';
|
|
338
|
-
userMessageInput.style.resize = 'vertical';
|
|
339
|
-
userMessageInput.style.fontFamily = 'inherit';
|
|
340
|
-
userMessageInput.style.fontSize = '12px';
|
|
341
|
-
|
|
342
|
-
userMessageSection.appendChild(userMessageInput);
|
|
343
|
-
expandableContent.appendChild(userMessageSection);
|
|
344
|
-
|
|
345
|
-
// Attach everything
|
|
346
|
-
panelContent.appendChild(navbar);
|
|
347
|
-
panelContent.appendChild(expandableContent);
|
|
348
|
-
shadow.appendChild(panelContent);
|
|
349
|
-
|
|
350
|
-
// Track panel flow state for the UI
|
|
351
|
-
hostEl.donobuFlowState = hostEl.donobuFlowState || 'LOADING';
|
|
352
|
-
|
|
353
|
-
// We also track "transitioning" states internally
|
|
354
|
-
let isTransitioningToPause = false;
|
|
355
|
-
let isTransitioningToEnd = false;
|
|
356
|
-
|
|
357
|
-
function setButtonState(btn, active) {
|
|
358
|
-
btn.style.opacity = active ? '1' : '0.5';
|
|
359
|
-
btn.style.cursor = active ? 'pointer' : 'default';
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
// Helper function to handle resume logic (shared by play button and Enter key)
|
|
363
|
-
function handleResume() {
|
|
364
|
-
if (hostEl.donobuFlowState === 'PAUSED' && !isTransitioningToEnd) {
|
|
365
|
-
// Capture the user message if present
|
|
366
|
-
const userMessageInput = shadow.getElementById(
|
|
367
|
-
'donobu-user-message-input',
|
|
368
|
-
);
|
|
369
|
-
const userMessage = userMessageInput
|
|
370
|
-
? userMessageInput.value.trim()
|
|
371
|
-
: '';
|
|
372
|
-
hostEl.donobuFlowState = 'RESUMING';
|
|
373
|
-
isTransitioningToPause = false;
|
|
374
|
-
titleText.textContent = 'Resuming...';
|
|
375
|
-
window.__donobu.nextState = 'RESUMING';
|
|
376
|
-
window.__donobu.userMessage = userMessage || null;
|
|
377
|
-
// Clear the input after capturing
|
|
378
|
-
if (userMessageInput) {
|
|
379
|
-
userMessageInput.value = '';
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
updateButtonStates();
|
|
383
|
-
return true; // Indicate that resume was handled
|
|
384
|
-
}
|
|
385
|
-
return false; // Indicate that resume was not applicable
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
function updateButtonStates() {
|
|
389
|
-
if (!document.contains(hostEl)) {
|
|
390
|
-
document.body.appendChild(hostEl);
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
const currentState = hostEl.donobuFlowState;
|
|
394
|
-
|
|
395
|
-
if (currentState === lastRenderedState) {
|
|
396
|
-
// Nothing has changed, so don't do anything
|
|
397
|
-
return;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
const runMode = hostEl.donobuRunMode || 'AUTONOMOUS';
|
|
401
|
-
const userMessageSection = shadow.getElementById(
|
|
402
|
-
'donobu-user-message-section',
|
|
403
|
-
);
|
|
404
|
-
|
|
405
|
-
// Show user input if:
|
|
406
|
-
// 1. Currently paused and in autonomous mode, OR
|
|
407
|
-
// 2. Transitioning to pause (eager expansion)
|
|
408
|
-
const shouldShowUserInput =
|
|
409
|
-
(currentState === 'PAUSED' && runMode === 'AUTONOMOUS') ||
|
|
410
|
-
(isTransitioningToPause && runMode === 'AUTONOMOUS');
|
|
411
|
-
|
|
412
|
-
if (userMessageSection) {
|
|
413
|
-
// Smooth show/hide user input section
|
|
414
|
-
if (shouldShowUserInput) {
|
|
415
|
-
// Show and expand the panel
|
|
416
|
-
expandableContent.classList.add('expanded');
|
|
417
|
-
// Small delay to ensure the expandable content animation starts first
|
|
418
|
-
setTimeout(() => {
|
|
419
|
-
userMessageSection.style.display = 'block';
|
|
420
|
-
// Trigger reflow, then add visible class for smooth transition
|
|
421
|
-
userMessageSection.offsetHeight;
|
|
422
|
-
userMessageSection.classList.add('visible');
|
|
423
|
-
// Auto-focus the textarea when it becomes visible and we're actually paused
|
|
424
|
-
// (not just transitioning)
|
|
425
|
-
if (currentState === 'PAUSED') {
|
|
426
|
-
const textarea = shadow.getElementById(
|
|
427
|
-
'donobu-user-message-input',
|
|
428
|
-
);
|
|
429
|
-
if (textarea) {
|
|
430
|
-
textarea.focus();
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}, 100);
|
|
434
|
-
} else {
|
|
435
|
-
// Hide user input section first
|
|
436
|
-
userMessageSection.classList.remove('visible');
|
|
437
|
-
|
|
438
|
-
// After the user section animation, collapse the panel
|
|
439
|
-
setTimeout(() => {
|
|
440
|
-
userMessageSection.style.display = 'none';
|
|
441
|
-
expandableContent.classList.remove('expanded');
|
|
442
|
-
}, 300); // Match the CSS transition duration
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
// This block handles the visual state while waiting for the backend.
|
|
447
|
-
// We check if the final state has arrived. If it has NOT, we show the
|
|
448
|
-
// "transitioning" UI and then `return` to wait for the next update.
|
|
449
|
-
if (isTransitioningToEnd) {
|
|
450
|
-
if (currentState !== 'SUCCESS') {
|
|
451
|
-
// The title text is set by the event listener. We just manage buttons.
|
|
452
|
-
setButtonState(playButton, false);
|
|
453
|
-
setButtonState(pauseButton, false);
|
|
454
|
-
setButtonState(endButton, false);
|
|
455
|
-
return; // Wait for the 'SUCCESS' state to arrive from the backend.
|
|
456
|
-
}
|
|
457
|
-
// If we're here, it means currentState IS 'SUCCESS', so we let the switch handle it.
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
if (isTransitioningToPause) {
|
|
461
|
-
if (currentState !== 'PAUSED') {
|
|
462
|
-
// The title text is set by the event listener.
|
|
463
|
-
setButtonState(playButton, false);
|
|
464
|
-
setButtonState(pauseButton, false);
|
|
465
|
-
setButtonState(endButton, true);
|
|
466
|
-
return; // Wait for the 'PAUSED' state to arrive from the backend.
|
|
467
|
-
}
|
|
468
|
-
// If we're here, it means currentState IS 'PAUSED', so we let the switch handle it.
|
|
469
|
-
}
|
|
470
|
-
// If not transitioning (or if the final transition state has arrived),
|
|
471
|
-
// this switch becomes the ultimate source of truth for the UI.
|
|
472
|
-
switch (currentState) {
|
|
473
|
-
case 'PAUSED':
|
|
474
|
-
titleText.textContent = 'Paused';
|
|
475
|
-
setButtonState(playButton, true);
|
|
476
|
-
setButtonState(pauseButton, false);
|
|
477
|
-
setButtonState(endButton, true);
|
|
478
|
-
isTransitioningToPause = false; // Reset the latch!
|
|
479
|
-
break;
|
|
480
|
-
|
|
481
|
-
case 'SUCCESS':
|
|
482
|
-
titleText.textContent = 'Success!';
|
|
483
|
-
setButtonState(playButton, false);
|
|
484
|
-
setButtonState(pauseButton, false);
|
|
485
|
-
setButtonState(endButton, false);
|
|
486
|
-
isTransitioningToEnd = false; // Reset the latch!
|
|
487
|
-
break;
|
|
488
|
-
|
|
489
|
-
case 'QUERYING_LLM_FOR_NEXT_ACTION':
|
|
490
|
-
titleText.textContent = 'Thinking...';
|
|
491
|
-
setButtonState(playButton, false);
|
|
492
|
-
setButtonState(pauseButton, true);
|
|
493
|
-
setButtonState(endButton, true);
|
|
494
|
-
break;
|
|
495
|
-
|
|
496
|
-
case 'WAITING_ON_USER_FOR_NEXT_ACTION':
|
|
497
|
-
titleText.textContent = 'Waiting on user...';
|
|
498
|
-
setButtonState(playButton, false);
|
|
499
|
-
setButtonState(pauseButton, false);
|
|
500
|
-
setButtonState(endButton, true);
|
|
501
|
-
break;
|
|
502
|
-
|
|
503
|
-
case 'RUNNING_ACTION':
|
|
504
|
-
// The backend sets the title, we manage buttons.
|
|
505
|
-
setButtonState(playButton, false);
|
|
506
|
-
setButtonState(pauseButton, true);
|
|
507
|
-
setButtonState(endButton, true);
|
|
508
|
-
break;
|
|
509
|
-
|
|
510
|
-
case 'LOADING':
|
|
511
|
-
titleText.textContent = 'Loading...';
|
|
512
|
-
setButtonState(playButton, false);
|
|
513
|
-
setButtonState(pauseButton, true);
|
|
514
|
-
setButtonState(endButton, true);
|
|
515
|
-
break;
|
|
516
|
-
|
|
517
|
-
default:
|
|
518
|
-
// "Running" or any other custom state from backend
|
|
519
|
-
titleText.textContent = currentState;
|
|
520
|
-
setButtonState(playButton, false);
|
|
521
|
-
setButtonState(pauseButton, true);
|
|
522
|
-
setButtonState(endButton, true);
|
|
523
|
-
break;
|
|
524
|
-
}
|
|
525
|
-
lastRenderedState = currentState;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
const stateInterval = setInterval(updateButtonStates, 500);
|
|
529
|
-
|
|
530
|
-
// --- Button event listeners ---
|
|
531
|
-
|
|
532
|
-
playButton.addEventListener('click', () => {
|
|
533
|
-
handleResume();
|
|
534
|
-
});
|
|
535
|
-
|
|
536
|
-
// PAUSE button: signals user wants to pause
|
|
537
|
-
pauseButton.addEventListener('click', () => {
|
|
538
|
-
// Check if the pause button is currently active
|
|
539
|
-
const isPauseActive = pauseButton.style.opacity === '1';
|
|
540
|
-
if (isPauseActive && !isTransitioningToPause && !isTransitioningToEnd) {
|
|
541
|
-
isTransitioningToPause = true;
|
|
542
|
-
// Provide immediate, informative feedback to the user.
|
|
543
|
-
titleText.textContent = `Pausing...`;
|
|
544
|
-
// Expose next state so external script can pick it up
|
|
545
|
-
window.__donobu.nextState = 'PAUSED';
|
|
546
|
-
// Manually update button states for immediate feedback
|
|
547
|
-
updateButtonStates();
|
|
548
|
-
}
|
|
549
|
-
});
|
|
550
|
-
|
|
551
|
-
// END button: signals user wants to stop / end the flow
|
|
552
|
-
endButton.addEventListener('click', () => {
|
|
553
|
-
const isEndActive = endButton.style.opacity === '1';
|
|
554
|
-
if (isEndActive && !isTransitioningToEnd) {
|
|
555
|
-
isTransitioningToEnd = true;
|
|
556
|
-
titleText.textContent = `Quitting...`;
|
|
557
|
-
// Expose next state
|
|
558
|
-
window.__donobu.nextState = 'SUCCESS';
|
|
559
|
-
// Manually update button states for immediate feedback
|
|
560
|
-
updateButtonStates();
|
|
561
|
-
}
|
|
562
|
-
});
|
|
563
|
-
|
|
564
|
-
// Add Enter key listener to the textarea
|
|
565
|
-
userMessageInput.addEventListener('keydown', (e) => {
|
|
566
|
-
// Handle Enter key (but not Shift+Enter, which should create new lines)
|
|
567
|
-
if (e.key === 'Enter' && !e.shiftKey) {
|
|
568
|
-
e.preventDefault(); // Prevent default textarea behavior
|
|
569
|
-
|
|
570
|
-
// Only trigger resume if we're in a paused state
|
|
571
|
-
if (handleResume()) {
|
|
572
|
-
// Resume was successful, the handleResume function took care of everything
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
});
|
|
576
|
-
|
|
577
|
-
// --- Drag-and-drop logic ---
|
|
578
|
-
let isDragging = false;
|
|
579
|
-
let offsetX = 0;
|
|
580
|
-
let offsetY = 0;
|
|
581
|
-
|
|
582
|
-
function onDocumentMouseMove(e) {
|
|
583
|
-
if (isDragging) {
|
|
584
|
-
hostEl.style.left = `${e.clientX - offsetX}px`;
|
|
585
|
-
hostEl.style.top = `${e.clientY - offsetY}px`;
|
|
586
|
-
hostEl.style.right = 'auto';
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
function onDocumentMouseUp() {
|
|
591
|
-
isDragging = false;
|
|
592
|
-
panelContent.style.cursor = 'move';
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
// Start dragging if user clicks navbar area
|
|
596
|
-
shadow.addEventListener('mousedown', (e) => {
|
|
597
|
-
const target = e.target;
|
|
598
|
-
const isNavbar =
|
|
599
|
-
target.classList?.contains('navbar') ||
|
|
600
|
-
target.id === 'donobu-control-panel-title-text' ||
|
|
601
|
-
target.parentElement?.classList?.contains('navbar');
|
|
602
|
-
|
|
603
|
-
if (isNavbar) {
|
|
604
|
-
const rect = hostEl.getBoundingClientRect();
|
|
605
|
-
offsetX = e.clientX - rect.left;
|
|
606
|
-
offsetY = e.clientY - rect.top;
|
|
607
|
-
isDragging = true;
|
|
608
|
-
panelContent.style.cursor = 'grabbing';
|
|
609
|
-
e.preventDefault();
|
|
610
|
-
}
|
|
611
|
-
});
|
|
612
|
-
|
|
613
|
-
document.addEventListener('mousemove', onDocumentMouseMove);
|
|
614
|
-
document.addEventListener('mouseup', onDocumentMouseUp);
|
|
615
|
-
|
|
616
|
-
// Watch for attempts to remove the panel
|
|
617
|
-
const observer = new MutationObserver(() => {
|
|
618
|
-
if (!document.contains(hostEl)) {
|
|
619
|
-
document.body.appendChild(hostEl);
|
|
620
|
-
}
|
|
621
|
-
});
|
|
622
|
-
observer.observe(document.documentElement, {
|
|
623
|
-
childList: true,
|
|
624
|
-
subtree: true,
|
|
625
|
-
});
|
|
626
|
-
|
|
627
|
-
// Clean up on page unload
|
|
628
|
-
window.addEventListener('unload', () => {
|
|
629
|
-
clearInterval(stateInterval);
|
|
630
|
-
document.removeEventListener('mousemove', onDocumentMouseMove);
|
|
631
|
-
document.removeEventListener('mouseup', onDocumentMouseUp);
|
|
632
|
-
observer.disconnect();
|
|
633
|
-
});
|
|
634
|
-
|
|
635
|
-
return hostEl;
|
|
636
|
-
}
|
|
637
|
-
|
|
638
|
-
// Ensure body is ready before creation
|
|
639
|
-
waitForBody(() => {
|
|
640
|
-
try {
|
|
641
|
-
createControlPanel();
|
|
642
|
-
} catch (err) {
|
|
643
|
-
console.error('Control panel initialization error:', err);
|
|
644
|
-
}
|
|
645
|
-
});
|
|
646
|
-
})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleGptClient.d.ts","sourceRoot":"","sources":["../../../src/clients/GoogleGptClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAElB,MAAM,EAAE,kBAAkB;IAShC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM7D,mBAAmB,CAC9B,QAAQ,EAAE,UAAU,EAAE,EACtB,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAC3B,OAAO,CAAC,uBAAuB,CAAC;IAYtB,YAAY,CACvB,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC,wBAAwB,CAAC;IAmBpC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAqC/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleGptClient.js","sourceRoot":"","sources":["../../../src/clients/GoogleGptClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UnparseableJsonBodyException.d.ts","sourceRoot":"","sources":["../../../src/exceptions/UnparseableJsonBodyException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,4BAA6B,SAAQ,eAAe;;CAIhE"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnparseableJsonBodyException = void 0;
|
|
4
|
-
const DonobuException_1 = require("./DonobuException");
|
|
5
|
-
class UnparseableJsonBodyException extends DonobuException_1.DonobuException {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(`The body for this request is not parseable to the expected JSON`);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.UnparseableJsonBodyException = UnparseableJsonBodyException;
|
|
11
|
-
//# sourceMappingURL=UnparseableJsonBodyException.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UnparseableJsonBodyException.js","sourceRoot":"","sources":["../../../src/exceptions/UnparseableJsonBodyException.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD,MAAa,4BAA6B,SAAQ,iCAAe;IAC/D;QACE,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAC3E,CAAC;CACF;AAJD,oEAIC"}
|