@tabstack/sdk 1.0.5 → 2.0.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 (513) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/LICENSE +1 -1
  3. package/README.md +282 -356
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +186 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +186 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +467 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +463 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/resource.d.mts +6 -0
  37. package/core/resource.d.mts.map +1 -0
  38. package/core/resource.d.ts +6 -0
  39. package/core/resource.d.ts.map +1 -0
  40. package/core/resource.js +11 -0
  41. package/core/resource.js.map +1 -0
  42. package/core/resource.mjs +7 -0
  43. package/core/resource.mjs.map +1 -0
  44. package/core/streaming.d.mts +33 -0
  45. package/core/streaming.d.mts.map +1 -0
  46. package/core/streaming.d.ts +33 -0
  47. package/core/streaming.d.ts.map +1 -0
  48. package/core/streaming.js +263 -0
  49. package/core/streaming.js.map +1 -0
  50. package/core/streaming.mjs +258 -0
  51. package/core/streaming.mjs.map +1 -0
  52. package/core/uploads.d.mts +3 -0
  53. package/core/uploads.d.mts.map +1 -0
  54. package/core/uploads.d.ts +3 -0
  55. package/core/uploads.d.ts.map +1 -0
  56. package/core/uploads.js +6 -0
  57. package/core/uploads.js.map +1 -0
  58. package/core/uploads.mjs +2 -0
  59. package/core/uploads.mjs.map +1 -0
  60. package/error.d.mts +2 -0
  61. package/error.d.mts.map +1 -0
  62. package/error.d.ts +2 -0
  63. package/error.d.ts.map +1 -0
  64. package/error.js +6 -0
  65. package/error.js.map +1 -0
  66. package/error.mjs +2 -0
  67. package/error.mjs.map +1 -0
  68. package/index.d.mts +6 -0
  69. package/index.d.mts.map +1 -0
  70. package/index.d.ts +6 -0
  71. package/index.d.ts.map +1 -0
  72. package/index.js +30 -0
  73. package/index.js.map +1 -0
  74. package/index.mjs +7 -0
  75. package/index.mjs.map +1 -0
  76. package/internal/builtin-types.d.mts +73 -0
  77. package/internal/builtin-types.d.mts.map +1 -0
  78. package/internal/builtin-types.d.ts +73 -0
  79. package/internal/builtin-types.d.ts.map +1 -0
  80. package/internal/builtin-types.js +4 -0
  81. package/internal/builtin-types.js.map +1 -0
  82. package/internal/builtin-types.mjs +3 -0
  83. package/internal/builtin-types.mjs.map +1 -0
  84. package/internal/decoders/line.d.mts +17 -0
  85. package/internal/decoders/line.d.mts.map +1 -0
  86. package/internal/decoders/line.d.ts +17 -0
  87. package/internal/decoders/line.d.ts.map +1 -0
  88. package/internal/decoders/line.js +113 -0
  89. package/internal/decoders/line.js.map +1 -0
  90. package/internal/decoders/line.mjs +108 -0
  91. package/internal/decoders/line.mjs.map +1 -0
  92. package/internal/detect-platform.d.mts +15 -0
  93. package/internal/detect-platform.d.mts.map +1 -0
  94. package/internal/detect-platform.d.ts +15 -0
  95. package/internal/detect-platform.d.ts.map +1 -0
  96. package/internal/detect-platform.js +162 -0
  97. package/internal/detect-platform.js.map +1 -0
  98. package/internal/detect-platform.mjs +157 -0
  99. package/internal/detect-platform.mjs.map +1 -0
  100. package/internal/errors.d.mts +3 -0
  101. package/internal/errors.d.mts.map +1 -0
  102. package/internal/errors.d.ts +3 -0
  103. package/internal/errors.d.ts.map +1 -0
  104. package/internal/errors.js +41 -0
  105. package/internal/errors.js.map +1 -0
  106. package/internal/errors.mjs +36 -0
  107. package/internal/errors.mjs.map +1 -0
  108. package/internal/headers.d.mts +20 -0
  109. package/internal/headers.d.mts.map +1 -0
  110. package/internal/headers.d.ts +20 -0
  111. package/internal/headers.d.ts.map +1 -0
  112. package/internal/headers.js +79 -0
  113. package/internal/headers.js.map +1 -0
  114. package/internal/headers.mjs +74 -0
  115. package/internal/headers.mjs.map +1 -0
  116. package/internal/parse.d.mts +12 -0
  117. package/internal/parse.d.mts.map +1 -0
  118. package/internal/parse.d.ts +12 -0
  119. package/internal/parse.d.ts.map +1 -0
  120. package/internal/parse.js +45 -0
  121. package/internal/parse.js.map +1 -0
  122. package/internal/parse.mjs +42 -0
  123. package/internal/parse.mjs.map +1 -0
  124. package/internal/request-options.d.mts +77 -0
  125. package/internal/request-options.d.mts.map +1 -0
  126. package/internal/request-options.d.ts +77 -0
  127. package/internal/request-options.d.ts.map +1 -0
  128. package/internal/request-options.js +14 -0
  129. package/internal/request-options.js.map +1 -0
  130. package/internal/request-options.mjs +10 -0
  131. package/internal/request-options.mjs.map +1 -0
  132. package/internal/shim-types.d.mts +17 -0
  133. package/internal/shim-types.d.mts.map +1 -0
  134. package/internal/shim-types.d.ts +17 -0
  135. package/internal/shim-types.d.ts.map +1 -0
  136. package/internal/shim-types.js +4 -0
  137. package/internal/shim-types.js.map +1 -0
  138. package/internal/shim-types.mjs +3 -0
  139. package/internal/shim-types.mjs.map +1 -0
  140. package/internal/shims.d.mts +20 -0
  141. package/internal/shims.d.mts.map +1 -0
  142. package/internal/shims.d.ts +20 -0
  143. package/internal/shims.d.ts.map +1 -0
  144. package/internal/shims.js +92 -0
  145. package/internal/shims.js.map +1 -0
  146. package/internal/shims.mjs +85 -0
  147. package/internal/shims.mjs.map +1 -0
  148. package/internal/to-file.d.mts +45 -0
  149. package/internal/to-file.d.mts.map +1 -0
  150. package/internal/to-file.d.ts +45 -0
  151. package/internal/to-file.d.ts.map +1 -0
  152. package/internal/to-file.js +91 -0
  153. package/internal/to-file.js.map +1 -0
  154. package/internal/to-file.mjs +88 -0
  155. package/internal/to-file.mjs.map +1 -0
  156. package/internal/tslib.js +81 -0
  157. package/internal/tslib.mjs +17 -0
  158. package/internal/types.d.mts +69 -0
  159. package/internal/types.d.mts.map +1 -0
  160. package/internal/types.d.ts +69 -0
  161. package/internal/types.d.ts.map +1 -0
  162. package/internal/types.js +4 -0
  163. package/internal/types.js.map +1 -0
  164. package/internal/types.mjs +3 -0
  165. package/internal/types.mjs.map +1 -0
  166. package/internal/uploads.d.mts +42 -0
  167. package/internal/uploads.d.mts.map +1 -0
  168. package/internal/uploads.d.ts +42 -0
  169. package/internal/uploads.d.ts.map +1 -0
  170. package/internal/uploads.js +141 -0
  171. package/internal/uploads.js.map +1 -0
  172. package/internal/uploads.mjs +131 -0
  173. package/internal/uploads.mjs.map +1 -0
  174. package/internal/utils/base64.d.mts +3 -0
  175. package/internal/utils/base64.d.mts.map +1 -0
  176. package/internal/utils/base64.d.ts +3 -0
  177. package/internal/utils/base64.d.ts.map +1 -0
  178. package/internal/utils/base64.js +38 -0
  179. package/internal/utils/base64.js.map +1 -0
  180. package/internal/utils/base64.mjs +33 -0
  181. package/internal/utils/base64.mjs.map +1 -0
  182. package/internal/utils/bytes.d.mts +4 -0
  183. package/internal/utils/bytes.d.mts.map +1 -0
  184. package/internal/utils/bytes.d.ts +4 -0
  185. package/internal/utils/bytes.d.ts.map +1 -0
  186. package/internal/utils/bytes.js +31 -0
  187. package/internal/utils/bytes.js.map +1 -0
  188. package/internal/utils/bytes.mjs +26 -0
  189. package/internal/utils/bytes.mjs.map +1 -0
  190. package/internal/utils/env.d.mts +9 -0
  191. package/internal/utils/env.d.mts.map +1 -0
  192. package/internal/utils/env.d.ts +9 -0
  193. package/internal/utils/env.d.ts.map +1 -0
  194. package/internal/utils/env.js +22 -0
  195. package/internal/utils/env.js.map +1 -0
  196. package/internal/utils/env.mjs +18 -0
  197. package/internal/utils/env.mjs.map +1 -0
  198. package/internal/utils/log.d.mts +37 -0
  199. package/internal/utils/log.d.mts.map +1 -0
  200. package/internal/utils/log.d.ts +37 -0
  201. package/internal/utils/log.d.ts.map +1 -0
  202. package/internal/utils/log.js +85 -0
  203. package/internal/utils/log.js.map +1 -0
  204. package/internal/utils/log.mjs +79 -0
  205. package/internal/utils/log.mjs.map +1 -0
  206. package/internal/utils/path.d.mts +15 -0
  207. package/internal/utils/path.d.mts.map +1 -0
  208. package/internal/utils/path.d.ts +15 -0
  209. package/internal/utils/path.d.ts.map +1 -0
  210. package/internal/utils/path.js +79 -0
  211. package/internal/utils/path.js.map +1 -0
  212. package/internal/utils/path.mjs +74 -0
  213. package/internal/utils/path.mjs.map +1 -0
  214. package/internal/utils/sleep.d.mts +2 -0
  215. package/internal/utils/sleep.d.mts.map +1 -0
  216. package/internal/utils/sleep.d.ts +2 -0
  217. package/internal/utils/sleep.d.ts.map +1 -0
  218. package/internal/utils/sleep.js +7 -0
  219. package/internal/utils/sleep.js.map +1 -0
  220. package/internal/utils/sleep.mjs +3 -0
  221. package/internal/utils/sleep.mjs.map +1 -0
  222. package/internal/utils/uuid.d.mts +5 -0
  223. package/internal/utils/uuid.d.mts.map +1 -0
  224. package/internal/utils/uuid.d.ts +5 -0
  225. package/internal/utils/uuid.d.ts.map +1 -0
  226. package/internal/utils/uuid.js +19 -0
  227. package/internal/utils/uuid.js.map +1 -0
  228. package/internal/utils/uuid.mjs +15 -0
  229. package/internal/utils/uuid.mjs.map +1 -0
  230. package/internal/utils/values.d.mts +18 -0
  231. package/internal/utils/values.d.mts.map +1 -0
  232. package/internal/utils/values.d.ts +18 -0
  233. package/internal/utils/values.d.ts.map +1 -0
  234. package/internal/utils/values.js +112 -0
  235. package/internal/utils/values.js.map +1 -0
  236. package/internal/utils/values.mjs +94 -0
  237. package/internal/utils/values.mjs.map +1 -0
  238. package/internal/utils.d.mts +7 -0
  239. package/internal/utils.d.mts.map +1 -0
  240. package/internal/utils.d.ts +7 -0
  241. package/internal/utils.d.ts.map +1 -0
  242. package/internal/utils.js +11 -0
  243. package/internal/utils.js.map +1 -0
  244. package/internal/utils.mjs +8 -0
  245. package/internal/utils.mjs.map +1 -0
  246. package/package.json +139 -82
  247. package/resource.d.mts +2 -0
  248. package/resource.d.mts.map +1 -0
  249. package/resource.d.ts +2 -0
  250. package/resource.d.ts.map +1 -0
  251. package/resource.js +6 -0
  252. package/resource.js.map +1 -0
  253. package/resource.mjs +2 -0
  254. package/resource.mjs.map +1 -0
  255. package/resources/agent.d.mts +74 -0
  256. package/resources/agent.d.mts.map +1 -0
  257. package/resources/agent.d.ts +74 -0
  258. package/resources/agent.d.ts.map +1 -0
  259. package/resources/agent.js +45 -0
  260. package/resources/agent.js.map +1 -0
  261. package/resources/agent.mjs +41 -0
  262. package/resources/agent.mjs.map +1 -0
  263. package/resources/extract.d.mts +118 -0
  264. package/resources/extract.d.mts.map +1 -0
  265. package/resources/extract.d.ts +118 -0
  266. package/resources/extract.d.ts.map +1 -0
  267. package/resources/extract.js +37 -0
  268. package/resources/extract.js.map +1 -0
  269. package/resources/extract.mjs +33 -0
  270. package/resources/extract.mjs.map +1 -0
  271. package/resources/generate.d.mts +45 -0
  272. package/resources/generate.d.mts.map +1 -0
  273. package/resources/generate.d.ts +45 -0
  274. package/resources/generate.d.ts.map +1 -0
  275. package/resources/generate.js +26 -0
  276. package/resources/generate.js.map +1 -0
  277. package/resources/generate.mjs +22 -0
  278. package/resources/generate.mjs.map +1 -0
  279. package/resources/index.d.mts +4 -0
  280. package/resources/index.d.mts.map +1 -0
  281. package/resources/index.d.ts +4 -0
  282. package/resources/index.d.ts.map +1 -0
  283. package/resources/index.js +11 -0
  284. package/resources/index.js.map +1 -0
  285. package/resources/index.mjs +5 -0
  286. package/resources/index.mjs.map +1 -0
  287. package/resources.d.mts +2 -0
  288. package/resources.d.mts.map +1 -0
  289. package/resources.d.ts +2 -0
  290. package/resources.d.ts.map +1 -0
  291. package/resources.js +5 -0
  292. package/resources.js.map +1 -0
  293. package/resources.mjs +2 -0
  294. package/resources.mjs.map +1 -0
  295. package/src/api-promise.ts +2 -0
  296. package/src/client.ts +756 -0
  297. package/src/core/README.md +3 -0
  298. package/src/core/api-promise.ts +92 -0
  299. package/src/core/error.ts +130 -0
  300. package/src/core/resource.ts +11 -0
  301. package/src/core/streaming.ts +315 -0
  302. package/src/core/uploads.ts +2 -0
  303. package/src/error.ts +2 -0
  304. package/src/index.ts +22 -0
  305. package/src/internal/README.md +3 -0
  306. package/src/internal/builtin-types.ts +93 -0
  307. package/src/internal/decoders/line.ts +135 -0
  308. package/src/internal/detect-platform.ts +196 -0
  309. package/src/internal/errors.ts +33 -0
  310. package/src/internal/headers.ts +97 -0
  311. package/src/internal/parse.ts +64 -0
  312. package/src/internal/request-options.ts +93 -0
  313. package/src/internal/shim-types.ts +26 -0
  314. package/src/internal/shims.ts +107 -0
  315. package/src/internal/to-file.ts +154 -0
  316. package/src/internal/types.ts +95 -0
  317. package/src/internal/uploads.ts +187 -0
  318. package/src/internal/utils/base64.ts +40 -0
  319. package/src/internal/utils/bytes.ts +32 -0
  320. package/src/internal/utils/env.ts +18 -0
  321. package/src/internal/utils/log.ts +126 -0
  322. package/src/internal/utils/path.ts +88 -0
  323. package/src/internal/utils/sleep.ts +3 -0
  324. package/src/internal/utils/uuid.ts +17 -0
  325. package/src/internal/utils/values.ts +105 -0
  326. package/src/internal/utils.ts +8 -0
  327. package/src/lib/.keep +4 -0
  328. package/src/resource.ts +2 -0
  329. package/src/resources/agent.ts +93 -0
  330. package/src/resources/extract.ts +147 -0
  331. package/src/resources/generate.ts +53 -0
  332. package/src/resources/index.ts +11 -0
  333. package/src/resources.ts +1 -0
  334. package/src/streaming.ts +2 -0
  335. package/src/tsconfig.json +11 -0
  336. package/src/uploads.ts +2 -0
  337. package/src/version.ts +1 -0
  338. package/streaming.d.mts +2 -0
  339. package/streaming.d.mts.map +1 -0
  340. package/streaming.d.ts +2 -0
  341. package/streaming.d.ts.map +1 -0
  342. package/streaming.js +6 -0
  343. package/streaming.js.map +1 -0
  344. package/streaming.mjs +2 -0
  345. package/streaming.mjs.map +1 -0
  346. package/uploads.d.mts +2 -0
  347. package/uploads.d.mts.map +1 -0
  348. package/uploads.d.ts +2 -0
  349. package/uploads.d.ts.map +1 -0
  350. package/uploads.js +6 -0
  351. package/uploads.js.map +1 -0
  352. package/uploads.mjs +2 -0
  353. package/uploads.mjs.map +1 -0
  354. package/version.d.mts +2 -0
  355. package/version.d.mts.map +1 -0
  356. package/version.d.ts +2 -0
  357. package/version.d.ts.map +1 -0
  358. package/version.js +5 -0
  359. package/version.js.map +1 -0
  360. package/version.mjs +2 -0
  361. package/version.mjs.map +1 -0
  362. package/dist/cjs/agent.d.ts +0 -156
  363. package/dist/cjs/agent.d.ts.map +0 -1
  364. package/dist/cjs/agent.js +0 -211
  365. package/dist/cjs/agent.js.map +0 -1
  366. package/dist/cjs/agent.test.d.ts +0 -5
  367. package/dist/cjs/agent.test.d.ts.map +0 -1
  368. package/dist/cjs/agent.test.js +0 -441
  369. package/dist/cjs/agent.test.js.map +0 -1
  370. package/dist/cjs/client.d.ts +0 -58
  371. package/dist/cjs/client.d.ts.map +0 -1
  372. package/dist/cjs/client.js +0 -58
  373. package/dist/cjs/client.js.map +0 -1
  374. package/dist/cjs/client.test.d.ts +0 -5
  375. package/dist/cjs/client.test.d.ts.map +0 -1
  376. package/dist/cjs/client.test.js +0 -255
  377. package/dist/cjs/client.test.js.map +0 -1
  378. package/dist/cjs/exceptions.d.ts +0 -57
  379. package/dist/cjs/exceptions.d.ts.map +0 -1
  380. package/dist/cjs/exceptions.js +0 -95
  381. package/dist/cjs/exceptions.js.map +0 -1
  382. package/dist/cjs/exceptions.test.d.ts +0 -5
  383. package/dist/cjs/exceptions.test.d.ts.map +0 -1
  384. package/dist/cjs/exceptions.test.js +0 -239
  385. package/dist/cjs/exceptions.test.js.map +0 -1
  386. package/dist/cjs/extract.d.ts +0 -151
  387. package/dist/cjs/extract.d.ts.map +0 -1
  388. package/dist/cjs/extract.js +0 -165
  389. package/dist/cjs/extract.js.map +0 -1
  390. package/dist/cjs/extract.test.d.ts +0 -5
  391. package/dist/cjs/extract.test.d.ts.map +0 -1
  392. package/dist/cjs/extract.test.js +0 -250
  393. package/dist/cjs/extract.test.js.map +0 -1
  394. package/dist/cjs/generate.d.ts +0 -113
  395. package/dist/cjs/generate.d.ts.map +0 -1
  396. package/dist/cjs/generate.js +0 -124
  397. package/dist/cjs/generate.js.map +0 -1
  398. package/dist/cjs/generate.test.d.ts +0 -5
  399. package/dist/cjs/generate.test.d.ts.map +0 -1
  400. package/dist/cjs/generate.test.js +0 -314
  401. package/dist/cjs/generate.test.js.map +0 -1
  402. package/dist/cjs/index.d.ts +0 -52
  403. package/dist/cjs/index.d.ts.map +0 -1
  404. package/dist/cjs/index.js +0 -72
  405. package/dist/cjs/index.js.map +0 -1
  406. package/dist/cjs/package.json +0 -3
  407. package/dist/cjs/types.d.ts +0 -73
  408. package/dist/cjs/types.d.ts.map +0 -1
  409. package/dist/cjs/types.js +0 -118
  410. package/dist/cjs/types.js.map +0 -1
  411. package/dist/cjs/types.test.d.ts +0 -5
  412. package/dist/cjs/types.test.d.ts.map +0 -1
  413. package/dist/cjs/types.test.js +0 -370
  414. package/dist/cjs/types.test.js.map +0 -1
  415. package/dist/cjs/util/http.d.ts +0 -29
  416. package/dist/cjs/util/http.d.ts.map +0 -1
  417. package/dist/cjs/util/http.js +0 -201
  418. package/dist/cjs/util/http.js.map +0 -1
  419. package/dist/cjs/util/http.test.d.ts +0 -5
  420. package/dist/cjs/util/http.test.d.ts.map +0 -1
  421. package/dist/cjs/util/http.test.js +0 -237
  422. package/dist/cjs/util/http.test.js.map +0 -1
  423. package/dist/esm/agent.d.ts +0 -156
  424. package/dist/esm/agent.d.ts.map +0 -1
  425. package/dist/esm/agent.js +0 -207
  426. package/dist/esm/agent.js.map +0 -1
  427. package/dist/esm/agent.test.d.ts +0 -5
  428. package/dist/esm/agent.test.d.ts.map +0 -1
  429. package/dist/esm/agent.test.js +0 -439
  430. package/dist/esm/agent.test.js.map +0 -1
  431. package/dist/esm/client.d.ts +0 -58
  432. package/dist/esm/client.d.ts.map +0 -1
  433. package/dist/esm/client.js +0 -54
  434. package/dist/esm/client.js.map +0 -1
  435. package/dist/esm/client.test.d.ts +0 -5
  436. package/dist/esm/client.test.d.ts.map +0 -1
  437. package/dist/esm/client.test.js +0 -253
  438. package/dist/esm/client.test.js.map +0 -1
  439. package/dist/esm/exceptions.d.ts +0 -57
  440. package/dist/esm/exceptions.d.ts.map +0 -1
  441. package/dist/esm/exceptions.js +0 -85
  442. package/dist/esm/exceptions.js.map +0 -1
  443. package/dist/esm/exceptions.test.d.ts +0 -5
  444. package/dist/esm/exceptions.test.d.ts.map +0 -1
  445. package/dist/esm/exceptions.test.js +0 -237
  446. package/dist/esm/exceptions.test.js.map +0 -1
  447. package/dist/esm/extract.d.ts +0 -151
  448. package/dist/esm/extract.d.ts.map +0 -1
  449. package/dist/esm/extract.js +0 -161
  450. package/dist/esm/extract.js.map +0 -1
  451. package/dist/esm/extract.test.d.ts +0 -5
  452. package/dist/esm/extract.test.d.ts.map +0 -1
  453. package/dist/esm/extract.test.js +0 -248
  454. package/dist/esm/extract.test.js.map +0 -1
  455. package/dist/esm/generate.d.ts +0 -113
  456. package/dist/esm/generate.d.ts.map +0 -1
  457. package/dist/esm/generate.js +0 -120
  458. package/dist/esm/generate.js.map +0 -1
  459. package/dist/esm/generate.test.d.ts +0 -5
  460. package/dist/esm/generate.test.d.ts.map +0 -1
  461. package/dist/esm/generate.test.js +0 -312
  462. package/dist/esm/generate.test.js.map +0 -1
  463. package/dist/esm/index.d.ts +0 -52
  464. package/dist/esm/index.d.ts.map +0 -1
  465. package/dist/esm/index.js +0 -53
  466. package/dist/esm/index.js.map +0 -1
  467. package/dist/esm/package.json +0 -3
  468. package/dist/esm/types.d.ts +0 -73
  469. package/dist/esm/types.d.ts.map +0 -1
  470. package/dist/esm/types.js +0 -110
  471. package/dist/esm/types.js.map +0 -1
  472. package/dist/esm/types.test.d.ts +0 -5
  473. package/dist/esm/types.test.d.ts.map +0 -1
  474. package/dist/esm/types.test.js +0 -368
  475. package/dist/esm/types.test.js.map +0 -1
  476. package/dist/esm/util/http.d.ts +0 -29
  477. package/dist/esm/util/http.d.ts.map +0 -1
  478. package/dist/esm/util/http.js +0 -164
  479. package/dist/esm/util/http.js.map +0 -1
  480. package/dist/esm/util/http.test.d.ts +0 -5
  481. package/dist/esm/util/http.test.d.ts.map +0 -1
  482. package/dist/esm/util/http.test.js +0 -232
  483. package/dist/esm/util/http.test.js.map +0 -1
  484. package/dist/types/agent.d.ts +0 -156
  485. package/dist/types/agent.d.ts.map +0 -1
  486. package/dist/types/agent.test.d.ts +0 -5
  487. package/dist/types/agent.test.d.ts.map +0 -1
  488. package/dist/types/client.d.ts +0 -58
  489. package/dist/types/client.d.ts.map +0 -1
  490. package/dist/types/client.test.d.ts +0 -5
  491. package/dist/types/client.test.d.ts.map +0 -1
  492. package/dist/types/exceptions.d.ts +0 -57
  493. package/dist/types/exceptions.d.ts.map +0 -1
  494. package/dist/types/exceptions.test.d.ts +0 -5
  495. package/dist/types/exceptions.test.d.ts.map +0 -1
  496. package/dist/types/extract.d.ts +0 -151
  497. package/dist/types/extract.d.ts.map +0 -1
  498. package/dist/types/extract.test.d.ts +0 -5
  499. package/dist/types/extract.test.d.ts.map +0 -1
  500. package/dist/types/generate.d.ts +0 -113
  501. package/dist/types/generate.d.ts.map +0 -1
  502. package/dist/types/generate.test.d.ts +0 -5
  503. package/dist/types/generate.test.d.ts.map +0 -1
  504. package/dist/types/index.d.ts +0 -52
  505. package/dist/types/index.d.ts.map +0 -1
  506. package/dist/types/types.d.ts +0 -73
  507. package/dist/types/types.d.ts.map +0 -1
  508. package/dist/types/types.test.d.ts +0 -5
  509. package/dist/types/types.test.d.ts.map +0 -1
  510. package/dist/types/util/http.d.ts +0 -29
  511. package/dist/types/util/http.d.ts.map +0 -1
  512. package/dist/types/util/http.test.d.ts +0 -5
  513. package/dist/types/util/http.test.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/util/http.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for HTTPClient
3
- */
4
- export {};
5
- //# sourceMappingURL=http.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.test.d.ts","sourceRoot":"","sources":["../../../src/util/http.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,237 +0,0 @@
1
- "use strict";
2
- /**
3
- * Tests for HTTPClient
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const nock_1 = __importDefault(require("nock"));
10
- const http_1 = require("./http");
11
- const exceptions_1 = require("../exceptions");
12
- describe('HTTPClient', () => {
13
- const apiKey = 'test-api-key';
14
- const baseURL = 'https://api.tabstack.ai';
15
- beforeEach(() => {
16
- nock_1.default.cleanAll();
17
- });
18
- afterEach(() => {
19
- nock_1.default.cleanAll();
20
- });
21
- describe('constructor', () => {
22
- it('should create client with API key', () => {
23
- const client = new http_1.HTTPClient({ apiKey });
24
- expect(client).toBeInstanceOf(http_1.HTTPClient);
25
- });
26
- it('should use default base URL', () => {
27
- const client = new http_1.HTTPClient({ apiKey });
28
- expect(client).toBeDefined();
29
- });
30
- it('should accept custom base URL', () => {
31
- const customURL = 'https://custom.api.com';
32
- const client = new http_1.HTTPClient({ apiKey, baseURL: customURL });
33
- expect(client).toBeDefined();
34
- });
35
- it('should strip trailing slash from base URL', () => {
36
- const client = new http_1.HTTPClient({ apiKey, baseURL: 'https://api.example.com/' });
37
- expect(client).toBeDefined();
38
- });
39
- });
40
- describe('post()', () => {
41
- let client;
42
- beforeEach(() => {
43
- client = new http_1.HTTPClient({ apiKey, baseURL });
44
- });
45
- it('should make successful POST request with JSON response', async () => {
46
- const responseData = { result: 'success', data: { id: 1 } };
47
- (0, nock_1.default)(baseURL).post('/test/endpoint').reply(200, responseData);
48
- const result = await client.post('/test/endpoint', { key: 'value' });
49
- expect(result).toEqual(responseData);
50
- });
51
- it('should send correct headers', async () => {
52
- (0, nock_1.default)(baseURL)
53
- .post('/test', (body) => {
54
- return body.key === 'value';
55
- })
56
- .matchHeader('authorization', `Bearer ${apiKey}`)
57
- .matchHeader('content-type', 'application/json')
58
- .matchHeader('accept', 'application/json')
59
- .matchHeader('user-agent', '@tabstack/sdk/1.0.0')
60
- .reply(200, { success: true });
61
- await client.post('/test', { key: 'value' });
62
- });
63
- it('should handle empty request body', async () => {
64
- (0, nock_1.default)(baseURL).post('/test').reply(200, { success: true });
65
- const result = await client.post('/test');
66
- expect(result).toEqual({ success: true });
67
- });
68
- it('should handle empty response body', async () => {
69
- (0, nock_1.default)(baseURL).post('/test').reply(200, '');
70
- const result = await client.post('/test', { key: 'value' });
71
- expect(result).toEqual({});
72
- });
73
- it('should throw BadRequestError on 400 status', async () => {
74
- (0, nock_1.default)(baseURL).post('/test').reply(400, { error: 'Invalid request' });
75
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.BadRequestError);
76
- });
77
- it('should throw UnauthorizedError on 401 status', async () => {
78
- (0, nock_1.default)(baseURL).post('/test').reply(401, { error: 'Invalid API key' });
79
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.UnauthorizedError);
80
- });
81
- it('should throw InvalidURLError on 422 status', async () => {
82
- (0, nock_1.default)(baseURL).post('/test').reply(422, { error: 'URL not accessible' });
83
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.InvalidURLError);
84
- });
85
- it('should throw ServerError on 500 status', async () => {
86
- (0, nock_1.default)(baseURL).post('/test').reply(500, { error: 'Internal error' });
87
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.ServerError);
88
- });
89
- it('should throw ServiceUnavailableError on 503 status', async () => {
90
- (0, nock_1.default)(baseURL).post('/test').reply(503, { error: 'Service not available' });
91
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.ServiceUnavailableError);
92
- });
93
- it('should throw APIError on other error status codes', async () => {
94
- (0, nock_1.default)(baseURL).post('/test').reply(418, { error: "I'm a teapot" });
95
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.APIError);
96
- });
97
- it('should handle error responses without JSON', async () => {
98
- (0, nock_1.default)(baseURL).post('/test').reply(400, 'Plain text error');
99
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.BadRequestError);
100
- });
101
- it('should handle error responses with empty body', async () => {
102
- (0, nock_1.default)(baseURL).post('/test').reply(500, '');
103
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.ServerError);
104
- });
105
- it('should throw TabstackError on malformed JSON response', async () => {
106
- (0, nock_1.default)(baseURL).post('/test').reply(200, 'invalid json{{{');
107
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.TabstackError);
108
- });
109
- it('should throw TabstackError on network error', async () => {
110
- (0, nock_1.default)(baseURL).post('/test').replyWithError('Network error');
111
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.TabstackError);
112
- });
113
- it('should handle query parameters in path', async () => {
114
- (0, nock_1.default)(baseURL).post('/test?param=value').reply(200, { success: true });
115
- const result = await client.post('/test?param=value', {});
116
- expect(result).toEqual({ success: true });
117
- });
118
- it('should work with HTTP (not HTTPS) protocol', async () => {
119
- const httpClient = new http_1.HTTPClient({ apiKey, baseURL: 'http://api.example.com' });
120
- (0, nock_1.default)('http://api.example.com').post('/test').reply(200, { success: true });
121
- const result = await httpClient.post('/test', {});
122
- expect(result).toEqual({ success: true });
123
- });
124
- });
125
- describe('postStream()', () => {
126
- let client;
127
- beforeEach(() => {
128
- client = new http_1.HTTPClient({ apiKey, baseURL });
129
- });
130
- it('should stream Server-Sent Events', async () => {
131
- const sseData = [
132
- 'event: message',
133
- 'data: {"type":"event1"}',
134
- '',
135
- 'event: message',
136
- 'data: {"type":"event2"}',
137
- '',
138
- ].join('\n');
139
- (0, nock_1.default)(baseURL).post('/stream').reply(200, sseData, {
140
- 'content-type': 'text/event-stream',
141
- });
142
- const events = [];
143
- for await (const line of client.postStream('/stream', { key: 'value' })) {
144
- events.push(line);
145
- }
146
- expect(events).toContain('event: message');
147
- expect(events).toContain('data: {"type":"event1"}');
148
- expect(events).toContain('data: {"type":"event2"}');
149
- });
150
- it('should handle streaming with CRLF line endings', async () => {
151
- const sseData = 'event: test\r\ndata: value\r\n\r\n';
152
- (0, nock_1.default)(baseURL).post('/stream').reply(200, sseData);
153
- const events = [];
154
- for await (const line of client.postStream('/stream')) {
155
- events.push(line);
156
- }
157
- expect(events).toContain('event: test');
158
- expect(events).toContain('data: value');
159
- });
160
- it('should yield remaining buffer data', async () => {
161
- const sseData = 'data: incomplete line';
162
- (0, nock_1.default)(baseURL).post('/stream').reply(200, sseData);
163
- const events = [];
164
- for await (const line of client.postStream('/stream')) {
165
- events.push(line);
166
- }
167
- expect(events).toContain('data: incomplete line');
168
- });
169
- it('should skip empty lines', async () => {
170
- const sseData = 'data: value1\n\n\ndata: value2\n';
171
- (0, nock_1.default)(baseURL).post('/stream').reply(200, sseData);
172
- const events = [];
173
- for await (const line of client.postStream('/stream')) {
174
- events.push(line);
175
- }
176
- expect(events).toEqual(['data: value1', 'data: value2']);
177
- });
178
- it('should send Accept: text/event-stream header', async () => {
179
- (0, nock_1.default)(baseURL)
180
- .post('/stream')
181
- .matchHeader('accept', 'text/event-stream')
182
- .reply(200, 'data: test\n');
183
- const events = [];
184
- for await (const line of client.postStream('/stream')) {
185
- events.push(line);
186
- }
187
- expect(events.length).toBeGreaterThan(0);
188
- });
189
- it('should throw UnauthorizedError on 401 status during stream', async () => {
190
- (0, nock_1.default)(baseURL).post('/stream').reply(401, { error: 'Unauthorized' });
191
- const generator = client.postStream('/stream');
192
- await expect(generator.next()).rejects.toThrow(exceptions_1.UnauthorizedError);
193
- });
194
- it('should throw ServerError on 500 status during stream', async () => {
195
- (0, nock_1.default)(baseURL).post('/stream').reply(500, { error: 'Server error' });
196
- const generator = client.postStream('/stream');
197
- await expect(generator.next()).rejects.toThrow(exceptions_1.ServerError);
198
- });
199
- it('should throw TabstackError on network error during stream', async () => {
200
- (0, nock_1.default)(baseURL).post('/stream').replyWithError('Connection failed');
201
- const generator = client.postStream('/stream');
202
- const error = await generator.next().catch((e) => e);
203
- expect(error).toBeInstanceOf(Error);
204
- expect(error.message).toContain('Request failed');
205
- });
206
- it('should handle multiline streaming data', async () => {
207
- const sseData = 'data: line1\ndata: line2\ndata: line3\n';
208
- (0, nock_1.default)(baseURL).post('/stream').reply(200, sseData);
209
- const events = [];
210
- for await (const line of client.postStream('/stream')) {
211
- events.push(line);
212
- }
213
- expect(events).toEqual(['data: line1', 'data: line2', 'data: line3']);
214
- });
215
- });
216
- describe('baseURL handling', () => {
217
- it('should strip trailing slash from custom base URL', async () => {
218
- const client = new http_1.HTTPClient({
219
- apiKey,
220
- baseURL: 'https://custom.api.com/',
221
- });
222
- (0, nock_1.default)('https://custom.api.com').post('/endpoint').reply(200, { success: true });
223
- const result = await client.post('/endpoint', {});
224
- expect(result).toEqual({ success: true });
225
- });
226
- it('should handle base URL without trailing slash', async () => {
227
- const client = new http_1.HTTPClient({
228
- apiKey,
229
- baseURL: 'https://custom.api.com',
230
- });
231
- (0, nock_1.default)('https://custom.api.com').post('/endpoint').reply(200, { success: true });
232
- const result = await client.post('/endpoint', {});
233
- expect(result).toEqual({ success: true });
234
- });
235
- });
236
- });
237
- //# sourceMappingURL=http.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../../src/util/http.test.ts"],"names":[],"mappings":"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"}
@@ -1,156 +0,0 @@
1
- /**
2
- * Agent client for Tabstack SDK
3
- */
4
- import { HTTPClient } from './util/http';
5
- import { AutomateEvent } from './types';
6
- export interface AutomateOptions {
7
- url?: string;
8
- data?: Record<string, unknown>;
9
- guardrails?: string;
10
- maxIterations?: number;
11
- maxValidationAttempts?: number;
12
- }
13
- /**
14
- * Agent client for AI-powered web automation
15
- *
16
- * This class provides methods for executing complex web automation tasks using
17
- * natural language instructions. The automation runs in a browser and streams
18
- * real-time progress updates.
19
- */
20
- export declare class Agent {
21
- private httpClient;
22
- constructor(httpClient: HTTPClient);
23
- /**
24
- * Execute AI-powered browser automation task with streaming updates
25
- *
26
- * Execute complex web automation tasks using natural language instructions. This method
27
- * always streams responses using Server-Sent Events (SSE), providing real-time progress
28
- * updates as the task executes. Perfect for web scraping, form filling, navigation,
29
- * information gathering, and multi-step workflows.
30
- *
31
- * @param task - The task description in natural language. Example: "Find the top 3 trending repositories on GitHub and extract their names, descriptions, and star counts"
32
- * @param options - Optional automation options
33
- * @param options.url - Starting URL for the task. Optional but recommended for better context.
34
- * @param options.data - JSON data to provide context for form filling or complex tasks. Example: { "language": "Python", "timeRange": "today" }
35
- * @param options.guardrails - Safety constraints for execution. Example: "browse and extract data only, don't star or fork repositories"
36
- * @param options.maxIterations - Maximum task iterations. Default: 50, Min: 1, Max: 100
37
- * @param options.maxValidationAttempts - Maximum validation attempts. Default: 3, Min: 1, Max: 10
38
- *
39
- * @yields AutomateEvent objects representing different stages of task execution
40
- *
41
- * @throws {BadRequestError} When task is missing, URL format is invalid, or maxIterations is out of range
42
- * @throws {UnauthorizedError} When API key is invalid or missing
43
- * @throws {ServerError} When automation server call fails
44
- * @throws {ServiceUnavailableError} When automate service is not available
45
- *
46
- * Event Types:
47
- * - **Task Events**: `start`, `task:setup`, `task:started`, `task:completed`, `task:aborted`, `task:validated`, `task:validation_error`
48
- * - **Agent Events**: `agent:processing`, `agent:status`, `agent:step`, `agent:action`, `agent:reasoned`, `agent:extracted`, `agent:waiting`
49
- * - **Browser Events**: `browser:navigated`, `browser:action_started`, `browser:action_completed`, `browser:screenshot_captured`
50
- * - **System Events**: `system:debug_compression`, `system:debug_message`
51
- * - **Stream Control**: `complete`, `done`, `error`
52
- *
53
- * @example
54
- * Extract GitHub trending repositories:
55
- * ```typescript
56
- * for await (const event of tabs.agent.automate(
57
- * 'Find the top 3 trending repositories and extract their names, descriptions, and star counts',
58
- * {
59
- * url: 'https://github.com/trending',
60
- * guardrails: 'browse and extract only, don\'t interact with repositories'
61
- * }
62
- * )) {
63
- * console.log(`Event: ${event.type}`);
64
- *
65
- * if (event.type === 'task:completed') {
66
- * console.log('Result:', event.data.get('finalAnswer'));
67
- * } else if (event.type === 'agent:extracted') {
68
- * console.log('Extracted data:', event.data.get('extractedData'));
69
- * } else if (event.type === 'browser:navigated') {
70
- * console.log('Navigated to:', event.data.get('url'));
71
- * }
72
- * }
73
- * ```
74
- *
75
- * @example
76
- * Scrape product information:
77
- * ```typescript
78
- * for await (const event of tabs.agent.automate(
79
- * 'Find the product name, price, and availability status',
80
- * {
81
- * url: 'https://example-store.com/product/wireless-headphones',
82
- * guardrails: 'extract product details only, don\'t add to cart or checkout',
83
- * maxIterations: 20
84
- * }
85
- * )) {
86
- * if (event.type === 'agent:processing') {
87
- * console.log('Agent thinking:', event.data.get('operation'));
88
- * } else if (event.type === 'task:completed') {
89
- * const result = event.data.get('finalAnswer');
90
- * console.log('Product info:', result);
91
- * }
92
- * }
93
- * ```
94
- *
95
- * @example
96
- * Fill out contact form:
97
- * ```typescript
98
- * for await (const event of tabs.agent.automate(
99
- * 'Submit the contact form with my information',
100
- * {
101
- * url: 'https://company.com/contact',
102
- * data: {
103
- * name: 'Alex Johnson',
104
- * email: 'alex@example.com',
105
- * message: 'Interested in learning more about your enterprise plan'
106
- * },
107
- * maxIterations: 30,
108
- * maxValidationAttempts: 5
109
- * }
110
- * )) {
111
- * if (event.type === 'agent:action') {
112
- * console.log('Action:', event.data.get('action'), event.data.get('value'));
113
- * } else if (event.type === 'task:completed') {
114
- * console.log('Form submitted successfully!');
115
- * }
116
- * }
117
- * ```
118
- *
119
- * @example
120
- * Handle all event types:
121
- * ```typescript
122
- * for await (const event of tabs.agent.automate(
123
- * 'Research TypeScript frameworks and compare them',
124
- * { url: 'https://www.npmjs.com' }
125
- * )) {
126
- * switch (event.type) {
127
- * case 'start':
128
- * console.log('Task started');
129
- * break;
130
- * case 'agent:status':
131
- * console.log('Status:', event.data.get('message'));
132
- * break;
133
- * case 'agent:step':
134
- * const iteration = event.data.get('currentIteration');
135
- * console.log(`Processing step ${iteration}...`);
136
- * break;
137
- * case 'browser:navigated':
138
- * console.log('Page:', event.data.get('title'));
139
- * break;
140
- * case 'task:completed':
141
- * console.log('Final result:', event.data.get('finalAnswer'));
142
- * break;
143
- * case 'error':
144
- * console.error('Error occurred:', event.data.getRaw());
145
- * break;
146
- * }
147
- * }
148
- * ```
149
- */
150
- automate(task: string, options?: AutomateOptions): AsyncGenerator<AutomateEvent, void, undefined>;
151
- /**
152
- * Parse SSE event data
153
- */
154
- private parseEvent;
155
- }
156
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,KAAK;IACJ,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8HG;IACI,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC;IAkDjD;;OAEG;IACH,OAAO,CAAC,UAAU;CASnB"}
package/dist/esm/agent.js DELETED
@@ -1,207 +0,0 @@
1
- /**
2
- * Agent client for Tabstack SDK
3
- */
4
- import { AutomateEvent } from './types.js';
5
- /**
6
- * Agent client for AI-powered web automation
7
- *
8
- * This class provides methods for executing complex web automation tasks using
9
- * natural language instructions. The automation runs in a browser and streams
10
- * real-time progress updates.
11
- */
12
- export class Agent {
13
- constructor(httpClient) {
14
- this.httpClient = httpClient;
15
- }
16
- /**
17
- * Execute AI-powered browser automation task with streaming updates
18
- *
19
- * Execute complex web automation tasks using natural language instructions. This method
20
- * always streams responses using Server-Sent Events (SSE), providing real-time progress
21
- * updates as the task executes. Perfect for web scraping, form filling, navigation,
22
- * information gathering, and multi-step workflows.
23
- *
24
- * @param task - The task description in natural language. Example: "Find the top 3 trending repositories on GitHub and extract their names, descriptions, and star counts"
25
- * @param options - Optional automation options
26
- * @param options.url - Starting URL for the task. Optional but recommended for better context.
27
- * @param options.data - JSON data to provide context for form filling or complex tasks. Example: { "language": "Python", "timeRange": "today" }
28
- * @param options.guardrails - Safety constraints for execution. Example: "browse and extract data only, don't star or fork repositories"
29
- * @param options.maxIterations - Maximum task iterations. Default: 50, Min: 1, Max: 100
30
- * @param options.maxValidationAttempts - Maximum validation attempts. Default: 3, Min: 1, Max: 10
31
- *
32
- * @yields AutomateEvent objects representing different stages of task execution
33
- *
34
- * @throws {BadRequestError} When task is missing, URL format is invalid, or maxIterations is out of range
35
- * @throws {UnauthorizedError} When API key is invalid or missing
36
- * @throws {ServerError} When automation server call fails
37
- * @throws {ServiceUnavailableError} When automate service is not available
38
- *
39
- * Event Types:
40
- * - **Task Events**: `start`, `task:setup`, `task:started`, `task:completed`, `task:aborted`, `task:validated`, `task:validation_error`
41
- * - **Agent Events**: `agent:processing`, `agent:status`, `agent:step`, `agent:action`, `agent:reasoned`, `agent:extracted`, `agent:waiting`
42
- * - **Browser Events**: `browser:navigated`, `browser:action_started`, `browser:action_completed`, `browser:screenshot_captured`
43
- * - **System Events**: `system:debug_compression`, `system:debug_message`
44
- * - **Stream Control**: `complete`, `done`, `error`
45
- *
46
- * @example
47
- * Extract GitHub trending repositories:
48
- * ```typescript
49
- * for await (const event of tabs.agent.automate(
50
- * 'Find the top 3 trending repositories and extract their names, descriptions, and star counts',
51
- * {
52
- * url: 'https://github.com/trending',
53
- * guardrails: 'browse and extract only, don\'t interact with repositories'
54
- * }
55
- * )) {
56
- * console.log(`Event: ${event.type}`);
57
- *
58
- * if (event.type === 'task:completed') {
59
- * console.log('Result:', event.data.get('finalAnswer'));
60
- * } else if (event.type === 'agent:extracted') {
61
- * console.log('Extracted data:', event.data.get('extractedData'));
62
- * } else if (event.type === 'browser:navigated') {
63
- * console.log('Navigated to:', event.data.get('url'));
64
- * }
65
- * }
66
- * ```
67
- *
68
- * @example
69
- * Scrape product information:
70
- * ```typescript
71
- * for await (const event of tabs.agent.automate(
72
- * 'Find the product name, price, and availability status',
73
- * {
74
- * url: 'https://example-store.com/product/wireless-headphones',
75
- * guardrails: 'extract product details only, don\'t add to cart or checkout',
76
- * maxIterations: 20
77
- * }
78
- * )) {
79
- * if (event.type === 'agent:processing') {
80
- * console.log('Agent thinking:', event.data.get('operation'));
81
- * } else if (event.type === 'task:completed') {
82
- * const result = event.data.get('finalAnswer');
83
- * console.log('Product info:', result);
84
- * }
85
- * }
86
- * ```
87
- *
88
- * @example
89
- * Fill out contact form:
90
- * ```typescript
91
- * for await (const event of tabs.agent.automate(
92
- * 'Submit the contact form with my information',
93
- * {
94
- * url: 'https://company.com/contact',
95
- * data: {
96
- * name: 'Alex Johnson',
97
- * email: 'alex@example.com',
98
- * message: 'Interested in learning more about your enterprise plan'
99
- * },
100
- * maxIterations: 30,
101
- * maxValidationAttempts: 5
102
- * }
103
- * )) {
104
- * if (event.type === 'agent:action') {
105
- * console.log('Action:', event.data.get('action'), event.data.get('value'));
106
- * } else if (event.type === 'task:completed') {
107
- * console.log('Form submitted successfully!');
108
- * }
109
- * }
110
- * ```
111
- *
112
- * @example
113
- * Handle all event types:
114
- * ```typescript
115
- * for await (const event of tabs.agent.automate(
116
- * 'Research TypeScript frameworks and compare them',
117
- * { url: 'https://www.npmjs.com' }
118
- * )) {
119
- * switch (event.type) {
120
- * case 'start':
121
- * console.log('Task started');
122
- * break;
123
- * case 'agent:status':
124
- * console.log('Status:', event.data.get('message'));
125
- * break;
126
- * case 'agent:step':
127
- * const iteration = event.data.get('currentIteration');
128
- * console.log(`Processing step ${iteration}...`);
129
- * break;
130
- * case 'browser:navigated':
131
- * console.log('Page:', event.data.get('title'));
132
- * break;
133
- * case 'task:completed':
134
- * console.log('Final result:', event.data.get('finalAnswer'));
135
- * break;
136
- * case 'error':
137
- * console.error('Error occurred:', event.data.getRaw());
138
- * break;
139
- * }
140
- * }
141
- * ```
142
- */
143
- async *automate(task, options) {
144
- const requestData = {
145
- task,
146
- maxIterations: options?.maxIterations ?? 50,
147
- maxValidationAttempts: options?.maxValidationAttempts ?? 3,
148
- };
149
- if (options?.url)
150
- requestData.url = options.url;
151
- if (options?.data)
152
- requestData.data = options.data;
153
- if (options?.guardrails)
154
- requestData.guardrails = options.guardrails;
155
- // Stream the response and parse SSE events
156
- let currentEventType = null;
157
- let currentEventData = '';
158
- for await (const line of this.httpClient.postStream('v1/automate', requestData)) {
159
- // SSE format: "event: <type>" or "data: <json>"
160
- if (line.startsWith('event:')) {
161
- // If we have a pending event, yield it before starting a new one
162
- if (currentEventType) {
163
- yield this.parseEvent(currentEventType, currentEventData);
164
- currentEventData = '';
165
- }
166
- // Extract event type
167
- currentEventType = line.slice(6).trim();
168
- }
169
- else if (line.startsWith('data:')) {
170
- // Accumulate event data (can be multiline)
171
- const dataLine = line.slice(5).trim();
172
- if (currentEventData) {
173
- currentEventData += '\n' + dataLine;
174
- }
175
- else {
176
- currentEventData = dataLine;
177
- }
178
- }
179
- else if (line === '') {
180
- // Empty line marks the end of an event
181
- if (currentEventType) {
182
- yield this.parseEvent(currentEventType, currentEventData);
183
- currentEventType = null;
184
- currentEventData = '';
185
- }
186
- }
187
- }
188
- // Yield any remaining event
189
- if (currentEventType) {
190
- yield this.parseEvent(currentEventType, currentEventData);
191
- }
192
- }
193
- /**
194
- * Parse SSE event data
195
- */
196
- parseEvent(eventType, eventData) {
197
- try {
198
- const data = JSON.parse(eventData);
199
- return AutomateEvent.fromJSON(eventType, data);
200
- }
201
- catch {
202
- // If data is not valid JSON, return it as-is
203
- return AutomateEvent.fromJSON(eventType, { raw: eventData });
204
- }
205
- }
206
- }
207
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}