@5ss/ai-tools 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +21 -0
  3. package/README.md +221 -0
  4. package/dist/ai-sdk/index.d.ts +15 -0
  5. package/dist/ai-sdk/index.d.ts.map +1 -0
  6. package/dist/ai-sdk/index.js +24 -0
  7. package/dist/ai-sdk/index.js.map +1 -0
  8. package/dist/artifact-D064mHfK.js +44 -0
  9. package/dist/artifact-D064mHfK.js.map +1 -0
  10. package/dist/artifacts-O8g-40Pw.js +404 -0
  11. package/dist/artifacts-O8g-40Pw.js.map +1 -0
  12. package/dist/aws-json-CecFqzqX.js +23 -0
  13. package/dist/aws-json-CecFqzqX.js.map +1 -0
  14. package/dist/aws-service-msttbPrz.js +58 -0
  15. package/dist/aws-service-msttbPrz.js.map +1 -0
  16. package/dist/batch-BMM5dXqL.d.ts +22 -0
  17. package/dist/batch-BMM5dXqL.d.ts.map +1 -0
  18. package/dist/batch-Co1ujeAW.js +67 -0
  19. package/dist/batch-Co1ujeAW.js.map +1 -0
  20. package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
  21. package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
  22. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
  23. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
  24. package/dist/bytes-BxpimpQx.js +45 -0
  25. package/dist/bytes-BxpimpQx.js.map +1 -0
  26. package/dist/client-CCKGsTeI.js +743 -0
  27. package/dist/client-CCKGsTeI.js.map +1 -0
  28. package/dist/cloudflare/index.d.ts +37 -0
  29. package/dist/cloudflare/index.d.ts.map +1 -0
  30. package/dist/cloudflare/index.js +41 -0
  31. package/dist/cloudflare/index.js.map +1 -0
  32. package/dist/cloudflare-browser-B6Yolpin.js +428 -0
  33. package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
  34. package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
  35. package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
  36. package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
  37. package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
  38. package/dist/content-type-CORxaxcv.js +49 -0
  39. package/dist/content-type-CORxaxcv.js.map +1 -0
  40. package/dist/core/index.d.ts +4 -0
  41. package/dist/core/index.js +204 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/define-CvpJ_pNP.js +115 -0
  44. package/dist/define-CvpJ_pNP.js.map +1 -0
  45. package/dist/errors-DoSpNHvs.js +20 -0
  46. package/dist/errors-DoSpNHvs.js.map +1 -0
  47. package/dist/errors-aKhko9T1.d.ts +18 -0
  48. package/dist/errors-aKhko9T1.d.ts.map +1 -0
  49. package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
  50. package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
  51. package/dist/framework-context-DVIIY8ZO.js +24 -0
  52. package/dist/framework-context-DVIIY8ZO.js.map +1 -0
  53. package/dist/gotenberg-NuJjxyln.js +291 -0
  54. package/dist/gotenberg-NuJjxyln.js.map +1 -0
  55. package/dist/http/index.d.ts +47 -0
  56. package/dist/http/index.d.ts.map +1 -0
  57. package/dist/http/index.js +3 -0
  58. package/dist/http-service-DDNCO1s4.js +254 -0
  59. package/dist/http-service-DDNCO1s4.js.map +1 -0
  60. package/dist/http-service-T7E5UjP8.d.ts +80 -0
  61. package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
  62. package/dist/imessage-BSAFOI8Z.js +154 -0
  63. package/dist/imessage-BSAFOI8Z.js.map +1 -0
  64. package/dist/index-BU4gmYO8.d.ts +254 -0
  65. package/dist/index-BU4gmYO8.d.ts.map +1 -0
  66. package/dist/index-CCivzmxO.d.ts +188 -0
  67. package/dist/index-CCivzmxO.d.ts.map +1 -0
  68. package/dist/index-CLmTrcu5.d.ts +22 -0
  69. package/dist/index-CLmTrcu5.d.ts.map +1 -0
  70. package/dist/index-CZX5OeOF.d.ts +235 -0
  71. package/dist/index-CZX5OeOF.d.ts.map +1 -0
  72. package/dist/index-CdFmEfZO.d.ts +359 -0
  73. package/dist/index-CdFmEfZO.d.ts.map +1 -0
  74. package/dist/index-Cuh6eMWc.d.ts +285 -0
  75. package/dist/index-Cuh6eMWc.d.ts.map +1 -0
  76. package/dist/index-DuOGj7vc.d.ts +107 -0
  77. package/dist/index-DuOGj7vc.d.ts.map +1 -0
  78. package/dist/index-ccZ1XOHw.d.ts +69 -0
  79. package/dist/index-ccZ1XOHw.d.ts.map +1 -0
  80. package/dist/index-n8JTpNf1.d.ts +247 -0
  81. package/dist/index-n8JTpNf1.d.ts.map +1 -0
  82. package/dist/index-pwW1OsOx.d.ts +134 -0
  83. package/dist/index-pwW1OsOx.d.ts.map +1 -0
  84. package/dist/index-zK1ZwS4m.d.ts +347 -0
  85. package/dist/index-zK1ZwS4m.d.ts.map +1 -0
  86. package/dist/limits-hjrO8zUG.js +80 -0
  87. package/dist/limits-hjrO8zUG.js.map +1 -0
  88. package/dist/mastra/index.d.ts +14 -0
  89. package/dist/mastra/index.d.ts.map +1 -0
  90. package/dist/mastra/index.js +26 -0
  91. package/dist/mastra/index.js.map +1 -0
  92. package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
  93. package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
  94. package/dist/mcp/index.d.ts +80 -0
  95. package/dist/mcp/index.d.ts.map +1 -0
  96. package/dist/mcp/index.js +97 -0
  97. package/dist/mcp/index.js.map +1 -0
  98. package/dist/modules/artifacts/index.d.ts +337 -0
  99. package/dist/modules/artifacts/index.d.ts.map +1 -0
  100. package/dist/modules/artifacts/index.js +348 -0
  101. package/dist/modules/artifacts/index.js.map +1 -0
  102. package/dist/modules/browser/index.d.ts +516 -0
  103. package/dist/modules/browser/index.d.ts.map +1 -0
  104. package/dist/modules/browser/index.js +475 -0
  105. package/dist/modules/browser/index.js.map +1 -0
  106. package/dist/modules/calendar/index.d.ts +93 -0
  107. package/dist/modules/calendar/index.d.ts.map +1 -0
  108. package/dist/modules/calendar/index.js +131 -0
  109. package/dist/modules/calendar/index.js.map +1 -0
  110. package/dist/modules/code-sandbox/index.d.ts +317 -0
  111. package/dist/modules/code-sandbox/index.d.ts.map +1 -0
  112. package/dist/modules/code-sandbox/index.js +537 -0
  113. package/dist/modules/code-sandbox/index.js.map +1 -0
  114. package/dist/modules/content-type/index.d.ts +22 -0
  115. package/dist/modules/content-type/index.d.ts.map +1 -0
  116. package/dist/modules/content-type/index.js +66 -0
  117. package/dist/modules/content-type/index.js.map +1 -0
  118. package/dist/modules/crypto/index.d.ts +115 -0
  119. package/dist/modules/crypto/index.d.ts.map +1 -0
  120. package/dist/modules/crypto/index.js +139 -0
  121. package/dist/modules/crypto/index.js.map +1 -0
  122. package/dist/modules/document/index.d.ts +575 -0
  123. package/dist/modules/document/index.d.ts.map +1 -0
  124. package/dist/modules/document/index.js +444 -0
  125. package/dist/modules/document/index.js.map +1 -0
  126. package/dist/modules/document-extract/index.d.ts +438 -0
  127. package/dist/modules/document-extract/index.d.ts.map +1 -0
  128. package/dist/modules/document-extract/index.js +127 -0
  129. package/dist/modules/document-extract/index.js.map +1 -0
  130. package/dist/modules/document-render/index.d.ts +336 -0
  131. package/dist/modules/document-render/index.d.ts.map +1 -0
  132. package/dist/modules/document-render/index.js +155 -0
  133. package/dist/modules/document-render/index.js.map +1 -0
  134. package/dist/modules/email/index.d.ts +311 -0
  135. package/dist/modules/email/index.d.ts.map +1 -0
  136. package/dist/modules/email/index.js +167 -0
  137. package/dist/modules/email/index.js.map +1 -0
  138. package/dist/modules/email-message/index.d.ts +95 -0
  139. package/dist/modules/email-message/index.d.ts.map +1 -0
  140. package/dist/modules/email-message/index.js +264 -0
  141. package/dist/modules/email-message/index.js.map +1 -0
  142. package/dist/modules/file-convert/index.d.ts +273 -0
  143. package/dist/modules/file-convert/index.d.ts.map +1 -0
  144. package/dist/modules/file-convert/index.js +103 -0
  145. package/dist/modules/file-convert/index.js.map +1 -0
  146. package/dist/modules/files/index.d.ts +452 -0
  147. package/dist/modules/files/index.d.ts.map +1 -0
  148. package/dist/modules/files/index.js +733 -0
  149. package/dist/modules/files/index.js.map +1 -0
  150. package/dist/modules/image/index.d.ts +342 -0
  151. package/dist/modules/image/index.d.ts.map +1 -0
  152. package/dist/modules/image/index.js +281 -0
  153. package/dist/modules/image/index.js.map +1 -0
  154. package/dist/modules/messaging/index.d.ts +608 -0
  155. package/dist/modules/messaging/index.d.ts.map +1 -0
  156. package/dist/modules/messaging/index.js +1067 -0
  157. package/dist/modules/messaging/index.js.map +1 -0
  158. package/dist/modules/pdf/index.d.ts +287 -0
  159. package/dist/modules/pdf/index.d.ts.map +1 -0
  160. package/dist/modules/pdf/index.js +259 -0
  161. package/dist/modules/pdf/index.js.map +1 -0
  162. package/dist/modules/presentation/index.d.ts +247 -0
  163. package/dist/modules/presentation/index.d.ts.map +1 -0
  164. package/dist/modules/presentation/index.js +12657 -0
  165. package/dist/modules/presentation/index.js.map +1 -0
  166. package/dist/modules/queue/index.d.ts +129 -0
  167. package/dist/modules/queue/index.d.ts.map +1 -0
  168. package/dist/modules/queue/index.js +131 -0
  169. package/dist/modules/queue/index.js.map +1 -0
  170. package/dist/modules/rag/index.d.ts +250 -0
  171. package/dist/modules/rag/index.d.ts.map +1 -0
  172. package/dist/modules/rag/index.js +366 -0
  173. package/dist/modules/rag/index.js.map +1 -0
  174. package/dist/modules/scheduler/index.d.ts +216 -0
  175. package/dist/modules/scheduler/index.d.ts.map +1 -0
  176. package/dist/modules/scheduler/index.js +153 -0
  177. package/dist/modules/scheduler/index.js.map +1 -0
  178. package/dist/modules/skills/index.d.ts +205 -0
  179. package/dist/modules/skills/index.d.ts.map +1 -0
  180. package/dist/modules/skills/index.js +203 -0
  181. package/dist/modules/skills/index.js.map +1 -0
  182. package/dist/modules/tasks/index.d.ts +287 -0
  183. package/dist/modules/tasks/index.d.ts.map +1 -0
  184. package/dist/modules/tasks/index.js +207 -0
  185. package/dist/modules/tasks/index.js.map +1 -0
  186. package/dist/modules/vector-store/index.d.ts +3 -0
  187. package/dist/modules/vector-store/index.js +3 -0
  188. package/dist/modules/web-fetch/index.d.ts +99 -0
  189. package/dist/modules/web-fetch/index.d.ts.map +1 -0
  190. package/dist/modules/web-fetch/index.js +242 -0
  191. package/dist/modules/web-fetch/index.js.map +1 -0
  192. package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
  193. package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
  194. package/dist/object-artifact-store-wZ2j9cto.js +28 -0
  195. package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
  196. package/dist/pinecone-umY4t6OF.js +190 -0
  197. package/dist/pinecone-umY4t6OF.js.map +1 -0
  198. package/dist/provider-CgDAlg6K.js +34 -0
  199. package/dist/provider-CgDAlg6K.js.map +1 -0
  200. package/dist/qdrant-DMp4NhKR.js +253 -0
  201. package/dist/qdrant-DMp4NhKR.js.map +1 -0
  202. package/dist/resend-BAC38_dA.js +155 -0
  203. package/dist/resend-BAC38_dA.js.map +1 -0
  204. package/dist/s3-CsOaPWMP.js +955 -0
  205. package/dist/s3-CsOaPWMP.js.map +1 -0
  206. package/dist/schemas-ChOAhdo9.js +192 -0
  207. package/dist/schemas-ChOAhdo9.js.map +1 -0
  208. package/dist/slack-Di5BBNpt.js +1455 -0
  209. package/dist/slack-Di5BBNpt.js.map +1 -0
  210. package/dist/sqs-DCwS1i2N.js +225 -0
  211. package/dist/sqs-DCwS1i2N.js.map +1 -0
  212. package/dist/supabase-vector-Dpp9mmJR.js +218 -0
  213. package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
  214. package/dist/tanstack/index.d.ts +15 -0
  215. package/dist/tanstack/index.d.ts.map +1 -0
  216. package/dist/tanstack/index.js +28 -0
  217. package/dist/tanstack/index.js.map +1 -0
  218. package/dist/teams-DYAHNb39.js +835 -0
  219. package/dist/teams-DYAHNb39.js.map +1 -0
  220. package/dist/telegram-DDXWzkfL.js +734 -0
  221. package/dist/telegram-DDXWzkfL.js.map +1 -0
  222. package/dist/textract-CPLiB22H.js +554 -0
  223. package/dist/textract-CPLiB22H.js.map +1 -0
  224. package/dist/transport-B4vn-XiQ.js +157 -0
  225. package/dist/transport-B4vn-XiQ.js.map +1 -0
  226. package/dist/transport-i96ACAI_.d.ts +46 -0
  227. package/dist/transport-i96ACAI_.d.ts.map +1 -0
  228. package/dist/types-Ccb0DXY9.d.ts +150 -0
  229. package/dist/types-Ccb0DXY9.d.ts.map +1 -0
  230. package/dist/unique-EwBH1JPB.js +19 -0
  231. package/dist/unique-EwBH1JPB.js.map +1 -0
  232. package/dist/vector-store-C3nEO80e.js +193 -0
  233. package/dist/vector-store-C3nEO80e.js.map +1 -0
  234. package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
  235. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
  236. package/dist/vendors/amazon-sp-api/index.js +975 -0
  237. package/dist/vendors/amazon-sp-api/index.js.map +1 -0
  238. package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
  239. package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
  240. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
  241. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
  242. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
  243. package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
  244. package/dist/vendors/cloudflare-browser/index.js +2 -0
  245. package/dist/vendors/cloudflare-email/index.d.ts +260 -0
  246. package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
  247. package/dist/vendors/cloudflare-email/index.js +3 -0
  248. package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
  249. package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
  250. package/dist/vendors/cloudflare-sandbox/index.js +2 -0
  251. package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
  252. package/dist/vendors/eventbridge-scheduler/index.js +2 -0
  253. package/dist/vendors/gotenberg/index.d.ts +306 -0
  254. package/dist/vendors/gotenberg/index.d.ts.map +1 -0
  255. package/dist/vendors/gotenberg/index.js +2 -0
  256. package/dist/vendors/imessage/index.d.ts +420 -0
  257. package/dist/vendors/imessage/index.d.ts.map +1 -0
  258. package/dist/vendors/imessage/index.js +4 -0
  259. package/dist/vendors/katana/index.d.ts +1570 -0
  260. package/dist/vendors/katana/index.d.ts.map +1 -0
  261. package/dist/vendors/katana/index.js +1639 -0
  262. package/dist/vendors/katana/index.js.map +1 -0
  263. package/dist/vendors/mastra-vector/index.d.ts +120 -0
  264. package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
  265. package/dist/vendors/mastra-vector/index.js +3 -0
  266. package/dist/vendors/pinecone/index.d.ts +75 -0
  267. package/dist/vendors/pinecone/index.d.ts.map +1 -0
  268. package/dist/vendors/pinecone/index.js +3 -0
  269. package/dist/vendors/qdrant/index.d.ts +75 -0
  270. package/dist/vendors/qdrant/index.d.ts.map +1 -0
  271. package/dist/vendors/qdrant/index.js +3 -0
  272. package/dist/vendors/resend/index.d.ts +3 -0
  273. package/dist/vendors/resend/index.js +3 -0
  274. package/dist/vendors/s3/index.d.ts +2 -0
  275. package/dist/vendors/s3/index.js +2 -0
  276. package/dist/vendors/slack/index.d.ts +576 -0
  277. package/dist/vendors/slack/index.d.ts.map +1 -0
  278. package/dist/vendors/slack/index.js +3 -0
  279. package/dist/vendors/sqs/index.d.ts +2 -0
  280. package/dist/vendors/sqs/index.js +2 -0
  281. package/dist/vendors/supabase-vector/index.d.ts +89 -0
  282. package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
  283. package/dist/vendors/supabase-vector/index.js +3 -0
  284. package/dist/vendors/teams/index.d.ts +303 -0
  285. package/dist/vendors/teams/index.d.ts.map +1 -0
  286. package/dist/vendors/teams/index.js +3 -0
  287. package/dist/vendors/telegram/index.d.ts +319 -0
  288. package/dist/vendors/telegram/index.d.ts.map +1 -0
  289. package/dist/vendors/telegram/index.js +3 -0
  290. package/dist/vendors/textract/index.d.ts +2 -0
  291. package/dist/vendors/textract/index.js +2 -0
  292. package/dist/vendors/woocommerce/index.d.ts +1700 -0
  293. package/dist/vendors/woocommerce/index.d.ts.map +1 -0
  294. package/dist/vendors/woocommerce/index.js +1427 -0
  295. package/dist/vendors/woocommerce/index.js.map +1 -0
  296. package/dist/with-auth-CpKqTrGK.js +240 -0
  297. package/dist/with-auth-CpKqTrGK.js.map +1 -0
  298. package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
  299. package/logos/README.md +89 -0
  300. package/logos/amazon.svg +6 -0
  301. package/logos/artifacts.svg +9 -0
  302. package/logos/browser.svg +9 -0
  303. package/logos/calendar.svg +15 -0
  304. package/logos/cloudflare-browser.svg +5 -0
  305. package/logos/cloudflare-email.svg +5 -0
  306. package/logos/cloudflare.svg +4 -0
  307. package/logos/code-sandbox.svg +8 -0
  308. package/logos/content-type.svg +10 -0
  309. package/logos/crypto.svg +7 -0
  310. package/logos/document-extract.svg +12 -0
  311. package/logos/document-render.svg +8 -0
  312. package/logos/document.svg +10 -0
  313. package/logos/email-message.svg +8 -0
  314. package/logos/email.svg +7 -0
  315. package/logos/file-convert.svg +9 -0
  316. package/logos/files.svg +6 -0
  317. package/logos/gotenberg.svg +340 -0
  318. package/logos/image.svg +8 -0
  319. package/logos/imessage.svg +7 -0
  320. package/logos/katana.svg +13 -0
  321. package/logos/mastra.svg +7 -0
  322. package/logos/messaging.svg +7 -0
  323. package/logos/pack-logos.json +48 -0
  324. package/logos/pdf.svg +10 -0
  325. package/logos/pinecone.svg +25 -0
  326. package/logos/presentation.svg +8 -0
  327. package/logos/qdrant.svg +4 -0
  328. package/logos/queue.svg +11 -0
  329. package/logos/rag.svg +18 -0
  330. package/logos/resend.svg +5 -0
  331. package/logos/scheduler.svg +7 -0
  332. package/logos/skills.svg +10 -0
  333. package/logos/slack.svg +14 -0
  334. package/logos/supabase.svg +4 -0
  335. package/logos/tasks.svg +10 -0
  336. package/logos/teams.svg +6 -0
  337. package/logos/telegram.svg +10 -0
  338. package/logos/textract.svg +5 -0
  339. package/logos/vector-store.svg +8 -0
  340. package/logos/web-fetch.svg +8 -0
  341. package/logos/woocommerce.svg +4 -0
  342. package/package.json +373 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["#s3","#root"],"sources":["../../../src/modules/files/contracts.ts","../../../src/modules/files/path.ts","../../../src/modules/files/client.ts","../../../src/modules/files/module.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { artifactRefSchema } from '../../shared/artifact'\nimport { s3AuthSchema } from '../../vendors/s3'\n\n/** Max bytes for a single range read through files tools. */\nexport const MAX_FILES_RANGE_BYTES = 8 * 1024 * 1024\n/** Max lines for files-read-lines. */\nexport const MAX_FILES_READ_LINES = 2_000\n/** Max UTF-8 bytes scanned for line reads. */\nexport const MAX_FILES_LINES_SCAN_BYTES = 2 * 1024 * 1024\n\nexport const filesAuthSchema = z.object({\n\troot_prefix: z\n\t\t.string()\n\t\t.min(1)\n\t\t.describe('Object key prefix for this workspace, for example orgs/acme/files/ (no leading slash)'),\n\tstorage: s3AuthSchema.describe(\n\t\t'S3-compatible object storage credentials (AWS S3, R2 S3 endpoint, MinIO, …) for this workspace'\n\t)\n})\n\nexport type FilesAuth = z.infer<typeof filesAuthSchema>\n\nexport const fileItemSchema = z.object({\n\tpath: z.string().describe('Path relative to the bound root_prefix'),\n\tkind: z.enum(['file', 'folder']).describe('Object file or common-prefix folder'),\n\tsize: z.number().optional().describe('Byte size when kind is file and known'),\n\tlast_modified: z.string().optional().describe('Last-modified timestamp when known'),\n\tetag: z.string().optional().describe('ETag when known'),\n\tmedia_type: z.string().optional().describe('Content-Type when known from head')\n})\n\nexport const filesListInputSchema = z.object({\n\tpath: z.string().optional().describe('Relative folder path under root (no leading slash). Omit for workspace root'),\n\tcursor: z.string().min(1).optional().describe('Pagination cursor from a prior list call'),\n\tlimit: z.int().min(1).max(1000).optional().describe('Maximum items to return (1-1000)')\n})\n\nexport const filesListOutputSchema = z.object({\n\titems: z.array(fileItemSchema),\n\tnext_cursor: z.string().optional().describe('Pass as cursor for the next page'),\n\ttruncated: z.boolean()\n})\n\nexport const filesSearchInputSchema = z.object({\n\tquery: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(200)\n\t\t.describe('Literal name fragment to match against the last path segment (not full-text content)'),\n\tpath: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe('Optional relative folder to search under. Omit to search the whole root prefix'),\n\tcursor: z.string().min(1).optional().describe('Pagination cursor from a prior search call'),\n\tlimit: z.int().min(1).max(1000).optional().describe('Maximum items to scan/return (1-1000)')\n})\n\nexport const filesSearchOutputSchema = z.object({\n\titems: z.array(fileItemSchema),\n\tnext_cursor: z.string().optional(),\n\ttruncated: z.boolean()\n})\n\nexport const filesStatInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root (no leading slash)')\n})\n\nexport const filesStatOutputSchema = z.object({\n\texists: z.boolean(),\n\titem: fileItemSchema.optional()\n})\n\nexport const filesGetInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root'),\n\tencoding: z.enum(['base64', 'utf8']).optional().describe('Body encoding. Defaults to base64')\n})\n\nexport const filesGetOutputSchema = z.object({\n\tpath: z.string(),\n\tbody: z.string().describe('File body encoded per encoding'),\n\tencoding: z.enum(['base64', 'utf8']),\n\tcontent_type: z.string().optional(),\n\tcontent_length: z.number().optional()\n})\n\nexport const filesGetRangeInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root'),\n\tstart_byte: z.int().min(0).describe('Inclusive start byte offset'),\n\tend_byte: z.int().min(0).describe(`Inclusive end byte offset (range size max ${MAX_FILES_RANGE_BYTES} bytes)`),\n\tencoding: z.enum(['base64', 'utf8']).optional().describe('Body encoding. Defaults to base64')\n})\n\nexport const filesGetRangeOutputSchema = z.object({\n\tpath: z.string(),\n\tbody: z.string().describe('Range body encoded per encoding'),\n\tencoding: z.enum(['base64', 'utf8']),\n\tstart_byte: z.number().int().nonnegative(),\n\tend_byte: z.number().int().nonnegative(),\n\ttotal_bytes: z.number().int().nonnegative().optional().describe('Full object size when known'),\n\tcontent_type: z.string().optional()\n})\n\nexport const filesReadLinesInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root (UTF-8 text)'),\n\tstart_line: z.int().min(1).optional().describe('1-based start line (default 1)'),\n\tmax_lines: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(MAX_FILES_READ_LINES)\n\t\t.optional()\n\t\t.describe(`Max lines to return (default 200, max ${MAX_FILES_READ_LINES})`)\n})\n\nexport const filesReadLinesOutputSchema = z.object({\n\tpath: z.string(),\n\tstart_line: z.number().int().positive(),\n\tlines: z.array(z.string()),\n\ttruncated: z.boolean().describe('True when more lines may exist after this page'),\n\tnext_start_line: z.number().int().positive().optional().describe('Pass as start_line for the next page')\n})\n\nexport const filesCreateArtifactInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root to expose as ArtifactRef'),\n\tfilename: z.string().min(1).optional().describe('Display filename on the ArtifactRef'),\n\tmedia_type: z.string().min(1).optional().describe('MIME type override (defaults from head when known)')\n})\n\nexport const filesCreateArtifactOutputSchema = z.object({\n\tpath: z.string(),\n\tartifact: artifactRefSchema.describe(\n\t\t'Object-store ArtifactRef for the same object (logical key under storage key_prefix + root_prefix)'\n\t)\n})\n\nexport const filesPutInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root to write or replace'),\n\tbody: z.string().describe('File body as utf8 text or base64 (see body_encoding)'),\n\tbody_encoding: z.enum(['utf8', 'base64']).optional().describe('How to interpret body. Defaults to utf8'),\n\tcontent_type: z.string().optional().describe('Content-Type to store')\n})\n\nexport const filesPutOutputSchema = z.object({\n\tpath: z.string(),\n\tcontent_length: z.number(),\n\tetag: z.string().optional()\n})\n\nexport const filesDeleteInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root to delete')\n})\n\nexport const filesDeleteOutputSchema = z.object({\n\tpath: z.string(),\n\tdeleted: z.boolean()\n})\n\nexport const filesCopyInputSchema = z.object({\n\tsource_path: z.string().min(1).describe('Relative source path under root'),\n\tdestination_path: z.string().min(1).describe('Relative destination path under root')\n})\n\nexport const filesCopyOutputSchema = z.object({\n\tsource_path: z.string(),\n\tdestination_path: z.string(),\n\tetag: z.string().optional()\n})\n\nexport const filesMkdirInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative folder path under root. Creates a marker object so the prefix is listable')\n})\n\nexport const filesMkdirOutputSchema = z.object({\n\tpath: z.string(),\n\tcreated: z.boolean()\n})\n\nexport const filesMoveInputSchema = z.object({\n\tsource_path: z.string().min(1).describe('Relative source path under root to move from'),\n\tdestination_path: z.string().min(1).describe('Relative destination path under root to move to')\n})\n\nexport const filesMoveOutputSchema = z.object({\n\tsource_path: z.string(),\n\tdestination_path: z.string(),\n\tetag: z.string().optional().describe('ETag of the destination object after copy')\n})\n\nexport const filesMultipartStartInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root for the multipart upload'),\n\tcontent_type: z.string().optional().describe('Content-Type stored on the completed object')\n})\n\nexport const filesMultipartStartOutputSchema = z.object({\n\tpath: z.string(),\n\tupload_id: z.string().min(1).describe('Upload id for subsequent part/complete/abort calls')\n})\n\nexport const filesMultipartUploadPartInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root for the in-progress multipart upload'),\n\tupload_id: z.string().min(1).describe('Upload id from files-multipart-start'),\n\tpart_number: z.int().min(1).max(10_000).describe('Part number (1-10000)'),\n\tbody: z.string().describe('Part body as utf8 text or base64 (see body_encoding)'),\n\tbody_encoding: z.enum(['utf8', 'base64']).optional().describe('How to interpret body. Defaults to utf8')\n})\n\nexport const filesMultipartUploadPartOutputSchema = z.object({\n\tpath: z.string(),\n\tupload_id: z.string(),\n\tpart_number: z.int(),\n\tetag: z.string().min(1).describe('Part ETag required when completing the multipart upload'),\n\tcontent_length: z.number()\n})\n\nexport const filesMultipartPartSchema = z.object({\n\tpart_number: z.int().min(1).max(10_000).describe('Uploaded part number from files-multipart-upload-part'),\n\tetag: z.string().min(1).describe('ETag returned by files-multipart-upload-part')\n})\n\nexport const filesMultipartCompleteInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root for the in-progress multipart upload'),\n\tupload_id: z.string().min(1).describe('Upload id from files-multipart-start'),\n\tparts: z\n\t\t.array(filesMultipartPartSchema)\n\t\t.min(1)\n\t\t.max(10_000)\n\t\t.describe('Uploaded parts with part_number and etag (any order; sorted before complete)')\n})\n\nexport const filesMultipartCompleteOutputSchema = z.object({\n\tpath: z.string(),\n\tupload_id: z.string(),\n\tetag: z.string().optional()\n})\n\nexport const filesMultipartAbortInputSchema = z.object({\n\tpath: z.string().min(1).describe('Relative file path under root for the in-progress multipart upload'),\n\tupload_id: z.string().min(1).describe('Upload id from files-multipart-start')\n})\n\nexport const filesMultipartAbortOutputSchema = z.object({\n\tpath: z.string(),\n\tupload_id: z.string(),\n\taborted: z.boolean()\n})\n\nexport type FilesListInput = z.infer<typeof filesListInputSchema>\nexport type FilesListOutput = z.infer<typeof filesListOutputSchema>\nexport type FilesSearchInput = z.infer<typeof filesSearchInputSchema>\nexport type FilesSearchOutput = z.infer<typeof filesSearchOutputSchema>\nexport type FilesStatInput = z.infer<typeof filesStatInputSchema>\nexport type FilesStatOutput = z.infer<typeof filesStatOutputSchema>\nexport type FilesGetInput = z.infer<typeof filesGetInputSchema>\nexport type FilesGetRangeInput = z.infer<typeof filesGetRangeInputSchema>\nexport type FilesReadLinesInput = z.infer<typeof filesReadLinesInputSchema>\nexport type FilesCreateArtifactInput = z.infer<typeof filesCreateArtifactInputSchema>\nexport type FilesPutInput = z.infer<typeof filesPutInputSchema>\nexport type FilesDeleteInput = z.infer<typeof filesDeleteInputSchema>\nexport type FilesCopyInput = z.infer<typeof filesCopyInputSchema>\nexport type FilesMkdirInput = z.infer<typeof filesMkdirInputSchema>\nexport type FilesMoveInput = z.infer<typeof filesMoveInputSchema>\nexport type FilesMultipartStartInput = z.infer<typeof filesMultipartStartInputSchema>\nexport type FilesMultipartUploadPartInput = z.infer<typeof filesMultipartUploadPartInputSchema>\nexport type FilesMultipartCompleteInput = z.infer<typeof filesMultipartCompleteInputSchema>\nexport type FilesMultipartAbortInput = z.infer<typeof filesMultipartAbortInputSchema>\nexport type FileItem = z.infer<typeof fileItemSchema>\n","import { ToolError } from '../../core/errors'\n\n/** Reject path segments that are parent references; allow names like `report..final.pdf`. */\nfunction assertNoParentSegments(segments: string[], code: 'bad_auth' | 'bad_input'): void {\n\tfor (const segment of segments) {\n\t\tif (segment === '..') {\n\t\t\tthrow new ToolError(\n\t\t\t\tcode === 'bad_auth'\n\t\t\t\t\t? 'root_prefix must not contain parent-directory segments'\n\t\t\t\t\t: 'Path must not contain parent-directory segments',\n\t\t\t\t{ code }\n\t\t\t)\n\t\t}\n\t}\n}\n\n/** Normalize root to a non-absolute prefix that always ends with `/`. */\nexport function normalizeRootPrefix(rootPrefix: string): string {\n\tlet root = rootPrefix.trim().replaceAll('\\\\', '/')\n\tif (root.startsWith('/')) {\n\t\tthrow new ToolError('root_prefix must not be absolute (no leading /)', { code: 'bad_auth' })\n\t}\n\troot = root.replace(/\\/+/g, '/')\n\tconst segments = root.split('/').filter((segment) => segment.length > 0 && segment !== '.')\n\tassertNoParentSegments(segments, 'bad_auth')\n\tif (segments.length === 0) {\n\t\tthrow new ToolError('root_prefix must not be empty', { code: 'bad_auth' })\n\t}\n\treturn `${segments.join('/')}/`\n}\n\n/** Resolve a model-facing relative key under root. Rejects escapes. */\nexport function resolveUnderRoot(root: string, relativePath: string): string {\n\tconst rel = relativePath.trim().replaceAll('\\\\', '/').replace(/^\\/+/, '')\n\tif (rel.length === 0) {\n\t\tthrow new ToolError('Path must not be empty', { code: 'bad_input' })\n\t}\n\tif (rel.startsWith('/')) {\n\t\tthrow new ToolError('Invalid path', { code: 'bad_input' })\n\t}\n\tconst segments = rel.split('/').filter((segment) => segment.length > 0 && segment !== '.')\n\tassertNoParentSegments(segments, 'bad_input')\n\tif (segments.length === 0) {\n\t\tthrow new ToolError('Path must not be empty', { code: 'bad_input' })\n\t}\n\treturn `${root}${segments.join('/')}`\n}\n\n/** Prefix for listing (relative folder path, may be empty for root). */\nexport function resolveListPrefix(root: string, relativePath: string | undefined): string {\n\tif (!relativePath || !relativePath.trim()) return root\n\tconst rel = relativePath.trim().replaceAll('\\\\', '/').replace(/^\\/+/, '').replace(/\\/+$/, '')\n\tconst segments = rel.split('/').filter((segment) => segment.length > 0 && segment !== '.')\n\tassertNoParentSegments(segments, 'bad_input')\n\tif (segments.length === 0) return root\n\treturn `${root}${segments.join('/')}/`\n}\n\n/** Map absolute object key back to relative, or undefined if outside root. */\nexport function toRelativeKey(root: string, absoluteKey: string): string | undefined {\n\tif (!absoluteKey.startsWith(root)) return undefined\n\treturn absoluteKey.slice(root.length)\n}\n\nexport function basename(relativeKey: string): string {\n\tconst parts = relativeKey.replace(/\\/+$/, '').split('/')\n\tconst last = parts[parts.length - 1]\n\treturn last ?? relativeKey\n}\n","/**\n * Files client — path-rooted workspace over S3Client.\n * Host: withAuth + fromContext. Tools stay thin adapters.\n */\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { bytesToBase64, bytesToUtf8 } from '../../shared/bytes'\nimport { S3Client } from '../../vendors/s3'\nimport {\n\tMAX_FILES_LINES_SCAN_BYTES,\n\tMAX_FILES_RANGE_BYTES,\n\tfilesAuthSchema,\n\tfilesCopyOutputSchema,\n\tfilesCreateArtifactOutputSchema,\n\tfilesDeleteOutputSchema,\n\tfilesGetOutputSchema,\n\tfilesGetRangeOutputSchema,\n\tfilesListOutputSchema,\n\tfilesMkdirOutputSchema,\n\tfilesMoveOutputSchema,\n\tfilesMultipartAbortOutputSchema,\n\tfilesMultipartCompleteOutputSchema,\n\tfilesMultipartStartOutputSchema,\n\tfilesMultipartUploadPartOutputSchema,\n\tfilesPutOutputSchema,\n\tfilesReadLinesOutputSchema,\n\tfilesSearchOutputSchema,\n\tfilesStatOutputSchema\n} from './contracts'\nimport type {\n\tFileItem,\n\tFilesAuth,\n\tFilesCopyInput,\n\tFilesCreateArtifactInput,\n\tFilesDeleteInput,\n\tFilesGetInput,\n\tFilesGetRangeInput,\n\tFilesListInput,\n\tFilesMkdirInput,\n\tFilesMoveInput,\n\tFilesMultipartAbortInput,\n\tFilesMultipartCompleteInput,\n\tFilesMultipartStartInput,\n\tFilesMultipartUploadPartInput,\n\tFilesPutInput,\n\tFilesReadLinesInput,\n\tFilesSearchInput,\n\tFilesStatInput\n} from './contracts'\nimport { basename, normalizeRootPrefix, resolveListPrefix, resolveUnderRoot, toRelativeKey } from './path'\n\nfunction transportOptions(ctx: ToolContext) {\n\treturn {\n\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t...(ctx.signal && { signal: ctx.signal })\n\t}\n}\n\nexport class FilesClient {\n\treadonly #s3: S3Client\n\treadonly #root: string\n\n\tconstructor(auth: FilesAuth, ctx: ToolContext = {}) {\n\t\tconst parsed = filesAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid files auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#root = normalizeRootPrefix(parsed.data.root_prefix)\n\t\tthis.#s3 = new S3Client(parsed.data.storage, transportOptions(ctx))\n\t}\n\n\tstatic fromContext(ctx: ToolContext): FilesClient {\n\t\tconst auth = requireAuth(ctx, filesAuthSchema)\n\t\treturn new FilesClient(auth, ctx)\n\t}\n\n\tstatic fromAuth(auth: FilesAuth, ctx: ToolContext = {}): FilesClient {\n\t\treturn new FilesClient(auth, ctx)\n\t}\n\n\tasync list(input: FilesListInput) {\n\t\tconst prefix = resolveListPrefix(this.#root, input.path)\n\t\tconst listed = await this.#s3.list({\n\t\t\tprefix,\n\t\t\tdelimiter: '/',\n\t\t\t...(input.cursor && { cursor: input.cursor }),\n\t\t\t...(input.limit !== undefined && { limit: input.limit })\n\t\t})\n\n\t\tconst items: FileItem[] = []\n\t\tfor (const obj of listed.items) {\n\t\t\tconst rel = toRelativeKey(this.#root, obj.key)\n\t\t\tif (!rel) continue\n\t\t\titems.push({\n\t\t\t\tpath: rel,\n\t\t\t\tkind: 'file',\n\t\t\t\t...(obj.size !== undefined && { size: obj.size }),\n\t\t\t\t...(obj.last_modified && { last_modified: obj.last_modified }),\n\t\t\t\t...(obj.etag && { etag: obj.etag })\n\t\t\t})\n\t\t}\n\t\tif (listed.common_prefixes) {\n\t\t\tfor (const folderAbs of listed.common_prefixes) {\n\t\t\t\tconst rel = toRelativeKey(this.#root, folderAbs.endsWith('/') ? folderAbs.slice(0, -1) : folderAbs)\n\t\t\t\tif (!rel) continue\n\t\t\t\tconst folderPath = folderAbs.endsWith('/') ? (toRelativeKey(this.#root, folderAbs.slice(0, -1)) ?? rel) : rel\n\t\t\t\titems.push({\n\t\t\t\t\tpath: folderPath.endsWith('/') ? folderPath.slice(0, -1) : folderPath,\n\t\t\t\t\tkind: 'folder'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn filesListOutputSchema.parse({\n\t\t\titems,\n\t\t\ttruncated: listed.truncated,\n\t\t\t...(listed.next_cursor && { next_cursor: listed.next_cursor })\n\t\t})\n\t}\n\n\tasync search(input: FilesSearchInput) {\n\t\tconst prefix = resolveListPrefix(this.#root, input.path)\n\t\tconst listed = await this.#s3.list({\n\t\t\tprefix,\n\t\t\t...(input.cursor && { cursor: input.cursor }),\n\t\t\t...(input.limit !== undefined && { limit: input.limit })\n\t\t})\n\n\t\tconst needle = input.query.toLowerCase()\n\t\tconst items: FileItem[] = []\n\t\tfor (const obj of listed.items) {\n\t\t\tconst rel = toRelativeKey(this.#root, obj.key)\n\t\t\tif (!rel) continue\n\t\t\tif (!basename(rel).toLowerCase().includes(needle)) continue\n\t\t\titems.push({\n\t\t\t\tpath: rel,\n\t\t\t\tkind: 'file',\n\t\t\t\t...(obj.size !== undefined && { size: obj.size }),\n\t\t\t\t...(obj.last_modified && { last_modified: obj.last_modified }),\n\t\t\t\t...(obj.etag && { etag: obj.etag })\n\t\t\t})\n\t\t}\n\n\t\treturn filesSearchOutputSchema.parse({\n\t\t\titems,\n\t\t\ttruncated: listed.truncated,\n\t\t\t...(listed.next_cursor && { next_cursor: listed.next_cursor })\n\t\t})\n\t}\n\n\tasync stat(input: FilesStatInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst head = await this.#s3.head({ key: absolute })\n\t\tif (!head.exists) {\n\t\t\treturn filesStatOutputSchema.parse({ exists: false })\n\t\t}\n\t\tconst rel = toRelativeKey(this.#root, head.key) ?? input.path\n\t\treturn filesStatOutputSchema.parse({\n\t\t\texists: true,\n\t\t\titem: {\n\t\t\t\tpath: rel,\n\t\t\t\tkind: 'file',\n\t\t\t\t...(head.content_length !== undefined && { size: head.content_length }),\n\t\t\t\t...(head.etag && { etag: head.etag }),\n\t\t\t\t...(head.content_type && { media_type: head.content_type })\n\t\t\t}\n\t\t})\n\t}\n\n\tasync get(input: FilesGetInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst got = await this.#s3.get({\n\t\t\tkey: absolute,\n\t\t\t...(input.encoding && { encoding: input.encoding })\n\t\t})\n\t\treturn filesGetOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tbody: got.body,\n\t\t\tencoding: got.encoding,\n\t\t\t...(got.content_type && { content_type: got.content_type }),\n\t\t\t...(got.content_length !== undefined && { content_length: got.content_length })\n\t\t})\n\t}\n\n\tasync getRange(input: FilesGetRangeInput) {\n\t\tif (input.end_byte < input.start_byte) {\n\t\t\tthrow new ToolError('end_byte must be >= start_byte', { code: 'bad_input' })\n\t\t}\n\t\tconst rangeSize = input.end_byte - input.start_byte + 1\n\t\tif (rangeSize > MAX_FILES_RANGE_BYTES) {\n\t\t\tthrow new ToolError(`Byte range exceeds max of ${MAX_FILES_RANGE_BYTES} bytes`, {\n\t\t\t\tcode: 'too_large',\n\t\t\t\tdetails: { max_bytes: MAX_FILES_RANGE_BYTES, requested_bytes: rangeSize }\n\t\t\t})\n\t\t}\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst range = await this.#s3.getBytesRange(absolute, {\n\t\t\tstart_byte: input.start_byte,\n\t\t\tend_byte: input.end_byte\n\t\t})\n\t\tconst encoding = input.encoding ?? 'base64'\n\t\tconst body = encoding === 'utf8' ? bytesToUtf8(range.bytes) : bytesToBase64(range.bytes)\n\t\treturn filesGetRangeOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tbody,\n\t\t\tencoding,\n\t\t\tstart_byte: range.start_byte,\n\t\t\tend_byte: range.end_byte,\n\t\t\t...(range.total_bytes !== undefined && { total_bytes: range.total_bytes }),\n\t\t\t...(range.content_type && { content_type: range.content_type })\n\t\t})\n\t}\n\n\tasync readLines(input: FilesReadLinesInput) {\n\t\tconst startLine = input.start_line ?? 1\n\t\tconst maxLines = input.max_lines ?? 200\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\t// Scan a bounded prefix of the object as UTF-8 to extract lines.\n\t\tconst range = await this.#s3.getBytesRange(absolute, {\n\t\t\tstart_byte: 0,\n\t\t\tend_byte: MAX_FILES_LINES_SCAN_BYTES - 1\n\t\t})\n\t\tconst text = bytesToUtf8(range.bytes)\n\t\tconst allLines = text.split(/\\r\\n|\\n|\\r/)\n\t\t// Drop trailing empty segment from final newline.\n\t\tif (allLines.length > 0 && allLines[allLines.length - 1] === '') {\n\t\t\tallLines.pop()\n\t\t}\n\t\tconst sliceStart = startLine - 1\n\t\tconst page = allLines.slice(sliceStart, sliceStart + maxLines)\n\t\tconst scannedAll = range.total_bytes === undefined || range.end_byte >= range.total_bytes - 1\n\t\tconst moreInScan = sliceStart + page.length < allLines.length\n\t\tconst truncated = moreInScan || !scannedAll\n\t\treturn filesReadLinesOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tstart_line: startLine,\n\t\t\tlines: page,\n\t\t\ttruncated,\n\t\t\t...(truncated && { next_start_line: startLine + page.length })\n\t\t})\n\t}\n\n\tasync createArtifact(input: FilesCreateArtifactInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst head = await this.#s3.head({ key: absolute })\n\t\tif (!head.exists) {\n\t\t\tthrow new ToolError('File not found', { code: 'not_found', details: { path: input.path } })\n\t\t}\n\t\t// Zero-copy: ArtifactRef points at the same logical key under storage key_prefix + root.\n\t\tconst artifact = {\n\t\t\tstore: 'object' as const,\n\t\t\tkey: absolute,\n\t\t\t...(input.filename && { filename: input.filename }),\n\t\t\t...(input.media_type\n\t\t\t\t? { media_type: input.media_type }\n\t\t\t\t: head.content_type\n\t\t\t\t\t? { media_type: head.content_type }\n\t\t\t\t\t: {}),\n\t\t\t...(head.content_length !== undefined && { byte_length: head.content_length })\n\t\t}\n\t\treturn filesCreateArtifactOutputSchema.parse({ path: input.path, artifact })\n\t}\n\n\tasync put(input: FilesPutInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst put = await this.#s3.put({\n\t\t\tkey: absolute,\n\t\t\tbody: input.body,\n\t\t\t...(input.body_encoding && { body_encoding: input.body_encoding }),\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t\treturn filesPutOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tcontent_length: put.content_length,\n\t\t\t...(put.etag && { etag: put.etag })\n\t\t})\n\t}\n\n\tasync delete(input: FilesDeleteInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst result = await this.#s3.delete({ key: absolute })\n\t\treturn filesDeleteOutputSchema.parse({ path: input.path, deleted: result.deleted })\n\t}\n\n\tasync copy(input: FilesCopyInput) {\n\t\tconst source = resolveUnderRoot(this.#root, input.source_path)\n\t\tconst destination = resolveUnderRoot(this.#root, input.destination_path)\n\t\tconst result = await this.#s3.copy({ source_key: source, destination_key: destination })\n\t\treturn filesCopyOutputSchema.parse({\n\t\t\tsource_path: input.source_path,\n\t\t\tdestination_path: input.destination_path,\n\t\t\t...(result.etag && { etag: result.etag })\n\t\t})\n\t}\n\n\tasync mkdir(input: FilesMkdirInput) {\n\t\tconst folder = input.path.trim().replaceAll('\\\\', '/').replace(/^\\/+/, '').replace(/\\/+$/, '')\n\t\tconst keepRelative = `${folder}/.keep`\n\t\tconst absolute = resolveUnderRoot(this.#root, keepRelative)\n\t\tawait this.#s3.put({\n\t\t\tkey: absolute,\n\t\t\tbody: '',\n\t\t\tbody_encoding: 'utf8',\n\t\t\tcontent_type: 'application/x-directory'\n\t\t})\n\t\treturn filesMkdirOutputSchema.parse({ path: folder, created: true })\n\t}\n\n\tasync move(input: FilesMoveInput) {\n\t\tconst source = resolveUnderRoot(this.#root, input.source_path)\n\t\tconst destination = resolveUnderRoot(this.#root, input.destination_path)\n\t\tif (source === destination) {\n\t\t\tthrow new ToolError('source_path and destination_path must differ', { code: 'bad_input' })\n\t\t}\n\t\tconst copied = await this.#s3.copy({ source_key: source, destination_key: destination })\n\t\tawait this.#s3.delete({ key: source })\n\t\treturn filesMoveOutputSchema.parse({\n\t\t\tsource_path: input.source_path,\n\t\t\tdestination_path: input.destination_path,\n\t\t\t...(copied.etag && { etag: copied.etag })\n\t\t})\n\t}\n\n\tasync multipartStart(input: FilesMultipartStartInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst started = await this.#s3.createMultipartUpload({\n\t\t\tkey: absolute,\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t\treturn filesMultipartStartOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tupload_id: started.upload_id\n\t\t})\n\t}\n\n\tasync multipartUploadPart(input: FilesMultipartUploadPartInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst part = await this.#s3.uploadPart({\n\t\t\tkey: absolute,\n\t\t\tupload_id: input.upload_id,\n\t\t\tpart_number: input.part_number,\n\t\t\tbody: input.body,\n\t\t\t...(input.body_encoding && { body_encoding: input.body_encoding })\n\t\t})\n\t\treturn filesMultipartUploadPartOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tupload_id: input.upload_id,\n\t\t\tpart_number: part.part_number,\n\t\t\tetag: part.etag,\n\t\t\tcontent_length: part.content_length\n\t\t})\n\t}\n\n\tasync multipartComplete(input: FilesMultipartCompleteInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst completed = await this.#s3.completeMultipartUpload({\n\t\t\tkey: absolute,\n\t\t\tupload_id: input.upload_id,\n\t\t\tparts: input.parts\n\t\t})\n\t\treturn filesMultipartCompleteOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tupload_id: input.upload_id,\n\t\t\t...(completed.etag && { etag: completed.etag })\n\t\t})\n\t}\n\n\tasync multipartAbort(input: FilesMultipartAbortInput) {\n\t\tconst absolute = resolveUnderRoot(this.#root, input.path)\n\t\tconst aborted = await this.#s3.abortMultipartUpload({ key: absolute, upload_id: input.upload_id })\n\t\treturn filesMultipartAbortOutputSchema.parse({\n\t\t\tpath: input.path,\n\t\t\tupload_id: input.upload_id,\n\t\t\taborted: aborted.aborted\n\t\t})\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { FilesClient } from './client'\nimport {\n\tfilesAuthSchema,\n\tfilesCopyInputSchema,\n\tfilesCopyOutputSchema,\n\tfilesDeleteInputSchema,\n\tfilesDeleteOutputSchema,\n\tfilesCreateArtifactInputSchema,\n\tfilesCreateArtifactOutputSchema,\n\tfilesGetInputSchema,\n\tfilesGetOutputSchema,\n\tfilesGetRangeInputSchema,\n\tfilesGetRangeOutputSchema,\n\tfilesListInputSchema,\n\tfilesListOutputSchema,\n\tfilesMkdirInputSchema,\n\tfilesMkdirOutputSchema,\n\tfilesMoveInputSchema,\n\tfilesMoveOutputSchema,\n\tfilesMultipartAbortInputSchema,\n\tfilesMultipartAbortOutputSchema,\n\tfilesMultipartCompleteInputSchema,\n\tfilesMultipartCompleteOutputSchema,\n\tfilesMultipartStartInputSchema,\n\tfilesMultipartStartOutputSchema,\n\tfilesMultipartUploadPartInputSchema,\n\tfilesMultipartUploadPartOutputSchema,\n\tfilesPutInputSchema,\n\tfilesPutOutputSchema,\n\tfilesReadLinesInputSchema,\n\tfilesReadLinesOutputSchema,\n\tfilesSearchInputSchema,\n\tfilesSearchOutputSchema,\n\tfilesStatInputSchema,\n\tfilesStatOutputSchema\n} from './contracts'\n\nexport type { FilesAuth } from './contracts'\nexport { filesAuthSchema }\n\nexport const filesListTool = defineTool({\n\tid: 'files-list',\n\tname: 'listFiles',\n\tdescription:\n\t\t'List files and folders under a relative path in the bound workspace root. Returns names, kinds, sizes when known, and pagination fields. Does not return file body bytes.',\n\tinputSchema: filesListInputSchema,\n\toutputSchema: filesListOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).list(input)\n})\n\nexport const filesSearchTool = defineTool({\n\tid: 'files-search',\n\tname: 'searchFiles',\n\tdescription:\n\t\t'Search for files and folders by name fragment under the bound workspace root (optional relative folder). Matches the last path segment only; not full-text content search. Returns metadata without file body bytes.',\n\tinputSchema: filesSearchInputSchema,\n\toutputSchema: filesSearchOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).search(input)\n})\n\nexport const filesStatTool = defineTool({\n\tid: 'files-stat',\n\tname: 'statFile',\n\tdescription:\n\t\t'Get metadata for one relative file path under the bound workspace root (exists, size, content type, etag when known). Does not return file body bytes.',\n\tinputSchema: filesStatInputSchema,\n\toutputSchema: filesStatOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).stat(input)\n})\n\nexport const filesGetTool = defineTool({\n\tid: 'files-get',\n\tname: 'getFile',\n\tdescription:\n\t\t'Download one file by relative path under the bound workspace root. Bodies larger than the storage provider limit fail. Returns body as base64 by default or utf8 when requested.',\n\tinputSchema: filesGetInputSchema,\n\toutputSchema: filesGetOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).get(input)\n})\n\nexport const filesGetRangeTool = defineTool({\n\tid: 'files-get-range',\n\tname: 'getFileRange',\n\tdescription:\n\t\t'Download a byte range of one file under the bound workspace root (inclusive start_byte/end_byte). Max range size is 8 MiB. Prefer this over files-get for large objects.',\n\tinputSchema: filesGetRangeInputSchema,\n\toutputSchema: filesGetRangeOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).getRange(input)\n})\n\nexport const filesReadLinesTool = defineTool({\n\tid: 'files-read-lines',\n\tname: 'readFileLines',\n\tdescription:\n\t\t'Read a page of UTF-8 text lines from a file under the bound workspace root (1-based start_line, max_lines). Scans at most 2 MiB from the start of the object for line boundaries.',\n\tinputSchema: filesReadLinesInputSchema,\n\toutputSchema: filesReadLinesOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).readLines(input)\n})\n\nexport const filesCreateArtifactTool = defineTool({\n\tid: 'files-create-artifact',\n\tname: 'createFileArtifact',\n\tdescription:\n\t\t'Return an object-store ArtifactRef for an existing file under the bound workspace root (zero-copy; same storage key). Use when another tool needs an ArtifactRef without re-uploading bytes.',\n\tinputSchema: filesCreateArtifactInputSchema,\n\toutputSchema: filesCreateArtifactOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).createArtifact(input)\n})\n\nexport const filesPutTool = defineTool({\n\tid: 'files-put',\n\tname: 'putFile',\n\tdescription:\n\t\t'Upload or replace one file at a relative path under the bound workspace root. Provide utf8 text or base64 body. Paths cannot escape the root prefix.',\n\tinputSchema: filesPutInputSchema,\n\toutputSchema: filesPutOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).put(input)\n})\n\nexport const filesDeleteTool = defineTool({\n\tid: 'files-delete',\n\tname: 'deleteFile',\n\tdescription:\n\t\t'Delete one file by relative path under the bound workspace root. Idempotent when the object is already missing.',\n\tinputSchema: filesDeleteInputSchema,\n\toutputSchema: filesDeleteOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).delete(input)\n})\n\nexport const filesCopyTool = defineTool({\n\tid: 'files-copy',\n\tname: 'copyFile',\n\tdescription:\n\t\t'Copy one file to a new relative path under the same bound workspace root. Both source and destination must stay inside the root prefix.',\n\tinputSchema: filesCopyInputSchema,\n\toutputSchema: filesCopyOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).copy(input)\n})\n\nexport const filesMkdirTool = defineTool({\n\tid: 'files-mkdir',\n\tname: 'makeFileDirectory',\n\tdescription:\n\t\t'Create a folder marker under the bound workspace root so the prefix is listable. Uses an empty .keep object inside the folder path.',\n\tinputSchema: filesMkdirInputSchema,\n\toutputSchema: filesMkdirOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).mkdir(input)\n})\n\nexport const filesMoveTool = defineTool({\n\tid: 'files-move',\n\tname: 'moveFile',\n\tdescription:\n\t\t'Move one file to a new relative path under the same bound workspace root (copy then delete source). Both paths must stay inside the root prefix. Destination is overwritten if it already exists when the store allows it.',\n\tinputSchema: filesMoveInputSchema,\n\toutputSchema: filesMoveOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).move(input)\n})\n\nexport const filesMultipartStartTool = defineTool({\n\tid: 'files-multipart-start',\n\tname: 'startFileMultipartUpload',\n\tdescription:\n\t\t'Start a multipart upload for a relative path under the bound workspace root. Returns upload_id for part/complete/abort. Use when the file exceeds the single put limit.',\n\tinputSchema: filesMultipartStartInputSchema,\n\toutputSchema: filesMultipartStartOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).multipartStart(input)\n})\n\nexport const filesMultipartUploadPartTool = defineTool({\n\tid: 'files-multipart-upload-part',\n\tname: 'uploadFileMultipartPart',\n\tdescription:\n\t\t'Upload one part of an in-progress multipart upload under the bound workspace root. Part bodies up to 25 MiB. Some object stores require each part except the last to be at least 5 MiB. Returns etag required for complete.',\n\tinputSchema: filesMultipartUploadPartInputSchema,\n\toutputSchema: filesMultipartUploadPartOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).multipartUploadPart(input)\n})\n\nexport const filesMultipartCompleteTool = defineTool({\n\tid: 'files-multipart-complete',\n\tname: 'completeFileMultipartUpload',\n\tdescription:\n\t\t'Complete a multipart upload under the bound workspace root by assembling uploaded parts (part_number + etag). Parts may be in any order.',\n\tinputSchema: filesMultipartCompleteInputSchema,\n\toutputSchema: filesMultipartCompleteOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).multipartComplete(input)\n})\n\nexport const filesMultipartAbortTool = defineTool({\n\tid: 'files-multipart-abort',\n\tname: 'abortFileMultipartUpload',\n\tdescription:\n\t\t'Abort an in-progress multipart upload under the bound workspace root and discard uploaded parts for that upload_id.',\n\tinputSchema: filesMultipartAbortInputSchema,\n\toutputSchema: filesMultipartAbortOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'both',\n\texecute: async (input, ctx) => FilesClient.fromContext(ctx).multipartAbort(input)\n})\n\nexport const filesModule = defineModule({\n\tid: 'files',\n\ttitle: 'Files',\n\tdescription:\n\t\t'Manage durable workspace files by relative path: list, search by name, inspect metadata, read bounded content, create ArtifactRefs, write, copy, move, delete, create folders, and use multipart upload. This is distinct from temporary sandbox files.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: filesAuthSchema },\n\tcategories: ['storage', 'files'],\n\tclassification: 'pii',\n\ttags: ['path-root', 's3'],\n\ttools: [\n\t\tfilesListTool,\n\t\tfilesSearchTool,\n\t\tfilesStatTool,\n\t\tfilesGetTool,\n\t\tfilesGetRangeTool,\n\t\tfilesReadLinesTool,\n\t\tfilesCreateArtifactTool,\n\t\tfilesPutTool,\n\t\tfilesDeleteTool,\n\t\tfilesCopyTool,\n\t\tfilesMoveTool,\n\t\tfilesMkdirTool,\n\t\tfilesMultipartStartTool,\n\t\tfilesMultipartUploadPartTool,\n\t\tfilesMultipartCompleteTool,\n\t\tfilesMultipartAbortTool\n\t]\n})\n"],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
2
+ import "../../index-CZX5OeOF.js";
3
+ import { t as ObjectArtifactStoreOptions } from "../../object-artifact-store-CMTzCm_G.js";
4
+ import { z } from "zod";
5
+ //#region src/modules/image/contracts.d.ts
6
+ declare const MAX_IMAGE_BYTES: number;
7
+ declare const MAX_IMAGE_DIMENSION = 16384;
8
+ declare const imageAuthSchema: z.ZodObject<{
9
+ storage: z.ZodObject<{
10
+ access_key_id: z.ZodString;
11
+ secret_access_key: z.ZodString;
12
+ region: z.ZodString;
13
+ bucket: z.ZodString;
14
+ endpoint: z.ZodOptional<z.ZodURL>;
15
+ session_token: z.ZodOptional<z.ZodString>;
16
+ key_prefix: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ }, z.core.$strip>;
19
+ declare const imageMetadataInputSchema: z.ZodObject<{
20
+ source: z.ZodObject<{
21
+ store: z.ZodEnum<{
22
+ host: "host";
23
+ object: "object";
24
+ }>;
25
+ key: z.ZodString;
26
+ media_type: z.ZodOptional<z.ZodString>;
27
+ filename: z.ZodOptional<z.ZodString>;
28
+ byte_length: z.ZodOptional<z.ZodInt>;
29
+ }, z.core.$strip>;
30
+ }, z.core.$strip>;
31
+ declare const imageMetadataSchema: z.ZodObject<{
32
+ format: z.ZodString;
33
+ media_type: z.ZodOptional<z.ZodString>;
34
+ width: z.ZodInt;
35
+ height: z.ZodInt;
36
+ space: z.ZodString;
37
+ channels: z.ZodInt;
38
+ density: z.ZodOptional<z.ZodNumber>;
39
+ has_alpha: z.ZodBoolean;
40
+ pages: z.ZodOptional<z.ZodInt>;
41
+ }, z.core.$strip>;
42
+ declare const imageTransformOutputSchema: z.ZodObject<{
43
+ result: z.ZodObject<{
44
+ store: z.ZodEnum<{
45
+ host: "host";
46
+ object: "object";
47
+ }>;
48
+ key: z.ZodString;
49
+ media_type: z.ZodOptional<z.ZodString>;
50
+ filename: z.ZodOptional<z.ZodString>;
51
+ byte_length: z.ZodOptional<z.ZodInt>;
52
+ }, z.core.$strip>;
53
+ image: z.ZodObject<{
54
+ format: z.ZodString;
55
+ media_type: z.ZodOptional<z.ZodString>;
56
+ width: z.ZodInt;
57
+ height: z.ZodInt;
58
+ space: z.ZodString;
59
+ channels: z.ZodInt;
60
+ density: z.ZodOptional<z.ZodNumber>;
61
+ has_alpha: z.ZodBoolean;
62
+ pages: z.ZodOptional<z.ZodInt>;
63
+ }, z.core.$strip>;
64
+ }, z.core.$strip>;
65
+ declare const imageResizeInputSchema: z.ZodObject<{
66
+ source: z.ZodObject<{
67
+ store: z.ZodEnum<{
68
+ host: "host";
69
+ object: "object";
70
+ }>;
71
+ key: z.ZodString;
72
+ media_type: z.ZodOptional<z.ZodString>;
73
+ filename: z.ZodOptional<z.ZodString>;
74
+ byte_length: z.ZodOptional<z.ZodInt>;
75
+ }, z.core.$strip>;
76
+ width: z.ZodOptional<z.ZodInt>;
77
+ height: z.ZodOptional<z.ZodInt>;
78
+ fit: z.ZodOptional<z.ZodEnum<{
79
+ contain: "contain";
80
+ cover: "cover";
81
+ fill: "fill";
82
+ inside: "inside";
83
+ outside: "outside";
84
+ }>>;
85
+ without_enlargement: z.ZodOptional<z.ZodBoolean>;
86
+ output_key: z.ZodString;
87
+ filename: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>;
89
+ declare const imageCropInputSchema: z.ZodObject<{
90
+ source: z.ZodObject<{
91
+ store: z.ZodEnum<{
92
+ host: "host";
93
+ object: "object";
94
+ }>;
95
+ key: z.ZodString;
96
+ media_type: z.ZodOptional<z.ZodString>;
97
+ filename: z.ZodOptional<z.ZodString>;
98
+ byte_length: z.ZodOptional<z.ZodInt>;
99
+ }, z.core.$strip>;
100
+ left: z.ZodInt;
101
+ top: z.ZodInt;
102
+ width: z.ZodInt;
103
+ height: z.ZodInt;
104
+ output_key: z.ZodString;
105
+ filename: z.ZodOptional<z.ZodString>;
106
+ }, z.core.$strip>;
107
+ declare const imageThumbnailInputSchema: z.ZodObject<{
108
+ source: z.ZodObject<{
109
+ store: z.ZodEnum<{
110
+ host: "host";
111
+ object: "object";
112
+ }>;
113
+ key: z.ZodString;
114
+ media_type: z.ZodOptional<z.ZodString>;
115
+ filename: z.ZodOptional<z.ZodString>;
116
+ byte_length: z.ZodOptional<z.ZodInt>;
117
+ }, z.core.$strip>;
118
+ width: z.ZodInt;
119
+ height: z.ZodInt;
120
+ output_key: z.ZodString;
121
+ filename: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$strip>;
123
+ declare const imageFormatSchema: z.ZodEnum<{
124
+ avif: "avif";
125
+ gif: "gif";
126
+ jpeg: "jpeg";
127
+ png: "png";
128
+ tiff: "tiff";
129
+ webp: "webp";
130
+ }>;
131
+ declare const imageConvertInputSchema: z.ZodObject<{
132
+ source: z.ZodObject<{
133
+ store: z.ZodEnum<{
134
+ host: "host";
135
+ object: "object";
136
+ }>;
137
+ key: z.ZodString;
138
+ media_type: z.ZodOptional<z.ZodString>;
139
+ filename: z.ZodOptional<z.ZodString>;
140
+ byte_length: z.ZodOptional<z.ZodInt>;
141
+ }, z.core.$strip>;
142
+ format: z.ZodEnum<{
143
+ avif: "avif";
144
+ gif: "gif";
145
+ jpeg: "jpeg";
146
+ png: "png";
147
+ tiff: "tiff";
148
+ webp: "webp";
149
+ }>;
150
+ quality: z.ZodOptional<z.ZodInt>;
151
+ output_key: z.ZodString;
152
+ filename: z.ZodOptional<z.ZodString>;
153
+ }, z.core.$strip>;
154
+ type ImageAuth = z.infer<typeof imageAuthSchema>;
155
+ type ImageMetadataInput = z.infer<typeof imageMetadataInputSchema>;
156
+ type ImageMetadata = z.infer<typeof imageMetadataSchema>;
157
+ type ImageResizeInput = z.infer<typeof imageResizeInputSchema>;
158
+ type ImageCropInput = z.infer<typeof imageCropInputSchema>;
159
+ type ImageThumbnailInput = z.infer<typeof imageThumbnailInputSchema>;
160
+ type ImageConvertInput = z.infer<typeof imageConvertInputSchema>;
161
+ type ImageTransformOutput = z.infer<typeof imageTransformOutputSchema>;
162
+ //#endregion
163
+ //#region src/modules/image/client.d.ts
164
+ type ImageClientOptions = ObjectArtifactStoreOptions;
165
+ declare class ImageClient {
166
+ #private;
167
+ constructor(auth: ImageAuth, options?: ImageClientOptions);
168
+ static fromContext(ctx: ToolContext): ImageClient;
169
+ static fromAuth(auth: ImageAuth, options?: ImageClientOptions): ImageClient;
170
+ metadata(input: ImageMetadataInput): Promise<ImageMetadata>;
171
+ resize(input: ImageResizeInput): Promise<ImageTransformOutput>;
172
+ crop(input: ImageCropInput): Promise<ImageTransformOutput>;
173
+ thumbnail(input: ImageThumbnailInput): Promise<ImageTransformOutput>;
174
+ convert(input: ImageConvertInput): Promise<ImageTransformOutput>;
175
+ }
176
+ //#endregion
177
+ //#region src/modules/image/module.d.ts
178
+ declare const imageMetadataTool: ToolDefinition<{
179
+ source: {
180
+ store: "host" | "object";
181
+ key: string;
182
+ media_type?: string | undefined;
183
+ filename?: string | undefined;
184
+ byte_length?: number | undefined;
185
+ };
186
+ }, {
187
+ format: string;
188
+ media_type?: string | undefined;
189
+ width: number;
190
+ height: number;
191
+ space: string;
192
+ channels: number;
193
+ density?: number | undefined;
194
+ has_alpha: boolean;
195
+ pages?: number | undefined;
196
+ }>;
197
+ declare const imageResizeTool: ToolDefinition<{
198
+ source: {
199
+ store: "host" | "object";
200
+ key: string;
201
+ media_type?: string | undefined;
202
+ filename?: string | undefined;
203
+ byte_length?: number | undefined;
204
+ };
205
+ width?: number | undefined;
206
+ height?: number | undefined;
207
+ fit?: "contain" | "cover" | "fill" | "inside" | "outside" | undefined;
208
+ without_enlargement?: boolean | undefined;
209
+ output_key: string;
210
+ filename?: string | undefined;
211
+ }, {
212
+ result: {
213
+ store: "host" | "object";
214
+ key: string;
215
+ media_type?: string | undefined;
216
+ filename?: string | undefined;
217
+ byte_length?: number | undefined;
218
+ };
219
+ image: {
220
+ format: string;
221
+ media_type?: string | undefined;
222
+ width: number;
223
+ height: number;
224
+ space: string;
225
+ channels: number;
226
+ density?: number | undefined;
227
+ has_alpha: boolean;
228
+ pages?: number | undefined;
229
+ };
230
+ }>;
231
+ declare const imageCropTool: ToolDefinition<{
232
+ source: {
233
+ store: "host" | "object";
234
+ key: string;
235
+ media_type?: string | undefined;
236
+ filename?: string | undefined;
237
+ byte_length?: number | undefined;
238
+ };
239
+ left: number;
240
+ top: number;
241
+ width: number;
242
+ height: number;
243
+ output_key: string;
244
+ filename?: string | undefined;
245
+ }, {
246
+ result: {
247
+ store: "host" | "object";
248
+ key: string;
249
+ media_type?: string | undefined;
250
+ filename?: string | undefined;
251
+ byte_length?: number | undefined;
252
+ };
253
+ image: {
254
+ format: string;
255
+ media_type?: string | undefined;
256
+ width: number;
257
+ height: number;
258
+ space: string;
259
+ channels: number;
260
+ density?: number | undefined;
261
+ has_alpha: boolean;
262
+ pages?: number | undefined;
263
+ };
264
+ }>;
265
+ declare const imageThumbnailTool: ToolDefinition<{
266
+ source: {
267
+ store: "host" | "object";
268
+ key: string;
269
+ media_type?: string | undefined;
270
+ filename?: string | undefined;
271
+ byte_length?: number | undefined;
272
+ };
273
+ width: number;
274
+ height: number;
275
+ output_key: string;
276
+ filename?: string | undefined;
277
+ }, {
278
+ result: {
279
+ store: "host" | "object";
280
+ key: string;
281
+ media_type?: string | undefined;
282
+ filename?: string | undefined;
283
+ byte_length?: number | undefined;
284
+ };
285
+ image: {
286
+ format: string;
287
+ media_type?: string | undefined;
288
+ width: number;
289
+ height: number;
290
+ space: string;
291
+ channels: number;
292
+ density?: number | undefined;
293
+ has_alpha: boolean;
294
+ pages?: number | undefined;
295
+ };
296
+ }>;
297
+ declare const imageConvertTool: ToolDefinition<{
298
+ source: {
299
+ store: "host" | "object";
300
+ key: string;
301
+ media_type?: string | undefined;
302
+ filename?: string | undefined;
303
+ byte_length?: number | undefined;
304
+ };
305
+ format: "avif" | "gif" | "jpeg" | "png" | "tiff" | "webp";
306
+ quality?: number | undefined;
307
+ output_key: string;
308
+ filename?: string | undefined;
309
+ }, {
310
+ result: {
311
+ store: "host" | "object";
312
+ key: string;
313
+ media_type?: string | undefined;
314
+ filename?: string | undefined;
315
+ byte_length?: number | undefined;
316
+ };
317
+ image: {
318
+ format: string;
319
+ media_type?: string | undefined;
320
+ width: number;
321
+ height: number;
322
+ space: string;
323
+ channels: number;
324
+ density?: number | undefined;
325
+ has_alpha: boolean;
326
+ pages?: number | undefined;
327
+ };
328
+ }>;
329
+ declare const imageModule: ModuleDefinition<{
330
+ storage: {
331
+ access_key_id: string;
332
+ secret_access_key: string;
333
+ region: string;
334
+ bucket: string;
335
+ endpoint?: string | undefined;
336
+ session_token?: string | undefined;
337
+ key_prefix?: string | undefined;
338
+ };
339
+ }>;
340
+ //#endregion
341
+ export { type ImageAuth, ImageClient, type ImageClientOptions, type ImageConvertInput, type ImageCropInput, type ImageMetadata, type ImageMetadataInput, type ImageResizeInput, type ImageThumbnailInput, type ImageTransformOutput, MAX_IMAGE_BYTES, MAX_IMAGE_DIMENSION, imageAuthSchema, imageConvertInputSchema, imageConvertTool, imageCropInputSchema, imageCropTool, imageFormatSchema, imageMetadataInputSchema, imageMetadataSchema, imageMetadataTool, imageModule, imageResizeInputSchema, imageResizeTool, imageThumbnailInputSchema, imageThumbnailTool, imageTransformOutputSchema };
342
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/modules/image/contracts.ts","../../../src/modules/image/client.ts","../../../src/modules/image/module.ts"],"mappings":";;;;;cAKa;cACA;cAEA,iBAAe,EAAA;;;;;;;;;;GAE1B,EAAA,KAAA;cAQW,0BAAwB,EAAA;;;;;;;;;;;GAAuB,EAAA,KAAA;cAE/C,qBAAmB,EAAA;;;;;;;;;;GAU9B,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;GAGrC,EAAA,KAAA;cAEW,wBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;GAgBhC,EAAA,KAAA;cAEU,sBAAoB,EAAA;;;;;;;;;;;;;;;;;GAQ/B,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;;;;GAMpC,EAAA,KAAA;cAEW,mBAAiB,EAAA;;;;;;;;cAEjB,yBAAuB,EAAA;;;;;;;;;;;;;;;;;;;;;;GAMlC,EAAA,KAAA;KAEU,YAAY,EAAE,aAAa;KAC3B,qBAAqB,EAAE,aAAa;KACpC,gBAAgB,EAAE,aAAa;KAC/B,mBAAmB,EAAE,aAAa;KAClC,iBAAiB,EAAE,aAAa;KAChC,sBAAsB,EAAE,aAAa;KACrC,oBAAoB,EAAE,aAAa;KACnC,uBAAuB,EAAE,aAAa;;;KCrEtC,qBAAqB;cAoBpB;;EAGZ,YAAY,MAAM,WAAW,UAAS;SAW/B,YAAY,KAAK,cAAc;SAO/B,SAAS,MAAM,WAAW,UAAS,qBAA0B;EAI9D,SAAS,OAAO,qBAAqB,QAAQ;EAQ7C,OAAO,OAAO,mBAAmB,QAAQ;EAYzC,KAAK,OAAO,iBAAiB,QAAQ;EAYrC,UAAU,OAAO,sBAAsB,QAAQ;EAO/C,QAAQ,OAAO,oBAAoB,QAAQ;;;;cC5FrC,mBAAA;;;;;;;;;;;;;;;;;;;cAaA,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaA,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaA,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaA,aAAA"}