@gakr-gakr/discord 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/autobot.plugin.json +3822 -2
  2. package/dist/account-inspect-BurjGCTj.js +81 -0
  3. package/dist/account-inspect-api.js +10 -0
  4. package/dist/accounts-D5DqI0BV.js +224 -0
  5. package/dist/action-runtime-api.js +2 -0
  6. package/dist/agent-components.runtime-CJq-_kal.js +4 -0
  7. package/dist/allow-list-C0CpJlpy.js +354 -0
  8. package/dist/api-DAT_1Fr7.js +130 -0
  9. package/dist/api.js +23 -0
  10. package/dist/approval-handler.runtime-BuLn-TC_.js +426 -0
  11. package/dist/audit-Dih3InVW.js +24 -0
  12. package/dist/audit-core-CdLWU9h5.js +105 -0
  13. package/dist/channel-Cr1Svb8n.js +795 -0
  14. package/dist/channel-actions-PjAfNPPx.js +173 -0
  15. package/dist/channel-actions.runtime-CA9g87VA.js +263 -0
  16. package/dist/channel-api-CsvHyKeb.js +21 -0
  17. package/dist/channel-config-api.js +2 -0
  18. package/dist/channel-plugin-api.js +2 -0
  19. package/dist/channel.setup-Cy6lzXfM.js +337 -0
  20. package/dist/components-DCwUkEpZ.js +912 -0
  21. package/dist/config-api-Bn-e_cu2.js +2 -0
  22. package/dist/config-schema-eATuS_WB.js +357 -0
  23. package/dist/configured-state.js +6 -0
  24. package/dist/contract-api.js +8 -0
  25. package/dist/conversation-identity-BPjFhB6-.js +270 -0
  26. package/dist/directory-config-D6skk8tk.js +49 -0
  27. package/dist/directory-contract-api.js +2 -0
  28. package/dist/directory-live-DYBWjgHC.js +159 -0
  29. package/dist/doctor-DvyzsvNV.js +244 -0
  30. package/dist/doctor-contract-BDfXsp-C.js +383 -0
  31. package/dist/doctor-contract-api.js +2 -0
  32. package/dist/gateway-registry-BKSpa4GB.js +74 -0
  33. package/dist/handle-action.guild-admin-Do7UDgk8.js +286 -0
  34. package/dist/inbound-context-D4kwqZQP.js +48 -0
  35. package/dist/inbound-event-delivery-DqLqaXJi.js +65 -0
  36. package/dist/index.js +26 -0
  37. package/dist/manager.runtime-DzegZBxs.js +2356 -0
  38. package/dist/message-handler-C3cdpf6u.js +381 -0
  39. package/dist/message-handler.preflight-CNmkn4lO.js +1113 -0
  40. package/dist/message-handler.process-CNZbpWeO.js +1449 -0
  41. package/dist/message-utils-Bteib1Ji.js +549 -0
  42. package/dist/outbound-adapter-B_97a57D.js +537 -0
  43. package/dist/pluralkit-nX4VbW-u.js +22 -0
  44. package/dist/preflight-audio-5FtcSFak.js +72 -0
  45. package/dist/preflight-audio.runtime-CMmqKlb7.js +7 -0
  46. package/dist/preview-streaming-CJ3wCDtz.js +8 -0
  47. package/dist/probe-CwvM-_J8.js +139 -0
  48. package/dist/probe.runtime-72_eIqYO.js +2 -0
  49. package/dist/provider-OAzh7zQY.js +9565 -0
  50. package/dist/provider-session.runtime-DGw8wKvR.js +6 -0
  51. package/dist/provider.runtime-hhv4lJBY.js +2 -0
  52. package/dist/resolve-allowlist-common-jSI1ubDr.js +34 -0
  53. package/dist/resolve-channels-BKCkANbp.js +265 -0
  54. package/dist/resolve-users-CKjLFBYA.js +120 -0
  55. package/dist/runtime-BgbMN4Fo.js +8 -0
  56. package/dist/runtime-api.actions.js +3 -0
  57. package/dist/runtime-api.js +30 -0
  58. package/dist/runtime-api.lookup.js +7 -0
  59. package/dist/runtime-api.monitor-PLZAzogU.js +5 -0
  60. package/dist/runtime-api.monitor.js +8 -0
  61. package/dist/runtime-api.send.js +6 -0
  62. package/dist/runtime-api.threads.js +6 -0
  63. package/dist/runtime-setter-api.js +2 -0
  64. package/dist/runtime-zobfg9lm.js +1073 -0
  65. package/dist/secret-config-contract-ODQ9XDVf.js +115 -0
  66. package/dist/secret-contract-api.js +2 -0
  67. package/dist/security-audit-A7UcysTc.js +120 -0
  68. package/dist/security-audit-contract-api.js +2 -0
  69. package/dist/security-audit.runtime-DBvo9O1H.js +2 -0
  70. package/dist/security-contract-api.js +2 -0
  71. package/dist/security-contract-hV_ooqfV.js +26 -0
  72. package/dist/security-doctor-DepqtNCI.js +18 -0
  73. package/dist/send-BtfEfme2.js +881 -0
  74. package/dist/send.components-BUuMPomy.js +474 -0
  75. package/dist/send.outbound-4xnadP6J.js +330 -0
  76. package/dist/send.receipt-CyCBpzz8.js +3119 -0
  77. package/dist/send.shared-C3TEp0hC.js +669 -0
  78. package/dist/sender-identity-DDn1VId7.js +43 -0
  79. package/dist/session-contract-Dwhw3RTY.js +6 -0
  80. package/dist/session-key-api.js +2 -0
  81. package/dist/session-key-normalization-Dga5W1PQ.js +23 -0
  82. package/dist/setup-entry.js +11 -0
  83. package/dist/setup-plugin-api.js +2 -0
  84. package/dist/shared-DfWP9vhX.js +171 -0
  85. package/dist/subagent-hooks-KjRB5Bjo.js +120 -0
  86. package/dist/subagent-hooks-api.js +22 -0
  87. package/dist/system-events-BGNWzFVn.js +34 -0
  88. package/dist/target-resolver-B_gVM7-3.js +82 -0
  89. package/dist/targets-BJDI4ous.js +3 -0
  90. package/dist/test-api.js +45 -0
  91. package/dist/thread-binding-api.js +4 -0
  92. package/dist/thread-bindings-zTnRG1Ti.js +255 -0
  93. package/dist/thread-bindings.discord-api-D1vWGyiR.js +244 -0
  94. package/dist/thread-bindings.manager-B1vgy0q8.js +534 -0
  95. package/dist/thread-bindings.session-updates-CBkm0S6X.js +54 -0
  96. package/dist/thread-bindings.state-JcwY_6Oh.js +318 -0
  97. package/dist/timeouts-CEwuGaWT.js +52 -0
  98. package/dist/timeouts.js +2 -0
  99. package/dist/typing-Byh-AcsJ.js +14 -0
  100. package/package.json +16 -4
  101. package/account-inspect-api.ts +0 -6
  102. package/action-runtime-api.ts +0 -1
  103. package/api.ts +0 -130
  104. package/channel-config-api.ts +0 -1
  105. package/channel-plugin-api.ts +0 -3
  106. package/config-api.ts +0 -4
  107. package/configured-state.ts +0 -6
  108. package/contract-api.ts +0 -21
  109. package/directory-contract-api.ts +0 -4
  110. package/doctor-contract-api.ts +0 -1
  111. package/index.ts +0 -24
  112. package/runtime-api.actions.ts +0 -15
  113. package/runtime-api.lookup.ts +0 -22
  114. package/runtime-api.monitor.ts +0 -50
  115. package/runtime-api.send.ts +0 -79
  116. package/runtime-api.threads.ts +0 -31
  117. package/runtime-api.ts +0 -181
  118. package/runtime-setter-api.ts +0 -3
  119. package/secret-contract-api.ts +0 -4
  120. package/security-audit-contract-api.ts +0 -1
  121. package/security-contract-api.ts +0 -4
  122. package/session-key-api.ts +0 -1
  123. package/setup-entry.ts +0 -9
  124. package/setup-plugin-api.ts +0 -3
  125. package/src/account-inspect.ts +0 -131
  126. package/src/accounts.ts +0 -205
  127. package/src/actions/handle-action.guild-admin.ts +0 -421
  128. package/src/actions/handle-action.ts +0 -402
  129. package/src/actions/runtime.guild.ts +0 -446
  130. package/src/actions/runtime.messaging.messages.ts +0 -226
  131. package/src/actions/runtime.messaging.reactions.ts +0 -67
  132. package/src/actions/runtime.messaging.runtime.ts +0 -73
  133. package/src/actions/runtime.messaging.send.ts +0 -336
  134. package/src/actions/runtime.messaging.shared.ts +0 -97
  135. package/src/actions/runtime.messaging.ts +0 -37
  136. package/src/actions/runtime.moderation-shared.ts +0 -48
  137. package/src/actions/runtime.moderation.ts +0 -116
  138. package/src/actions/runtime.presence.ts +0 -117
  139. package/src/actions/runtime.shared.ts +0 -86
  140. package/src/actions/runtime.ts +0 -87
  141. package/src/api.ts +0 -219
  142. package/src/approval-handler.runtime.ts +0 -636
  143. package/src/approval-native.ts +0 -219
  144. package/src/approval-runtime.ts +0 -14
  145. package/src/approval-shared.ts +0 -56
  146. package/src/audit-core.ts +0 -178
  147. package/src/audit.ts +0 -32
  148. package/src/channel-actions.runtime.ts +0 -1
  149. package/src/channel-actions.ts +0 -254
  150. package/src/channel-api.ts +0 -29
  151. package/src/channel.conversation.ts +0 -159
  152. package/src/channel.loaders.ts +0 -50
  153. package/src/channel.runtime.ts +0 -1
  154. package/src/channel.setup.ts +0 -12
  155. package/src/channel.ts +0 -728
  156. package/src/chunk.ts +0 -321
  157. package/src/client.ts +0 -143
  158. package/src/component-custom-id.ts +0 -72
  159. package/src/components-registry.ts +0 -356
  160. package/src/components.builders.ts +0 -410
  161. package/src/components.modal.ts +0 -124
  162. package/src/components.parse.ts +0 -407
  163. package/src/components.ts +0 -54
  164. package/src/components.types.ts +0 -187
  165. package/src/config-schema.ts +0 -6
  166. package/src/config-ui-hints.ts +0 -354
  167. package/src/conversation-identity.ts +0 -58
  168. package/src/delivery-retry.ts +0 -56
  169. package/src/directory-cache.ts +0 -116
  170. package/src/directory-config.ts +0 -58
  171. package/src/directory-live.ts +0 -135
  172. package/src/doctor-contract.ts +0 -477
  173. package/src/doctor-shared.ts +0 -5
  174. package/src/doctor.ts +0 -340
  175. package/src/draft-chunking.ts +0 -43
  176. package/src/draft-stream.ts +0 -162
  177. package/src/error-body.ts +0 -38
  178. package/src/exec-approvals.ts +0 -110
  179. package/src/gateway-logging.ts +0 -67
  180. package/src/group-policy.ts +0 -113
  181. package/src/guilds.ts +0 -29
  182. package/src/inbound-event-delivery.ts +0 -135
  183. package/src/interactive-dispatch.ts +0 -104
  184. package/src/internal/api.commands.ts +0 -51
  185. package/src/internal/api.guild.ts +0 -164
  186. package/src/internal/api.interactions.ts +0 -53
  187. package/src/internal/api.messages.ts +0 -113
  188. package/src/internal/api.reactions.ts +0 -38
  189. package/src/internal/api.ts +0 -61
  190. package/src/internal/api.users.ts +0 -19
  191. package/src/internal/api.webhooks.ts +0 -13
  192. package/src/internal/client.ts +0 -310
  193. package/src/internal/command-deploy.ts +0 -352
  194. package/src/internal/commands.ts +0 -188
  195. package/src/internal/components.base.ts +0 -65
  196. package/src/internal/components.message.ts +0 -279
  197. package/src/internal/components.modal.ts +0 -95
  198. package/src/internal/components.ts +0 -31
  199. package/src/internal/discord.ts +0 -11
  200. package/src/internal/embeds.ts +0 -35
  201. package/src/internal/entity-cache.ts +0 -98
  202. package/src/internal/event-queue.ts +0 -185
  203. package/src/internal/gateway-close-codes.ts +0 -25
  204. package/src/internal/gateway-dispatch.ts +0 -96
  205. package/src/internal/gateway-identify-limiter.ts +0 -26
  206. package/src/internal/gateway-lifecycle.ts +0 -75
  207. package/src/internal/gateway-rate-limit.ts +0 -104
  208. package/src/internal/gateway.ts +0 -479
  209. package/src/internal/interaction-dispatch.ts +0 -162
  210. package/src/internal/interaction-options.ts +0 -98
  211. package/src/internal/interaction-response.ts +0 -53
  212. package/src/internal/interactions.ts +0 -378
  213. package/src/internal/listeners.ts +0 -91
  214. package/src/internal/modal-fields.ts +0 -95
  215. package/src/internal/payload.ts +0 -69
  216. package/src/internal/rest-body.ts +0 -115
  217. package/src/internal/rest-errors.ts +0 -88
  218. package/src/internal/rest-routes.ts +0 -50
  219. package/src/internal/rest-scheduler.ts +0 -557
  220. package/src/internal/rest.ts +0 -322
  221. package/src/internal/schemas.ts +0 -36
  222. package/src/internal/structures.ts +0 -280
  223. package/src/internal/test-builders.test-support.ts +0 -167
  224. package/src/internal/voice.ts +0 -49
  225. package/src/media-detection.ts +0 -28
  226. package/src/mentions.ts +0 -147
  227. package/src/monitor/ack-reactions.ts +0 -70
  228. package/src/monitor/agent-components-auth.ts +0 -7
  229. package/src/monitor/agent-components-context.ts +0 -154
  230. package/src/monitor/agent-components-data.ts +0 -224
  231. package/src/monitor/agent-components-dm-auth.ts +0 -177
  232. package/src/monitor/agent-components-guild-auth.ts +0 -322
  233. package/src/monitor/agent-components-helpers.runtime.ts +0 -3
  234. package/src/monitor/agent-components-helpers.ts +0 -34
  235. package/src/monitor/agent-components-reply.ts +0 -10
  236. package/src/monitor/agent-components.deps.runtime.ts +0 -2
  237. package/src/monitor/agent-components.dispatch.ts +0 -359
  238. package/src/monitor/agent-components.handlers.ts +0 -303
  239. package/src/monitor/agent-components.modal.ts +0 -160
  240. package/src/monitor/agent-components.plugin-interactive.ts +0 -187
  241. package/src/monitor/agent-components.runtime.ts +0 -14
  242. package/src/monitor/agent-components.system-controls.ts +0 -215
  243. package/src/monitor/agent-components.ts +0 -70
  244. package/src/monitor/agent-components.types.ts +0 -58
  245. package/src/monitor/agent-components.wildcard-controls.ts +0 -171
  246. package/src/monitor/allow-list.ts +0 -631
  247. package/src/monitor/auto-presence.ts +0 -356
  248. package/src/monitor/channel-access.ts +0 -102
  249. package/src/monitor/commands.ts +0 -9
  250. package/src/monitor/dm-command-auth.ts +0 -259
  251. package/src/monitor/dm-command-decision.ts +0 -49
  252. package/src/monitor/exec-approvals.ts +0 -161
  253. package/src/monitor/format.ts +0 -45
  254. package/src/monitor/gateway-handle.ts +0 -34
  255. package/src/monitor/gateway-metadata.ts +0 -298
  256. package/src/monitor/gateway-plugin.ts +0 -302
  257. package/src/monitor/gateway-registry.ts +0 -37
  258. package/src/monitor/gateway-supervisor.ts +0 -206
  259. package/src/monitor/inbound-context.ts +0 -95
  260. package/src/monitor/inbound-dedupe.ts +0 -79
  261. package/src/monitor/inbound-job.ts +0 -118
  262. package/src/monitor/listeners.queue.ts +0 -91
  263. package/src/monitor/listeners.reactions.ts +0 -594
  264. package/src/monitor/listeners.ts +0 -150
  265. package/src/monitor/message-channel-info.ts +0 -96
  266. package/src/monitor/message-forwarded.ts +0 -114
  267. package/src/monitor/message-handler.batch-gate.ts +0 -19
  268. package/src/monitor/message-handler.context.ts +0 -492
  269. package/src/monitor/message-handler.dm-preflight.ts +0 -119
  270. package/src/monitor/message-handler.draft-preview.ts +0 -436
  271. package/src/monitor/message-handler.hydration.ts +0 -198
  272. package/src/monitor/message-handler.module-test-helpers.ts +0 -31
  273. package/src/monitor/message-handler.preflight-channel-access.ts +0 -86
  274. package/src/monitor/message-handler.preflight-channel-context.ts +0 -58
  275. package/src/monitor/message-handler.preflight-context.ts +0 -54
  276. package/src/monitor/message-handler.preflight-helpers.ts +0 -164
  277. package/src/monitor/message-handler.preflight-history.ts +0 -23
  278. package/src/monitor/message-handler.preflight-logging.ts +0 -36
  279. package/src/monitor/message-handler.preflight-pluralkit.ts +0 -28
  280. package/src/monitor/message-handler.preflight-runtime.ts +0 -28
  281. package/src/monitor/message-handler.preflight-thread.ts +0 -49
  282. package/src/monitor/message-handler.preflight.ts +0 -822
  283. package/src/monitor/message-handler.preflight.types.ts +0 -115
  284. package/src/monitor/message-handler.process.ts +0 -1033
  285. package/src/monitor/message-handler.routing-preflight.ts +0 -112
  286. package/src/monitor/message-handler.ts +0 -309
  287. package/src/monitor/message-media.ts +0 -536
  288. package/src/monitor/message-run-queue.ts +0 -101
  289. package/src/monitor/message-text.ts +0 -171
  290. package/src/monitor/message-utils.ts +0 -34
  291. package/src/monitor/model-picker-preferences.ts +0 -184
  292. package/src/monitor/model-picker.state.ts +0 -364
  293. package/src/monitor/model-picker.test-utils.ts +0 -26
  294. package/src/monitor/model-picker.ts +0 -38
  295. package/src/monitor/model-picker.view.ts +0 -722
  296. package/src/monitor/native-command-agent-reply.ts +0 -125
  297. package/src/monitor/native-command-arg-ui.ts +0 -233
  298. package/src/monitor/native-command-auth.ts +0 -309
  299. package/src/monitor/native-command-bypass.ts +0 -13
  300. package/src/monitor/native-command-context.ts +0 -109
  301. package/src/monitor/native-command-dispatch.ts +0 -35
  302. package/src/monitor/native-command-model-picker-apply.ts +0 -209
  303. package/src/monitor/native-command-model-picker-interaction.ts +0 -516
  304. package/src/monitor/native-command-model-picker-ui.ts +0 -357
  305. package/src/monitor/native-command-reply.ts +0 -185
  306. package/src/monitor/native-command-route.ts +0 -91
  307. package/src/monitor/native-command-status.ts +0 -76
  308. package/src/monitor/native-command-ui.ts +0 -26
  309. package/src/monitor/native-command-ui.types.ts +0 -20
  310. package/src/monitor/native-command.args.ts +0 -45
  311. package/src/monitor/native-command.options.ts +0 -153
  312. package/src/monitor/native-command.runtime.ts +0 -51
  313. package/src/monitor/native-command.ts +0 -747
  314. package/src/monitor/native-command.types.ts +0 -9
  315. package/src/monitor/native-interaction-channel-context.ts +0 -50
  316. package/src/monitor/preflight-audio.runtime.ts +0 -9
  317. package/src/monitor/preflight-audio.ts +0 -130
  318. package/src/monitor/presence-cache.ts +0 -61
  319. package/src/monitor/presence.ts +0 -50
  320. package/src/monitor/provider-session.runtime.ts +0 -12
  321. package/src/monitor/provider.acp.ts +0 -89
  322. package/src/monitor/provider.allowlist.ts +0 -398
  323. package/src/monitor/provider.cleanup.ts +0 -41
  324. package/src/monitor/provider.commands.ts +0 -129
  325. package/src/monitor/provider.config-log.ts +0 -45
  326. package/src/monitor/provider.deploy-errors.ts +0 -362
  327. package/src/monitor/provider.deploy.ts +0 -221
  328. package/src/monitor/provider.interactions.ts +0 -160
  329. package/src/monitor/provider.lifecycle.ts +0 -562
  330. package/src/monitor/provider.runtime.ts +0 -1
  331. package/src/monitor/provider.startup-log.ts +0 -32
  332. package/src/monitor/provider.startup.ts +0 -323
  333. package/src/monitor/provider.ts +0 -688
  334. package/src/monitor/reply-context.ts +0 -64
  335. package/src/monitor/reply-delivery.ts +0 -216
  336. package/src/monitor/reply-safety.ts +0 -96
  337. package/src/monitor/rest-fetch.ts +0 -97
  338. package/src/monitor/route-resolution.ts +0 -140
  339. package/src/monitor/sender-identity.ts +0 -81
  340. package/src/monitor/startup-status.ts +0 -10
  341. package/src/monitor/status.ts +0 -22
  342. package/src/monitor/system-events.ts +0 -55
  343. package/src/monitor/thread-bindings.config.ts +0 -35
  344. package/src/monitor/thread-bindings.discord-api.ts +0 -310
  345. package/src/monitor/thread-bindings.lifecycle.ts +0 -354
  346. package/src/monitor/thread-bindings.manager.ts +0 -554
  347. package/src/monitor/thread-bindings.messages.ts +0 -6
  348. package/src/monitor/thread-bindings.persona.ts +0 -25
  349. package/src/monitor/thread-bindings.session-adapter.ts +0 -229
  350. package/src/monitor/thread-bindings.session-shared.ts +0 -59
  351. package/src/monitor/thread-bindings.session-updates.ts +0 -35
  352. package/src/monitor/thread-bindings.state.ts +0 -540
  353. package/src/monitor/thread-bindings.ts +0 -48
  354. package/src/monitor/thread-bindings.types.ts +0 -83
  355. package/src/monitor/thread-channel-context.ts +0 -112
  356. package/src/monitor/thread-session-close.ts +0 -63
  357. package/src/monitor/thread-title.ts +0 -181
  358. package/src/monitor/threading.auto-thread.ts +0 -287
  359. package/src/monitor/threading.cache.ts +0 -45
  360. package/src/monitor/threading.starter.ts +0 -288
  361. package/src/monitor/threading.ts +0 -20
  362. package/src/monitor/threading.types.ts +0 -102
  363. package/src/monitor/timeouts.ts +0 -84
  364. package/src/monitor/typing.ts +0 -17
  365. package/src/monitor.gateway.ts +0 -75
  366. package/src/monitor.ts +0 -28
  367. package/src/network-config.ts +0 -79
  368. package/src/normalize.ts +0 -86
  369. package/src/outbound-adapter.ts +0 -327
  370. package/src/outbound-approval.ts +0 -29
  371. package/src/outbound-components.ts +0 -86
  372. package/src/outbound-payload.ts +0 -208
  373. package/src/outbound-send-context.ts +0 -92
  374. package/src/outbound-session-route.ts +0 -72
  375. package/src/pluralkit.ts +0 -58
  376. package/src/preview-streaming.ts +0 -18
  377. package/src/probe.runtime.ts +0 -1
  378. package/src/probe.ts +0 -237
  379. package/src/proxy-fetch.ts +0 -92
  380. package/src/proxy-request-client.ts +0 -21
  381. package/src/recipient-resolution.ts +0 -39
  382. package/src/resolve-allowlist-common.ts +0 -39
  383. package/src/resolve-channels.ts +0 -369
  384. package/src/resolve-users.ts +0 -184
  385. package/src/retry.ts +0 -98
  386. package/src/runtime-api.ts +0 -64
  387. package/src/runtime-config.ts +0 -16
  388. package/src/runtime.ts +0 -23
  389. package/src/secret-config-contract.ts +0 -140
  390. package/src/security-audit.runtime.ts +0 -1
  391. package/src/security-audit.ts +0 -208
  392. package/src/security-contract.ts +0 -47
  393. package/src/security-doctor.ts +0 -20
  394. package/src/security.ts +0 -60
  395. package/src/send-target-parsing.ts +0 -14
  396. package/src/send.channels.ts +0 -139
  397. package/src/send.components.ts +0 -391
  398. package/src/send.emojis-stickers.ts +0 -57
  399. package/src/send.guild.ts +0 -170
  400. package/src/send.message-request.ts +0 -112
  401. package/src/send.messages.ts +0 -229
  402. package/src/send.outbound.ts +0 -459
  403. package/src/send.permissions.ts +0 -283
  404. package/src/send.reactions.ts +0 -155
  405. package/src/send.receipt.ts +0 -69
  406. package/src/send.shared.ts +0 -469
  407. package/src/send.ts +0 -82
  408. package/src/send.types.ts +0 -191
  409. package/src/send.typing.ts +0 -9
  410. package/src/send.voice.ts +0 -140
  411. package/src/send.webhook.ts +0 -137
  412. package/src/session-contract.ts +0 -3
  413. package/src/session-key-normalization.ts +0 -47
  414. package/src/setup-account-state.ts +0 -144
  415. package/src/setup-adapter.ts +0 -14
  416. package/src/setup-core.ts +0 -215
  417. package/src/setup-runtime-helpers.ts +0 -10
  418. package/src/setup-surface.ts +0 -132
  419. package/src/shared-interactive.ts +0 -167
  420. package/src/shared.ts +0 -197
  421. package/src/status-issues.ts +0 -201
  422. package/src/subagent-hooks.ts +0 -232
  423. package/src/target-parsing.ts +0 -70
  424. package/src/target-resolver.ts +0 -129
  425. package/src/targets.ts +0 -12
  426. package/src/token.ts +0 -107
  427. package/src/ui-colors.ts +0 -27
  428. package/src/ui.ts +0 -20
  429. package/src/voice/access.ts +0 -126
  430. package/src/voice/audio.ts +0 -249
  431. package/src/voice/capture-state.ts +0 -120
  432. package/src/voice/command.ts +0 -284
  433. package/src/voice/config.ts +0 -8
  434. package/src/voice/ingress.ts +0 -164
  435. package/src/voice/manager.runtime.ts +0 -14
  436. package/src/voice/manager.ts +0 -1155
  437. package/src/voice/prompt.ts +0 -22
  438. package/src/voice/realtime.ts +0 -1370
  439. package/src/voice/receive-recovery.ts +0 -159
  440. package/src/voice/sanitize.ts +0 -29
  441. package/src/voice/sdk-runtime.ts +0 -14
  442. package/src/voice/segment.ts +0 -160
  443. package/src/voice/session.ts +0 -81
  444. package/src/voice/speaker-context.ts +0 -127
  445. package/src/voice/tts.ts +0 -151
  446. package/src/voice-message.ts +0 -474
  447. package/subagent-hooks-api.ts +0 -27
  448. package/test-api.ts +0 -4
  449. package/thread-binding-api.ts +0 -1
  450. package/timeouts.ts +0 -6
  451. package/tsconfig.json +0 -16
@@ -3,13 +3,3833 @@
3
3
  "activation": {
4
4
  "onStartup": false
5
5
  },
6
- "channels": ["discord"],
6
+ "channels": [
7
+ "discord"
8
+ ],
7
9
  "channelEnvVars": {
8
- "discord": ["DISCORD_BOT_TOKEN"]
10
+ "discord": [
11
+ "DISCORD_BOT_TOKEN"
12
+ ]
9
13
  },
10
14
  "configSchema": {
11
15
  "type": "object",
12
16
  "additionalProperties": false,
13
17
  "properties": {}
18
+ },
19
+ "channelConfigs": {
20
+ "discord": {
21
+ "schema": {
22
+ "$schema": "http://json-schema.org/draft-07/schema#",
23
+ "type": "object",
24
+ "properties": {
25
+ "name": {
26
+ "type": "string"
27
+ },
28
+ "capabilities": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "markdown": {
35
+ "type": "object",
36
+ "properties": {
37
+ "tables": {
38
+ "type": "string",
39
+ "enum": [
40
+ "off",
41
+ "bullets",
42
+ "code",
43
+ "block"
44
+ ]
45
+ }
46
+ },
47
+ "additionalProperties": false
48
+ },
49
+ "enabled": {
50
+ "type": "boolean"
51
+ },
52
+ "commands": {
53
+ "type": "object",
54
+ "properties": {
55
+ "native": {
56
+ "anyOf": [
57
+ {
58
+ "type": "boolean"
59
+ },
60
+ {
61
+ "type": "string",
62
+ "const": "auto"
63
+ }
64
+ ]
65
+ },
66
+ "nativeSkills": {
67
+ "anyOf": [
68
+ {
69
+ "type": "boolean"
70
+ },
71
+ {
72
+ "type": "string",
73
+ "const": "auto"
74
+ }
75
+ ]
76
+ }
77
+ },
78
+ "additionalProperties": false
79
+ },
80
+ "configWrites": {
81
+ "type": "boolean"
82
+ },
83
+ "token": {
84
+ "anyOf": [
85
+ {
86
+ "type": "string"
87
+ },
88
+ {
89
+ "oneOf": [
90
+ {
91
+ "type": "object",
92
+ "properties": {
93
+ "source": {
94
+ "type": "string",
95
+ "const": "env"
96
+ },
97
+ "provider": {
98
+ "type": "string",
99
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
100
+ },
101
+ "id": {
102
+ "type": "string",
103
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
104
+ }
105
+ },
106
+ "required": [
107
+ "source",
108
+ "provider",
109
+ "id"
110
+ ],
111
+ "additionalProperties": false
112
+ },
113
+ {
114
+ "type": "object",
115
+ "properties": {
116
+ "source": {
117
+ "type": "string",
118
+ "const": "file"
119
+ },
120
+ "provider": {
121
+ "type": "string",
122
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
123
+ },
124
+ "id": {
125
+ "type": "string"
126
+ }
127
+ },
128
+ "required": [
129
+ "source",
130
+ "provider",
131
+ "id"
132
+ ],
133
+ "additionalProperties": false
134
+ },
135
+ {
136
+ "type": "object",
137
+ "properties": {
138
+ "source": {
139
+ "type": "string",
140
+ "const": "exec"
141
+ },
142
+ "provider": {
143
+ "type": "string",
144
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
145
+ },
146
+ "id": {
147
+ "type": "string"
148
+ }
149
+ },
150
+ "required": [
151
+ "source",
152
+ "provider",
153
+ "id"
154
+ ],
155
+ "additionalProperties": false
156
+ }
157
+ ]
158
+ }
159
+ ]
160
+ },
161
+ "applicationId": {
162
+ "type": "string"
163
+ },
164
+ "proxy": {
165
+ "type": "string"
166
+ },
167
+ "gatewayInfoTimeoutMs": {
168
+ "type": "integer",
169
+ "exclusiveMinimum": 0,
170
+ "maximum": 120000
171
+ },
172
+ "gatewayReadyTimeoutMs": {
173
+ "type": "integer",
174
+ "exclusiveMinimum": 0,
175
+ "maximum": 120000
176
+ },
177
+ "gatewayRuntimeReadyTimeoutMs": {
178
+ "type": "integer",
179
+ "exclusiveMinimum": 0,
180
+ "maximum": 120000
181
+ },
182
+ "allowBots": {
183
+ "anyOf": [
184
+ {
185
+ "type": "boolean"
186
+ },
187
+ {
188
+ "type": "string",
189
+ "const": "mentions"
190
+ }
191
+ ]
192
+ },
193
+ "botLoopProtection": {
194
+ "type": "object",
195
+ "properties": {
196
+ "enabled": {
197
+ "type": "boolean"
198
+ },
199
+ "maxEventsPerWindow": {
200
+ "type": "integer",
201
+ "exclusiveMinimum": 0,
202
+ "maximum": 9007199254740991
203
+ },
204
+ "windowSeconds": {
205
+ "type": "integer",
206
+ "exclusiveMinimum": 0,
207
+ "maximum": 9007199254740991
208
+ },
209
+ "cooldownSeconds": {
210
+ "type": "integer",
211
+ "exclusiveMinimum": 0,
212
+ "maximum": 9007199254740991
213
+ }
214
+ },
215
+ "additionalProperties": false
216
+ },
217
+ "dangerouslyAllowNameMatching": {
218
+ "type": "boolean"
219
+ },
220
+ "mentionAliases": {
221
+ "type": "object",
222
+ "propertyNames": {
223
+ "type": "string"
224
+ },
225
+ "additionalProperties": {
226
+ "type": "string",
227
+ "pattern": "^\\d+$"
228
+ }
229
+ },
230
+ "groupPolicy": {
231
+ "default": "allowlist",
232
+ "type": "string",
233
+ "enum": [
234
+ "open",
235
+ "disabled",
236
+ "allowlist"
237
+ ]
238
+ },
239
+ "contextVisibility": {
240
+ "type": "string",
241
+ "enum": [
242
+ "all",
243
+ "allowlist",
244
+ "allowlist_quote"
245
+ ]
246
+ },
247
+ "historyLimit": {
248
+ "type": "integer",
249
+ "minimum": 0,
250
+ "maximum": 9007199254740991
251
+ },
252
+ "dmHistoryLimit": {
253
+ "type": "integer",
254
+ "minimum": 0,
255
+ "maximum": 9007199254740991
256
+ },
257
+ "dms": {
258
+ "type": "object",
259
+ "propertyNames": {
260
+ "type": "string"
261
+ },
262
+ "additionalProperties": {
263
+ "type": "object",
264
+ "properties": {
265
+ "historyLimit": {
266
+ "type": "integer",
267
+ "minimum": 0,
268
+ "maximum": 9007199254740991
269
+ }
270
+ },
271
+ "additionalProperties": false
272
+ }
273
+ },
274
+ "textChunkLimit": {
275
+ "type": "integer",
276
+ "exclusiveMinimum": 0,
277
+ "maximum": 9007199254740991
278
+ },
279
+ "suppressEmbeds": {
280
+ "type": "boolean"
281
+ },
282
+ "streaming": {
283
+ "type": "object",
284
+ "properties": {
285
+ "mode": {
286
+ "type": "string",
287
+ "enum": [
288
+ "off",
289
+ "partial",
290
+ "block",
291
+ "progress"
292
+ ]
293
+ },
294
+ "chunkMode": {
295
+ "type": "string",
296
+ "enum": [
297
+ "length",
298
+ "newline"
299
+ ]
300
+ },
301
+ "preview": {
302
+ "type": "object",
303
+ "properties": {
304
+ "chunk": {
305
+ "type": "object",
306
+ "properties": {
307
+ "minChars": {
308
+ "type": "integer",
309
+ "exclusiveMinimum": 0,
310
+ "maximum": 9007199254740991
311
+ },
312
+ "maxChars": {
313
+ "type": "integer",
314
+ "exclusiveMinimum": 0,
315
+ "maximum": 9007199254740991
316
+ },
317
+ "breakPreference": {
318
+ "anyOf": [
319
+ {
320
+ "type": "string",
321
+ "const": "paragraph"
322
+ },
323
+ {
324
+ "type": "string",
325
+ "const": "newline"
326
+ },
327
+ {
328
+ "type": "string",
329
+ "const": "sentence"
330
+ }
331
+ ]
332
+ }
333
+ },
334
+ "additionalProperties": false
335
+ },
336
+ "toolProgress": {
337
+ "type": "boolean"
338
+ },
339
+ "commandText": {
340
+ "type": "string",
341
+ "enum": [
342
+ "raw",
343
+ "status"
344
+ ]
345
+ }
346
+ },
347
+ "additionalProperties": false
348
+ },
349
+ "progress": {
350
+ "type": "object",
351
+ "properties": {
352
+ "label": {
353
+ "anyOf": [
354
+ {
355
+ "type": "string"
356
+ },
357
+ {
358
+ "type": "boolean",
359
+ "const": false
360
+ }
361
+ ]
362
+ },
363
+ "labels": {
364
+ "type": "array",
365
+ "items": {
366
+ "type": "string"
367
+ }
368
+ },
369
+ "maxLines": {
370
+ "type": "integer",
371
+ "exclusiveMinimum": 0,
372
+ "maximum": 9007199254740991
373
+ },
374
+ "maxLineChars": {
375
+ "type": "integer",
376
+ "exclusiveMinimum": 0,
377
+ "maximum": 9007199254740991
378
+ },
379
+ "render": {
380
+ "type": "string",
381
+ "enum": [
382
+ "text",
383
+ "rich"
384
+ ]
385
+ },
386
+ "toolProgress": {
387
+ "type": "boolean"
388
+ },
389
+ "commandText": {
390
+ "type": "string",
391
+ "enum": [
392
+ "raw",
393
+ "status"
394
+ ]
395
+ }
396
+ },
397
+ "additionalProperties": false
398
+ },
399
+ "block": {
400
+ "type": "object",
401
+ "properties": {
402
+ "enabled": {
403
+ "type": "boolean"
404
+ },
405
+ "coalesce": {
406
+ "type": "object",
407
+ "properties": {
408
+ "minChars": {
409
+ "type": "integer",
410
+ "exclusiveMinimum": 0,
411
+ "maximum": 9007199254740991
412
+ },
413
+ "maxChars": {
414
+ "type": "integer",
415
+ "exclusiveMinimum": 0,
416
+ "maximum": 9007199254740991
417
+ },
418
+ "idleMs": {
419
+ "type": "integer",
420
+ "minimum": 0,
421
+ "maximum": 9007199254740991
422
+ }
423
+ },
424
+ "additionalProperties": false
425
+ }
426
+ },
427
+ "additionalProperties": false
428
+ }
429
+ },
430
+ "additionalProperties": false
431
+ },
432
+ "maxLinesPerMessage": {
433
+ "type": "integer",
434
+ "exclusiveMinimum": 0,
435
+ "maximum": 9007199254740991
436
+ },
437
+ "mediaMaxMb": {
438
+ "type": "number",
439
+ "exclusiveMinimum": 0
440
+ },
441
+ "retry": {
442
+ "type": "object",
443
+ "properties": {
444
+ "attempts": {
445
+ "type": "integer",
446
+ "minimum": 1,
447
+ "maximum": 9007199254740991
448
+ },
449
+ "minDelayMs": {
450
+ "type": "integer",
451
+ "minimum": 0,
452
+ "maximum": 9007199254740991
453
+ },
454
+ "maxDelayMs": {
455
+ "type": "integer",
456
+ "minimum": 0,
457
+ "maximum": 9007199254740991
458
+ },
459
+ "jitter": {
460
+ "type": "number",
461
+ "minimum": 0,
462
+ "maximum": 1
463
+ }
464
+ },
465
+ "additionalProperties": false
466
+ },
467
+ "actions": {
468
+ "type": "object",
469
+ "properties": {
470
+ "reactions": {
471
+ "type": "boolean"
472
+ },
473
+ "stickers": {
474
+ "type": "boolean"
475
+ },
476
+ "emojiUploads": {
477
+ "type": "boolean"
478
+ },
479
+ "stickerUploads": {
480
+ "type": "boolean"
481
+ },
482
+ "polls": {
483
+ "type": "boolean"
484
+ },
485
+ "permissions": {
486
+ "type": "boolean"
487
+ },
488
+ "messages": {
489
+ "type": "boolean"
490
+ },
491
+ "threads": {
492
+ "type": "boolean"
493
+ },
494
+ "pins": {
495
+ "type": "boolean"
496
+ },
497
+ "search": {
498
+ "type": "boolean"
499
+ },
500
+ "memberInfo": {
501
+ "type": "boolean"
502
+ },
503
+ "roleInfo": {
504
+ "type": "boolean"
505
+ },
506
+ "roles": {
507
+ "type": "boolean"
508
+ },
509
+ "channelInfo": {
510
+ "type": "boolean"
511
+ },
512
+ "voiceStatus": {
513
+ "type": "boolean"
514
+ },
515
+ "events": {
516
+ "type": "boolean"
517
+ },
518
+ "moderation": {
519
+ "type": "boolean"
520
+ },
521
+ "channels": {
522
+ "type": "boolean"
523
+ },
524
+ "presence": {
525
+ "type": "boolean"
526
+ }
527
+ },
528
+ "additionalProperties": false
529
+ },
530
+ "replyToMode": {
531
+ "anyOf": [
532
+ {
533
+ "type": "string",
534
+ "const": "off"
535
+ },
536
+ {
537
+ "type": "string",
538
+ "const": "first"
539
+ },
540
+ {
541
+ "type": "string",
542
+ "const": "all"
543
+ },
544
+ {
545
+ "type": "string",
546
+ "const": "batched"
547
+ }
548
+ ]
549
+ },
550
+ "thread": {
551
+ "type": "object",
552
+ "properties": {
553
+ "inheritParent": {
554
+ "type": "boolean"
555
+ }
556
+ },
557
+ "additionalProperties": false
558
+ },
559
+ "dmPolicy": {
560
+ "type": "string",
561
+ "enum": [
562
+ "pairing",
563
+ "allowlist",
564
+ "open",
565
+ "disabled"
566
+ ]
567
+ },
568
+ "allowFrom": {
569
+ "type": "array",
570
+ "items": {
571
+ "type": "string"
572
+ }
573
+ },
574
+ "defaultTo": {
575
+ "type": "string"
576
+ },
577
+ "dm": {
578
+ "type": "object",
579
+ "properties": {
580
+ "enabled": {
581
+ "type": "boolean"
582
+ },
583
+ "policy": {
584
+ "type": "string",
585
+ "enum": [
586
+ "pairing",
587
+ "allowlist",
588
+ "open",
589
+ "disabled"
590
+ ]
591
+ },
592
+ "allowFrom": {
593
+ "type": "array",
594
+ "items": {
595
+ "type": "string"
596
+ }
597
+ },
598
+ "groupEnabled": {
599
+ "type": "boolean"
600
+ },
601
+ "groupChannels": {
602
+ "type": "array",
603
+ "items": {
604
+ "type": "string"
605
+ }
606
+ }
607
+ },
608
+ "additionalProperties": false
609
+ },
610
+ "guilds": {
611
+ "type": "object",
612
+ "propertyNames": {
613
+ "type": "string"
614
+ },
615
+ "additionalProperties": {
616
+ "type": "object",
617
+ "properties": {
618
+ "slug": {
619
+ "type": "string"
620
+ },
621
+ "requireMention": {
622
+ "type": "boolean"
623
+ },
624
+ "ignoreOtherMentions": {
625
+ "type": "boolean"
626
+ },
627
+ "tools": {
628
+ "type": "object",
629
+ "properties": {
630
+ "allow": {
631
+ "type": "array",
632
+ "items": {
633
+ "type": "string"
634
+ }
635
+ },
636
+ "alsoAllow": {
637
+ "type": "array",
638
+ "items": {
639
+ "type": "string"
640
+ }
641
+ },
642
+ "deny": {
643
+ "type": "array",
644
+ "items": {
645
+ "type": "string"
646
+ }
647
+ }
648
+ },
649
+ "additionalProperties": false
650
+ },
651
+ "toolsBySender": {
652
+ "type": "object",
653
+ "propertyNames": {
654
+ "type": "string"
655
+ },
656
+ "additionalProperties": {
657
+ "type": "object",
658
+ "properties": {
659
+ "allow": {
660
+ "type": "array",
661
+ "items": {
662
+ "type": "string"
663
+ }
664
+ },
665
+ "alsoAllow": {
666
+ "type": "array",
667
+ "items": {
668
+ "type": "string"
669
+ }
670
+ },
671
+ "deny": {
672
+ "type": "array",
673
+ "items": {
674
+ "type": "string"
675
+ }
676
+ }
677
+ },
678
+ "additionalProperties": false
679
+ }
680
+ },
681
+ "reactionNotifications": {
682
+ "type": "string",
683
+ "enum": [
684
+ "off",
685
+ "own",
686
+ "all",
687
+ "allowlist"
688
+ ]
689
+ },
690
+ "users": {
691
+ "type": "array",
692
+ "items": {
693
+ "type": "string"
694
+ }
695
+ },
696
+ "roles": {
697
+ "type": "array",
698
+ "items": {
699
+ "type": "string"
700
+ }
701
+ },
702
+ "channels": {
703
+ "type": "object",
704
+ "propertyNames": {
705
+ "type": "string"
706
+ },
707
+ "additionalProperties": {
708
+ "type": "object",
709
+ "properties": {
710
+ "requireMention": {
711
+ "type": "boolean"
712
+ },
713
+ "ignoreOtherMentions": {
714
+ "type": "boolean"
715
+ },
716
+ "tools": {
717
+ "type": "object",
718
+ "properties": {
719
+ "allow": {
720
+ "type": "array",
721
+ "items": {
722
+ "type": "string"
723
+ }
724
+ },
725
+ "alsoAllow": {
726
+ "type": "array",
727
+ "items": {
728
+ "type": "string"
729
+ }
730
+ },
731
+ "deny": {
732
+ "type": "array",
733
+ "items": {
734
+ "type": "string"
735
+ }
736
+ }
737
+ },
738
+ "additionalProperties": false
739
+ },
740
+ "toolsBySender": {
741
+ "type": "object",
742
+ "propertyNames": {
743
+ "type": "string"
744
+ },
745
+ "additionalProperties": {
746
+ "type": "object",
747
+ "properties": {
748
+ "allow": {
749
+ "type": "array",
750
+ "items": {
751
+ "type": "string"
752
+ }
753
+ },
754
+ "alsoAllow": {
755
+ "type": "array",
756
+ "items": {
757
+ "type": "string"
758
+ }
759
+ },
760
+ "deny": {
761
+ "type": "array",
762
+ "items": {
763
+ "type": "string"
764
+ }
765
+ }
766
+ },
767
+ "additionalProperties": false
768
+ }
769
+ },
770
+ "skills": {
771
+ "type": "array",
772
+ "items": {
773
+ "type": "string"
774
+ }
775
+ },
776
+ "enabled": {
777
+ "type": "boolean"
778
+ },
779
+ "users": {
780
+ "type": "array",
781
+ "items": {
782
+ "type": "string"
783
+ }
784
+ },
785
+ "roles": {
786
+ "type": "array",
787
+ "items": {
788
+ "type": "string"
789
+ }
790
+ },
791
+ "systemPrompt": {
792
+ "type": "string"
793
+ },
794
+ "includeThreadStarter": {
795
+ "type": "boolean"
796
+ },
797
+ "autoThread": {
798
+ "type": "boolean"
799
+ },
800
+ "autoThreadName": {
801
+ "type": "string",
802
+ "enum": [
803
+ "message",
804
+ "generated"
805
+ ]
806
+ },
807
+ "autoArchiveDuration": {
808
+ "anyOf": [
809
+ {
810
+ "type": "string",
811
+ "enum": [
812
+ "60",
813
+ "1440",
814
+ "4320",
815
+ "10080"
816
+ ]
817
+ },
818
+ {
819
+ "type": "number",
820
+ "const": 60
821
+ },
822
+ {
823
+ "type": "number",
824
+ "const": 1440
825
+ },
826
+ {
827
+ "type": "number",
828
+ "const": 4320
829
+ },
830
+ {
831
+ "type": "number",
832
+ "const": 10080
833
+ }
834
+ ]
835
+ }
836
+ },
837
+ "additionalProperties": false
838
+ }
839
+ }
840
+ },
841
+ "additionalProperties": false
842
+ }
843
+ },
844
+ "heartbeat": {
845
+ "type": "object",
846
+ "properties": {
847
+ "showOk": {
848
+ "type": "boolean"
849
+ },
850
+ "showAlerts": {
851
+ "type": "boolean"
852
+ },
853
+ "useIndicator": {
854
+ "type": "boolean"
855
+ }
856
+ },
857
+ "additionalProperties": false
858
+ },
859
+ "healthMonitor": {
860
+ "type": "object",
861
+ "properties": {
862
+ "enabled": {
863
+ "type": "boolean"
864
+ }
865
+ },
866
+ "additionalProperties": false
867
+ },
868
+ "execApprovals": {
869
+ "type": "object",
870
+ "properties": {
871
+ "enabled": {
872
+ "type": "boolean"
873
+ },
874
+ "approvers": {
875
+ "type": "array",
876
+ "items": {
877
+ "type": "string"
878
+ }
879
+ },
880
+ "agentFilter": {
881
+ "type": "array",
882
+ "items": {
883
+ "type": "string"
884
+ }
885
+ },
886
+ "sessionFilter": {
887
+ "type": "array",
888
+ "items": {
889
+ "type": "string"
890
+ }
891
+ },
892
+ "cleanupAfterResolve": {
893
+ "type": "boolean"
894
+ },
895
+ "target": {
896
+ "type": "string",
897
+ "enum": [
898
+ "dm",
899
+ "channel",
900
+ "both"
901
+ ]
902
+ }
903
+ },
904
+ "additionalProperties": false
905
+ },
906
+ "agentComponents": {
907
+ "type": "object",
908
+ "properties": {
909
+ "enabled": {
910
+ "type": "boolean"
911
+ }
912
+ },
913
+ "additionalProperties": false
914
+ },
915
+ "ui": {
916
+ "type": "object",
917
+ "properties": {
918
+ "components": {
919
+ "type": "object",
920
+ "properties": {
921
+ "accentColor": {
922
+ "type": "string",
923
+ "pattern": "^#?[0-9a-fA-F]{6}$"
924
+ }
925
+ },
926
+ "additionalProperties": false
927
+ }
928
+ },
929
+ "additionalProperties": false
930
+ },
931
+ "slashCommand": {
932
+ "type": "object",
933
+ "properties": {
934
+ "ephemeral": {
935
+ "type": "boolean"
936
+ }
937
+ },
938
+ "additionalProperties": false
939
+ },
940
+ "threadBindings": {
941
+ "type": "object",
942
+ "properties": {
943
+ "enabled": {
944
+ "type": "boolean"
945
+ },
946
+ "idleHours": {
947
+ "type": "number",
948
+ "minimum": 0
949
+ },
950
+ "maxAgeHours": {
951
+ "type": "number",
952
+ "minimum": 0
953
+ },
954
+ "spawnSessions": {
955
+ "type": "boolean"
956
+ },
957
+ "defaultSpawnContext": {
958
+ "type": "string",
959
+ "enum": [
960
+ "isolated",
961
+ "fork"
962
+ ]
963
+ },
964
+ "spawnSubagentSessions": {
965
+ "type": "boolean"
966
+ },
967
+ "spawnAcpSessions": {
968
+ "type": "boolean"
969
+ }
970
+ },
971
+ "additionalProperties": false
972
+ },
973
+ "intents": {
974
+ "type": "object",
975
+ "properties": {
976
+ "presence": {
977
+ "type": "boolean"
978
+ },
979
+ "guildMembers": {
980
+ "type": "boolean"
981
+ },
982
+ "voiceStates": {
983
+ "type": "boolean"
984
+ }
985
+ },
986
+ "additionalProperties": false
987
+ },
988
+ "voice": {
989
+ "type": "object",
990
+ "properties": {
991
+ "enabled": {
992
+ "type": "boolean"
993
+ },
994
+ "mode": {
995
+ "type": "string",
996
+ "enum": [
997
+ "stt-tts",
998
+ "agent-proxy",
999
+ "bidi"
1000
+ ]
1001
+ },
1002
+ "agentSession": {
1003
+ "type": "object",
1004
+ "properties": {
1005
+ "mode": {
1006
+ "type": "string",
1007
+ "enum": [
1008
+ "voice",
1009
+ "target"
1010
+ ]
1011
+ },
1012
+ "target": {
1013
+ "type": "string",
1014
+ "minLength": 1
1015
+ }
1016
+ },
1017
+ "additionalProperties": false
1018
+ },
1019
+ "model": {
1020
+ "type": "string",
1021
+ "minLength": 1
1022
+ },
1023
+ "realtime": {
1024
+ "type": "object",
1025
+ "properties": {
1026
+ "provider": {
1027
+ "type": "string",
1028
+ "minLength": 1
1029
+ },
1030
+ "model": {
1031
+ "type": "string",
1032
+ "minLength": 1
1033
+ },
1034
+ "voice": {
1035
+ "type": "string",
1036
+ "minLength": 1
1037
+ },
1038
+ "instructions": {
1039
+ "type": "string",
1040
+ "minLength": 1
1041
+ },
1042
+ "toolPolicy": {
1043
+ "type": "string",
1044
+ "enum": [
1045
+ "safe-read-only",
1046
+ "owner",
1047
+ "none"
1048
+ ]
1049
+ },
1050
+ "consultPolicy": {
1051
+ "type": "string",
1052
+ "enum": [
1053
+ "auto",
1054
+ "always"
1055
+ ]
1056
+ },
1057
+ "bargeIn": {
1058
+ "type": "boolean"
1059
+ },
1060
+ "minBargeInAudioEndMs": {
1061
+ "type": "integer",
1062
+ "minimum": 0,
1063
+ "maximum": 10000
1064
+ },
1065
+ "debounceMs": {
1066
+ "type": "integer",
1067
+ "exclusiveMinimum": 0,
1068
+ "maximum": 10000
1069
+ },
1070
+ "providers": {
1071
+ "type": "object",
1072
+ "propertyNames": {
1073
+ "type": "string"
1074
+ },
1075
+ "additionalProperties": {
1076
+ "type": "object",
1077
+ "propertyNames": {
1078
+ "type": "string"
1079
+ },
1080
+ "additionalProperties": {}
1081
+ }
1082
+ }
1083
+ },
1084
+ "additionalProperties": false
1085
+ },
1086
+ "autoJoin": {
1087
+ "type": "array",
1088
+ "items": {
1089
+ "type": "object",
1090
+ "properties": {
1091
+ "guildId": {
1092
+ "type": "string",
1093
+ "minLength": 1
1094
+ },
1095
+ "channelId": {
1096
+ "type": "string",
1097
+ "minLength": 1
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "guildId",
1102
+ "channelId"
1103
+ ],
1104
+ "additionalProperties": false
1105
+ }
1106
+ },
1107
+ "allowedChannels": {
1108
+ "type": "array",
1109
+ "items": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "guildId": {
1113
+ "type": "string",
1114
+ "minLength": 1
1115
+ },
1116
+ "channelId": {
1117
+ "type": "string",
1118
+ "minLength": 1
1119
+ }
1120
+ },
1121
+ "required": [
1122
+ "guildId",
1123
+ "channelId"
1124
+ ],
1125
+ "additionalProperties": false
1126
+ }
1127
+ },
1128
+ "daveEncryption": {
1129
+ "type": "boolean"
1130
+ },
1131
+ "decryptionFailureTolerance": {
1132
+ "type": "integer",
1133
+ "minimum": 0,
1134
+ "maximum": 9007199254740991
1135
+ },
1136
+ "connectTimeoutMs": {
1137
+ "type": "integer",
1138
+ "exclusiveMinimum": 0,
1139
+ "maximum": 120000
1140
+ },
1141
+ "reconnectGraceMs": {
1142
+ "type": "integer",
1143
+ "exclusiveMinimum": 0,
1144
+ "maximum": 120000
1145
+ },
1146
+ "captureSilenceGraceMs": {
1147
+ "type": "integer",
1148
+ "exclusiveMinimum": 0,
1149
+ "maximum": 30000
1150
+ },
1151
+ "tts": {
1152
+ "type": "object",
1153
+ "properties": {
1154
+ "auto": {
1155
+ "type": "string",
1156
+ "enum": [
1157
+ "off",
1158
+ "always",
1159
+ "inbound",
1160
+ "tagged"
1161
+ ]
1162
+ },
1163
+ "enabled": {
1164
+ "type": "boolean"
1165
+ },
1166
+ "mode": {
1167
+ "type": "string",
1168
+ "enum": [
1169
+ "final",
1170
+ "all"
1171
+ ]
1172
+ },
1173
+ "provider": {
1174
+ "type": "string",
1175
+ "minLength": 1
1176
+ },
1177
+ "persona": {
1178
+ "type": "string"
1179
+ },
1180
+ "personas": {
1181
+ "type": "object",
1182
+ "propertyNames": {
1183
+ "type": "string"
1184
+ },
1185
+ "additionalProperties": {
1186
+ "type": "object",
1187
+ "properties": {
1188
+ "label": {
1189
+ "type": "string"
1190
+ },
1191
+ "description": {
1192
+ "type": "string"
1193
+ },
1194
+ "provider": {
1195
+ "type": "string",
1196
+ "minLength": 1
1197
+ },
1198
+ "fallbackPolicy": {
1199
+ "anyOf": [
1200
+ {
1201
+ "type": "string",
1202
+ "const": "preserve-persona"
1203
+ },
1204
+ {
1205
+ "type": "string",
1206
+ "const": "provider-defaults"
1207
+ },
1208
+ {
1209
+ "type": "string",
1210
+ "const": "fail"
1211
+ }
1212
+ ]
1213
+ },
1214
+ "prompt": {
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "profile": {
1218
+ "type": "string"
1219
+ },
1220
+ "scene": {
1221
+ "type": "string"
1222
+ },
1223
+ "sampleContext": {
1224
+ "type": "string"
1225
+ },
1226
+ "style": {
1227
+ "type": "string"
1228
+ },
1229
+ "accent": {
1230
+ "type": "string"
1231
+ },
1232
+ "pacing": {
1233
+ "type": "string"
1234
+ },
1235
+ "constraints": {
1236
+ "type": "array",
1237
+ "items": {
1238
+ "type": "string"
1239
+ }
1240
+ }
1241
+ },
1242
+ "additionalProperties": false
1243
+ },
1244
+ "providers": {
1245
+ "type": "object",
1246
+ "propertyNames": {
1247
+ "type": "string"
1248
+ },
1249
+ "additionalProperties": {
1250
+ "type": "object",
1251
+ "properties": {
1252
+ "apiKey": {
1253
+ "anyOf": [
1254
+ {
1255
+ "type": "string"
1256
+ },
1257
+ {
1258
+ "oneOf": [
1259
+ {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "source": {
1263
+ "type": "string",
1264
+ "const": "env"
1265
+ },
1266
+ "provider": {
1267
+ "type": "string",
1268
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1269
+ },
1270
+ "id": {
1271
+ "type": "string",
1272
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1273
+ }
1274
+ },
1275
+ "required": [
1276
+ "source",
1277
+ "provider",
1278
+ "id"
1279
+ ],
1280
+ "additionalProperties": false
1281
+ },
1282
+ {
1283
+ "type": "object",
1284
+ "properties": {
1285
+ "source": {
1286
+ "type": "string",
1287
+ "const": "file"
1288
+ },
1289
+ "provider": {
1290
+ "type": "string",
1291
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1292
+ },
1293
+ "id": {
1294
+ "type": "string"
1295
+ }
1296
+ },
1297
+ "required": [
1298
+ "source",
1299
+ "provider",
1300
+ "id"
1301
+ ],
1302
+ "additionalProperties": false
1303
+ },
1304
+ {
1305
+ "type": "object",
1306
+ "properties": {
1307
+ "source": {
1308
+ "type": "string",
1309
+ "const": "exec"
1310
+ },
1311
+ "provider": {
1312
+ "type": "string",
1313
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1314
+ },
1315
+ "id": {
1316
+ "type": "string"
1317
+ }
1318
+ },
1319
+ "required": [
1320
+ "source",
1321
+ "provider",
1322
+ "id"
1323
+ ],
1324
+ "additionalProperties": false
1325
+ }
1326
+ ]
1327
+ }
1328
+ ]
1329
+ }
1330
+ },
1331
+ "additionalProperties": {
1332
+ "anyOf": [
1333
+ {
1334
+ "type": "string"
1335
+ },
1336
+ {
1337
+ "type": "number"
1338
+ },
1339
+ {
1340
+ "type": "boolean"
1341
+ },
1342
+ {
1343
+ "type": "null"
1344
+ },
1345
+ {
1346
+ "type": "array",
1347
+ "items": {}
1348
+ },
1349
+ {
1350
+ "type": "object",
1351
+ "propertyNames": {
1352
+ "type": "string"
1353
+ },
1354
+ "additionalProperties": {}
1355
+ }
1356
+ ]
1357
+ }
1358
+ }
1359
+ }
1360
+ },
1361
+ "additionalProperties": false
1362
+ }
1363
+ },
1364
+ "summaryModel": {
1365
+ "type": "string"
1366
+ },
1367
+ "modelOverrides": {
1368
+ "type": "object",
1369
+ "properties": {
1370
+ "enabled": {
1371
+ "type": "boolean"
1372
+ },
1373
+ "allowText": {
1374
+ "type": "boolean"
1375
+ },
1376
+ "allowProvider": {
1377
+ "type": "boolean"
1378
+ },
1379
+ "allowVoice": {
1380
+ "type": "boolean"
1381
+ },
1382
+ "allowModelId": {
1383
+ "type": "boolean"
1384
+ },
1385
+ "allowVoiceSettings": {
1386
+ "type": "boolean"
1387
+ },
1388
+ "allowNormalization": {
1389
+ "type": "boolean"
1390
+ },
1391
+ "allowSeed": {
1392
+ "type": "boolean"
1393
+ }
1394
+ },
1395
+ "additionalProperties": false
1396
+ },
1397
+ "providers": {
1398
+ "type": "object",
1399
+ "propertyNames": {
1400
+ "type": "string"
1401
+ },
1402
+ "additionalProperties": {
1403
+ "type": "object",
1404
+ "properties": {
1405
+ "apiKey": {
1406
+ "anyOf": [
1407
+ {
1408
+ "type": "string"
1409
+ },
1410
+ {
1411
+ "oneOf": [
1412
+ {
1413
+ "type": "object",
1414
+ "properties": {
1415
+ "source": {
1416
+ "type": "string",
1417
+ "const": "env"
1418
+ },
1419
+ "provider": {
1420
+ "type": "string",
1421
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1422
+ },
1423
+ "id": {
1424
+ "type": "string",
1425
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1426
+ }
1427
+ },
1428
+ "required": [
1429
+ "source",
1430
+ "provider",
1431
+ "id"
1432
+ ],
1433
+ "additionalProperties": false
1434
+ },
1435
+ {
1436
+ "type": "object",
1437
+ "properties": {
1438
+ "source": {
1439
+ "type": "string",
1440
+ "const": "file"
1441
+ },
1442
+ "provider": {
1443
+ "type": "string",
1444
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1445
+ },
1446
+ "id": {
1447
+ "type": "string"
1448
+ }
1449
+ },
1450
+ "required": [
1451
+ "source",
1452
+ "provider",
1453
+ "id"
1454
+ ],
1455
+ "additionalProperties": false
1456
+ },
1457
+ {
1458
+ "type": "object",
1459
+ "properties": {
1460
+ "source": {
1461
+ "type": "string",
1462
+ "const": "exec"
1463
+ },
1464
+ "provider": {
1465
+ "type": "string",
1466
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1467
+ },
1468
+ "id": {
1469
+ "type": "string"
1470
+ }
1471
+ },
1472
+ "required": [
1473
+ "source",
1474
+ "provider",
1475
+ "id"
1476
+ ],
1477
+ "additionalProperties": false
1478
+ }
1479
+ ]
1480
+ }
1481
+ ]
1482
+ }
1483
+ },
1484
+ "additionalProperties": {
1485
+ "anyOf": [
1486
+ {
1487
+ "type": "string"
1488
+ },
1489
+ {
1490
+ "type": "number"
1491
+ },
1492
+ {
1493
+ "type": "boolean"
1494
+ },
1495
+ {
1496
+ "type": "null"
1497
+ },
1498
+ {
1499
+ "type": "array",
1500
+ "items": {}
1501
+ },
1502
+ {
1503
+ "type": "object",
1504
+ "propertyNames": {
1505
+ "type": "string"
1506
+ },
1507
+ "additionalProperties": {}
1508
+ }
1509
+ ]
1510
+ }
1511
+ }
1512
+ },
1513
+ "prefsPath": {
1514
+ "type": "string"
1515
+ },
1516
+ "maxTextLength": {
1517
+ "type": "integer",
1518
+ "minimum": 1,
1519
+ "maximum": 9007199254740991
1520
+ },
1521
+ "timeoutMs": {
1522
+ "type": "integer",
1523
+ "minimum": 1000,
1524
+ "maximum": 120000
1525
+ }
1526
+ },
1527
+ "additionalProperties": false
1528
+ }
1529
+ },
1530
+ "additionalProperties": false
1531
+ },
1532
+ "pluralkit": {
1533
+ "type": "object",
1534
+ "properties": {
1535
+ "enabled": {
1536
+ "type": "boolean"
1537
+ },
1538
+ "token": {
1539
+ "anyOf": [
1540
+ {
1541
+ "type": "string"
1542
+ },
1543
+ {
1544
+ "oneOf": [
1545
+ {
1546
+ "type": "object",
1547
+ "properties": {
1548
+ "source": {
1549
+ "type": "string",
1550
+ "const": "env"
1551
+ },
1552
+ "provider": {
1553
+ "type": "string",
1554
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1555
+ },
1556
+ "id": {
1557
+ "type": "string",
1558
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1559
+ }
1560
+ },
1561
+ "required": [
1562
+ "source",
1563
+ "provider",
1564
+ "id"
1565
+ ],
1566
+ "additionalProperties": false
1567
+ },
1568
+ {
1569
+ "type": "object",
1570
+ "properties": {
1571
+ "source": {
1572
+ "type": "string",
1573
+ "const": "file"
1574
+ },
1575
+ "provider": {
1576
+ "type": "string",
1577
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1578
+ },
1579
+ "id": {
1580
+ "type": "string"
1581
+ }
1582
+ },
1583
+ "required": [
1584
+ "source",
1585
+ "provider",
1586
+ "id"
1587
+ ],
1588
+ "additionalProperties": false
1589
+ },
1590
+ {
1591
+ "type": "object",
1592
+ "properties": {
1593
+ "source": {
1594
+ "type": "string",
1595
+ "const": "exec"
1596
+ },
1597
+ "provider": {
1598
+ "type": "string",
1599
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1600
+ },
1601
+ "id": {
1602
+ "type": "string"
1603
+ }
1604
+ },
1605
+ "required": [
1606
+ "source",
1607
+ "provider",
1608
+ "id"
1609
+ ],
1610
+ "additionalProperties": false
1611
+ }
1612
+ ]
1613
+ }
1614
+ ]
1615
+ }
1616
+ },
1617
+ "additionalProperties": false
1618
+ },
1619
+ "responsePrefix": {
1620
+ "type": "string"
1621
+ },
1622
+ "ackReaction": {
1623
+ "type": "string"
1624
+ },
1625
+ "ackReactionScope": {
1626
+ "type": "string",
1627
+ "enum": [
1628
+ "group-mentions",
1629
+ "group-all",
1630
+ "direct",
1631
+ "all",
1632
+ "off",
1633
+ "none"
1634
+ ]
1635
+ },
1636
+ "activity": {
1637
+ "type": "string"
1638
+ },
1639
+ "status": {
1640
+ "type": "string",
1641
+ "enum": [
1642
+ "online",
1643
+ "dnd",
1644
+ "idle",
1645
+ "invisible"
1646
+ ]
1647
+ },
1648
+ "autoPresence": {
1649
+ "type": "object",
1650
+ "properties": {
1651
+ "enabled": {
1652
+ "type": "boolean"
1653
+ },
1654
+ "intervalMs": {
1655
+ "type": "integer",
1656
+ "exclusiveMinimum": 0,
1657
+ "maximum": 9007199254740991
1658
+ },
1659
+ "minUpdateIntervalMs": {
1660
+ "type": "integer",
1661
+ "exclusiveMinimum": 0,
1662
+ "maximum": 9007199254740991
1663
+ },
1664
+ "healthyText": {
1665
+ "type": "string"
1666
+ },
1667
+ "degradedText": {
1668
+ "type": "string"
1669
+ },
1670
+ "exhaustedText": {
1671
+ "type": "string"
1672
+ }
1673
+ },
1674
+ "additionalProperties": false
1675
+ },
1676
+ "activityType": {
1677
+ "anyOf": [
1678
+ {
1679
+ "type": "number",
1680
+ "const": 0
1681
+ },
1682
+ {
1683
+ "type": "number",
1684
+ "const": 1
1685
+ },
1686
+ {
1687
+ "type": "number",
1688
+ "const": 2
1689
+ },
1690
+ {
1691
+ "type": "number",
1692
+ "const": 3
1693
+ },
1694
+ {
1695
+ "type": "number",
1696
+ "const": 4
1697
+ },
1698
+ {
1699
+ "type": "number",
1700
+ "const": 5
1701
+ }
1702
+ ]
1703
+ },
1704
+ "activityUrl": {
1705
+ "type": "string",
1706
+ "format": "uri"
1707
+ },
1708
+ "inboundWorker": {
1709
+ "type": "object",
1710
+ "properties": {
1711
+ "runTimeoutMs": {
1712
+ "type": "integer",
1713
+ "minimum": 0,
1714
+ "maximum": 9007199254740991
1715
+ }
1716
+ },
1717
+ "additionalProperties": false
1718
+ },
1719
+ "eventQueue": {
1720
+ "type": "object",
1721
+ "properties": {
1722
+ "listenerTimeout": {
1723
+ "type": "integer",
1724
+ "exclusiveMinimum": 0,
1725
+ "maximum": 9007199254740991
1726
+ },
1727
+ "maxQueueSize": {
1728
+ "type": "integer",
1729
+ "exclusiveMinimum": 0,
1730
+ "maximum": 9007199254740991
1731
+ },
1732
+ "maxConcurrency": {
1733
+ "type": "integer",
1734
+ "exclusiveMinimum": 0,
1735
+ "maximum": 9007199254740991
1736
+ }
1737
+ },
1738
+ "additionalProperties": false
1739
+ },
1740
+ "accounts": {
1741
+ "type": "object",
1742
+ "propertyNames": {
1743
+ "type": "string"
1744
+ },
1745
+ "additionalProperties": {
1746
+ "type": "object",
1747
+ "properties": {
1748
+ "name": {
1749
+ "type": "string"
1750
+ },
1751
+ "capabilities": {
1752
+ "type": "array",
1753
+ "items": {
1754
+ "type": "string"
1755
+ }
1756
+ },
1757
+ "markdown": {
1758
+ "type": "object",
1759
+ "properties": {
1760
+ "tables": {
1761
+ "type": "string",
1762
+ "enum": [
1763
+ "off",
1764
+ "bullets",
1765
+ "code",
1766
+ "block"
1767
+ ]
1768
+ }
1769
+ },
1770
+ "additionalProperties": false
1771
+ },
1772
+ "enabled": {
1773
+ "type": "boolean"
1774
+ },
1775
+ "commands": {
1776
+ "type": "object",
1777
+ "properties": {
1778
+ "native": {
1779
+ "anyOf": [
1780
+ {
1781
+ "type": "boolean"
1782
+ },
1783
+ {
1784
+ "type": "string",
1785
+ "const": "auto"
1786
+ }
1787
+ ]
1788
+ },
1789
+ "nativeSkills": {
1790
+ "anyOf": [
1791
+ {
1792
+ "type": "boolean"
1793
+ },
1794
+ {
1795
+ "type": "string",
1796
+ "const": "auto"
1797
+ }
1798
+ ]
1799
+ }
1800
+ },
1801
+ "additionalProperties": false
1802
+ },
1803
+ "configWrites": {
1804
+ "type": "boolean"
1805
+ },
1806
+ "token": {
1807
+ "anyOf": [
1808
+ {
1809
+ "type": "string"
1810
+ },
1811
+ {
1812
+ "oneOf": [
1813
+ {
1814
+ "type": "object",
1815
+ "properties": {
1816
+ "source": {
1817
+ "type": "string",
1818
+ "const": "env"
1819
+ },
1820
+ "provider": {
1821
+ "type": "string",
1822
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1823
+ },
1824
+ "id": {
1825
+ "type": "string",
1826
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1827
+ }
1828
+ },
1829
+ "required": [
1830
+ "source",
1831
+ "provider",
1832
+ "id"
1833
+ ],
1834
+ "additionalProperties": false
1835
+ },
1836
+ {
1837
+ "type": "object",
1838
+ "properties": {
1839
+ "source": {
1840
+ "type": "string",
1841
+ "const": "file"
1842
+ },
1843
+ "provider": {
1844
+ "type": "string",
1845
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1846
+ },
1847
+ "id": {
1848
+ "type": "string"
1849
+ }
1850
+ },
1851
+ "required": [
1852
+ "source",
1853
+ "provider",
1854
+ "id"
1855
+ ],
1856
+ "additionalProperties": false
1857
+ },
1858
+ {
1859
+ "type": "object",
1860
+ "properties": {
1861
+ "source": {
1862
+ "type": "string",
1863
+ "const": "exec"
1864
+ },
1865
+ "provider": {
1866
+ "type": "string",
1867
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1868
+ },
1869
+ "id": {
1870
+ "type": "string"
1871
+ }
1872
+ },
1873
+ "required": [
1874
+ "source",
1875
+ "provider",
1876
+ "id"
1877
+ ],
1878
+ "additionalProperties": false
1879
+ }
1880
+ ]
1881
+ }
1882
+ ]
1883
+ },
1884
+ "applicationId": {
1885
+ "type": "string"
1886
+ },
1887
+ "proxy": {
1888
+ "type": "string"
1889
+ },
1890
+ "gatewayInfoTimeoutMs": {
1891
+ "type": "integer",
1892
+ "exclusiveMinimum": 0,
1893
+ "maximum": 120000
1894
+ },
1895
+ "gatewayReadyTimeoutMs": {
1896
+ "type": "integer",
1897
+ "exclusiveMinimum": 0,
1898
+ "maximum": 120000
1899
+ },
1900
+ "gatewayRuntimeReadyTimeoutMs": {
1901
+ "type": "integer",
1902
+ "exclusiveMinimum": 0,
1903
+ "maximum": 120000
1904
+ },
1905
+ "allowBots": {
1906
+ "anyOf": [
1907
+ {
1908
+ "type": "boolean"
1909
+ },
1910
+ {
1911
+ "type": "string",
1912
+ "const": "mentions"
1913
+ }
1914
+ ]
1915
+ },
1916
+ "botLoopProtection": {
1917
+ "type": "object",
1918
+ "properties": {
1919
+ "enabled": {
1920
+ "type": "boolean"
1921
+ },
1922
+ "maxEventsPerWindow": {
1923
+ "type": "integer",
1924
+ "exclusiveMinimum": 0,
1925
+ "maximum": 9007199254740991
1926
+ },
1927
+ "windowSeconds": {
1928
+ "type": "integer",
1929
+ "exclusiveMinimum": 0,
1930
+ "maximum": 9007199254740991
1931
+ },
1932
+ "cooldownSeconds": {
1933
+ "type": "integer",
1934
+ "exclusiveMinimum": 0,
1935
+ "maximum": 9007199254740991
1936
+ }
1937
+ },
1938
+ "additionalProperties": false
1939
+ },
1940
+ "dangerouslyAllowNameMatching": {
1941
+ "type": "boolean"
1942
+ },
1943
+ "mentionAliases": {
1944
+ "type": "object",
1945
+ "propertyNames": {
1946
+ "type": "string"
1947
+ },
1948
+ "additionalProperties": {
1949
+ "type": "string",
1950
+ "pattern": "^\\d+$"
1951
+ }
1952
+ },
1953
+ "groupPolicy": {
1954
+ "default": "allowlist",
1955
+ "type": "string",
1956
+ "enum": [
1957
+ "open",
1958
+ "disabled",
1959
+ "allowlist"
1960
+ ]
1961
+ },
1962
+ "contextVisibility": {
1963
+ "type": "string",
1964
+ "enum": [
1965
+ "all",
1966
+ "allowlist",
1967
+ "allowlist_quote"
1968
+ ]
1969
+ },
1970
+ "historyLimit": {
1971
+ "type": "integer",
1972
+ "minimum": 0,
1973
+ "maximum": 9007199254740991
1974
+ },
1975
+ "dmHistoryLimit": {
1976
+ "type": "integer",
1977
+ "minimum": 0,
1978
+ "maximum": 9007199254740991
1979
+ },
1980
+ "dms": {
1981
+ "type": "object",
1982
+ "propertyNames": {
1983
+ "type": "string"
1984
+ },
1985
+ "additionalProperties": {
1986
+ "type": "object",
1987
+ "properties": {
1988
+ "historyLimit": {
1989
+ "type": "integer",
1990
+ "minimum": 0,
1991
+ "maximum": 9007199254740991
1992
+ }
1993
+ },
1994
+ "additionalProperties": false
1995
+ }
1996
+ },
1997
+ "textChunkLimit": {
1998
+ "type": "integer",
1999
+ "exclusiveMinimum": 0,
2000
+ "maximum": 9007199254740991
2001
+ },
2002
+ "suppressEmbeds": {
2003
+ "type": "boolean"
2004
+ },
2005
+ "streaming": {
2006
+ "type": "object",
2007
+ "properties": {
2008
+ "mode": {
2009
+ "type": "string",
2010
+ "enum": [
2011
+ "off",
2012
+ "partial",
2013
+ "block",
2014
+ "progress"
2015
+ ]
2016
+ },
2017
+ "chunkMode": {
2018
+ "type": "string",
2019
+ "enum": [
2020
+ "length",
2021
+ "newline"
2022
+ ]
2023
+ },
2024
+ "preview": {
2025
+ "type": "object",
2026
+ "properties": {
2027
+ "chunk": {
2028
+ "type": "object",
2029
+ "properties": {
2030
+ "minChars": {
2031
+ "type": "integer",
2032
+ "exclusiveMinimum": 0,
2033
+ "maximum": 9007199254740991
2034
+ },
2035
+ "maxChars": {
2036
+ "type": "integer",
2037
+ "exclusiveMinimum": 0,
2038
+ "maximum": 9007199254740991
2039
+ },
2040
+ "breakPreference": {
2041
+ "anyOf": [
2042
+ {
2043
+ "type": "string",
2044
+ "const": "paragraph"
2045
+ },
2046
+ {
2047
+ "type": "string",
2048
+ "const": "newline"
2049
+ },
2050
+ {
2051
+ "type": "string",
2052
+ "const": "sentence"
2053
+ }
2054
+ ]
2055
+ }
2056
+ },
2057
+ "additionalProperties": false
2058
+ },
2059
+ "toolProgress": {
2060
+ "type": "boolean"
2061
+ },
2062
+ "commandText": {
2063
+ "type": "string",
2064
+ "enum": [
2065
+ "raw",
2066
+ "status"
2067
+ ]
2068
+ }
2069
+ },
2070
+ "additionalProperties": false
2071
+ },
2072
+ "progress": {
2073
+ "type": "object",
2074
+ "properties": {
2075
+ "label": {
2076
+ "anyOf": [
2077
+ {
2078
+ "type": "string"
2079
+ },
2080
+ {
2081
+ "type": "boolean",
2082
+ "const": false
2083
+ }
2084
+ ]
2085
+ },
2086
+ "labels": {
2087
+ "type": "array",
2088
+ "items": {
2089
+ "type": "string"
2090
+ }
2091
+ },
2092
+ "maxLines": {
2093
+ "type": "integer",
2094
+ "exclusiveMinimum": 0,
2095
+ "maximum": 9007199254740991
2096
+ },
2097
+ "maxLineChars": {
2098
+ "type": "integer",
2099
+ "exclusiveMinimum": 0,
2100
+ "maximum": 9007199254740991
2101
+ },
2102
+ "render": {
2103
+ "type": "string",
2104
+ "enum": [
2105
+ "text",
2106
+ "rich"
2107
+ ]
2108
+ },
2109
+ "toolProgress": {
2110
+ "type": "boolean"
2111
+ },
2112
+ "commandText": {
2113
+ "type": "string",
2114
+ "enum": [
2115
+ "raw",
2116
+ "status"
2117
+ ]
2118
+ }
2119
+ },
2120
+ "additionalProperties": false
2121
+ },
2122
+ "block": {
2123
+ "type": "object",
2124
+ "properties": {
2125
+ "enabled": {
2126
+ "type": "boolean"
2127
+ },
2128
+ "coalesce": {
2129
+ "type": "object",
2130
+ "properties": {
2131
+ "minChars": {
2132
+ "type": "integer",
2133
+ "exclusiveMinimum": 0,
2134
+ "maximum": 9007199254740991
2135
+ },
2136
+ "maxChars": {
2137
+ "type": "integer",
2138
+ "exclusiveMinimum": 0,
2139
+ "maximum": 9007199254740991
2140
+ },
2141
+ "idleMs": {
2142
+ "type": "integer",
2143
+ "minimum": 0,
2144
+ "maximum": 9007199254740991
2145
+ }
2146
+ },
2147
+ "additionalProperties": false
2148
+ }
2149
+ },
2150
+ "additionalProperties": false
2151
+ }
2152
+ },
2153
+ "additionalProperties": false
2154
+ },
2155
+ "maxLinesPerMessage": {
2156
+ "type": "integer",
2157
+ "exclusiveMinimum": 0,
2158
+ "maximum": 9007199254740991
2159
+ },
2160
+ "mediaMaxMb": {
2161
+ "type": "number",
2162
+ "exclusiveMinimum": 0
2163
+ },
2164
+ "retry": {
2165
+ "type": "object",
2166
+ "properties": {
2167
+ "attempts": {
2168
+ "type": "integer",
2169
+ "minimum": 1,
2170
+ "maximum": 9007199254740991
2171
+ },
2172
+ "minDelayMs": {
2173
+ "type": "integer",
2174
+ "minimum": 0,
2175
+ "maximum": 9007199254740991
2176
+ },
2177
+ "maxDelayMs": {
2178
+ "type": "integer",
2179
+ "minimum": 0,
2180
+ "maximum": 9007199254740991
2181
+ },
2182
+ "jitter": {
2183
+ "type": "number",
2184
+ "minimum": 0,
2185
+ "maximum": 1
2186
+ }
2187
+ },
2188
+ "additionalProperties": false
2189
+ },
2190
+ "actions": {
2191
+ "type": "object",
2192
+ "properties": {
2193
+ "reactions": {
2194
+ "type": "boolean"
2195
+ },
2196
+ "stickers": {
2197
+ "type": "boolean"
2198
+ },
2199
+ "emojiUploads": {
2200
+ "type": "boolean"
2201
+ },
2202
+ "stickerUploads": {
2203
+ "type": "boolean"
2204
+ },
2205
+ "polls": {
2206
+ "type": "boolean"
2207
+ },
2208
+ "permissions": {
2209
+ "type": "boolean"
2210
+ },
2211
+ "messages": {
2212
+ "type": "boolean"
2213
+ },
2214
+ "threads": {
2215
+ "type": "boolean"
2216
+ },
2217
+ "pins": {
2218
+ "type": "boolean"
2219
+ },
2220
+ "search": {
2221
+ "type": "boolean"
2222
+ },
2223
+ "memberInfo": {
2224
+ "type": "boolean"
2225
+ },
2226
+ "roleInfo": {
2227
+ "type": "boolean"
2228
+ },
2229
+ "roles": {
2230
+ "type": "boolean"
2231
+ },
2232
+ "channelInfo": {
2233
+ "type": "boolean"
2234
+ },
2235
+ "voiceStatus": {
2236
+ "type": "boolean"
2237
+ },
2238
+ "events": {
2239
+ "type": "boolean"
2240
+ },
2241
+ "moderation": {
2242
+ "type": "boolean"
2243
+ },
2244
+ "channels": {
2245
+ "type": "boolean"
2246
+ },
2247
+ "presence": {
2248
+ "type": "boolean"
2249
+ }
2250
+ },
2251
+ "additionalProperties": false
2252
+ },
2253
+ "replyToMode": {
2254
+ "anyOf": [
2255
+ {
2256
+ "type": "string",
2257
+ "const": "off"
2258
+ },
2259
+ {
2260
+ "type": "string",
2261
+ "const": "first"
2262
+ },
2263
+ {
2264
+ "type": "string",
2265
+ "const": "all"
2266
+ },
2267
+ {
2268
+ "type": "string",
2269
+ "const": "batched"
2270
+ }
2271
+ ]
2272
+ },
2273
+ "thread": {
2274
+ "type": "object",
2275
+ "properties": {
2276
+ "inheritParent": {
2277
+ "type": "boolean"
2278
+ }
2279
+ },
2280
+ "additionalProperties": false
2281
+ },
2282
+ "dmPolicy": {
2283
+ "type": "string",
2284
+ "enum": [
2285
+ "pairing",
2286
+ "allowlist",
2287
+ "open",
2288
+ "disabled"
2289
+ ]
2290
+ },
2291
+ "allowFrom": {
2292
+ "type": "array",
2293
+ "items": {
2294
+ "type": "string"
2295
+ }
2296
+ },
2297
+ "defaultTo": {
2298
+ "type": "string"
2299
+ },
2300
+ "dm": {
2301
+ "type": "object",
2302
+ "properties": {
2303
+ "enabled": {
2304
+ "type": "boolean"
2305
+ },
2306
+ "policy": {
2307
+ "type": "string",
2308
+ "enum": [
2309
+ "pairing",
2310
+ "allowlist",
2311
+ "open",
2312
+ "disabled"
2313
+ ]
2314
+ },
2315
+ "allowFrom": {
2316
+ "type": "array",
2317
+ "items": {
2318
+ "type": "string"
2319
+ }
2320
+ },
2321
+ "groupEnabled": {
2322
+ "type": "boolean"
2323
+ },
2324
+ "groupChannels": {
2325
+ "type": "array",
2326
+ "items": {
2327
+ "type": "string"
2328
+ }
2329
+ }
2330
+ },
2331
+ "additionalProperties": false
2332
+ },
2333
+ "guilds": {
2334
+ "type": "object",
2335
+ "propertyNames": {
2336
+ "type": "string"
2337
+ },
2338
+ "additionalProperties": {
2339
+ "type": "object",
2340
+ "properties": {
2341
+ "slug": {
2342
+ "type": "string"
2343
+ },
2344
+ "requireMention": {
2345
+ "type": "boolean"
2346
+ },
2347
+ "ignoreOtherMentions": {
2348
+ "type": "boolean"
2349
+ },
2350
+ "tools": {
2351
+ "type": "object",
2352
+ "properties": {
2353
+ "allow": {
2354
+ "type": "array",
2355
+ "items": {
2356
+ "type": "string"
2357
+ }
2358
+ },
2359
+ "alsoAllow": {
2360
+ "type": "array",
2361
+ "items": {
2362
+ "type": "string"
2363
+ }
2364
+ },
2365
+ "deny": {
2366
+ "type": "array",
2367
+ "items": {
2368
+ "type": "string"
2369
+ }
2370
+ }
2371
+ },
2372
+ "additionalProperties": false
2373
+ },
2374
+ "toolsBySender": {
2375
+ "type": "object",
2376
+ "propertyNames": {
2377
+ "type": "string"
2378
+ },
2379
+ "additionalProperties": {
2380
+ "type": "object",
2381
+ "properties": {
2382
+ "allow": {
2383
+ "type": "array",
2384
+ "items": {
2385
+ "type": "string"
2386
+ }
2387
+ },
2388
+ "alsoAllow": {
2389
+ "type": "array",
2390
+ "items": {
2391
+ "type": "string"
2392
+ }
2393
+ },
2394
+ "deny": {
2395
+ "type": "array",
2396
+ "items": {
2397
+ "type": "string"
2398
+ }
2399
+ }
2400
+ },
2401
+ "additionalProperties": false
2402
+ }
2403
+ },
2404
+ "reactionNotifications": {
2405
+ "type": "string",
2406
+ "enum": [
2407
+ "off",
2408
+ "own",
2409
+ "all",
2410
+ "allowlist"
2411
+ ]
2412
+ },
2413
+ "users": {
2414
+ "type": "array",
2415
+ "items": {
2416
+ "type": "string"
2417
+ }
2418
+ },
2419
+ "roles": {
2420
+ "type": "array",
2421
+ "items": {
2422
+ "type": "string"
2423
+ }
2424
+ },
2425
+ "channels": {
2426
+ "type": "object",
2427
+ "propertyNames": {
2428
+ "type": "string"
2429
+ },
2430
+ "additionalProperties": {
2431
+ "type": "object",
2432
+ "properties": {
2433
+ "requireMention": {
2434
+ "type": "boolean"
2435
+ },
2436
+ "ignoreOtherMentions": {
2437
+ "type": "boolean"
2438
+ },
2439
+ "tools": {
2440
+ "type": "object",
2441
+ "properties": {
2442
+ "allow": {
2443
+ "type": "array",
2444
+ "items": {
2445
+ "type": "string"
2446
+ }
2447
+ },
2448
+ "alsoAllow": {
2449
+ "type": "array",
2450
+ "items": {
2451
+ "type": "string"
2452
+ }
2453
+ },
2454
+ "deny": {
2455
+ "type": "array",
2456
+ "items": {
2457
+ "type": "string"
2458
+ }
2459
+ }
2460
+ },
2461
+ "additionalProperties": false
2462
+ },
2463
+ "toolsBySender": {
2464
+ "type": "object",
2465
+ "propertyNames": {
2466
+ "type": "string"
2467
+ },
2468
+ "additionalProperties": {
2469
+ "type": "object",
2470
+ "properties": {
2471
+ "allow": {
2472
+ "type": "array",
2473
+ "items": {
2474
+ "type": "string"
2475
+ }
2476
+ },
2477
+ "alsoAllow": {
2478
+ "type": "array",
2479
+ "items": {
2480
+ "type": "string"
2481
+ }
2482
+ },
2483
+ "deny": {
2484
+ "type": "array",
2485
+ "items": {
2486
+ "type": "string"
2487
+ }
2488
+ }
2489
+ },
2490
+ "additionalProperties": false
2491
+ }
2492
+ },
2493
+ "skills": {
2494
+ "type": "array",
2495
+ "items": {
2496
+ "type": "string"
2497
+ }
2498
+ },
2499
+ "enabled": {
2500
+ "type": "boolean"
2501
+ },
2502
+ "users": {
2503
+ "type": "array",
2504
+ "items": {
2505
+ "type": "string"
2506
+ }
2507
+ },
2508
+ "roles": {
2509
+ "type": "array",
2510
+ "items": {
2511
+ "type": "string"
2512
+ }
2513
+ },
2514
+ "systemPrompt": {
2515
+ "type": "string"
2516
+ },
2517
+ "includeThreadStarter": {
2518
+ "type": "boolean"
2519
+ },
2520
+ "autoThread": {
2521
+ "type": "boolean"
2522
+ },
2523
+ "autoThreadName": {
2524
+ "type": "string",
2525
+ "enum": [
2526
+ "message",
2527
+ "generated"
2528
+ ]
2529
+ },
2530
+ "autoArchiveDuration": {
2531
+ "anyOf": [
2532
+ {
2533
+ "type": "string",
2534
+ "enum": [
2535
+ "60",
2536
+ "1440",
2537
+ "4320",
2538
+ "10080"
2539
+ ]
2540
+ },
2541
+ {
2542
+ "type": "number",
2543
+ "const": 60
2544
+ },
2545
+ {
2546
+ "type": "number",
2547
+ "const": 1440
2548
+ },
2549
+ {
2550
+ "type": "number",
2551
+ "const": 4320
2552
+ },
2553
+ {
2554
+ "type": "number",
2555
+ "const": 10080
2556
+ }
2557
+ ]
2558
+ }
2559
+ },
2560
+ "additionalProperties": false
2561
+ }
2562
+ }
2563
+ },
2564
+ "additionalProperties": false
2565
+ }
2566
+ },
2567
+ "heartbeat": {
2568
+ "type": "object",
2569
+ "properties": {
2570
+ "showOk": {
2571
+ "type": "boolean"
2572
+ },
2573
+ "showAlerts": {
2574
+ "type": "boolean"
2575
+ },
2576
+ "useIndicator": {
2577
+ "type": "boolean"
2578
+ }
2579
+ },
2580
+ "additionalProperties": false
2581
+ },
2582
+ "healthMonitor": {
2583
+ "type": "object",
2584
+ "properties": {
2585
+ "enabled": {
2586
+ "type": "boolean"
2587
+ }
2588
+ },
2589
+ "additionalProperties": false
2590
+ },
2591
+ "execApprovals": {
2592
+ "type": "object",
2593
+ "properties": {
2594
+ "enabled": {
2595
+ "type": "boolean"
2596
+ },
2597
+ "approvers": {
2598
+ "type": "array",
2599
+ "items": {
2600
+ "type": "string"
2601
+ }
2602
+ },
2603
+ "agentFilter": {
2604
+ "type": "array",
2605
+ "items": {
2606
+ "type": "string"
2607
+ }
2608
+ },
2609
+ "sessionFilter": {
2610
+ "type": "array",
2611
+ "items": {
2612
+ "type": "string"
2613
+ }
2614
+ },
2615
+ "cleanupAfterResolve": {
2616
+ "type": "boolean"
2617
+ },
2618
+ "target": {
2619
+ "type": "string",
2620
+ "enum": [
2621
+ "dm",
2622
+ "channel",
2623
+ "both"
2624
+ ]
2625
+ }
2626
+ },
2627
+ "additionalProperties": false
2628
+ },
2629
+ "agentComponents": {
2630
+ "type": "object",
2631
+ "properties": {
2632
+ "enabled": {
2633
+ "type": "boolean"
2634
+ }
2635
+ },
2636
+ "additionalProperties": false
2637
+ },
2638
+ "ui": {
2639
+ "type": "object",
2640
+ "properties": {
2641
+ "components": {
2642
+ "type": "object",
2643
+ "properties": {
2644
+ "accentColor": {
2645
+ "type": "string",
2646
+ "pattern": "^#?[0-9a-fA-F]{6}$"
2647
+ }
2648
+ },
2649
+ "additionalProperties": false
2650
+ }
2651
+ },
2652
+ "additionalProperties": false
2653
+ },
2654
+ "slashCommand": {
2655
+ "type": "object",
2656
+ "properties": {
2657
+ "ephemeral": {
2658
+ "type": "boolean"
2659
+ }
2660
+ },
2661
+ "additionalProperties": false
2662
+ },
2663
+ "threadBindings": {
2664
+ "type": "object",
2665
+ "properties": {
2666
+ "enabled": {
2667
+ "type": "boolean"
2668
+ },
2669
+ "idleHours": {
2670
+ "type": "number",
2671
+ "minimum": 0
2672
+ },
2673
+ "maxAgeHours": {
2674
+ "type": "number",
2675
+ "minimum": 0
2676
+ },
2677
+ "spawnSessions": {
2678
+ "type": "boolean"
2679
+ },
2680
+ "defaultSpawnContext": {
2681
+ "type": "string",
2682
+ "enum": [
2683
+ "isolated",
2684
+ "fork"
2685
+ ]
2686
+ },
2687
+ "spawnSubagentSessions": {
2688
+ "type": "boolean"
2689
+ },
2690
+ "spawnAcpSessions": {
2691
+ "type": "boolean"
2692
+ }
2693
+ },
2694
+ "additionalProperties": false
2695
+ },
2696
+ "intents": {
2697
+ "type": "object",
2698
+ "properties": {
2699
+ "presence": {
2700
+ "type": "boolean"
2701
+ },
2702
+ "guildMembers": {
2703
+ "type": "boolean"
2704
+ },
2705
+ "voiceStates": {
2706
+ "type": "boolean"
2707
+ }
2708
+ },
2709
+ "additionalProperties": false
2710
+ },
2711
+ "voice": {
2712
+ "type": "object",
2713
+ "properties": {
2714
+ "enabled": {
2715
+ "type": "boolean"
2716
+ },
2717
+ "mode": {
2718
+ "type": "string",
2719
+ "enum": [
2720
+ "stt-tts",
2721
+ "agent-proxy",
2722
+ "bidi"
2723
+ ]
2724
+ },
2725
+ "agentSession": {
2726
+ "type": "object",
2727
+ "properties": {
2728
+ "mode": {
2729
+ "type": "string",
2730
+ "enum": [
2731
+ "voice",
2732
+ "target"
2733
+ ]
2734
+ },
2735
+ "target": {
2736
+ "type": "string",
2737
+ "minLength": 1
2738
+ }
2739
+ },
2740
+ "additionalProperties": false
2741
+ },
2742
+ "model": {
2743
+ "type": "string",
2744
+ "minLength": 1
2745
+ },
2746
+ "realtime": {
2747
+ "type": "object",
2748
+ "properties": {
2749
+ "provider": {
2750
+ "type": "string",
2751
+ "minLength": 1
2752
+ },
2753
+ "model": {
2754
+ "type": "string",
2755
+ "minLength": 1
2756
+ },
2757
+ "voice": {
2758
+ "type": "string",
2759
+ "minLength": 1
2760
+ },
2761
+ "instructions": {
2762
+ "type": "string",
2763
+ "minLength": 1
2764
+ },
2765
+ "toolPolicy": {
2766
+ "type": "string",
2767
+ "enum": [
2768
+ "safe-read-only",
2769
+ "owner",
2770
+ "none"
2771
+ ]
2772
+ },
2773
+ "consultPolicy": {
2774
+ "type": "string",
2775
+ "enum": [
2776
+ "auto",
2777
+ "always"
2778
+ ]
2779
+ },
2780
+ "bargeIn": {
2781
+ "type": "boolean"
2782
+ },
2783
+ "minBargeInAudioEndMs": {
2784
+ "type": "integer",
2785
+ "minimum": 0,
2786
+ "maximum": 10000
2787
+ },
2788
+ "debounceMs": {
2789
+ "type": "integer",
2790
+ "exclusiveMinimum": 0,
2791
+ "maximum": 10000
2792
+ },
2793
+ "providers": {
2794
+ "type": "object",
2795
+ "propertyNames": {
2796
+ "type": "string"
2797
+ },
2798
+ "additionalProperties": {
2799
+ "type": "object",
2800
+ "propertyNames": {
2801
+ "type": "string"
2802
+ },
2803
+ "additionalProperties": {}
2804
+ }
2805
+ }
2806
+ },
2807
+ "additionalProperties": false
2808
+ },
2809
+ "autoJoin": {
2810
+ "type": "array",
2811
+ "items": {
2812
+ "type": "object",
2813
+ "properties": {
2814
+ "guildId": {
2815
+ "type": "string",
2816
+ "minLength": 1
2817
+ },
2818
+ "channelId": {
2819
+ "type": "string",
2820
+ "minLength": 1
2821
+ }
2822
+ },
2823
+ "required": [
2824
+ "guildId",
2825
+ "channelId"
2826
+ ],
2827
+ "additionalProperties": false
2828
+ }
2829
+ },
2830
+ "allowedChannels": {
2831
+ "type": "array",
2832
+ "items": {
2833
+ "type": "object",
2834
+ "properties": {
2835
+ "guildId": {
2836
+ "type": "string",
2837
+ "minLength": 1
2838
+ },
2839
+ "channelId": {
2840
+ "type": "string",
2841
+ "minLength": 1
2842
+ }
2843
+ },
2844
+ "required": [
2845
+ "guildId",
2846
+ "channelId"
2847
+ ],
2848
+ "additionalProperties": false
2849
+ }
2850
+ },
2851
+ "daveEncryption": {
2852
+ "type": "boolean"
2853
+ },
2854
+ "decryptionFailureTolerance": {
2855
+ "type": "integer",
2856
+ "minimum": 0,
2857
+ "maximum": 9007199254740991
2858
+ },
2859
+ "connectTimeoutMs": {
2860
+ "type": "integer",
2861
+ "exclusiveMinimum": 0,
2862
+ "maximum": 120000
2863
+ },
2864
+ "reconnectGraceMs": {
2865
+ "type": "integer",
2866
+ "exclusiveMinimum": 0,
2867
+ "maximum": 120000
2868
+ },
2869
+ "captureSilenceGraceMs": {
2870
+ "type": "integer",
2871
+ "exclusiveMinimum": 0,
2872
+ "maximum": 30000
2873
+ },
2874
+ "tts": {
2875
+ "type": "object",
2876
+ "properties": {
2877
+ "auto": {
2878
+ "type": "string",
2879
+ "enum": [
2880
+ "off",
2881
+ "always",
2882
+ "inbound",
2883
+ "tagged"
2884
+ ]
2885
+ },
2886
+ "enabled": {
2887
+ "type": "boolean"
2888
+ },
2889
+ "mode": {
2890
+ "type": "string",
2891
+ "enum": [
2892
+ "final",
2893
+ "all"
2894
+ ]
2895
+ },
2896
+ "provider": {
2897
+ "type": "string",
2898
+ "minLength": 1
2899
+ },
2900
+ "persona": {
2901
+ "type": "string"
2902
+ },
2903
+ "personas": {
2904
+ "type": "object",
2905
+ "propertyNames": {
2906
+ "type": "string"
2907
+ },
2908
+ "additionalProperties": {
2909
+ "type": "object",
2910
+ "properties": {
2911
+ "label": {
2912
+ "type": "string"
2913
+ },
2914
+ "description": {
2915
+ "type": "string"
2916
+ },
2917
+ "provider": {
2918
+ "type": "string",
2919
+ "minLength": 1
2920
+ },
2921
+ "fallbackPolicy": {
2922
+ "anyOf": [
2923
+ {
2924
+ "type": "string",
2925
+ "const": "preserve-persona"
2926
+ },
2927
+ {
2928
+ "type": "string",
2929
+ "const": "provider-defaults"
2930
+ },
2931
+ {
2932
+ "type": "string",
2933
+ "const": "fail"
2934
+ }
2935
+ ]
2936
+ },
2937
+ "prompt": {
2938
+ "type": "object",
2939
+ "properties": {
2940
+ "profile": {
2941
+ "type": "string"
2942
+ },
2943
+ "scene": {
2944
+ "type": "string"
2945
+ },
2946
+ "sampleContext": {
2947
+ "type": "string"
2948
+ },
2949
+ "style": {
2950
+ "type": "string"
2951
+ },
2952
+ "accent": {
2953
+ "type": "string"
2954
+ },
2955
+ "pacing": {
2956
+ "type": "string"
2957
+ },
2958
+ "constraints": {
2959
+ "type": "array",
2960
+ "items": {
2961
+ "type": "string"
2962
+ }
2963
+ }
2964
+ },
2965
+ "additionalProperties": false
2966
+ },
2967
+ "providers": {
2968
+ "type": "object",
2969
+ "propertyNames": {
2970
+ "type": "string"
2971
+ },
2972
+ "additionalProperties": {
2973
+ "type": "object",
2974
+ "properties": {
2975
+ "apiKey": {
2976
+ "anyOf": [
2977
+ {
2978
+ "type": "string"
2979
+ },
2980
+ {
2981
+ "oneOf": [
2982
+ {
2983
+ "type": "object",
2984
+ "properties": {
2985
+ "source": {
2986
+ "type": "string",
2987
+ "const": "env"
2988
+ },
2989
+ "provider": {
2990
+ "type": "string",
2991
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
2992
+ },
2993
+ "id": {
2994
+ "type": "string",
2995
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
2996
+ }
2997
+ },
2998
+ "required": [
2999
+ "source",
3000
+ "provider",
3001
+ "id"
3002
+ ],
3003
+ "additionalProperties": false
3004
+ },
3005
+ {
3006
+ "type": "object",
3007
+ "properties": {
3008
+ "source": {
3009
+ "type": "string",
3010
+ "const": "file"
3011
+ },
3012
+ "provider": {
3013
+ "type": "string",
3014
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3015
+ },
3016
+ "id": {
3017
+ "type": "string"
3018
+ }
3019
+ },
3020
+ "required": [
3021
+ "source",
3022
+ "provider",
3023
+ "id"
3024
+ ],
3025
+ "additionalProperties": false
3026
+ },
3027
+ {
3028
+ "type": "object",
3029
+ "properties": {
3030
+ "source": {
3031
+ "type": "string",
3032
+ "const": "exec"
3033
+ },
3034
+ "provider": {
3035
+ "type": "string",
3036
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3037
+ },
3038
+ "id": {
3039
+ "type": "string"
3040
+ }
3041
+ },
3042
+ "required": [
3043
+ "source",
3044
+ "provider",
3045
+ "id"
3046
+ ],
3047
+ "additionalProperties": false
3048
+ }
3049
+ ]
3050
+ }
3051
+ ]
3052
+ }
3053
+ },
3054
+ "additionalProperties": {
3055
+ "anyOf": [
3056
+ {
3057
+ "type": "string"
3058
+ },
3059
+ {
3060
+ "type": "number"
3061
+ },
3062
+ {
3063
+ "type": "boolean"
3064
+ },
3065
+ {
3066
+ "type": "null"
3067
+ },
3068
+ {
3069
+ "type": "array",
3070
+ "items": {}
3071
+ },
3072
+ {
3073
+ "type": "object",
3074
+ "propertyNames": {
3075
+ "type": "string"
3076
+ },
3077
+ "additionalProperties": {}
3078
+ }
3079
+ ]
3080
+ }
3081
+ }
3082
+ }
3083
+ },
3084
+ "additionalProperties": false
3085
+ }
3086
+ },
3087
+ "summaryModel": {
3088
+ "type": "string"
3089
+ },
3090
+ "modelOverrides": {
3091
+ "type": "object",
3092
+ "properties": {
3093
+ "enabled": {
3094
+ "type": "boolean"
3095
+ },
3096
+ "allowText": {
3097
+ "type": "boolean"
3098
+ },
3099
+ "allowProvider": {
3100
+ "type": "boolean"
3101
+ },
3102
+ "allowVoice": {
3103
+ "type": "boolean"
3104
+ },
3105
+ "allowModelId": {
3106
+ "type": "boolean"
3107
+ },
3108
+ "allowVoiceSettings": {
3109
+ "type": "boolean"
3110
+ },
3111
+ "allowNormalization": {
3112
+ "type": "boolean"
3113
+ },
3114
+ "allowSeed": {
3115
+ "type": "boolean"
3116
+ }
3117
+ },
3118
+ "additionalProperties": false
3119
+ },
3120
+ "providers": {
3121
+ "type": "object",
3122
+ "propertyNames": {
3123
+ "type": "string"
3124
+ },
3125
+ "additionalProperties": {
3126
+ "type": "object",
3127
+ "properties": {
3128
+ "apiKey": {
3129
+ "anyOf": [
3130
+ {
3131
+ "type": "string"
3132
+ },
3133
+ {
3134
+ "oneOf": [
3135
+ {
3136
+ "type": "object",
3137
+ "properties": {
3138
+ "source": {
3139
+ "type": "string",
3140
+ "const": "env"
3141
+ },
3142
+ "provider": {
3143
+ "type": "string",
3144
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3145
+ },
3146
+ "id": {
3147
+ "type": "string",
3148
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
3149
+ }
3150
+ },
3151
+ "required": [
3152
+ "source",
3153
+ "provider",
3154
+ "id"
3155
+ ],
3156
+ "additionalProperties": false
3157
+ },
3158
+ {
3159
+ "type": "object",
3160
+ "properties": {
3161
+ "source": {
3162
+ "type": "string",
3163
+ "const": "file"
3164
+ },
3165
+ "provider": {
3166
+ "type": "string",
3167
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3168
+ },
3169
+ "id": {
3170
+ "type": "string"
3171
+ }
3172
+ },
3173
+ "required": [
3174
+ "source",
3175
+ "provider",
3176
+ "id"
3177
+ ],
3178
+ "additionalProperties": false
3179
+ },
3180
+ {
3181
+ "type": "object",
3182
+ "properties": {
3183
+ "source": {
3184
+ "type": "string",
3185
+ "const": "exec"
3186
+ },
3187
+ "provider": {
3188
+ "type": "string",
3189
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3190
+ },
3191
+ "id": {
3192
+ "type": "string"
3193
+ }
3194
+ },
3195
+ "required": [
3196
+ "source",
3197
+ "provider",
3198
+ "id"
3199
+ ],
3200
+ "additionalProperties": false
3201
+ }
3202
+ ]
3203
+ }
3204
+ ]
3205
+ }
3206
+ },
3207
+ "additionalProperties": {
3208
+ "anyOf": [
3209
+ {
3210
+ "type": "string"
3211
+ },
3212
+ {
3213
+ "type": "number"
3214
+ },
3215
+ {
3216
+ "type": "boolean"
3217
+ },
3218
+ {
3219
+ "type": "null"
3220
+ },
3221
+ {
3222
+ "type": "array",
3223
+ "items": {}
3224
+ },
3225
+ {
3226
+ "type": "object",
3227
+ "propertyNames": {
3228
+ "type": "string"
3229
+ },
3230
+ "additionalProperties": {}
3231
+ }
3232
+ ]
3233
+ }
3234
+ }
3235
+ },
3236
+ "prefsPath": {
3237
+ "type": "string"
3238
+ },
3239
+ "maxTextLength": {
3240
+ "type": "integer",
3241
+ "minimum": 1,
3242
+ "maximum": 9007199254740991
3243
+ },
3244
+ "timeoutMs": {
3245
+ "type": "integer",
3246
+ "minimum": 1000,
3247
+ "maximum": 120000
3248
+ }
3249
+ },
3250
+ "additionalProperties": false
3251
+ }
3252
+ },
3253
+ "additionalProperties": false
3254
+ },
3255
+ "pluralkit": {
3256
+ "type": "object",
3257
+ "properties": {
3258
+ "enabled": {
3259
+ "type": "boolean"
3260
+ },
3261
+ "token": {
3262
+ "anyOf": [
3263
+ {
3264
+ "type": "string"
3265
+ },
3266
+ {
3267
+ "oneOf": [
3268
+ {
3269
+ "type": "object",
3270
+ "properties": {
3271
+ "source": {
3272
+ "type": "string",
3273
+ "const": "env"
3274
+ },
3275
+ "provider": {
3276
+ "type": "string",
3277
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3278
+ },
3279
+ "id": {
3280
+ "type": "string",
3281
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
3282
+ }
3283
+ },
3284
+ "required": [
3285
+ "source",
3286
+ "provider",
3287
+ "id"
3288
+ ],
3289
+ "additionalProperties": false
3290
+ },
3291
+ {
3292
+ "type": "object",
3293
+ "properties": {
3294
+ "source": {
3295
+ "type": "string",
3296
+ "const": "file"
3297
+ },
3298
+ "provider": {
3299
+ "type": "string",
3300
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3301
+ },
3302
+ "id": {
3303
+ "type": "string"
3304
+ }
3305
+ },
3306
+ "required": [
3307
+ "source",
3308
+ "provider",
3309
+ "id"
3310
+ ],
3311
+ "additionalProperties": false
3312
+ },
3313
+ {
3314
+ "type": "object",
3315
+ "properties": {
3316
+ "source": {
3317
+ "type": "string",
3318
+ "const": "exec"
3319
+ },
3320
+ "provider": {
3321
+ "type": "string",
3322
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3323
+ },
3324
+ "id": {
3325
+ "type": "string"
3326
+ }
3327
+ },
3328
+ "required": [
3329
+ "source",
3330
+ "provider",
3331
+ "id"
3332
+ ],
3333
+ "additionalProperties": false
3334
+ }
3335
+ ]
3336
+ }
3337
+ ]
3338
+ }
3339
+ },
3340
+ "additionalProperties": false
3341
+ },
3342
+ "responsePrefix": {
3343
+ "type": "string"
3344
+ },
3345
+ "ackReaction": {
3346
+ "type": "string"
3347
+ },
3348
+ "ackReactionScope": {
3349
+ "type": "string",
3350
+ "enum": [
3351
+ "group-mentions",
3352
+ "group-all",
3353
+ "direct",
3354
+ "all",
3355
+ "off",
3356
+ "none"
3357
+ ]
3358
+ },
3359
+ "activity": {
3360
+ "type": "string"
3361
+ },
3362
+ "status": {
3363
+ "type": "string",
3364
+ "enum": [
3365
+ "online",
3366
+ "dnd",
3367
+ "idle",
3368
+ "invisible"
3369
+ ]
3370
+ },
3371
+ "autoPresence": {
3372
+ "type": "object",
3373
+ "properties": {
3374
+ "enabled": {
3375
+ "type": "boolean"
3376
+ },
3377
+ "intervalMs": {
3378
+ "type": "integer",
3379
+ "exclusiveMinimum": 0,
3380
+ "maximum": 9007199254740991
3381
+ },
3382
+ "minUpdateIntervalMs": {
3383
+ "type": "integer",
3384
+ "exclusiveMinimum": 0,
3385
+ "maximum": 9007199254740991
3386
+ },
3387
+ "healthyText": {
3388
+ "type": "string"
3389
+ },
3390
+ "degradedText": {
3391
+ "type": "string"
3392
+ },
3393
+ "exhaustedText": {
3394
+ "type": "string"
3395
+ }
3396
+ },
3397
+ "additionalProperties": false
3398
+ },
3399
+ "activityType": {
3400
+ "anyOf": [
3401
+ {
3402
+ "type": "number",
3403
+ "const": 0
3404
+ },
3405
+ {
3406
+ "type": "number",
3407
+ "const": 1
3408
+ },
3409
+ {
3410
+ "type": "number",
3411
+ "const": 2
3412
+ },
3413
+ {
3414
+ "type": "number",
3415
+ "const": 3
3416
+ },
3417
+ {
3418
+ "type": "number",
3419
+ "const": 4
3420
+ },
3421
+ {
3422
+ "type": "number",
3423
+ "const": 5
3424
+ }
3425
+ ]
3426
+ },
3427
+ "activityUrl": {
3428
+ "type": "string",
3429
+ "format": "uri"
3430
+ },
3431
+ "inboundWorker": {
3432
+ "type": "object",
3433
+ "properties": {
3434
+ "runTimeoutMs": {
3435
+ "type": "integer",
3436
+ "minimum": 0,
3437
+ "maximum": 9007199254740991
3438
+ }
3439
+ },
3440
+ "additionalProperties": false
3441
+ },
3442
+ "eventQueue": {
3443
+ "type": "object",
3444
+ "properties": {
3445
+ "listenerTimeout": {
3446
+ "type": "integer",
3447
+ "exclusiveMinimum": 0,
3448
+ "maximum": 9007199254740991
3449
+ },
3450
+ "maxQueueSize": {
3451
+ "type": "integer",
3452
+ "exclusiveMinimum": 0,
3453
+ "maximum": 9007199254740991
3454
+ },
3455
+ "maxConcurrency": {
3456
+ "type": "integer",
3457
+ "exclusiveMinimum": 0,
3458
+ "maximum": 9007199254740991
3459
+ }
3460
+ },
3461
+ "additionalProperties": false
3462
+ }
3463
+ },
3464
+ "required": [
3465
+ "groupPolicy"
3466
+ ],
3467
+ "additionalProperties": false
3468
+ }
3469
+ },
3470
+ "defaultAccount": {
3471
+ "type": "string"
3472
+ }
3473
+ },
3474
+ "required": [
3475
+ "groupPolicy"
3476
+ ],
3477
+ "additionalProperties": false
3478
+ },
3479
+ "label": "Discord",
3480
+ "description": "very well supported right now.",
3481
+ "uiHints": {
3482
+ "": {
3483
+ "label": "Discord",
3484
+ "help": "Discord channel provider configuration for bot auth, retry policy, streaming, thread bindings, and optional voice capabilities. Keep privileged intents and advanced features disabled unless needed."
3485
+ },
3486
+ "dmPolicy": {
3487
+ "label": "Discord DM Policy",
3488
+ "help": "Direct message access control (\"pairing\" recommended). \"open\" requires channels.discord.allowFrom=[\"*\"]."
3489
+ },
3490
+ "dm.policy": {
3491
+ "label": "Discord DM Policy",
3492
+ "help": "Direct message access control (\"pairing\" recommended). \"open\" requires channels.discord.allowFrom=[\"*\"] (legacy: channels.discord.dm.allowFrom)."
3493
+ },
3494
+ "configWrites": {
3495
+ "label": "Discord Config Writes",
3496
+ "help": "Allow Discord to write config in response to channel events/commands (default: true)."
3497
+ },
3498
+ "proxy": {
3499
+ "label": "Discord Proxy URL",
3500
+ "help": "Proxy URL for Discord gateway + API requests (app-id lookup and allowlist resolution). Set per account via channels.discord.accounts.<id>.proxy."
3501
+ },
3502
+ "commands.native": {
3503
+ "label": "Discord Native Commands",
3504
+ "help": "Override native commands for Discord (bool or \"auto\")."
3505
+ },
3506
+ "commands.nativeSkills": {
3507
+ "label": "Discord Native Skill Commands",
3508
+ "help": "Override native skill commands for Discord (bool or \"auto\")."
3509
+ },
3510
+ "streaming": {
3511
+ "label": "Discord Streaming Mode",
3512
+ "help": "Unified Discord stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". \"progress\" keeps a single editable progress draft until final delivery. Legacy boolean/streamMode keys are auto-mapped."
3513
+ },
3514
+ "streaming.mode": {
3515
+ "label": "Discord Streaming Mode",
3516
+ "help": "Canonical Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\"."
3517
+ },
3518
+ "streaming.chunkMode": {
3519
+ "label": "Discord Chunk Mode",
3520
+ "help": "Chunking mode for outbound Discord text delivery: \"length\" (default) or \"newline\"."
3521
+ },
3522
+ "streaming.block.enabled": {
3523
+ "label": "Discord Block Streaming Enabled",
3524
+ "help": "Enable chunked block-style Discord preview delivery when channels.discord.streaming.mode=\"block\"."
3525
+ },
3526
+ "streaming.block.coalesce": {
3527
+ "label": "Discord Block Streaming Coalesce",
3528
+ "help": "Merge streamed Discord block replies before final delivery."
3529
+ },
3530
+ "streaming.preview.chunk.minChars": {
3531
+ "label": "Discord Draft Chunk Min Chars",
3532
+ "help": "Minimum chars before emitting a Discord stream preview update when channels.discord.streaming.mode=\"block\" (default: 200)."
3533
+ },
3534
+ "streaming.preview.chunk.maxChars": {
3535
+ "label": "Discord Draft Chunk Max Chars",
3536
+ "help": "Target max size for a Discord stream preview chunk when channels.discord.streaming.mode=\"block\" (default: 800; clamped to channels.discord.textChunkLimit)."
3537
+ },
3538
+ "streaming.preview.chunk.breakPreference": {
3539
+ "label": "Discord Draft Chunk Break Preference",
3540
+ "help": "Preferred breakpoints for Discord draft chunks (paragraph | newline | sentence). Default: paragraph."
3541
+ },
3542
+ "streaming.preview.toolProgress": {
3543
+ "label": "Discord Draft Tool Progress",
3544
+ "help": "Show tool/progress activity in the live draft preview message (default: true). Set false to hide interim tool updates while the draft preview stays active."
3545
+ },
3546
+ "streaming.preview.commandText": {
3547
+ "label": "Discord Draft Command Text",
3548
+ "help": "Command/exec detail in preview tool-progress lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
3549
+ },
3550
+ "streaming.progress.label": {
3551
+ "label": "Discord Progress Label",
3552
+ "help": "Initial progress draft title. Use \"auto\" for built-in single-word labels, a custom string, or false to hide the title."
3553
+ },
3554
+ "streaming.progress.labels": {
3555
+ "label": "Discord Progress Label Pool",
3556
+ "help": "Candidate labels for streaming.progress.label=\"auto\". Leave unset to use AutoBot built-in progress labels."
3557
+ },
3558
+ "streaming.progress.maxLines": {
3559
+ "label": "Discord Progress Max Lines",
3560
+ "help": "Maximum number of compact progress lines to keep below the draft label (default: 8)."
3561
+ },
3562
+ "streaming.progress.maxLineChars": {
3563
+ "label": "Discord Progress Max Line Chars",
3564
+ "help": "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
3565
+ },
3566
+ "streaming.progress.toolProgress": {
3567
+ "label": "Discord Progress Tool Lines",
3568
+ "help": "Show compact tool/progress lines in progress draft mode (default: true). Set false to keep only the label until final delivery."
3569
+ },
3570
+ "streaming.progress.commandText": {
3571
+ "label": "Discord Progress Command Text",
3572
+ "help": "Command/exec detail in progress draft lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
3573
+ },
3574
+ "retry.attempts": {
3575
+ "label": "Discord Retry Attempts",
3576
+ "help": "Max retry attempts for outbound Discord API calls (default: 3)."
3577
+ },
3578
+ "retry.minDelayMs": {
3579
+ "label": "Discord Retry Min Delay (ms)",
3580
+ "help": "Minimum retry delay in ms for Discord outbound calls."
3581
+ },
3582
+ "retry.maxDelayMs": {
3583
+ "label": "Discord Retry Max Delay (ms)",
3584
+ "help": "Maximum retry delay cap in ms for Discord outbound calls."
3585
+ },
3586
+ "retry.jitter": {
3587
+ "label": "Discord Retry Jitter",
3588
+ "help": "Jitter factor (0-1) applied to Discord retry delays."
3589
+ },
3590
+ "maxLinesPerMessage": {
3591
+ "label": "Discord Max Lines Per Message",
3592
+ "help": "Soft max line count per Discord message (default: 17)."
3593
+ },
3594
+ "suppressEmbeds": {
3595
+ "label": "Discord Suppress Link Embeds",
3596
+ "help": "Suppress Discord-generated link embeds on outbound messages by default. Explicit embeds still send normally. Default: true."
3597
+ },
3598
+ "thread.inheritParent": {
3599
+ "label": "Discord Thread Parent Inheritance",
3600
+ "help": "If true, Discord thread sessions inherit the parent channel transcript (default: false)."
3601
+ },
3602
+ "eventQueue.listenerTimeout": {
3603
+ "label": "Discord EventQueue Listener Timeout (ms)",
3604
+ "help": "Canonical Discord listener timeout control in ms for gateway normalization/enqueue handlers. Default is 120000 in AutoBot; set per account via channels.discord.accounts.<id>.eventQueue.listenerTimeout."
3605
+ },
3606
+ "eventQueue.maxQueueSize": {
3607
+ "label": "Discord EventQueue Max Queue Size",
3608
+ "help": "Optional Discord EventQueue capacity override (max queued events before backpressure). Set per account via channels.discord.accounts.<id>.eventQueue.maxQueueSize."
3609
+ },
3610
+ "eventQueue.maxConcurrency": {
3611
+ "label": "Discord EventQueue Max Concurrency",
3612
+ "help": "Optional Discord EventQueue concurrency override (max concurrent handler executions). Set per account via channels.discord.accounts.<id>.eventQueue.maxConcurrency."
3613
+ },
3614
+ "threadBindings.enabled": {
3615
+ "label": "Discord Thread Binding Enabled",
3616
+ "help": "Enable Discord thread binding features (/focus, bound-thread routing/delivery, and thread-bound subagent sessions). Overrides session.threadBindings.enabled when set."
3617
+ },
3618
+ "threadBindings.idleHours": {
3619
+ "label": "Discord Thread Binding Idle Timeout (hours)",
3620
+ "help": "Inactivity window in hours for Discord thread-bound sessions (/focus and spawned thread sessions). Set 0 to disable idle auto-unfocus (default: 24). Overrides session.threadBindings.idleHours when set."
3621
+ },
3622
+ "threadBindings.maxAgeHours": {
3623
+ "label": "Discord Thread Binding Max Age (hours)",
3624
+ "help": "Optional hard max age in hours for Discord thread-bound sessions. Set 0 to disable hard cap (default: 0). Overrides session.threadBindings.maxAgeHours when set."
3625
+ },
3626
+ "threadBindings.spawnSessions": {
3627
+ "label": "Discord Thread-Bound Session Spawn",
3628
+ "help": "Allow sessions_spawn(thread=true) and ACP thread spawns to auto-create and bind Discord threads (default: true). Set false to disable for this account/channel."
3629
+ },
3630
+ "threadBindings.defaultSpawnContext": {
3631
+ "label": "Discord Thread Spawn Context",
3632
+ "help": "Default native subagent context for thread-bound spawns. \"fork\" starts from the requester transcript; \"isolated\" starts clean. Default: \"fork\"."
3633
+ },
3634
+ "ui.components.accentColor": {
3635
+ "label": "Discord Component Accent Color",
3636
+ "help": "Accent color for Discord component containers (hex). Set per account via channels.discord.accounts.<id>.ui.components.accentColor."
3637
+ },
3638
+ "intents.presence": {
3639
+ "label": "Discord Presence Intent",
3640
+ "help": "Enable the Guild Presences privileged intent. Must also be enabled in the Discord Developer Portal. Allows tracking user activities (e.g. Spotify). Default: false."
3641
+ },
3642
+ "intents.guildMembers": {
3643
+ "label": "Discord Guild Members Intent",
3644
+ "help": "Enable the Guild Members privileged intent. Must also be enabled in the Discord Developer Portal. Default: false."
3645
+ },
3646
+ "intents.voiceStates": {
3647
+ "label": "Discord Voice States Intent",
3648
+ "help": "Enable the Guild Voice States intent. Defaults to the effective Discord voice setting; set true only for Discord voice channel conversations."
3649
+ },
3650
+ "gatewayInfoTimeoutMs": {
3651
+ "label": "Discord Gateway Metadata Timeout (ms)",
3652
+ "help": "Timeout for Discord /gateway/bot metadata lookup before falling back to the default gateway URL. Default is 30000; AUTOBOT_DISCORD_GATEWAY_INFO_TIMEOUT_MS can override when config is unset."
3653
+ },
3654
+ "gatewayReadyTimeoutMs": {
3655
+ "label": "Discord Gateway READY Timeout (ms)",
3656
+ "help": "Startup wait for the Discord gateway READY event before restarting the socket. Default is 15000; AUTOBOT_DISCORD_READY_TIMEOUT_MS can override when config is unset."
3657
+ },
3658
+ "gatewayRuntimeReadyTimeoutMs": {
3659
+ "label": "Discord Gateway Runtime READY Timeout (ms)",
3660
+ "help": "Runtime reconnect wait for the Discord gateway READY event before force-stopping the lifecycle. Default is 30000; AUTOBOT_DISCORD_RUNTIME_READY_TIMEOUT_MS can override when config is unset."
3661
+ },
3662
+ "voice.enabled": {
3663
+ "label": "Discord Voice Enabled",
3664
+ "help": "Enable Discord voice channel conversations. Text-only Discord configs leave voice off by default; set true to enable /vc commands and the Guild Voice States intent."
3665
+ },
3666
+ "voice.model": {
3667
+ "label": "Discord Voice Model",
3668
+ "help": "Optional LLM model override for Discord voice channel responses and realtime agent consults (for example openai-codex/gpt-5.5). Leave unset to inherit the routed agent model."
3669
+ },
3670
+ "voice.mode": {
3671
+ "label": "Discord Voice Mode",
3672
+ "help": "Conversation mode: agent-proxy (default) uses realtime voice as the microphone/speaker for the routed AutoBot agent, stt-tts uses batch speech-to-text plus TTS, and bidi lets the realtime provider converse directly with the AutoBot consult tool."
3673
+ },
3674
+ "voice.agentSession": {
3675
+ "label": "Discord Voice Agent Session",
3676
+ "help": "Controls which AutoBot conversation receives voice turns. Leave unset for the voice channel session, or set mode=\"target\" with a Discord target such as channel:123 to make voice an extension of an existing text channel session."
3677
+ },
3678
+ "voice.agentSession.target": {
3679
+ "label": "Discord Voice Agent Session Target",
3680
+ "help": "Discord target used when voice.agentSession.mode=\"target\", for example channel:123."
3681
+ },
3682
+ "voice.realtime.provider": {
3683
+ "label": "Discord Realtime Provider",
3684
+ "help": "Realtime voice provider for agent-proxy or bidi Discord voice modes, such as openai."
3685
+ },
3686
+ "voice.realtime.model": {
3687
+ "label": "Discord Realtime Model",
3688
+ "help": "Provider realtime session model, such as gpt-realtime-2. This is separate from voice.model, which remains the AutoBot agent brain model."
3689
+ },
3690
+ "voice.realtime.voice": {
3691
+ "label": "Discord Realtime Voice",
3692
+ "help": "Provider realtime output voice, such as cedar."
3693
+ },
3694
+ "voice.realtime.toolPolicy": {
3695
+ "label": "Discord Realtime Tool Policy",
3696
+ "help": "Tool policy for the AutoBot agent consult tool in realtime voice modes: safe-read-only, owner, or none. Default is owner for agent-proxy and safe-read-only for bidi."
3697
+ },
3698
+ "voice.realtime.consultPolicy": {
3699
+ "label": "Discord Realtime Consult Policy",
3700
+ "help": "Use always to strongly prefer the AutoBot agent brain for substantive realtime turns. agent-proxy defaults to always."
3701
+ },
3702
+ "voice.realtime.bargeIn": {
3703
+ "label": "Discord Realtime Barge-In",
3704
+ "help": "Allow Discord speaker-start events to interrupt active realtime playback. Set true to keep manual interruption when provider input-audio interruption is disabled for echo control."
3705
+ },
3706
+ "voice.realtime.minBargeInAudioEndMs": {
3707
+ "label": "Discord Realtime Minimum Barge-In Audio (ms)",
3708
+ "help": "Minimum assistant playback duration before a Discord barge-in truncates realtime audio. Default: 250; set 0 for immediate interruption in low-echo rooms."
3709
+ },
3710
+ "voice.realtime.providers": {
3711
+ "label": "Discord Realtime Provider Settings",
3712
+ "help": "Provider-specific realtime voice settings keyed by provider id.",
3713
+ "advanced": true
3714
+ },
3715
+ "voice.autoJoin": {
3716
+ "label": "Discord Voice Auto-Join",
3717
+ "help": "Voice channels to auto-join on startup (list of guildId/channelId entries)."
3718
+ },
3719
+ "voice.allowedChannels": {
3720
+ "label": "Discord Voice Allowed Channels",
3721
+ "help": "Optional voice channel residency allowlist. When set, /vc join, auto-join, and bot voice-state moves are restricted to these guildId/channelId entries. Leave unset to allow any voice channel."
3722
+ },
3723
+ "voice.daveEncryption": {
3724
+ "label": "Discord Voice DAVE Encryption",
3725
+ "help": "Toggle DAVE end-to-end encryption for Discord voice joins (default: true in @discordjs/voice; Discord may require this)."
3726
+ },
3727
+ "voice.decryptionFailureTolerance": {
3728
+ "label": "Discord Voice Decrypt Failure Tolerance",
3729
+ "help": "Consecutive decrypt failures before DAVE attempts session recovery (passed to @discordjs/voice; default: 24)."
3730
+ },
3731
+ "voice.connectTimeoutMs": {
3732
+ "label": "Discord Voice Connect Timeout (ms)",
3733
+ "help": "Initial @discordjs/voice Ready wait before a join is treated as failed. Default: 30000."
3734
+ },
3735
+ "voice.reconnectGraceMs": {
3736
+ "label": "Discord Voice Reconnect Grace (ms)",
3737
+ "help": "Grace period for a disconnected Discord voice session to enter Signalling or Connecting before AutoBot destroys it. Default: 15000."
3738
+ },
3739
+ "voice.captureSilenceGraceMs": {
3740
+ "label": "Discord Voice Capture Silence Grace (ms)",
3741
+ "help": "Silence window after Discord reports a speaker ended before AutoBot finalizes the audio segment for transcription. Default: 2500."
3742
+ },
3743
+ "voice.tts": {
3744
+ "label": "Discord Voice Text-to-Speech",
3745
+ "help": "Optional TTS overrides for Discord voice playback (merged with messages.tts)."
3746
+ },
3747
+ "pluralkit.enabled": {
3748
+ "label": "Discord PluralKit Enabled",
3749
+ "help": "Resolve PluralKit proxied messages and treat system members as distinct senders."
3750
+ },
3751
+ "pluralkit.token": {
3752
+ "label": "Discord PluralKit Token",
3753
+ "help": "Optional PluralKit token for resolving private systems or members."
3754
+ },
3755
+ "activity": {
3756
+ "label": "Discord Presence Activity",
3757
+ "help": "Discord presence activity text (defaults to custom status)."
3758
+ },
3759
+ "status": {
3760
+ "label": "Discord Presence Status",
3761
+ "help": "Discord presence status (online, dnd, idle, invisible)."
3762
+ },
3763
+ "autoPresence.enabled": {
3764
+ "label": "Discord Auto Presence Enabled",
3765
+ "help": "Enable automatic Discord bot presence updates based on runtime/model availability signals. When enabled: healthy=>online, degraded/unknown=>idle, exhausted/unavailable=>dnd."
3766
+ },
3767
+ "autoPresence.intervalMs": {
3768
+ "label": "Discord Auto Presence Check Interval (ms)",
3769
+ "help": "How often to evaluate Discord auto-presence state in milliseconds (default: 30000)."
3770
+ },
3771
+ "autoPresence.minUpdateIntervalMs": {
3772
+ "label": "Discord Auto Presence Min Update Interval (ms)",
3773
+ "help": "Minimum time between actual Discord presence update calls in milliseconds (default: 15000). Prevents status spam on noisy state changes."
3774
+ },
3775
+ "autoPresence.healthyText": {
3776
+ "label": "Discord Auto Presence Healthy Text",
3777
+ "help": "Optional custom status text while runtime is healthy (online). If omitted, falls back to static channels.discord.activity when set."
3778
+ },
3779
+ "autoPresence.degradedText": {
3780
+ "label": "Discord Auto Presence Degraded Text",
3781
+ "help": "Optional custom status text while runtime/model availability is degraded or unknown (idle)."
3782
+ },
3783
+ "autoPresence.exhaustedText": {
3784
+ "label": "Discord Auto Presence Exhausted Text",
3785
+ "help": "Optional custom status text while runtime detects exhausted/unavailable model quota (dnd). Supports {reason} template placeholder."
3786
+ },
3787
+ "activityType": {
3788
+ "label": "Discord Presence Activity Type",
3789
+ "help": "Discord presence activity type (0=Playing,1=Streaming,2=Listening,3=Watching,4=Custom,5=Competing)."
3790
+ },
3791
+ "activityUrl": {
3792
+ "label": "Discord Presence Activity URL",
3793
+ "help": "Discord presence streaming URL (required for activityType=1)."
3794
+ },
3795
+ "allowBots": {
3796
+ "label": "Discord Allow Bot Messages",
3797
+ "help": "Allow bot-authored messages to trigger Discord replies (default: false). Set \"mentions\" to only accept bot messages that mention the bot."
3798
+ },
3799
+ "botLoopProtection": {
3800
+ "label": "Discord Bot Loop Protection",
3801
+ "help": "Sliding-window guard for bot-to-bot Discord loops. Default is enabled whenever allowBots lets bot-authored messages reach dispatch."
3802
+ },
3803
+ "botLoopProtection.enabled": {
3804
+ "label": "Discord Bot Loop Protection Enabled",
3805
+ "help": "Enable the bot-pair loop guard. Defaults to true when allowBots is true or \"mentions\", and false when bot messages are ignored."
3806
+ },
3807
+ "botLoopProtection.maxEventsPerWindow": {
3808
+ "label": "Discord Bot Pair Events Per Window",
3809
+ "help": "Maximum messages a single Discord bot pair may exchange in the configured window before suppression starts. Default: 20."
3810
+ },
3811
+ "botLoopProtection.windowSeconds": {
3812
+ "label": "Discord Bot Loop Window Seconds",
3813
+ "help": "Sliding window length in seconds for Discord bot-pair loop budgets. Default: 60."
3814
+ },
3815
+ "botLoopProtection.cooldownSeconds": {
3816
+ "label": "Discord Bot Loop Cooldown Seconds",
3817
+ "help": "Seconds to suppress a Discord bot pair after it exceeds the loop budget. Default: 60."
3818
+ },
3819
+ "mentionAliases": {
3820
+ "label": "Discord Mention Aliases",
3821
+ "help": "Map outbound @handle text to stable Discord user IDs before sending. Set per account via channels.discord.accounts.<id>.mentionAliases."
3822
+ },
3823
+ "token": {
3824
+ "label": "Discord Bot Token",
3825
+ "help": "Discord bot token used for gateway and REST API authentication for this provider account. Keep this secret out of committed config and rotate immediately after any leak.",
3826
+ "sensitive": true
3827
+ },
3828
+ "applicationId": {
3829
+ "label": "Discord Application ID",
3830
+ "help": "Optional Discord application/client ID. Set this when hosted environments cannot reach Discord's application lookup endpoint during startup."
3831
+ }
3832
+ }
3833
+ }
14
3834
  }
15
3835
  }