@codeqr/ts-mcp 0.8.0 → 0.19.3

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 (477) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +16 -218
  3. package/auth.d.mts +6 -0
  4. package/auth.d.mts.map +1 -0
  5. package/auth.d.ts +6 -0
  6. package/auth.d.ts.map +1 -0
  7. package/auth.js +37 -0
  8. package/auth.js.map +1 -0
  9. package/{headers.mjs → auth.mjs} +16 -2
  10. package/auth.mjs.map +1 -0
  11. package/code-tool-paths.cjs +4 -2
  12. package/code-tool-paths.cjs.map +1 -1
  13. package/code-tool-paths.d.cts +1 -1
  14. package/code-tool-paths.d.cts.map +1 -1
  15. package/code-tool-types.d.mts +7 -9
  16. package/code-tool-types.d.mts.map +1 -1
  17. package/code-tool-types.d.ts +7 -9
  18. package/code-tool-types.d.ts.map +1 -1
  19. package/code-tool-worker.d.mts.map +1 -1
  20. package/code-tool-worker.d.ts.map +1 -1
  21. package/code-tool-worker.js +95 -32
  22. package/code-tool-worker.js.map +1 -1
  23. package/code-tool-worker.mjs +95 -32
  24. package/code-tool-worker.mjs.map +1 -1
  25. package/code-tool.d.mts +12 -3
  26. package/code-tool.d.mts.map +1 -1
  27. package/code-tool.d.ts +12 -3
  28. package/code-tool.d.ts.map +1 -1
  29. package/code-tool.js +275 -109
  30. package/code-tool.js.map +1 -1
  31. package/code-tool.mjs +275 -109
  32. package/code-tool.mjs.map +1 -1
  33. package/docs-search-tool.d.mts +22 -9
  34. package/docs-search-tool.d.mts.map +1 -1
  35. package/docs-search-tool.d.ts +22 -9
  36. package/docs-search-tool.d.ts.map +1 -1
  37. package/docs-search-tool.js +31 -5
  38. package/docs-search-tool.js.map +1 -1
  39. package/docs-search-tool.mjs +31 -5
  40. package/docs-search-tool.mjs.map +1 -1
  41. package/http.d.mts +6 -3
  42. package/http.d.mts.map +1 -1
  43. package/http.d.ts +6 -3
  44. package/http.d.ts.map +1 -1
  45. package/http.js +108 -49
  46. package/http.js.map +1 -1
  47. package/http.mjs +108 -49
  48. package/http.mjs.map +1 -1
  49. package/index.js +19 -50
  50. package/index.js.map +1 -1
  51. package/index.mjs +19 -50
  52. package/index.mjs.map +1 -1
  53. package/instructions.d.mts +2 -0
  54. package/instructions.d.mts.map +1 -0
  55. package/instructions.d.ts +2 -0
  56. package/instructions.d.ts.map +1 -0
  57. package/instructions.js +42 -0
  58. package/instructions.js.map +1 -0
  59. package/instructions.mjs +39 -0
  60. package/instructions.mjs.map +1 -0
  61. package/logger.d.mts +7 -0
  62. package/logger.d.mts.map +1 -0
  63. package/logger.d.ts +7 -0
  64. package/logger.d.ts.map +1 -0
  65. package/logger.js +29 -0
  66. package/logger.js.map +1 -0
  67. package/logger.mjs +22 -0
  68. package/logger.mjs.map +1 -0
  69. package/methods.d.mts +10 -0
  70. package/methods.d.mts.map +1 -0
  71. package/methods.d.ts +10 -0
  72. package/methods.d.ts.map +1 -0
  73. package/methods.js +215 -0
  74. package/methods.js.map +1 -0
  75. package/methods.mjs +211 -0
  76. package/methods.mjs.map +1 -0
  77. package/options.d.mts +9 -9
  78. package/options.d.mts.map +1 -1
  79. package/options.d.ts +9 -9
  80. package/options.d.ts.map +1 -1
  81. package/options.js +54 -359
  82. package/options.js.map +1 -1
  83. package/options.mjs +54 -359
  84. package/options.mjs.map +1 -1
  85. package/package.json +67 -60
  86. package/server.d.mts +11 -16
  87. package/server.d.mts.map +1 -1
  88. package/server.d.ts +11 -16
  89. package/server.d.ts.map +1 -1
  90. package/server.js +86 -101
  91. package/server.js.map +1 -1
  92. package/server.mjs +85 -96
  93. package/server.mjs.map +1 -1
  94. package/src/{headers.ts → auth.ts} +18 -1
  95. package/src/code-tool-paths.cts +3 -1
  96. package/src/code-tool-types.ts +8 -9
  97. package/src/code-tool-worker.ts +110 -47
  98. package/src/code-tool.ts +362 -134
  99. package/src/docs-search-tool.ts +54 -6
  100. package/src/http.ts +128 -54
  101. package/src/index.ts +22 -63
  102. package/src/instructions.ts +60 -0
  103. package/src/logger.ts +28 -0
  104. package/src/methods.ts +236 -0
  105. package/src/options.ts +72 -384
  106. package/src/server.ts +99 -116
  107. package/src/stdio.ts +6 -5
  108. package/src/{tools/types.ts → types.ts} +14 -5
  109. package/src/util.ts +25 -0
  110. package/stdio.d.mts +1 -1
  111. package/stdio.d.mts.map +1 -1
  112. package/stdio.d.ts +1 -1
  113. package/stdio.d.ts.map +1 -1
  114. package/stdio.js +5 -4
  115. package/stdio.js.map +1 -1
  116. package/stdio.mjs +5 -4
  117. package/stdio.mjs.map +1 -1
  118. package/{tools/types.d.mts → types.d.mts} +10 -2
  119. package/types.d.mts.map +1 -0
  120. package/{tools/types.d.ts → types.d.ts} +10 -2
  121. package/types.d.ts.map +1 -0
  122. package/types.js.map +1 -0
  123. package/types.mjs.map +1 -0
  124. package/util.d.mts +4 -0
  125. package/util.d.mts.map +1 -0
  126. package/util.d.ts +4 -0
  127. package/util.d.ts.map +1 -0
  128. package/util.js +30 -0
  129. package/util.js.map +1 -0
  130. package/util.mjs +24 -0
  131. package/util.mjs.map +1 -0
  132. package/compat.d.mts +0 -58
  133. package/compat.d.mts.map +0 -1
  134. package/compat.d.ts +0 -58
  135. package/compat.d.ts.map +0 -1
  136. package/compat.js +0 -387
  137. package/compat.js.map +0 -1
  138. package/compat.mjs +0 -378
  139. package/compat.mjs.map +0 -1
  140. package/dynamic-tools.d.mts +0 -12
  141. package/dynamic-tools.d.mts.map +0 -1
  142. package/dynamic-tools.d.ts +0 -12
  143. package/dynamic-tools.d.ts.map +0 -1
  144. package/dynamic-tools.js +0 -135
  145. package/dynamic-tools.js.map +0 -1
  146. package/dynamic-tools.mjs +0 -132
  147. package/dynamic-tools.mjs.map +0 -1
  148. package/filtering.d.mts +0 -3
  149. package/filtering.d.mts.map +0 -1
  150. package/filtering.d.ts +0 -3
  151. package/filtering.d.ts.map +0 -1
  152. package/filtering.js +0 -24
  153. package/filtering.js.map +0 -1
  154. package/filtering.mjs +0 -16
  155. package/filtering.mjs.map +0 -1
  156. package/headers.d.mts +0 -4
  157. package/headers.d.mts.map +0 -1
  158. package/headers.d.ts +0 -4
  159. package/headers.d.ts.map +0 -1
  160. package/headers.js +0 -22
  161. package/headers.js.map +0 -1
  162. package/headers.mjs.map +0 -1
  163. package/src/compat.ts +0 -483
  164. package/src/dynamic-tools.ts +0 -153
  165. package/src/filtering.ts +0 -18
  166. package/src/tools/analytics/retrieve-analytics.ts +0 -441
  167. package/src/tools/domains/create-domains.ts +0 -75
  168. package/src/tools/domains/delete-domains.ts +0 -55
  169. package/src/tools/domains/list-domains.ts +0 -68
  170. package/src/tools/domains/update-domains.ts +0 -79
  171. package/src/tools/events/list-events.ts +0 -421
  172. package/src/tools/index.ts +0 -133
  173. package/src/tools/links/bulk/create-links-bulk.ts +0 -966
  174. package/src/tools/links/bulk/delete-links-bulk.ts +0 -59
  175. package/src/tools/links/count-links.ts +0 -957
  176. package/src/tools/links/create-links.ts +0 -957
  177. package/src/tools/links/delete-links.ts +0 -56
  178. package/src/tools/links/list-links.ts +0 -980
  179. package/src/tools/links/retrieve-info-links.ts +0 -75
  180. package/src/tools/links/update-links.ts +0 -964
  181. package/src/tools/links/upsert-links.ts +0 -958
  182. package/src/tools/projects/list-projects.ts +0 -51
  183. package/src/tools/projects/retrieve-projects.ts +0 -56
  184. package/src/tools/qrcodes/bulk/create-qrcodes-bulk.ts +0 -1077
  185. package/src/tools/qrcodes/bulk/delete-qrcodes-bulk.ts +0 -59
  186. package/src/tools/qrcodes/count-qrcodes.ts +0 -220
  187. package/src/tools/qrcodes/create-qrcodes.ts +0 -1067
  188. package/src/tools/qrcodes/delete-qrcodes.ts +0 -56
  189. package/src/tools/qrcodes/list-qrcodes.ts +0 -221
  190. package/src/tools/qrcodes/retrieve-qrcodes.ts +0 -67
  191. package/src/tools/qrcodes/update-qrcodes.ts +0 -1074
  192. package/src/tools/qrcodes/upsert-qrcodes.ts +0 -1068
  193. package/src/tools/tags/create-tags.ts +0 -59
  194. package/src/tools/tags/delete-tags.ts +0 -55
  195. package/src/tools/tags/list-tags.ts +0 -87
  196. package/src/tools/tags/update-tags.ts +0 -63
  197. package/src/tools/track/track-lead-track.ts +0 -93
  198. package/src/tools/track/track-sale-track.ts +0 -108
  199. package/src/tools.ts +0 -1
  200. package/tools/analytics/retrieve-analytics.d.mts +0 -45
  201. package/tools/analytics/retrieve-analytics.d.mts.map +0 -1
  202. package/tools/analytics/retrieve-analytics.d.ts +0 -45
  203. package/tools/analytics/retrieve-analytics.d.ts.map +0 -1
  204. package/tools/analytics/retrieve-analytics.js +0 -438
  205. package/tools/analytics/retrieve-analytics.js.map +0 -1
  206. package/tools/analytics/retrieve-analytics.mjs +0 -431
  207. package/tools/analytics/retrieve-analytics.mjs.map +0 -1
  208. package/tools/domains/create-domains.d.mts +0 -45
  209. package/tools/domains/create-domains.d.mts.map +0 -1
  210. package/tools/domains/create-domains.d.ts +0 -45
  211. package/tools/domains/create-domains.d.ts.map +0 -1
  212. package/tools/domains/create-domains.js +0 -74
  213. package/tools/domains/create-domains.js.map +0 -1
  214. package/tools/domains/create-domains.mjs +0 -67
  215. package/tools/domains/create-domains.mjs.map +0 -1
  216. package/tools/domains/delete-domains.d.mts +0 -45
  217. package/tools/domains/delete-domains.d.mts.map +0 -1
  218. package/tools/domains/delete-domains.d.ts +0 -45
  219. package/tools/domains/delete-domains.d.ts.map +0 -1
  220. package/tools/domains/delete-domains.js +0 -55
  221. package/tools/domains/delete-domains.js.map +0 -1
  222. package/tools/domains/delete-domains.mjs +0 -48
  223. package/tools/domains/delete-domains.mjs.map +0 -1
  224. package/tools/domains/list-domains.d.mts +0 -45
  225. package/tools/domains/list-domains.d.mts.map +0 -1
  226. package/tools/domains/list-domains.d.ts +0 -45
  227. package/tools/domains/list-domains.d.ts.map +0 -1
  228. package/tools/domains/list-domains.js +0 -67
  229. package/tools/domains/list-domains.js.map +0 -1
  230. package/tools/domains/list-domains.mjs +0 -60
  231. package/tools/domains/list-domains.mjs.map +0 -1
  232. package/tools/domains/update-domains.d.mts +0 -45
  233. package/tools/domains/update-domains.d.mts.map +0 -1
  234. package/tools/domains/update-domains.d.ts +0 -45
  235. package/tools/domains/update-domains.d.ts.map +0 -1
  236. package/tools/domains/update-domains.js +0 -78
  237. package/tools/domains/update-domains.js.map +0 -1
  238. package/tools/domains/update-domains.mjs +0 -71
  239. package/tools/domains/update-domains.mjs.map +0 -1
  240. package/tools/events/list-events.d.mts +0 -45
  241. package/tools/events/list-events.d.mts.map +0 -1
  242. package/tools/events/list-events.d.ts +0 -45
  243. package/tools/events/list-events.d.ts.map +0 -1
  244. package/tools/events/list-events.js +0 -418
  245. package/tools/events/list-events.js.map +0 -1
  246. package/tools/events/list-events.mjs +0 -411
  247. package/tools/events/list-events.mjs.map +0 -1
  248. package/tools/index.d.mts +0 -10
  249. package/tools/index.d.mts.map +0 -1
  250. package/tools/index.d.ts +0 -10
  251. package/tools/index.d.ts.map +0 -1
  252. package/tools/index.js +0 -117
  253. package/tools/index.js.map +0 -1
  254. package/tools/index.mjs +0 -110
  255. package/tools/index.mjs.map +0 -1
  256. package/tools/links/bulk/create-links-bulk.d.mts +0 -45
  257. package/tools/links/bulk/create-links-bulk.d.mts.map +0 -1
  258. package/tools/links/bulk/create-links-bulk.d.ts +0 -45
  259. package/tools/links/bulk/create-links-bulk.d.ts.map +0 -1
  260. package/tools/links/bulk/create-links-bulk.js +0 -956
  261. package/tools/links/bulk/create-links-bulk.js.map +0 -1
  262. package/tools/links/bulk/create-links-bulk.mjs +0 -949
  263. package/tools/links/bulk/create-links-bulk.mjs.map +0 -1
  264. package/tools/links/bulk/delete-links-bulk.d.mts +0 -45
  265. package/tools/links/bulk/delete-links-bulk.d.mts.map +0 -1
  266. package/tools/links/bulk/delete-links-bulk.d.ts +0 -45
  267. package/tools/links/bulk/delete-links-bulk.d.ts.map +0 -1
  268. package/tools/links/bulk/delete-links-bulk.js +0 -58
  269. package/tools/links/bulk/delete-links-bulk.js.map +0 -1
  270. package/tools/links/bulk/delete-links-bulk.mjs +0 -51
  271. package/tools/links/bulk/delete-links-bulk.mjs.map +0 -1
  272. package/tools/links/count-links.d.mts +0 -45
  273. package/tools/links/count-links.d.mts.map +0 -1
  274. package/tools/links/count-links.d.ts +0 -45
  275. package/tools/links/count-links.d.ts.map +0 -1
  276. package/tools/links/count-links.js +0 -951
  277. package/tools/links/count-links.js.map +0 -1
  278. package/tools/links/count-links.mjs +0 -944
  279. package/tools/links/count-links.mjs.map +0 -1
  280. package/tools/links/create-links.d.mts +0 -45
  281. package/tools/links/create-links.d.mts.map +0 -1
  282. package/tools/links/create-links.d.ts +0 -45
  283. package/tools/links/create-links.d.ts.map +0 -1
  284. package/tools/links/create-links.js +0 -947
  285. package/tools/links/create-links.js.map +0 -1
  286. package/tools/links/create-links.mjs +0 -940
  287. package/tools/links/create-links.mjs.map +0 -1
  288. package/tools/links/delete-links.d.mts +0 -45
  289. package/tools/links/delete-links.d.mts.map +0 -1
  290. package/tools/links/delete-links.d.ts +0 -45
  291. package/tools/links/delete-links.d.ts.map +0 -1
  292. package/tools/links/delete-links.js +0 -55
  293. package/tools/links/delete-links.js.map +0 -1
  294. package/tools/links/delete-links.mjs +0 -48
  295. package/tools/links/delete-links.mjs.map +0 -1
  296. package/tools/links/list-links.d.mts +0 -45
  297. package/tools/links/list-links.d.mts.map +0 -1
  298. package/tools/links/list-links.d.ts +0 -45
  299. package/tools/links/list-links.d.ts.map +0 -1
  300. package/tools/links/list-links.js +0 -973
  301. package/tools/links/list-links.js.map +0 -1
  302. package/tools/links/list-links.mjs +0 -966
  303. package/tools/links/list-links.mjs.map +0 -1
  304. package/tools/links/retrieve-info-links.d.mts +0 -45
  305. package/tools/links/retrieve-info-links.d.mts.map +0 -1
  306. package/tools/links/retrieve-info-links.d.ts +0 -45
  307. package/tools/links/retrieve-info-links.d.ts.map +0 -1
  308. package/tools/links/retrieve-info-links.js +0 -71
  309. package/tools/links/retrieve-info-links.js.map +0 -1
  310. package/tools/links/retrieve-info-links.mjs +0 -64
  311. package/tools/links/retrieve-info-links.mjs.map +0 -1
  312. package/tools/links/update-links.d.mts +0 -45
  313. package/tools/links/update-links.d.mts.map +0 -1
  314. package/tools/links/update-links.d.ts +0 -45
  315. package/tools/links/update-links.d.ts.map +0 -1
  316. package/tools/links/update-links.js +0 -953
  317. package/tools/links/update-links.js.map +0 -1
  318. package/tools/links/update-links.mjs +0 -946
  319. package/tools/links/update-links.mjs.map +0 -1
  320. package/tools/links/upsert-links.d.mts +0 -45
  321. package/tools/links/upsert-links.d.mts.map +0 -1
  322. package/tools/links/upsert-links.d.ts +0 -45
  323. package/tools/links/upsert-links.d.ts.map +0 -1
  324. package/tools/links/upsert-links.js +0 -947
  325. package/tools/links/upsert-links.js.map +0 -1
  326. package/tools/links/upsert-links.mjs +0 -940
  327. package/tools/links/upsert-links.mjs.map +0 -1
  328. package/tools/projects/list-projects.d.mts +0 -45
  329. package/tools/projects/list-projects.d.mts.map +0 -1
  330. package/tools/projects/list-projects.d.ts +0 -45
  331. package/tools/projects/list-projects.d.ts.map +0 -1
  332. package/tools/projects/list-projects.js +0 -51
  333. package/tools/projects/list-projects.js.map +0 -1
  334. package/tools/projects/list-projects.mjs +0 -44
  335. package/tools/projects/list-projects.mjs.map +0 -1
  336. package/tools/projects/retrieve-projects.d.mts +0 -45
  337. package/tools/projects/retrieve-projects.d.mts.map +0 -1
  338. package/tools/projects/retrieve-projects.d.ts +0 -45
  339. package/tools/projects/retrieve-projects.d.ts.map +0 -1
  340. package/tools/projects/retrieve-projects.js +0 -55
  341. package/tools/projects/retrieve-projects.js.map +0 -1
  342. package/tools/projects/retrieve-projects.mjs +0 -48
  343. package/tools/projects/retrieve-projects.mjs.map +0 -1
  344. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.mts +0 -45
  345. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.mts.map +0 -1
  346. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.ts +0 -45
  347. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.ts.map +0 -1
  348. package/tools/qrcodes/bulk/create-qrcodes-bulk.js +0 -1068
  349. package/tools/qrcodes/bulk/create-qrcodes-bulk.js.map +0 -1
  350. package/tools/qrcodes/bulk/create-qrcodes-bulk.mjs +0 -1061
  351. package/tools/qrcodes/bulk/create-qrcodes-bulk.mjs.map +0 -1
  352. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.mts +0 -45
  353. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.mts.map +0 -1
  354. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.ts +0 -45
  355. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.ts.map +0 -1
  356. package/tools/qrcodes/bulk/delete-qrcodes-bulk.js +0 -58
  357. package/tools/qrcodes/bulk/delete-qrcodes-bulk.js.map +0 -1
  358. package/tools/qrcodes/bulk/delete-qrcodes-bulk.mjs +0 -51
  359. package/tools/qrcodes/bulk/delete-qrcodes-bulk.mjs.map +0 -1
  360. package/tools/qrcodes/count-qrcodes.d.mts +0 -45
  361. package/tools/qrcodes/count-qrcodes.d.mts.map +0 -1
  362. package/tools/qrcodes/count-qrcodes.d.ts +0 -45
  363. package/tools/qrcodes/count-qrcodes.d.ts.map +0 -1
  364. package/tools/qrcodes/count-qrcodes.js +0 -215
  365. package/tools/qrcodes/count-qrcodes.js.map +0 -1
  366. package/tools/qrcodes/count-qrcodes.mjs +0 -208
  367. package/tools/qrcodes/count-qrcodes.mjs.map +0 -1
  368. package/tools/qrcodes/create-qrcodes.d.mts +0 -45
  369. package/tools/qrcodes/create-qrcodes.d.mts.map +0 -1
  370. package/tools/qrcodes/create-qrcodes.d.ts +0 -45
  371. package/tools/qrcodes/create-qrcodes.d.ts.map +0 -1
  372. package/tools/qrcodes/create-qrcodes.js +0 -1059
  373. package/tools/qrcodes/create-qrcodes.js.map +0 -1
  374. package/tools/qrcodes/create-qrcodes.mjs +0 -1052
  375. package/tools/qrcodes/create-qrcodes.mjs.map +0 -1
  376. package/tools/qrcodes/delete-qrcodes.d.mts +0 -45
  377. package/tools/qrcodes/delete-qrcodes.d.mts.map +0 -1
  378. package/tools/qrcodes/delete-qrcodes.d.ts +0 -45
  379. package/tools/qrcodes/delete-qrcodes.d.ts.map +0 -1
  380. package/tools/qrcodes/delete-qrcodes.js +0 -55
  381. package/tools/qrcodes/delete-qrcodes.js.map +0 -1
  382. package/tools/qrcodes/delete-qrcodes.mjs +0 -48
  383. package/tools/qrcodes/delete-qrcodes.mjs.map +0 -1
  384. package/tools/qrcodes/list-qrcodes.d.mts +0 -45
  385. package/tools/qrcodes/list-qrcodes.d.mts.map +0 -1
  386. package/tools/qrcodes/list-qrcodes.d.ts +0 -45
  387. package/tools/qrcodes/list-qrcodes.d.ts.map +0 -1
  388. package/tools/qrcodes/list-qrcodes.js +0 -217
  389. package/tools/qrcodes/list-qrcodes.js.map +0 -1
  390. package/tools/qrcodes/list-qrcodes.mjs +0 -210
  391. package/tools/qrcodes/list-qrcodes.mjs.map +0 -1
  392. package/tools/qrcodes/retrieve-qrcodes.d.mts +0 -45
  393. package/tools/qrcodes/retrieve-qrcodes.d.mts.map +0 -1
  394. package/tools/qrcodes/retrieve-qrcodes.d.ts +0 -45
  395. package/tools/qrcodes/retrieve-qrcodes.d.ts.map +0 -1
  396. package/tools/qrcodes/retrieve-qrcodes.js +0 -65
  397. package/tools/qrcodes/retrieve-qrcodes.js.map +0 -1
  398. package/tools/qrcodes/retrieve-qrcodes.mjs +0 -58
  399. package/tools/qrcodes/retrieve-qrcodes.mjs.map +0 -1
  400. package/tools/qrcodes/update-qrcodes.d.mts +0 -45
  401. package/tools/qrcodes/update-qrcodes.d.mts.map +0 -1
  402. package/tools/qrcodes/update-qrcodes.d.ts +0 -45
  403. package/tools/qrcodes/update-qrcodes.d.ts.map +0 -1
  404. package/tools/qrcodes/update-qrcodes.js +0 -1065
  405. package/tools/qrcodes/update-qrcodes.js.map +0 -1
  406. package/tools/qrcodes/update-qrcodes.mjs +0 -1058
  407. package/tools/qrcodes/update-qrcodes.mjs.map +0 -1
  408. package/tools/qrcodes/upsert-qrcodes.d.mts +0 -45
  409. package/tools/qrcodes/upsert-qrcodes.d.mts.map +0 -1
  410. package/tools/qrcodes/upsert-qrcodes.d.ts +0 -45
  411. package/tools/qrcodes/upsert-qrcodes.d.ts.map +0 -1
  412. package/tools/qrcodes/upsert-qrcodes.js +0 -1059
  413. package/tools/qrcodes/upsert-qrcodes.js.map +0 -1
  414. package/tools/qrcodes/upsert-qrcodes.mjs +0 -1052
  415. package/tools/qrcodes/upsert-qrcodes.mjs.map +0 -1
  416. package/tools/tags/create-tags.d.mts +0 -45
  417. package/tools/tags/create-tags.d.mts.map +0 -1
  418. package/tools/tags/create-tags.d.ts +0 -45
  419. package/tools/tags/create-tags.d.ts.map +0 -1
  420. package/tools/tags/create-tags.js +0 -58
  421. package/tools/tags/create-tags.js.map +0 -1
  422. package/tools/tags/create-tags.mjs +0 -51
  423. package/tools/tags/create-tags.mjs.map +0 -1
  424. package/tools/tags/delete-tags.d.mts +0 -45
  425. package/tools/tags/delete-tags.d.mts.map +0 -1
  426. package/tools/tags/delete-tags.d.ts +0 -45
  427. package/tools/tags/delete-tags.d.ts.map +0 -1
  428. package/tools/tags/delete-tags.js +0 -55
  429. package/tools/tags/delete-tags.js.map +0 -1
  430. package/tools/tags/delete-tags.mjs +0 -48
  431. package/tools/tags/delete-tags.mjs.map +0 -1
  432. package/tools/tags/list-tags.d.mts +0 -45
  433. package/tools/tags/list-tags.d.mts.map +0 -1
  434. package/tools/tags/list-tags.d.ts +0 -45
  435. package/tools/tags/list-tags.d.ts.map +0 -1
  436. package/tools/tags/list-tags.js +0 -87
  437. package/tools/tags/list-tags.js.map +0 -1
  438. package/tools/tags/list-tags.mjs +0 -80
  439. package/tools/tags/list-tags.mjs.map +0 -1
  440. package/tools/tags/update-tags.d.mts +0 -45
  441. package/tools/tags/update-tags.d.mts.map +0 -1
  442. package/tools/tags/update-tags.d.ts +0 -45
  443. package/tools/tags/update-tags.d.ts.map +0 -1
  444. package/tools/tags/update-tags.js +0 -63
  445. package/tools/tags/update-tags.js.map +0 -1
  446. package/tools/tags/update-tags.mjs +0 -56
  447. package/tools/tags/update-tags.mjs.map +0 -1
  448. package/tools/track/track-lead-track.d.mts +0 -45
  449. package/tools/track/track-lead-track.d.mts.map +0 -1
  450. package/tools/track/track-lead-track.d.ts +0 -45
  451. package/tools/track/track-lead-track.d.ts.map +0 -1
  452. package/tools/track/track-lead-track.js +0 -87
  453. package/tools/track/track-lead-track.js.map +0 -1
  454. package/tools/track/track-lead-track.mjs +0 -80
  455. package/tools/track/track-lead-track.mjs.map +0 -1
  456. package/tools/track/track-sale-track.d.mts +0 -45
  457. package/tools/track/track-sale-track.d.mts.map +0 -1
  458. package/tools/track/track-sale-track.d.ts +0 -45
  459. package/tools/track/track-sale-track.d.ts.map +0 -1
  460. package/tools/track/track-sale-track.js +0 -99
  461. package/tools/track/track-sale-track.js.map +0 -1
  462. package/tools/track/track-sale-track.mjs +0 -92
  463. package/tools/track/track-sale-track.mjs.map +0 -1
  464. package/tools/types.d.mts.map +0 -1
  465. package/tools/types.d.ts.map +0 -1
  466. package/tools/types.js.map +0 -1
  467. package/tools/types.mjs.map +0 -1
  468. package/tools.d.mts +0 -2
  469. package/tools.d.mts.map +0 -1
  470. package/tools.d.ts +0 -2
  471. package/tools.d.ts.map +0 -1
  472. package/tools.js +0 -18
  473. package/tools.js.map +0 -1
  474. package/tools.mjs +0 -2
  475. package/tools.mjs.map +0 -1
  476. /package/{tools/types.js → types.js} +0 -0
  477. /package/{tools/types.mjs → types.mjs} +0 -0
package/server.mjs CHANGED
@@ -1,43 +1,24 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- import { endpoints, query } from "./tools.mjs";
4
3
  import { CallToolRequestSchema, ListToolsRequestSchema, SetLevelRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
4
  import Codeqr from '@codeqr/ts';
6
- import { applyCompatibilityTransformations, defaultClientCapabilities, knownClients, parseEmbeddedJSON, } from "./compat.mjs";
7
- import { dynamicTools } from "./dynamic-tools.mjs";
8
5
  import { codeTool } from "./code-tool.mjs";
9
6
  import docsSearchTool from "./docs-search-tool.mjs";
10
- export { ClientType } from "./compat.mjs";
11
- export { endpoints } from "./tools.mjs";
12
- export const newMcpServer = () => new McpServer({
7
+ import { getInstructions } from "./instructions.mjs";
8
+ import { blockedMethodsForCodeTool } from "./methods.mjs";
9
+ export const newMcpServer = async (stainlessApiKey) => new McpServer({
13
10
  name: 'codeqr_ts_api',
14
- version: '0.8.0',
15
- }, { capabilities: { tools: {}, logging: {} } });
16
- // Create server instance
17
- export const server = newMcpServer();
11
+ version: '0.19.3',
12
+ }, {
13
+ instructions: await getInstructions(stainlessApiKey),
14
+ capabilities: { tools: {}, logging: {} },
15
+ });
18
16
  /**
19
17
  * Initializes the provided MCP Server with the given tools and handlers.
20
18
  * If not provided, the default client, tools and handlers will be used.
21
19
  */
22
- export function initMcpServer(params) {
20
+ export async function initMcpServer(params) {
23
21
  const server = params.server instanceof McpServer ? params.server.server : params.server;
24
- const mcpOptions = params.mcpOptions ?? {};
25
- let providedEndpoints = null;
26
- let endpointMap = null;
27
- const initTools = async (implementation) => {
28
- if (implementation && (!mcpOptions.client || mcpOptions.client === 'infer')) {
29
- mcpOptions.client =
30
- implementation.name.toLowerCase().includes('claude') ? 'claude'
31
- : implementation.name.toLowerCase().includes('cursor') ? 'cursor'
32
- : undefined;
33
- mcpOptions.capabilities = {
34
- ...(mcpOptions.client && knownClients[mcpOptions.client]),
35
- ...mcpOptions.capabilities,
36
- };
37
- }
38
- providedEndpoints ?? (providedEndpoints = await selectTools(endpoints, mcpOptions));
39
- endpointMap ?? (endpointMap = Object.fromEntries(providedEndpoints.map((endpoint) => [endpoint.tool.name, endpoint])));
40
- };
41
22
  const logAtLevel = (level) => (message, ...rest) => {
42
23
  void server.sendLoggingMessage({
43
24
  level,
@@ -50,111 +31,119 @@ export function initMcpServer(params) {
50
31
  warn: logAtLevel('warning'),
51
32
  error: logAtLevel('error'),
52
33
  };
53
- let client = new Codeqr({
54
- logger,
55
- ...params.clientOptions,
56
- defaultHeaders: {
57
- ...params.clientOptions?.defaultHeaders,
58
- 'X-Stainless-MCP': 'true',
59
- },
60
- });
61
- server.setRequestHandler(ListToolsRequestSchema, async () => {
62
- if (providedEndpoints === null) {
63
- await initTools(server.getClientVersion());
34
+ let _client;
35
+ let _clientError;
36
+ let _logLevel;
37
+ const getClient = () => {
38
+ if (_clientError)
39
+ throw _clientError;
40
+ if (!_client) {
41
+ try {
42
+ _client = new Codeqr({
43
+ logger,
44
+ ...params.clientOptions,
45
+ defaultHeaders: {
46
+ ...params.clientOptions?.defaultHeaders,
47
+ 'X-Stainless-MCP': 'true',
48
+ },
49
+ });
50
+ if (_logLevel) {
51
+ _client = _client.withOptions({ logLevel: _logLevel });
52
+ }
53
+ }
54
+ catch (e) {
55
+ _clientError = e instanceof Error ? e : new Error(String(e));
56
+ throw _clientError;
57
+ }
64
58
  }
59
+ return _client;
60
+ };
61
+ const providedTools = selectTools(params.mcpOptions);
62
+ const toolMap = Object.fromEntries(providedTools.map((mcpTool) => [mcpTool.tool.name, mcpTool]));
63
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
65
64
  return {
66
- tools: providedEndpoints.map((endpoint) => endpoint.tool),
65
+ tools: providedTools.map((mcpTool) => mcpTool.tool),
67
66
  };
68
67
  });
69
68
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
70
- if (endpointMap === null) {
71
- await initTools(server.getClientVersion());
72
- }
73
69
  const { name, arguments: args } = request.params;
74
- const endpoint = endpointMap[name];
75
- if (!endpoint) {
70
+ const mcpTool = toolMap[name];
71
+ if (!mcpTool) {
76
72
  throw new Error(`Unknown tool: ${name}`);
77
73
  }
78
- return executeHandler(endpoint.tool, endpoint.handler, client, args, mcpOptions.capabilities);
74
+ let client;
75
+ try {
76
+ client = getClient();
77
+ }
78
+ catch (error) {
79
+ return {
80
+ content: [
81
+ {
82
+ type: 'text',
83
+ text: `Failed to initialize client: ${error instanceof Error ? error.message : String(error)}`,
84
+ },
85
+ ],
86
+ isError: true,
87
+ };
88
+ }
89
+ return executeHandler({
90
+ handler: mcpTool.handler,
91
+ reqContext: {
92
+ client,
93
+ stainlessApiKey: params.stainlessApiKey ?? params.mcpOptions?.stainlessApiKey,
94
+ upstreamClientEnvs: params.upstreamClientEnvs,
95
+ },
96
+ args,
97
+ });
79
98
  });
80
99
  server.setRequestHandler(SetLevelRequestSchema, async (request) => {
81
100
  const { level } = request.params;
101
+ let logLevel;
82
102
  switch (level) {
83
103
  case 'debug':
84
- client = client.withOptions({ logLevel: 'debug' });
104
+ logLevel = 'debug';
85
105
  break;
86
106
  case 'info':
87
- client = client.withOptions({ logLevel: 'info' });
107
+ logLevel = 'info';
88
108
  break;
89
109
  case 'notice':
90
110
  case 'warning':
91
- client = client.withOptions({ logLevel: 'warn' });
111
+ logLevel = 'warn';
92
112
  break;
93
113
  case 'error':
94
- client = client.withOptions({ logLevel: 'error' });
114
+ logLevel = 'error';
95
115
  break;
96
116
  default:
97
- client = client.withOptions({ logLevel: 'off' });
117
+ logLevel = 'off';
98
118
  break;
99
119
  }
120
+ _logLevel = logLevel;
121
+ if (_client) {
122
+ _client = _client.withOptions({ logLevel });
123
+ }
100
124
  return {};
101
125
  });
102
126
  }
103
127
  /**
104
128
  * Selects the tools to include in the MCP Server based on the provided options.
105
129
  */
106
- export async function selectTools(endpoints, options) {
107
- const filteredEndpoints = query(options?.filters ?? [], endpoints);
108
- let includedTools = filteredEndpoints.slice();
109
- if (includedTools.length > 0) {
110
- if (options?.includeDynamicTools) {
111
- includedTools = dynamicTools(includedTools);
112
- }
113
- }
114
- else {
115
- if (options?.includeAllTools) {
116
- includedTools = endpoints.slice();
117
- }
118
- else if (options?.includeDynamicTools) {
119
- includedTools = dynamicTools(endpoints);
120
- }
121
- else if (options?.includeCodeTools) {
122
- includedTools = [await codeTool()];
123
- }
124
- else {
125
- includedTools = endpoints.slice();
126
- }
130
+ export function selectTools(options) {
131
+ const includedTools = [];
132
+ if (options?.includeCodeTool ?? true) {
133
+ includedTools.push(codeTool({
134
+ blockedMethods: blockedMethodsForCodeTool(options),
135
+ codeExecutionMode: options?.codeExecutionMode ?? 'stainless-sandbox',
136
+ }));
127
137
  }
128
138
  if (options?.includeDocsTools ?? true) {
129
139
  includedTools.push(docsSearchTool);
130
140
  }
131
- const capabilities = { ...defaultClientCapabilities, ...options?.capabilities };
132
- return applyCompatibilityTransformations(includedTools, capabilities);
141
+ return includedTools;
133
142
  }
134
143
  /**
135
144
  * Runs the provided handler with the given client and arguments.
136
145
  */
137
- export async function executeHandler(tool, handler, client, args, compatibilityOptions) {
138
- const options = { ...defaultClientCapabilities, ...compatibilityOptions };
139
- if (!options.validJson && args) {
140
- args = parseEmbeddedJSON(args, tool.inputSchema);
141
- }
142
- return await handler(client, args || {});
146
+ export async function executeHandler({ handler, reqContext, args, }) {
147
+ return await handler({ reqContext, args: args || {} });
143
148
  }
144
- export const readEnv = (env) => {
145
- if (typeof globalThis.process !== 'undefined') {
146
- return globalThis.process.env?.[env]?.trim();
147
- }
148
- else if (typeof globalThis.Deno !== 'undefined') {
149
- return globalThis.Deno.env?.get?.(env)?.trim();
150
- }
151
- return;
152
- };
153
- export const readEnvOrError = (env) => {
154
- let envValue = readEnv(env);
155
- if (envValue === undefined) {
156
- throw new Error(`Environment variable ${env} is not set`);
157
- }
158
- return envValue;
159
- };
160
149
  //# sourceMappingURL=server.mjs.map
package/server.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@
2
2
 
3
3
  import { IncomingMessage } from 'node:http';
4
4
  import { ClientOptions } from '@codeqr/ts';
5
+ import { McpOptions } from './options';
5
6
 
6
- export const parseAuthHeaders = (req: IncomingMessage): Partial<ClientOptions> => {
7
+ export const parseClientAuthHeaders = (req: IncomingMessage, required?: boolean): Partial<ClientOptions> => {
7
8
  if (req.headers.authorization) {
8
9
  const scheme = req.headers.authorization.split(' ')[0]!;
9
10
  const value = req.headers.authorization.slice(scheme.length + 1);
@@ -15,6 +16,8 @@ export const parseAuthHeaders = (req: IncomingMessage): Partial<ClientOptions> =
15
16
  'Unsupported authorization scheme. Expected the "Authorization" header to be a supported scheme (Bearer).',
16
17
  );
17
18
  }
19
+ } else if (required) {
20
+ throw new Error('Missing required Authorization header; see WWW-Authenticate header for details.');
18
21
  }
19
22
 
20
23
  const apiKey =
@@ -23,3 +26,17 @@ export const parseAuthHeaders = (req: IncomingMessage): Partial<ClientOptions> =
23
26
  : req.headers['x-codeqr-api-key'];
24
27
  return { apiKey };
25
28
  };
29
+
30
+ export const getStainlessApiKey = (req: IncomingMessage, mcpOptions: McpOptions): string | undefined => {
31
+ // Try to get the key from the x-stainless-api-key header
32
+ const headerKey =
33
+ Array.isArray(req.headers['x-stainless-api-key']) ?
34
+ req.headers['x-stainless-api-key'][0]
35
+ : req.headers['x-stainless-api-key'];
36
+ if (headerKey && typeof headerKey === 'string') {
37
+ return headerKey;
38
+ }
39
+
40
+ // Fall back to value set in the mcpOptions (e.g. from environment variable), if provided
41
+ return mcpOptions.stainlessApiKey;
42
+ };
@@ -1,3 +1,5 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- export const workerPath = require.resolve('./code-tool-worker.mjs');
3
+ export function getWorkerPath(): string {
4
+ return require.resolve('./code-tool-worker.mjs');
5
+ }
@@ -3,16 +3,15 @@
3
3
  import { ClientOptions } from '@codeqr/ts';
4
4
 
5
5
  export type WorkerInput = {
6
- opts: ClientOptions;
6
+ project_name: string;
7
7
  code: string;
8
+ client_opts: ClientOptions;
9
+ intent?: string | undefined;
8
10
  };
9
- export type WorkerSuccess = {
11
+
12
+ export type WorkerOutput = {
13
+ is_error: boolean;
10
14
  result: unknown | null;
11
- logLines: string[];
12
- errLines: string[];
13
- };
14
- export type WorkerError = {
15
- message: string | undefined;
16
- logLines: string[];
17
- errLines: string[];
15
+ log_lines: string[];
16
+ err_lines: string[];
18
17
  };
@@ -1,37 +1,47 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
+ import path from 'node:path';
3
4
  import util from 'node:util';
4
-
5
5
  import Fuse from 'fuse.js';
6
6
  import ts from 'typescript';
7
+ import { WorkerOutput } from './code-tool-types';
8
+ import { Codeqr, ClientOptions } from '@codeqr/ts';
7
9
 
8
- import { WorkerInput, WorkerSuccess, WorkerError } from './code-tool-types';
9
- import { Codeqr } from '@codeqr/ts';
10
-
11
- function getRunFunctionNode(
12
- code: string,
13
- ): ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction | null {
10
+ function getRunFunctionSource(code: string): {
11
+ type: 'declaration' | 'expression';
12
+ client: string | undefined;
13
+ code: string;
14
+ } | null {
14
15
  const sourceFile = ts.createSourceFile('code.ts', code, ts.ScriptTarget.Latest, true);
16
+ const printer = ts.createPrinter();
15
17
 
16
18
  for (const statement of sourceFile.statements) {
17
19
  // Check for top-level function declarations
18
20
  if (ts.isFunctionDeclaration(statement)) {
19
21
  if (statement.name?.text === 'run') {
20
- return statement;
22
+ return {
23
+ type: 'declaration',
24
+ client: statement.parameters[0]?.name.getText(),
25
+ code: printer.printNode(ts.EmitHint.Unspecified, statement.body!, sourceFile),
26
+ };
21
27
  }
22
28
  }
23
29
 
24
30
  // Check for variable declarations: const run = () => {} or const run = function() {}
25
31
  if (ts.isVariableStatement(statement)) {
26
32
  for (const declaration of statement.declarationList.declarations) {
27
- if (ts.isIdentifier(declaration.name) && declaration.name.text === 'run') {
33
+ if (
34
+ ts.isIdentifier(declaration.name) &&
35
+ declaration.name.text === 'run' &&
28
36
  // Check if it's initialized with a function
29
- if (
30
- declaration.initializer &&
31
- (ts.isFunctionExpression(declaration.initializer) || ts.isArrowFunction(declaration.initializer))
32
- ) {
33
- return declaration.initializer;
34
- }
37
+ declaration.initializer &&
38
+ (ts.isFunctionExpression(declaration.initializer) || ts.isArrowFunction(declaration.initializer))
39
+ ) {
40
+ return {
41
+ type: 'expression',
42
+ client: declaration.initializer.parameters[0]?.name.getText(),
43
+ code: printer.printNode(ts.EmitHint.Unspecified, declaration.initializer, sourceFile),
44
+ };
35
45
  }
36
46
  }
37
47
  }
@@ -40,26 +50,72 @@ function getRunFunctionNode(
40
50
  return null;
41
51
  }
42
52
 
53
+ function getTSDiagnostics(code: string): string[] {
54
+ const functionSource = getRunFunctionSource(code)!;
55
+ const codeWithImport = [
56
+ 'import { Codeqr } from "@codeqr/ts";',
57
+ functionSource.type === 'declaration' ?
58
+ `async function run(${functionSource.client}: Codeqr)`
59
+ : `const run: (${functionSource.client}: Codeqr) => Promise<unknown> =`,
60
+ functionSource.code,
61
+ ].join('\n');
62
+ const sourcePath = path.resolve('code.ts');
63
+ const ast = ts.createSourceFile(sourcePath, codeWithImport, ts.ScriptTarget.Latest, true);
64
+ const options = ts.getDefaultCompilerOptions();
65
+ options.target = ts.ScriptTarget.Latest;
66
+ options.module = ts.ModuleKind.NodeNext;
67
+ options.moduleResolution = ts.ModuleResolutionKind.NodeNext;
68
+ const host = ts.createCompilerHost(options, true);
69
+ const newHost: typeof host = {
70
+ ...host,
71
+ getSourceFile: (...args) => {
72
+ if (path.resolve(args[0]) === sourcePath) {
73
+ return ast;
74
+ }
75
+ return host.getSourceFile(...args);
76
+ },
77
+ readFile: (...args) => {
78
+ if (path.resolve(args[0]) === sourcePath) {
79
+ return codeWithImport;
80
+ }
81
+ return host.readFile(...args);
82
+ },
83
+ fileExists: (...args) => {
84
+ if (path.resolve(args[0]) === sourcePath) {
85
+ return true;
86
+ }
87
+ return host.fileExists(...args);
88
+ },
89
+ };
90
+ const program = ts.createProgram({
91
+ options,
92
+ rootNames: [sourcePath],
93
+ host: newHost,
94
+ });
95
+ const diagnostics = ts.getPreEmitDiagnostics(program, ast);
96
+ return diagnostics.map((d) => {
97
+ const message = ts.flattenDiagnosticMessageText(d.messageText, '\n');
98
+ if (!d.file || !d.start) return `- ${message}`;
99
+ const { line: lineNumber } = ts.getLineAndCharacterOfPosition(d.file, d.start);
100
+ const line = codeWithImport.split('\n').at(lineNumber)?.trim();
101
+ return line ? `- ${message}\n ${line}` : `- ${message}`;
102
+ });
103
+ }
104
+
43
105
  const fuse = new Fuse(
44
106
  [
45
- 'client.links.count',
46
107
  'client.links.create',
47
108
  'client.links.delete',
48
109
  'client.links.list',
49
110
  'client.links.retrieveInfo',
50
111
  'client.links.update',
51
- 'client.links.upsert',
52
112
  'client.links.bulk.create',
53
- 'client.links.bulk.delete',
54
- 'client.qrcodes.count',
55
113
  'client.qrcodes.create',
56
114
  'client.qrcodes.delete',
57
115
  'client.qrcodes.list',
58
116
  'client.qrcodes.retrieve',
59
117
  'client.qrcodes.update',
60
- 'client.qrcodes.upsert',
61
118
  'client.qrcodes.bulk.create',
62
- 'client.qrcodes.bulk.delete',
63
119
  'client.analytics.retrieve',
64
120
  'client.events.list',
65
121
  'client.tags.create',
@@ -73,7 +129,6 @@ const fuse = new Fuse(
73
129
  'client.track.trackLead',
74
130
  'client.track.trackSale',
75
131
  'client.projects.list',
76
- 'client.projects.retrieve',
77
132
  ],
78
133
  { threshold: 1, shouldSort: true },
79
134
  );
@@ -168,28 +223,34 @@ function parseError(code: string, error: unknown): string | undefined {
168
223
  }
169
224
 
170
225
  const fetch = async (req: Request): Promise<Response> => {
171
- const { opts, code } = (await req.json()) as WorkerInput;
172
- if (code == null) {
226
+ const { opts, code } = (await req.json()) as { opts: ClientOptions; code: string };
227
+
228
+ const runFunctionSource = code ? getRunFunctionSource(code) : null;
229
+ if (!runFunctionSource) {
230
+ const message =
231
+ code ?
232
+ 'The code is missing a top-level `run` function.'
233
+ : 'The code argument is missing. Provide one containing a top-level `run` function.';
173
234
  return Response.json(
174
235
  {
175
- message:
176
- 'The code param is missing. Provide one containing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```',
177
- logLines: [],
178
- errLines: [],
179
- } satisfies WorkerError,
236
+ is_error: true,
237
+ result: `${message} Write code within this template:\n\n\`\`\`\nasync function run(client) {\n // Fill this out\n}\n\`\`\``,
238
+ log_lines: [],
239
+ err_lines: [],
240
+ } satisfies WorkerOutput,
180
241
  { status: 400, statusText: 'Code execution error' },
181
242
  );
182
243
  }
183
244
 
184
- const runFunctionNode = getRunFunctionNode(code);
185
- if (!runFunctionNode) {
245
+ const diagnostics = getTSDiagnostics(code);
246
+ if (diagnostics.length > 0) {
186
247
  return Response.json(
187
248
  {
188
- message:
189
- 'The code is missing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```',
190
- logLines: [],
191
- errLines: [],
192
- } satisfies WorkerError,
249
+ is_error: true,
250
+ result: `The code contains TypeScript diagnostics:\n${diagnostics.join('\n')}`,
251
+ log_lines: [],
252
+ err_lines: [],
253
+ } satisfies WorkerOutput,
193
254
  { status: 400, statusText: 'Code execution error' },
194
255
  );
195
256
  }
@@ -198,14 +259,14 @@ const fetch = async (req: Request): Promise<Response> => {
198
259
  ...opts,
199
260
  });
200
261
 
201
- const logLines: string[] = [];
202
- const errLines: string[] = [];
262
+ const log_lines: string[] = [];
263
+ const err_lines: string[] = [];
203
264
  const console = {
204
265
  log: (...args: unknown[]) => {
205
- logLines.push(util.format(...args));
266
+ log_lines.push(util.format(...args));
206
267
  },
207
268
  error: (...args: unknown[]) => {
208
- errLines.push(util.format(...args));
269
+ err_lines.push(util.format(...args));
209
270
  },
210
271
  };
211
272
  try {
@@ -213,17 +274,19 @@ const fetch = async (req: Request): Promise<Response> => {
213
274
  eval(`${code}\nrun_ = run;`);
214
275
  const result = await run_(makeSdkProxy(client, { path: ['client'] }));
215
276
  return Response.json({
277
+ is_error: false,
216
278
  result,
217
- logLines,
218
- errLines,
219
- } satisfies WorkerSuccess);
279
+ log_lines,
280
+ err_lines,
281
+ } satisfies WorkerOutput);
220
282
  } catch (e) {
221
283
  return Response.json(
222
284
  {
223
- message: parseError(code, e),
224
- logLines,
225
- errLines,
226
- } satisfies WorkerError,
285
+ is_error: true,
286
+ result: parseError(code, e),
287
+ log_lines,
288
+ err_lines,
289
+ } satisfies WorkerOutput,
227
290
  { status: 400, statusText: 'Code execution error' },
228
291
  );
229
292
  }