explorbot 0.0.1 → 0.1.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 (423) hide show
  1. package/README.md +80 -26
  2. package/bin/explorbot-cli.ts +680 -0
  3. package/boat/api-tester/src/ai/chief/styles.ts +15 -0
  4. package/boat/api-tester/src/ai/chief.ts +335 -0
  5. package/boat/api-tester/src/ai/curler-tools.ts +278 -0
  6. package/boat/api-tester/src/ai/curler.ts +306 -0
  7. package/boat/api-tester/src/api-client.ts +28 -0
  8. package/boat/api-tester/src/apibot.ts +203 -0
  9. package/boat/api-tester/src/cli.ts +301 -0
  10. package/boat/api-tester/src/config.ts +190 -0
  11. package/dist/bin/explorbot-cli.js +23 -101
  12. package/dist/boat/api-tester/bin/apibot-cli.js +0 -1
  13. package/dist/boat/api-tester/src/ai/chief/styles.js +0 -1
  14. package/dist/boat/api-tester/src/ai/chief.js +0 -1
  15. package/dist/boat/api-tester/src/ai/curler-tools.js +0 -1
  16. package/dist/boat/api-tester/src/ai/curler.js +0 -1
  17. package/dist/boat/api-tester/src/api-client.js +0 -1
  18. package/dist/boat/api-tester/src/apibot.js +0 -1
  19. package/dist/boat/api-tester/src/cli.js +0 -1
  20. package/dist/boat/api-tester/src/config.js +0 -1
  21. package/dist/src/action-result.js +0 -1
  22. package/dist/src/action.js +14 -12
  23. package/dist/src/activity.js +0 -1
  24. package/dist/src/ai/agent.js +0 -1
  25. package/dist/src/ai/bosun.js +0 -1
  26. package/dist/src/ai/captain/idle-mode.js +0 -1
  27. package/dist/src/ai/captain/mixin.js +0 -1
  28. package/dist/src/ai/captain/test-mode.js +0 -1
  29. package/dist/src/ai/captain/web-mode.js +0 -1
  30. package/dist/src/ai/captain.js +0 -1
  31. package/dist/src/ai/conversation.js +0 -1
  32. package/dist/src/ai/experience-compactor.js +0 -1
  33. package/dist/src/ai/fisherman-tools.js +0 -1
  34. package/dist/src/ai/fisherman.js +0 -1
  35. package/dist/src/ai/historian.js +0 -1
  36. package/dist/src/ai/navigator.js +0 -1
  37. package/dist/src/ai/pilot.js +0 -1
  38. package/dist/src/ai/planner/session-dedup.js +0 -1
  39. package/dist/src/ai/planner/styles.js +0 -1
  40. package/dist/src/ai/planner/subpages.js +42 -7
  41. package/dist/src/ai/planner.js +15 -4
  42. package/dist/src/ai/provider.js +0 -1
  43. package/dist/src/ai/quartermaster.js +0 -1
  44. package/dist/src/ai/researcher/cache.js +13 -9
  45. package/dist/src/ai/researcher/coordinates.js +4 -3
  46. package/dist/src/ai/researcher/deep-analysis.js +16 -20
  47. package/dist/src/ai/researcher/fingerprint-worker.js +0 -1
  48. package/dist/src/ai/researcher/focus.js +0 -1
  49. package/dist/src/ai/researcher/locators.js +1 -2
  50. package/dist/src/ai/researcher/mixin.js +0 -1
  51. package/dist/src/ai/researcher/parser.js +4 -4
  52. package/dist/src/ai/researcher/research-result.js +2 -1
  53. package/dist/src/ai/researcher.js +6 -6
  54. package/dist/src/ai/rules.js +0 -1
  55. package/dist/src/ai/task-agent.js +0 -1
  56. package/dist/src/ai/tester.js +0 -1
  57. package/dist/src/ai/tools.js +4 -1
  58. package/dist/src/api/api-client.js +0 -1
  59. package/dist/src/api/request-result.js +0 -1
  60. package/dist/src/api/request-store.js +0 -1
  61. package/dist/src/api/spec-reader.js +0 -1
  62. package/dist/src/api/xhr-capture.js +0 -1
  63. package/dist/src/browser-server.js +0 -1
  64. package/dist/src/command-handler.js +0 -1
  65. package/dist/src/commands/add-rule-command.js +0 -1
  66. package/dist/src/commands/base-command.js +0 -1
  67. package/dist/src/commands/clean-command.js +0 -1
  68. package/dist/src/commands/context-aria-command.js +0 -1
  69. package/dist/src/commands/context-command.js +2 -3
  70. package/dist/src/commands/context-data-command.js +0 -1
  71. package/dist/src/commands/context-experience-command.js +0 -1
  72. package/dist/src/commands/context-html-command.js +0 -1
  73. package/dist/src/commands/context-knowledge-command.js +0 -1
  74. package/dist/src/commands/debug-command.js +0 -1
  75. package/dist/src/commands/drill-command.js +0 -1
  76. package/dist/src/commands/exit-command.js +0 -1
  77. package/dist/src/commands/explore-command.js +3 -3
  78. package/dist/src/commands/freesail-command.js +0 -1
  79. package/dist/src/commands/help-command.js +0 -1
  80. package/dist/src/commands/index.js +0 -1
  81. package/dist/src/commands/init-command.js +117 -0
  82. package/dist/src/commands/knows-command.js +0 -1
  83. package/dist/src/commands/learn-command.js +0 -1
  84. package/dist/src/commands/navigate-command.js +0 -1
  85. package/dist/src/commands/path-command.js +0 -1
  86. package/dist/src/commands/plan-clear-command.js +0 -1
  87. package/dist/src/commands/plan-command.js +6 -2
  88. package/dist/src/commands/plan-edit-command.js +0 -1
  89. package/dist/src/commands/plan-load-command.js +0 -1
  90. package/dist/src/commands/plan-reload-command.js +0 -1
  91. package/dist/src/commands/plan-save-command.js +0 -1
  92. package/dist/src/commands/research-command.js +0 -1
  93. package/dist/src/commands/start-command.js +0 -1
  94. package/dist/src/commands/status-command.js +0 -1
  95. package/dist/src/commands/test-command.js +0 -1
  96. package/dist/src/components/ActivityPane.js +0 -1
  97. package/dist/src/components/AddKnowledge.js +0 -1
  98. package/dist/src/components/AddRule.js +0 -1
  99. package/dist/src/components/App.js +0 -1
  100. package/dist/src/components/Autocomplete.js +0 -1
  101. package/dist/src/components/InputPane.js +0 -1
  102. package/dist/src/components/InputReadline.js +0 -1
  103. package/dist/src/components/LogPane.js +0 -1
  104. package/dist/src/components/PlanEditor.js +0 -1
  105. package/dist/src/components/PlanPane.js +0 -1
  106. package/dist/src/components/SessionTimer.js +0 -1
  107. package/dist/src/components/StateTransitionPane.js +0 -1
  108. package/dist/src/components/StatusPane.js +0 -1
  109. package/dist/src/components/TaskPane.js +0 -1
  110. package/dist/src/components/Welcome.js +0 -1
  111. package/dist/src/components/WelcomeChecklist.js +0 -1
  112. package/dist/src/components/WelcomeCommands.js +0 -1
  113. package/dist/src/components/autocomplete-store.js +0 -1
  114. package/dist/src/components/parse-keypress.js +0 -1
  115. package/dist/src/config.js +0 -1
  116. package/dist/src/execution-controller.js +0 -1
  117. package/dist/src/experience-tracker.js +0 -1
  118. package/dist/src/explorbot.js +1 -2
  119. package/dist/src/explorer.js +58 -17
  120. package/dist/src/index.js +0 -1
  121. package/dist/src/knowledge-tracker.js +2 -2
  122. package/dist/src/observability.js +0 -1
  123. package/dist/src/reporter.js +0 -1
  124. package/dist/src/state-manager.js +0 -1
  125. package/dist/src/stats.js +0 -1
  126. package/dist/src/test-plan.js +0 -1
  127. package/dist/src/utils/aria.js +0 -1
  128. package/dist/src/utils/cli-name.js +16 -0
  129. package/dist/src/utils/code-extractor.js +0 -1
  130. package/dist/src/utils/context-formatter.js +0 -1
  131. package/dist/src/utils/error-page.js +0 -1
  132. package/dist/src/utils/expandable.js +0 -1
  133. package/dist/src/utils/hooks-runner.js +0 -1
  134. package/dist/src/utils/html-diff.js +0 -1
  135. package/dist/src/utils/html.js +0 -1
  136. package/dist/src/utils/logger.js +0 -1
  137. package/dist/src/utils/loop.js +0 -1
  138. package/dist/src/utils/markdown-parser.js +0 -1
  139. package/dist/src/utils/markdown-query.js +0 -1
  140. package/dist/src/utils/markdown-terminal.js +0 -1
  141. package/dist/src/utils/research-parser.js +0 -1
  142. package/dist/src/utils/retry.js +0 -1
  143. package/dist/src/utils/rules-loader.js +0 -1
  144. package/dist/src/utils/strings.js +0 -1
  145. package/dist/src/utils/test-plan-markdown.js +0 -1
  146. package/dist/src/utils/throttle.js +0 -1
  147. package/dist/src/utils/unique-names.js +0 -1
  148. package/dist/src/utils/url-matcher.js +0 -1
  149. package/dist/src/utils/web-element.js +6 -5
  150. package/dist/src/utils/xpath.js +0 -1
  151. package/package.json +28 -4
  152. package/src/action-result.ts +694 -0
  153. package/src/action.ts +449 -0
  154. package/src/activity.ts +111 -0
  155. package/src/ai/agent.ts +3 -0
  156. package/src/ai/bosun.ts +557 -0
  157. package/src/ai/captain/idle-mode.ts +116 -0
  158. package/src/ai/captain/mixin.ts +22 -0
  159. package/src/ai/captain/test-mode.ts +262 -0
  160. package/src/ai/captain/web-mode.ts +136 -0
  161. package/src/ai/captain.ts +504 -0
  162. package/src/ai/conversation.ts +205 -0
  163. package/src/ai/experience-compactor.ts +284 -0
  164. package/src/ai/fisherman-tools.ts +181 -0
  165. package/src/ai/fisherman.ts +223 -0
  166. package/src/ai/historian.ts +457 -0
  167. package/src/ai/navigator.ts +572 -0
  168. package/src/ai/pilot.ts +776 -0
  169. package/src/ai/planner/session-dedup.ts +35 -0
  170. package/src/ai/planner/styles.ts +17 -0
  171. package/src/ai/planner/subpages.ts +171 -0
  172. package/src/ai/planner.ts +549 -0
  173. package/src/ai/provider.ts +613 -0
  174. package/src/ai/quartermaster.ts +286 -0
  175. package/src/ai/researcher/cache.ts +109 -0
  176. package/src/ai/researcher/coordinates.ts +239 -0
  177. package/src/ai/researcher/deep-analysis.ts +412 -0
  178. package/src/ai/researcher/fingerprint-worker.ts +59 -0
  179. package/src/ai/researcher/focus.ts +42 -0
  180. package/src/ai/researcher/locators.ts +282 -0
  181. package/src/ai/researcher/mixin.ts +4 -0
  182. package/src/ai/researcher/parser.ts +186 -0
  183. package/src/ai/researcher/research-result.ts +116 -0
  184. package/src/ai/researcher.ts +858 -0
  185. package/src/ai/rules.ts +376 -0
  186. package/src/ai/task-agent.ts +141 -0
  187. package/src/ai/tester.ts +939 -0
  188. package/src/ai/tools.ts +1122 -0
  189. package/src/api/api-client.ts +109 -0
  190. package/src/api/request-result.ts +212 -0
  191. package/src/api/request-store.ts +130 -0
  192. package/src/api/spec-reader.ts +174 -0
  193. package/src/api/xhr-capture.ts +100 -0
  194. package/src/browser-server.ts +74 -0
  195. package/src/command-handler.ts +454 -0
  196. package/src/commands/add-rule-command.ts +63 -0
  197. package/src/commands/base-command.ts +27 -0
  198. package/src/commands/clean-command.ts +73 -0
  199. package/src/commands/context-aria-command.ts +22 -0
  200. package/src/commands/context-command.ts +67 -0
  201. package/src/commands/context-data-command.ts +30 -0
  202. package/src/commands/context-experience-command.ts +48 -0
  203. package/src/commands/context-html-command.ts +33 -0
  204. package/src/commands/context-knowledge-command.ts +43 -0
  205. package/src/commands/debug-command.ts +13 -0
  206. package/src/commands/drill-command.ts +34 -0
  207. package/src/commands/exit-command.ts +32 -0
  208. package/src/commands/explore-command.ts +129 -0
  209. package/src/commands/freesail-command.ts +95 -0
  210. package/src/commands/help-command.ts +8 -0
  211. package/src/commands/index.ts +69 -0
  212. package/src/commands/init-command.ts +131 -0
  213. package/src/commands/knows-command.ts +68 -0
  214. package/src/commands/learn-command.ts +44 -0
  215. package/src/commands/navigate-command.ts +18 -0
  216. package/src/commands/path-command.ts +83 -0
  217. package/src/commands/plan-clear-command.ts +14 -0
  218. package/src/commands/plan-command.ts +46 -0
  219. package/src/commands/plan-edit-command.ts +9 -0
  220. package/src/commands/plan-load-command.ts +18 -0
  221. package/src/commands/plan-reload-command.ts +28 -0
  222. package/src/commands/plan-save-command.ts +25 -0
  223. package/src/commands/research-command.ts +45 -0
  224. package/src/commands/start-command.ts +13 -0
  225. package/src/commands/status-command.tsx +23 -0
  226. package/src/commands/test-command.ts +84 -0
  227. package/src/components/ActivityPane.tsx +80 -0
  228. package/src/components/AddKnowledge.tsx +169 -0
  229. package/src/components/AddRule.tsx +174 -0
  230. package/src/components/App.tsx +377 -0
  231. package/src/components/Autocomplete.tsx +63 -0
  232. package/src/components/InputPane.tsx +259 -0
  233. package/src/components/InputReadline.tsx +704 -0
  234. package/src/components/LogPane.tsx +187 -0
  235. package/src/components/PlanEditor.tsx +150 -0
  236. package/src/components/PlanPane.tsx +71 -0
  237. package/src/components/SessionTimer.tsx +35 -0
  238. package/src/components/StateTransitionPane.tsx +149 -0
  239. package/src/components/StatusPane.tsx +62 -0
  240. package/src/components/TaskPane.tsx +119 -0
  241. package/src/components/Welcome.tsx +83 -0
  242. package/src/components/WelcomeChecklist.tsx +118 -0
  243. package/src/components/WelcomeCommands.tsx +102 -0
  244. package/src/components/autocomplete-store.ts +35 -0
  245. package/src/components/parse-keypress.ts +170 -0
  246. package/src/config.ts +491 -0
  247. package/src/execution-controller.ts +109 -0
  248. package/src/experience-tracker.ts +350 -0
  249. package/src/explorbot.ts +405 -0
  250. package/src/explorer.ts +760 -0
  251. package/src/index.tsx +62 -0
  252. package/src/knowledge-tracker.ts +230 -0
  253. package/src/observability.ts +150 -0
  254. package/src/reporter.ts +224 -0
  255. package/src/state-manager.ts +556 -0
  256. package/src/stats.ts +53 -0
  257. package/src/test-plan.ts +432 -0
  258. package/src/utils/aria.ts +629 -0
  259. package/src/utils/cli-name.ts +13 -0
  260. package/src/utils/code-extractor.ts +22 -0
  261. package/src/utils/context-formatter.ts +239 -0
  262. package/src/utils/error-page.ts +23 -0
  263. package/src/utils/expandable.ts +38 -0
  264. package/src/utils/hooks-runner.ts +79 -0
  265. package/src/utils/html-diff.ts +918 -0
  266. package/src/utils/html.ts +1316 -0
  267. package/src/utils/logger.ts +534 -0
  268. package/src/utils/loop.ts +176 -0
  269. package/src/utils/markdown-parser.ts +127 -0
  270. package/src/utils/markdown-query.ts +466 -0
  271. package/src/utils/markdown-terminal.ts +43 -0
  272. package/src/utils/research-parser.ts +11 -0
  273. package/src/utils/retry.ts +73 -0
  274. package/src/utils/rules-loader.ts +118 -0
  275. package/src/utils/strings.ts +13 -0
  276. package/src/utils/test-plan-markdown.ts +332 -0
  277. package/src/utils/throttle.ts +18 -0
  278. package/src/utils/unique-names.ts +14 -0
  279. package/src/utils/url-matcher.ts +45 -0
  280. package/src/utils/web-element.ts +147 -0
  281. package/src/utils/xpath.ts +129 -0
  282. package/dist/bin/explorbot-cli.js.map +0 -1
  283. package/dist/boat/api-tester/bin/apibot-cli.js.map +0 -1
  284. package/dist/boat/api-tester/example/apibot.config.js +0 -31
  285. package/dist/boat/api-tester/example/apibot.config.js.map +0 -1
  286. package/dist/boat/api-tester/src/ai/chief/styles.js.map +0 -1
  287. package/dist/boat/api-tester/src/ai/chief.js.map +0 -1
  288. package/dist/boat/api-tester/src/ai/curler-tools.js.map +0 -1
  289. package/dist/boat/api-tester/src/ai/curler.js.map +0 -1
  290. package/dist/boat/api-tester/src/api-client.js.map +0 -1
  291. package/dist/boat/api-tester/src/apibot.js.map +0 -1
  292. package/dist/boat/api-tester/src/cli.js.map +0 -1
  293. package/dist/boat/api-tester/src/config.js.map +0 -1
  294. package/dist/prompts/audit-rules.md +0 -124
  295. package/dist/src/action-result.js.map +0 -1
  296. package/dist/src/action.js.map +0 -1
  297. package/dist/src/activity.js.map +0 -1
  298. package/dist/src/ai/agent.js.map +0 -1
  299. package/dist/src/ai/bosun.js.map +0 -1
  300. package/dist/src/ai/captain/idle-mode.js.map +0 -1
  301. package/dist/src/ai/captain/mixin.js.map +0 -1
  302. package/dist/src/ai/captain/test-mode.js.map +0 -1
  303. package/dist/src/ai/captain/web-mode.js.map +0 -1
  304. package/dist/src/ai/captain.js.map +0 -1
  305. package/dist/src/ai/conversation.js.map +0 -1
  306. package/dist/src/ai/experience-compactor.js.map +0 -1
  307. package/dist/src/ai/fisherman-tools.js.map +0 -1
  308. package/dist/src/ai/fisherman.js.map +0 -1
  309. package/dist/src/ai/historian.js.map +0 -1
  310. package/dist/src/ai/navigator.js.map +0 -1
  311. package/dist/src/ai/pilot.js.map +0 -1
  312. package/dist/src/ai/planner/session-dedup.js.map +0 -1
  313. package/dist/src/ai/planner/styles.js.map +0 -1
  314. package/dist/src/ai/planner/subpages.js.map +0 -1
  315. package/dist/src/ai/planner.js.map +0 -1
  316. package/dist/src/ai/provider.js.map +0 -1
  317. package/dist/src/ai/quartermaster.js.map +0 -1
  318. package/dist/src/ai/researcher/cache.js.map +0 -1
  319. package/dist/src/ai/researcher/coordinates.js.map +0 -1
  320. package/dist/src/ai/researcher/deep-analysis.js.map +0 -1
  321. package/dist/src/ai/researcher/fingerprint-worker.js.map +0 -1
  322. package/dist/src/ai/researcher/focus.js.map +0 -1
  323. package/dist/src/ai/researcher/locators.js.map +0 -1
  324. package/dist/src/ai/researcher/mixin.js.map +0 -1
  325. package/dist/src/ai/researcher/parser.js.map +0 -1
  326. package/dist/src/ai/researcher/research-result.js.map +0 -1
  327. package/dist/src/ai/researcher.js.map +0 -1
  328. package/dist/src/ai/rules.js.map +0 -1
  329. package/dist/src/ai/task-agent.js.map +0 -1
  330. package/dist/src/ai/tester.js.map +0 -1
  331. package/dist/src/ai/tools.js.map +0 -1
  332. package/dist/src/api/api-client.js.map +0 -1
  333. package/dist/src/api/request-result.js.map +0 -1
  334. package/dist/src/api/request-store.js.map +0 -1
  335. package/dist/src/api/spec-reader.js.map +0 -1
  336. package/dist/src/api/xhr-capture.js.map +0 -1
  337. package/dist/src/browser-server.js.map +0 -1
  338. package/dist/src/command-handler.js.map +0 -1
  339. package/dist/src/commands/add-rule-command.js.map +0 -1
  340. package/dist/src/commands/base-command.js.map +0 -1
  341. package/dist/src/commands/clean-command.js.map +0 -1
  342. package/dist/src/commands/context-aria-command.js.map +0 -1
  343. package/dist/src/commands/context-command.js.map +0 -1
  344. package/dist/src/commands/context-data-command.js.map +0 -1
  345. package/dist/src/commands/context-experience-command.js.map +0 -1
  346. package/dist/src/commands/context-html-command.js.map +0 -1
  347. package/dist/src/commands/context-knowledge-command.js.map +0 -1
  348. package/dist/src/commands/debug-command.js.map +0 -1
  349. package/dist/src/commands/drill-command.js.map +0 -1
  350. package/dist/src/commands/exit-command.js.map +0 -1
  351. package/dist/src/commands/explore-command.js.map +0 -1
  352. package/dist/src/commands/freesail-command.js.map +0 -1
  353. package/dist/src/commands/help-command.js.map +0 -1
  354. package/dist/src/commands/index.js.map +0 -1
  355. package/dist/src/commands/knows-command.js.map +0 -1
  356. package/dist/src/commands/learn-command.js.map +0 -1
  357. package/dist/src/commands/navigate-command.js.map +0 -1
  358. package/dist/src/commands/path-command.js.map +0 -1
  359. package/dist/src/commands/plan-clear-command.js.map +0 -1
  360. package/dist/src/commands/plan-command.js.map +0 -1
  361. package/dist/src/commands/plan-edit-command.js.map +0 -1
  362. package/dist/src/commands/plan-load-command.js.map +0 -1
  363. package/dist/src/commands/plan-reload-command.js.map +0 -1
  364. package/dist/src/commands/plan-save-command.js.map +0 -1
  365. package/dist/src/commands/research-command.js.map +0 -1
  366. package/dist/src/commands/start-command.js.map +0 -1
  367. package/dist/src/commands/status-command.js.map +0 -1
  368. package/dist/src/commands/test-command.js.map +0 -1
  369. package/dist/src/components/ActivityPane.js.map +0 -1
  370. package/dist/src/components/AddKnowledge.js.map +0 -1
  371. package/dist/src/components/AddRule.js.map +0 -1
  372. package/dist/src/components/App.js.map +0 -1
  373. package/dist/src/components/Autocomplete.js.map +0 -1
  374. package/dist/src/components/InputPane.js.map +0 -1
  375. package/dist/src/components/InputReadline.js.map +0 -1
  376. package/dist/src/components/LogPane.js.map +0 -1
  377. package/dist/src/components/PlanEditor.js.map +0 -1
  378. package/dist/src/components/PlanPane.js.map +0 -1
  379. package/dist/src/components/SessionTimer.js.map +0 -1
  380. package/dist/src/components/StateTransitionPane.js.map +0 -1
  381. package/dist/src/components/StatusPane.js.map +0 -1
  382. package/dist/src/components/TaskPane.js.map +0 -1
  383. package/dist/src/components/Welcome.js.map +0 -1
  384. package/dist/src/components/WelcomeChecklist.js.map +0 -1
  385. package/dist/src/components/WelcomeCommands.js.map +0 -1
  386. package/dist/src/components/autocomplete-store.js.map +0 -1
  387. package/dist/src/components/parse-keypress.js.map +0 -1
  388. package/dist/src/config.js.map +0 -1
  389. package/dist/src/execution-controller.js.map +0 -1
  390. package/dist/src/experience-tracker.js.map +0 -1
  391. package/dist/src/explorbot.js.map +0 -1
  392. package/dist/src/explorer.js.map +0 -1
  393. package/dist/src/index.js.map +0 -1
  394. package/dist/src/knowledge-tracker.js.map +0 -1
  395. package/dist/src/observability.js.map +0 -1
  396. package/dist/src/reporter.js.map +0 -1
  397. package/dist/src/state-manager.js.map +0 -1
  398. package/dist/src/stats.js.map +0 -1
  399. package/dist/src/test-plan.js.map +0 -1
  400. package/dist/src/utils/aria.js.map +0 -1
  401. package/dist/src/utils/code-extractor.js.map +0 -1
  402. package/dist/src/utils/context-formatter.js.map +0 -1
  403. package/dist/src/utils/error-page.js.map +0 -1
  404. package/dist/src/utils/expandable.js.map +0 -1
  405. package/dist/src/utils/hooks-runner.js.map +0 -1
  406. package/dist/src/utils/html-diff.js.map +0 -1
  407. package/dist/src/utils/html.js.map +0 -1
  408. package/dist/src/utils/logger.js.map +0 -1
  409. package/dist/src/utils/loop.js.map +0 -1
  410. package/dist/src/utils/markdown-parser.js.map +0 -1
  411. package/dist/src/utils/markdown-query.js.map +0 -1
  412. package/dist/src/utils/markdown-terminal.js.map +0 -1
  413. package/dist/src/utils/research-parser.js.map +0 -1
  414. package/dist/src/utils/retry.js.map +0 -1
  415. package/dist/src/utils/rules-loader.js.map +0 -1
  416. package/dist/src/utils/strings.js.map +0 -1
  417. package/dist/src/utils/test-plan-markdown.js.map +0 -1
  418. package/dist/src/utils/throttle.js.map +0 -1
  419. package/dist/src/utils/unique-names.js.map +0 -1
  420. package/dist/src/utils/url-matcher.js.map +0 -1
  421. package/dist/src/utils/web-element.js.map +0 -1
  422. package/dist/src/utils/xpath.js.map +0 -1
  423. package/prompts/audit-rules.md +0 -124
@@ -15,6 +15,7 @@ import { StateManager } from './state-manager.js';
15
15
  import { RequestStore } from "./api/request-store.js";
16
16
  import { XhrCapture } from "./api/xhr-capture.js";
17
17
  import { createDebug, log, tag } from './utils/logger.js';
18
+ import { WebElement, extractElementData } from "./utils/web-element.js";
18
19
  const debugLog = createDebug('explorbot:explorer');
19
20
  const FATAL_BROWSER_ERRORS = /Frame was detached|Target closed|Execution context was destroyed|Protocol error|Session closed/i;
20
21
  class Explorer {
@@ -243,19 +244,7 @@ class Explorer {
243
244
  return action;
244
245
  }
245
246
  async annotateElements() {
246
- const page = this.playwrightHelper.page;
247
- const roles = ['button', 'link', 'textbox', 'searchbox', 'checkbox', 'radio', 'switch', 'combobox', 'tab', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'slider', 'spinbutton', 'treeitem'];
248
- let idx = 1;
249
- for (const role of roles) {
250
- const elements = await page.getByRole(role).all();
251
- for (const el of elements) {
252
- await el.evaluate((node, i) => {
253
- node.setAttribute('data-explorbot-eidx', String(i));
254
- }, idx);
255
- idx++;
256
- }
257
- }
258
- return idx - 1;
247
+ return annotatePageElements(this.playwrightHelper.page);
259
248
  }
260
249
  async visuallyAnnotateElements(opts) {
261
250
  return visuallyAnnotateContainers(this.playwrightHelper.page, opts?.containers || []);
@@ -269,7 +258,7 @@ class Explorer {
269
258
  for (const el of elements) {
270
259
  const attr = await el.getAttribute('data-explorbot-eidx');
271
260
  if (attr)
272
- result.push(Number.parseInt(attr, 10));
261
+ result.push(attr);
273
262
  }
274
263
  return result;
275
264
  }
@@ -286,8 +275,7 @@ class Explorer {
286
275
  const page = this.playwrightHelper.page;
287
276
  const base = container ? page.locator(container) : page;
288
277
  const el = locator.startsWith('//') ? base.locator(`xpath=${locator}`) : base.locator(locator);
289
- const eidx = await el.first().getAttribute('data-explorbot-eidx');
290
- return eidx ? Number.parseInt(eidx, 10) : null;
278
+ return await el.first().getAttribute('data-explorbot-eidx');
291
279
  }
292
280
  catch (error) {
293
281
  if (this.isFatalBrowserError(error)) {
@@ -607,5 +595,58 @@ function toCodeceptjsTest(test) {
607
595
  codeceptjsTest.notes = test.getPrintableNotes();
608
596
  return codeceptjsTest;
609
597
  }
598
+ const REF_LINE_PATTERN = /^(\s*)-\s+(\w+)\s*(?:"([^"]*)")?.*?\[ref=(e\d+)\]/;
599
+ const ANNOTATABLE_ROLES = new Set(['button', 'link', 'textbox', 'searchbox', 'checkbox', 'radio', 'switch', 'combobox', 'tab', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'slider', 'spinbutton', 'treeitem']);
600
+ function parseAriaRefs(ariaSnapshot) {
601
+ const entries = [];
602
+ for (const line of ariaSnapshot.split('\n')) {
603
+ const match = line.match(REF_LINE_PATTERN);
604
+ if (!match)
605
+ continue;
606
+ if (!ANNOTATABLE_ROLES.has(match[2]))
607
+ continue;
608
+ entries.push({ role: match[2], name: match[3] || '', ref: match[4] });
609
+ }
610
+ return entries;
611
+ }
612
+ export async function annotatePageElements(page) {
613
+ const ariaSnapshot = await page.locator('body').ariaSnapshot({ forAI: true });
614
+ const refEntries = parseAriaRefs(ariaSnapshot);
615
+ const byRole = new Map();
616
+ for (const { role, name, ref } of refEntries) {
617
+ let list = byRole.get(role);
618
+ if (!list) {
619
+ list = [];
620
+ byRole.set(role, list);
621
+ }
622
+ list.push({ name, ref });
623
+ }
624
+ const elements = [];
625
+ for (const [role, entries] of byRole) {
626
+ try {
627
+ const rawList = await page.getByRole(role).evaluateAll((domElements, [data, extractFnStr]) => {
628
+ const extract = new Function(`return ${extractFnStr}`)();
629
+ const results = [];
630
+ let ariaIdx = 0;
631
+ for (const el of domElements) {
632
+ if (ariaIdx >= data.length)
633
+ break;
634
+ el.setAttribute('data-explorbot-eidx', data[ariaIdx].ref);
635
+ const elData = extract(el);
636
+ if (elData)
637
+ results.push(elData);
638
+ ariaIdx++;
639
+ }
640
+ return results;
641
+ }, [entries, extractElementData.toString()]);
642
+ for (const raw of rawList) {
643
+ elements.push(WebElement.fromRawData(raw, role));
644
+ }
645
+ }
646
+ catch {
647
+ debugLog(`Failed to annotate role=${role}`);
648
+ }
649
+ }
650
+ return { ariaSnapshot, elements };
651
+ }
610
652
  export default Explorer;
611
- //# sourceMappingURL=explorer.js.map
package/dist/src/index.js CHANGED
@@ -53,4 +53,3 @@ else {
53
53
  // Default to explore command
54
54
  exploreCommand(options);
55
55
  }
56
- //# sourceMappingURL=index.js.map
@@ -3,6 +3,7 @@ import { dirname, join } from 'node:path';
3
3
  import matter from 'gray-matter';
4
4
  import { ActionResult } from './action-result.js';
5
5
  import { ConfigParser } from './config.js';
6
+ import { getCliName } from "./utils/cli-name.js";
6
7
  import { createDebug } from './utils/logger.js';
7
8
  const debugLog = createDebug('explorbot:knowledge-tracker');
8
9
  export class KnowledgeTracker {
@@ -63,7 +64,7 @@ export class KnowledgeTracker {
63
64
  const config = configParser.getConfig();
64
65
  const configPath = configParser.getConfigPath();
65
66
  if (!configPath) {
66
- throw new Error('No explorbot configuration found. Please run "explorbot init" first.');
67
+ throw new Error(`No explorbot configuration found. Please run "${getCliName()} init" first.`);
67
68
  }
68
69
  const projectRoot = dirname(configPath);
69
70
  const knowledgeDir = join(projectRoot, config.dirs?.knowledge || 'knowledge');
@@ -181,4 +182,3 @@ export class KnowledgeTracker {
181
182
  return result;
182
183
  }
183
184
  }
184
- //# sourceMappingURL=knowledge-tracker.js.map
@@ -123,4 +123,3 @@ export const Observability = {
123
123
  return current?.span;
124
124
  },
125
125
  };
126
- //# sourceMappingURL=observability.js.map
@@ -182,4 +182,3 @@ export class Reporter {
182
182
  return;
183
183
  }
184
184
  }
185
- //# sourceMappingURL=reporter.js.map
@@ -424,4 +424,3 @@ export function normalizeUrl(url) {
424
424
  return url.replace(/^\/+|\/+$/g, '');
425
425
  }
426
426
  }
427
- //# sourceMappingURL=state-manager.js.map
package/dist/src/stats.js CHANGED
@@ -41,4 +41,3 @@ export class Stats {
41
41
  return totalTokens > 0;
42
42
  }
43
43
  }
44
- //# sourceMappingURL=stats.js.map
@@ -340,4 +340,3 @@ export class Plan {
340
340
  return planToAiContext(this, options);
341
341
  }
342
342
  }
343
- //# sourceMappingURL=test-plan.js.map
@@ -585,4 +585,3 @@ export const compactAriaSnapshot = (snapshot, keepNamed = false) => {
585
585
  const nodes = parseAriaSnapshot(snapshot, keepNamed);
586
586
  return serializeAriaNodes(nodes);
587
587
  };
588
- //# sourceMappingURL=aria.js.map
@@ -0,0 +1,16 @@
1
+ import path from 'node:path';
2
+ let cached;
3
+ export function getCliName() {
4
+ if (cached)
5
+ return cached;
6
+ const ua = process.env.npm_config_user_agent || '';
7
+ if (ua.includes('bun'))
8
+ cached = 'bunx explorbot';
9
+ else if (ua.includes('npm'))
10
+ cached = 'npx explorbot';
11
+ else if (process.argv[1]?.endsWith('.ts'))
12
+ cached = `bun ${path.relative(process.cwd(), process.argv[1])}`;
13
+ else
14
+ cached = 'explorbot';
15
+ return cached;
16
+ }
@@ -18,4 +18,3 @@ export function extractCodeBlocks(aiResponse) {
18
18
  }
19
19
  return codeBlocks;
20
20
  }
21
- //# sourceMappingURL=code-extractor.js.map
@@ -202,4 +202,3 @@ function formatContextFull(data) {
202
202
  }
203
203
  return lines.join('\n');
204
204
  }
205
- //# sourceMappingURL=context-formatter.js.map
@@ -16,4 +16,3 @@ export function isErrorPage(actionResult) {
16
16
  return true;
17
17
  return false;
18
18
  }
19
- //# sourceMappingURL=error-page.js.map
@@ -32,4 +32,3 @@ export function buildExpandableXPathInsideContainers(containers) {
32
32
  })
33
33
  .filter((x) => x !== null);
34
34
  }
35
- //# sourceMappingURL=expandable.js.map
@@ -74,4 +74,3 @@ export class HooksRunner {
74
74
  }
75
75
  }
76
76
  }
77
- //# sourceMappingURL=hooks-runner.js.map
@@ -731,4 +731,3 @@ function generateSummary(added, removed, similarity) {
731
731
  }
732
732
  return parts.join(', ');
733
733
  }
734
- //# sourceMappingURL=html-diff.js.map
@@ -1160,4 +1160,3 @@ export function extractTargetedHtml(html, locator) {
1160
1160
  }
1161
1161
  return '';
1162
1162
  }
1163
- //# sourceMappingURL=html.js.map
@@ -462,4 +462,3 @@ export const setLogCallback = registerLogPane;
462
462
  export const pluralize = (count, singular, plural) => {
463
463
  return count === 1 ? singular : plural || `${singular}s`;
464
464
  };
465
- //# sourceMappingURL=logger.js.map
@@ -123,4 +123,3 @@ export async function loop(handler, options) {
123
123
  };
124
124
  return Observability.run(name, metadata, run);
125
125
  }
126
- //# sourceMappingURL=loop.js.map
@@ -114,4 +114,3 @@ export function findTableLineRange(markdown) {
114
114
  return { start, end: lines.length };
115
115
  return null;
116
116
  }
117
- //# sourceMappingURL=markdown-parser.js.map
@@ -390,4 +390,3 @@ export class MarkdownQuery {
390
390
  export function mdq(source) {
391
391
  return new MarkdownQuery(source);
392
392
  }
393
- //# sourceMappingURL=markdown-query.js.map
@@ -37,4 +37,3 @@ export function parseMarkdownToTerminal(markdown) {
37
37
  const result = marked.parse(dedent(markdown));
38
38
  return result.replace(/^ {4}\*/gm, '*');
39
39
  }
40
- //# sourceMappingURL=markdown-terminal.js.map
@@ -1,2 +1 @@
1
1
  export { RESEARCH_COLUMN_ORDER, extractContainerFromBlockquote, extractValidContainers, formatResearchSummary, mapRowToElement, parseResearchSections, rebuildSectionMarkdown, } from "../ai/researcher/parser.js";
2
- //# sourceMappingURL=research-parser.js.map
@@ -52,4 +52,3 @@ export async function withRetry(operation, options = {}) {
52
52
  }
53
53
  throw lastError;
54
54
  }
55
- //# sourceMappingURL=retry.js.map
@@ -101,4 +101,3 @@ function loadStyleFile(agentName, name) {
101
101
  const builtInPath = join(BUILT_IN_DIR, agentName, 'styles', `${name}.md`);
102
102
  throw new Error(`Style "${name}" not found for agent "${agentName}". Searched: ${userPath}, ${builtInPath}`);
103
103
  }
104
- //# sourceMappingURL=rules-loader.js.map
@@ -11,4 +11,3 @@ export function sanitizeFilename(name) {
11
11
  .replace(/^_+|_+$/g, '')
12
12
  .slice(0, 50);
13
13
  }
14
- //# sourceMappingURL=strings.js.map
@@ -298,4 +298,3 @@ export function planToAiContext(plan, options) {
298
298
  }
299
299
  return content;
300
300
  }
301
- //# sourceMappingURL=test-plan-markdown.js.map
@@ -13,4 +13,3 @@ export async function throttle(fn, intervalSeconds = DEFAULT_INTERVAL_SECONDS) {
13
13
  export function __clearThrottleCacheForTests() {
14
14
  lastExecutionByKey.clear();
15
15
  }
16
- //# sourceMappingURL=throttle.js.map
@@ -10,4 +10,3 @@ export function uniqSessionName() {
10
10
  const randomNum = Math.floor(Math.random() * 999);
11
11
  return `${name}${randomNum}`;
12
12
  }
13
- //# sourceMappingURL=unique-names.js.map
@@ -45,4 +45,3 @@ export function extractStatePath(url) {
45
45
  return url;
46
46
  }
47
47
  }
48
- //# sourceMappingURL=url-matcher.js.map
@@ -3,6 +3,7 @@ const KEY_DISPLAY_ATTRS = ['role', 'id', 'class', 'aria-label'];
3
3
  const KEY_ATTRS = ['role', 'aria-label', 'id', 'name', 'type', 'href'];
4
4
  export class WebElement {
5
5
  tag;
6
+ role;
6
7
  xpath;
7
8
  clickXPath;
8
9
  attrs;
@@ -12,6 +13,7 @@ export class WebElement {
12
13
  y;
13
14
  constructor(data) {
14
15
  this.tag = data.tag;
16
+ this.role = data.role || data.attrs.role || '';
15
17
  this.xpath = data.xpath;
16
18
  this.clickXPath = data.clickXPath;
17
19
  this.attrs = data.attrs;
@@ -33,8 +35,7 @@ export class WebElement {
33
35
  return `(${this.x}, ${this.y})`;
34
36
  }
35
37
  get eidx() {
36
- const val = this.attrs['data-explorbot-eidx'] || this.attrs.eidx;
37
- return val ? Number.parseInt(val, 10) : null;
38
+ return this.attrs['data-explorbot-eidx'] || this.attrs.eidx || null;
38
39
  }
39
40
  get isNavigationLink() {
40
41
  if (this.tag !== 'a')
@@ -46,9 +47,10 @@ export class WebElement {
46
47
  const cls = this.attrs.class || '';
47
48
  return cls.split(/\s+/).filter((c) => c.length > 2 && !isDynamicId(c) && !isGenericClass(c));
48
49
  }
49
- static fromRawData(d) {
50
+ static fromRawData(d, role) {
50
51
  return new WebElement({
51
52
  tag: d.tag,
53
+ role,
52
54
  xpath: '',
53
55
  clickXPath: buildClickableXPath({ tag: d.tag, allAttrs: d.allAttrs, text: d.text }),
54
56
  attrs: d.allAttrs,
@@ -111,7 +113,7 @@ export class WebElement {
111
113
  return { totalFound: result.totalFound, elements: result.matches.map((m) => WebElement.fromXPathMatch(m)) };
112
114
  }
113
115
  }
114
- function extractElementData(el) {
116
+ export function extractElementData(el) {
115
117
  const rect = el.getBoundingClientRect();
116
118
  if (rect.width === 0 && rect.height === 0)
117
119
  return null;
@@ -128,4 +130,3 @@ function extractElementData(el) {
128
130
  y: Math.round(rect.y + rect.height / 2),
129
131
  };
130
132
  }
131
- //# sourceMappingURL=web-element.js.map
@@ -107,4 +107,3 @@ export async function evaluateXPath(html, xpath) {
107
107
  dom.window.close();
108
108
  }
109
109
  }
110
- //# sourceMappingURL=xpath.js.map
package/package.json CHANGED
@@ -1,14 +1,28 @@
1
1
  {
2
2
  "name": "explorbot",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "CLI app built with React Ink, CodeceptJS, and Playwright",
5
5
  "license": "Elastic-2.0",
6
6
  "type": "module",
7
7
  "main": "dist/src/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "bun": "./src/index.tsx",
11
+ "import": "./dist/src/index.js"
12
+ }
13
+ },
8
14
  "bin": {
9
15
  "explorbot": "./dist/bin/explorbot-cli.js"
10
16
  },
11
- "files": ["dist/", "rules/", "assets/sample-files/", "prompts/"],
17
+ "files": [
18
+ "dist/",
19
+ "src/**/*.ts",
20
+ "src/**/*.tsx",
21
+ "bin/**/*.ts",
22
+ "boat/api-tester/src/**/*.ts",
23
+ "rules/",
24
+ "assets/sample-files/"
25
+ ],
12
26
  "scripts": {
13
27
  "build": "bun run src/index.tsx build && bun run build:bin",
14
28
  "build:bin": "bun build bin/explorbot-cli.ts --outdir bin --target node --external commander --format esm",
@@ -35,7 +49,17 @@
35
49
  "check:fix": "biome check --write .",
36
50
  "langfuse:export": "bun run .claude/skills/explorbot-debug/langfuse-export.ts"
37
51
  },
38
- "keywords": ["cli", "react", "ink", "codeceptjs", "playwright"],
52
+ "keywords": [
53
+ "cli",
54
+ "react",
55
+ "ink",
56
+ "codeceptjs",
57
+ "playwright"
58
+ ],
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/testomatio/explorbot"
62
+ },
39
63
  "author": "",
40
64
  "dependencies": {
41
65
  "@ai-sdk/anthropic": "^3.0",
@@ -53,7 +77,7 @@
53
77
  "@opentelemetry/sdk-trace-base": "^2.2.0",
54
78
  "@opentelemetry/semantic-conventions": "^1.38.0",
55
79
  "@scalar/openapi-parser": "^0.25.6",
56
- "@testomatio/reporter": "2.7.3",
80
+ "@testomatio/reporter": "^2.7.6",
57
81
  "ai": "^6.0.6",
58
82
  "axe-core": "^4.11.1",
59
83
  "bash-tool": "^1.3.15",