@rnsk/toolkits 0.0.10 → 0.0.11

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 (292) hide show
  1. package/README.md +12 -2
  2. package/dist/index.d.ts +11 -1
  3. package/dist/index.js +21 -1
  4. package/dist/toolkits/bitbucket/tools/index.d.ts +5 -5
  5. package/dist/toolkits/bitbucket/tools/reports.d.ts +5 -5
  6. package/dist/toolkits/cloudflare/tools/create-list.d.ts +1 -1
  7. package/dist/toolkits/cloudflare/tools/create-zone.d.ts +1 -1
  8. package/dist/toolkits/cloudflare/tools/index.d.ts +4 -4
  9. package/dist/toolkits/cloudflare/tools/list-pools.d.ts +1 -1
  10. package/dist/toolkits/cloudflare/tools/list-zones.d.ts +1 -1
  11. package/dist/toolkits/convex/icon.d.ts +5 -0
  12. package/dist/toolkits/convex/icon.js +10 -0
  13. package/dist/toolkits/convex/manifest.d.ts +3 -0
  14. package/dist/toolkits/convex/manifest.js +33 -0
  15. package/dist/toolkits/convex/tools/client.d.ts +28 -0
  16. package/dist/toolkits/convex/tools/client.js +85 -0
  17. package/dist/toolkits/convex/tools/deploy-keys.d.ts +10 -0
  18. package/dist/toolkits/convex/tools/deploy-keys.js +46 -0
  19. package/dist/toolkits/convex/tools/deployments.d.ts +35 -0
  20. package/dist/toolkits/convex/tools/deployments.js +126 -0
  21. package/dist/toolkits/convex/tools/domains.d.ts +7 -0
  22. package/dist/toolkits/convex/tools/domains.js +29 -0
  23. package/dist/toolkits/convex/tools/functions.d.ts +14 -0
  24. package/dist/toolkits/convex/tools/functions.js +49 -0
  25. package/dist/toolkits/convex/tools/index.d.ts +176 -0
  26. package/dist/toolkits/convex/tools/index.js +145 -0
  27. package/dist/toolkits/convex/tools/logging.d.ts +5 -0
  28. package/dist/toolkits/convex/tools/logging.js +25 -0
  29. package/dist/toolkits/convex/tools/projects.d.ts +31 -0
  30. package/dist/toolkits/convex/tools/projects.js +111 -0
  31. package/dist/toolkits/convex/tools/teams.d.ts +12 -0
  32. package/dist/toolkits/convex/tools/teams.js +62 -0
  33. package/dist/toolkits/datadog/icon.d.ts +5 -0
  34. package/dist/toolkits/datadog/icon.js +6 -0
  35. package/dist/toolkits/datadog/manifest.d.ts +3 -0
  36. package/dist/toolkits/datadog/manifest.js +44 -0
  37. package/dist/toolkits/datadog/tools/api-keys.d.ts +21 -0
  38. package/dist/toolkits/datadog/tools/api-keys.js +42 -0
  39. package/dist/toolkits/datadog/tools/apm.d.ts +51 -0
  40. package/dist/toolkits/datadog/tools/apm.js +106 -0
  41. package/dist/toolkits/datadog/tools/client.d.ts +19 -0
  42. package/dist/toolkits/datadog/tools/client.js +81 -0
  43. package/dist/toolkits/datadog/tools/dashboards.d.ts +93 -0
  44. package/dist/toolkits/datadog/tools/dashboards.js +127 -0
  45. package/dist/toolkits/datadog/tools/events.d.ts +35 -0
  46. package/dist/toolkits/datadog/tools/events.js +56 -0
  47. package/dist/toolkits/datadog/tools/hosts.d.ts +49 -0
  48. package/dist/toolkits/datadog/tools/hosts.js +87 -0
  49. package/dist/toolkits/datadog/tools/incidents.d.ts +18 -0
  50. package/dist/toolkits/datadog/tools/incidents.js +34 -0
  51. package/dist/toolkits/datadog/tools/index.d.ts +999 -0
  52. package/dist/toolkits/datadog/tools/index.js +450 -0
  53. package/dist/toolkits/datadog/tools/integrations.d.ts +32 -0
  54. package/dist/toolkits/datadog/tools/integrations.js +47 -0
  55. package/dist/toolkits/datadog/tools/logs.d.ts +39 -0
  56. package/dist/toolkits/datadog/tools/logs.js +121 -0
  57. package/dist/toolkits/datadog/tools/metrics.d.ts +27 -0
  58. package/dist/toolkits/datadog/tools/metrics.js +83 -0
  59. package/dist/toolkits/datadog/tools/monitors.d.ts +95 -0
  60. package/dist/toolkits/datadog/tools/monitors.js +190 -0
  61. package/dist/toolkits/datadog/tools/oncall-notifications.d.ts +61 -0
  62. package/dist/toolkits/datadog/tools/oncall-notifications.js +155 -0
  63. package/dist/toolkits/datadog/tools/oncall-policies.d.ts +28 -0
  64. package/dist/toolkits/datadog/tools/oncall-policies.js +72 -0
  65. package/dist/toolkits/datadog/tools/oncall-schedules.d.ts +31 -0
  66. package/dist/toolkits/datadog/tools/oncall-schedules.js +87 -0
  67. package/dist/toolkits/datadog/tools/oncall-teams.d.ts +14 -0
  68. package/dist/toolkits/datadog/tools/oncall-teams.js +54 -0
  69. package/dist/toolkits/datadog/tools/slos.d.ts +43 -0
  70. package/dist/toolkits/datadog/tools/slos.js +62 -0
  71. package/dist/toolkits/datadog/tools/synthetics.d.ts +58 -0
  72. package/dist/toolkits/datadog/tools/synthetics.js +90 -0
  73. package/dist/toolkits/datadog/tools/usage.d.ts +7 -0
  74. package/dist/toolkits/datadog/tools/usage.js +25 -0
  75. package/dist/toolkits/datadog/tools/users.d.ts +35 -0
  76. package/dist/toolkits/datadog/tools/users.js +66 -0
  77. package/dist/toolkits/dev-to/icon.d.ts +5 -0
  78. package/dist/toolkits/dev-to/icon.js +10 -0
  79. package/dist/toolkits/dev-to/manifest.d.ts +3 -0
  80. package/dist/toolkits/dev-to/manifest.js +34 -0
  81. package/dist/toolkits/dev-to/tools/articles.d.ts +78 -0
  82. package/dist/toolkits/dev-to/tools/articles.js +262 -0
  83. package/dist/toolkits/dev-to/tools/client.d.ts +25 -0
  84. package/dist/toolkits/dev-to/tools/client.js +65 -0
  85. package/dist/toolkits/dev-to/tools/community.d.ts +61 -0
  86. package/dist/toolkits/dev-to/tools/community.js +244 -0
  87. package/dist/toolkits/dev-to/tools/index.d.ts +202 -0
  88. package/dist/toolkits/dev-to/tools/index.js +37 -0
  89. package/dist/toolkits/dev-to/tools/listings.d.ts +26 -0
  90. package/dist/toolkits/dev-to/tools/listings.js +92 -0
  91. package/dist/toolkits/discord/tools/applications.d.ts +5 -5
  92. package/dist/toolkits/discord/tools/index.d.ts +5 -5
  93. package/dist/toolkits/figma/tools/create-modify-delete-variables.d.ts +1 -1
  94. package/dist/toolkits/figma/tools/get-file-nodes.d.ts +1 -1
  95. package/dist/toolkits/figma/tools/index.d.ts +3 -3
  96. package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
  97. package/dist/toolkits/google-analytics/tools/reports.d.ts +9 -9
  98. package/dist/toolkits/google-classroom/tools/index.d.ts +7 -7
  99. package/dist/toolkits/google-classroom/tools/invitations.d.ts +2 -2
  100. package/dist/toolkits/google-classroom/tools/misc.d.ts +1 -1
  101. package/dist/toolkits/google-classroom/tools/roster.d.ts +5 -5
  102. package/dist/toolkits/google-search-console/tools/index.d.ts +2 -2
  103. package/dist/toolkits/google-search-console/tools/search-analytics-query.d.ts +2 -2
  104. package/dist/toolkits/hostinger/tools/index.d.ts +1 -1
  105. package/dist/toolkits/hostinger/tools/whois.d.ts +1 -1
  106. package/dist/toolkits/hugging-face/tools/datasets-viewer.d.ts +1 -1
  107. package/dist/toolkits/hugging-face/tools/datasets.d.ts +1 -1
  108. package/dist/toolkits/hugging-face/tools/index.d.ts +1 -1
  109. package/dist/toolkits/hugging-face/tools/models.d.ts +1 -1
  110. package/dist/toolkits/hugging-face/tools/repos.d.ts +1 -1
  111. package/dist/toolkits/hugging-face/tools/spaces.d.ts +1 -1
  112. package/dist/toolkits/jira/tools/index.d.ts +4 -4
  113. package/dist/toolkits/jira/tools/meta.d.ts +2 -2
  114. package/dist/toolkits/jira/tools/users.d.ts +3 -3
  115. package/dist/toolkits/kaggle/icon.d.ts +5 -0
  116. package/dist/toolkits/kaggle/icon.js +6 -0
  117. package/dist/toolkits/kaggle/manifest.d.ts +3 -0
  118. package/dist/toolkits/kaggle/manifest.js +32 -0
  119. package/dist/toolkits/kaggle/tools/client.d.ts +10 -0
  120. package/dist/toolkits/kaggle/tools/client.js +94 -0
  121. package/dist/toolkits/kaggle/tools/competitions.d.ts +48 -0
  122. package/dist/toolkits/kaggle/tools/competitions.js +109 -0
  123. package/dist/toolkits/kaggle/tools/config.d.ts +110 -0
  124. package/dist/toolkits/kaggle/tools/config.js +256 -0
  125. package/dist/toolkits/kaggle/tools/datasets.d.ts +88 -0
  126. package/dist/toolkits/kaggle/tools/datasets.js +161 -0
  127. package/dist/toolkits/kaggle/tools/index.d.ts +482 -0
  128. package/dist/toolkits/kaggle/tools/index.js +53 -0
  129. package/dist/toolkits/kaggle/tools/kernels.d.ts +62 -0
  130. package/dist/toolkits/kaggle/tools/kernels.js +121 -0
  131. package/dist/toolkits/kaggle/tools/model_instance_files.d.ts +11 -0
  132. package/dist/toolkits/kaggle/tools/model_instance_files.js +23 -0
  133. package/dist/toolkits/kaggle/tools/model_instances.d.ts +8 -0
  134. package/dist/toolkits/kaggle/tools/model_instances.js +20 -0
  135. package/dist/toolkits/kaggle/tools/models.d.ts +14 -0
  136. package/dist/toolkits/kaggle/tools/models.js +33 -0
  137. package/dist/toolkits/nasa/icon.d.ts +5 -0
  138. package/dist/toolkits/nasa/icon.js +56 -0
  139. package/dist/toolkits/nasa/manifest.d.ts +3 -0
  140. package/dist/toolkits/nasa/manifest.js +49 -0
  141. package/dist/toolkits/nasa/tools/agage.d.ts +60 -0
  142. package/dist/toolkits/nasa/tools/agage.js +176 -0
  143. package/dist/toolkits/nasa/tools/client.d.ts +95 -0
  144. package/dist/toolkits/nasa/tools/client.js +337 -0
  145. package/dist/toolkits/nasa/tools/cmr.d.ts +268 -0
  146. package/dist/toolkits/nasa/tools/cmr.js +984 -0
  147. package/dist/toolkits/nasa/tools/donki.d.ts +63 -0
  148. package/dist/toolkits/nasa/tools/donki.js +301 -0
  149. package/dist/toolkits/nasa/tools/eonet.d.ts +74 -0
  150. package/dist/toolkits/nasa/tools/eonet.js +279 -0
  151. package/dist/toolkits/nasa/tools/icesat2.d.ts +25 -0
  152. package/dist/toolkits/nasa/tools/icesat2.js +97 -0
  153. package/dist/toolkits/nasa/tools/imagery.d.ts +36 -0
  154. package/dist/toolkits/nasa/tools/imagery.js +138 -0
  155. package/dist/toolkits/nasa/tools/index.d.ts +1063 -0
  156. package/dist/toolkits/nasa/tools/index.js +865 -0
  157. package/dist/toolkits/nasa/tools/neo.d.ts +15 -0
  158. package/dist/toolkits/nasa/tools/neo.js +75 -0
  159. package/dist/toolkits/nasa/tools/ntrs.d.ts +152 -0
  160. package/dist/toolkits/nasa/tools/ntrs.js +292 -0
  161. package/dist/toolkits/nasa/tools/osdr.d.ts +72 -0
  162. package/dist/toolkits/nasa/tools/osdr.js +290 -0
  163. package/dist/toolkits/nasa/tools/planetary.d.ts +58 -0
  164. package/dist/toolkits/nasa/tools/planetary.js +312 -0
  165. package/dist/toolkits/nasa/tools/power.d.ts +52 -0
  166. package/dist/toolkits/nasa/tools/power.js +213 -0
  167. package/dist/toolkits/nasa/tools/ssc.d.ts +44 -0
  168. package/dist/toolkits/nasa/tools/ssc.js +92 -0
  169. package/dist/toolkits/nasa/tools/tolnet.d.ts +84 -0
  170. package/dist/toolkits/nasa/tools/tolnet.js +254 -0
  171. package/dist/toolkits/neo4j/tools/analytics.d.ts +1 -1
  172. package/dist/toolkits/neo4j/tools/index.d.ts +3 -3
  173. package/dist/toolkits/neo4j/tools/instances.d.ts +2 -2
  174. package/dist/toolkits/neon/tools/auth.d.ts +4 -4
  175. package/dist/toolkits/neon/tools/dataapi.d.ts +1 -1
  176. package/dist/toolkits/neon/tools/index.d.ts +7 -7
  177. package/dist/toolkits/neon/tools/projects.d.ts +2 -2
  178. package/dist/toolkits/new-relic/icon.d.ts +5 -0
  179. package/dist/toolkits/new-relic/icon.js +6 -0
  180. package/dist/toolkits/new-relic/manifest.d.ts +3 -0
  181. package/dist/toolkits/new-relic/manifest.js +41 -0
  182. package/dist/toolkits/new-relic/tools/admin.d.ts +310 -0
  183. package/dist/toolkits/new-relic/tools/admin.js +282 -0
  184. package/dist/toolkits/new-relic/tools/alert-policies.d.ts +74 -0
  185. package/dist/toolkits/new-relic/tools/alert-policies.js +136 -0
  186. package/dist/toolkits/new-relic/tools/apm.d.ts +129 -0
  187. package/dist/toolkits/new-relic/tools/apm.js +228 -0
  188. package/dist/toolkits/new-relic/tools/client.d.ts +62 -0
  189. package/dist/toolkits/new-relic/tools/client.js +167 -0
  190. package/dist/toolkits/new-relic/tools/conditions.d.ts +190 -0
  191. package/dist/toolkits/new-relic/tools/conditions.js +265 -0
  192. package/dist/toolkits/new-relic/tools/config.d.ts +73 -0
  193. package/dist/toolkits/new-relic/tools/config.js +131 -0
  194. package/dist/toolkits/new-relic/tools/dashboards.d.ts +204 -0
  195. package/dist/toolkits/new-relic/tools/dashboards.js +159 -0
  196. package/dist/toolkits/new-relic/tools/entities.d.ts +160 -0
  197. package/dist/toolkits/new-relic/tools/entities.js +218 -0
  198. package/dist/toolkits/new-relic/tools/index.d.ts +23 -0
  199. package/dist/toolkits/new-relic/tools/index.js +179 -0
  200. package/dist/toolkits/new-relic/tools/ingest.d.ts +31 -0
  201. package/dist/toolkits/new-relic/tools/ingest.js +80 -0
  202. package/dist/toolkits/new-relic/tools/notifications.d.ts +186 -0
  203. package/dist/toolkits/new-relic/tools/notifications.js +232 -0
  204. package/dist/toolkits/new-relic/tools/nrql-conditions.d.ts +105 -0
  205. package/dist/toolkits/new-relic/tools/nrql-conditions.js +136 -0
  206. package/dist/toolkits/new-relic/tools/nrql.d.ts +38 -0
  207. package/dist/toolkits/new-relic/tools/nrql.js +99 -0
  208. package/dist/toolkits/new-relic/tools/synthetics.d.ts +176 -0
  209. package/dist/toolkits/new-relic/tools/synthetics.js +246 -0
  210. package/dist/toolkits/notebook-lm/icon.d.ts +5 -0
  211. package/dist/toolkits/notebook-lm/icon.js +6 -0
  212. package/dist/toolkits/notebook-lm/manifest.d.ts +3 -0
  213. package/dist/toolkits/notebook-lm/manifest.js +44 -0
  214. package/dist/toolkits/notebook-lm/tools/add-text-sources.d.ts +36 -0
  215. package/dist/toolkits/notebook-lm/tools/add-text-sources.js +51 -0
  216. package/dist/toolkits/notebook-lm/tools/create-audio-overview.d.ts +47 -0
  217. package/dist/toolkits/notebook-lm/tools/create-audio-overview.js +55 -0
  218. package/dist/toolkits/notebook-lm/tools/create-notebook.d.ts +52 -0
  219. package/dist/toolkits/notebook-lm/tools/create-notebook.js +49 -0
  220. package/dist/toolkits/notebook-lm/tools/delete-audio-overview.d.ts +33 -0
  221. package/dist/toolkits/notebook-lm/tools/delete-audio-overview.js +46 -0
  222. package/dist/toolkits/notebook-lm/tools/delete-notebooks.d.ts +32 -0
  223. package/dist/toolkits/notebook-lm/tools/delete-notebooks.js +46 -0
  224. package/dist/toolkits/notebook-lm/tools/delete-sources.d.ts +33 -0
  225. package/dist/toolkits/notebook-lm/tools/delete-sources.js +47 -0
  226. package/dist/toolkits/notebook-lm/tools/get-notebook.d.ts +52 -0
  227. package/dist/toolkits/notebook-lm/tools/get-notebook.js +45 -0
  228. package/dist/toolkits/notebook-lm/tools/get-source.d.ts +53 -0
  229. package/dist/toolkits/notebook-lm/tools/get-source.js +47 -0
  230. package/dist/toolkits/notebook-lm/tools/index.d.ts +516 -0
  231. package/dist/toolkits/notebook-lm/tools/index.js +93 -0
  232. package/dist/toolkits/notebook-lm/tools/list-recent-notebooks.d.ts +32 -0
  233. package/dist/toolkits/notebook-lm/tools/list-recent-notebooks.js +41 -0
  234. package/dist/toolkits/notebook-lm/tools/share-notebook.d.ts +48 -0
  235. package/dist/toolkits/notebook-lm/tools/share-notebook.js +57 -0
  236. package/dist/toolkits/notebook-lm/tools/upload-source-file.d.ts +40 -0
  237. package/dist/toolkits/notebook-lm/tools/upload-source-file.js +62 -0
  238. package/dist/toolkits/notebook-lm/tools/utils.d.ts +15 -0
  239. package/dist/toolkits/notebook-lm/tools/utils.js +46 -0
  240. package/dist/toolkits/npm/icon.d.ts +5 -0
  241. package/dist/toolkits/npm/icon.js +11 -0
  242. package/dist/toolkits/npm/manifest.d.ts +3 -0
  243. package/dist/toolkits/npm/manifest.js +35 -0
  244. package/dist/toolkits/npm/tools/client.d.ts +19 -0
  245. package/dist/toolkits/npm/tools/client.js +64 -0
  246. package/dist/toolkits/npm/tools/downloads.d.ts +19 -0
  247. package/dist/toolkits/npm/tools/downloads.js +39 -0
  248. package/dist/toolkits/npm/tools/index.d.ts +14 -0
  249. package/dist/toolkits/npm/tools/index.js +24 -0
  250. package/dist/toolkits/npm/tools/registry.d.ts +24 -0
  251. package/dist/toolkits/npm/tools/registry.js +58 -0
  252. package/dist/toolkits/npm/tools/security.d.ts +9 -0
  253. package/dist/toolkits/npm/tools/security.js +29 -0
  254. package/dist/toolkits/slack/tools/admin-users.d.ts +1 -1
  255. package/dist/toolkits/slack/tools/slack-lists.d.ts +3 -3
  256. package/dist/toolkits/snowflake/icon.d.ts +5 -0
  257. package/dist/toolkits/snowflake/icon.js +6 -0
  258. package/dist/toolkits/snowflake/manifest.d.ts +3 -0
  259. package/dist/toolkits/snowflake/manifest.js +32 -0
  260. package/dist/toolkits/snowflake/tools/catalog.d.ts +56 -0
  261. package/dist/toolkits/snowflake/tools/catalog.js +123 -0
  262. package/dist/toolkits/snowflake/tools/client.d.ts +53 -0
  263. package/dist/toolkits/snowflake/tools/client.js +145 -0
  264. package/dist/toolkits/snowflake/tools/index.d.ts +14 -0
  265. package/dist/toolkits/snowflake/tools/index.js +28 -0
  266. package/dist/toolkits/snowflake/tools/statements.d.ts +27 -0
  267. package/dist/toolkits/snowflake/tools/statements.js +84 -0
  268. package/dist/toolkits/snowflake/tools/status.d.ts +22 -0
  269. package/dist/toolkits/snowflake/tools/status.js +54 -0
  270. package/dist/toolkits/telegram/icon.d.ts +5 -0
  271. package/dist/toolkits/telegram/icon.js +6 -0
  272. package/dist/toolkits/telegram/manifest.d.ts +3 -0
  273. package/dist/toolkits/telegram/manifest.js +34 -0
  274. package/dist/toolkits/telegram/tools/bot.d.ts +13 -0
  275. package/dist/toolkits/telegram/tools/bot.js +23 -0
  276. package/dist/toolkits/telegram/tools/chats.d.ts +22 -0
  277. package/dist/toolkits/telegram/tools/chats.js +46 -0
  278. package/dist/toolkits/telegram/tools/client.d.ts +12 -0
  279. package/dist/toolkits/telegram/tools/client.js +46 -0
  280. package/dist/toolkits/telegram/tools/index.d.ts +15 -0
  281. package/dist/toolkits/telegram/tools/index.js +31 -0
  282. package/dist/toolkits/telegram/tools/messages.d.ts +86 -0
  283. package/dist/toolkits/telegram/tools/messages.js +134 -0
  284. package/dist/toolkits/telegram/tools/updates.d.ts +23 -0
  285. package/dist/toolkits/telegram/tools/updates.js +54 -0
  286. package/dist/toolkits/youtube/tools/get-channel-activities.d.ts +1 -1
  287. package/dist/toolkits/youtube/tools/index.d.ts +5 -5
  288. package/dist/toolkits/youtube/tools/list-channel-sections.d.ts +1 -1
  289. package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
  290. package/dist/toolkits/youtube/tools/subscribe-channel.d.ts +1 -1
  291. package/dist/toolkits/youtube/tools/unsubscribe-channel.d.ts +1 -1
  292. package/package.json +2 -3
@@ -0,0 +1,244 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { devToRequest, toDevToError, requireApiKey } from './client.js';
5
+ const apiKeyField = z.string().optional().describe('Injected by system; do not provide');
6
+ const paginationFields = {
7
+ page: z.number().int().min(1).optional().describe('Page number for pagination'),
8
+ perPage: z.number().int().min(1).optional().describe('Number of items per page'),
9
+ };
10
+ export const devToGetComment = tool({
11
+ description: 'Get a single comment and its nested replies by comment ID code (e.g. "32k5a").',
12
+ inputSchema: z.object({
13
+ devToApiKey: apiKeyField,
14
+ id: z.string().describe('The comment ID code'),
15
+ }),
16
+ execute: async ({ devToApiKey, id }) => {
17
+ try {
18
+ return await devToRequest(devToApiKey, 'GET', `/comments/${encodeURIComponent(id)}`);
19
+ }
20
+ catch (error) {
21
+ return toDevToError(error, 'Failed to get comment');
22
+ }
23
+ },
24
+ });
25
+ export const devToListComments = tool({
26
+ description: 'List threaded comments for an article or a podcast episode. Provide articleId or podcastEpisodeId, not both.',
27
+ inputSchema: z.object({
28
+ devToApiKey: apiKeyField,
29
+ articleId: z.number().int().optional().describe('Article ID to get comments for'),
30
+ podcastEpisodeId: z.number().int().optional().describe('Podcast episode ID to get comments for'),
31
+ }),
32
+ execute: async ({ devToApiKey, articleId, podcastEpisodeId }) => {
33
+ try {
34
+ const query = {};
35
+ if (articleId !== undefined)
36
+ query.a_id = articleId;
37
+ if (podcastEpisodeId !== undefined)
38
+ query.p_id = podcastEpisodeId;
39
+ return await devToRequest(devToApiKey, 'GET', '/comments', { query });
40
+ }
41
+ catch (error) {
42
+ return toDevToError(error, 'Failed to list comments');
43
+ }
44
+ },
45
+ });
46
+ export const devToGetCurrentUser = tool({
47
+ description: "Get the authenticated user's profile information.",
48
+ inputSchema: z.object({
49
+ devToApiKey: apiKeyField,
50
+ }),
51
+ execute: async ({ devToApiKey }) => {
52
+ const missing = requireApiKey(devToApiKey);
53
+ if (missing)
54
+ return missing;
55
+ try {
56
+ return await devToRequest(devToApiKey, 'GET', '/users/me');
57
+ }
58
+ catch (error) {
59
+ return toDevToError(error, 'Failed to get current user');
60
+ }
61
+ },
62
+ });
63
+ export const devToGetUser = tool({
64
+ description: 'Get a single user by numeric ID or username.',
65
+ inputSchema: z.object({
66
+ devToApiKey: apiKeyField,
67
+ id: z.string().describe("Numeric user ID (e.g. '1') or username (e.g. 'ben')"),
68
+ }),
69
+ execute: async ({ devToApiKey, id }) => {
70
+ try {
71
+ return await devToRequest(devToApiKey, 'GET', `/users/${encodeURIComponent(id)}`);
72
+ }
73
+ catch (error) {
74
+ return toDevToError(error, 'Failed to get user');
75
+ }
76
+ },
77
+ });
78
+ export const devToGetOrganization = tool({
79
+ description: 'Get a single organization by username, including summary, links, and profile image.',
80
+ inputSchema: z.object({
81
+ devToApiKey: apiKeyField,
82
+ username: z.string().describe("The organization's username (e.g. 'devteam')"),
83
+ }),
84
+ execute: async ({ devToApiKey, username }) => {
85
+ try {
86
+ return await devToRequest(devToApiKey, 'GET', `/organizations/${encodeURIComponent(username)}`);
87
+ }
88
+ catch (error) {
89
+ return toDevToError(error, 'Failed to get organization');
90
+ }
91
+ },
92
+ });
93
+ export const devToListOrganizationUsers = tool({
94
+ description: 'List member users of a specific organization.',
95
+ inputSchema: z.object({
96
+ devToApiKey: apiKeyField,
97
+ username: z.string().describe("The organization's username"),
98
+ ...paginationFields,
99
+ }),
100
+ execute: async ({ devToApiKey, username, perPage, ...rest }) => {
101
+ try {
102
+ const query = { ...rest };
103
+ if (perPage !== undefined)
104
+ query.per_page = perPage;
105
+ return await devToRequest(devToApiKey, 'GET', `/organizations/${encodeURIComponent(username)}/users`, {
106
+ query,
107
+ });
108
+ }
109
+ catch (error) {
110
+ return toDevToError(error, 'Failed to list organization users');
111
+ }
112
+ },
113
+ });
114
+ export const devToGetProfileImage = tool({
115
+ description: 'Get the full-size and 90px profile image URLs for a user or organization by username.',
116
+ inputSchema: z.object({
117
+ devToApiKey: apiKeyField,
118
+ username: z.string().describe('The username of the user or organization'),
119
+ }),
120
+ execute: async ({ devToApiKey, username }) => {
121
+ try {
122
+ return await devToRequest(devToApiKey, 'GET', `/profile_images/${encodeURIComponent(username)}`);
123
+ }
124
+ catch (error) {
125
+ return toDevToError(error, 'Failed to get profile image');
126
+ }
127
+ },
128
+ });
129
+ export const devToListTags = tool({
130
+ description: 'List tags used on DEV Community ordered by popularity. Useful for discovery and autocomplete.',
131
+ inputSchema: z.object({
132
+ devToApiKey: apiKeyField,
133
+ ...paginationFields,
134
+ }),
135
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
136
+ try {
137
+ const query = { ...rest };
138
+ if (perPage !== undefined)
139
+ query.per_page = perPage;
140
+ return await devToRequest(devToApiKey, 'GET', '/tags', { query });
141
+ }
142
+ catch (error) {
143
+ return toDevToError(error, 'Failed to list tags');
144
+ }
145
+ },
146
+ });
147
+ export const devToListFollowedTags = tool({
148
+ description: 'List tags followed by the authenticated user, with IDs and points.',
149
+ inputSchema: z.object({
150
+ devToApiKey: apiKeyField,
151
+ }),
152
+ execute: async ({ devToApiKey }) => {
153
+ const missing = requireApiKey(devToApiKey);
154
+ if (missing)
155
+ return missing;
156
+ try {
157
+ return await devToRequest(devToApiKey, 'GET', '/follows/tags');
158
+ }
159
+ catch (error) {
160
+ return toDevToError(error, 'Failed to list followed tags');
161
+ }
162
+ },
163
+ });
164
+ export const devToListFollowers = tool({
165
+ description: 'List users who follow the authenticated user. 80 followers per page by default.',
166
+ inputSchema: z.object({
167
+ devToApiKey: apiKeyField,
168
+ sort: z.string().optional().describe("Sort order, e.g. 'created_at' for newest first"),
169
+ ...paginationFields,
170
+ }),
171
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
172
+ const missing = requireApiKey(devToApiKey);
173
+ if (missing)
174
+ return missing;
175
+ try {
176
+ const query = { ...rest };
177
+ if (perPage !== undefined)
178
+ query.per_page = perPage;
179
+ return await devToRequest(devToApiKey, 'GET', '/followers/users', { query });
180
+ }
181
+ catch (error) {
182
+ return toDevToError(error, 'Failed to list followers');
183
+ }
184
+ },
185
+ });
186
+ export const devToListPodcastEpisodes = tool({
187
+ description: 'List podcast episodes, optionally filtered by podcast username.',
188
+ inputSchema: z.object({
189
+ devToApiKey: apiKeyField,
190
+ username: z.string().optional().describe('Filter by podcast username/slug (e.g. codenewbie)'),
191
+ ...paginationFields,
192
+ }),
193
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
194
+ try {
195
+ const query = { ...rest };
196
+ if (perPage !== undefined)
197
+ query.per_page = perPage;
198
+ return await devToRequest(devToApiKey, 'GET', '/podcast_episodes', { query });
199
+ }
200
+ catch (error) {
201
+ return toDevToError(error, 'Failed to list podcast episodes');
202
+ }
203
+ },
204
+ });
205
+ export const devToListReadingList = tool({
206
+ description: "List articles saved to the authenticated user's reading list.",
207
+ inputSchema: z.object({
208
+ devToApiKey: apiKeyField,
209
+ ...paginationFields,
210
+ }),
211
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
212
+ const missing = requireApiKey(devToApiKey);
213
+ if (missing)
214
+ return missing;
215
+ try {
216
+ const query = { ...rest };
217
+ if (perPage !== undefined)
218
+ query.per_page = perPage;
219
+ return await devToRequest(devToApiKey, 'GET', '/readinglist', { query });
220
+ }
221
+ catch (error) {
222
+ return toDevToError(error, 'Failed to list reading list');
223
+ }
224
+ },
225
+ });
226
+ export const devToListVideos = tool({
227
+ description: 'List articles on DEV Community that contain videos.',
228
+ inputSchema: z.object({
229
+ devToApiKey: apiKeyField,
230
+ ...paginationFields,
231
+ }),
232
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
233
+ try {
234
+ const query = { ...rest };
235
+ if (perPage !== undefined)
236
+ query.per_page = perPage;
237
+ return await devToRequest(devToApiKey, 'GET', '/videos', { query });
238
+ }
239
+ catch (error) {
240
+ return toDevToError(error, 'Failed to list videos');
241
+ }
242
+ },
243
+ });
244
+ //# sourceMappingURL=community.js.map
@@ -0,0 +1,202 @@
1
+ import { devToCreateArticle, devToGetArticle, devToGetArticleByPath, devToListArticles, devToListLatestArticles, devToListUserArticles, devToListUserPublishedArticles, devToListUserUnpublishedArticles, devToListUserAllArticles, devToListOrganizationArticles, devToUpdateArticle } from './articles.js';
2
+ import { devToGetComment, devToListComments, devToGetCurrentUser, devToGetUser, devToGetOrganization, devToListOrganizationUsers, devToGetProfileImage, devToListTags, devToListFollowedTags, devToListFollowers, devToListPodcastEpisodes, devToListReadingList, devToListVideos } from './community.js';
3
+ import { devToGetListing, devToListListings, devToListListingsByCategory, devToUpdateListing } from './listings.js';
4
+ export { devToCreateArticle, devToGetArticle, devToGetArticleByPath, devToListArticles, devToListLatestArticles, devToListUserArticles, devToListUserPublishedArticles, devToListUserUnpublishedArticles, devToListUserAllArticles, devToListOrganizationArticles, devToUpdateArticle, devToGetComment, devToListComments, devToGetCurrentUser, devToGetUser, devToGetOrganization, devToListOrganizationUsers, devToGetProfileImage, devToListTags, devToListFollowedTags, devToListFollowers, devToListPodcastEpisodes, devToListReadingList, devToListVideos, devToGetListing, devToListListings, devToListListingsByCategory, devToUpdateListing, };
5
+ export declare const devToTools: ({
6
+ name: string;
7
+ description: string;
8
+ tool: import("ai").Tool<{
9
+ title: string;
10
+ bodyMarkdown: string;
11
+ description?: string | undefined;
12
+ published?: boolean | undefined;
13
+ tags?: string[] | undefined;
14
+ series?: string | undefined;
15
+ organizationId?: number | undefined;
16
+ devToApiKey?: string | undefined;
17
+ mainImage?: string | undefined;
18
+ canonicalUrl?: string | undefined;
19
+ }, any>;
20
+ requiredAuth: "devToApiKey";
21
+ scope: "write";
22
+ } | {
23
+ name: string;
24
+ description: string;
25
+ tool: import("ai").Tool<{
26
+ id: number;
27
+ devToApiKey?: string | undefined;
28
+ }, any>;
29
+ scope: "read";
30
+ requiredAuth?: undefined;
31
+ } | {
32
+ name: string;
33
+ description: string;
34
+ tool: import("ai").Tool<{
35
+ username: string;
36
+ slug: string;
37
+ devToApiKey?: string | undefined;
38
+ }, any>;
39
+ scope: "read";
40
+ requiredAuth?: undefined;
41
+ } | {
42
+ name: string;
43
+ description: string;
44
+ tool: import("ai").Tool<{
45
+ perPage?: number | undefined;
46
+ page?: number | undefined;
47
+ username?: string | undefined;
48
+ state?: "all" | "rising" | "fresh" | undefined;
49
+ tags?: string | undefined;
50
+ collectionId?: number | undefined;
51
+ tag?: string | undefined;
52
+ top?: number | undefined;
53
+ devToApiKey?: string | undefined;
54
+ tagsExclude?: string | undefined;
55
+ }, any>;
56
+ scope: "read";
57
+ requiredAuth?: undefined;
58
+ } | {
59
+ name: string;
60
+ description: string;
61
+ tool: import("ai").Tool<{
62
+ perPage?: number | undefined;
63
+ page?: number | undefined;
64
+ devToApiKey?: string | undefined;
65
+ }, any>;
66
+ scope: "read";
67
+ requiredAuth?: undefined;
68
+ } | {
69
+ name: string;
70
+ description: string;
71
+ tool: import("ai").Tool<{
72
+ perPage?: number | undefined;
73
+ page?: number | undefined;
74
+ devToApiKey?: string | undefined;
75
+ }, any>;
76
+ requiredAuth: "devToApiKey";
77
+ scope: "read";
78
+ } | {
79
+ name: string;
80
+ description: string;
81
+ tool: import("ai").Tool<{
82
+ username: string;
83
+ perPage?: number | undefined;
84
+ page?: number | undefined;
85
+ devToApiKey?: string | undefined;
86
+ }, any>;
87
+ scope: "read";
88
+ requiredAuth?: undefined;
89
+ } | {
90
+ name: string;
91
+ description: string;
92
+ tool: import("ai").Tool<{
93
+ id: number;
94
+ description?: string | undefined;
95
+ title?: string | undefined;
96
+ published?: boolean | undefined;
97
+ tags?: string[] | undefined;
98
+ series?: string | undefined;
99
+ organizationId?: number | undefined;
100
+ devToApiKey?: string | undefined;
101
+ bodyMarkdown?: string | undefined;
102
+ mainImage?: string | undefined;
103
+ canonicalUrl?: string | undefined;
104
+ }, any>;
105
+ requiredAuth: "devToApiKey";
106
+ scope: "write";
107
+ } | {
108
+ name: string;
109
+ description: string;
110
+ tool: import("ai").Tool<{
111
+ id: string;
112
+ devToApiKey?: string | undefined;
113
+ }, any>;
114
+ scope: "read";
115
+ requiredAuth?: undefined;
116
+ } | {
117
+ name: string;
118
+ description: string;
119
+ tool: import("ai").Tool<{
120
+ articleId?: number | undefined;
121
+ devToApiKey?: string | undefined;
122
+ podcastEpisodeId?: number | undefined;
123
+ }, any>;
124
+ scope: "read";
125
+ requiredAuth?: undefined;
126
+ } | {
127
+ name: string;
128
+ description: string;
129
+ tool: import("ai").Tool<{
130
+ devToApiKey?: string | undefined;
131
+ }, any>;
132
+ requiredAuth: "devToApiKey";
133
+ scope: "read";
134
+ } | {
135
+ name: string;
136
+ description: string;
137
+ tool: import("ai").Tool<{
138
+ username: string;
139
+ devToApiKey?: string | undefined;
140
+ }, any>;
141
+ scope: "read";
142
+ requiredAuth?: undefined;
143
+ } | {
144
+ name: string;
145
+ description: string;
146
+ tool: import("ai").Tool<{
147
+ sort?: string | undefined;
148
+ perPage?: number | undefined;
149
+ page?: number | undefined;
150
+ devToApiKey?: string | undefined;
151
+ }, any>;
152
+ requiredAuth: "devToApiKey";
153
+ scope: "read";
154
+ } | {
155
+ name: string;
156
+ description: string;
157
+ tool: import("ai").Tool<{
158
+ perPage?: number | undefined;
159
+ page?: number | undefined;
160
+ username?: string | undefined;
161
+ devToApiKey?: string | undefined;
162
+ }, any>;
163
+ scope: "read";
164
+ requiredAuth?: undefined;
165
+ } | {
166
+ name: string;
167
+ description: string;
168
+ tool: import("ai").Tool<{
169
+ perPage?: number | undefined;
170
+ page?: number | undefined;
171
+ category?: "events" | "cfp" | "education" | "jobs" | "mentors" | "products" | "mentees" | "forsale" | "collabs" | "misc" | undefined;
172
+ devToApiKey?: string | undefined;
173
+ }, any>;
174
+ scope: "read";
175
+ requiredAuth?: undefined;
176
+ } | {
177
+ name: string;
178
+ description: string;
179
+ tool: import("ai").Tool<{
180
+ category: "events" | "cfp" | "education" | "jobs" | "mentors" | "products" | "mentees" | "forsale" | "collabs" | "misc";
181
+ perPage?: number | undefined;
182
+ page?: number | undefined;
183
+ devToApiKey?: string | undefined;
184
+ }, any>;
185
+ scope: "read";
186
+ requiredAuth?: undefined;
187
+ } | {
188
+ name: string;
189
+ description: string;
190
+ tool: import("ai").Tool<{
191
+ id: number;
192
+ title?: string | undefined;
193
+ action?: string | undefined;
194
+ tags?: string[] | undefined;
195
+ category?: string | undefined;
196
+ devToApiKey?: string | undefined;
197
+ bodyMarkdown?: string | undefined;
198
+ }, any>;
199
+ requiredAuth: "devToApiKey";
200
+ scope: "write";
201
+ })[];
202
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,37 @@
1
+ // @ts-nocheck
2
+ import { devToCreateArticle, devToGetArticle, devToGetArticleByPath, devToListArticles, devToListLatestArticles, devToListUserArticles, devToListUserPublishedArticles, devToListUserUnpublishedArticles, devToListUserAllArticles, devToListOrganizationArticles, devToUpdateArticle, } from './articles.js';
3
+ import { devToGetComment, devToListComments, devToGetCurrentUser, devToGetUser, devToGetOrganization, devToListOrganizationUsers, devToGetProfileImage, devToListTags, devToListFollowedTags, devToListFollowers, devToListPodcastEpisodes, devToListReadingList, devToListVideos, } from './community.js';
4
+ import { devToGetListing, devToListListings, devToListListingsByCategory, devToUpdateListing, } from './listings.js';
5
+ export { devToCreateArticle, devToGetArticle, devToGetArticleByPath, devToListArticles, devToListLatestArticles, devToListUserArticles, devToListUserPublishedArticles, devToListUserUnpublishedArticles, devToListUserAllArticles, devToListOrganizationArticles, devToUpdateArticle, devToGetComment, devToListComments, devToGetCurrentUser, devToGetUser, devToGetOrganization, devToListOrganizationUsers, devToGetProfileImage, devToListTags, devToListFollowedTags, devToListFollowers, devToListPodcastEpisodes, devToListReadingList, devToListVideos, devToGetListing, devToListListings, devToListListingsByCategory, devToUpdateListing, };
6
+ const authed = 'devToApiKey';
7
+ export const devToTools = [
8
+ { name: 'devToCreateArticle', description: devToCreateArticle.description, tool: devToCreateArticle, requiredAuth: authed, scope: 'write' },
9
+ { name: 'devToGetArticle', description: devToGetArticle.description, tool: devToGetArticle, scope: 'read' },
10
+ { name: 'devToGetArticleByPath', description: devToGetArticleByPath.description, tool: devToGetArticleByPath, scope: 'read' },
11
+ { name: 'devToListArticles', description: devToListArticles.description, tool: devToListArticles, scope: 'read' },
12
+ { name: 'devToListLatestArticles', description: devToListLatestArticles.description, tool: devToListLatestArticles, scope: 'read' },
13
+ { name: 'devToListUserArticles', description: devToListUserArticles.description, tool: devToListUserArticles, requiredAuth: authed, scope: 'read' },
14
+ { name: 'devToListUserPublishedArticles', description: devToListUserPublishedArticles.description, tool: devToListUserPublishedArticles, requiredAuth: authed, scope: 'read' },
15
+ { name: 'devToListUserUnpublishedArticles', description: devToListUserUnpublishedArticles.description, tool: devToListUserUnpublishedArticles, requiredAuth: authed, scope: 'read' },
16
+ { name: 'devToListUserAllArticles', description: devToListUserAllArticles.description, tool: devToListUserAllArticles, requiredAuth: authed, scope: 'read' },
17
+ { name: 'devToListOrganizationArticles', description: devToListOrganizationArticles.description, tool: devToListOrganizationArticles, scope: 'read' },
18
+ { name: 'devToUpdateArticle', description: devToUpdateArticle.description, tool: devToUpdateArticle, requiredAuth: authed, scope: 'write' },
19
+ { name: 'devToGetComment', description: devToGetComment.description, tool: devToGetComment, scope: 'read' },
20
+ { name: 'devToListComments', description: devToListComments.description, tool: devToListComments, scope: 'read' },
21
+ { name: 'devToGetCurrentUser', description: devToGetCurrentUser.description, tool: devToGetCurrentUser, requiredAuth: authed, scope: 'read' },
22
+ { name: 'devToGetUser', description: devToGetUser.description, tool: devToGetUser, scope: 'read' },
23
+ { name: 'devToGetOrganization', description: devToGetOrganization.description, tool: devToGetOrganization, scope: 'read' },
24
+ { name: 'devToListOrganizationUsers', description: devToListOrganizationUsers.description, tool: devToListOrganizationUsers, scope: 'read' },
25
+ { name: 'devToGetProfileImage', description: devToGetProfileImage.description, tool: devToGetProfileImage, scope: 'read' },
26
+ { name: 'devToListTags', description: devToListTags.description, tool: devToListTags, scope: 'read' },
27
+ { name: 'devToListFollowedTags', description: devToListFollowedTags.description, tool: devToListFollowedTags, requiredAuth: authed, scope: 'read' },
28
+ { name: 'devToListFollowers', description: devToListFollowers.description, tool: devToListFollowers, requiredAuth: authed, scope: 'read' },
29
+ { name: 'devToListPodcastEpisodes', description: devToListPodcastEpisodes.description, tool: devToListPodcastEpisodes, scope: 'read' },
30
+ { name: 'devToListReadingList', description: devToListReadingList.description, tool: devToListReadingList, requiredAuth: authed, scope: 'read' },
31
+ { name: 'devToListVideos', description: devToListVideos.description, tool: devToListVideos, scope: 'read' },
32
+ { name: 'devToGetListing', description: devToGetListing.description, tool: devToGetListing, scope: 'read' },
33
+ { name: 'devToListListings', description: devToListListings.description, tool: devToListListings, scope: 'read' },
34
+ { name: 'devToListListingsByCategory', description: devToListListingsByCategory.description, tool: devToListListingsByCategory, scope: 'read' },
35
+ { name: 'devToUpdateListing', description: devToUpdateListing.description, tool: devToUpdateListing, requiredAuth: authed, scope: 'write' },
36
+ ];
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,26 @@
1
+ export declare const devToGetListing: import("ai").Tool<{
2
+ id: number;
3
+ devToApiKey?: string | undefined;
4
+ }, any>;
5
+ export declare const devToListListings: import("ai").Tool<{
6
+ perPage?: number | undefined;
7
+ page?: number | undefined;
8
+ category?: "events" | "cfp" | "education" | "jobs" | "mentors" | "products" | "mentees" | "forsale" | "collabs" | "misc" | undefined;
9
+ devToApiKey?: string | undefined;
10
+ }, any>;
11
+ export declare const devToListListingsByCategory: import("ai").Tool<{
12
+ category: "events" | "cfp" | "education" | "jobs" | "mentors" | "products" | "mentees" | "forsale" | "collabs" | "misc";
13
+ perPage?: number | undefined;
14
+ page?: number | undefined;
15
+ devToApiKey?: string | undefined;
16
+ }, any>;
17
+ export declare const devToUpdateListing: import("ai").Tool<{
18
+ id: number;
19
+ title?: string | undefined;
20
+ action?: string | undefined;
21
+ tags?: string[] | undefined;
22
+ category?: string | undefined;
23
+ devToApiKey?: string | undefined;
24
+ bodyMarkdown?: string | undefined;
25
+ }, any>;
26
+ //# sourceMappingURL=listings.d.ts.map
@@ -0,0 +1,92 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ import { devToRequest, toDevToError, requireApiKey } from './client.js';
5
+ const apiKeyField = z.string().optional().describe('Injected by system; do not provide');
6
+ const listingCategory = z
7
+ .enum(['cfp', 'education', 'jobs', 'mentors', 'products', 'mentees', 'forsale', 'events', 'collabs', 'misc'])
8
+ .describe('Listing category');
9
+ export const devToGetListing = tool({
10
+ description: 'Get a single classified listing by ID, including title, body, category, and poster info.',
11
+ inputSchema: z.object({
12
+ devToApiKey: apiKeyField,
13
+ id: z.number().int().describe('The ID of the listing'),
14
+ }),
15
+ execute: async ({ devToApiKey, id }) => {
16
+ try {
17
+ return await devToRequest(devToApiKey, 'GET', `/listings/${id}`);
18
+ }
19
+ catch (error) {
20
+ return toDevToError(error, 'Failed to get listing');
21
+ }
22
+ },
23
+ });
24
+ export const devToListListings = tool({
25
+ description: 'List classified listings (jobs, mentors, products, events, etc.), optionally filtered by category.',
26
+ inputSchema: z.object({
27
+ devToApiKey: apiKeyField,
28
+ category: listingCategory.optional().describe('Filter by category'),
29
+ page: z.number().int().min(1).optional().describe('Page number for pagination'),
30
+ perPage: z.number().int().min(1).max(100).optional().describe('Items per page (default 30, max 100)'),
31
+ }),
32
+ execute: async ({ devToApiKey, perPage, ...rest }) => {
33
+ try {
34
+ const query = { ...rest };
35
+ if (perPage !== undefined)
36
+ query.per_page = perPage;
37
+ return await devToRequest(devToApiKey, 'GET', '/listings', { query });
38
+ }
39
+ catch (error) {
40
+ return toDevToError(error, 'Failed to list listings');
41
+ }
42
+ },
43
+ });
44
+ export const devToListListingsByCategory = tool({
45
+ description: 'List classified listings for one specific category (jobs, mentors, products, events, etc.).',
46
+ inputSchema: z.object({
47
+ devToApiKey: apiKeyField,
48
+ category: listingCategory,
49
+ page: z.number().int().min(1).optional().describe('Page number for pagination'),
50
+ perPage: z.number().int().min(1).max(100).optional().describe('Items per page (default 30, max 100)'),
51
+ }),
52
+ execute: async ({ devToApiKey, category, perPage, ...rest }) => {
53
+ try {
54
+ const query = { ...rest };
55
+ if (perPage !== undefined)
56
+ query.per_page = perPage;
57
+ return await devToRequest(devToApiKey, 'GET', `/listings/category/${encodeURIComponent(category)}`, {
58
+ query,
59
+ });
60
+ }
61
+ catch (error) {
62
+ return toDevToError(error, 'Failed to list listings by category');
63
+ }
64
+ },
65
+ });
66
+ export const devToUpdateListing = tool({
67
+ description: "Update your classified listing. Use action 'bump' to refresh its timestamp, 'publish'/'unpublish' to change status, or provide title/body/category/tags to edit content.",
68
+ inputSchema: z.object({
69
+ devToApiKey: apiKeyField,
70
+ id: z.number().int().describe('The ID of the listing to update'),
71
+ title: z.string().optional().describe('Updated title'),
72
+ bodyMarkdown: z.string().optional().describe('Updated body in Markdown'),
73
+ category: z.string().optional().describe('Updated category (must be valid)'),
74
+ tags: z.array(z.string()).optional().describe('Updated tags'),
75
+ action: z.string().optional().describe("'bump', 'publish', or 'unpublish'"),
76
+ }),
77
+ execute: async ({ devToApiKey, id, bodyMarkdown, ...rest }) => {
78
+ const missing = requireApiKey(devToApiKey);
79
+ if (missing)
80
+ return missing;
81
+ try {
82
+ const listing = { ...rest };
83
+ if (bodyMarkdown !== undefined)
84
+ listing.body_markdown = bodyMarkdown;
85
+ return await devToRequest(devToApiKey, 'PUT', `/listings/${id}`, { body: { listing } });
86
+ }
87
+ catch (error) {
88
+ return toDevToError(error, 'Failed to update listing');
89
+ }
90
+ },
91
+ });
92
+ //# sourceMappingURL=listings.js.map
@@ -1,23 +1,23 @@
1
1
  export declare const discordEditCommandPermissions: import("ai").Tool<{
2
- guildId: string;
3
- applicationId: string;
4
- commandId: string;
5
2
  permissions: {
6
3
  type: number;
7
4
  id: string;
8
5
  permission: boolean;
9
6
  }[];
7
+ applicationId: string;
8
+ guildId: string;
9
+ commandId: string;
10
10
  discordToken?: string | undefined;
11
11
  }, any>;
12
12
  export declare const discordGetCommandPermissions: import("ai").Tool<{
13
- guildId: string;
14
13
  applicationId: string;
14
+ guildId: string;
15
15
  commandId: string;
16
16
  discordToken?: string | undefined;
17
17
  }, any>;
18
18
  export declare const discordGetBatchCommandPermissions: import("ai").Tool<{
19
- guildId: string;
20
19
  applicationId: string;
20
+ guildId: string;
21
21
  discordToken?: string | undefined;
22
22
  }, {
23
23
  error: string;
@@ -99,14 +99,14 @@ export declare const discordTools: ({
99
99
  name: string;
100
100
  description: string;
101
101
  tool: import("ai").Tool<{
102
- guildId: string;
103
- applicationId: string;
104
- commandId: string;
105
102
  permissions: {
106
103
  type: number;
107
104
  id: string;
108
105
  permission: boolean;
109
106
  }[];
107
+ applicationId: string;
108
+ guildId: string;
109
+ commandId: string;
110
110
  discordToken?: string | undefined;
111
111
  }, any>;
112
112
  requiredAuth: "discordToken";
@@ -115,8 +115,8 @@ export declare const discordTools: ({
115
115
  name: string;
116
116
  description: string;
117
117
  tool: import("ai").Tool<{
118
- guildId: string;
119
118
  applicationId: string;
119
+ guildId: string;
120
120
  commandId: string;
121
121
  discordToken?: string | undefined;
122
122
  }, any>;
@@ -126,8 +126,8 @@ export declare const discordTools: ({
126
126
  name: string;
127
127
  description: string;
128
128
  tool: import("ai").Tool<{
129
- guildId: string;
130
129
  applicationId: string;
130
+ guildId: string;
131
131
  discordToken?: string | undefined;
132
132
  }, {
133
133
  error: string;