@herdctl/core 0.0.1 → 0.0.2

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 (275) hide show
  1. package/dist/config/__tests__/agent.test.js +31 -13
  2. package/dist/config/__tests__/agent.test.js.map +1 -1
  3. package/dist/config/__tests__/merge.test.js +9 -2
  4. package/dist/config/__tests__/merge.test.js.map +1 -1
  5. package/dist/config/__tests__/schema.test.js +350 -1
  6. package/dist/config/__tests__/schema.test.js.map +1 -1
  7. package/dist/config/index.d.ts +1 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +3 -1
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/config/schema.d.ts +828 -24
  12. package/dist/config/schema.d.ts.map +1 -1
  13. package/dist/config/schema.js +118 -6
  14. package/dist/config/schema.js.map +1 -1
  15. package/dist/fleet-manager/__tests__/coverage.test.js +11 -332
  16. package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -1
  17. package/dist/fleet-manager/__tests__/errors.test.js +1 -49
  18. package/dist/fleet-manager/__tests__/errors.test.js.map +1 -1
  19. package/dist/fleet-manager/__tests__/integration.test.js +109 -0
  20. package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
  21. package/dist/fleet-manager/__tests__/reload.test.js +1 -1
  22. package/dist/fleet-manager/__tests__/reload.test.js.map +1 -1
  23. package/dist/fleet-manager/config-reload.d.ts +164 -0
  24. package/dist/fleet-manager/config-reload.d.ts.map +1 -0
  25. package/dist/fleet-manager/config-reload.js +445 -0
  26. package/dist/fleet-manager/config-reload.js.map +1 -0
  27. package/dist/fleet-manager/context.d.ts +76 -0
  28. package/dist/fleet-manager/context.d.ts.map +1 -0
  29. package/dist/fleet-manager/context.js +11 -0
  30. package/dist/fleet-manager/context.js.map +1 -0
  31. package/dist/fleet-manager/errors.d.ts +0 -25
  32. package/dist/fleet-manager/errors.d.ts.map +1 -1
  33. package/dist/fleet-manager/errors.js +0 -38
  34. package/dist/fleet-manager/errors.js.map +1 -1
  35. package/dist/fleet-manager/event-emitters.d.ts +123 -0
  36. package/dist/fleet-manager/event-emitters.d.ts.map +1 -0
  37. package/dist/fleet-manager/event-emitters.js +136 -0
  38. package/dist/fleet-manager/event-emitters.js.map +1 -0
  39. package/dist/fleet-manager/event-types.d.ts +0 -15
  40. package/dist/fleet-manager/event-types.d.ts.map +1 -1
  41. package/dist/fleet-manager/fleet-manager.d.ts +40 -653
  42. package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
  43. package/dist/fleet-manager/fleet-manager.js +95 -1720
  44. package/dist/fleet-manager/fleet-manager.js.map +1 -1
  45. package/dist/fleet-manager/index.d.ts +13 -2
  46. package/dist/fleet-manager/index.d.ts.map +1 -1
  47. package/dist/fleet-manager/index.js +19 -6
  48. package/dist/fleet-manager/index.js.map +1 -1
  49. package/dist/fleet-manager/job-control.d.ts +64 -0
  50. package/dist/fleet-manager/job-control.d.ts.map +1 -0
  51. package/dist/fleet-manager/job-control.js +296 -0
  52. package/dist/fleet-manager/job-control.js.map +1 -0
  53. package/dist/fleet-manager/log-streaming.d.ts +171 -0
  54. package/dist/fleet-manager/log-streaming.d.ts.map +1 -0
  55. package/dist/fleet-manager/log-streaming.js +503 -0
  56. package/dist/fleet-manager/log-streaming.js.map +1 -0
  57. package/dist/fleet-manager/schedule-executor.d.ts +63 -0
  58. package/dist/fleet-manager/schedule-executor.d.ts.map +1 -0
  59. package/dist/fleet-manager/schedule-executor.js +209 -0
  60. package/dist/fleet-manager/schedule-executor.js.map +1 -0
  61. package/dist/fleet-manager/schedule-management.d.ts +71 -0
  62. package/dist/fleet-manager/schedule-management.d.ts.map +1 -0
  63. package/dist/fleet-manager/schedule-management.js +171 -0
  64. package/dist/fleet-manager/schedule-management.js.map +1 -0
  65. package/dist/fleet-manager/status-queries.d.ts +105 -0
  66. package/dist/fleet-manager/status-queries.d.ts.map +1 -0
  67. package/dist/fleet-manager/status-queries.js +247 -0
  68. package/dist/fleet-manager/status-queries.js.map +1 -0
  69. package/dist/fleet-manager/types.d.ts +0 -39
  70. package/dist/fleet-manager/types.d.ts.map +1 -1
  71. package/dist/runner/__tests__/job-executor.test.js +206 -1
  72. package/dist/runner/__tests__/job-executor.test.js.map +1 -1
  73. package/dist/runner/job-executor.d.ts +9 -0
  74. package/dist/runner/job-executor.d.ts.map +1 -1
  75. package/dist/runner/job-executor.js +78 -4
  76. package/dist/runner/job-executor.js.map +1 -1
  77. package/dist/runner/types.d.ts +2 -0
  78. package/dist/runner/types.d.ts.map +1 -1
  79. package/dist/scheduler/__tests__/cron.test.d.ts +2 -0
  80. package/dist/scheduler/__tests__/cron.test.d.ts.map +1 -0
  81. package/dist/scheduler/__tests__/cron.test.js +867 -0
  82. package/dist/scheduler/__tests__/cron.test.js.map +1 -0
  83. package/dist/scheduler/__tests__/scheduler.test.js +164 -5
  84. package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
  85. package/dist/scheduler/cron.d.ts +126 -0
  86. package/dist/scheduler/cron.d.ts.map +1 -0
  87. package/dist/scheduler/cron.js +390 -0
  88. package/dist/scheduler/cron.js.map +1 -0
  89. package/dist/scheduler/errors.d.ts +81 -1
  90. package/dist/scheduler/errors.d.ts.map +1 -1
  91. package/dist/scheduler/errors.js +81 -6
  92. package/dist/scheduler/errors.js.map +1 -1
  93. package/dist/scheduler/index.d.ts +1 -0
  94. package/dist/scheduler/index.d.ts.map +1 -1
  95. package/dist/scheduler/index.js +2 -0
  96. package/dist/scheduler/index.js.map +1 -1
  97. package/dist/scheduler/schedule-runner.d.ts +2 -2
  98. package/dist/scheduler/schedule-runner.d.ts.map +1 -1
  99. package/dist/scheduler/schedule-runner.js +20 -8
  100. package/dist/scheduler/schedule-runner.js.map +1 -1
  101. package/dist/scheduler/scheduler.d.ts +4 -4
  102. package/dist/scheduler/scheduler.d.ts.map +1 -1
  103. package/dist/scheduler/scheduler.js +86 -20
  104. package/dist/scheduler/scheduler.js.map +1 -1
  105. package/dist/scheduler/types.d.ts +1 -1
  106. package/dist/scheduler/types.d.ts.map +1 -1
  107. package/dist/state/schemas/job-metadata.d.ts +2 -2
  108. package/package.json +33 -8
  109. package/.turbo/turbo-build.log +0 -4
  110. package/.turbo/turbo-test.log +0 -219
  111. package/.turbo/turbo-typecheck.log +0 -4
  112. package/coverage/base.css +0 -224
  113. package/coverage/block-navigation.js +0 -87
  114. package/coverage/coverage-final.json +0 -51
  115. package/coverage/favicon.png +0 -0
  116. package/coverage/index.html +0 -251
  117. package/coverage/prettify.css +0 -1
  118. package/coverage/prettify.js +0 -2
  119. package/coverage/sort-arrow-sprite.png +0 -0
  120. package/coverage/sorter.js +0 -210
  121. package/coverage/src/config/index.html +0 -191
  122. package/coverage/src/config/index.ts.html +0 -442
  123. package/coverage/src/config/interpolate.ts.html +0 -652
  124. package/coverage/src/config/loader.ts.html +0 -1501
  125. package/coverage/src/config/merge.ts.html +0 -823
  126. package/coverage/src/config/parser.ts.html +0 -1213
  127. package/coverage/src/config/schema.ts.html +0 -1123
  128. package/coverage/src/fleet-manager/errors.ts.html +0 -2326
  129. package/coverage/src/fleet-manager/event-types.ts.html +0 -1219
  130. package/coverage/src/fleet-manager/fleet-manager.ts.html +0 -7030
  131. package/coverage/src/fleet-manager/index.html +0 -206
  132. package/coverage/src/fleet-manager/index.ts.html +0 -469
  133. package/coverage/src/fleet-manager/job-manager.ts.html +0 -2074
  134. package/coverage/src/fleet-manager/job-queue.ts.html +0 -2479
  135. package/coverage/src/fleet-manager/types.ts.html +0 -2602
  136. package/coverage/src/index.html +0 -116
  137. package/coverage/src/index.ts.html +0 -181
  138. package/coverage/src/runner/errors.ts.html +0 -1006
  139. package/coverage/src/runner/index.html +0 -191
  140. package/coverage/src/runner/index.ts.html +0 -256
  141. package/coverage/src/runner/job-executor.ts.html +0 -1429
  142. package/coverage/src/runner/message-processor.ts.html +0 -1150
  143. package/coverage/src/runner/sdk-adapter.ts.html +0 -658
  144. package/coverage/src/runner/types.ts.html +0 -559
  145. package/coverage/src/scheduler/errors.ts.html +0 -388
  146. package/coverage/src/scheduler/index.html +0 -206
  147. package/coverage/src/scheduler/index.ts.html +0 -244
  148. package/coverage/src/scheduler/interval.ts.html +0 -652
  149. package/coverage/src/scheduler/schedule-runner.ts.html +0 -1411
  150. package/coverage/src/scheduler/schedule-state.ts.html +0 -718
  151. package/coverage/src/scheduler/scheduler.ts.html +0 -1795
  152. package/coverage/src/scheduler/types.ts.html +0 -733
  153. package/coverage/src/state/directory.ts.html +0 -736
  154. package/coverage/src/state/errors.ts.html +0 -376
  155. package/coverage/src/state/fleet-state.ts.html +0 -937
  156. package/coverage/src/state/index.html +0 -221
  157. package/coverage/src/state/index.ts.html +0 -322
  158. package/coverage/src/state/job-metadata.ts.html +0 -1420
  159. package/coverage/src/state/job-output.ts.html +0 -1033
  160. package/coverage/src/state/schemas/fleet-state.ts.html +0 -445
  161. package/coverage/src/state/schemas/index.html +0 -176
  162. package/coverage/src/state/schemas/index.ts.html +0 -286
  163. package/coverage/src/state/schemas/job-metadata.ts.html +0 -628
  164. package/coverage/src/state/schemas/job-output.ts.html +0 -616
  165. package/coverage/src/state/schemas/session-info.ts.html +0 -361
  166. package/coverage/src/state/session.ts.html +0 -844
  167. package/coverage/src/state/types.ts.html +0 -262
  168. package/coverage/src/state/utils/atomic.ts.html +0 -748
  169. package/coverage/src/state/utils/index.html +0 -146
  170. package/coverage/src/state/utils/index.ts.html +0 -103
  171. package/coverage/src/state/utils/reads.ts.html +0 -1621
  172. package/coverage/src/work-sources/adapters/github.ts.html +0 -3583
  173. package/coverage/src/work-sources/adapters/index.html +0 -131
  174. package/coverage/src/work-sources/adapters/index.ts.html +0 -277
  175. package/coverage/src/work-sources/errors.ts.html +0 -298
  176. package/coverage/src/work-sources/index.html +0 -176
  177. package/coverage/src/work-sources/index.ts.html +0 -529
  178. package/coverage/src/work-sources/manager.ts.html +0 -1324
  179. package/coverage/src/work-sources/registry.ts.html +0 -619
  180. package/coverage/src/work-sources/types.ts.html +0 -568
  181. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +0 -7
  182. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +0 -1
  183. package/dist/fleet-manager/__tests__/event-helpers.test.js +0 -368
  184. package/dist/fleet-manager/__tests__/event-helpers.test.js.map +0 -1
  185. package/src/config/__tests__/agent.test.ts +0 -864
  186. package/src/config/__tests__/interpolate.test.ts +0 -644
  187. package/src/config/__tests__/loader.test.ts +0 -784
  188. package/src/config/__tests__/merge.test.ts +0 -751
  189. package/src/config/__tests__/parser.test.ts +0 -533
  190. package/src/config/__tests__/schema.test.ts +0 -873
  191. package/src/config/index.ts +0 -119
  192. package/src/config/interpolate.ts +0 -189
  193. package/src/config/loader.ts +0 -472
  194. package/src/config/merge.ts +0 -246
  195. package/src/config/parser.ts +0 -376
  196. package/src/config/schema.ts +0 -346
  197. package/src/fleet-manager/__tests__/coverage.test.ts +0 -2869
  198. package/src/fleet-manager/__tests__/errors.test.ts +0 -660
  199. package/src/fleet-manager/__tests__/event-helpers.test.ts +0 -448
  200. package/src/fleet-manager/__tests__/integration.test.ts +0 -1209
  201. package/src/fleet-manager/__tests__/job-control.test.ts +0 -283
  202. package/src/fleet-manager/__tests__/job-manager.test.ts +0 -869
  203. package/src/fleet-manager/__tests__/job-queue.test.ts +0 -401
  204. package/src/fleet-manager/__tests__/reload.test.ts +0 -751
  205. package/src/fleet-manager/__tests__/status-queries.test.ts +0 -595
  206. package/src/fleet-manager/__tests__/trigger.test.ts +0 -601
  207. package/src/fleet-manager/errors.ts +0 -747
  208. package/src/fleet-manager/event-types.ts +0 -378
  209. package/src/fleet-manager/fleet-manager.ts +0 -2315
  210. package/src/fleet-manager/index.ts +0 -128
  211. package/src/fleet-manager/job-manager.ts +0 -663
  212. package/src/fleet-manager/job-queue.ts +0 -798
  213. package/src/fleet-manager/types.ts +0 -839
  214. package/src/index.ts +0 -32
  215. package/src/runner/__tests__/errors.test.ts +0 -382
  216. package/src/runner/__tests__/job-executor.test.ts +0 -1708
  217. package/src/runner/__tests__/message-processor.test.ts +0 -960
  218. package/src/runner/__tests__/sdk-adapter.test.ts +0 -626
  219. package/src/runner/errors.ts +0 -307
  220. package/src/runner/index.ts +0 -57
  221. package/src/runner/job-executor.ts +0 -448
  222. package/src/runner/message-processor.ts +0 -355
  223. package/src/runner/sdk-adapter.ts +0 -191
  224. package/src/runner/types.ts +0 -158
  225. package/src/scheduler/__tests__/errors.test.ts +0 -159
  226. package/src/scheduler/__tests__/interval.test.ts +0 -515
  227. package/src/scheduler/__tests__/schedule-runner.test.ts +0 -798
  228. package/src/scheduler/__tests__/schedule-state.test.ts +0 -671
  229. package/src/scheduler/__tests__/scheduler.test.ts +0 -1280
  230. package/src/scheduler/errors.ts +0 -101
  231. package/src/scheduler/index.ts +0 -53
  232. package/src/scheduler/interval.ts +0 -189
  233. package/src/scheduler/schedule-runner.ts +0 -442
  234. package/src/scheduler/schedule-state.ts +0 -211
  235. package/src/scheduler/scheduler.ts +0 -570
  236. package/src/scheduler/types.ts +0 -216
  237. package/src/state/__tests__/directory.test.ts +0 -595
  238. package/src/state/__tests__/fleet-state.test.ts +0 -868
  239. package/src/state/__tests__/job-metadata-schema.test.ts +0 -414
  240. package/src/state/__tests__/job-metadata.test.ts +0 -831
  241. package/src/state/__tests__/job-output.test.ts +0 -856
  242. package/src/state/__tests__/session-schema.test.ts +0 -378
  243. package/src/state/__tests__/session.test.ts +0 -604
  244. package/src/state/directory.ts +0 -217
  245. package/src/state/errors.ts +0 -97
  246. package/src/state/fleet-state.ts +0 -284
  247. package/src/state/index.ts +0 -79
  248. package/src/state/job-metadata.ts +0 -445
  249. package/src/state/job-output.ts +0 -316
  250. package/src/state/schemas/__tests__/job-output.test.ts +0 -338
  251. package/src/state/schemas/fleet-state.ts +0 -120
  252. package/src/state/schemas/index.ts +0 -67
  253. package/src/state/schemas/job-metadata.ts +0 -181
  254. package/src/state/schemas/job-output.ts +0 -177
  255. package/src/state/schemas/session-info.ts +0 -92
  256. package/src/state/session.ts +0 -253
  257. package/src/state/types.ts +0 -59
  258. package/src/state/utils/__tests__/atomic.test.ts +0 -723
  259. package/src/state/utils/__tests__/reads.test.ts +0 -1071
  260. package/src/state/utils/atomic.ts +0 -221
  261. package/src/state/utils/index.ts +0 -6
  262. package/src/state/utils/reads.ts +0 -512
  263. package/src/work-sources/__tests__/github.test.ts +0 -1800
  264. package/src/work-sources/__tests__/manager.test.ts +0 -529
  265. package/src/work-sources/__tests__/registry.test.ts +0 -477
  266. package/src/work-sources/__tests__/types.test.ts +0 -479
  267. package/src/work-sources/adapters/github.ts +0 -1166
  268. package/src/work-sources/adapters/index.ts +0 -64
  269. package/src/work-sources/errors.ts +0 -71
  270. package/src/work-sources/index.ts +0 -148
  271. package/src/work-sources/manager.ts +0 -413
  272. package/src/work-sources/registry.ts +0 -178
  273. package/src/work-sources/types.ts +0 -161
  274. package/tsconfig.json +0 -9
  275. package/vitest.config.ts +0 -19
@@ -679,6 +679,8 @@ export declare const ScheduleSchema: z.ZodObject<{
679
679
  } | undefined;
680
680
  cleanup_in_progress?: boolean | undefined;
681
681
  }>]>>;
682
+ /** When true, job output is also written to .herdctl/jobs/{jobId}/output.log (default: false) */
683
+ outputToFile: z.ZodOptional<z.ZodBoolean>;
682
684
  }, "strip", z.ZodTypeAny, {
683
685
  type: "interval" | "cron" | "webhook" | "chat";
684
686
  work_source?: {
@@ -705,6 +707,7 @@ export declare const ScheduleSchema: z.ZodObject<{
705
707
  interval?: string | undefined;
706
708
  expression?: string | undefined;
707
709
  prompt?: string | undefined;
710
+ outputToFile?: boolean | undefined;
708
711
  }, {
709
712
  type: "interval" | "cron" | "webhook" | "chat";
710
713
  work_source?: {
@@ -731,6 +734,7 @@ export declare const ScheduleSchema: z.ZodObject<{
731
734
  interval?: string | undefined;
732
735
  expression?: string | undefined;
733
736
  prompt?: string | undefined;
737
+ outputToFile?: boolean | undefined;
734
738
  }>;
735
739
  export declare const McpServerSchema: z.ZodObject<{
736
740
  command: z.ZodOptional<z.ZodString>;
@@ -748,26 +752,563 @@ export declare const McpServerSchema: z.ZodObject<{
748
752
  url?: string | undefined;
749
753
  env?: Record<string, string> | undefined;
750
754
  }>;
755
+ /**
756
+ * Discord bot presence/activity configuration
757
+ *
758
+ * @example
759
+ * ```yaml
760
+ * presence:
761
+ * activity_type: watching
762
+ * activity_message: "for support requests"
763
+ * ```
764
+ */
765
+ export declare const DiscordPresenceSchema: z.ZodObject<{
766
+ activity_type: z.ZodOptional<z.ZodEnum<["playing", "watching", "listening", "competing"]>>;
767
+ activity_message: z.ZodOptional<z.ZodString>;
768
+ }, "strip", z.ZodTypeAny, {
769
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
770
+ activity_message?: string | undefined;
771
+ }, {
772
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
773
+ activity_message?: string | undefined;
774
+ }>;
775
+ /**
776
+ * Discord DM (direct message) configuration for an agent's bot
777
+ *
778
+ * @example
779
+ * ```yaml
780
+ * dm:
781
+ * enabled: true
782
+ * mode: auto
783
+ * allowlist: ["123456789012345678"]
784
+ * blocklist: []
785
+ * ```
786
+ */
787
+ export declare const DiscordDMSchema: z.ZodObject<{
788
+ enabled: z.ZodDefault<z.ZodBoolean>;
789
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
790
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
791
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
792
+ }, "strip", z.ZodTypeAny, {
793
+ mode: "mention" | "auto";
794
+ enabled: boolean;
795
+ allowlist?: string[] | undefined;
796
+ blocklist?: string[] | undefined;
797
+ }, {
798
+ mode?: "mention" | "auto" | undefined;
799
+ enabled?: boolean | undefined;
800
+ allowlist?: string[] | undefined;
801
+ blocklist?: string[] | undefined;
802
+ }>;
803
+ /**
804
+ * Discord channel configuration for an agent's bot
805
+ *
806
+ * @example
807
+ * ```yaml
808
+ * channels:
809
+ * - id: "987654321098765432"
810
+ * name: "#support"
811
+ * mode: mention
812
+ * context_messages: 10
813
+ * ```
814
+ */
815
+ export declare const DiscordChannelSchema: z.ZodObject<{
816
+ id: z.ZodString;
817
+ name: z.ZodOptional<z.ZodString>;
818
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
819
+ context_messages: z.ZodDefault<z.ZodNumber>;
820
+ }, "strip", z.ZodTypeAny, {
821
+ mode: "mention" | "auto";
822
+ id: string;
823
+ context_messages: number;
824
+ name?: string | undefined;
825
+ }, {
826
+ id: string;
827
+ mode?: "mention" | "auto" | undefined;
828
+ name?: string | undefined;
829
+ context_messages?: number | undefined;
830
+ }>;
831
+ /**
832
+ * Discord guild (server) configuration for an agent's bot
833
+ *
834
+ * @example
835
+ * ```yaml
836
+ * guilds:
837
+ * - id: "123456789012345678"
838
+ * channels:
839
+ * - id: "987654321098765432"
840
+ * name: "#support"
841
+ * mode: mention
842
+ * dm:
843
+ * enabled: true
844
+ * mode: auto
845
+ * ```
846
+ */
847
+ export declare const DiscordGuildSchema: z.ZodObject<{
848
+ id: z.ZodString;
849
+ channels: z.ZodOptional<z.ZodArray<z.ZodObject<{
850
+ id: z.ZodString;
851
+ name: z.ZodOptional<z.ZodString>;
852
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
853
+ context_messages: z.ZodDefault<z.ZodNumber>;
854
+ }, "strip", z.ZodTypeAny, {
855
+ mode: "mention" | "auto";
856
+ id: string;
857
+ context_messages: number;
858
+ name?: string | undefined;
859
+ }, {
860
+ id: string;
861
+ mode?: "mention" | "auto" | undefined;
862
+ name?: string | undefined;
863
+ context_messages?: number | undefined;
864
+ }>, "many">>;
865
+ dm: z.ZodOptional<z.ZodObject<{
866
+ enabled: z.ZodDefault<z.ZodBoolean>;
867
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
868
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
869
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
870
+ }, "strip", z.ZodTypeAny, {
871
+ mode: "mention" | "auto";
872
+ enabled: boolean;
873
+ allowlist?: string[] | undefined;
874
+ blocklist?: string[] | undefined;
875
+ }, {
876
+ mode?: "mention" | "auto" | undefined;
877
+ enabled?: boolean | undefined;
878
+ allowlist?: string[] | undefined;
879
+ blocklist?: string[] | undefined;
880
+ }>>;
881
+ }, "strip", z.ZodTypeAny, {
882
+ id: string;
883
+ channels?: {
884
+ mode: "mention" | "auto";
885
+ id: string;
886
+ context_messages: number;
887
+ name?: string | undefined;
888
+ }[] | undefined;
889
+ dm?: {
890
+ mode: "mention" | "auto";
891
+ enabled: boolean;
892
+ allowlist?: string[] | undefined;
893
+ blocklist?: string[] | undefined;
894
+ } | undefined;
895
+ }, {
896
+ id: string;
897
+ channels?: {
898
+ id: string;
899
+ mode?: "mention" | "auto" | undefined;
900
+ name?: string | undefined;
901
+ context_messages?: number | undefined;
902
+ }[] | undefined;
903
+ dm?: {
904
+ mode?: "mention" | "auto" | undefined;
905
+ enabled?: boolean | undefined;
906
+ allowlist?: string[] | undefined;
907
+ blocklist?: string[] | undefined;
908
+ } | undefined;
909
+ }>;
910
+ /**
911
+ * Per-agent Discord bot configuration schema
912
+ *
913
+ * Each agent can have its own Discord bot with independent identity,
914
+ * presence, and channel/guild configuration.
915
+ *
916
+ * @example
917
+ * ```yaml
918
+ * chat:
919
+ * discord:
920
+ * bot_token_env: SUPPORT_DISCORD_TOKEN
921
+ * session_expiry_hours: 24
922
+ * log_level: standard
923
+ * presence:
924
+ * activity_type: watching
925
+ * activity_message: "for support requests"
926
+ * guilds:
927
+ * - id: "123456789012345678"
928
+ * channels:
929
+ * - id: "987654321098765432"
930
+ * name: "#support"
931
+ * mode: mention
932
+ * ```
933
+ */
934
+ export declare const AgentChatDiscordSchema: z.ZodObject<{
935
+ /** Environment variable name containing the bot token (never store tokens in config) */
936
+ bot_token_env: z.ZodString;
937
+ /** Session expiry in hours (default: 24) */
938
+ session_expiry_hours: z.ZodDefault<z.ZodNumber>;
939
+ /** Log level for this agent's Discord connector */
940
+ log_level: z.ZodDefault<z.ZodEnum<["minimal", "standard", "verbose"]>>;
941
+ /** Bot presence/activity configuration */
942
+ presence: z.ZodOptional<z.ZodObject<{
943
+ activity_type: z.ZodOptional<z.ZodEnum<["playing", "watching", "listening", "competing"]>>;
944
+ activity_message: z.ZodOptional<z.ZodString>;
945
+ }, "strip", z.ZodTypeAny, {
946
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
947
+ activity_message?: string | undefined;
948
+ }, {
949
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
950
+ activity_message?: string | undefined;
951
+ }>>;
952
+ /** Guilds (servers) this bot participates in */
953
+ guilds: z.ZodArray<z.ZodObject<{
954
+ id: z.ZodString;
955
+ channels: z.ZodOptional<z.ZodArray<z.ZodObject<{
956
+ id: z.ZodString;
957
+ name: z.ZodOptional<z.ZodString>;
958
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
959
+ context_messages: z.ZodDefault<z.ZodNumber>;
960
+ }, "strip", z.ZodTypeAny, {
961
+ mode: "mention" | "auto";
962
+ id: string;
963
+ context_messages: number;
964
+ name?: string | undefined;
965
+ }, {
966
+ id: string;
967
+ mode?: "mention" | "auto" | undefined;
968
+ name?: string | undefined;
969
+ context_messages?: number | undefined;
970
+ }>, "many">>;
971
+ dm: z.ZodOptional<z.ZodObject<{
972
+ enabled: z.ZodDefault<z.ZodBoolean>;
973
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
974
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
975
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
976
+ }, "strip", z.ZodTypeAny, {
977
+ mode: "mention" | "auto";
978
+ enabled: boolean;
979
+ allowlist?: string[] | undefined;
980
+ blocklist?: string[] | undefined;
981
+ }, {
982
+ mode?: "mention" | "auto" | undefined;
983
+ enabled?: boolean | undefined;
984
+ allowlist?: string[] | undefined;
985
+ blocklist?: string[] | undefined;
986
+ }>>;
987
+ }, "strip", z.ZodTypeAny, {
988
+ id: string;
989
+ channels?: {
990
+ mode: "mention" | "auto";
991
+ id: string;
992
+ context_messages: number;
993
+ name?: string | undefined;
994
+ }[] | undefined;
995
+ dm?: {
996
+ mode: "mention" | "auto";
997
+ enabled: boolean;
998
+ allowlist?: string[] | undefined;
999
+ blocklist?: string[] | undefined;
1000
+ } | undefined;
1001
+ }, {
1002
+ id: string;
1003
+ channels?: {
1004
+ id: string;
1005
+ mode?: "mention" | "auto" | undefined;
1006
+ name?: string | undefined;
1007
+ context_messages?: number | undefined;
1008
+ }[] | undefined;
1009
+ dm?: {
1010
+ mode?: "mention" | "auto" | undefined;
1011
+ enabled?: boolean | undefined;
1012
+ allowlist?: string[] | undefined;
1013
+ blocklist?: string[] | undefined;
1014
+ } | undefined;
1015
+ }>, "many">;
1016
+ /** Global DM (direct message) configuration - applies to all DMs regardless of guild */
1017
+ dm: z.ZodOptional<z.ZodObject<{
1018
+ enabled: z.ZodDefault<z.ZodBoolean>;
1019
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1020
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1021
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1022
+ }, "strip", z.ZodTypeAny, {
1023
+ mode: "mention" | "auto";
1024
+ enabled: boolean;
1025
+ allowlist?: string[] | undefined;
1026
+ blocklist?: string[] | undefined;
1027
+ }, {
1028
+ mode?: "mention" | "auto" | undefined;
1029
+ enabled?: boolean | undefined;
1030
+ allowlist?: string[] | undefined;
1031
+ blocklist?: string[] | undefined;
1032
+ }>>;
1033
+ }, "strip", z.ZodTypeAny, {
1034
+ bot_token_env: string;
1035
+ session_expiry_hours: number;
1036
+ log_level: "minimal" | "standard" | "verbose";
1037
+ guilds: {
1038
+ id: string;
1039
+ channels?: {
1040
+ mode: "mention" | "auto";
1041
+ id: string;
1042
+ context_messages: number;
1043
+ name?: string | undefined;
1044
+ }[] | undefined;
1045
+ dm?: {
1046
+ mode: "mention" | "auto";
1047
+ enabled: boolean;
1048
+ allowlist?: string[] | undefined;
1049
+ blocklist?: string[] | undefined;
1050
+ } | undefined;
1051
+ }[];
1052
+ dm?: {
1053
+ mode: "mention" | "auto";
1054
+ enabled: boolean;
1055
+ allowlist?: string[] | undefined;
1056
+ blocklist?: string[] | undefined;
1057
+ } | undefined;
1058
+ presence?: {
1059
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1060
+ activity_message?: string | undefined;
1061
+ } | undefined;
1062
+ }, {
1063
+ bot_token_env: string;
1064
+ guilds: {
1065
+ id: string;
1066
+ channels?: {
1067
+ id: string;
1068
+ mode?: "mention" | "auto" | undefined;
1069
+ name?: string | undefined;
1070
+ context_messages?: number | undefined;
1071
+ }[] | undefined;
1072
+ dm?: {
1073
+ mode?: "mention" | "auto" | undefined;
1074
+ enabled?: boolean | undefined;
1075
+ allowlist?: string[] | undefined;
1076
+ blocklist?: string[] | undefined;
1077
+ } | undefined;
1078
+ }[];
1079
+ dm?: {
1080
+ mode?: "mention" | "auto" | undefined;
1081
+ enabled?: boolean | undefined;
1082
+ allowlist?: string[] | undefined;
1083
+ blocklist?: string[] | undefined;
1084
+ } | undefined;
1085
+ session_expiry_hours?: number | undefined;
1086
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
1087
+ presence?: {
1088
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1089
+ activity_message?: string | undefined;
1090
+ } | undefined;
1091
+ }>;
751
1092
  export declare const AgentChatSchema: z.ZodObject<{
752
1093
  discord: z.ZodOptional<z.ZodObject<{
753
- channel_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
754
- respond_to_mentions: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1094
+ /** Environment variable name containing the bot token (never store tokens in config) */
1095
+ bot_token_env: z.ZodString;
1096
+ /** Session expiry in hours (default: 24) */
1097
+ session_expiry_hours: z.ZodDefault<z.ZodNumber>;
1098
+ /** Log level for this agent's Discord connector */
1099
+ log_level: z.ZodDefault<z.ZodEnum<["minimal", "standard", "verbose"]>>;
1100
+ /** Bot presence/activity configuration */
1101
+ presence: z.ZodOptional<z.ZodObject<{
1102
+ activity_type: z.ZodOptional<z.ZodEnum<["playing", "watching", "listening", "competing"]>>;
1103
+ activity_message: z.ZodOptional<z.ZodString>;
1104
+ }, "strip", z.ZodTypeAny, {
1105
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1106
+ activity_message?: string | undefined;
1107
+ }, {
1108
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1109
+ activity_message?: string | undefined;
1110
+ }>>;
1111
+ /** Guilds (servers) this bot participates in */
1112
+ guilds: z.ZodArray<z.ZodObject<{
1113
+ id: z.ZodString;
1114
+ channels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1115
+ id: z.ZodString;
1116
+ name: z.ZodOptional<z.ZodString>;
1117
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1118
+ context_messages: z.ZodDefault<z.ZodNumber>;
1119
+ }, "strip", z.ZodTypeAny, {
1120
+ mode: "mention" | "auto";
1121
+ id: string;
1122
+ context_messages: number;
1123
+ name?: string | undefined;
1124
+ }, {
1125
+ id: string;
1126
+ mode?: "mention" | "auto" | undefined;
1127
+ name?: string | undefined;
1128
+ context_messages?: number | undefined;
1129
+ }>, "many">>;
1130
+ dm: z.ZodOptional<z.ZodObject<{
1131
+ enabled: z.ZodDefault<z.ZodBoolean>;
1132
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1133
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1134
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1135
+ }, "strip", z.ZodTypeAny, {
1136
+ mode: "mention" | "auto";
1137
+ enabled: boolean;
1138
+ allowlist?: string[] | undefined;
1139
+ blocklist?: string[] | undefined;
1140
+ }, {
1141
+ mode?: "mention" | "auto" | undefined;
1142
+ enabled?: boolean | undefined;
1143
+ allowlist?: string[] | undefined;
1144
+ blocklist?: string[] | undefined;
1145
+ }>>;
1146
+ }, "strip", z.ZodTypeAny, {
1147
+ id: string;
1148
+ channels?: {
1149
+ mode: "mention" | "auto";
1150
+ id: string;
1151
+ context_messages: number;
1152
+ name?: string | undefined;
1153
+ }[] | undefined;
1154
+ dm?: {
1155
+ mode: "mention" | "auto";
1156
+ enabled: boolean;
1157
+ allowlist?: string[] | undefined;
1158
+ blocklist?: string[] | undefined;
1159
+ } | undefined;
1160
+ }, {
1161
+ id: string;
1162
+ channels?: {
1163
+ id: string;
1164
+ mode?: "mention" | "auto" | undefined;
1165
+ name?: string | undefined;
1166
+ context_messages?: number | undefined;
1167
+ }[] | undefined;
1168
+ dm?: {
1169
+ mode?: "mention" | "auto" | undefined;
1170
+ enabled?: boolean | undefined;
1171
+ allowlist?: string[] | undefined;
1172
+ blocklist?: string[] | undefined;
1173
+ } | undefined;
1174
+ }>, "many">;
1175
+ /** Global DM (direct message) configuration - applies to all DMs regardless of guild */
1176
+ dm: z.ZodOptional<z.ZodObject<{
1177
+ enabled: z.ZodDefault<z.ZodBoolean>;
1178
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1179
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1180
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1181
+ }, "strip", z.ZodTypeAny, {
1182
+ mode: "mention" | "auto";
1183
+ enabled: boolean;
1184
+ allowlist?: string[] | undefined;
1185
+ blocklist?: string[] | undefined;
1186
+ }, {
1187
+ mode?: "mention" | "auto" | undefined;
1188
+ enabled?: boolean | undefined;
1189
+ allowlist?: string[] | undefined;
1190
+ blocklist?: string[] | undefined;
1191
+ }>>;
755
1192
  }, "strip", z.ZodTypeAny, {
756
- respond_to_mentions: boolean;
757
- channel_ids?: string[] | undefined;
1193
+ bot_token_env: string;
1194
+ session_expiry_hours: number;
1195
+ log_level: "minimal" | "standard" | "verbose";
1196
+ guilds: {
1197
+ id: string;
1198
+ channels?: {
1199
+ mode: "mention" | "auto";
1200
+ id: string;
1201
+ context_messages: number;
1202
+ name?: string | undefined;
1203
+ }[] | undefined;
1204
+ dm?: {
1205
+ mode: "mention" | "auto";
1206
+ enabled: boolean;
1207
+ allowlist?: string[] | undefined;
1208
+ blocklist?: string[] | undefined;
1209
+ } | undefined;
1210
+ }[];
1211
+ dm?: {
1212
+ mode: "mention" | "auto";
1213
+ enabled: boolean;
1214
+ allowlist?: string[] | undefined;
1215
+ blocklist?: string[] | undefined;
1216
+ } | undefined;
1217
+ presence?: {
1218
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1219
+ activity_message?: string | undefined;
1220
+ } | undefined;
758
1221
  }, {
759
- channel_ids?: string[] | undefined;
760
- respond_to_mentions?: boolean | undefined;
1222
+ bot_token_env: string;
1223
+ guilds: {
1224
+ id: string;
1225
+ channels?: {
1226
+ id: string;
1227
+ mode?: "mention" | "auto" | undefined;
1228
+ name?: string | undefined;
1229
+ context_messages?: number | undefined;
1230
+ }[] | undefined;
1231
+ dm?: {
1232
+ mode?: "mention" | "auto" | undefined;
1233
+ enabled?: boolean | undefined;
1234
+ allowlist?: string[] | undefined;
1235
+ blocklist?: string[] | undefined;
1236
+ } | undefined;
1237
+ }[];
1238
+ dm?: {
1239
+ mode?: "mention" | "auto" | undefined;
1240
+ enabled?: boolean | undefined;
1241
+ allowlist?: string[] | undefined;
1242
+ blocklist?: string[] | undefined;
1243
+ } | undefined;
1244
+ session_expiry_hours?: number | undefined;
1245
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
1246
+ presence?: {
1247
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1248
+ activity_message?: string | undefined;
1249
+ } | undefined;
761
1250
  }>>;
762
1251
  }, "strip", z.ZodTypeAny, {
763
1252
  discord?: {
764
- respond_to_mentions: boolean;
765
- channel_ids?: string[] | undefined;
1253
+ bot_token_env: string;
1254
+ session_expiry_hours: number;
1255
+ log_level: "minimal" | "standard" | "verbose";
1256
+ guilds: {
1257
+ id: string;
1258
+ channels?: {
1259
+ mode: "mention" | "auto";
1260
+ id: string;
1261
+ context_messages: number;
1262
+ name?: string | undefined;
1263
+ }[] | undefined;
1264
+ dm?: {
1265
+ mode: "mention" | "auto";
1266
+ enabled: boolean;
1267
+ allowlist?: string[] | undefined;
1268
+ blocklist?: string[] | undefined;
1269
+ } | undefined;
1270
+ }[];
1271
+ dm?: {
1272
+ mode: "mention" | "auto";
1273
+ enabled: boolean;
1274
+ allowlist?: string[] | undefined;
1275
+ blocklist?: string[] | undefined;
1276
+ } | undefined;
1277
+ presence?: {
1278
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1279
+ activity_message?: string | undefined;
1280
+ } | undefined;
766
1281
  } | undefined;
767
1282
  }, {
768
1283
  discord?: {
769
- channel_ids?: string[] | undefined;
770
- respond_to_mentions?: boolean | undefined;
1284
+ bot_token_env: string;
1285
+ guilds: {
1286
+ id: string;
1287
+ channels?: {
1288
+ id: string;
1289
+ mode?: "mention" | "auto" | undefined;
1290
+ name?: string | undefined;
1291
+ context_messages?: number | undefined;
1292
+ }[] | undefined;
1293
+ dm?: {
1294
+ mode?: "mention" | "auto" | undefined;
1295
+ enabled?: boolean | undefined;
1296
+ allowlist?: string[] | undefined;
1297
+ blocklist?: string[] | undefined;
1298
+ } | undefined;
1299
+ }[];
1300
+ dm?: {
1301
+ mode?: "mention" | "auto" | undefined;
1302
+ enabled?: boolean | undefined;
1303
+ allowlist?: string[] | undefined;
1304
+ blocklist?: string[] | undefined;
1305
+ } | undefined;
1306
+ session_expiry_hours?: number | undefined;
1307
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
1308
+ presence?: {
1309
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1310
+ activity_message?: string | undefined;
1311
+ } | undefined;
771
1312
  } | undefined;
772
1313
  }>;
773
1314
  export declare const AgentWorkspaceSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
@@ -997,6 +1538,8 @@ export declare const AgentConfigSchema: z.ZodObject<{
997
1538
  } | undefined;
998
1539
  cleanup_in_progress?: boolean | undefined;
999
1540
  }>]>>;
1541
+ /** When true, job output is also written to .herdctl/jobs/{jobId}/output.log (default: false) */
1542
+ outputToFile: z.ZodOptional<z.ZodBoolean>;
1000
1543
  }, "strip", z.ZodTypeAny, {
1001
1544
  type: "interval" | "cron" | "webhook" | "chat";
1002
1545
  work_source?: {
@@ -1023,6 +1566,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
1023
1566
  interval?: string | undefined;
1024
1567
  expression?: string | undefined;
1025
1568
  prompt?: string | undefined;
1569
+ outputToFile?: boolean | undefined;
1026
1570
  }, {
1027
1571
  type: "interval" | "cron" | "webhook" | "chat";
1028
1572
  work_source?: {
@@ -1049,6 +1593,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
1049
1593
  interval?: string | undefined;
1050
1594
  expression?: string | undefined;
1051
1595
  prompt?: string | undefined;
1596
+ outputToFile?: boolean | undefined;
1052
1597
  }>>>;
1053
1598
  session: z.ZodOptional<z.ZodObject<{
1054
1599
  max_turns: z.ZodOptional<z.ZodNumber>;
@@ -1112,24 +1657,224 @@ export declare const AgentConfigSchema: z.ZodObject<{
1112
1657
  }>>>;
1113
1658
  chat: z.ZodOptional<z.ZodObject<{
1114
1659
  discord: z.ZodOptional<z.ZodObject<{
1115
- channel_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1116
- respond_to_mentions: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1660
+ /** Environment variable name containing the bot token (never store tokens in config) */
1661
+ bot_token_env: z.ZodString;
1662
+ /** Session expiry in hours (default: 24) */
1663
+ session_expiry_hours: z.ZodDefault<z.ZodNumber>;
1664
+ /** Log level for this agent's Discord connector */
1665
+ log_level: z.ZodDefault<z.ZodEnum<["minimal", "standard", "verbose"]>>;
1666
+ /** Bot presence/activity configuration */
1667
+ presence: z.ZodOptional<z.ZodObject<{
1668
+ activity_type: z.ZodOptional<z.ZodEnum<["playing", "watching", "listening", "competing"]>>;
1669
+ activity_message: z.ZodOptional<z.ZodString>;
1670
+ }, "strip", z.ZodTypeAny, {
1671
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1672
+ activity_message?: string | undefined;
1673
+ }, {
1674
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1675
+ activity_message?: string | undefined;
1676
+ }>>;
1677
+ /** Guilds (servers) this bot participates in */
1678
+ guilds: z.ZodArray<z.ZodObject<{
1679
+ id: z.ZodString;
1680
+ channels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1681
+ id: z.ZodString;
1682
+ name: z.ZodOptional<z.ZodString>;
1683
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1684
+ context_messages: z.ZodDefault<z.ZodNumber>;
1685
+ }, "strip", z.ZodTypeAny, {
1686
+ mode: "mention" | "auto";
1687
+ id: string;
1688
+ context_messages: number;
1689
+ name?: string | undefined;
1690
+ }, {
1691
+ id: string;
1692
+ mode?: "mention" | "auto" | undefined;
1693
+ name?: string | undefined;
1694
+ context_messages?: number | undefined;
1695
+ }>, "many">>;
1696
+ dm: z.ZodOptional<z.ZodObject<{
1697
+ enabled: z.ZodDefault<z.ZodBoolean>;
1698
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1699
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1700
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1701
+ }, "strip", z.ZodTypeAny, {
1702
+ mode: "mention" | "auto";
1703
+ enabled: boolean;
1704
+ allowlist?: string[] | undefined;
1705
+ blocklist?: string[] | undefined;
1706
+ }, {
1707
+ mode?: "mention" | "auto" | undefined;
1708
+ enabled?: boolean | undefined;
1709
+ allowlist?: string[] | undefined;
1710
+ blocklist?: string[] | undefined;
1711
+ }>>;
1712
+ }, "strip", z.ZodTypeAny, {
1713
+ id: string;
1714
+ channels?: {
1715
+ mode: "mention" | "auto";
1716
+ id: string;
1717
+ context_messages: number;
1718
+ name?: string | undefined;
1719
+ }[] | undefined;
1720
+ dm?: {
1721
+ mode: "mention" | "auto";
1722
+ enabled: boolean;
1723
+ allowlist?: string[] | undefined;
1724
+ blocklist?: string[] | undefined;
1725
+ } | undefined;
1726
+ }, {
1727
+ id: string;
1728
+ channels?: {
1729
+ id: string;
1730
+ mode?: "mention" | "auto" | undefined;
1731
+ name?: string | undefined;
1732
+ context_messages?: number | undefined;
1733
+ }[] | undefined;
1734
+ dm?: {
1735
+ mode?: "mention" | "auto" | undefined;
1736
+ enabled?: boolean | undefined;
1737
+ allowlist?: string[] | undefined;
1738
+ blocklist?: string[] | undefined;
1739
+ } | undefined;
1740
+ }>, "many">;
1741
+ /** Global DM (direct message) configuration - applies to all DMs regardless of guild */
1742
+ dm: z.ZodOptional<z.ZodObject<{
1743
+ enabled: z.ZodDefault<z.ZodBoolean>;
1744
+ mode: z.ZodDefault<z.ZodEnum<["mention", "auto"]>>;
1745
+ allowlist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1746
+ blocklist: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1747
+ }, "strip", z.ZodTypeAny, {
1748
+ mode: "mention" | "auto";
1749
+ enabled: boolean;
1750
+ allowlist?: string[] | undefined;
1751
+ blocklist?: string[] | undefined;
1752
+ }, {
1753
+ mode?: "mention" | "auto" | undefined;
1754
+ enabled?: boolean | undefined;
1755
+ allowlist?: string[] | undefined;
1756
+ blocklist?: string[] | undefined;
1757
+ }>>;
1117
1758
  }, "strip", z.ZodTypeAny, {
1118
- respond_to_mentions: boolean;
1119
- channel_ids?: string[] | undefined;
1759
+ bot_token_env: string;
1760
+ session_expiry_hours: number;
1761
+ log_level: "minimal" | "standard" | "verbose";
1762
+ guilds: {
1763
+ id: string;
1764
+ channels?: {
1765
+ mode: "mention" | "auto";
1766
+ id: string;
1767
+ context_messages: number;
1768
+ name?: string | undefined;
1769
+ }[] | undefined;
1770
+ dm?: {
1771
+ mode: "mention" | "auto";
1772
+ enabled: boolean;
1773
+ allowlist?: string[] | undefined;
1774
+ blocklist?: string[] | undefined;
1775
+ } | undefined;
1776
+ }[];
1777
+ dm?: {
1778
+ mode: "mention" | "auto";
1779
+ enabled: boolean;
1780
+ allowlist?: string[] | undefined;
1781
+ blocklist?: string[] | undefined;
1782
+ } | undefined;
1783
+ presence?: {
1784
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1785
+ activity_message?: string | undefined;
1786
+ } | undefined;
1120
1787
  }, {
1121
- channel_ids?: string[] | undefined;
1122
- respond_to_mentions?: boolean | undefined;
1788
+ bot_token_env: string;
1789
+ guilds: {
1790
+ id: string;
1791
+ channels?: {
1792
+ id: string;
1793
+ mode?: "mention" | "auto" | undefined;
1794
+ name?: string | undefined;
1795
+ context_messages?: number | undefined;
1796
+ }[] | undefined;
1797
+ dm?: {
1798
+ mode?: "mention" | "auto" | undefined;
1799
+ enabled?: boolean | undefined;
1800
+ allowlist?: string[] | undefined;
1801
+ blocklist?: string[] | undefined;
1802
+ } | undefined;
1803
+ }[];
1804
+ dm?: {
1805
+ mode?: "mention" | "auto" | undefined;
1806
+ enabled?: boolean | undefined;
1807
+ allowlist?: string[] | undefined;
1808
+ blocklist?: string[] | undefined;
1809
+ } | undefined;
1810
+ session_expiry_hours?: number | undefined;
1811
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
1812
+ presence?: {
1813
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1814
+ activity_message?: string | undefined;
1815
+ } | undefined;
1123
1816
  }>>;
1124
1817
  }, "strip", z.ZodTypeAny, {
1125
1818
  discord?: {
1126
- respond_to_mentions: boolean;
1127
- channel_ids?: string[] | undefined;
1819
+ bot_token_env: string;
1820
+ session_expiry_hours: number;
1821
+ log_level: "minimal" | "standard" | "verbose";
1822
+ guilds: {
1823
+ id: string;
1824
+ channels?: {
1825
+ mode: "mention" | "auto";
1826
+ id: string;
1827
+ context_messages: number;
1828
+ name?: string | undefined;
1829
+ }[] | undefined;
1830
+ dm?: {
1831
+ mode: "mention" | "auto";
1832
+ enabled: boolean;
1833
+ allowlist?: string[] | undefined;
1834
+ blocklist?: string[] | undefined;
1835
+ } | undefined;
1836
+ }[];
1837
+ dm?: {
1838
+ mode: "mention" | "auto";
1839
+ enabled: boolean;
1840
+ allowlist?: string[] | undefined;
1841
+ blocklist?: string[] | undefined;
1842
+ } | undefined;
1843
+ presence?: {
1844
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1845
+ activity_message?: string | undefined;
1846
+ } | undefined;
1128
1847
  } | undefined;
1129
1848
  }, {
1130
1849
  discord?: {
1131
- channel_ids?: string[] | undefined;
1132
- respond_to_mentions?: boolean | undefined;
1850
+ bot_token_env: string;
1851
+ guilds: {
1852
+ id: string;
1853
+ channels?: {
1854
+ id: string;
1855
+ mode?: "mention" | "auto" | undefined;
1856
+ name?: string | undefined;
1857
+ context_messages?: number | undefined;
1858
+ }[] | undefined;
1859
+ dm?: {
1860
+ mode?: "mention" | "auto" | undefined;
1861
+ enabled?: boolean | undefined;
1862
+ allowlist?: string[] | undefined;
1863
+ blocklist?: string[] | undefined;
1864
+ } | undefined;
1865
+ }[];
1866
+ dm?: {
1867
+ mode?: "mention" | "auto" | undefined;
1868
+ enabled?: boolean | undefined;
1869
+ allowlist?: string[] | undefined;
1870
+ blocklist?: string[] | undefined;
1871
+ } | undefined;
1872
+ session_expiry_hours?: number | undefined;
1873
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
1874
+ presence?: {
1875
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1876
+ activity_message?: string | undefined;
1877
+ } | undefined;
1133
1878
  } | undefined;
1134
1879
  }>>;
1135
1880
  docker: z.ZodOptional<z.ZodObject<{
@@ -1202,8 +1947,34 @@ export declare const AgentConfigSchema: z.ZodObject<{
1202
1947
  permission_mode?: "default" | "acceptEdits" | "bypassPermissions" | "plan" | undefined;
1203
1948
  chat?: {
1204
1949
  discord?: {
1205
- respond_to_mentions: boolean;
1206
- channel_ids?: string[] | undefined;
1950
+ bot_token_env: string;
1951
+ session_expiry_hours: number;
1952
+ log_level: "minimal" | "standard" | "verbose";
1953
+ guilds: {
1954
+ id: string;
1955
+ channels?: {
1956
+ mode: "mention" | "auto";
1957
+ id: string;
1958
+ context_messages: number;
1959
+ name?: string | undefined;
1960
+ }[] | undefined;
1961
+ dm?: {
1962
+ mode: "mention" | "auto";
1963
+ enabled: boolean;
1964
+ allowlist?: string[] | undefined;
1965
+ blocklist?: string[] | undefined;
1966
+ } | undefined;
1967
+ }[];
1968
+ dm?: {
1969
+ mode: "mention" | "auto";
1970
+ enabled: boolean;
1971
+ allowlist?: string[] | undefined;
1972
+ blocklist?: string[] | undefined;
1973
+ } | undefined;
1974
+ presence?: {
1975
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
1976
+ activity_message?: string | undefined;
1977
+ } | undefined;
1207
1978
  } | undefined;
1208
1979
  } | undefined;
1209
1980
  description?: string | undefined;
@@ -1245,6 +2016,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
1245
2016
  interval?: string | undefined;
1246
2017
  expression?: string | undefined;
1247
2018
  prompt?: string | undefined;
2019
+ outputToFile?: boolean | undefined;
1248
2020
  }> | undefined;
1249
2021
  mcp_servers?: Record<string, {
1250
2022
  command?: string | undefined;
@@ -1302,8 +2074,34 @@ export declare const AgentConfigSchema: z.ZodObject<{
1302
2074
  permission_mode?: "default" | "acceptEdits" | "bypassPermissions" | "plan" | undefined;
1303
2075
  chat?: {
1304
2076
  discord?: {
1305
- channel_ids?: string[] | undefined;
1306
- respond_to_mentions?: boolean | undefined;
2077
+ bot_token_env: string;
2078
+ guilds: {
2079
+ id: string;
2080
+ channels?: {
2081
+ id: string;
2082
+ mode?: "mention" | "auto" | undefined;
2083
+ name?: string | undefined;
2084
+ context_messages?: number | undefined;
2085
+ }[] | undefined;
2086
+ dm?: {
2087
+ mode?: "mention" | "auto" | undefined;
2088
+ enabled?: boolean | undefined;
2089
+ allowlist?: string[] | undefined;
2090
+ blocklist?: string[] | undefined;
2091
+ } | undefined;
2092
+ }[];
2093
+ dm?: {
2094
+ mode?: "mention" | "auto" | undefined;
2095
+ enabled?: boolean | undefined;
2096
+ allowlist?: string[] | undefined;
2097
+ blocklist?: string[] | undefined;
2098
+ } | undefined;
2099
+ session_expiry_hours?: number | undefined;
2100
+ log_level?: "minimal" | "standard" | "verbose" | undefined;
2101
+ presence?: {
2102
+ activity_type?: "playing" | "watching" | "listening" | "competing" | undefined;
2103
+ activity_message?: string | undefined;
2104
+ } | undefined;
1307
2105
  } | undefined;
1308
2106
  } | undefined;
1309
2107
  description?: string | undefined;
@@ -1345,6 +2143,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
1345
2143
  interval?: string | undefined;
1346
2144
  expression?: string | undefined;
1347
2145
  prompt?: string | undefined;
2146
+ outputToFile?: boolean | undefined;
1348
2147
  }> | undefined;
1349
2148
  mcp_servers?: Record<string, {
1350
2149
  command?: string | undefined;
@@ -1900,6 +2699,11 @@ export type Session = z.infer<typeof SessionSchema>;
1900
2699
  export type ScheduleType = z.infer<typeof ScheduleTypeSchema>;
1901
2700
  export type Schedule = z.infer<typeof ScheduleSchema>;
1902
2701
  export type McpServer = z.infer<typeof McpServerSchema>;
2702
+ export type DiscordPresence = z.infer<typeof DiscordPresenceSchema>;
2703
+ export type DiscordDM = z.infer<typeof DiscordDMSchema>;
2704
+ export type DiscordChannel = z.infer<typeof DiscordChannelSchema>;
2705
+ export type DiscordGuild = z.infer<typeof DiscordGuildSchema>;
2706
+ export type AgentChatDiscord = z.infer<typeof AgentChatDiscordSchema>;
1903
2707
  export type AgentChat = z.infer<typeof AgentChatSchema>;
1904
2708
  export type AgentWorkspace = z.infer<typeof AgentWorkspaceSchema>;
1905
2709
  export type AgentConfig = z.infer<typeof AgentConfigSchema>;