@accomplish_ai/agent-core 0.0.0-pr-353-20260205225158

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 (539) hide show
  1. package/LICENSE +21 -0
  2. package/dist/browser/detection.d.ts +4 -0
  3. package/dist/browser/detection.d.ts.map +1 -0
  4. package/dist/browser/detection.js +43 -0
  5. package/dist/browser/detection.js.map +1 -0
  6. package/dist/browser/index.d.ts +3 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.js +3 -0
  9. package/dist/browser/index.js.map +1 -0
  10. package/dist/browser/server.d.ts +19 -0
  11. package/dist/browser/server.d.ts.map +1 -0
  12. package/dist/browser/server.js +204 -0
  13. package/dist/browser/server.js.map +1 -0
  14. package/dist/common/constants/model-display.d.ts +7 -0
  15. package/dist/common/constants/model-display.d.ts.map +1 -0
  16. package/dist/common/constants/model-display.js +105 -0
  17. package/dist/common/constants/model-display.js.map +1 -0
  18. package/dist/common/constants.d.ts +12 -0
  19. package/dist/common/constants.d.ts.map +1 -0
  20. package/dist/common/constants.js +13 -0
  21. package/dist/common/constants.js.map +1 -0
  22. package/dist/common/index.d.ts +21 -0
  23. package/dist/common/index.d.ts.map +1 -0
  24. package/dist/common/index.js +15 -0
  25. package/dist/common/index.js.map +1 -0
  26. package/dist/common/schemas/index.d.ts +2 -0
  27. package/dist/common/schemas/index.d.ts.map +1 -0
  28. package/dist/common/schemas/index.js +2 -0
  29. package/dist/common/schemas/index.js.map +1 -0
  30. package/dist/common/schemas/validation.d.ts +69 -0
  31. package/dist/common/schemas/validation.d.ts.map +1 -0
  32. package/dist/common/schemas/validation.js +34 -0
  33. package/dist/common/schemas/validation.js.map +1 -0
  34. package/dist/common/types/auth.d.ts +28 -0
  35. package/dist/common/types/auth.d.ts.map +1 -0
  36. package/dist/common/types/auth.js +2 -0
  37. package/dist/common/types/auth.js.map +1 -0
  38. package/dist/common/types/index.d.ts +11 -0
  39. package/dist/common/types/index.d.ts.map +1 -0
  40. package/dist/common/types/index.js +11 -0
  41. package/dist/common/types/index.js.map +1 -0
  42. package/dist/common/types/logging.d.ts +15 -0
  43. package/dist/common/types/logging.d.ts.map +1 -0
  44. package/dist/common/types/logging.js +5 -0
  45. package/dist/common/types/logging.js.map +1 -0
  46. package/dist/common/types/opencode.d.ts +108 -0
  47. package/dist/common/types/opencode.d.ts.map +1 -0
  48. package/dist/common/types/opencode.js +2 -0
  49. package/dist/common/types/opencode.js.map +1 -0
  50. package/dist/common/types/permission.d.ts +35 -0
  51. package/dist/common/types/permission.d.ts.map +1 -0
  52. package/dist/common/types/permission.js +4 -0
  53. package/dist/common/types/permission.js.map +1 -0
  54. package/dist/common/types/provider.d.ts +83 -0
  55. package/dist/common/types/provider.d.ts.map +1 -0
  56. package/dist/common/types/provider.js +305 -0
  57. package/dist/common/types/provider.js.map +1 -0
  58. package/dist/common/types/providerSettings.d.ts +89 -0
  59. package/dist/common/types/providerSettings.d.ts.map +1 -0
  60. package/dist/common/types/providerSettings.js +63 -0
  61. package/dist/common/types/providerSettings.js.map +1 -0
  62. package/dist/common/types/skills.d.ts +22 -0
  63. package/dist/common/types/skills.d.ts.map +1 -0
  64. package/dist/common/types/skills.js +2 -0
  65. package/dist/common/types/skills.js.map +1 -0
  66. package/dist/common/types/task.d.ts +70 -0
  67. package/dist/common/types/task.d.ts.map +1 -0
  68. package/dist/common/types/task.js +14 -0
  69. package/dist/common/types/task.js.map +1 -0
  70. package/dist/common/types/thought-stream.d.ts +21 -0
  71. package/dist/common/types/thought-stream.d.ts.map +1 -0
  72. package/dist/common/types/thought-stream.js +6 -0
  73. package/dist/common/types/thought-stream.js.map +1 -0
  74. package/dist/common/types/todo.d.ts +7 -0
  75. package/dist/common/types/todo.d.ts.map +1 -0
  76. package/dist/common/types/todo.js +2 -0
  77. package/dist/common/types/todo.js.map +1 -0
  78. package/dist/common/utils/id.d.ts +7 -0
  79. package/dist/common/utils/id.d.ts.map +1 -0
  80. package/dist/common/utils/id.js +20 -0
  81. package/dist/common/utils/id.js.map +1 -0
  82. package/dist/common/utils/index.d.ts +4 -0
  83. package/dist/common/utils/index.d.ts.map +1 -0
  84. package/dist/common/utils/index.js +4 -0
  85. package/dist/common/utils/index.js.map +1 -0
  86. package/dist/common/utils/log-source-detector.d.ts +9 -0
  87. package/dist/common/utils/log-source-detector.d.ts.map +1 -0
  88. package/dist/common/utils/log-source-detector.js +22 -0
  89. package/dist/common/utils/log-source-detector.js.map +1 -0
  90. package/dist/common/utils/waiting-detection.d.ts +7 -0
  91. package/dist/common/utils/waiting-detection.d.ts.map +1 -0
  92. package/dist/common/utils/waiting-detection.js +62 -0
  93. package/dist/common/utils/waiting-detection.js.map +1 -0
  94. package/dist/common.d.ts +21 -0
  95. package/dist/common.d.ts.map +1 -0
  96. package/dist/common.js +20 -0
  97. package/dist/common.js.map +1 -0
  98. package/dist/factories/index.d.ts +8 -0
  99. package/dist/factories/index.d.ts.map +1 -0
  100. package/dist/factories/index.js +8 -0
  101. package/dist/factories/index.js.map +1 -0
  102. package/dist/factories/log-writer.d.ts +3 -0
  103. package/dist/factories/log-writer.d.ts.map +1 -0
  104. package/dist/factories/log-writer.js +45 -0
  105. package/dist/factories/log-writer.js.map +1 -0
  106. package/dist/factories/permission-handler.d.ts +3 -0
  107. package/dist/factories/permission-handler.d.ts.map +1 -0
  108. package/dist/factories/permission-handler.js +6 -0
  109. package/dist/factories/permission-handler.js.map +1 -0
  110. package/dist/factories/skills-manager.d.ts +3 -0
  111. package/dist/factories/skills-manager.d.ts.map +1 -0
  112. package/dist/factories/skills-manager.js +10 -0
  113. package/dist/factories/skills-manager.js.map +1 -0
  114. package/dist/factories/speech.d.ts +3 -0
  115. package/dist/factories/speech.d.ts.map +1 -0
  116. package/dist/factories/speech.js +6 -0
  117. package/dist/factories/speech.js.map +1 -0
  118. package/dist/factories/storage.d.ts +4 -0
  119. package/dist/factories/storage.d.ts.map +1 -0
  120. package/dist/factories/storage.js +192 -0
  121. package/dist/factories/storage.js.map +1 -0
  122. package/dist/factories/task-manager.d.ts +4 -0
  123. package/dist/factories/task-manager.d.ts.map +1 -0
  124. package/dist/factories/task-manager.js +61 -0
  125. package/dist/factories/task-manager.js.map +1 -0
  126. package/dist/factories/thought-stream.d.ts +3 -0
  127. package/dist/factories/thought-stream.d.ts.map +1 -0
  128. package/dist/factories/thought-stream.js +6 -0
  129. package/dist/factories/thought-stream.js.map +1 -0
  130. package/dist/index.d.ts +66 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +46 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/internal/classes/CompletionEnforcer.d.ts +27 -0
  135. package/dist/internal/classes/CompletionEnforcer.d.ts.map +1 -0
  136. package/dist/internal/classes/CompletionEnforcer.js +109 -0
  137. package/dist/internal/classes/CompletionEnforcer.js.map +1 -0
  138. package/dist/internal/classes/LogCollector.d.ts +28 -0
  139. package/dist/internal/classes/LogCollector.d.ts.map +1 -0
  140. package/dist/internal/classes/LogCollector.js +100 -0
  141. package/dist/internal/classes/LogCollector.js.map +1 -0
  142. package/dist/internal/classes/LogFileWriter.d.ts +21 -0
  143. package/dist/internal/classes/LogFileWriter.d.ts.map +1 -0
  144. package/dist/internal/classes/LogFileWriter.js +140 -0
  145. package/dist/internal/classes/LogFileWriter.js.map +1 -0
  146. package/dist/internal/classes/OpenCodeAdapter.d.ts +94 -0
  147. package/dist/internal/classes/OpenCodeAdapter.d.ts.map +1 -0
  148. package/dist/internal/classes/OpenCodeAdapter.js +653 -0
  149. package/dist/internal/classes/OpenCodeAdapter.js.map +1 -0
  150. package/dist/internal/classes/OpenCodeLogWatcher.d.ts +36 -0
  151. package/dist/internal/classes/OpenCodeLogWatcher.d.ts.map +1 -0
  152. package/dist/internal/classes/OpenCodeLogWatcher.js +257 -0
  153. package/dist/internal/classes/OpenCodeLogWatcher.js.map +1 -0
  154. package/dist/internal/classes/PermissionRequestHandler.d.ts +57 -0
  155. package/dist/internal/classes/PermissionRequestHandler.d.ts.map +1 -0
  156. package/dist/internal/classes/PermissionRequestHandler.js +132 -0
  157. package/dist/internal/classes/PermissionRequestHandler.js.map +1 -0
  158. package/dist/internal/classes/SecureStorage.d.ts +44 -0
  159. package/dist/internal/classes/SecureStorage.d.ts.map +1 -0
  160. package/dist/internal/classes/SecureStorage.js +231 -0
  161. package/dist/internal/classes/SecureStorage.js.map +1 -0
  162. package/dist/internal/classes/SkillsManager.d.ts +33 -0
  163. package/dist/internal/classes/SkillsManager.d.ts.map +1 -0
  164. package/dist/internal/classes/SkillsManager.js +340 -0
  165. package/dist/internal/classes/SkillsManager.js.map +1 -0
  166. package/dist/internal/classes/SpeechService.d.ts +30 -0
  167. package/dist/internal/classes/SpeechService.d.ts.map +1 -0
  168. package/dist/internal/classes/SpeechService.js +216 -0
  169. package/dist/internal/classes/SpeechService.js.map +1 -0
  170. package/dist/internal/classes/StreamParser.d.ts +18 -0
  171. package/dist/internal/classes/StreamParser.d.ts.map +1 -0
  172. package/dist/internal/classes/StreamParser.js +117 -0
  173. package/dist/internal/classes/StreamParser.js.map +1 -0
  174. package/dist/internal/classes/TaskManager.d.ts +72 -0
  175. package/dist/internal/classes/TaskManager.d.ts.map +1 -0
  176. package/dist/internal/classes/TaskManager.js +283 -0
  177. package/dist/internal/classes/TaskManager.js.map +1 -0
  178. package/dist/internal/classes/ThoughtStreamHandler.d.ts +15 -0
  179. package/dist/internal/classes/ThoughtStreamHandler.d.ts.map +1 -0
  180. package/dist/internal/classes/ThoughtStreamHandler.js +60 -0
  181. package/dist/internal/classes/ThoughtStreamHandler.js.map +1 -0
  182. package/dist/opencode/adapter.d.ts +93 -0
  183. package/dist/opencode/adapter.d.ts.map +1 -0
  184. package/dist/opencode/adapter.js +650 -0
  185. package/dist/opencode/adapter.js.map +1 -0
  186. package/dist/opencode/auth.d.ts +12 -0
  187. package/dist/opencode/auth.d.ts.map +1 -0
  188. package/dist/opencode/auth.js +65 -0
  189. package/dist/opencode/auth.js.map +1 -0
  190. package/dist/opencode/cli-resolver.d.ts +5 -0
  191. package/dist/opencode/cli-resolver.d.ts.map +1 -0
  192. package/dist/opencode/cli-resolver.js +148 -0
  193. package/dist/opencode/cli-resolver.js.map +1 -0
  194. package/dist/opencode/completion/completion-enforcer.d.ts +27 -0
  195. package/dist/opencode/completion/completion-enforcer.d.ts.map +1 -0
  196. package/dist/opencode/completion/completion-enforcer.js +109 -0
  197. package/dist/opencode/completion/completion-enforcer.js.map +1 -0
  198. package/dist/opencode/completion/completion-state.d.ts +36 -0
  199. package/dist/opencode/completion/completion-state.d.ts.map +1 -0
  200. package/dist/opencode/completion/completion-state.js +97 -0
  201. package/dist/opencode/completion/completion-state.js.map +1 -0
  202. package/dist/opencode/completion/index.d.ts +6 -0
  203. package/dist/opencode/completion/index.d.ts.map +1 -0
  204. package/dist/opencode/completion/index.js +4 -0
  205. package/dist/opencode/completion/index.js.map +1 -0
  206. package/dist/opencode/completion/prompts.d.ts +4 -0
  207. package/dist/opencode/completion/prompts.d.ts.map +1 -0
  208. package/dist/opencode/completion/prompts.js +58 -0
  209. package/dist/opencode/completion/prompts.js.map +1 -0
  210. package/dist/opencode/config-builder.d.ts +61 -0
  211. package/dist/opencode/config-builder.d.ts.map +1 -0
  212. package/dist/opencode/config-builder.js +395 -0
  213. package/dist/opencode/config-builder.js.map +1 -0
  214. package/dist/opencode/config-generator.d.ts +86 -0
  215. package/dist/opencode/config-generator.d.ts.map +1 -0
  216. package/dist/opencode/config-generator.js +407 -0
  217. package/dist/opencode/config-generator.js.map +1 -0
  218. package/dist/opencode/environment.d.ts +46 -0
  219. package/dist/opencode/environment.d.ts.map +1 -0
  220. package/dist/opencode/environment.js +102 -0
  221. package/dist/opencode/environment.js.map +1 -0
  222. package/dist/opencode/index.d.ts +23 -0
  223. package/dist/opencode/index.d.ts.map +1 -0
  224. package/dist/opencode/index.js +13 -0
  225. package/dist/opencode/index.js.map +1 -0
  226. package/dist/opencode/log-watcher.d.ts +36 -0
  227. package/dist/opencode/log-watcher.d.ts.map +1 -0
  228. package/dist/opencode/log-watcher.js +257 -0
  229. package/dist/opencode/log-watcher.js.map +1 -0
  230. package/dist/opencode/message-processor.d.ts +69 -0
  231. package/dist/opencode/message-processor.d.ts.map +1 -0
  232. package/dist/opencode/message-processor.js +193 -0
  233. package/dist/opencode/message-processor.js.map +1 -0
  234. package/dist/opencode/proxies/azure-foundry-proxy.d.ts +10 -0
  235. package/dist/opencode/proxies/azure-foundry-proxy.d.ts.map +1 -0
  236. package/dist/opencode/proxies/azure-foundry-proxy.js +216 -0
  237. package/dist/opencode/proxies/azure-foundry-proxy.js.map +1 -0
  238. package/dist/opencode/proxies/azure-token-manager.d.ts +11 -0
  239. package/dist/opencode/proxies/azure-token-manager.d.ts.map +1 -0
  240. package/dist/opencode/proxies/azure-token-manager.js +58 -0
  241. package/dist/opencode/proxies/azure-token-manager.js.map +1 -0
  242. package/dist/opencode/proxies/index.d.ts +6 -0
  243. package/dist/opencode/proxies/index.d.ts.map +1 -0
  244. package/dist/opencode/proxies/index.js +4 -0
  245. package/dist/opencode/proxies/index.js.map +1 -0
  246. package/dist/opencode/proxies/moonshot-proxy.d.ts +10 -0
  247. package/dist/opencode/proxies/moonshot-proxy.d.ts.map +1 -0
  248. package/dist/opencode/proxies/moonshot-proxy.js +416 -0
  249. package/dist/opencode/proxies/moonshot-proxy.js.map +1 -0
  250. package/dist/opencode/stream-parser.d.ts +18 -0
  251. package/dist/opencode/stream-parser.d.ts.map +1 -0
  252. package/dist/opencode/stream-parser.js +117 -0
  253. package/dist/opencode/stream-parser.js.map +1 -0
  254. package/dist/opencode/task-manager.d.ts +72 -0
  255. package/dist/opencode/task-manager.d.ts.map +1 -0
  256. package/dist/opencode/task-manager.js +283 -0
  257. package/dist/opencode/task-manager.js.map +1 -0
  258. package/dist/providers/azure-foundry.d.ts +48 -0
  259. package/dist/providers/azure-foundry.d.ts.map +1 -0
  260. package/dist/providers/azure-foundry.js +193 -0
  261. package/dist/providers/azure-foundry.js.map +1 -0
  262. package/dist/providers/bedrock.d.ts +34 -0
  263. package/dist/providers/bedrock.d.ts.map +1 -0
  264. package/dist/providers/bedrock.js +162 -0
  265. package/dist/providers/bedrock.js.map +1 -0
  266. package/dist/providers/index.d.ts +10 -0
  267. package/dist/providers/index.d.ts.map +1 -0
  268. package/dist/providers/index.js +10 -0
  269. package/dist/providers/index.js.map +1 -0
  270. package/dist/providers/litellm.d.ts +28 -0
  271. package/dist/providers/litellm.d.ts.map +1 -0
  272. package/dist/providers/litellm.js +110 -0
  273. package/dist/providers/litellm.js.map +1 -0
  274. package/dist/providers/lmstudio.d.ts +58 -0
  275. package/dist/providers/lmstudio.d.ts.map +1 -0
  276. package/dist/providers/lmstudio.js +153 -0
  277. package/dist/providers/lmstudio.js.map +1 -0
  278. package/dist/providers/models.d.ts +10 -0
  279. package/dist/providers/models.d.ts.map +1 -0
  280. package/dist/providers/models.js +35 -0
  281. package/dist/providers/models.js.map +1 -0
  282. package/dist/providers/ollama.d.ts +31 -0
  283. package/dist/providers/ollama.d.ts.map +1 -0
  284. package/dist/providers/ollama.js +56 -0
  285. package/dist/providers/ollama.js.map +1 -0
  286. package/dist/providers/openrouter.d.ts +20 -0
  287. package/dist/providers/openrouter.d.ts.map +1 -0
  288. package/dist/providers/openrouter.js +49 -0
  289. package/dist/providers/openrouter.js.map +1 -0
  290. package/dist/providers/tool-support-testing.d.ts +42 -0
  291. package/dist/providers/tool-support-testing.d.ts.map +1 -0
  292. package/dist/providers/tool-support-testing.js +114 -0
  293. package/dist/providers/tool-support-testing.js.map +1 -0
  294. package/dist/providers/validation.d.ts +13 -0
  295. package/dist/providers/validation.d.ts.map +1 -0
  296. package/dist/providers/validation.js +136 -0
  297. package/dist/providers/validation.js.map +1 -0
  298. package/dist/services/index.d.ts +5 -0
  299. package/dist/services/index.d.ts.map +1 -0
  300. package/dist/services/index.js +5 -0
  301. package/dist/services/index.js.map +1 -0
  302. package/dist/services/permission-handler.d.ts +145 -0
  303. package/dist/services/permission-handler.d.ts.map +1 -0
  304. package/dist/services/permission-handler.js +207 -0
  305. package/dist/services/permission-handler.js.map +1 -0
  306. package/dist/services/speech.d.ts +63 -0
  307. package/dist/services/speech.d.ts.map +1 -0
  308. package/dist/services/speech.js +253 -0
  309. package/dist/services/speech.js.map +1 -0
  310. package/dist/services/summarizer.d.ts +19 -0
  311. package/dist/services/summarizer.d.ts.map +1 -0
  312. package/dist/services/summarizer.js +177 -0
  313. package/dist/services/summarizer.js.map +1 -0
  314. package/dist/services/thought-stream-handler.d.ts +54 -0
  315. package/dist/services/thought-stream-handler.d.ts.map +1 -0
  316. package/dist/services/thought-stream-handler.js +107 -0
  317. package/dist/services/thought-stream-handler.js.map +1 -0
  318. package/dist/skills/index.d.ts +2 -0
  319. package/dist/skills/index.d.ts.map +1 -0
  320. package/dist/skills/index.js +2 -0
  321. package/dist/skills/index.js.map +1 -0
  322. package/dist/skills/skills-manager.d.ts +33 -0
  323. package/dist/skills/skills-manager.d.ts.map +1 -0
  324. package/dist/skills/skills-manager.js +340 -0
  325. package/dist/skills/skills-manager.js.map +1 -0
  326. package/dist/storage/database.d.ts +14 -0
  327. package/dist/storage/database.d.ts.map +1 -0
  328. package/dist/storage/database.js +72 -0
  329. package/dist/storage/database.js.map +1 -0
  330. package/dist/storage/index.d.ts +6 -0
  331. package/dist/storage/index.d.ts.map +1 -0
  332. package/dist/storage/index.js +6 -0
  333. package/dist/storage/index.js.map +1 -0
  334. package/dist/storage/migrations/errors.d.ts +17 -0
  335. package/dist/storage/migrations/errors.d.ts.map +1 -0
  336. package/dist/storage/migrations/errors.js +27 -0
  337. package/dist/storage/migrations/errors.js.map +1 -0
  338. package/dist/storage/migrations/index.d.ts +13 -0
  339. package/dist/storage/migrations/index.d.ts.map +1 -0
  340. package/dist/storage/migrations/index.js +69 -0
  341. package/dist/storage/migrations/index.js.map +1 -0
  342. package/dist/storage/migrations/v001-initial.d.ts +3 -0
  343. package/dist/storage/migrations/v001-initial.d.ts.map +1 -0
  344. package/dist/storage/migrations/v001-initial.js +77 -0
  345. package/dist/storage/migrations/v001-initial.js.map +1 -0
  346. package/dist/storage/migrations/v002-azure-foundry.d.ts +3 -0
  347. package/dist/storage/migrations/v002-azure-foundry.d.ts.map +1 -0
  348. package/dist/storage/migrations/v002-azure-foundry.js +18 -0
  349. package/dist/storage/migrations/v002-azure-foundry.js.map +1 -0
  350. package/dist/storage/migrations/v003-lmstudio.d.ts +3 -0
  351. package/dist/storage/migrations/v003-lmstudio.d.ts.map +1 -0
  352. package/dist/storage/migrations/v003-lmstudio.js +18 -0
  353. package/dist/storage/migrations/v003-lmstudio.js.map +1 -0
  354. package/dist/storage/migrations/v004-openai-base-url.d.ts +3 -0
  355. package/dist/storage/migrations/v004-openai-base-url.d.ts.map +1 -0
  356. package/dist/storage/migrations/v004-openai-base-url.js +9 -0
  357. package/dist/storage/migrations/v004-openai-base-url.js.map +1 -0
  358. package/dist/storage/migrations/v005-task-todos.d.ts +3 -0
  359. package/dist/storage/migrations/v005-task-todos.d.ts.map +1 -0
  360. package/dist/storage/migrations/v005-task-todos.js +19 -0
  361. package/dist/storage/migrations/v005-task-todos.js.map +1 -0
  362. package/dist/storage/migrations/v006-skills.d.ts +3 -0
  363. package/dist/storage/migrations/v006-skills.d.ts.map +1 -0
  364. package/dist/storage/migrations/v006-skills.js +23 -0
  365. package/dist/storage/migrations/v006-skills.js.map +1 -0
  366. package/dist/storage/repositories/appSettings.d.ts +30 -0
  367. package/dist/storage/repositories/appSettings.d.ts.map +1 -0
  368. package/dist/storage/repositories/appSettings.js +130 -0
  369. package/dist/storage/repositories/appSettings.js.map +1 -0
  370. package/dist/storage/repositories/index.d.ts +5 -0
  371. package/dist/storage/repositories/index.d.ts.map +1 -0
  372. package/dist/storage/repositories/index.js +5 -0
  373. package/dist/storage/repositories/index.js.map +1 -0
  374. package/dist/storage/repositories/providerSettings.d.ts +19 -0
  375. package/dist/storage/repositories/providerSettings.d.ts.map +1 -0
  376. package/dist/storage/repositories/providerSettings.js +114 -0
  377. package/dist/storage/repositories/providerSettings.js.map +1 -0
  378. package/dist/storage/repositories/skills.d.ts +9 -0
  379. package/dist/storage/repositories/skills.d.ts.map +1 -0
  380. package/dist/storage/repositories/skills.js +63 -0
  381. package/dist/storage/repositories/skills.js.map +1 -0
  382. package/dist/storage/repositories/taskHistory.d.ts +29 -0
  383. package/dist/storage/repositories/taskHistory.d.ts.map +1 -0
  384. package/dist/storage/repositories/taskHistory.js +159 -0
  385. package/dist/storage/repositories/taskHistory.js.map +1 -0
  386. package/dist/storage/secure-storage.d.ts +44 -0
  387. package/dist/storage/secure-storage.d.ts.map +1 -0
  388. package/dist/storage/secure-storage.js +227 -0
  389. package/dist/storage/secure-storage.js.map +1 -0
  390. package/dist/types/index.d.ts +8 -0
  391. package/dist/types/index.d.ts.map +1 -0
  392. package/dist/types/index.js +2 -0
  393. package/dist/types/index.js.map +1 -0
  394. package/dist/types/log-writer.d.ts +26 -0
  395. package/dist/types/log-writer.d.ts.map +1 -0
  396. package/dist/types/log-writer.js +2 -0
  397. package/dist/types/log-writer.js.map +1 -0
  398. package/dist/types/permission-handler.d.ts +51 -0
  399. package/dist/types/permission-handler.d.ts.map +1 -0
  400. package/dist/types/permission-handler.js +2 -0
  401. package/dist/types/permission-handler.js.map +1 -0
  402. package/dist/types/skills-manager.d.ts +25 -0
  403. package/dist/types/skills-manager.d.ts.map +1 -0
  404. package/dist/types/skills-manager.js +2 -0
  405. package/dist/types/skills-manager.js.map +1 -0
  406. package/dist/types/speech.d.ts +32 -0
  407. package/dist/types/speech.d.ts.map +1 -0
  408. package/dist/types/speech.js +2 -0
  409. package/dist/types/speech.js.map +1 -0
  410. package/dist/types/storage.d.ts +95 -0
  411. package/dist/types/storage.d.ts.map +1 -0
  412. package/dist/types/storage.js +2 -0
  413. package/dist/types/storage.js.map +1 -0
  414. package/dist/types/task-manager.d.ts +69 -0
  415. package/dist/types/task-manager.d.ts.map +1 -0
  416. package/dist/types/task-manager.js +2 -0
  417. package/dist/types/task-manager.js.map +1 -0
  418. package/dist/types/thought-stream.d.ts +28 -0
  419. package/dist/types/thought-stream.d.ts.map +1 -0
  420. package/dist/types/thought-stream.js +2 -0
  421. package/dist/types/thought-stream.js.map +1 -0
  422. package/dist/types.d.ts +43 -0
  423. package/dist/types.d.ts.map +1 -0
  424. package/dist/types.js +2 -0
  425. package/dist/types.js.map +1 -0
  426. package/dist/utils/bundled-node.d.ts +11 -0
  427. package/dist/utils/bundled-node.d.ts.map +1 -0
  428. package/dist/utils/bundled-node.js +73 -0
  429. package/dist/utils/bundled-node.js.map +1 -0
  430. package/dist/utils/fetch.d.ts +2 -0
  431. package/dist/utils/fetch.d.ts.map +1 -0
  432. package/dist/utils/fetch.js +15 -0
  433. package/dist/utils/fetch.js.map +1 -0
  434. package/dist/utils/index.d.ts +14 -0
  435. package/dist/utils/index.d.ts.map +1 -0
  436. package/dist/utils/index.js +14 -0
  437. package/dist/utils/index.js.map +1 -0
  438. package/dist/utils/json.d.ts +10 -0
  439. package/dist/utils/json.d.ts.map +1 -0
  440. package/dist/utils/json.js +17 -0
  441. package/dist/utils/json.js.map +1 -0
  442. package/dist/utils/log-collector.d.ts +20 -0
  443. package/dist/utils/log-collector.d.ts.map +1 -0
  444. package/dist/utils/log-collector.js +100 -0
  445. package/dist/utils/log-collector.js.map +1 -0
  446. package/dist/utils/log-file-writer.d.ts +26 -0
  447. package/dist/utils/log-file-writer.d.ts.map +1 -0
  448. package/dist/utils/log-file-writer.js +144 -0
  449. package/dist/utils/log-file-writer.js.map +1 -0
  450. package/dist/utils/logging.d.ts +26 -0
  451. package/dist/utils/logging.d.ts.map +1 -0
  452. package/dist/utils/logging.js +91 -0
  453. package/dist/utils/logging.js.map +1 -0
  454. package/dist/utils/network.d.ts +14 -0
  455. package/dist/utils/network.d.ts.map +1 -0
  456. package/dist/utils/network.js +38 -0
  457. package/dist/utils/network.js.map +1 -0
  458. package/dist/utils/paths.d.ts +9 -0
  459. package/dist/utils/paths.d.ts.map +1 -0
  460. package/dist/utils/paths.js +47 -0
  461. package/dist/utils/paths.js.map +1 -0
  462. package/dist/utils/redact.d.ts +2 -0
  463. package/dist/utils/redact.d.ts.map +1 -0
  464. package/dist/utils/redact.js +20 -0
  465. package/dist/utils/redact.js.map +1 -0
  466. package/dist/utils/sanitize.d.ts +3 -0
  467. package/dist/utils/sanitize.d.ts.map +1 -0
  468. package/dist/utils/sanitize.js +21 -0
  469. package/dist/utils/sanitize.js.map +1 -0
  470. package/dist/utils/shell.d.ts +26 -0
  471. package/dist/utils/shell.d.ts.map +1 -0
  472. package/dist/utils/shell.js +60 -0
  473. package/dist/utils/shell.js.map +1 -0
  474. package/dist/utils/system-path.d.ts +3 -0
  475. package/dist/utils/system-path.d.ts.map +1 -0
  476. package/dist/utils/system-path.js +142 -0
  477. package/dist/utils/system-path.js.map +1 -0
  478. package/dist/utils/task-status.d.ts +7 -0
  479. package/dist/utils/task-status.d.ts.map +1 -0
  480. package/dist/utils/task-status.js +12 -0
  481. package/dist/utils/task-status.js.map +1 -0
  482. package/dist/utils/task-validation.d.ts +10 -0
  483. package/dist/utils/task-validation.d.ts.map +1 -0
  484. package/dist/utils/task-validation.js +35 -0
  485. package/dist/utils/task-validation.js.map +1 -0
  486. package/dist/utils/url.d.ts +3 -0
  487. package/dist/utils/url.d.ts.map +1 -0
  488. package/dist/utils/url.js +19 -0
  489. package/dist/utils/url.js.map +1 -0
  490. package/mcp-tools/ask-user-question/SKILL.md +133 -0
  491. package/mcp-tools/ask-user-question/dist/index.mjs +20794 -0
  492. package/mcp-tools/ask-user-question/package.json +17 -0
  493. package/mcp-tools/ask-user-question/src/index.ts +183 -0
  494. package/mcp-tools/ask-user-question/tsconfig.json +12 -0
  495. package/mcp-tools/complete-task/SKILL.md +17 -0
  496. package/mcp-tools/complete-task/dist/index.mjs +20722 -0
  497. package/mcp-tools/complete-task/package.json +12 -0
  498. package/mcp-tools/complete-task/src/index.ts +92 -0
  499. package/mcp-tools/dev-browser/SKILL.md +384 -0
  500. package/mcp-tools/dev-browser/dist/start-relay.mjs +6878 -0
  501. package/mcp-tools/dev-browser/dist/start-server.mjs +23369 -0
  502. package/mcp-tools/dev-browser/package.json +31 -0
  503. package/mcp-tools/dev-browser/src/index.ts +290 -0
  504. package/mcp-tools/dev-browser/src/relay.ts +652 -0
  505. package/mcp-tools/dev-browser/src/types.ts +31 -0
  506. package/mcp-tools/dev-browser/tsconfig.json +36 -0
  507. package/mcp-tools/dev-browser-mcp/README.md +42 -0
  508. package/mcp-tools/dev-browser-mcp/dist/index.mjs +24398 -0
  509. package/mcp-tools/dev-browser-mcp/package.json +17 -0
  510. package/mcp-tools/dev-browser-mcp/src/index.ts +3940 -0
  511. package/mcp-tools/dev-browser-mcp/src/snapshot/compactor.test.ts +86 -0
  512. package/mcp-tools/dev-browser-mcp/src/snapshot/compactor.ts +31 -0
  513. package/mcp-tools/dev-browser-mcp/src/snapshot/differ.test.ts +178 -0
  514. package/mcp-tools/dev-browser-mcp/src/snapshot/differ.ts +167 -0
  515. package/mcp-tools/dev-browser-mcp/src/snapshot/index.ts +19 -0
  516. package/mcp-tools/dev-browser-mcp/src/snapshot/manager.test.ts +247 -0
  517. package/mcp-tools/dev-browser-mcp/src/snapshot/manager.ts +131 -0
  518. package/mcp-tools/dev-browser-mcp/src/snapshot/parser.test.ts +94 -0
  519. package/mcp-tools/dev-browser-mcp/src/snapshot/parser.ts +81 -0
  520. package/mcp-tools/dev-browser-mcp/src/snapshot/priority.test.ts +104 -0
  521. package/mcp-tools/dev-browser-mcp/src/snapshot/priority.ts +84 -0
  522. package/mcp-tools/dev-browser-mcp/src/snapshot/tokens.test.ts +64 -0
  523. package/mcp-tools/dev-browser-mcp/src/snapshot/tokens.ts +36 -0
  524. package/mcp-tools/dev-browser-mcp/src/snapshot/types.ts +89 -0
  525. package/mcp-tools/dev-browser-mcp/tsconfig.json +15 -0
  526. package/mcp-tools/file-permission/dist/index.mjs +20752 -0
  527. package/mcp-tools/file-permission/package.json +17 -0
  528. package/mcp-tools/file-permission/src/index.ts +125 -0
  529. package/mcp-tools/file-permission/tsconfig.json +17 -0
  530. package/mcp-tools/package.json +13 -0
  531. package/mcp-tools/report-checkpoint/src/index.ts +127 -0
  532. package/mcp-tools/report-checkpoint/tsconfig.json +12 -0
  533. package/mcp-tools/report-thought/src/index.ts +109 -0
  534. package/mcp-tools/report-thought/tsconfig.json +12 -0
  535. package/mcp-tools/safe-file-deletion/SKILL.md +50 -0
  536. package/mcp-tools/start-task/dist/index.mjs +20719 -0
  537. package/mcp-tools/start-task/package.json +12 -0
  538. package/mcp-tools/start-task/src/index.ts +86 -0
  539. package/package.json +65 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "complete-task-mcp",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "src/index.ts",
6
+ "scripts": {
7
+ "start": "npx tsx src/index.ts"
8
+ },
9
+ "devDependencies": {
10
+ "@modelcontextprotocol/sdk": "^1.0.0"
11
+ }
12
+ }
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import {
5
+ CallToolRequestSchema,
6
+ ListToolsRequestSchema,
7
+ } from '@modelcontextprotocol/sdk/types.js';
8
+
9
+ const server = new Server(
10
+ { name: 'complete-task', version: '1.0.0' },
11
+ { capabilities: { tools: {} } }
12
+ );
13
+
14
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
15
+ tools: [
16
+ {
17
+ name: 'complete_task',
18
+ description:
19
+ 'Call this tool when you have finished the task or cannot continue. You MUST call this tool to end a task - do not stop without calling it.',
20
+ inputSchema: {
21
+ type: 'object',
22
+ required: ['status', 'summary', 'original_request_summary'],
23
+ properties: {
24
+ status: {
25
+ type: 'string',
26
+ enum: ['success', 'blocked', 'partial'],
27
+ description:
28
+ 'success = fully completed, blocked = cannot continue, partial = completed some but not all',
29
+ },
30
+ original_request_summary: {
31
+ type: 'string',
32
+ description: 'Briefly restate what the user originally asked for',
33
+ },
34
+ summary: {
35
+ type: 'string',
36
+ description: 'What you accomplished. Be specific about each part.',
37
+ },
38
+ remaining_work: {
39
+ type: 'string',
40
+ description:
41
+ 'If blocked or partial, describe what remains and why you could not complete it',
42
+ },
43
+ },
44
+ },
45
+ },
46
+ ],
47
+ }));
48
+
49
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
50
+ if (request.params.name !== 'complete_task') {
51
+ throw new Error(`Unknown tool: ${request.params.name}`);
52
+ }
53
+
54
+ const { status, summary, original_request_summary, remaining_work } =
55
+ request.params.arguments as {
56
+ status: 'success' | 'blocked' | 'partial';
57
+ summary: string;
58
+ original_request_summary: string;
59
+ remaining_work?: string;
60
+ };
61
+
62
+ console.error(`[complete-task] status=${status}`);
63
+ console.error(`[complete-task] original_request=${original_request_summary}`);
64
+ console.error(`[complete-task] summary=${summary}`);
65
+ if (remaining_work) {
66
+ console.error(`[complete-task] remaining=${remaining_work}`);
67
+ }
68
+
69
+ let responseText = `Task ${status}.`;
70
+ if (status === 'success') {
71
+ responseText = `Task completed successfully.`;
72
+ } else if (status === 'blocked') {
73
+ responseText = `Task blocked. Remaining work: ${remaining_work || 'not specified'}`;
74
+ } else if (status === 'partial') {
75
+ responseText = `Task partially completed. Remaining work: ${remaining_work || 'not specified'}`;
76
+ }
77
+
78
+ return {
79
+ content: [{ type: 'text', text: responseText }],
80
+ };
81
+ });
82
+
83
+ async function main() {
84
+ const transport = new StdioServerTransport();
85
+ await server.connect(transport);
86
+ console.error('[complete-task] MCP server running');
87
+ }
88
+
89
+ main().catch((error) => {
90
+ console.error('[complete-task] Fatal error:', error);
91
+ process.exit(1);
92
+ });
@@ -0,0 +1,384 @@
1
+ ---
2
+ name: dev-browser
3
+ description: Browser automation via MCP tools. ALWAYS use these tools for ANY web task - navigating sites, clicking, typing, filling forms, taking screenshots, or extracting data. This is the ONLY way to control the browser.
4
+ ---
5
+
6
+ # Dev Browser
7
+
8
+ Browser automation using MCP tools. Use these tools directly for all web automation tasks.
9
+
10
+ ## CRITICAL: No Shell Commands for Browser
11
+
12
+ **NEVER use bash/shell commands to open browsers or URLs.** This includes:
13
+ - `open` (macOS)
14
+ - `xdg-open` (Linux)
15
+ - `start` (Windows)
16
+ - Python `subprocess`, `webbrowser`, or similar
17
+ - Any script that launches a browser process
18
+
19
+ Shell commands open the user's **default browser** (Safari, Arc, Firefox, etc.), not the automation-controlled Chrome instance. This breaks the workflow because you cannot interact with pages opened via shell commands.
20
+
21
+ **ALL browser automation MUST use the browser_* MCP tools below.**
22
+
23
+ ## IMPORTANT: Use browser_script for Speed
24
+
25
+ **For multi-step workflows, ALWAYS use browser_script.** It's 5-10x faster than individual calls.
26
+
27
+ browser_script finds elements at RUNTIME using CSS selectors - you don't need refs beforehand. This enables complete workflows in ONE call.
28
+
29
+ ### When to Use browser_script
30
+
31
+ - **Login flows**: Navigate → fill email → fill password → submit → verify
32
+ - **Form submissions**: Fill multiple fields → click submit → wait for result
33
+ - **Multi-page workflows**: Navigate → click → wait → interact → snapshot
34
+ - **Any workflow with 2+ steps**
35
+
36
+ ### Example: Complete Login Flow (ONE call)
37
+
38
+ ```json
39
+ browser_script(actions=[
40
+ {"action": "goto", "url": "example.com/login"},
41
+ {"action": "waitForLoad"},
42
+ {"action": "findAndFill", "selector": "input[type='email']", "text": "user@example.com"},
43
+ {"action": "findAndFill", "selector": "input[type='password']", "text": "secret123"},
44
+ {"action": "findAndClick", "selector": "button[type='submit']"},
45
+ {"action": "waitForNavigation"}
46
+ ])
47
+ ```
48
+
49
+ This executes the entire login in ONE roundtrip. **A snapshot is automatically returned** so you always see the final page state.
50
+
51
+ ### browser_script Actions
52
+
53
+ | Action | Parameters | Description |
54
+ |--------|-----------|-------------|
55
+ | `goto` | url | Navigate to URL |
56
+ | `waitForLoad` | timeout? | Wait for page to load |
57
+ | `waitForSelector` | selector, timeout? | Wait for element to appear |
58
+ | `waitForNavigation` | timeout? | Wait for navigation to complete |
59
+ | `findAndFill` | selector, text, pressEnter?, skipIfNotFound? | Find element, fill it |
60
+ | `findAndClick` | selector, skipIfNotFound? | Find element, click it |
61
+ | `fillByRef` | ref, text, pressEnter? | Fill using ref from snapshot |
62
+ | `clickByRef` | ref | Click using ref from snapshot |
63
+ | `snapshot` | - | Get ARIA snapshot (returned at end) |
64
+ | `screenshot` | fullPage? | Take screenshot (returned at end) |
65
+ | `keyboard` | key OR text | Press key or type text |
66
+ | `evaluate` | code | Run JavaScript in page |
67
+
68
+ ### Key Features
69
+
70
+ - **Runtime element discovery**: `findAndFill` and `findAndClick` locate elements when the action runs
71
+ - **Auto-snapshot**: Final page state is **always returned** - no need to add snapshot action
72
+ - **skipIfNotFound**: Set to true to continue if element missing (useful for optional fields)
73
+ - **Automatic waits**: Actions like `goto` and clicks wait for page stability
74
+ - **Error debugging**: If script fails, page state at failure is captured automatically
75
+
76
+ ### Example: Form with Optional Field
77
+
78
+ ```json
79
+ browser_script(actions=[
80
+ {"action": "goto", "url": "example.com/signup"},
81
+ {"action": "waitForLoad"},
82
+ {"action": "findAndFill", "selector": "#name", "text": "John Doe"},
83
+ {"action": "findAndFill", "selector": "#email", "text": "john@example.com"},
84
+ {"action": "findAndFill", "selector": "#phone", "text": "555-1234", "skipIfNotFound": true},
85
+ {"action": "findAndClick", "selector": "button[type='submit']"},
86
+ {"action": "waitForNavigation"}
87
+ ])
88
+ ```
89
+
90
+ Note: No need to add `snapshot` at the end - it's automatic!
91
+
92
+ ---
93
+
94
+ ## Tools
95
+
96
+ **browser_navigate(url, page_name?)** - Navigate to a URL
97
+ - url: The URL to visit (e.g., "google.com" or "https://example.com")
98
+ - page_name: Optional name for the page (default: "main")
99
+
100
+ **browser_snapshot(page_name?, interactive_only?)** - Get the page's accessibility tree
101
+ - Returns YAML with element refs like [ref=e5]
102
+ - Use these refs with browser_click and browser_type
103
+ - **interactive_only=true**: Show only clickable/typeable elements (recommended!)
104
+
105
+ **browser_click(x?, y?, ref?, selector?, page_name?)** - Click on the page
106
+ - x, y: Pixel coordinates (default method)
107
+ - ref: Element ref from browser_snapshot (alternative)
108
+ - selector: CSS selector (alternative)
109
+
110
+ **browser_type(ref?, selector?, text, press_enter?, page_name?)** - Type into an input
111
+ - ref: Element ref from browser_snapshot (preferred)
112
+ - selector: CSS selector as fallback
113
+ - text: The text to type
114
+ - press_enter: Set to true to press Enter after typing
115
+
116
+ **browser_screenshot(page_name?, full_page?)** - Take a screenshot
117
+ - Returns the image for visual inspection
118
+ - full_page: Set to true for full scrollable page
119
+
120
+ **browser_evaluate(script, page_name?)** - Run custom JavaScript
121
+ - script: Plain JavaScript code (no TypeScript)
122
+
123
+ **browser_pages(action, page_name?)** - Manage pages
124
+ - action: "list" to see all pages, "close" to close a page
125
+
126
+ **browser_keyboard(text?, key?, page_name?)** - Type to the focused element
127
+ - text: Text to type (uses real keyboard events)
128
+ - key: Special key like "Enter", "Tab", "Escape", or combos like "Control+a"
129
+ - USE THIS for complex editors like Google Docs, Monaco, etc. that don't have simple input refs
130
+ - Workflow: first click to focus the editor area, then use browser_keyboard to type
131
+
132
+ **browser_script(actions, page_name?)** - Execute complete workflows in ONE call (see above)
133
+ - **USE THIS for speed** - finds elements at runtime, no refs needed beforehand
134
+ - Actions: goto, waitForLoad, waitForSelector, waitForNavigation, findAndFill, findAndClick, fillByRef, clickByRef, snapshot, screenshot, keyboard, evaluate
135
+
136
+ **browser_batch_actions(urls, extractScript, waitForSelector?, page_name?)** - Extract data from multiple URLs in ONE call
137
+ - **USE THIS for multi-page data collection** - visits each URL, runs your JS, returns compact JSON
138
+ - Provide up to 20 URLs and a JS extraction script
139
+ - Returns JSON only (no snapshots/screenshots) to minimize token usage
140
+ - Errors are skipped per-URL — one failed page won't stop the batch
141
+ - 30-second timeout per page
142
+
143
+ **browser_sequence(actions, page_name?)** - Simpler batching (requires refs beforehand)
144
+ - Use when you already have refs from a snapshot
145
+ - Supported actions: click, type, snapshot, screenshot, wait
146
+
147
+ **browser_get_text(ref?, selector?, page_name?)** - Get text content of element
148
+ - Returns the text content of the element
149
+ - Use to verify text was entered or content appeared
150
+
151
+ **browser_is_visible(ref?, selector?, page_name?)** - Check if element is visible
152
+ - Returns true/false
153
+ - Use to verify elements appeared after actions
154
+
155
+ **browser_is_enabled(ref?, selector?, page_name?)** - Check if element is enabled
156
+ - Returns true/false
157
+ - Use to verify buttons/inputs are clickable
158
+
159
+ **browser_is_checked(ref?, selector?, page_name?)** - Check if checkbox/radio is checked
160
+ - Returns true/false
161
+ - Use to verify form state
162
+
163
+ ## Workflow
164
+
165
+ **Preferred: Use browser_script for complete workflows**
166
+ ```json
167
+ browser_script(actions=[
168
+ {"action": "goto", "url": "example.com"},
169
+ {"action": "waitForLoad"},
170
+ {"action": "findAndFill", "selector": "input[name='search']", "text": "query", "pressEnter": true},
171
+ {"action": "waitForNavigation"}
172
+ ])
173
+ ```
174
+ → Returns step results + final page snapshot automatically
175
+
176
+ **Alternative: Step-by-step when you need to inspect first**
177
+ 1. `browser_navigate("example.com")` - Go to page
178
+ 2. `browser_snapshot()` - Find refs like [ref=e5]
179
+ 3. `browser_script` or `browser_sequence` - Execute remaining actions
180
+
181
+ ## CRITICAL: Verification-Driven Workflow
182
+
183
+ **After EVERY action, verify it succeeded before proceeding:**
184
+
185
+ 1. **Navigate** → Take snapshot to confirm page loaded
186
+ 2. **Click** → Take snapshot OR use browser_is_visible to confirm expected change
187
+ 3. **Type** → Use browser_get_text to confirm text was entered
188
+ 4. **Form actions** → Use browser_is_checked to confirm checkbox state
189
+
190
+ **Example verification flow:**
191
+
192
+ ```
193
+ # Click a submit button
194
+ browser_click(ref="e5")
195
+
196
+ # VERIFY: Check if success message appeared
197
+ browser_is_visible(selector=".success-message")
198
+ # Output: true
199
+
200
+ # If false, the action may have failed - investigate before proceeding
201
+ browser_snapshot() # See what actually happened
202
+ ```
203
+
204
+ **Why this matters:**
205
+ - Pages change dynamically - refs become stale
206
+ - Actions can fail silently (overlays, loading states)
207
+ - Verification tells you WHEN to proceed vs retry
208
+ - Without verification, agents assume success and give up when things go wrong
209
+
210
+ **When verification fails:**
211
+ 1. Take a fresh snapshot to see current page state
212
+ 2. Look for error messages, loading indicators, or overlays
213
+ 3. Address the blocker (dismiss modal, wait for load, etc.)
214
+ 4. Retry the original action
215
+ 5. Verify again
216
+
217
+ ## Error Recovery
218
+
219
+ When actions fail, the error message will tell you what to do:
220
+
221
+ | Error | What it means | What to do |
222
+ |-------|---------------|------------|
223
+ | "Element blocked by overlay" | Modal/popup covering element | Find close button, press Escape, or click outside |
224
+ | "Element not found" | Page changed, ref is stale | Run browser_snapshot() to get updated refs |
225
+ | "Multiple elements match" | Selector too broad | Use more specific ref from snapshot |
226
+ | "Element not visible" | Element exists but hidden | Scroll into view or wait for it to appear |
227
+ | "Page closed" | Tab was closed | Use browser_tabs(action="list") to find correct tab |
228
+
229
+ **Never give up on first failure.** Take a snapshot, understand what happened, then adapt.
230
+
231
+ ## CRITICAL: Tab Awareness After Clicks
232
+
233
+ **ALWAYS check for new tabs after clicking links or buttons.**
234
+
235
+ Many websites open content in new tabs. If you click something and the page seems unchanged, a new tab likely opened.
236
+
237
+ **Workflow after clicking:**
238
+ 1. `browser_click(ref="e5")` - Click the element
239
+ 2. `browser_tabs(action="list")` - Check if new tabs opened
240
+ 3. If new tab exists: `browser_tabs(action="switch", index=N)` - Switch to it
241
+ 4. `browser_snapshot()` - Get content from correct tab
242
+
243
+ **Example:**
244
+
245
+ ```
246
+ # Click a link that might open new tab
247
+ browser_click(ref="e3")
248
+
249
+ # Check tabs - ALWAYS do this after clicking!
250
+ browser_tabs(action="list")
251
+ # Output: Open tabs (2):
252
+ # 0: https://original.com
253
+ # 1: https://newpage.com
254
+ #
255
+ # Multiple tabs detected! Use browser_tabs(action="switch", index=N) to switch to another tab.
256
+
257
+ # New tab opened! Switch to it
258
+ browser_tabs(action="switch", index=1)
259
+ # Output: Switched to tab 1: https://newpage.com
260
+ #
261
+ # Now use browser_snapshot() to see the content of this tab.
262
+
263
+ # Now snapshot the new tab
264
+ browser_snapshot()
265
+ ```
266
+
267
+ **Signs you might be on the wrong tab:**
268
+ - Page content hasn't changed after clicking a link
269
+ - Expected elements not found in snapshot
270
+ - URL is still the old URL after navigation
271
+
272
+ **When to check tabs:**
273
+ - After clicking any link
274
+ - After clicking "Open", "View", "Details" buttons
275
+ - After clicking external links
276
+ - When page content doesn't match expectations
277
+
278
+ ## Examples
279
+
280
+ ### Google Search (ONE call with browser_script)
281
+
282
+ ```json
283
+ browser_script(actions=[
284
+ {"action": "goto", "url": "google.com"},
285
+ {"action": "waitForLoad"},
286
+ {"action": "findAndFill", "selector": "textarea[name='q']", "text": "cute animals", "pressEnter": true},
287
+ {"action": "waitForNavigation"}
288
+ ])
289
+ ```
290
+ Returns: step results + final page snapshot (automatic)
291
+
292
+ ### Complete Login Flow (ONE call)
293
+
294
+ ```json
295
+ browser_script(actions=[
296
+ {"action": "goto", "url": "example.com/login"},
297
+ {"action": "waitForLoad"},
298
+ {"action": "findAndFill", "selector": "input[type='email']", "text": "user@example.com"},
299
+ {"action": "findAndFill", "selector": "input[type='password']", "text": "mypassword"},
300
+ {"action": "findAndClick", "selector": "button[type='submit']"},
301
+ {"action": "waitForNavigation"}
302
+ ])
303
+ ```
304
+ Returns: step results + final page snapshot (automatic)
305
+
306
+ ### Multi-Step Checkout (ONE call)
307
+
308
+ ```json
309
+ browser_script(actions=[
310
+ {"action": "goto", "url": "example.com/checkout"},
311
+ {"action": "waitForLoad"},
312
+ {"action": "findAndFill", "selector": "#name", "text": "John Doe"},
313
+ {"action": "findAndFill", "selector": "#address", "text": "123 Main St"},
314
+ {"action": "findAndFill", "selector": "#city", "text": "New York"},
315
+ {"action": "findAndFill", "selector": "#zip", "text": "10001"},
316
+ {"action": "findAndClick", "selector": "button.submit"},
317
+ {"action": "waitForNavigation"}
318
+ ])
319
+ ```
320
+ Returns: step results + final page snapshot (automatic)
321
+
322
+ ### Batch Data Extraction (ONE call with browser_batch_actions)
323
+
324
+ When you need data from multiple pages (e.g. search results, listings, product comparisons), first collect the URLs, then extract data in bulk:
325
+
326
+ **Step 1:** Use browser_evaluate or browser_script to collect URLs from a search results page:
327
+ ```json
328
+ browser_evaluate(script="return [...document.querySelectorAll('a.listing-link')].map(a => a.href)")
329
+ ```
330
+
331
+ **Step 2:** Extract data from all URLs in one call:
332
+ ```json
333
+ browser_batch_actions({
334
+ urls: ["https://example.com/listing/1", "https://example.com/listing/2", "..."],
335
+ extractScript: "return { title: document.querySelector('h1')?.textContent, price: document.querySelector('.price')?.textContent, details: document.querySelector('.details')?.textContent?.slice(0, 300) }",
336
+ waitForSelector: "h1"
337
+ })
338
+ ```
339
+ Returns: compact JSON with results for each URL — no snapshots, no screenshots, minimal tokens.
340
+
341
+ **When to use browser_batch_actions vs browser_script:**
342
+ - `browser_batch_actions`: Visiting **multiple URLs** to **extract data** from each. No interaction needed per page.
343
+ - `browser_script`: Performing a **workflow** on a **single page** (fill forms, click buttons, navigate).
344
+
345
+ ### Google Docs
346
+
347
+ **IMPORTANT**: For Google Docs/Sheets/Slides, navigate directly and use browser_keyboard:
348
+
349
+ ```
350
+ browser_navigate(url="docs.google.com/document/create")
351
+ browser_click(x=640, y=300) # Focus editor
352
+ browser_keyboard(text="Hello, this is my document")
353
+ browser_keyboard(key="Enter")
354
+ browser_keyboard(text="Second paragraph")
355
+ browser_screenshot() # Verify
356
+ ```
357
+
358
+ **Direct URLs:**
359
+ - New Doc: `docs.google.com/document/create`
360
+ - New Sheet: `docs.google.com/spreadsheets/create`
361
+ - New Slide: `docs.google.com/presentation/create`
362
+
363
+ ## Login Pages
364
+
365
+ When you encounter a login page (e.g., Google Sign-In, OAuth screens, authentication prompts):
366
+ - Do NOT say you cannot log in or suggest alternative approaches
367
+ - Instead, ASK the user to log in manually in the browser window
368
+ - Take a screenshot to show the user the login page
369
+ - Say something like: "I've reached a login page. Please log in to your account in the browser window, then let me know when you're done."
370
+ - WAIT for the user to confirm they've logged in before continuing
371
+ - After the user confirms login, take another screenshot to verify you're past the login screen
372
+ - Then continue with the original task
373
+
374
+ This interactive login flow is essential because:
375
+ - Users expect to authenticate themselves for security
376
+ - Many services require human verification (CAPTCHAs, 2FA)
377
+ - The agent should not give up on tasks that require authentication
378
+
379
+ ## Filesystem
380
+
381
+ For saving/downloading content:
382
+ - Use browser's native download (click download buttons, Save As)
383
+ - Chrome handles downloads with its own permissions
384
+ - For text/data, copy to clipboard so users can paste where they want