donobu 2.30.0 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/apis/GptConfigsApi.d.ts +0 -10
  2. package/dist/apis/GptConfigsApi.d.ts.map +1 -1
  3. package/dist/apis/GptConfigsApi.js +6 -11
  4. package/dist/apis/GptConfigsApi.js.map +1 -1
  5. package/dist/assets/generated/version +1 -1
  6. package/dist/cli/install-donobu-plugin.d.ts +6 -0
  7. package/dist/cli/install-donobu-plugin.d.ts.map +1 -0
  8. package/dist/cli/install-donobu-plugin.js +125 -0
  9. package/dist/cli/install-donobu-plugin.js.map +1 -0
  10. package/dist/cli/playwright-json-to-markdown.d.ts +43 -0
  11. package/dist/cli/playwright-json-to-markdown.d.ts.map +1 -0
  12. package/dist/cli/playwright-json-to-markdown.js +239 -0
  13. package/dist/cli/playwright-json-to-markdown.js.map +1 -0
  14. package/dist/cli/playwright-json-to-slack-json.d.ts +3 -0
  15. package/dist/cli/playwright-json-to-slack-json.d.ts.map +1 -0
  16. package/dist/cli/playwright-json-to-slack-json.js +207 -0
  17. package/dist/cli/playwright-json-to-slack-json.js.map +1 -0
  18. package/dist/{esm/clients/GoogleGptClient.d.ts → clients/GoogleGenerativeAiGptClient.d.ts} +4 -4
  19. package/dist/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -0
  20. package/dist/clients/{GoogleGptClient.js → GoogleGenerativeAiGptClient.js} +9 -9
  21. package/dist/clients/GoogleGenerativeAiGptClient.js.map +1 -0
  22. package/dist/clients/GoogleVertexGptClient.d.ts +24 -0
  23. package/dist/clients/GoogleVertexGptClient.d.ts.map +1 -0
  24. package/dist/clients/GoogleVertexGptClient.js +98 -0
  25. package/dist/clients/GoogleVertexGptClient.js.map +1 -0
  26. package/dist/clients/GptClientFactory.d.ts.map +1 -1
  27. package/dist/clients/GptClientFactory.js +6 -2
  28. package/dist/clients/GptClientFactory.js.map +1 -1
  29. package/dist/clients/OpenAiGptClient.d.ts +2 -2
  30. package/dist/clients/OpenAiGptClient.d.ts.map +1 -1
  31. package/dist/clients/OpenAiGptClient.js.map +1 -1
  32. package/dist/clients/VercelAiGptClient.d.ts.map +1 -1
  33. package/dist/clients/VercelAiGptClient.js +6 -5
  34. package/dist/clients/VercelAiGptClient.js.map +1 -1
  35. package/dist/envVars.d.ts +20 -0
  36. package/dist/envVars.d.ts.map +1 -1
  37. package/dist/envVars.js +20 -0
  38. package/dist/envVars.js.map +1 -1
  39. package/dist/esm/apis/GptConfigsApi.d.ts +0 -10
  40. package/dist/esm/apis/GptConfigsApi.d.ts.map +1 -1
  41. package/dist/esm/apis/GptConfigsApi.js +6 -11
  42. package/dist/esm/apis/GptConfigsApi.js.map +1 -1
  43. package/dist/esm/assets/generated/version +1 -1
  44. package/dist/esm/cli/install-donobu-plugin.d.ts +6 -0
  45. package/dist/esm/cli/install-donobu-plugin.d.ts.map +1 -0
  46. package/dist/esm/cli/install-donobu-plugin.js +125 -0
  47. package/dist/esm/cli/install-donobu-plugin.js.map +1 -0
  48. package/dist/esm/cli/playwright-json-to-markdown.d.ts +43 -0
  49. package/dist/esm/cli/playwright-json-to-markdown.d.ts.map +1 -0
  50. package/dist/esm/cli/playwright-json-to-markdown.js +239 -0
  51. package/dist/esm/cli/playwright-json-to-markdown.js.map +1 -0
  52. package/dist/esm/cli/playwright-json-to-slack-json.d.ts +3 -0
  53. package/dist/esm/cli/playwright-json-to-slack-json.d.ts.map +1 -0
  54. package/dist/esm/cli/playwright-json-to-slack-json.js +207 -0
  55. package/dist/esm/cli/playwright-json-to-slack-json.js.map +1 -0
  56. package/dist/{clients/GoogleGptClient.d.ts → esm/clients/GoogleGenerativeAiGptClient.d.ts} +4 -4
  57. package/dist/esm/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -0
  58. package/dist/esm/clients/{GoogleGptClient.js → GoogleGenerativeAiGptClient.js} +9 -9
  59. package/dist/esm/clients/GoogleGenerativeAiGptClient.js.map +1 -0
  60. package/dist/esm/clients/GoogleVertexGptClient.d.ts +24 -0
  61. package/dist/esm/clients/GoogleVertexGptClient.d.ts.map +1 -0
  62. package/dist/esm/clients/GoogleVertexGptClient.js +98 -0
  63. package/dist/esm/clients/GoogleVertexGptClient.js.map +1 -0
  64. package/dist/esm/clients/GptClientFactory.d.ts.map +1 -1
  65. package/dist/esm/clients/GptClientFactory.js +6 -2
  66. package/dist/esm/clients/GptClientFactory.js.map +1 -1
  67. package/dist/esm/clients/OpenAiGptClient.d.ts +2 -2
  68. package/dist/esm/clients/OpenAiGptClient.d.ts.map +1 -1
  69. package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
  70. package/dist/esm/clients/VercelAiGptClient.d.ts.map +1 -1
  71. package/dist/esm/clients/VercelAiGptClient.js +6 -5
  72. package/dist/esm/clients/VercelAiGptClient.js.map +1 -1
  73. package/dist/esm/envVars.d.ts +20 -0
  74. package/dist/esm/envVars.d.ts.map +1 -1
  75. package/dist/esm/envVars.js +20 -0
  76. package/dist/esm/envVars.js.map +1 -1
  77. package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.d.ts +2 -1
  78. package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.d.ts.map +1 -1
  79. package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.js +3 -2
  80. package/dist/esm/exceptions/GptPlatformAuthenticationFailedException.js.map +1 -1
  81. package/dist/esm/init.d.ts +9 -0
  82. package/dist/esm/init.d.ts.map +1 -0
  83. package/dist/esm/init.js +70 -0
  84. package/dist/esm/init.js.map +1 -0
  85. package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -1
  86. package/dist/esm/lib/fixtures/gptClients.js +16 -2
  87. package/dist/esm/lib/fixtures/gptClients.js.map +1 -1
  88. package/dist/esm/main.d.ts +1 -0
  89. package/dist/esm/main.d.ts.map +1 -1
  90. package/dist/esm/main.js +3 -50
  91. package/dist/esm/main.js.map +1 -1
  92. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  93. package/dist/esm/managers/DonobuFlowsManager.js +13 -1
  94. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  95. package/dist/esm/models/BrowserConfig.d.ts +269 -4
  96. package/dist/esm/models/BrowserConfig.d.ts.map +1 -1
  97. package/dist/esm/models/BrowserConfig.js +17 -4
  98. package/dist/esm/models/BrowserConfig.js.map +1 -1
  99. package/dist/esm/models/BrowserStateFlowReference.d.ts +165 -14
  100. package/dist/esm/models/BrowserStateFlowReference.d.ts.map +1 -1
  101. package/dist/esm/models/BrowserStateFlowReference.js +19 -0
  102. package/dist/esm/models/BrowserStateFlowReference.js.map +1 -1
  103. package/dist/esm/models/BrowserStorageState.d.ts +88 -10
  104. package/dist/esm/models/BrowserStorageState.d.ts.map +1 -1
  105. package/dist/esm/models/BrowserStorageState.js +38 -0
  106. package/dist/esm/models/BrowserStorageState.js.map +1 -1
  107. package/dist/esm/models/CreateDonobuFlow.d.ts +347 -5
  108. package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
  109. package/dist/esm/models/FlowMetadata.d.ts +347 -5
  110. package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
  111. package/dist/esm/models/GptConfig.d.ts +44 -6
  112. package/dist/esm/models/GptConfig.d.ts.map +1 -1
  113. package/dist/esm/models/GptConfig.js +17 -7
  114. package/dist/esm/models/GptConfig.js.map +1 -1
  115. package/dist/esm/tools/ReplayableInteraction.d.ts +1 -1
  116. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  117. package/dist/esm/tools/RunInlineJavaScriptCodeTool.js +8 -8
  118. package/dist/esm/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
  119. package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.d.ts.map +1 -1
  120. package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.js +8 -9
  121. package/dist/esm/tools/RunSandboxedJavaScriptCodeTool.js.map +1 -1
  122. package/dist/esm/tools/TriggerDonobuFlowTool.d.ts +850 -14
  123. package/dist/esm/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
  124. package/dist/esm/utils/BrowserUtils.d.ts +118 -5
  125. package/dist/esm/utils/BrowserUtils.d.ts.map +1 -1
  126. package/dist/esm/utils/BrowserUtils.js +171 -31
  127. package/dist/esm/utils/BrowserUtils.js.map +1 -1
  128. package/dist/esm/utils/JsonUtils.d.ts +94 -9
  129. package/dist/esm/utils/JsonUtils.d.ts.map +1 -1
  130. package/dist/esm/utils/JsonUtils.js +96 -77
  131. package/dist/esm/utils/JsonUtils.js.map +1 -1
  132. package/dist/exceptions/GptPlatformAuthenticationFailedException.d.ts +2 -1
  133. package/dist/exceptions/GptPlatformAuthenticationFailedException.d.ts.map +1 -1
  134. package/dist/exceptions/GptPlatformAuthenticationFailedException.js +3 -2
  135. package/dist/exceptions/GptPlatformAuthenticationFailedException.js.map +1 -1
  136. package/dist/init.d.ts +9 -0
  137. package/dist/init.d.ts.map +1 -0
  138. package/dist/init.js +70 -0
  139. package/dist/init.js.map +1 -0
  140. package/dist/lib/fixtures/gptClients.d.ts.map +1 -1
  141. package/dist/lib/fixtures/gptClients.js +16 -2
  142. package/dist/lib/fixtures/gptClients.js.map +1 -1
  143. package/dist/main.d.ts +1 -0
  144. package/dist/main.d.ts.map +1 -1
  145. package/dist/main.js +3 -50
  146. package/dist/main.js.map +1 -1
  147. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  148. package/dist/managers/DonobuFlowsManager.js +13 -1
  149. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  150. package/dist/models/BrowserConfig.d.ts +269 -4
  151. package/dist/models/BrowserConfig.d.ts.map +1 -1
  152. package/dist/models/BrowserConfig.js +17 -4
  153. package/dist/models/BrowserConfig.js.map +1 -1
  154. package/dist/models/BrowserStateFlowReference.d.ts +165 -14
  155. package/dist/models/BrowserStateFlowReference.d.ts.map +1 -1
  156. package/dist/models/BrowserStateFlowReference.js +19 -0
  157. package/dist/models/BrowserStateFlowReference.js.map +1 -1
  158. package/dist/models/BrowserStorageState.d.ts +88 -10
  159. package/dist/models/BrowserStorageState.d.ts.map +1 -1
  160. package/dist/models/BrowserStorageState.js +38 -0
  161. package/dist/models/BrowserStorageState.js.map +1 -1
  162. package/dist/models/CreateDonobuFlow.d.ts +347 -5
  163. package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
  164. package/dist/models/FlowMetadata.d.ts +347 -5
  165. package/dist/models/FlowMetadata.d.ts.map +1 -1
  166. package/dist/models/GptConfig.d.ts +44 -6
  167. package/dist/models/GptConfig.d.ts.map +1 -1
  168. package/dist/models/GptConfig.js +17 -7
  169. package/dist/models/GptConfig.js.map +1 -1
  170. package/dist/tools/ReplayableInteraction.d.ts +1 -1
  171. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  172. package/dist/tools/RunInlineJavaScriptCodeTool.js +8 -8
  173. package/dist/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
  174. package/dist/tools/RunSandboxedJavaScriptCodeTool.d.ts.map +1 -1
  175. package/dist/tools/RunSandboxedJavaScriptCodeTool.js +8 -9
  176. package/dist/tools/RunSandboxedJavaScriptCodeTool.js.map +1 -1
  177. package/dist/tools/TriggerDonobuFlowTool.d.ts +850 -14
  178. package/dist/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
  179. package/dist/utils/BrowserUtils.d.ts +118 -5
  180. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  181. package/dist/utils/BrowserUtils.js +171 -31
  182. package/dist/utils/BrowserUtils.js.map +1 -1
  183. package/dist/utils/JsonUtils.d.ts +94 -9
  184. package/dist/utils/JsonUtils.d.ts.map +1 -1
  185. package/dist/utils/JsonUtils.js +96 -77
  186. package/dist/utils/JsonUtils.js.map +1 -1
  187. package/package.json +12 -11
  188. package/dist/assets/install-donobu-plugin.js +0 -96
  189. package/dist/assets/playwright-json-to-markdown.js +0 -257
  190. package/dist/assets/playwright-json-to-slack-json.js +0 -171
  191. package/dist/clients/GoogleGptClient.d.ts.map +0 -1
  192. package/dist/clients/GoogleGptClient.js.map +0 -1
  193. package/dist/esm/assets/install-donobu-plugin.js +0 -96
  194. package/dist/esm/assets/playwright-json-to-markdown.js +0 -257
  195. package/dist/esm/assets/playwright-json-to-slack-json.js +0 -171
  196. package/dist/esm/clients/GoogleGptClient.d.ts.map +0 -1
  197. package/dist/esm/clients/GoogleGptClient.js.map +0 -1
  198. package/dist/esm/exceptions/UnparseableJsonBodyException.d.ts +0 -5
  199. package/dist/esm/exceptions/UnparseableJsonBodyException.d.ts.map +0 -1
  200. package/dist/esm/exceptions/UnparseableJsonBodyException.js +0 -11
  201. package/dist/esm/exceptions/UnparseableJsonBodyException.js.map +0 -1
  202. package/dist/exceptions/UnparseableJsonBodyException.d.ts +0 -5
  203. package/dist/exceptions/UnparseableJsonBodyException.d.ts.map +0 -1
  204. package/dist/exceptions/UnparseableJsonBodyException.js +0 -11
  205. package/dist/exceptions/UnparseableJsonBodyException.js.map +0 -1
@@ -10,16 +10,6 @@ import { AgentsManager } from '../managers/AgentsManager';
10
10
  * AI providers. These configurations are referenced by agents and used during flow execution
11
11
  * to connect to external AI services.
12
12
  *
13
- * **Supported Providers:**
14
- * - Anthropic (Claude models)
15
- * - Anthropic via AWS Bedrock
16
- * - Google Gemini
17
- * - OpenAI (GPT models)
18
- * - OpenAI Azure
19
- * - Local LLaMA models
20
- * - LLaMA via Hugging Face
21
- * - Vercel AI SDK
22
- *
23
13
  * **Security Features:**
24
14
  * - Automatic redaction of sensitive fields (API keys, secret keys) in responses
25
15
  * - Validation of configurations before storage
@@ -1 +1 @@
1
- {"version":3,"file":"GptConfigsApi.d.ts","sourceRoot":"","sources":["../../src/apis/GptConfigsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IARhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAiC;gBAG1D,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa;IAG/C;;;;;;;;;;;;;;;;;OAiBG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;;;;;OAMG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;;;;;;OAOG;IACU,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhE;;;;;;;;;;OAUG;IACU,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/D;;;OAGG;WACW,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;CAYhE"}
1
+ {"version":3,"file":"GptConfigsApi.d.ts","sourceRoot":"","sources":["../../src/apis/GptConfigsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAbhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAK1C;gBAGiB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa;IAG/C;;;;;;;;;;;;;;;;;OAiBG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D;;;;;;OAMG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;;;;;;OAOG;IACU,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhE;;;;;;;;;;OAUG;IACU,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/D;;;OAGG;WACW,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;CAYhE"}
@@ -12,16 +12,6 @@ const Logger_1 = require("../utils/Logger");
12
12
  * AI providers. These configurations are referenced by agents and used during flow execution
13
13
  * to connect to external AI services.
14
14
  *
15
- * **Supported Providers:**
16
- * - Anthropic (Claude models)
17
- * - Anthropic via AWS Bedrock
18
- * - Google Gemini
19
- * - OpenAI (GPT models)
20
- * - OpenAI Azure
21
- * - Local LLaMA models
22
- * - LLaMA via Hugging Face
23
- * - Vercel AI SDK
24
- *
25
15
  * **Security Features:**
26
16
  * - Automatic redaction of sensitive fields (API keys, secret keys) in responses
27
17
  * - Validation of configurations before storage
@@ -145,5 +135,10 @@ exports.GptConfigsApi = GptConfigsApi;
145
135
  * Field names that contain sensitive data and should be redacted in API responses.
146
136
  * These fields are automatically replaced with asterisks to prevent credential exposure.
147
137
  */
148
- GptConfigsApi.REDACTED_FIELD_NAMES = ['apiKey', 'secretAccessKey'];
138
+ GptConfigsApi.REDACTED_FIELD_NAMES = [
139
+ 'apiKey',
140
+ 'credentials',
141
+ 'key',
142
+ 'secretAccessKey',
143
+ ];
149
144
  //# sourceMappingURL=GptConfigsApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GptConfigsApi.js","sourceRoot":"","sources":["../../src/apis/GptConfigsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GptConfigsApi.js","sourceRoot":"","sources":["../../src/apis/GptConfigsApi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- 1290
1
+ 1303
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ export declare function getPluginName(): Promise<string>;
3
+ export declare function buildPlugin(): Promise<void>;
4
+ export declare function installPlugin(): Promise<void>;
5
+ export declare function main(): Promise<void>;
6
+ //# sourceMappingURL=install-donobu-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-donobu-plugin.d.ts","sourceRoot":"","sources":["../../src/cli/install-donobu-plugin.ts"],"names":[],"mappings":";AA2CA,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAgCrD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBnD;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB1C"}
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getPluginName = getPluginName;
5
+ exports.buildPlugin = buildPlugin;
6
+ exports.installPlugin = installPlugin;
7
+ exports.main = main;
8
+ /**
9
+ * @fileoverview Donobu Plugin Installation CLI
10
+ *
11
+ * A command-line utility for building and installing Donobu plugins into the local Donobu Studio environment.
12
+ * This script automates the process of compiling a plugin and copying it to the appropriate plugins directory
13
+ * where Donobu Studio can discover and load it.
14
+ *
15
+ * @usage
16
+ * Run this command from within a Donobu plugin directory (must contain package.json and src/ directory):
17
+ *
18
+ * ```bash
19
+ * npm exec install-donobu-plugin
20
+ * ```
21
+ *
22
+ * @process
23
+ * 1. Validates that the current directory is a valid plugin directory.
24
+ * 2. Determines the plugin name from package.json, git repository, or username.
25
+ * 3. Runs `npm run build` to compile the plugin.
26
+ * 4. Copies the built plugin to the Donobu plugin directory (OS-variant).
27
+ * 5. Provides instructions to restart Donobu Studio to see the new tools.
28
+ *
29
+ * @requirements
30
+ * - Must be run from a directory containing package.json.
31
+ * - Must be run from a directory containing src/ directory.
32
+ * - The project must have a working `npm run build` script.
33
+ * - Write permissions to the Donobu Studio plugins directory.
34
+ *
35
+ * @output
36
+ * - Plugin compiled and installed to Donobu Studio plugins directory.
37
+ * - Console output with installation progress and final location.
38
+ */
39
+ const child_process_1 = require("child_process");
40
+ const util_1 = require("util");
41
+ const promises_1 = require("fs/promises");
42
+ const path_1 = require("path");
43
+ const fs_1 = require("fs");
44
+ const Logger_1 = require("../utils/Logger");
45
+ const MiscUtils_1 = require("../utils/MiscUtils");
46
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
47
+ async function getPluginName() {
48
+ try {
49
+ // First, try to read the plugin name from package.json
50
+ const packageJsonContent = await (0, promises_1.readFile)('package.json', 'utf8');
51
+ const packageJson = JSON.parse(packageJsonContent);
52
+ if (packageJson.name) {
53
+ Logger_1.appLogger.info(`Using plugin name from package.json: ${packageJson.name}`);
54
+ return packageJson.name;
55
+ }
56
+ }
57
+ catch (error) {
58
+ Logger_1.appLogger.warn('Could not read package.json name, falling back to git/user detection', error);
59
+ }
60
+ // Fallback to a heuristic
61
+ try {
62
+ const { stdout } = await execAsync('git rev-parse --show-toplevel');
63
+ const repoPath = stdout.trim();
64
+ const gitBasedName = `${(0, path_1.basename)(repoPath).replace(/\.git$/, '')}-custom-tools`;
65
+ Logger_1.appLogger.info(`Using git-based plugin name: ${gitBasedName}`);
66
+ return gitBasedName;
67
+ }
68
+ catch {
69
+ const user = process.env.USER || 'unknown-user';
70
+ const userBasedName = `${user}-custom-tools`;
71
+ Logger_1.appLogger.info(`Using user-based plugin name: ${userBasedName}`);
72
+ return userBasedName;
73
+ }
74
+ }
75
+ async function buildPlugin() {
76
+ Logger_1.appLogger.info('Building plugin...');
77
+ await execAsync('npm run build');
78
+ }
79
+ async function installPlugin() {
80
+ const pluginName = await getPluginName();
81
+ const pluginsDir = (0, path_1.join)(MiscUtils_1.MiscUtils.baseWorkingDirectory(), 'plugins');
82
+ const thisPluginDir = (0, path_1.join)(pluginsDir, pluginName);
83
+ Logger_1.appLogger.info(`Installing plugin: ${pluginName}`);
84
+ // Create plugins directory
85
+ await (0, promises_1.mkdir)(pluginsDir, { recursive: true });
86
+ // Remove old plugin if exists
87
+ try {
88
+ await (0, promises_1.rm)(thisPluginDir, { recursive: true, force: true });
89
+ }
90
+ catch {
91
+ // Ignore if directory doesn't exist
92
+ }
93
+ // Copy built plugin
94
+ await (0, promises_1.cp)('dist', thisPluginDir, { recursive: true });
95
+ Logger_1.appLogger.info(`Plugin installed successfully to: ${thisPluginDir}`);
96
+ Logger_1.appLogger.info('Restart Donobu to see the new tools.');
97
+ }
98
+ async function main() {
99
+ try {
100
+ // Check if we're in a plugin directory
101
+ try {
102
+ await (0, promises_1.access)('package.json', fs_1.constants.F_OK);
103
+ await (0, promises_1.access)('src', fs_1.constants.F_OK);
104
+ }
105
+ catch {
106
+ Logger_1.appLogger.error('Error: This command must be run from a Donobu plugin directory');
107
+ Logger_1.appLogger.error('Make sure you have package.json and src/ directory');
108
+ process.exit(1);
109
+ }
110
+ await buildPlugin();
111
+ await installPlugin();
112
+ }
113
+ catch (error) {
114
+ Logger_1.appLogger.error('Installation failed:', error);
115
+ process.exit(1);
116
+ }
117
+ }
118
+ // If this file is being run directly
119
+ if (require.main === module) {
120
+ main().catch((error) => {
121
+ console.error('Unhandled error:', error);
122
+ process.exit(1);
123
+ });
124
+ }
125
+ //# sourceMappingURL=install-donobu-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-donobu-plugin.js","sourceRoot":"","sources":["../../src/cli/install-donobu-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @fileoverview Playwright JSON Report to Markdown Converter
4
+ *
5
+ * A command-line utility that converts Playwright JSON test reports into human-readable Markdown format.
6
+ * This tool is designed to be used in CI/CD pipelines to generate formatted test reports for GitHub
7
+ * Actions summaries, pull request comments, or documentation.
8
+ *
9
+ * @usage
10
+ * Read from file:
11
+ * ```bash
12
+ * npm exec playwright-json-to-markdown report.json
13
+ * ```
14
+ *
15
+ * Read from stdin (useful in pipelines):
16
+ * ```bash
17
+ * cat test-results/results.json | npx playwright-json-to-markdown
18
+ * npm exec playwright test --reporter=json | npx playwright-json-to-markdown
19
+ * ```
20
+ *
21
+ * @input
22
+ * Expects a Playwright JSON report with the following structure:
23
+ * - config: Test configuration including projects.
24
+ * - suites: Array of test suites containing specs and tests.
25
+ * - stats: Summary statistics (duration, expected, unexpected, flaky, skipped).
26
+ *
27
+ * @output
28
+ * Generates a Markdown report containing:
29
+ * - 📊 Summary table with test counts and duration.
30
+ * - Overall pass/fail status with appropriate emoji.
31
+ * - 📋 Detailed results organized by file and test suite.
32
+ * - ❌ Error details and locations for failed tests.
33
+ * - 🚀 List of configured projects.
34
+ *
35
+ * @features
36
+ * - Emoji indicators for test status (✅ passed, ❌ failed).
37
+ * - Human-readable duration formatting (ms, s, m s).
38
+ * - Hierarchical organization (file → spec → test).
39
+ * - Error message and location details for failures.
40
+ * - Summary statistics in tabular format.
41
+ */
42
+ export {};
43
+ //# sourceMappingURL=playwright-json-to-markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-json-to-markdown.d.ts","sourceRoot":"","sources":["../../src/cli/playwright-json-to-markdown.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG"}
@@ -0,0 +1,239 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * @fileoverview Playwright JSON Report to Markdown Converter
5
+ *
6
+ * A command-line utility that converts Playwright JSON test reports into human-readable Markdown format.
7
+ * This tool is designed to be used in CI/CD pipelines to generate formatted test reports for GitHub
8
+ * Actions summaries, pull request comments, or documentation.
9
+ *
10
+ * @usage
11
+ * Read from file:
12
+ * ```bash
13
+ * npm exec playwright-json-to-markdown report.json
14
+ * ```
15
+ *
16
+ * Read from stdin (useful in pipelines):
17
+ * ```bash
18
+ * cat test-results/results.json | npx playwright-json-to-markdown
19
+ * npm exec playwright test --reporter=json | npx playwright-json-to-markdown
20
+ * ```
21
+ *
22
+ * @input
23
+ * Expects a Playwright JSON report with the following structure:
24
+ * - config: Test configuration including projects.
25
+ * - suites: Array of test suites containing specs and tests.
26
+ * - stats: Summary statistics (duration, expected, unexpected, flaky, skipped).
27
+ *
28
+ * @output
29
+ * Generates a Markdown report containing:
30
+ * - 📊 Summary table with test counts and duration.
31
+ * - Overall pass/fail status with appropriate emoji.
32
+ * - 📋 Detailed results organized by file and test suite.
33
+ * - ❌ Error details and locations for failed tests.
34
+ * - 🚀 List of configured projects.
35
+ *
36
+ * @features
37
+ * - Emoji indicators for test status (✅ passed, ❌ failed).
38
+ * - Human-readable duration formatting (ms, s, m s).
39
+ * - Hierarchical organization (file → spec → test).
40
+ * - Error message and location details for failures.
41
+ * - Summary statistics in tabular format.
42
+ */
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ const fs_1 = require("fs");
45
+ function stripAnsiCodes(str) {
46
+ return str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
47
+ }
48
+ // Function to format duration in a readable way
49
+ function formatDuration(ms) {
50
+ if (ms < 1000) {
51
+ return `${ms}ms`;
52
+ }
53
+ const seconds = Math.floor(ms / 1000);
54
+ if (seconds < 60) {
55
+ return `${seconds}s`;
56
+ }
57
+ const minutes = Math.floor(seconds / 60);
58
+ const remainingSeconds = seconds % 60;
59
+ return `${minutes}m ${remainingSeconds}s`;
60
+ }
61
+ // Read the JSON data from file or stdin
62
+ function readInput() {
63
+ const args = process.argv.slice(2);
64
+ if (args.length > 0) {
65
+ return JSON.parse((0, fs_1.readFileSync)(args[0], 'utf8'));
66
+ }
67
+ else {
68
+ return JSON.parse((0, fs_1.readFileSync)(0, 'utf8')); // Read from stdin
69
+ }
70
+ }
71
+ // Process JSON and create markdown
72
+ function generateMarkdown(jsonData) {
73
+ const { suites } = jsonData;
74
+ // Create report header
75
+ let markdown = `# Playwright Test Report\n\n`;
76
+ // Tests by file
77
+ markdown += `## Summary\n\n`;
78
+ // Create file summary table with status counts
79
+ markdown += `| File | Passed | Self-Healed | Failed | Timed Out | Skipped | Interrupted | Duration |\n`;
80
+ markdown += `| - | - | - | - | - | - | - | - |\n`;
81
+ // Track totals for summary row
82
+ let totalPassed = 0;
83
+ let totalFailed = 0;
84
+ let totalTimedOut = 0;
85
+ let totalSkipped = 0;
86
+ let totalInterrupted = 0;
87
+ let totalSelfHealed = 0;
88
+ let totalDuration = 0;
89
+ suites.forEach((suite) => {
90
+ // Count tests by status for this file
91
+ let passed = 0;
92
+ let failed = 0;
93
+ let timedOut = 0;
94
+ let skipped = 0;
95
+ let interrupted = 0;
96
+ let selfHealed = 0;
97
+ const fileDuration = suite.specs.reduce((total, spec) => total +
98
+ spec.tests.reduce((testTotal, test) => {
99
+ const result = test.results && test.results.at(-1);
100
+ const isSelfHealed = test.annotations &&
101
+ test.annotations.some((a) => a.type === 'self-healed');
102
+ if (test.status === 'skipped' ||
103
+ (!result && test.status === undefined)) {
104
+ skipped++;
105
+ }
106
+ else if (result) {
107
+ if (isSelfHealed) {
108
+ selfHealed++;
109
+ }
110
+ else {
111
+ switch (result.status) {
112
+ case 'passed':
113
+ passed++;
114
+ break;
115
+ case 'failed':
116
+ failed++;
117
+ break;
118
+ case 'timedOut':
119
+ timedOut++;
120
+ break;
121
+ case 'skipped':
122
+ skipped++;
123
+ break;
124
+ case 'interrupted':
125
+ interrupted++;
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ return testTotal + (result?.duration || 0);
131
+ }, 0), 0);
132
+ // Add to totals
133
+ totalPassed += passed;
134
+ totalFailed += failed;
135
+ totalTimedOut += timedOut;
136
+ totalSkipped += skipped;
137
+ totalInterrupted += interrupted;
138
+ totalSelfHealed += selfHealed;
139
+ totalDuration += fileDuration;
140
+ markdown += `| ${suite.file} | ${passed ? passed + ' ✅' : ''} | ${selfHealed ? selfHealed + ' ❤️‍🩹' : ''} | ${failed ? failed + ' ❌' : ''} | ${timedOut ? timedOut + ' ⏰' : ''} | ${skipped ? skipped + ' ⏭️' : ''} | ${interrupted ? interrupted + ' ⚡' : ''} | ${formatDuration(fileDuration)} |\n`;
141
+ });
142
+ // Add totals row
143
+ markdown += `| **TOTAL** | **${totalPassed + ' ✅'}** | **${totalSelfHealed + ' ❤️‍🩹'}** | **${totalFailed + ' ❌'}** | **${totalTimedOut + ' ⏰'}** | **${totalSkipped + ' ⏭️'}** | **${totalInterrupted + ' ⚡'}** | **${formatDuration(totalDuration)}** |\n`;
144
+ markdown += `\n`;
145
+ // Generate test details sections
146
+ suites.forEach((suite) => {
147
+ const fileName = suite.file;
148
+ markdown += `## ${fileName}\n\n`;
149
+ suite.specs.forEach((spec) => {
150
+ markdown += `### ${spec.title}\n\n`;
151
+ spec.tests.forEach((test) => {
152
+ const result = test.results && test.results.at(-1);
153
+ if (test.status === 'skipped' || !result || test.status === undefined) {
154
+ markdown += `**Status**: ⏭️ Skipped \n`;
155
+ markdown += `**Duration**: N/A \n`;
156
+ // Get objective from annotations if available
157
+ let objective = 'No objective provided';
158
+ if (test.annotations) {
159
+ const objectiveAnnotation = test.annotations.find((a) => a.type === 'objective');
160
+ if (objectiveAnnotation) {
161
+ objective =
162
+ objectiveAnnotation.description || 'No objective provided';
163
+ }
164
+ }
165
+ // Escape any existing triple backticks in the objective
166
+ objective = objective.replace(/```/g, '\\`\\`\\`');
167
+ markdown += `**Objective**:\n\`\`\`\n${objective}\n\`\`\`\n`;
168
+ markdown += `---\n\n`;
169
+ return;
170
+ }
171
+ const isSelfHealed = test.annotations &&
172
+ test.annotations.some((a) => a.type === 'self-healed');
173
+ // Determine status based on result status and self-healing annotation
174
+ let status;
175
+ if (result.status === 'passed') {
176
+ status = '✅ Passed';
177
+ }
178
+ else if (isSelfHealed) {
179
+ status = '❌ Failed (❤️‍🩹 Self-Healed)';
180
+ }
181
+ else if (result.status === 'failed') {
182
+ status = '❌ Failed';
183
+ }
184
+ else if (result.status === 'timedOut') {
185
+ status = '⏰ Timed Out';
186
+ }
187
+ else if (result.status === 'skipped') {
188
+ status = '⏭️ Skipped';
189
+ }
190
+ else if (result.status === 'interrupted') {
191
+ status = '⚡ Interrupted';
192
+ }
193
+ else {
194
+ status = `⚠️ ${result.status || 'Unknown'}`;
195
+ }
196
+ const duration = formatDuration(result.duration || 0);
197
+ // Get objective from annotations if available
198
+ let objective = 'No objective provided';
199
+ if (test.annotations) {
200
+ const objectiveAnnotation = test.annotations.find((a) => a.type === 'objective');
201
+ if (objectiveAnnotation) {
202
+ objective =
203
+ objectiveAnnotation.description || 'No objective provided';
204
+ }
205
+ }
206
+ // Escape any existing triple backticks in the objective by replacing ``` with \`\`\`
207
+ objective = objective.replace(/```/g, '\\`\\`\\`');
208
+ markdown += `**Status**: ${status} \n`;
209
+ markdown += `**Duration**: ${duration} \n`;
210
+ markdown += `**Objective**:\n\`\`\`\n${objective}\n\`\`\`\n`;
211
+ // Add error details if test failed
212
+ if (result.status === 'failed' && result.error) {
213
+ markdown += `\n<details>\n<summary>⚠️ Error Details</summary>\n\n`;
214
+ markdown += `\`\`\`\n${result.error.message || 'No error message available'}\n\`\`\`\n\n`;
215
+ // Include code snippet if available
216
+ if (result.error.snippet) {
217
+ markdown += `**Code Snippet**:\n\`\`\`\n${stripAnsiCodes(result.error.snippet)}\n\`\`\`\n\n`;
218
+ }
219
+ markdown += `</details>\n\n`;
220
+ }
221
+ markdown += `---\n\n`;
222
+ });
223
+ });
224
+ });
225
+ // Add timestamp footer
226
+ markdown += `_Report generated on ${new Date().toLocaleString()} by Donobu_\n`;
227
+ return markdown;
228
+ }
229
+ // Main execution
230
+ try {
231
+ const jsonData = readInput();
232
+ const markdown = generateMarkdown(jsonData);
233
+ console.log(markdown);
234
+ }
235
+ catch (error) {
236
+ console.error('Error processing JSON: ', error.message);
237
+ process.exit(1);
238
+ }
239
+ //# sourceMappingURL=playwright-json-to-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-json-to-markdown.js","sourceRoot":"","sources":["../../src/cli/playwright-json-to-markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=playwright-json-to-slack-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-json-to-slack-json.d.ts","sourceRoot":"","sources":["../../src/cli/playwright-json-to-slack-json.ts"],"names":[],"mappings":""}