@tool-bridge/server 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/airtable-V6446SVY.js +792 -0
  2. package/dist/alt_text_generator_ai-HV7JZPDT.js +72 -0
  3. package/dist/amap-TTTVB6WS.js +755 -0
  4. package/dist/anthropic-JH3RA363.js +224 -0
  5. package/dist/apify-ETNN7ITU.js +262 -0
  6. package/dist/brave_search-3DDR2MMB.js +322 -0
  7. package/dist/chunk-CSJEZHQO.js +252 -0
  8. package/dist/chunk-JLTYA2B3.js +20121 -0
  9. package/dist/chunk-K7FVSFUX.js +333 -0
  10. package/dist/{chunk-MQEYFCJB.js → chunk-KGYJEEBI.js} +2770 -21574
  11. package/dist/circleci-MX3TX3HC.js +409 -0
  12. package/dist/clerk-MRPORVF4.js +1036 -0
  13. package/dist/cloudflare_dns-OWP7DD7L.js +605 -0
  14. package/dist/cohere-GPECP66S.js +197 -0
  15. package/dist/confluence-BN7LZ6BC.js +436 -0
  16. package/dist/convertapi-SBEOFOFQ.js +161 -0
  17. package/dist/currencyapi-P2YY7Y7P.js +306 -0
  18. package/dist/deepseek-MWB3NYIN.js +205 -0
  19. package/dist/docker_hub-3JSCIGQ3.js +946 -0
  20. package/dist/dropbox-RFIBDAXO.js +1308 -0
  21. package/dist/dub-YVP57ELQ.js +706 -0
  22. package/dist/e2b-NFSUHTZR.js +305 -0
  23. package/dist/exa-KTDY6IV3.js +360 -0
  24. package/dist/fal_ai-OCUENLNQ.js +405 -0
  25. package/dist/feishu-5CWBQ7E5.js +225 -0
  26. package/dist/feishu_custom_bot-ZJR22OK6.js +240 -0
  27. package/dist/figma-YULGANSA.js +798 -0
  28. package/dist/firehydrant-2V6YSYAP.js +573 -0
  29. package/dist/fixer-LTCDB3CJ.js +171 -0
  30. package/dist/fly-IXPKMAML.js +478 -0
  31. package/dist/front-KRFB4M5X.js +379 -0
  32. package/dist/geocodio-VVURKYHQ.js +236 -0
  33. package/dist/ghost-6J2RIOUB.js +341 -0
  34. package/dist/github-5Z6KQRYH.js +5410 -0
  35. package/dist/gmail-KU4NZ7VA.js +1894 -0
  36. package/dist/googlecalendar-X44DFFXG.js +2539 -0
  37. package/dist/googledocs-WSGLPKSF.js +1322 -0
  38. package/dist/grafana-4PKSSDXY.js +817 -0
  39. package/dist/graphhopper-DF65ZNGK.js +336 -0
  40. package/dist/index.d.ts +181 -2
  41. package/dist/index.js +2 -1
  42. package/dist/ip2proxy-UCAQ5P2J.js +118 -0
  43. package/dist/ipgeolocation_io-UX6FCA2S.js +333 -0
  44. package/dist/ipqualityscore-MKTRXIZJ.js +287 -0
  45. package/dist/jina_ai-MRHPCSV5.js +119 -0
  46. package/dist/jira-EG7ZPOIW.js +627 -0
  47. package/dist/langsmith-FNO3RCOZ.js +597 -0
  48. package/dist/lemlist-SN6BJHSG.js +298 -0
  49. package/dist/linear-H3VU4PSD.js +2163 -0
  50. package/dist/logsnag-OY2JJT2H.js +167 -0
  51. package/dist/main.js +246 -2
  52. package/dist/mattermost-C5SQ7PGD.js +320 -0
  53. package/dist/mem0-LMLE5BFC.js +567 -0
  54. package/dist/memos-UWFAMBZC.js +781 -0
  55. package/dist/metabase-SRYDSDJ6.js +365 -0
  56. package/dist/mistral_ai-YNIJ7VDM.js +1195 -0
  57. package/dist/mother_duck-CPGOFEXE.js +322 -0
  58. package/dist/ngrok-CDJFBSOM.js +375 -0
  59. package/dist/notes-DIVFH3P3.js +109 -0
  60. package/dist/notion-HGDKS4HK.js +945 -0
  61. package/dist/open_exchange_rates-COHHYJDD.js +216 -0
  62. package/dist/openai-4TRT66GW.js +795 -0
  63. package/dist/opengraph_io-YKVW4PXI.js +377 -0
  64. package/dist/openrouter-6CV7B7V5.js +444 -0
  65. package/dist/outline-YWDUK5F7.js +604 -0
  66. package/dist/paddle-MEU7HWDZ.js +464 -0
  67. package/dist/perplexity-MRQUDBIC.js +238 -0
  68. package/dist/pinecone-JI7X2TAF.js +599 -0
  69. package/dist/pipedrive-6JQPAW23.js +453 -0
  70. package/dist/polar-7BF56CMC.js +400 -0
  71. package/dist/posthog-YPU5ADEN.js +3462 -0
  72. package/dist/postmark-BEU5OFKU.js +441 -0
  73. package/dist/prerender-UT5GOOZH.js +180 -0
  74. package/dist/pubmed-3SGOE24Q.js +1052 -0
  75. package/dist/railway-CEK4GLRQ.js +452 -0
  76. package/dist/readwise-DXQUQU67.js +482 -0
  77. package/dist/render-7TGAU5AW.js +473 -0
  78. package/dist/replicate-VICFSQ5A.js +347 -0
  79. package/dist/resend-3E76WK3O.js +100 -0
  80. package/dist/rootly-36GY46BY.js +345 -0
  81. package/dist/scrapfly-VDVUYAHX.js +289 -0
  82. package/dist/scrapingbee-3KTPMAVY.js +247 -0
  83. package/dist/screenshot_fyi-LKG62C3J.js +116 -0
  84. package/dist/semantic_scholar-4WREECYO.js +626 -0
  85. package/dist/sentry-HUQTGXOV.js +1139 -0
  86. package/dist/shodan-SGRKU4KS.js +303 -0
  87. package/dist/shopify-YCZ4L5HT.js +620 -0
  88. package/dist/stripe-OEBKMELB.js +583 -0
  89. package/dist/supabase-I3DBY7L4.js +937 -0
  90. package/dist/tavily-B2YHCNRD.js +349 -0
  91. package/dist/telegram-2VYJELZX.js +1773 -0
  92. package/dist/telnyx-HHXD3CXL.js +237 -0
  93. package/dist/todoist-PHFDEEIS.js +672 -0
  94. package/dist/trello-WUSAK6YN.js +1091 -0
  95. package/dist/turso-FW56U2B3.js +432 -0
  96. package/dist/twilio-M5JI7XHA.js +321 -0
  97. package/dist/umami-HAYODRC4.js +411 -0
  98. package/dist/unsplash-EDPTNEHJ.js +364 -0
  99. package/dist/upstash_redis-GC2CLIWD.js +299 -0
  100. package/dist/uptimerobot-XMSNYLIT.js +481 -0
  101. package/dist/v2ex-KU4ECD65.js +672 -0
  102. package/dist/vercel-THPCEFHW.js +1096 -0
  103. package/dist/wolfram_alpha_api-WHHTH4GU.js +212 -0
  104. package/dist/wordpress-O6TQEQNF.js +822 -0
  105. package/dist/workos-A3VHHWI3.js +681 -0
  106. package/dist/zhihu-BJAI64YJ.js +273 -0
  107. package/package.json +5 -4
@@ -0,0 +1,341 @@
1
+ import {
2
+ assertPublicHttpUrl,
3
+ createProviderPlugin,
4
+ guardedFetch,
5
+ requireCredential,
6
+ upstreamError
7
+ } from "./chunk-CSJEZHQO.js";
8
+ import "./chunk-K7FVSFUX.js";
9
+ import {
10
+ TBError,
11
+ external_exports
12
+ } from "./chunk-JLTYA2B3.js";
13
+ import "./chunk-MLKGABMK.js";
14
+
15
+ // ../plugins/src/ghost/api.ts
16
+ var SERVICE = "ghost";
17
+ var CONTENT_PATH_PREFIX = "/ghost/api/content";
18
+ var CONTENT_API_VERSION = "v5.0";
19
+ function text(value) {
20
+ if (typeof value !== "string") return void 0;
21
+ const trimmed = value.trim();
22
+ return trimmed === "" ? void 0 : trimmed;
23
+ }
24
+ function record(value) {
25
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
26
+ }
27
+ function contentBaseUrl(ctx) {
28
+ const raw = requireCredential(ctx, SERVICE, "siteUrl");
29
+ let url;
30
+ try {
31
+ url = assertPublicHttpUrl(raw);
32
+ } catch {
33
+ throw new TBError(
34
+ "invalid_argument",
35
+ "Ghost \u51ED\u8BC1\u91CC\u7684 siteUrl \u4E0D\u662F\u53EF\u51FA\u7AD9\u7684\u516C\u7F51 http(s) \u5730\u5740 \u2014\u2014 \u63D2\u4EF6\u4F1A\u62E6\u4E0B\u79C1\u6709\u7F51\u6BB5\u3001\u56DE\u73AF\u4E0E\u4E91\u5143\u6570\u636E\u5730\u5740(\u9632 SSRF)\u3002\u8BF7\u628A\u8FD9\u4E2A Ghost \u7AD9\u70B9\u7684\u516C\u5F00\u5730\u5740\u586B\u8FDB\u51ED\u8BC1\u7684 siteUrl \u5B57\u6BB5"
36
+ );
37
+ }
38
+ if (url.username !== "" || url.password !== "") {
39
+ throw new TBError("invalid_argument", "Ghost \u51ED\u8BC1\u91CC\u7684 siteUrl \u4E0D\u80FD\u5185\u5D4C\u7528\u6237\u540D\u6216\u5BC6\u7801");
40
+ }
41
+ url.hash = "";
42
+ url.search = "";
43
+ url.pathname = url.pathname.replace(/\/+$/, "");
44
+ const site = url.toString().replace(/\/$/, "");
45
+ return `${site}${CONTENT_PATH_PREFIX}/${CONTENT_API_VERSION}`;
46
+ }
47
+ function errorMessage(status, payload) {
48
+ const body = record(payload);
49
+ const errors = body?.errors;
50
+ if (Array.isArray(errors)) {
51
+ const message = text(record(errors[0])?.message);
52
+ if (message !== void 0) return message;
53
+ }
54
+ return text(body?.message) ?? `Ghost \u8FD4\u56DE HTTP ${status}`;
55
+ }
56
+ async function request(ctx, path, query = {}) {
57
+ const url = new URL(path.replace(/^\/+/, ""), `${contentBaseUrl(ctx)}/`);
58
+ url.searchParams.set("key", requireCredential(ctx, SERVICE, "apiKey"));
59
+ for (const [key, value] of Object.entries(query)) {
60
+ if (value !== void 0) url.searchParams.set(key, String(value));
61
+ }
62
+ const response = await guardedFetch(url.toString(), {
63
+ method: "GET",
64
+ headers: { accept: "application/json" }
65
+ });
66
+ const body = await response.text();
67
+ let payload = {};
68
+ if (body !== "") {
69
+ try {
70
+ payload = JSON.parse(body);
71
+ } catch {
72
+ if (response.ok) {
73
+ throw new TBError("unavailable", "Ghost \u8FD4\u56DE\u4E86\u975E JSON \u54CD\u5E94", { retryable: true });
74
+ }
75
+ payload = { message: body };
76
+ }
77
+ }
78
+ if (!response.ok) throw upstreamError(response.status, errorMessage(response.status, payload));
79
+ return payload;
80
+ }
81
+ function browseQuery(input) {
82
+ return {
83
+ limit: input.limit,
84
+ page: input.page,
85
+ include: text(input.include),
86
+ fields: text(input.fields),
87
+ formats: text(input.formats),
88
+ filter: text(input.filter),
89
+ order: text(input.order)
90
+ };
91
+ }
92
+ function readQuery(input) {
93
+ return {
94
+ include: text(input.include),
95
+ fields: text(input.fields),
96
+ formats: text(input.formats)
97
+ };
98
+ }
99
+ async function browse(input, ctx, collection) {
100
+ const payload = record(await request(ctx, `/${collection}/`, browseQuery(input))) ?? {};
101
+ const items = payload[collection];
102
+ return {
103
+ [collection]: Array.isArray(items) ? items.map((item) => record(item) ?? {}) : [],
104
+ meta: record(payload.meta) ?? null
105
+ };
106
+ }
107
+ async function read(input, ctx, collection) {
108
+ const id = text(input.id);
109
+ const slug = text(input.slug);
110
+ if (id === void 0 && slug === void 0) {
111
+ throw new TBError("invalid_argument", "id or slug is required");
112
+ }
113
+ const path = id === void 0 ? `/${collection}/slug/${encodeURIComponent(slug)}/` : `/${collection}/${encodeURIComponent(id)}/`;
114
+ const payload = record(await request(ctx, path, readQuery(input))) ?? {};
115
+ const items = payload[collection];
116
+ const resource = Array.isArray(items) ? record(items[0]) : void 0;
117
+ return { [collection.slice(0, -1)]: resource ?? null };
118
+ }
119
+ function listPosts(input, ctx) {
120
+ return browse(input, ctx, "posts");
121
+ }
122
+ function getPost(input, ctx) {
123
+ return read(input, ctx, "posts");
124
+ }
125
+ function listPages(input, ctx) {
126
+ return browse(input, ctx, "pages");
127
+ }
128
+ function getPage(input, ctx) {
129
+ return read(input, ctx, "pages");
130
+ }
131
+ function listTags(input, ctx) {
132
+ return browse(input, ctx, "tags");
133
+ }
134
+ function getTag(input, ctx) {
135
+ return read(input, ctx, "tags");
136
+ }
137
+ function listAuthors(input, ctx) {
138
+ return browse(input, ctx, "authors");
139
+ }
140
+ function getAuthor(input, ctx) {
141
+ return read(input, ctx, "authors");
142
+ }
143
+ async function readSettings(_input, ctx) {
144
+ const payload = record(await request(ctx, "/settings/"));
145
+ return { settings: record(payload?.settings) ?? null };
146
+ }
147
+
148
+ // ../plugins/src/ghost/schema.ts
149
+ var listPostsInput = external_exports.strictObject({
150
+ limit: external_exports.int().min(1).max(100).describe("The maximum number of resources to request from Ghost.").optional(),
151
+ page: external_exports.int().min(1).describe("The one-based page number to request from Ghost.").optional(),
152
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
153
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
154
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional(),
155
+ filter: external_exports.string().min(1).describe("Ghost Content API filter expression.").optional(),
156
+ order: external_exports.string().min(1).describe("Ghost Content API order expression.").optional()
157
+ }).describe("Input for browsing Ghost content resources.");
158
+ var listPostsOutput = external_exports.strictObject({
159
+ posts: external_exports.array(external_exports.looseObject({}).describe("The raw Ghost Content API object.")).describe("The Ghost posts returned by the Content API.").optional(),
160
+ meta: external_exports.looseObject({}).describe("The Ghost Content API pagination metadata.").nullable().optional()
161
+ }).describe("Ghost posts browse response.");
162
+ var getPostInput = external_exports.strictObject({
163
+ id: external_exports.string().min(1).describe("The Ghost resource ID.").optional(),
164
+ slug: external_exports.string().min(1).describe("The Ghost resource slug.").optional(),
165
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
166
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
167
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional()
168
+ }).describe("Input for reading one Ghost content resource.");
169
+ var getPostOutput = external_exports.strictObject({
170
+ post: external_exports.looseObject({}).describe("The raw Ghost Content API object.").nullable().optional()
171
+ }).describe("Ghost post read response.");
172
+ var listPagesInput = external_exports.strictObject({
173
+ limit: external_exports.int().min(1).max(100).describe("The maximum number of resources to request from Ghost.").optional(),
174
+ page: external_exports.int().min(1).describe("The one-based page number to request from Ghost.").optional(),
175
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
176
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
177
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional(),
178
+ filter: external_exports.string().min(1).describe("Ghost Content API filter expression.").optional(),
179
+ order: external_exports.string().min(1).describe("Ghost Content API order expression.").optional()
180
+ }).describe("Input for browsing Ghost content resources.");
181
+ var listPagesOutput = external_exports.strictObject({
182
+ pages: external_exports.array(external_exports.looseObject({}).describe("The raw Ghost Content API object.")).describe("The Ghost pages returned by the Content API.").optional(),
183
+ meta: external_exports.looseObject({}).describe("The Ghost Content API pagination metadata.").nullable().optional()
184
+ }).describe("Ghost pages browse response.");
185
+ var getPageInput = external_exports.strictObject({
186
+ id: external_exports.string().min(1).describe("The Ghost resource ID.").optional(),
187
+ slug: external_exports.string().min(1).describe("The Ghost resource slug.").optional(),
188
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
189
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
190
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional()
191
+ }).describe("Input for reading one Ghost content resource.");
192
+ var getPageOutput = external_exports.strictObject({
193
+ page: external_exports.looseObject({}).describe("The raw Ghost Content API object.").nullable().optional()
194
+ }).describe("Ghost page read response.");
195
+ var listTagsInput = external_exports.strictObject({
196
+ limit: external_exports.int().min(1).max(100).describe("The maximum number of resources to request from Ghost.").optional(),
197
+ page: external_exports.int().min(1).describe("The one-based page number to request from Ghost.").optional(),
198
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
199
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
200
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional(),
201
+ filter: external_exports.string().min(1).describe("Ghost Content API filter expression.").optional(),
202
+ order: external_exports.string().min(1).describe("Ghost Content API order expression.").optional()
203
+ }).describe("Input for browsing Ghost content resources.");
204
+ var listTagsOutput = external_exports.strictObject({
205
+ tags: external_exports.array(external_exports.looseObject({}).describe("The raw Ghost Content API object.")).describe("The Ghost tags returned by the Content API.").optional(),
206
+ meta: external_exports.looseObject({}).describe("The Ghost Content API pagination metadata.").nullable().optional()
207
+ }).describe("Ghost tags browse response.");
208
+ var getTagInput = external_exports.strictObject({
209
+ id: external_exports.string().min(1).describe("The Ghost resource ID.").optional(),
210
+ slug: external_exports.string().min(1).describe("The Ghost resource slug.").optional(),
211
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
212
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
213
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional()
214
+ }).describe("Input for reading one Ghost content resource.");
215
+ var getTagOutput = external_exports.strictObject({
216
+ tag: external_exports.looseObject({}).describe("The raw Ghost Content API object.").nullable().optional()
217
+ }).describe("Ghost tag read response.");
218
+ var listAuthorsInput = external_exports.strictObject({
219
+ limit: external_exports.int().min(1).max(100).describe("The maximum number of resources to request from Ghost.").optional(),
220
+ page: external_exports.int().min(1).describe("The one-based page number to request from Ghost.").optional(),
221
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
222
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
223
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional(),
224
+ filter: external_exports.string().min(1).describe("Ghost Content API filter expression.").optional(),
225
+ order: external_exports.string().min(1).describe("Ghost Content API order expression.").optional()
226
+ }).describe("Input for browsing Ghost content resources.");
227
+ var listAuthorsOutput = external_exports.strictObject({
228
+ authors: external_exports.array(external_exports.looseObject({}).describe("The raw Ghost Content API object.")).describe("The Ghost authors returned by the Content API.").optional(),
229
+ meta: external_exports.looseObject({}).describe("The Ghost Content API pagination metadata.").nullable().optional()
230
+ }).describe("Ghost authors browse response.");
231
+ var getAuthorInput = external_exports.strictObject({
232
+ id: external_exports.string().min(1).describe("The Ghost resource ID.").optional(),
233
+ slug: external_exports.string().min(1).describe("The Ghost resource slug.").optional(),
234
+ include: external_exports.string().min(1).describe("Comma-separated Ghost include expression, such as authors,tags or count.posts.").optional(),
235
+ fields: external_exports.string().min(1).describe("Comma-separated Ghost field list to return.").optional(),
236
+ formats: external_exports.string().min(1).describe("Comma-separated Ghost formats to return, such as html,plaintext.").optional()
237
+ }).describe("Input for reading one Ghost content resource.");
238
+ var getAuthorOutput = external_exports.strictObject({
239
+ author: external_exports.looseObject({}).describe("The raw Ghost Content API object.").nullable().optional()
240
+ }).describe("Ghost author read response.");
241
+ var readSettingsInput = external_exports.strictObject({}).describe("No input is required to read Ghost settings.");
242
+ var readSettingsOutput = external_exports.strictObject({
243
+ settings: external_exports.looseObject({}).describe("The raw Ghost settings object.").nullable().optional()
244
+ }).describe("Ghost settings response.");
245
+ var ghostActions = {
246
+ list_posts: {
247
+ description: "List published posts from the connected Ghost site.",
248
+ effect: "read",
249
+ inputSchema: listPostsInput,
250
+ outputSchema: external_exports.toJSONSchema(listPostsOutput, { io: "output", unrepresentable: "any" })
251
+ },
252
+ get_post: {
253
+ description: "Get one published Ghost post by ID or slug.",
254
+ effect: "read",
255
+ inputSchema: getPostInput,
256
+ outputSchema: external_exports.toJSONSchema(getPostOutput, { io: "output", unrepresentable: "any" })
257
+ },
258
+ list_pages: {
259
+ description: "List published pages from the connected Ghost site.",
260
+ effect: "read",
261
+ inputSchema: listPagesInput,
262
+ outputSchema: external_exports.toJSONSchema(listPagesOutput, { io: "output", unrepresentable: "any" })
263
+ },
264
+ get_page: {
265
+ description: "Get one published Ghost page by ID or slug.",
266
+ effect: "read",
267
+ inputSchema: getPageInput,
268
+ outputSchema: external_exports.toJSONSchema(getPageOutput, { io: "output", unrepresentable: "any" })
269
+ },
270
+ list_tags: {
271
+ description: "List public tags from the connected Ghost site.",
272
+ effect: "read",
273
+ inputSchema: listTagsInput,
274
+ outputSchema: external_exports.toJSONSchema(listTagsOutput, { io: "output", unrepresentable: "any" })
275
+ },
276
+ get_tag: {
277
+ description: "Get one public Ghost tag by ID or slug.",
278
+ effect: "read",
279
+ inputSchema: getTagInput,
280
+ outputSchema: external_exports.toJSONSchema(getTagOutput, { io: "output", unrepresentable: "any" })
281
+ },
282
+ list_authors: {
283
+ description: "List public authors from the connected Ghost site.",
284
+ effect: "read",
285
+ inputSchema: listAuthorsInput,
286
+ outputSchema: external_exports.toJSONSchema(listAuthorsOutput, { io: "output", unrepresentable: "any" })
287
+ },
288
+ get_author: {
289
+ description: "Get one public Ghost author by ID or slug.",
290
+ effect: "read",
291
+ inputSchema: getAuthorInput,
292
+ outputSchema: external_exports.toJSONSchema(getAuthorOutput, { io: "output", unrepresentable: "any" })
293
+ },
294
+ read_settings: {
295
+ description: "Read public settings for the connected Ghost site.",
296
+ effect: "read",
297
+ inputSchema: readSettingsInput,
298
+ outputSchema: external_exports.toJSONSchema(readSettingsOutput, { io: "output", unrepresentable: "any" })
299
+ }
300
+ };
301
+
302
+ // ../plugins/src/ghost/index.ts
303
+ function createGhostPlugin() {
304
+ return createProviderPlugin({
305
+ description: "Ghost (Content API)",
306
+ actions: ghostActions,
307
+ credentialFields: [
308
+ {
309
+ key: "apiKey",
310
+ label: "Content API Key",
311
+ required: true,
312
+ secret: true,
313
+ description: "Ghost Content API key,\u4F5C\u4E3A key query \u53C2\u6570\u53D1\u9001;\u5728 Ghost Admin \u7684 Settings > Advanced > Integrations \u91CC\u521B\u5EFA\u6216\u67E5\u770B"
314
+ },
315
+ {
316
+ key: "siteUrl",
317
+ label: "Site URL",
318
+ required: true,
319
+ secret: false,
320
+ description: "Ghost \u7AD9\u70B9\u7684\u516C\u5F00\u5730\u5740(https://example.ghost.io),\u4E0D\u8981\u5E26 API \u8DEF\u5F84;\u5FC5\u987B\u662F\u516C\u7F51\u53EF\u8FBE\u5730\u5740,\u79C1\u6709\u7F51\u6BB5\u4F1A\u88AB\u51FA\u7AD9\u7B56\u7565\u62E6\u4E0B"
321
+ }
322
+ ],
323
+ credentialProbe: "read_settings",
324
+ handlers: {
325
+ list_posts: listPosts,
326
+ get_post: getPost,
327
+ list_pages: listPages,
328
+ get_page: getPage,
329
+ list_tags: listTags,
330
+ get_tag: getTag,
331
+ list_authors: listAuthors,
332
+ get_author: getAuthor,
333
+ read_settings: readSettings
334
+ }
335
+ });
336
+ }
337
+ var ghost_default = createGhostPlugin();
338
+ export {
339
+ createGhostPlugin,
340
+ ghost_default as default
341
+ };