explorbot 0.0.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.
Files changed (329) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +267 -0
  3. package/assets/sample-files/sample.docx +0 -0
  4. package/assets/sample-files/sample.mp3 +0 -0
  5. package/assets/sample-files/sample.mp4 +0 -0
  6. package/assets/sample-files/sample.pdf +21 -0
  7. package/assets/sample-files/sample.png +0 -0
  8. package/assets/sample-files/sample.xlsx +0 -0
  9. package/assets/sample-files/sample.zip +0 -0
  10. package/dist/assets/sample-files/sample.docx +0 -0
  11. package/dist/assets/sample-files/sample.mp3 +0 -0
  12. package/dist/assets/sample-files/sample.mp4 +0 -0
  13. package/dist/assets/sample-files/sample.pdf +21 -0
  14. package/dist/assets/sample-files/sample.png +0 -0
  15. package/dist/assets/sample-files/sample.xlsx +0 -0
  16. package/dist/assets/sample-files/sample.zip +0 -0
  17. package/dist/bin/explorbot-cli.js +683 -0
  18. package/dist/bin/explorbot-cli.js.map +1 -0
  19. package/dist/boat/api-tester/bin/apibot-cli.js +5 -0
  20. package/dist/boat/api-tester/bin/apibot-cli.js.map +1 -0
  21. package/dist/boat/api-tester/example/apibot.config.js +31 -0
  22. package/dist/boat/api-tester/example/apibot.config.js.map +1 -0
  23. package/dist/boat/api-tester/src/ai/chief/styles.js +13 -0
  24. package/dist/boat/api-tester/src/ai/chief/styles.js.map +1 -0
  25. package/dist/boat/api-tester/src/ai/chief.js +301 -0
  26. package/dist/boat/api-tester/src/ai/chief.js.map +1 -0
  27. package/dist/boat/api-tester/src/ai/curler-tools.js +263 -0
  28. package/dist/boat/api-tester/src/ai/curler-tools.js.map +1 -0
  29. package/dist/boat/api-tester/src/ai/curler.js +271 -0
  30. package/dist/boat/api-tester/src/ai/curler.js.map +1 -0
  31. package/dist/boat/api-tester/src/api-client.js +26 -0
  32. package/dist/boat/api-tester/src/api-client.js.map +1 -0
  33. package/dist/boat/api-tester/src/apibot.js +166 -0
  34. package/dist/boat/api-tester/src/apibot.js.map +1 -0
  35. package/dist/boat/api-tester/src/cli.js +262 -0
  36. package/dist/boat/api-tester/src/cli.js.map +1 -0
  37. package/dist/boat/api-tester/src/config.js +159 -0
  38. package/dist/boat/api-tester/src/config.js.map +1 -0
  39. package/dist/prompts/audit-rules.md +124 -0
  40. package/dist/rules/chief/general.md +11 -0
  41. package/dist/rules/chief/styles/curious.md +12 -0
  42. package/dist/rules/chief/styles/hacker.md +19 -0
  43. package/dist/rules/chief/styles/normal.md +11 -0
  44. package/dist/rules/chief/styles/psycho.md +17 -0
  45. package/dist/rules/navigator/multiple-locator.md +47 -0
  46. package/dist/rules/navigator/output.md +69 -0
  47. package/dist/rules/navigator/verification-actions.md +122 -0
  48. package/dist/rules/navigator/verification-output.md +53 -0
  49. package/dist/rules/planner/styles/curious.md +39 -0
  50. package/dist/rules/planner/styles/normal.md +21 -0
  51. package/dist/rules/planner/styles/psycho.md +14 -0
  52. package/dist/rules/researcher/list-element.md +11 -0
  53. package/dist/rules/researcher/screenshot-ui-map.md +30 -0
  54. package/dist/rules/researcher/section-ui-map.md +18 -0
  55. package/dist/rules/researcher/ui-map-table.md +18 -0
  56. package/dist/src/action-result.js +574 -0
  57. package/dist/src/action-result.js.map +1 -0
  58. package/dist/src/action.js +388 -0
  59. package/dist/src/action.js.map +1 -0
  60. package/dist/src/activity.js +86 -0
  61. package/dist/src/activity.js.map +1 -0
  62. package/dist/src/ai/agent.js +2 -0
  63. package/dist/src/ai/agent.js.map +1 -0
  64. package/dist/src/ai/bosun.js +443 -0
  65. package/dist/src/ai/bosun.js.map +1 -0
  66. package/dist/src/ai/captain/idle-mode.js +102 -0
  67. package/dist/src/ai/captain/idle-mode.js.map +1 -0
  68. package/dist/src/ai/captain/mixin.js +11 -0
  69. package/dist/src/ai/captain/mixin.js.map +1 -0
  70. package/dist/src/ai/captain/test-mode.js +251 -0
  71. package/dist/src/ai/captain/test-mode.js.map +1 -0
  72. package/dist/src/ai/captain/web-mode.js +124 -0
  73. package/dist/src/ai/captain/web-mode.js.map +1 -0
  74. package/dist/src/ai/captain.js +442 -0
  75. package/dist/src/ai/captain.js.map +1 -0
  76. package/dist/src/ai/conversation.js +176 -0
  77. package/dist/src/ai/conversation.js.map +1 -0
  78. package/dist/src/ai/experience-compactor.js +232 -0
  79. package/dist/src/ai/experience-compactor.js.map +1 -0
  80. package/dist/src/ai/fisherman-tools.js +154 -0
  81. package/dist/src/ai/fisherman-tools.js.map +1 -0
  82. package/dist/src/ai/fisherman.js +184 -0
  83. package/dist/src/ai/fisherman.js.map +1 -0
  84. package/dist/src/ai/historian.js +384 -0
  85. package/dist/src/ai/historian.js.map +1 -0
  86. package/dist/src/ai/navigator.js +493 -0
  87. package/dist/src/ai/navigator.js.map +1 -0
  88. package/dist/src/ai/pilot.js +684 -0
  89. package/dist/src/ai/pilot.js.map +1 -0
  90. package/dist/src/ai/planner/session-dedup.js +28 -0
  91. package/dist/src/ai/planner/session-dedup.js.map +1 -0
  92. package/dist/src/ai/planner/styles.js +15 -0
  93. package/dist/src/ai/planner/styles.js.map +1 -0
  94. package/dist/src/ai/planner/subpages.js +118 -0
  95. package/dist/src/ai/planner/subpages.js.map +1 -0
  96. package/dist/src/ai/planner.js +486 -0
  97. package/dist/src/ai/planner.js.map +1 -0
  98. package/dist/src/ai/provider.js +540 -0
  99. package/dist/src/ai/provider.js.map +1 -0
  100. package/dist/src/ai/quartermaster.js +210 -0
  101. package/dist/src/ai/quartermaster.js.map +1 -0
  102. package/dist/src/ai/researcher/cache.js +95 -0
  103. package/dist/src/ai/researcher/cache.js.map +1 -0
  104. package/dist/src/ai/researcher/coordinates.js +210 -0
  105. package/dist/src/ai/researcher/coordinates.js.map +1 -0
  106. package/dist/src/ai/researcher/deep-analysis.js +364 -0
  107. package/dist/src/ai/researcher/deep-analysis.js.map +1 -0
  108. package/dist/src/ai/researcher/fingerprint-worker.js +46 -0
  109. package/dist/src/ai/researcher/fingerprint-worker.js.map +1 -0
  110. package/dist/src/ai/researcher/focus.js +37 -0
  111. package/dist/src/ai/researcher/focus.js.map +1 -0
  112. package/dist/src/ai/researcher/locators.js +242 -0
  113. package/dist/src/ai/researcher/locators.js.map +1 -0
  114. package/dist/src/ai/researcher/mixin.js +3 -0
  115. package/dist/src/ai/researcher/mixin.js.map +1 -0
  116. package/dist/src/ai/researcher/parser.js +160 -0
  117. package/dist/src/ai/researcher/parser.js.map +1 -0
  118. package/dist/src/ai/researcher/research-result.js +110 -0
  119. package/dist/src/ai/researcher/research-result.js.map +1 -0
  120. package/dist/src/ai/researcher.js +776 -0
  121. package/dist/src/ai/researcher.js.map +1 -0
  122. package/dist/src/ai/rules.js +368 -0
  123. package/dist/src/ai/rules.js.map +1 -0
  124. package/dist/src/ai/task-agent.js +110 -0
  125. package/dist/src/ai/task-agent.js.map +1 -0
  126. package/dist/src/ai/tester.js +840 -0
  127. package/dist/src/ai/tester.js.map +1 -0
  128. package/dist/src/ai/tools.js +980 -0
  129. package/dist/src/ai/tools.js.map +1 -0
  130. package/dist/src/api/api-client.js +91 -0
  131. package/dist/src/api/api-client.js.map +1 -0
  132. package/dist/src/api/request-result.js +177 -0
  133. package/dist/src/api/request-result.js.map +1 -0
  134. package/dist/src/api/request-store.js +109 -0
  135. package/dist/src/api/request-store.js.map +1 -0
  136. package/dist/src/api/spec-reader.js +148 -0
  137. package/dist/src/api/spec-reader.js.map +1 -0
  138. package/dist/src/api/xhr-capture.js +91 -0
  139. package/dist/src/api/xhr-capture.js.map +1 -0
  140. package/dist/src/browser-server.js +67 -0
  141. package/dist/src/browser-server.js.map +1 -0
  142. package/dist/src/command-handler.js +363 -0
  143. package/dist/src/command-handler.js.map +1 -0
  144. package/dist/src/commands/add-rule-command.js +52 -0
  145. package/dist/src/commands/add-rule-command.js.map +1 -0
  146. package/dist/src/commands/base-command.js +14 -0
  147. package/dist/src/commands/base-command.js.map +1 -0
  148. package/dist/src/commands/clean-command.js +67 -0
  149. package/dist/src/commands/clean-command.js.map +1 -0
  150. package/dist/src/commands/context-aria-command.js +18 -0
  151. package/dist/src/commands/context-aria-command.js.map +1 -0
  152. package/dist/src/commands/context-command.js +57 -0
  153. package/dist/src/commands/context-command.js.map +1 -0
  154. package/dist/src/commands/context-data-command.js +25 -0
  155. package/dist/src/commands/context-data-command.js.map +1 -0
  156. package/dist/src/commands/context-experience-command.js +41 -0
  157. package/dist/src/commands/context-experience-command.js.map +1 -0
  158. package/dist/src/commands/context-html-command.js +26 -0
  159. package/dist/src/commands/context-html-command.js.map +1 -0
  160. package/dist/src/commands/context-knowledge-command.js +36 -0
  161. package/dist/src/commands/context-knowledge-command.js.map +1 -0
  162. package/dist/src/commands/debug-command.js +12 -0
  163. package/dist/src/commands/debug-command.js.map +1 -0
  164. package/dist/src/commands/drill-command.js +29 -0
  165. package/dist/src/commands/drill-command.js.map +1 -0
  166. package/dist/src/commands/exit-command.js +26 -0
  167. package/dist/src/commands/exit-command.js.map +1 -0
  168. package/dist/src/commands/explore-command.js +124 -0
  169. package/dist/src/commands/explore-command.js.map +1 -0
  170. package/dist/src/commands/freesail-command.js +84 -0
  171. package/dist/src/commands/freesail-command.js.map +1 -0
  172. package/dist/src/commands/help-command.js +7 -0
  173. package/dist/src/commands/help-command.js.map +1 -0
  174. package/dist/src/commands/index.js +63 -0
  175. package/dist/src/commands/index.js.map +1 -0
  176. package/dist/src/commands/knows-command.js +54 -0
  177. package/dist/src/commands/knows-command.js.map +1 -0
  178. package/dist/src/commands/learn-command.js +35 -0
  179. package/dist/src/commands/learn-command.js.map +1 -0
  180. package/dist/src/commands/navigate-command.js +16 -0
  181. package/dist/src/commands/navigate-command.js.map +1 -0
  182. package/dist/src/commands/path-command.js +70 -0
  183. package/dist/src/commands/path-command.js.map +1 -0
  184. package/dist/src/commands/plan-clear-command.js +13 -0
  185. package/dist/src/commands/plan-clear-command.js.map +1 -0
  186. package/dist/src/commands/plan-command.js +36 -0
  187. package/dist/src/commands/plan-command.js.map +1 -0
  188. package/dist/src/commands/plan-edit-command.js +8 -0
  189. package/dist/src/commands/plan-edit-command.js.map +1 -0
  190. package/dist/src/commands/plan-load-command.js +16 -0
  191. package/dist/src/commands/plan-load-command.js.map +1 -0
  192. package/dist/src/commands/plan-reload-command.js +23 -0
  193. package/dist/src/commands/plan-reload-command.js.map +1 -0
  194. package/dist/src/commands/plan-save-command.js +22 -0
  195. package/dist/src/commands/plan-save-command.js.map +1 -0
  196. package/dist/src/commands/research-command.js +38 -0
  197. package/dist/src/commands/research-command.js.map +1 -0
  198. package/dist/src/commands/start-command.js +12 -0
  199. package/dist/src/commands/start-command.js.map +1 -0
  200. package/dist/src/commands/status-command.js +19 -0
  201. package/dist/src/commands/status-command.js.map +1 -0
  202. package/dist/src/commands/test-command.js +85 -0
  203. package/dist/src/commands/test-command.js.map +1 -0
  204. package/dist/src/components/ActivityPane.js +55 -0
  205. package/dist/src/components/ActivityPane.js.map +1 -0
  206. package/dist/src/components/AddKnowledge.js +122 -0
  207. package/dist/src/components/AddKnowledge.js.map +1 -0
  208. package/dist/src/components/AddRule.js +117 -0
  209. package/dist/src/components/AddRule.js.map +1 -0
  210. package/dist/src/components/App.js +313 -0
  211. package/dist/src/components/App.js.map +1 -0
  212. package/dist/src/components/Autocomplete.js +43 -0
  213. package/dist/src/components/Autocomplete.js.map +1 -0
  214. package/dist/src/components/InputPane.js +207 -0
  215. package/dist/src/components/InputPane.js.map +1 -0
  216. package/dist/src/components/InputReadline.js +598 -0
  217. package/dist/src/components/InputReadline.js.map +1 -0
  218. package/dist/src/components/LogPane.js +123 -0
  219. package/dist/src/components/LogPane.js.map +1 -0
  220. package/dist/src/components/PlanEditor.js +126 -0
  221. package/dist/src/components/PlanEditor.js.map +1 -0
  222. package/dist/src/components/PlanPane.js +51 -0
  223. package/dist/src/components/PlanPane.js.map +1 -0
  224. package/dist/src/components/SessionTimer.js +26 -0
  225. package/dist/src/components/SessionTimer.js.map +1 -0
  226. package/dist/src/components/StateTransitionPane.js +107 -0
  227. package/dist/src/components/StateTransitionPane.js.map +1 -0
  228. package/dist/src/components/StatusPane.js +37 -0
  229. package/dist/src/components/StatusPane.js.map +1 -0
  230. package/dist/src/components/TaskPane.js +96 -0
  231. package/dist/src/components/TaskPane.js.map +1 -0
  232. package/dist/src/components/Welcome.js +52 -0
  233. package/dist/src/components/Welcome.js.map +1 -0
  234. package/dist/src/components/WelcomeChecklist.js +96 -0
  235. package/dist/src/components/WelcomeChecklist.js.map +1 -0
  236. package/dist/src/components/WelcomeCommands.js +61 -0
  237. package/dist/src/components/WelcomeCommands.js.map +1 -0
  238. package/dist/src/components/autocomplete-store.js +22 -0
  239. package/dist/src/components/autocomplete-store.js.map +1 -0
  240. package/dist/src/components/parse-keypress.js +174 -0
  241. package/dist/src/components/parse-keypress.js.map +1 -0
  242. package/dist/src/config.js +249 -0
  243. package/dist/src/config.js.map +1 -0
  244. package/dist/src/execution-controller.js +92 -0
  245. package/dist/src/execution-controller.js.map +1 -0
  246. package/dist/src/experience-tracker.js +294 -0
  247. package/dist/src/experience-tracker.js.map +1 -0
  248. package/dist/src/explorbot.js +348 -0
  249. package/dist/src/explorbot.js.map +1 -0
  250. package/dist/src/explorer.js +611 -0
  251. package/dist/src/explorer.js.map +1 -0
  252. package/dist/src/index.js +56 -0
  253. package/dist/src/index.js.map +1 -0
  254. package/dist/src/knowledge-tracker.js +184 -0
  255. package/dist/src/knowledge-tracker.js.map +1 -0
  256. package/dist/src/observability.js +126 -0
  257. package/dist/src/observability.js.map +1 -0
  258. package/dist/src/reporter.js +185 -0
  259. package/dist/src/reporter.js.map +1 -0
  260. package/dist/src/state-manager.js +427 -0
  261. package/dist/src/state-manager.js.map +1 -0
  262. package/dist/src/stats.js +44 -0
  263. package/dist/src/stats.js.map +1 -0
  264. package/dist/src/test-plan.js +343 -0
  265. package/dist/src/test-plan.js.map +1 -0
  266. package/dist/src/utils/aria.js +588 -0
  267. package/dist/src/utils/aria.js.map +1 -0
  268. package/dist/src/utils/code-extractor.js +21 -0
  269. package/dist/src/utils/code-extractor.js.map +1 -0
  270. package/dist/src/utils/context-formatter.js +205 -0
  271. package/dist/src/utils/context-formatter.js.map +1 -0
  272. package/dist/src/utils/error-page.js +19 -0
  273. package/dist/src/utils/error-page.js.map +1 -0
  274. package/dist/src/utils/expandable.js +35 -0
  275. package/dist/src/utils/expandable.js.map +1 -0
  276. package/dist/src/utils/hooks-runner.js +77 -0
  277. package/dist/src/utils/hooks-runner.js.map +1 -0
  278. package/dist/src/utils/html-diff.js +734 -0
  279. package/dist/src/utils/html-diff.js.map +1 -0
  280. package/dist/src/utils/html.js +1163 -0
  281. package/dist/src/utils/html.js.map +1 -0
  282. package/dist/src/utils/logger.js +465 -0
  283. package/dist/src/utils/logger.js.map +1 -0
  284. package/dist/src/utils/loop.js +126 -0
  285. package/dist/src/utils/loop.js.map +1 -0
  286. package/dist/src/utils/markdown-parser.js +117 -0
  287. package/dist/src/utils/markdown-parser.js.map +1 -0
  288. package/dist/src/utils/markdown-query.js +393 -0
  289. package/dist/src/utils/markdown-query.js.map +1 -0
  290. package/dist/src/utils/markdown-terminal.js +40 -0
  291. package/dist/src/utils/markdown-terminal.js.map +1 -0
  292. package/dist/src/utils/research-parser.js +2 -0
  293. package/dist/src/utils/research-parser.js.map +1 -0
  294. package/dist/src/utils/retry.js +55 -0
  295. package/dist/src/utils/retry.js.map +1 -0
  296. package/dist/src/utils/rules-loader.js +104 -0
  297. package/dist/src/utils/rules-loader.js.map +1 -0
  298. package/dist/src/utils/strings.js +14 -0
  299. package/dist/src/utils/strings.js.map +1 -0
  300. package/dist/src/utils/test-plan-markdown.js +301 -0
  301. package/dist/src/utils/test-plan-markdown.js.map +1 -0
  302. package/dist/src/utils/throttle.js +16 -0
  303. package/dist/src/utils/throttle.js.map +1 -0
  304. package/dist/src/utils/unique-names.js +13 -0
  305. package/dist/src/utils/unique-names.js.map +1 -0
  306. package/dist/src/utils/url-matcher.js +48 -0
  307. package/dist/src/utils/url-matcher.js.map +1 -0
  308. package/dist/src/utils/web-element.js +131 -0
  309. package/dist/src/utils/web-element.js.map +1 -0
  310. package/dist/src/utils/xpath.js +110 -0
  311. package/dist/src/utils/xpath.js.map +1 -0
  312. package/package.json +119 -0
  313. package/prompts/audit-rules.md +124 -0
  314. package/rules/chief/general.md +11 -0
  315. package/rules/chief/styles/curious.md +12 -0
  316. package/rules/chief/styles/hacker.md +19 -0
  317. package/rules/chief/styles/normal.md +11 -0
  318. package/rules/chief/styles/psycho.md +17 -0
  319. package/rules/navigator/multiple-locator.md +47 -0
  320. package/rules/navigator/output.md +69 -0
  321. package/rules/navigator/verification-actions.md +122 -0
  322. package/rules/navigator/verification-output.md +53 -0
  323. package/rules/planner/styles/curious.md +39 -0
  324. package/rules/planner/styles/normal.md +21 -0
  325. package/rules/planner/styles/psycho.md +14 -0
  326. package/rules/researcher/list-element.md +11 -0
  327. package/rules/researcher/screenshot-ui-map.md +30 -0
  328. package/rules/researcher/section-ui-map.md +18 -0
  329. package/rules/researcher/ui-map-table.md +18 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-query.js","sourceRoot":"","sources":["../../../src/utils/markdown-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import dedent from 'dedent';
2
+ import { marked } from 'marked';
3
+ import { markedTerminal } from 'marked-terminal';
4
+ if (!process.env.FORCE_COLOR) {
5
+ process.env.FORCE_COLOR = '1';
6
+ }
7
+ marked.use(markedTerminal());
8
+ marked.setOptions({ breaks: true });
9
+ const renderer = marked.defaults.renderer;
10
+ if (renderer) {
11
+ if (renderer.text) {
12
+ const originalText = renderer.text;
13
+ renderer.text = function (text) {
14
+ if (typeof text === 'object') {
15
+ text = text.tokens ? this.parser.parseInline(text.tokens) : text.text;
16
+ }
17
+ return originalText.call(this, text);
18
+ };
19
+ }
20
+ if (renderer.listitem) {
21
+ const originalListitem = renderer.listitem;
22
+ renderer.listitem = function (text) {
23
+ if (typeof text === 'object') {
24
+ const item = text;
25
+ const parser = this.parser;
26
+ const originalParse = parser.parse.bind(parser);
27
+ parser.parse = (tokens, loose) => parser.parseInline(tokens);
28
+ const result = originalListitem.call(this, text);
29
+ parser.parse = originalParse;
30
+ return result;
31
+ }
32
+ return originalListitem.call(this, text);
33
+ };
34
+ }
35
+ }
36
+ export function parseMarkdownToTerminal(markdown) {
37
+ const result = marked.parse(dedent(markdown));
38
+ return result.replace(/^ {4}\*/gm, '*');
39
+ }
40
+ //# sourceMappingURL=markdown-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-terminal.js","sourceRoot":"","sources":["../../../src/utils/markdown-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;AAC7B,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpC,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnD,IAAI,QAAQ,EAAE,CAAC;IACb,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnC,QAAQ,CAAC,IAAI,GAAG,UAAU,IAAS;YACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxE,CAAC;YACD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC3C,QAAQ,CAAC,QAAQ,GAAG,UAAU,IAAS;YACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,GAAG,CAAC,MAAW,EAAE,KAAe,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAW,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RESEARCH_COLUMN_ORDER, extractContainerFromBlockquote, extractValidContainers, formatResearchSummary, mapRowToElement, parseResearchSections, rebuildSectionMarkdown, } from "../ai/researcher/parser.js";
2
+ //# sourceMappingURL=research-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-parser.js","sourceRoot":"","sources":["../../../src/utils/research-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAGrB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { createDebug, tag } from './logger.js';
2
+ const debugLog = createDebug('explorbot:retry');
3
+ const RATE_LIMIT_DELAYS = [10_000, 20_000, 30_000, 60_000, 90_000];
4
+ const RATE_LIMIT_MAX_ATTEMPTS = RATE_LIMIT_DELAYS.length + 1;
5
+ const defaultOptions = {
6
+ maxAttempts: 3,
7
+ baseDelay: 1000,
8
+ maxDelay: 10000,
9
+ backoffMultiplier: 2,
10
+ retryCondition: (error) => {
11
+ return error.constructor.name === 'AI_APICallError' || error.message.includes('schema') || error.message.includes('timeout') || error.message.includes('network') || error.message.includes('rate limit') || error.message.includes('Failed to generate JSON');
12
+ },
13
+ };
14
+ function isRateLimitError(error) {
15
+ return error.message.toLowerCase().includes('rate limit');
16
+ }
17
+ export async function withRetry(operation, options = {}) {
18
+ const config = { ...defaultOptions, ...options };
19
+ let lastError;
20
+ let rateLimitAttempt = 0;
21
+ for (let attempt = 1; attempt <= config.maxAttempts; attempt++) {
22
+ try {
23
+ if (attempt > 1)
24
+ debugLog(`Attempt ${attempt}/${config.maxAttempts}`);
25
+ return await operation();
26
+ }
27
+ catch (error) {
28
+ lastError = error instanceof Error ? error : new Error(String(error));
29
+ if (lastError.name === 'AbortError') {
30
+ throw lastError;
31
+ }
32
+ if (isRateLimitError(lastError) && rateLimitAttempt < RATE_LIMIT_DELAYS.length) {
33
+ const delay = RATE_LIMIT_DELAYS[rateLimitAttempt];
34
+ tag('warning').log(`Rate limit hit, waiting ${delay / 1000}s before retry (${rateLimitAttempt + 1}/${RATE_LIMIT_MAX_ATTEMPTS})...`);
35
+ await new Promise((resolve) => setTimeout(resolve, delay));
36
+ rateLimitAttempt++;
37
+ attempt--;
38
+ continue;
39
+ }
40
+ if (attempt === config.maxAttempts) {
41
+ debugLog(`All ${config.maxAttempts} attempts failed`);
42
+ throw lastError;
43
+ }
44
+ if (!config.retryCondition(lastError)) {
45
+ debugLog('Error does not meet retry condition, not retrying');
46
+ throw lastError;
47
+ }
48
+ const delay = Math.min(config.baseDelay * config.backoffMultiplier ** (attempt - 1), config.maxDelay);
49
+ debugLog(`Retrying in ${delay}ms. Error: ${lastError.message}`);
50
+ await new Promise((resolve) => setTimeout(resolve, delay));
51
+ }
52
+ }
53
+ throw lastError;
54
+ }
55
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { basename, dirname, join, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { tag } from "./logger.js";
5
+ import { matchesUrl } from "./url-matcher.js";
6
+ const BUILT_IN_DIR = resolve(dirname(fileURLToPath(import.meta.url)), '../../rules');
7
+ export class RulesLoader {
8
+ static loadRules(agentName, rulesConfig, currentUrl) {
9
+ const parts = [];
10
+ for (const entry of rulesConfig) {
11
+ if (typeof entry === 'string') {
12
+ const content = loadFile(agentName, entry);
13
+ if (content)
14
+ parts.push(content);
15
+ continue;
16
+ }
17
+ for (const [pattern, filename] of Object.entries(entry)) {
18
+ if (!matchesUrl(pattern, currentUrl))
19
+ continue;
20
+ const content = loadFile(agentName, filename);
21
+ if (content)
22
+ parts.push(content);
23
+ }
24
+ }
25
+ return parts.join('\n\n');
26
+ }
27
+ static loadStyles(agentName, styleNames) {
28
+ const styles = {};
29
+ for (const name of styleNames) {
30
+ styles[name] = loadStyleFile(agentName, name);
31
+ }
32
+ return styles;
33
+ }
34
+ static listStyleNames(agentName) {
35
+ const names = new Set();
36
+ const userDir = join(process.cwd(), 'rules', agentName, 'styles');
37
+ const builtInDir = join(BUILT_IN_DIR, agentName, 'styles');
38
+ for (const dir of [userDir, builtInDir]) {
39
+ if (!existsSync(dir))
40
+ continue;
41
+ for (const f of readdirSync(dir)) {
42
+ if (f.endsWith('.md'))
43
+ names.add(basename(f, '.md'));
44
+ }
45
+ }
46
+ if (!names.size) {
47
+ throw new Error(`No planning styles found for agent "${agentName}". Expected .md files under rules/${agentName}/styles/ or bundled rules.`);
48
+ }
49
+ return [...names].sort();
50
+ }
51
+ static getActiveStyle(styles, iteration, override) {
52
+ const names = Object.keys(styles);
53
+ if (override) {
54
+ const approach = styles[override];
55
+ if (!approach)
56
+ throw new Error(`Unknown planning style: "${override}". Available: ${names.join(', ')}`);
57
+ return { name: override, approach };
58
+ }
59
+ const idx = iteration % names.length;
60
+ const name = names[idx];
61
+ return { name, approach: styles[name] };
62
+ }
63
+ static extractStyles(agentName, targetDir) {
64
+ const sourceDir = join(BUILT_IN_DIR, agentName, 'styles');
65
+ if (!existsSync(sourceDir))
66
+ throw new Error(`No built-in styles found for agent: ${agentName}`);
67
+ mkdirSync(targetDir, { recursive: true });
68
+ const files = readdirSync(sourceDir)
69
+ .filter((f) => f.endsWith('.md'))
70
+ .sort();
71
+ const extracted = [];
72
+ for (const file of files) {
73
+ const target = join(targetDir, file);
74
+ if (existsSync(target)) {
75
+ tag('info').log(`Skipping ${file} (already exists)`);
76
+ continue;
77
+ }
78
+ writeFileSync(target, readFileSync(join(sourceDir, file), 'utf8'));
79
+ extracted.push(file);
80
+ tag('success').log(`Extracted ${file}`);
81
+ }
82
+ return extracted;
83
+ }
84
+ }
85
+ function loadFile(agentName, name, subdir) {
86
+ const file = `${name}.md`;
87
+ const segments = subdir ? [agentName, subdir, file] : [agentName, file];
88
+ const userPath = join(process.cwd(), 'rules', ...segments);
89
+ if (existsSync(userPath))
90
+ return readFileSync(userPath, 'utf8').trim();
91
+ const builtInPath = join(BUILT_IN_DIR, ...segments);
92
+ if (existsSync(builtInPath))
93
+ return readFileSync(builtInPath, 'utf8').trim();
94
+ return undefined;
95
+ }
96
+ function loadStyleFile(agentName, name) {
97
+ const content = loadFile(agentName, name, 'styles');
98
+ if (content)
99
+ return content;
100
+ const userPath = join(process.cwd(), 'rules', agentName, 'styles', `${name}.md`);
101
+ const builtInPath = join(BUILT_IN_DIR, agentName, 'styles', `${name}.md`);
102
+ throw new Error(`Style "${name}" not found for agent "${agentName}". Searched: ${userPath}, ${builtInPath}`);
103
+ }
104
+ //# sourceMappingURL=rules-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-loader.js","sourceRoot":"","sources":["../../../src/utils/rules-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAErF,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,SAAS,CAAC,SAAiB,EAAE,WAAwB,EAAE,UAAkB;QAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC;oBAAE,SAAS;gBAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC9C,IAAI,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,SAAiB,EAAE,UAAoB;QACvD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,SAAiB;QACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3D,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/B,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,qCAAqC,SAAS,4BAA4B,CAAC,CAAC;QAC9I,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAA8B,EAAE,SAAiB,EAAE,QAAiB;QACxF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAiB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;QAEhG,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChC,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,CAAC,CAAC;gBACrD,SAAS;YACX,CAAC;YACD,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACnE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAAY,EAAE,MAAe;IAChE,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAExE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,IAAY;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,0BAA0B,SAAS,gBAAgB,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC;AAC/G,CAAC"}
@@ -0,0 +1,14 @@
1
+ export function truncateJson(input) {
2
+ if (!input)
3
+ return '';
4
+ const str = JSON.stringify(input);
5
+ return str.length <= 80 ? str : `${str.slice(0, 77)}...`;
6
+ }
7
+ export function sanitizeFilename(name) {
8
+ return name
9
+ .toLowerCase()
10
+ .replace(/[^a-z0-9]+/g, '_')
11
+ .replace(/^_+|_+$/g, '')
12
+ .slice(0, 50);
13
+ }
14
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAU;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,301 @@
1
+ import { readFileSync, writeFileSync } from 'node:fs';
2
+ import { Plan, Test } from "../test-plan.js";
3
+ import { mdq } from "./markdown-query.js";
4
+ const NOISE_PREFIXES = ['Test started', 'Finish requested:', 'Session name:'];
5
+ function isNoiseNote(message) {
6
+ return NOISE_PREFIXES.some((prefix) => message.startsWith(prefix));
7
+ }
8
+ function getPilotVerdict(notes) {
9
+ for (const note of Object.values(notes)) {
10
+ if (note.status === 'passed' && note.message.startsWith('Pilot:')) {
11
+ return note.message.replace(/^Pilot:\s*/, '');
12
+ }
13
+ }
14
+ return null;
15
+ }
16
+ function formatBulletItem(text) {
17
+ const lines = text.split('\n');
18
+ let result = `* ${lines[0]}\n`;
19
+ for (let i = 1; i < lines.length; i++) {
20
+ result += `${lines[i]}\n`;
21
+ }
22
+ return result;
23
+ }
24
+ function parseMultiLineBullet(lines, i) {
25
+ let text = lines[i].replace(/^\*\s+/, '');
26
+ let j = i + 1;
27
+ while (j < lines.length) {
28
+ const nextLine = lines[j];
29
+ const trimmedNext = nextLine.trim();
30
+ if (nextLine.match(/^\*\s+/))
31
+ break;
32
+ if (trimmedNext.startsWith('##') || trimmedNext.startsWith('<!--'))
33
+ break;
34
+ if (nextLine.startsWith(' ')) {
35
+ text += `\n${nextLine}`;
36
+ j++;
37
+ }
38
+ else {
39
+ break;
40
+ }
41
+ }
42
+ return { text, nextIndex: j - 1 };
43
+ }
44
+ function formatFailedNotes(notes) {
45
+ const lines = [];
46
+ for (const note of Object.values(notes)) {
47
+ if (!note.status)
48
+ continue;
49
+ if (isNoiseNote(note.message))
50
+ continue;
51
+ if (note.message.startsWith('Pilot:'))
52
+ continue;
53
+ if (note.status === 'passed') {
54
+ lines.push(` ${note.message}`);
55
+ }
56
+ else if (note.status === 'failed') {
57
+ lines.push(` FAILED ${note.message}`);
58
+ }
59
+ }
60
+ return lines;
61
+ }
62
+ export function planToCompactAiContext(plan) {
63
+ const allTests = plan.getAllTests();
64
+ const passed = allTests.filter((t) => t.result === 'passed');
65
+ const failed = allTests.filter((t) => t.result === 'failed');
66
+ const pending = allTests.filter((t) => !t.result);
67
+ const summaryParts = [];
68
+ if (passed.length > 0)
69
+ summaryParts.push(`${passed.length} passed`);
70
+ if (failed.length > 0)
71
+ summaryParts.push(`${failed.length} failed`);
72
+ if (pending.length > 0)
73
+ summaryParts.push(`${pending.length} pending`);
74
+ let content = `${allTests.length} tests (${summaryParts.join(', ')})\n`;
75
+ if (passed.length > 0) {
76
+ content += '\n## Passed\n';
77
+ for (const test of passed) {
78
+ content += `- [${test.priority}]${test.style ? ` [${test.style}]` : ''} "${test.scenario}"\n`;
79
+ if (test.startUrl)
80
+ content += ` url: ${test.startUrl}\n`;
81
+ const verdict = getPilotVerdict(test.notes);
82
+ if (verdict)
83
+ content += ` Verdict: ${verdict}\n`;
84
+ }
85
+ }
86
+ if (failed.length > 0) {
87
+ content += '\n## Failed\n';
88
+ for (const test of failed) {
89
+ content += `- [${test.priority}]${test.style ? ` [${test.style}]` : ''} "${test.scenario}"\n`;
90
+ if (test.startUrl)
91
+ content += ` url: ${test.startUrl}\n`;
92
+ const noteLines = formatFailedNotes(test.notes);
93
+ content += noteLines.join('\n');
94
+ if (noteLines.length > 0)
95
+ content += '\n';
96
+ }
97
+ }
98
+ if (pending.length > 0) {
99
+ content += '\n## Pending\n';
100
+ for (const test of pending) {
101
+ content += `- [${test.priority}] "${test.scenario}"\n`;
102
+ }
103
+ }
104
+ return content;
105
+ }
106
+ export function parsePlanFromMarkdown(filePath) {
107
+ const plans = parsePlansFromMarkdown(filePath);
108
+ if (plans.length === 0)
109
+ return new Plan('');
110
+ if (plans.length === 1)
111
+ return plans[0];
112
+ const main = plans[0];
113
+ for (let i = 1; i < plans.length; i++) {
114
+ for (const test of plans[i].tests) {
115
+ main.addTest(test);
116
+ }
117
+ }
118
+ return main;
119
+ }
120
+ export function parsePlansFromMarkdown(filePath) {
121
+ const content = readFileSync(filePath, 'utf-8');
122
+ const lines = content.split('\n');
123
+ const plans = [];
124
+ let currentPlan = null;
125
+ let currentTest = null;
126
+ let inRequirements = false;
127
+ let inSteps = false;
128
+ let inExpected = false;
129
+ let priority = 'normal';
130
+ for (let i = 0; i < lines.length; i++) {
131
+ const line = lines[i].trim();
132
+ if (line.startsWith('<!-- suite -->')) {
133
+ currentTest = null;
134
+ inRequirements = false;
135
+ inSteps = false;
136
+ inExpected = false;
137
+ priority = 'normal';
138
+ const title = lines[i + 1]?.replace(/^#\s+/, '') || '';
139
+ currentPlan = new Plan(title);
140
+ plans.push(currentPlan);
141
+ i++;
142
+ continue;
143
+ }
144
+ if (!currentPlan)
145
+ continue;
146
+ if (line.startsWith('<!-- test')) {
147
+ currentTest = null;
148
+ const priorityMatch = line.match(/priority:\s*(\w+)/);
149
+ priority = priorityMatch?.[1] || 'normal';
150
+ continue;
151
+ }
152
+ if (line.startsWith('# ') && currentTest === null) {
153
+ const scenario = line.replace(/^#\s+/, '');
154
+ currentTest = new Test(scenario, priority, [], '');
155
+ currentPlan.addTest(currentTest);
156
+ inRequirements = false;
157
+ inSteps = false;
158
+ inExpected = false;
159
+ continue;
160
+ }
161
+ if (currentTest && line === '## Requirements') {
162
+ inRequirements = true;
163
+ inSteps = false;
164
+ inExpected = false;
165
+ continue;
166
+ }
167
+ if (currentTest && line === '## Steps') {
168
+ inRequirements = false;
169
+ inSteps = true;
170
+ inExpected = false;
171
+ continue;
172
+ }
173
+ if (currentTest && line === '## Expected') {
174
+ inRequirements = false;
175
+ inSteps = false;
176
+ inExpected = true;
177
+ continue;
178
+ }
179
+ if (currentTest && inRequirements && line && !line.startsWith('##')) {
180
+ currentTest.startUrl = line;
181
+ continue;
182
+ }
183
+ if (currentTest && inSteps && line.startsWith('* ')) {
184
+ const { text, nextIndex } = parseMultiLineBullet(lines, i);
185
+ currentTest.plannedSteps.push(text);
186
+ i = nextIndex;
187
+ continue;
188
+ }
189
+ if (currentTest && inExpected && line.startsWith('* ')) {
190
+ const { text, nextIndex } = parseMultiLineBullet(lines, i);
191
+ currentTest.expected.push(text);
192
+ i = nextIndex;
193
+ }
194
+ }
195
+ for (const plan of plans) {
196
+ if (plan.url)
197
+ continue;
198
+ const suiteStart = content.indexOf(`# ${plan.title}`);
199
+ if (suiteStart === -1)
200
+ continue;
201
+ const nextSuite = content.indexOf('<!-- suite -->', suiteStart + 1);
202
+ const suiteContent = nextSuite === -1 ? content.slice(suiteStart) : content.slice(suiteStart, nextSuite);
203
+ const firstItem = mdq(suiteContent).query('section[0] item[0]').text().trim();
204
+ const urlMatch = firstItem.match(/^URL:\s*(.+)/);
205
+ if (urlMatch) {
206
+ plan.url = urlMatch[1].replace(/\*\*|`|\*|_|~~?/g, '').trim();
207
+ for (const test of plan.tests) {
208
+ if (!test.startUrl)
209
+ test.startUrl = plan.url;
210
+ }
211
+ }
212
+ }
213
+ return plans;
214
+ }
215
+ function formatPlanSuite(plan) {
216
+ let content = `<!-- suite -->\n# ${plan.title}\n\n`;
217
+ if (plan.url) {
218
+ content += `### Prerequisite\n\n* URL: ${plan.url}\n\n`;
219
+ }
220
+ if (plan.iteration > 0) {
221
+ content += `<!-- plan updated on ${new Date().toISOString()} -->\n\n`;
222
+ }
223
+ for (const test of plan.tests) {
224
+ content += `<!-- test\npriority: ${test.priority}\n-->\n`;
225
+ content += `# ${test.scenario}\n\n`;
226
+ content += '## Requirements\n';
227
+ content += `${test.startUrl || 'Current page'}\n\n`;
228
+ if (test.plannedSteps.length > 0) {
229
+ content += '## Steps\n';
230
+ for (const step of test.plannedSteps) {
231
+ content += formatBulletItem(step);
232
+ }
233
+ content += '\n';
234
+ }
235
+ content += '## Expected\n';
236
+ for (const expectation of test.expected) {
237
+ content += formatBulletItem(expectation);
238
+ }
239
+ content += '\n';
240
+ }
241
+ return content;
242
+ }
243
+ export function savePlanToMarkdown(plan, filePath) {
244
+ writeFileSync(filePath, formatPlanSuite(plan), 'utf-8');
245
+ }
246
+ export function savePlansToMarkdown(plans, filePath) {
247
+ const content = plans.map((plan) => formatPlanSuite(plan)).join('\n');
248
+ writeFileSync(filePath, content, 'utf-8');
249
+ }
250
+ export function planToAiContext(plan, options) {
251
+ let content = `# Test Plan: ${plan.title}\n\n`;
252
+ if (plan.url) {
253
+ content += `**URL:** ${plan.url}\n\n`;
254
+ }
255
+ content += `**Total Tests:** ${plan.tests.length}\n`;
256
+ content += `**Status:** ${plan.isComplete ? 'Complete' : 'In Progress'}\n\n`;
257
+ for (let i = 0; i < plan.tests.length; i++) {
258
+ const test = plan.tests[i];
259
+ content += `## Test ${i + 1}: ${test.scenario}\n\n`;
260
+ content += `**Priority:** ${test.priority}\n`;
261
+ content += `**Status:** ${test.status}\n`;
262
+ if (test.result) {
263
+ content += `**Result:** ${test.result}\n`;
264
+ }
265
+ content += '\n';
266
+ if (test.startUrl) {
267
+ content += `**Start URL:** ${test.startUrl}\n\n`;
268
+ }
269
+ if (test.plannedSteps.length > 0) {
270
+ content += '**Planned Steps:**\n';
271
+ for (const step of test.plannedSteps) {
272
+ content += `- ${step}\n`;
273
+ }
274
+ content += '\n';
275
+ }
276
+ if (test.expected.length > 0) {
277
+ content += '**Expected Outcomes:**\n';
278
+ for (const expectation of test.expected) {
279
+ content += `- ${expectation}\n`;
280
+ }
281
+ content += '\n';
282
+ }
283
+ if (!options?.skipSteps && Object.keys(test.steps).length > 0) {
284
+ content += '**Steps:**\n';
285
+ for (const step of Object.values(test.steps)) {
286
+ content += `- ${step.text}\n`;
287
+ }
288
+ content += '\n';
289
+ }
290
+ if (Object.keys(test.notes).length > 0) {
291
+ content += '**Notes:**\n';
292
+ for (const note of test.getPrintableNotes()) {
293
+ content += `${note}\n`;
294
+ }
295
+ content += '\n';
296
+ }
297
+ content += '---\n\n';
298
+ }
299
+ return content;
300
+ }
301
+ //# sourceMappingURL=test-plan-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-plan-markdown.js","sourceRoot":"","sources":["../../../src/utils/test-plan-markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ const DEFAULT_INTERVAL_SECONDS = 30;
2
+ const lastExecutionByKey = new Map();
3
+ export async function throttle(fn, intervalSeconds = DEFAULT_INTERVAL_SECONDS) {
4
+ const key = fn.toString();
5
+ const now = Date.now();
6
+ const lastExecution = lastExecutionByKey.get(key);
7
+ if (lastExecution !== undefined && now - lastExecution < intervalSeconds * 1000) {
8
+ return undefined;
9
+ }
10
+ lastExecutionByKey.set(key, now);
11
+ return await fn();
12
+ }
13
+ export function __clearThrottleCacheForTests() {
14
+ lastExecutionByKey.clear();
15
+ }
16
+ //# sourceMappingURL=throttle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/utils/throttle.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,EAAwB,EAAE,eAAe,GAAG,wBAAwB;IACpG,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,aAAa,KAAK,SAAS,IAAI,GAAG,GAAG,aAAa,GAAG,eAAe,GAAG,IAAI,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,EAAE,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { adjectives, colors, uniqueNamesGenerator } from 'unique-names-generator';
2
+ const nameConfig = {
3
+ dictionaries: [adjectives, adjectives, colors],
4
+ separator: '',
5
+ length: 3,
6
+ style: 'capital',
7
+ };
8
+ export function uniqSessionName() {
9
+ const name = uniqueNamesGenerator(nameConfig);
10
+ const randomNum = Math.floor(Math.random() * 999);
11
+ return `${name}${randomNum}`;
12
+ }
13
+ //# sourceMappingURL=unique-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-names.js","sourceRoot":"","sources":["../../../src/utils/unique-names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,MAAM,UAAU,GAAG;IACjB,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;IAC9C,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAClD,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;AAC/B,CAAC"}