@framers/agentos 0.1.219 → 0.1.221

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 (41) hide show
  1. package/README.md +43 -7
  2. package/dist/api/agent.d.ts.map +1 -1
  3. package/dist/api/agent.js +2 -0
  4. package/dist/api/agent.js.map +1 -1
  5. package/dist/api/generateText.d.ts.map +1 -1
  6. package/dist/api/generateText.js +6 -21
  7. package/dist/api/generateText.js.map +1 -1
  8. package/dist/api/runtime/capabilityContract.d.ts +83 -0
  9. package/dist/api/runtime/capabilityContract.d.ts.map +1 -0
  10. package/dist/api/runtime/capabilityContract.js +38 -0
  11. package/dist/api/runtime/capabilityContract.js.map +1 -0
  12. package/dist/api/runtime/dynamicToolCalling.d.ts +23 -0
  13. package/dist/api/runtime/dynamicToolCalling.d.ts.map +1 -0
  14. package/dist/api/runtime/dynamicToolCalling.js +21 -0
  15. package/dist/api/runtime/dynamicToolCalling.js.map +1 -0
  16. package/dist/api/runtime/externalToolRegistry.d.ts +12 -0
  17. package/dist/api/runtime/externalToolRegistry.d.ts.map +1 -1
  18. package/dist/api/runtime/externalToolRegistry.js +30 -0
  19. package/dist/api/runtime/externalToolRegistry.js.map +1 -1
  20. package/dist/api/runtime/lightweightAgentDiagnostics.d.ts +5 -0
  21. package/dist/api/runtime/lightweightAgentDiagnostics.d.ts.map +1 -0
  22. package/dist/api/runtime/lightweightAgentDiagnostics.js +35 -0
  23. package/dist/api/runtime/lightweightAgentDiagnostics.js.map +1 -0
  24. package/dist/api/runtime/processRequestWithRegisteredTools.d.ts.map +1 -1
  25. package/dist/api/runtime/processRequestWithRegisteredTools.js +9 -26
  26. package/dist/api/runtime/processRequestWithRegisteredTools.js.map +1 -1
  27. package/dist/api/runtime/resumeExternalToolRequestWithRegisteredTools.d.ts.map +1 -1
  28. package/dist/api/runtime/resumeExternalToolRequestWithRegisteredTools.js +6 -20
  29. package/dist/api/runtime/resumeExternalToolRequestWithRegisteredTools.js.map +1 -1
  30. package/dist/api/streamText.d.ts.map +1 -1
  31. package/dist/api/streamText.js +8 -17
  32. package/dist/api/streamText.js.map +1 -1
  33. package/dist/api/types.d.ts +6 -1
  34. package/dist/api/types.d.ts.map +1 -1
  35. package/dist/api/types.js.map +1 -1
  36. package/dist/config/extension-secrets.json +1098 -0
  37. package/dist/memory/mechanisms/CognitiveMechanismsEngine.d.ts +3 -2
  38. package/dist/memory/mechanisms/CognitiveMechanismsEngine.d.ts.map +1 -1
  39. package/dist/memory/mechanisms/CognitiveMechanismsEngine.js +4 -3
  40. package/dist/memory/mechanisms/CognitiveMechanismsEngine.js.map +1 -1
  41. package/package.json +5 -3
@@ -0,0 +1,1098 @@
1
+ [
2
+ {
3
+ "id": "openai.apiKey",
4
+ "label": "OpenAI API Key",
5
+ "description": "Used for native OpenAI calls (GPT-4o family) and any extensions that call OpenAI directly.",
6
+ "envVar": "OPENAI_API_KEY",
7
+ "docsUrl": "https://platform.openai.com/account/api-keys",
8
+ "providers": ["openai"],
9
+ "optional": false
10
+ },
11
+ {
12
+ "id": "openrouter.apiKey",
13
+ "label": "OpenRouter API Key",
14
+ "description": "Required when routing traffic through OpenRouter (multi-provider fan-out).",
15
+ "envVar": "OPENROUTER_API_KEY",
16
+ "docsUrl": "https://openrouter.ai/keys",
17
+ "providers": ["openrouter"],
18
+ "optional": false
19
+ },
20
+ {
21
+ "id": "anthropic.apiKey",
22
+ "label": "Anthropic API Key",
23
+ "description": "Needed for Claude-based extensions or workflows.",
24
+ "envVar": "ANTHROPIC_API_KEY",
25
+ "docsUrl": "https://console.anthropic.com/settings/keys",
26
+ "providers": ["anthropic"],
27
+ "optional": true
28
+ },
29
+ {
30
+ "id": "serper.apiKey",
31
+ "label": "Serper.dev API Key",
32
+ "description": "Used by search extensions relying on Serper.dev for Google-like results.",
33
+ "envVar": "SERPER_API_KEY",
34
+ "docsUrl": "https://serper.dev/api-key",
35
+ "providers": ["serper"],
36
+ "optional": true
37
+ },
38
+ {
39
+ "id": "serpapi.apiKey",
40
+ "label": "SerpAPI API Key",
41
+ "description": "Used by web-search extensions that integrate with SerpAPI for search results.",
42
+ "envVar": "SERPAPI_API_KEY",
43
+ "docsUrl": "https://serpapi.com/",
44
+ "providers": ["serpapi"],
45
+ "optional": true
46
+ },
47
+ {
48
+ "id": "brave.apiKey",
49
+ "label": "Brave Search API Key",
50
+ "description": "Used by web-search extensions that integrate with Brave Search API.",
51
+ "envVar": "BRAVE_API_KEY",
52
+ "docsUrl": "https://brave.com/search/api/",
53
+ "providers": ["brave"],
54
+ "optional": true
55
+ },
56
+ {
57
+ "id": "newsapi.apiKey",
58
+ "label": "NewsAPI Key",
59
+ "description": "Used by news-search extensions (NewsAPI).",
60
+ "envVar": "NEWSAPI_API_KEY",
61
+ "docsUrl": "https://newsapi.org/",
62
+ "providers": ["newsapi"],
63
+ "optional": true
64
+ },
65
+ {
66
+ "id": "giphy.apiKey",
67
+ "label": "Giphy API Key",
68
+ "description": "Used by media extensions to search for GIFs via Giphy.",
69
+ "envVar": "GIPHY_API_KEY",
70
+ "docsUrl": "https://developers.giphy.com/",
71
+ "providers": ["giphy"],
72
+ "optional": true
73
+ },
74
+ {
75
+ "id": "pexels.apiKey",
76
+ "label": "Pexels API Key",
77
+ "description": "Used by image-search extensions (Pexels).",
78
+ "envVar": "PEXELS_API_KEY",
79
+ "docsUrl": "https://www.pexels.com/api/",
80
+ "providers": ["pexels"],
81
+ "optional": true
82
+ },
83
+ {
84
+ "id": "unsplash.apiKey",
85
+ "label": "Unsplash Access Key",
86
+ "description": "Used by image-search extensions (Unsplash).",
87
+ "envVar": "UNSPLASH_ACCESS_KEY",
88
+ "docsUrl": "https://unsplash.com/developers",
89
+ "providers": ["unsplash"],
90
+ "optional": true
91
+ },
92
+ {
93
+ "id": "pixabay.apiKey",
94
+ "label": "Pixabay API Key",
95
+ "description": "Used by image-search extensions (Pixabay).",
96
+ "envVar": "PIXABAY_API_KEY",
97
+ "docsUrl": "https://pixabay.com/api/docs/",
98
+ "providers": ["pixabay"],
99
+ "optional": true
100
+ },
101
+ {
102
+ "id": "elevenlabs.apiKey",
103
+ "label": "ElevenLabs API Key",
104
+ "description": "Used by voice-synthesis extensions (ElevenLabs TTS).",
105
+ "envVar": "ELEVENLABS_API_KEY",
106
+ "docsUrl": "https://elevenlabs.io/docs/api-reference/authentication",
107
+ "providers": ["elevenlabs"],
108
+ "optional": true
109
+ },
110
+ {
111
+ "id": "telegram.botToken",
112
+ "label": "Telegram Bot Token",
113
+ "description": "Bot token from @BotFather for the Telegram messaging channel.",
114
+ "envVar": "TELEGRAM_BOT_TOKEN",
115
+ "docsUrl": "https://core.telegram.org/bots#botfather",
116
+ "providers": ["telegram"],
117
+ "optional": true
118
+ },
119
+ {
120
+ "id": "discord.botToken",
121
+ "label": "Discord Bot Token",
122
+ "description": "Bot token from the Discord Developer Portal for the Discord messaging channel.",
123
+ "envVar": "DISCORD_BOT_TOKEN",
124
+ "docsUrl": "https://discord.com/developers/docs/getting-started",
125
+ "providers": ["discord"],
126
+ "optional": true
127
+ },
128
+ {
129
+ "id": "slack.botToken",
130
+ "label": "Slack Bot Token",
131
+ "description": "Bot OAuth token (xoxb-*) for the Slack messaging channel.",
132
+ "envVar": "SLACK_BOT_TOKEN",
133
+ "docsUrl": "https://api.slack.com/authentication/token-types",
134
+ "providers": ["slack"],
135
+ "optional": true
136
+ },
137
+ {
138
+ "id": "slack.appToken",
139
+ "label": "Slack App-Level Token",
140
+ "description": "App-level token (xapp-*) for Slack Socket Mode connections.",
141
+ "envVar": "SLACK_APP_TOKEN",
142
+ "docsUrl": "https://api.slack.com/apis/connections/socket",
143
+ "providers": ["slack"],
144
+ "optional": true
145
+ },
146
+ {
147
+ "id": "slack.signingSecret",
148
+ "label": "Slack Signing Secret",
149
+ "description": "Signing secret for verifying Slack webhook requests.",
150
+ "envVar": "SLACK_SIGNING_SECRET",
151
+ "docsUrl": "https://api.slack.com/authentication/verifying-requests-from-slack",
152
+ "providers": ["slack"],
153
+ "optional": true
154
+ },
155
+ {
156
+ "id": "whatsapp.sessionData",
157
+ "label": "WhatsApp Session Data",
158
+ "description": "Serialized session credentials for WhatsApp Web/Baileys connection.",
159
+ "envVar": "WHATSAPP_SESSION_DATA",
160
+ "docsUrl": "https://github.com/WhiskeySockets/Baileys",
161
+ "providers": ["whatsapp"],
162
+ "optional": true
163
+ },
164
+ {
165
+ "id": "signal.phoneNumber",
166
+ "label": "Signal Phone Number",
167
+ "description": "Phone number registered with Signal for the signal-cli bridge.",
168
+ "envVar": "SIGNAL_PHONE_NUMBER",
169
+ "docsUrl": "https://github.com/AsamK/signal-cli",
170
+ "providers": ["signal"],
171
+ "optional": true
172
+ },
173
+ {
174
+ "id": "imessage.serverUrl",
175
+ "label": "BlueBubbles Server URL",
176
+ "description": "URL of the BlueBubbles server for iMessage integration.",
177
+ "envVar": "BLUEBUBBLES_SERVER_URL",
178
+ "docsUrl": "https://bluebubbles.app/",
179
+ "providers": ["imessage"],
180
+ "optional": true
181
+ },
182
+ {
183
+ "id": "imessage.password",
184
+ "label": "BlueBubbles Server Password",
185
+ "description": "Password for authenticating with the BlueBubbles server.",
186
+ "envVar": "BLUEBUBBLES_PASSWORD",
187
+ "docsUrl": "https://bluebubbles.app/",
188
+ "providers": ["imessage"],
189
+ "optional": true
190
+ },
191
+ {
192
+ "id": "googlechat.serviceAccount",
193
+ "label": "Google Chat Service Account JSON",
194
+ "description": "Service account credentials JSON for Google Chat API.",
195
+ "envVar": "GOOGLE_CHAT_SERVICE_ACCOUNT",
196
+ "docsUrl": "https://developers.google.com/workspace/chat/authenticate-authorize",
197
+ "providers": ["google-chat"],
198
+ "optional": true
199
+ },
200
+ {
201
+ "id": "teams.appId",
202
+ "label": "Microsoft Teams App ID",
203
+ "description": "Application ID for the Microsoft Teams bot registration.",
204
+ "envVar": "TEAMS_APP_ID",
205
+ "docsUrl": "https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/authentication/",
206
+ "providers": ["teams"],
207
+ "optional": true
208
+ },
209
+ {
210
+ "id": "teams.appPassword",
211
+ "label": "Microsoft Teams App Password",
212
+ "description": "Application password/secret for the Microsoft Teams bot.",
213
+ "envVar": "TEAMS_APP_PASSWORD",
214
+ "docsUrl": "https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/authentication/",
215
+ "providers": ["teams"],
216
+ "optional": true
217
+ },
218
+ {
219
+ "id": "matrix.homeserverUrl",
220
+ "label": "Matrix Homeserver URL",
221
+ "description": "URL of the Matrix homeserver (e.g., https://matrix.org).",
222
+ "envVar": "MATRIX_HOMESERVER_URL",
223
+ "docsUrl": "https://spec.matrix.org/latest/",
224
+ "providers": ["matrix"],
225
+ "optional": true
226
+ },
227
+ {
228
+ "id": "matrix.accessToken",
229
+ "label": "Matrix Access Token",
230
+ "description": "Access token for authenticating with the Matrix homeserver.",
231
+ "envVar": "MATRIX_ACCESS_TOKEN",
232
+ "docsUrl": "https://spec.matrix.org/latest/client-server-api/#client-authentication",
233
+ "providers": ["matrix"],
234
+ "optional": true
235
+ },
236
+ {
237
+ "id": "twilio.accountSid",
238
+ "label": "Twilio Account SID",
239
+ "description": "Twilio account identifier for SMS/voice messaging.",
240
+ "envVar": "TWILIO_ACCOUNT_SID",
241
+ "docsUrl": "https://www.twilio.com/docs/usage/api",
242
+ "providers": ["sms", "twilio"],
243
+ "optional": true
244
+ },
245
+ {
246
+ "id": "twilio.authToken",
247
+ "label": "Twilio Auth Token",
248
+ "description": "Twilio authentication token for API access.",
249
+ "envVar": "TWILIO_AUTH_TOKEN",
250
+ "docsUrl": "https://www.twilio.com/docs/usage/api",
251
+ "providers": ["sms", "twilio"],
252
+ "optional": true
253
+ },
254
+ {
255
+ "id": "twilio.phoneNumber",
256
+ "label": "Twilio Phone Number",
257
+ "description": "Twilio phone number for sending SMS messages.",
258
+ "envVar": "TWILIO_PHONE_NUMBER",
259
+ "docsUrl": "https://www.twilio.com/docs/phone-numbers",
260
+ "providers": ["sms", "twilio"],
261
+ "optional": true
262
+ },
263
+ {
264
+ "id": "telnyx.apiKey",
265
+ "label": "Telnyx API Key",
266
+ "description": "API key for Telnyx Call Control v2 and messaging.",
267
+ "envVar": "TELNYX_API_KEY",
268
+ "docsUrl": "https://developers.telnyx.com/docs/v2/development/authentication",
269
+ "providers": ["telnyx"],
270
+ "optional": true
271
+ },
272
+ {
273
+ "id": "telnyx.connectionId",
274
+ "label": "Telnyx Connection ID",
275
+ "description": "Connection ID (SIP/FQDN) for Telnyx voice calls.",
276
+ "envVar": "TELNYX_CONNECTION_ID",
277
+ "docsUrl": "https://developers.telnyx.com/docs/v2/call-control/quickstart",
278
+ "providers": ["telnyx"],
279
+ "optional": true
280
+ },
281
+ {
282
+ "id": "telnyx.publicKey",
283
+ "label": "Telnyx Public Key",
284
+ "description": "Ed25519 public key for verifying Telnyx webhook signatures.",
285
+ "envVar": "TELNYX_PUBLIC_KEY",
286
+ "docsUrl": "https://developers.telnyx.com/docs/v2/development/webhooks",
287
+ "providers": ["telnyx"],
288
+ "optional": true
289
+ },
290
+ {
291
+ "id": "telnyx.phoneNumber",
292
+ "label": "Telnyx Phone Number",
293
+ "description": "Telnyx phone number for outbound calls and SMS.",
294
+ "envVar": "TELNYX_PHONE_NUMBER",
295
+ "docsUrl": "https://developers.telnyx.com/docs/v2/numbers",
296
+ "providers": ["telnyx"],
297
+ "optional": true
298
+ },
299
+ {
300
+ "id": "plivo.authId",
301
+ "label": "Plivo Auth ID",
302
+ "description": "Plivo account auth ID for voice and messaging API.",
303
+ "envVar": "PLIVO_AUTH_ID",
304
+ "docsUrl": "https://www.plivo.com/docs/account/api/overview/",
305
+ "providers": ["plivo"],
306
+ "optional": true
307
+ },
308
+ {
309
+ "id": "plivo.authToken",
310
+ "label": "Plivo Auth Token",
311
+ "description": "Plivo account auth token for API authentication.",
312
+ "envVar": "PLIVO_AUTH_TOKEN",
313
+ "docsUrl": "https://www.plivo.com/docs/account/api/overview/",
314
+ "providers": ["plivo"],
315
+ "optional": true
316
+ },
317
+ {
318
+ "id": "plivo.phoneNumber",
319
+ "label": "Plivo Phone Number",
320
+ "description": "Plivo phone number for outbound calls.",
321
+ "envVar": "PLIVO_PHONE_NUMBER",
322
+ "docsUrl": "https://www.plivo.com/docs/numbers/",
323
+ "providers": ["plivo"],
324
+ "optional": true
325
+ },
326
+ {
327
+ "id": "google.clientId",
328
+ "label": "Google OAuth Client ID",
329
+ "description": "OAuth 2.0 client ID for Google Calendar and Gmail integrations.",
330
+ "envVar": "GOOGLE_CLIENT_ID",
331
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
332
+ "providers": ["google-calendar", "gmail"],
333
+ "optional": true
334
+ },
335
+ {
336
+ "id": "google.clientSecret",
337
+ "label": "Google OAuth Client Secret",
338
+ "description": "OAuth 2.0 client secret for Google API authentication.",
339
+ "envVar": "GOOGLE_CLIENT_SECRET",
340
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
341
+ "providers": ["google-calendar", "gmail"],
342
+ "optional": true
343
+ },
344
+ {
345
+ "id": "google.refreshToken",
346
+ "label": "Google Refresh Token",
347
+ "description": "OAuth 2.0 refresh token for maintaining long-lived Google API access.",
348
+ "envVar": "GOOGLE_REFRESH_TOKEN",
349
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
350
+ "providers": ["google-calendar", "gmail"],
351
+ "optional": true
352
+ },
353
+ {
354
+ "id": "email.smtpHost",
355
+ "label": "SMTP Host",
356
+ "description": "SMTP server hostname for sending email messages.",
357
+ "envVar": "SMTP_HOST",
358
+ "docsUrl": "https://nodemailer.com/smtp/",
359
+ "providers": ["email"],
360
+ "optional": true
361
+ },
362
+ {
363
+ "id": "email.smtpUser",
364
+ "label": "SMTP Username",
365
+ "description": "SMTP authentication username.",
366
+ "envVar": "SMTP_USER",
367
+ "docsUrl": "https://nodemailer.com/smtp/",
368
+ "providers": ["email"],
369
+ "optional": true
370
+ },
371
+ {
372
+ "id": "email.smtpPassword",
373
+ "label": "SMTP Password",
374
+ "description": "SMTP authentication password.",
375
+ "envVar": "SMTP_PASSWORD",
376
+ "docsUrl": "https://nodemailer.com/smtp/",
377
+ "providers": ["email"],
378
+ "optional": true
379
+ },
380
+ {
381
+ "id": "zalo.appId",
382
+ "label": "Zalo App ID",
383
+ "description": "Application ID for the Zalo Official Account API.",
384
+ "envVar": "ZALO_APP_ID",
385
+ "docsUrl": "https://developers.zalo.me/docs/",
386
+ "providers": ["zalo"],
387
+ "optional": true
388
+ },
389
+ {
390
+ "id": "zalo.secretKey",
391
+ "label": "Zalo Secret Key",
392
+ "description": "Secret key for the Zalo Official Account API.",
393
+ "envVar": "ZALO_SECRET_KEY",
394
+ "docsUrl": "https://developers.zalo.me/docs/",
395
+ "providers": ["zalo"],
396
+ "optional": true
397
+ },
398
+ {
399
+ "id": "zalo.botToken",
400
+ "label": "Zalo Bot Token",
401
+ "description": "Bot API token for the Zalo Bot Platform (used for messaging).",
402
+ "envVar": "ZALO_BOT_TOKEN",
403
+ "docsUrl": "https://developers.zalo.me/docs/",
404
+ "providers": ["zalo"],
405
+ "optional": true
406
+ },
407
+ {
408
+ "id": "zalo.webhookSecret",
409
+ "label": "Zalo Webhook Secret",
410
+ "description": "Optional secret token used to validate Zalo webhook requests (x-bot-api-secret-token header).",
411
+ "envVar": "ZALO_WEBHOOK_SECRET",
412
+ "docsUrl": "https://developers.zalo.me/docs/",
413
+ "providers": ["zalo"],
414
+ "optional": true
415
+ },
416
+ {
417
+ "id": "nostr.privateKey",
418
+ "label": "Nostr Private Key",
419
+ "description": "Nostr private key (hex or nsec) used to sign events.",
420
+ "envVar": "NOSTR_PRIVATE_KEY",
421
+ "docsUrl": "https://github.com/nostr-protocol/nostr",
422
+ "providers": ["nostr"],
423
+ "optional": true
424
+ },
425
+ {
426
+ "id": "nostr.relayUrls",
427
+ "label": "Nostr Relay URLs",
428
+ "description": "Comma-separated WebSocket relay URLs to connect to (e.g., wss://relay.damus.io,wss://nos.lol).",
429
+ "envVar": "NOSTR_RELAY_URLS",
430
+ "docsUrl": "https://github.com/nostr-protocol/nips",
431
+ "providers": ["nostr"],
432
+ "optional": true
433
+ },
434
+ {
435
+ "id": "twitch.oauthToken",
436
+ "label": "Twitch OAuth Token",
437
+ "description": "OAuth token for connecting to Twitch IRC (chat).",
438
+ "envVar": "TWITCH_OAUTH_TOKEN",
439
+ "docsUrl": "https://dev.twitch.tv/docs/authentication",
440
+ "providers": ["twitch"],
441
+ "optional": true
442
+ },
443
+ {
444
+ "id": "twitch.username",
445
+ "label": "Twitch Username",
446
+ "description": "Bot account username used for Twitch IRC (chat).",
447
+ "envVar": "TWITCH_USERNAME",
448
+ "docsUrl": "https://dev.twitch.tv/docs/irc/",
449
+ "providers": ["twitch"],
450
+ "optional": true
451
+ },
452
+ {
453
+ "id": "twitch.channel",
454
+ "label": "Twitch Channel",
455
+ "description": "Twitch channel name to join (without #).",
456
+ "envVar": "TWITCH_CHANNEL",
457
+ "docsUrl": "https://dev.twitch.tv/docs/irc/",
458
+ "providers": ["twitch"],
459
+ "optional": true
460
+ },
461
+ {
462
+ "id": "line.channelAccessToken",
463
+ "label": "LINE Channel Access Token",
464
+ "description": "Messaging API channel access token for LINE bot authentication.",
465
+ "envVar": "LINE_CHANNEL_ACCESS_TOKEN",
466
+ "docsUrl": "https://developers.line.biz/en/docs/messaging-api/channel-access-tokens/",
467
+ "providers": ["line"],
468
+ "optional": true
469
+ },
470
+ {
471
+ "id": "line.channelSecret",
472
+ "label": "LINE Channel Secret",
473
+ "description": "Messaging API channel secret used to verify webhook signatures.",
474
+ "envVar": "LINE_CHANNEL_SECRET",
475
+ "docsUrl": "https://developers.line.biz/en/docs/messaging-api/building-bot/#prepare-channel-secret",
476
+ "providers": ["line"],
477
+ "optional": true
478
+ },
479
+ {
480
+ "id": "feishu.appId",
481
+ "label": "Feishu / Lark App ID",
482
+ "description": "App ID for the Feishu (Lark) bot.",
483
+ "envVar": "FEISHU_APP_ID",
484
+ "docsUrl": "https://open.feishu.cn/document/home/index?lang=en-US",
485
+ "providers": ["feishu"],
486
+ "optional": true
487
+ },
488
+ {
489
+ "id": "feishu.appSecret",
490
+ "label": "Feishu / Lark App Secret",
491
+ "description": "App secret for the Feishu (Lark) bot.",
492
+ "envVar": "FEISHU_APP_SECRET",
493
+ "docsUrl": "https://open.feishu.cn/document/home/index?lang=en-US",
494
+ "providers": ["feishu"],
495
+ "optional": true
496
+ },
497
+ {
498
+ "id": "mattermost.url",
499
+ "label": "Mattermost Server URL",
500
+ "description": "Base URL for your Mattermost server (e.g., https://chat.example.com).",
501
+ "envVar": "MATTERMOST_URL",
502
+ "docsUrl": "https://api.mattermost.com/",
503
+ "providers": ["mattermost"],
504
+ "optional": true
505
+ },
506
+ {
507
+ "id": "mattermost.token",
508
+ "label": "Mattermost Access Token",
509
+ "description": "Personal access token (PAT) or bot token for Mattermost API.",
510
+ "envVar": "MATTERMOST_TOKEN",
511
+ "docsUrl": "https://docs.mattermost.com/integrations/admin-guide/admin-bot-accounts.html",
512
+ "providers": ["mattermost"],
513
+ "optional": true
514
+ },
515
+ {
516
+ "id": "nextcloud.url",
517
+ "label": "NextCloud URL",
518
+ "description": "Base URL for your NextCloud instance (Talk).",
519
+ "envVar": "NEXTCLOUD_URL",
520
+ "docsUrl": "https://nextcloud.com/talk/",
521
+ "providers": ["nextcloud-talk"],
522
+ "optional": true
523
+ },
524
+ {
525
+ "id": "nextcloud.token",
526
+ "label": "NextCloud Token",
527
+ "description": "Access token for NextCloud Talk bot integration.",
528
+ "envVar": "NEXTCLOUD_TOKEN",
529
+ "docsUrl": "https://nextcloud.com/talk/",
530
+ "providers": ["nextcloud-talk"],
531
+ "optional": true
532
+ },
533
+ {
534
+ "id": "tlon.shipUrl",
535
+ "label": "Tlon (Urbit) Ship URL",
536
+ "description": "HTTP URL for the Urbit ship (Tlon) you want to connect to.",
537
+ "envVar": "TLON_SHIP_URL",
538
+ "docsUrl": "https://urbit.org/",
539
+ "providers": ["tlon"],
540
+ "optional": true
541
+ },
542
+ {
543
+ "id": "tlon.code",
544
+ "label": "Tlon (Urbit) Code",
545
+ "description": "Ship access code (or auth token) for the Urbit API.",
546
+ "envVar": "TLON_CODE",
547
+ "docsUrl": "https://urbit.org/",
548
+ "providers": ["tlon"],
549
+ "optional": true
550
+ },
551
+ {
552
+ "id": "reddit.clientId",
553
+ "label": "Reddit Client ID",
554
+ "description": "OAuth client ID for the Reddit API (snoowrap).",
555
+ "envVar": "REDDIT_CLIENT_ID",
556
+ "docsUrl": "https://www.reddit.com/prefs/apps",
557
+ "providers": ["reddit"],
558
+ "optional": true
559
+ },
560
+ {
561
+ "id": "reddit.clientSecret",
562
+ "label": "Reddit Client Secret",
563
+ "description": "OAuth client secret for the Reddit API (snoowrap).",
564
+ "envVar": "REDDIT_CLIENT_SECRET",
565
+ "docsUrl": "https://www.reddit.com/prefs/apps",
566
+ "providers": ["reddit"],
567
+ "optional": true
568
+ },
569
+ {
570
+ "id": "reddit.username",
571
+ "label": "Reddit Username",
572
+ "description": "Username for the Reddit account used by the bot.",
573
+ "envVar": "REDDIT_USERNAME",
574
+ "docsUrl": "https://www.reddit.com/",
575
+ "providers": ["reddit"],
576
+ "optional": true
577
+ },
578
+ {
579
+ "id": "reddit.password",
580
+ "label": "Reddit Password",
581
+ "description": "Password for the Reddit account used by the bot.",
582
+ "envVar": "REDDIT_PASSWORD",
583
+ "docsUrl": "https://www.reddit.com/",
584
+ "providers": ["reddit"],
585
+ "optional": true
586
+ },
587
+ {
588
+ "id": "twitter.bearerToken",
589
+ "label": "Twitter/X Bearer Token",
590
+ "description": "Bearer token for Twitter API v2 (app-only auth). Optional if OAuth credentials are provided.",
591
+ "envVar": "TWITTER_BEARER_TOKEN",
592
+ "aliases": ["X_BEARER_TOKEN"],
593
+ "docsUrl": "https://developer.x.com/en/docs/authentication/oauth-2-0/bearer-tokens",
594
+ "providers": ["twitter"],
595
+ "optional": true
596
+ },
597
+ {
598
+ "id": "twitter.apiKey",
599
+ "label": "Twitter/X API Key (Consumer Key)",
600
+ "description": "API key / consumer key for Twitter/X (OAuth 1.0a).",
601
+ "envVar": "TWITTER_API_KEY",
602
+ "aliases": ["X_API_KEY", "X_CONSUMER_KEY", "TWITTER_CONSUMER_KEY"],
603
+ "docsUrl": "https://developer.x.com/",
604
+ "providers": ["twitter"],
605
+ "optional": true
606
+ },
607
+ {
608
+ "id": "twitter.apiSecret",
609
+ "label": "Twitter/X API Secret (Consumer Secret)",
610
+ "description": "API secret / consumer secret for Twitter/X (OAuth 1.0a).",
611
+ "envVar": "TWITTER_API_SECRET",
612
+ "aliases": ["X_API_SECRET", "X_CONSUMER_SECRET", "X_CONSUMER_SECRET_KEY", "TWITTER_CONSUMER_SECRET"],
613
+ "docsUrl": "https://developer.x.com/",
614
+ "providers": ["twitter"],
615
+ "optional": true
616
+ },
617
+ {
618
+ "id": "twitter.accessToken",
619
+ "label": "Twitter/X Access Token",
620
+ "description": "Access token for Twitter/X (user context, OAuth 1.0a).",
621
+ "envVar": "TWITTER_ACCESS_TOKEN",
622
+ "aliases": ["X_ACCESS_TOKEN"],
623
+ "docsUrl": "https://developer.x.com/",
624
+ "providers": ["twitter"],
625
+ "optional": true
626
+ },
627
+ {
628
+ "id": "twitter.accessSecret",
629
+ "label": "Twitter/X Access Secret",
630
+ "description": "Access token secret for Twitter/X (user context, OAuth 1.0a).",
631
+ "envVar": "TWITTER_ACCESS_SECRET",
632
+ "aliases": ["X_ACCESS_SECRET", "X_ACCESS_TOKEN_SECRET", "TWITTER_ACCESS_TOKEN_SECRET"],
633
+ "docsUrl": "https://developer.x.com/",
634
+ "providers": ["twitter"],
635
+ "optional": true
636
+ },
637
+ {
638
+ "id": "tiktok.accessToken",
639
+ "label": "TikTok Access Token",
640
+ "description": "Access token for the TikTok API (Business).",
641
+ "envVar": "TIKTOK_ACCESS_TOKEN",
642
+ "docsUrl": "https://developers.tiktok.com/",
643
+ "providers": ["tiktok"],
644
+ "optional": true
645
+ },
646
+ {
647
+ "id": "tiktok.username",
648
+ "label": "TikTok Username",
649
+ "description": "Optional username for TikTok automation flows.",
650
+ "envVar": "TIKTOK_USERNAME",
651
+ "docsUrl": "https://www.tiktok.com/",
652
+ "providers": ["tiktok"],
653
+ "optional": true
654
+ },
655
+ {
656
+ "id": "tiktok.password",
657
+ "label": "TikTok Password",
658
+ "description": "Optional password for TikTok automation flows.",
659
+ "envVar": "TIKTOK_PASSWORD",
660
+ "docsUrl": "https://www.tiktok.com/",
661
+ "providers": ["tiktok"],
662
+ "optional": true
663
+ },
664
+ {
665
+ "id": "instagram.accessToken",
666
+ "label": "Instagram Access Token",
667
+ "description": "Access token for Instagram Graph API.",
668
+ "envVar": "INSTAGRAM_ACCESS_TOKEN",
669
+ "docsUrl": "https://developers.facebook.com/docs/instagram-api/",
670
+ "providers": ["instagram"],
671
+ "optional": true
672
+ },
673
+ {
674
+ "id": "instagram.username",
675
+ "label": "Instagram Username",
676
+ "description": "Optional username for automation fallback flows.",
677
+ "envVar": "INSTAGRAM_USERNAME",
678
+ "docsUrl": "https://www.instagram.com/",
679
+ "providers": ["instagram"],
680
+ "optional": true
681
+ },
682
+ {
683
+ "id": "instagram.password",
684
+ "label": "Instagram Password",
685
+ "description": "Optional password for automation fallback flows.",
686
+ "envVar": "INSTAGRAM_PASSWORD",
687
+ "docsUrl": "https://www.instagram.com/",
688
+ "providers": ["instagram"],
689
+ "optional": true
690
+ },
691
+ {
692
+ "id": "youtube.apiKey",
693
+ "label": "YouTube API Key",
694
+ "description": "API key for YouTube Data API v3.",
695
+ "envVar": "YOUTUBE_API_KEY",
696
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
697
+ "providers": ["youtube"],
698
+ "optional": true
699
+ },
700
+ {
701
+ "id": "youtube.oauth.clientId",
702
+ "label": "YouTube OAuth Client ID",
703
+ "description": "OAuth client ID for YouTube uploads and account-scoped actions.",
704
+ "envVar": "YOUTUBE_OAUTH_CLIENT_ID",
705
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
706
+ "providers": ["youtube"],
707
+ "optional": true
708
+ },
709
+ {
710
+ "id": "youtube.oauth.clientSecret",
711
+ "label": "YouTube OAuth Client Secret",
712
+ "description": "OAuth client secret for YouTube uploads and account-scoped actions.",
713
+ "envVar": "YOUTUBE_OAUTH_CLIENT_SECRET",
714
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
715
+ "providers": ["youtube"],
716
+ "optional": true
717
+ },
718
+ {
719
+ "id": "youtube.oauth.refreshToken",
720
+ "label": "YouTube OAuth Refresh Token",
721
+ "description": "OAuth refresh token for long-lived YouTube API access.",
722
+ "envVar": "YOUTUBE_OAUTH_REFRESH_TOKEN",
723
+ "docsUrl": "https://developers.google.com/identity/protocols/oauth2",
724
+ "providers": ["youtube"],
725
+ "optional": true
726
+ },
727
+ {
728
+ "id": "pinterest.accessToken",
729
+ "label": "Pinterest Access Token",
730
+ "description": "Access token for the Pinterest API.",
731
+ "envVar": "PINTEREST_ACCESS_TOKEN",
732
+ "docsUrl": "https://developers.pinterest.com/docs/getting-started/",
733
+ "providers": ["pinterest"],
734
+ "optional": true
735
+ },
736
+ {
737
+ "id": "feishu.verificationToken",
738
+ "label": "Feishu Verification Token",
739
+ "description": "Verification token for validating Feishu/Lark webhook events.",
740
+ "envVar": "FEISHU_VERIFICATION_TOKEN",
741
+ "docsUrl": "https://open.feishu.cn/document/common-capabilities/event-subscription/event-subscription-security-settings",
742
+ "providers": ["feishu"],
743
+ "optional": true
744
+ },
745
+ {
746
+ "id": "feishu.encryptKey",
747
+ "label": "Feishu Encrypt Key",
748
+ "description": "Encrypt key for decrypting Feishu/Lark webhook events (only if event encryption is enabled).",
749
+ "envVar": "FEISHU_ENCRYPT_KEY",
750
+ "docsUrl": "https://open.feishu.cn/document/common-capabilities/event-subscription/event-subscription-security-settings",
751
+ "providers": ["feishu"],
752
+ "optional": true
753
+ },
754
+ {
755
+ "id": "irc.host",
756
+ "label": "IRC Host",
757
+ "description": "IRC server hostname (e.g., irc.libera.chat).",
758
+ "envVar": "IRC_HOST",
759
+ "docsUrl": "https://modern.ircdocs.horse/",
760
+ "providers": ["irc"],
761
+ "optional": true
762
+ },
763
+ {
764
+ "id": "irc.port",
765
+ "label": "IRC Port",
766
+ "description": "IRC server port (e.g., 6667 for plain TCP, 6697 for TLS).",
767
+ "envVar": "IRC_PORT",
768
+ "docsUrl": "https://modern.ircdocs.horse/",
769
+ "providers": ["irc"],
770
+ "optional": true
771
+ },
772
+ {
773
+ "id": "irc.tls",
774
+ "label": "IRC TLS",
775
+ "description": "Whether to connect using TLS (true/false).",
776
+ "envVar": "IRC_TLS",
777
+ "docsUrl": "https://modern.ircdocs.horse/",
778
+ "providers": ["irc"],
779
+ "optional": true
780
+ },
781
+ {
782
+ "id": "irc.nick",
783
+ "label": "IRC Nick",
784
+ "description": "Bot nick for IRC.",
785
+ "envVar": "IRC_NICK",
786
+ "docsUrl": "https://modern.ircdocs.horse/",
787
+ "providers": ["irc"],
788
+ "optional": true
789
+ },
790
+ {
791
+ "id": "irc.username",
792
+ "label": "IRC Username",
793
+ "description": "IRC username for the USER command (defaults to nick).",
794
+ "envVar": "IRC_USERNAME",
795
+ "docsUrl": "https://modern.ircdocs.horse/",
796
+ "providers": ["irc"],
797
+ "optional": true
798
+ },
799
+ {
800
+ "id": "irc.realname",
801
+ "label": "IRC Realname",
802
+ "description": "IRC realname for the USER command.",
803
+ "envVar": "IRC_REALNAME",
804
+ "docsUrl": "https://modern.ircdocs.horse/",
805
+ "providers": ["irc"],
806
+ "optional": true
807
+ },
808
+ {
809
+ "id": "irc.password",
810
+ "label": "IRC Server Password",
811
+ "description": "Optional server password for PASS (if required by the network).",
812
+ "envVar": "IRC_PASSWORD",
813
+ "docsUrl": "https://modern.ircdocs.horse/",
814
+ "providers": ["irc"],
815
+ "optional": true
816
+ },
817
+ {
818
+ "id": "irc.channels",
819
+ "label": "IRC Channels",
820
+ "description": "Comma-separated channels to join (e.g., \"#general,#support\").",
821
+ "envVar": "IRC_CHANNELS",
822
+ "docsUrl": "https://modern.ircdocs.horse/",
823
+ "providers": ["irc"],
824
+ "optional": true
825
+ },
826
+ {
827
+ "id": "irc.nickservPassword",
828
+ "label": "IRC NickServ Password",
829
+ "description": "Optional NickServ password for identifying the bot nick (IDENTIFY).",
830
+ "envVar": "IRC_NICKSERV_PASSWORD",
831
+ "docsUrl": "https://modern.ircdocs.horse/",
832
+ "providers": ["irc"],
833
+ "optional": true
834
+ },
835
+ {
836
+ "id": "irc.nickservService",
837
+ "label": "IRC NickServ Service",
838
+ "description": "NickServ service name (defaults to \"NickServ\").",
839
+ "envVar": "IRC_NICKSERV_SERVICE",
840
+ "docsUrl": "https://modern.ircdocs.horse/",
841
+ "providers": ["irc"],
842
+ "optional": true
843
+ },
844
+ {
845
+ "id": "github.token",
846
+ "label": "GitHub Personal Access Token",
847
+ "description": "PAT for GitHub API access. Used by the GitHub extension for repo search, issues, PRs, and gists.",
848
+ "envVar": "GITHUB_TOKEN",
849
+ "docsUrl": "https://github.com/settings/tokens",
850
+ "providers": ["github"],
851
+ "optional": true
852
+ },
853
+ {
854
+ "id": "twitter.clientId",
855
+ "label": "Twitter/X OAuth 2.0 Client ID",
856
+ "description": "Client ID for Twitter OAuth 2.0 PKCE flow. Used by wunderland login --provider twitter.",
857
+ "envVar": "TWITTER_CLIENT_ID",
858
+ "docsUrl": "https://developer.x.com/en/portal/dashboard",
859
+ "providers": ["twitter"],
860
+ "optional": true
861
+ },
862
+ {
863
+ "id": "meta.appId",
864
+ "label": "Meta/Facebook App ID",
865
+ "description": "App ID for Instagram OAuth via Meta. Used by wunderland login --provider instagram.",
866
+ "envVar": "META_APP_ID",
867
+ "aliases": ["FACEBOOK_APP_ID"],
868
+ "docsUrl": "https://developers.facebook.com/apps/",
869
+ "providers": ["instagram"],
870
+ "optional": true
871
+ },
872
+ {
873
+ "id": "meta.appSecret",
874
+ "label": "Meta/Facebook App Secret",
875
+ "description": "App secret for Instagram OAuth via Meta. Used by wunderland login --provider instagram.",
876
+ "envVar": "META_APP_SECRET",
877
+ "aliases": ["FACEBOOK_APP_SECRET"],
878
+ "docsUrl": "https://developers.facebook.com/apps/",
879
+ "providers": ["instagram"],
880
+ "optional": true
881
+ },
882
+ {
883
+ "id": "linkedin.accessToken",
884
+ "label": "LinkedIn Access Token",
885
+ "description": "Access token for LinkedIn API calls (post, comment, analytics).",
886
+ "envVar": "LINKEDIN_ACCESS_TOKEN",
887
+ "docsUrl": "https://www.linkedin.com/developers/apps",
888
+ "providers": ["linkedin"],
889
+ "optional": true
890
+ },
891
+ {
892
+ "id": "linkedin.clientId",
893
+ "label": "LinkedIn OAuth Client ID",
894
+ "description": "Client ID for LinkedIn OAuth login flow.",
895
+ "envVar": "LINKEDIN_CLIENT_ID",
896
+ "docsUrl": "https://www.linkedin.com/developers/apps",
897
+ "providers": ["linkedin"],
898
+ "optional": true
899
+ },
900
+ {
901
+ "id": "linkedin.clientSecret",
902
+ "label": "LinkedIn OAuth Client Secret",
903
+ "description": "Client secret for LinkedIn OAuth login flow.",
904
+ "envVar": "LINKEDIN_CLIENT_SECRET",
905
+ "docsUrl": "https://www.linkedin.com/developers/apps",
906
+ "providers": ["linkedin"],
907
+ "optional": true
908
+ },
909
+ {
910
+ "id": "facebook.accessToken",
911
+ "label": "Facebook Access Token",
912
+ "description": "Page/user access token for Facebook Graph API calls.",
913
+ "envVar": "FACEBOOK_ACCESS_TOKEN",
914
+ "docsUrl": "https://developers.facebook.com/tools/explorer/",
915
+ "providers": ["facebook"],
916
+ "optional": true
917
+ },
918
+ {
919
+ "id": "threads.accessToken",
920
+ "label": "Threads Access Token",
921
+ "description": "Access token for Threads API (via Meta Graph).",
922
+ "envVar": "THREADS_ACCESS_TOKEN",
923
+ "docsUrl": "https://developers.facebook.com/docs/threads",
924
+ "providers": ["threads"],
925
+ "optional": true
926
+ },
927
+ {
928
+ "id": "bluesky.handle",
929
+ "label": "Bluesky Handle",
930
+ "description": "AT Protocol handle (for example, yourname.bsky.social).",
931
+ "envVar": "BLUESKY_HANDLE",
932
+ "docsUrl": "https://bsky.app/settings/account",
933
+ "providers": ["bluesky"],
934
+ "optional": true
935
+ },
936
+ {
937
+ "id": "bluesky.appPassword",
938
+ "label": "Bluesky App Password",
939
+ "description": "App-specific password for Bluesky API authentication.",
940
+ "envVar": "BLUESKY_APP_PASSWORD",
941
+ "docsUrl": "https://bsky.app/settings/app-passwords",
942
+ "providers": ["bluesky"],
943
+ "optional": true
944
+ },
945
+ {
946
+ "id": "mastodon.accessToken",
947
+ "label": "Mastodon Access Token",
948
+ "description": "Access token for Mastodon API calls.",
949
+ "envVar": "MASTODON_ACCESS_TOKEN",
950
+ "docsUrl": "https://docs.joinmastodon.org/client/token/",
951
+ "providers": ["mastodon"],
952
+ "optional": true
953
+ },
954
+ {
955
+ "id": "mastodon.instanceUrl",
956
+ "label": "Mastodon Instance URL",
957
+ "description": "Mastodon instance URL (for example, https://mastodon.social).",
958
+ "envVar": "MASTODON_INSTANCE_URL",
959
+ "docsUrl": "https://docs.joinmastodon.org/",
960
+ "providers": ["mastodon"],
961
+ "optional": true
962
+ },
963
+ {
964
+ "id": "farcaster.neynarApiKey",
965
+ "label": "Farcaster Neynar API Key",
966
+ "description": "API key for Neynar Farcaster API.",
967
+ "envVar": "FARCASTER_NEYNAR_API_KEY",
968
+ "docsUrl": "https://docs.neynar.com/docs/introduction",
969
+ "providers": ["farcaster"],
970
+ "optional": true
971
+ },
972
+ {
973
+ "id": "farcaster.signerUuid",
974
+ "label": "Farcaster Signer UUID",
975
+ "description": "Signer UUID used for authenticated cast publishing via Neynar.",
976
+ "envVar": "FARCASTER_SIGNER_UUID",
977
+ "docsUrl": "https://docs.neynar.com/docs/post-a-cast",
978
+ "providers": ["farcaster"],
979
+ "optional": true
980
+ },
981
+ {
982
+ "id": "farcaster.fid",
983
+ "label": "Farcaster FID",
984
+ "description": "Optional Farcaster user FID for account-scoped operations.",
985
+ "envVar": "FARCASTER_FID",
986
+ "docsUrl": "https://docs.neynar.com/docs/farcaster-user-profile",
987
+ "providers": ["farcaster"],
988
+ "optional": true
989
+ },
990
+ {
991
+ "id": "lemmy.instanceUrl",
992
+ "label": "Lemmy Instance URL",
993
+ "description": "Base URL for the Lemmy instance.",
994
+ "envVar": "LEMMY_INSTANCE_URL",
995
+ "docsUrl": "https://join-lemmy.org/docs",
996
+ "providers": ["lemmy"],
997
+ "optional": true
998
+ },
999
+ {
1000
+ "id": "lemmy.username",
1001
+ "label": "Lemmy Username",
1002
+ "description": "Username for Lemmy account authentication.",
1003
+ "envVar": "LEMMY_USERNAME",
1004
+ "docsUrl": "https://join-lemmy.org/",
1005
+ "providers": ["lemmy"],
1006
+ "optional": true
1007
+ },
1008
+ {
1009
+ "id": "lemmy.password",
1010
+ "label": "Lemmy Password",
1011
+ "description": "Password for Lemmy account authentication.",
1012
+ "envVar": "LEMMY_PASSWORD",
1013
+ "docsUrl": "https://join-lemmy.org/",
1014
+ "providers": ["lemmy"],
1015
+ "optional": true
1016
+ },
1017
+ {
1018
+ "id": "google.accessToken",
1019
+ "label": "Google OAuth Access Token",
1020
+ "description": "OAuth access token for Google Business Profile API calls.",
1021
+ "envVar": "GOOGLE_ACCESS_TOKEN",
1022
+ "docsUrl": "https://developers.google.com/my-business/content/prereqs",
1023
+ "providers": ["google-business"],
1024
+ "optional": true
1025
+ },
1026
+ {
1027
+ "id": "google.businessAccountId",
1028
+ "label": "Google Business Account ID",
1029
+ "description": "Optional account ID used to scope Google Business operations.",
1030
+ "envVar": "GOOGLE_BUSINESS_ACCOUNT_ID",
1031
+ "docsUrl": "https://developers.google.com/my-business/content/location-data",
1032
+ "providers": ["google-business"],
1033
+ "optional": true
1034
+ },
1035
+ {
1036
+ "id": "google.businessLocationId",
1037
+ "label": "Google Business Location ID",
1038
+ "description": "Optional location ID used to scope Google Business operations.",
1039
+ "envVar": "GOOGLE_BUSINESS_LOCATION_ID",
1040
+ "docsUrl": "https://developers.google.com/my-business/content/location-data",
1041
+ "providers": ["google-business"],
1042
+ "optional": true
1043
+ },
1044
+ {
1045
+ "id": "devto.apiKey",
1046
+ "label": "Dev.to API Key",
1047
+ "description": "API key for Dev.to publishing via blog-publisher.",
1048
+ "envVar": "DEVTO_API_KEY",
1049
+ "docsUrl": "https://developers.forem.com/api",
1050
+ "providers": ["devto"],
1051
+ "optional": true
1052
+ },
1053
+ {
1054
+ "id": "hashnode.apiKey",
1055
+ "label": "Hashnode Personal Access Token",
1056
+ "description": "Personal access token for Hashnode publishing via blog-publisher.",
1057
+ "envVar": "HASHNODE_API_KEY",
1058
+ "docsUrl": "https://hashnode.com/settings/developer",
1059
+ "providers": ["devto"],
1060
+ "optional": true
1061
+ },
1062
+ {
1063
+ "id": "medium.accessToken",
1064
+ "label": "Medium Integration Token",
1065
+ "description": "Integration token for Medium publishing via blog-publisher.",
1066
+ "envVar": "MEDIUM_ACCESS_TOKEN",
1067
+ "docsUrl": "https://github.com/Medium/medium-api-docs",
1068
+ "providers": ["devto"],
1069
+ "optional": true
1070
+ },
1071
+ {
1072
+ "id": "wordpress.apiUrl",
1073
+ "label": "WordPress API URL",
1074
+ "description": "WordPress REST API base URL (for example, https://example.com/wp-json/wp/v2).",
1075
+ "envVar": "WORDPRESS_API_URL",
1076
+ "docsUrl": "https://developer.wordpress.org/rest-api/",
1077
+ "providers": ["devto"],
1078
+ "optional": true
1079
+ },
1080
+ {
1081
+ "id": "wordpress.username",
1082
+ "label": "WordPress Username",
1083
+ "description": "Username used for WordPress application-password authentication.",
1084
+ "envVar": "WORDPRESS_USERNAME",
1085
+ "docsUrl": "https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/",
1086
+ "providers": ["devto"],
1087
+ "optional": true
1088
+ },
1089
+ {
1090
+ "id": "wordpress.appPassword",
1091
+ "label": "WordPress App Password",
1092
+ "description": "Application password for WordPress REST API authentication.",
1093
+ "envVar": "WORDPRESS_APP_PASSWORD",
1094
+ "docsUrl": "https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/",
1095
+ "providers": ["devto"],
1096
+ "optional": true
1097
+ }
1098
+ ]