@herdctl/core 0.0.1 → 0.1.0

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