seclaw-agent 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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +668 -0
  3. package/SECURITY.md +253 -0
  4. package/assets/logo.png +0 -0
  5. package/dist/agent/context.d.ts +37 -0
  6. package/dist/agent/context.d.ts.map +1 -0
  7. package/dist/agent/context.js +211 -0
  8. package/dist/agent/context.js.map +1 -0
  9. package/dist/agent/docker_sandbox.d.ts +41 -0
  10. package/dist/agent/docker_sandbox.d.ts.map +1 -0
  11. package/dist/agent/docker_sandbox.js +239 -0
  12. package/dist/agent/docker_sandbox.js.map +1 -0
  13. package/dist/agent/loop.d.ts +86 -0
  14. package/dist/agent/loop.d.ts.map +1 -0
  15. package/dist/agent/loop.js +858 -0
  16. package/dist/agent/loop.js.map +1 -0
  17. package/dist/agent/memory.d.ts +21 -0
  18. package/dist/agent/memory.d.ts.map +1 -0
  19. package/dist/agent/memory.js +128 -0
  20. package/dist/agent/memory.js.map +1 -0
  21. package/dist/agent/security/execution_audit.d.ts +17 -0
  22. package/dist/agent/security/execution_audit.d.ts.map +1 -0
  23. package/dist/agent/security/execution_audit.js +126 -0
  24. package/dist/agent/security/execution_audit.js.map +1 -0
  25. package/dist/agent/security/input_validation/entity.d.ts +57 -0
  26. package/dist/agent/security/input_validation/entity.d.ts.map +1 -0
  27. package/dist/agent/security/input_validation/entity.js +121 -0
  28. package/dist/agent/security/input_validation/entity.js.map +1 -0
  29. package/dist/agent/security/input_validation/index.d.ts +114 -0
  30. package/dist/agent/security/input_validation/index.d.ts.map +1 -0
  31. package/dist/agent/security/input_validation/index.js +971 -0
  32. package/dist/agent/security/input_validation/index.js.map +1 -0
  33. package/dist/agent/security/input_validation/lattice.d.ts +33 -0
  34. package/dist/agent/security/input_validation/lattice.d.ts.map +1 -0
  35. package/dist/agent/security/input_validation/lattice.js +61 -0
  36. package/dist/agent/security/input_validation/lattice.js.map +1 -0
  37. package/dist/agent/security/input_validation/program_graph.d.ts +51 -0
  38. package/dist/agent/security/input_validation/program_graph.d.ts.map +1 -0
  39. package/dist/agent/security/input_validation/program_graph.js +285 -0
  40. package/dist/agent/security/input_validation/program_graph.js.map +1 -0
  41. package/dist/agent/security/input_validation/security_policy.d.ts +29 -0
  42. package/dist/agent/security/input_validation/security_policy.d.ts.map +1 -0
  43. package/dist/agent/security/input_validation/security_policy.js +256 -0
  44. package/dist/agent/security/input_validation/security_policy.js.map +1 -0
  45. package/dist/agent/security/memory_audit.d.ts +14 -0
  46. package/dist/agent/security/memory_audit.d.ts.map +1 -0
  47. package/dist/agent/security/memory_audit.js +126 -0
  48. package/dist/agent/security/memory_audit.js.map +1 -0
  49. package/dist/agent/security/skill_audit.d.ts +15 -0
  50. package/dist/agent/security/skill_audit.d.ts.map +1 -0
  51. package/dist/agent/security/skill_audit.js +112 -0
  52. package/dist/agent/security/skill_audit.js.map +1 -0
  53. package/dist/agent/security/snapshot_and_rollback/base.d.ts +10 -0
  54. package/dist/agent/security/snapshot_and_rollback/base.d.ts.map +1 -0
  55. package/dist/agent/security/snapshot_and_rollback/base.js +10 -0
  56. package/dist/agent/security/snapshot_and_rollback/base.js.map +1 -0
  57. package/dist/agent/security/snapshot_and_rollback/docker_snapshot.d.ts +52 -0
  58. package/dist/agent/security/snapshot_and_rollback/docker_snapshot.d.ts.map +1 -0
  59. package/dist/agent/security/snapshot_and_rollback/docker_snapshot.js +358 -0
  60. package/dist/agent/security/snapshot_and_rollback/docker_snapshot.js.map +1 -0
  61. package/dist/agent/security/snapshot_and_rollback/index.d.ts +7 -0
  62. package/dist/agent/security/snapshot_and_rollback/index.d.ts.map +1 -0
  63. package/dist/agent/security/snapshot_and_rollback/index.js +450 -0
  64. package/dist/agent/security/snapshot_and_rollback/index.js.map +1 -0
  65. package/dist/agent/skills.d.ts +35 -0
  66. package/dist/agent/skills.d.ts.map +1 -0
  67. package/dist/agent/skills.js +235 -0
  68. package/dist/agent/skills.js.map +1 -0
  69. package/dist/agent/subagent.d.ts +39 -0
  70. package/dist/agent/subagent.d.ts.map +1 -0
  71. package/dist/agent/subagent.js +151 -0
  72. package/dist/agent/subagent.js.map +1 -0
  73. package/dist/agent/tools/base.d.ts +32 -0
  74. package/dist/agent/tools/base.d.ts.map +1 -0
  75. package/dist/agent/tools/base.js +91 -0
  76. package/dist/agent/tools/base.js.map +1 -0
  77. package/dist/agent/tools/cron.d.ts +46 -0
  78. package/dist/agent/tools/cron.d.ts.map +1 -0
  79. package/dist/agent/tools/cron.js +95 -0
  80. package/dist/agent/tools/cron.js.map +1 -0
  81. package/dist/agent/tools/filesystem.d.ts +102 -0
  82. package/dist/agent/tools/filesystem.d.ts.map +1 -0
  83. package/dist/agent/tools/filesystem.js +257 -0
  84. package/dist/agent/tools/filesystem.js.map +1 -0
  85. package/dist/agent/tools/message.d.ts +40 -0
  86. package/dist/agent/tools/message.d.ts.map +1 -0
  87. package/dist/agent/tools/message.js +55 -0
  88. package/dist/agent/tools/message.js.map +1 -0
  89. package/dist/agent/tools/registry.d.ts +16 -0
  90. package/dist/agent/tools/registry.d.ts.map +1 -0
  91. package/dist/agent/tools/registry.js +47 -0
  92. package/dist/agent/tools/registry.js.map +1 -0
  93. package/dist/agent/tools/shell.d.ts +40 -0
  94. package/dist/agent/tools/shell.d.ts.map +1 -0
  95. package/dist/agent/tools/shell.js +166 -0
  96. package/dist/agent/tools/shell.js.map +1 -0
  97. package/dist/agent/tools/spawn.d.ts +30 -0
  98. package/dist/agent/tools/spawn.d.ts.map +1 -0
  99. package/dist/agent/tools/spawn.js +50 -0
  100. package/dist/agent/tools/spawn.js.map +1 -0
  101. package/dist/agent/tools/web.d.ts +59 -0
  102. package/dist/agent/tools/web.d.ts.map +1 -0
  103. package/dist/agent/tools/web.js +167 -0
  104. package/dist/agent/tools/web.js.map +1 -0
  105. package/dist/bus/events.d.ts +31 -0
  106. package/dist/bus/events.d.ts.map +1 -0
  107. package/dist/bus/events.js +28 -0
  108. package/dist/bus/events.js.map +1 -0
  109. package/dist/bus/queue.d.ts +32 -0
  110. package/dist/bus/queue.d.ts.map +1 -0
  111. package/dist/bus/queue.js +104 -0
  112. package/dist/bus/queue.js.map +1 -0
  113. package/dist/channels/base.d.ts +25 -0
  114. package/dist/channels/base.d.ts.map +1 -0
  115. package/dist/channels/base.js +54 -0
  116. package/dist/channels/base.js.map +1 -0
  117. package/dist/channels/dingtalk.d.ts +31 -0
  118. package/dist/channels/dingtalk.d.ts.map +1 -0
  119. package/dist/channels/dingtalk.js +177 -0
  120. package/dist/channels/dingtalk.js.map +1 -0
  121. package/dist/channels/discord.d.ts +30 -0
  122. package/dist/channels/discord.d.ts.map +1 -0
  123. package/dist/channels/discord.js +197 -0
  124. package/dist/channels/discord.js.map +1 -0
  125. package/dist/channels/email.d.ts +41 -0
  126. package/dist/channels/email.d.ts.map +1 -0
  127. package/dist/channels/email.js +210 -0
  128. package/dist/channels/email.js.map +1 -0
  129. package/dist/channels/feishu.d.ts +32 -0
  130. package/dist/channels/feishu.d.ts.map +1 -0
  131. package/dist/channels/feishu.js +109 -0
  132. package/dist/channels/feishu.js.map +1 -0
  133. package/dist/channels/manager.d.ts +24 -0
  134. package/dist/channels/manager.d.ts.map +1 -0
  135. package/dist/channels/manager.js +205 -0
  136. package/dist/channels/manager.js.map +1 -0
  137. package/dist/channels/mochat.d.ts +38 -0
  138. package/dist/channels/mochat.d.ts.map +1 -0
  139. package/dist/channels/mochat.js +201 -0
  140. package/dist/channels/mochat.js.map +1 -0
  141. package/dist/channels/qq.d.ts +40 -0
  142. package/dist/channels/qq.d.ts.map +1 -0
  143. package/dist/channels/qq.js +280 -0
  144. package/dist/channels/qq.js.map +1 -0
  145. package/dist/channels/slack.d.ts +27 -0
  146. package/dist/channels/slack.d.ts.map +1 -0
  147. package/dist/channels/slack.js +118 -0
  148. package/dist/channels/slack.js.map +1 -0
  149. package/dist/channels/telegram.d.ts +31 -0
  150. package/dist/channels/telegram.d.ts.map +1 -0
  151. package/dist/channels/telegram.js +218 -0
  152. package/dist/channels/telegram.js.map +1 -0
  153. package/dist/channels/whatsapp.d.ts +29 -0
  154. package/dist/channels/whatsapp.d.ts.map +1 -0
  155. package/dist/channels/whatsapp.js +117 -0
  156. package/dist/channels/whatsapp.js.map +1 -0
  157. package/dist/cli/commands.d.ts +8 -0
  158. package/dist/cli/commands.d.ts.map +1 -0
  159. package/dist/cli/commands.js +537 -0
  160. package/dist/cli/commands.js.map +1 -0
  161. package/dist/config/loader.d.ts +24 -0
  162. package/dist/config/loader.d.ts.map +1 -0
  163. package/dist/config/loader.js +182 -0
  164. package/dist/config/loader.js.map +1 -0
  165. package/dist/config/schema.d.ts +2921 -0
  166. package/dist/config/schema.d.ts.map +1 -0
  167. package/dist/config/schema.js +257 -0
  168. package/dist/config/schema.js.map +1 -0
  169. package/dist/cron/service.d.ts +38 -0
  170. package/dist/cron/service.d.ts.map +1 -0
  171. package/dist/cron/service.js +336 -0
  172. package/dist/cron/service.js.map +1 -0
  173. package/dist/cron/types.d.ts +46 -0
  174. package/dist/cron/types.d.ts.map +1 -0
  175. package/dist/cron/types.js +6 -0
  176. package/dist/cron/types.js.map +1 -0
  177. package/dist/heartbeat/service.d.ts +26 -0
  178. package/dist/heartbeat/service.d.ts.map +1 -0
  179. package/dist/heartbeat/service.js +142 -0
  180. package/dist/heartbeat/service.js.map +1 -0
  181. package/dist/index.d.ts +7 -0
  182. package/dist/index.d.ts.map +1 -0
  183. package/dist/index.js +14 -0
  184. package/dist/index.js.map +1 -0
  185. package/dist/providers/base.d.ts +38 -0
  186. package/dist/providers/base.d.ts.map +1 -0
  187. package/dist/providers/base.js +21 -0
  188. package/dist/providers/base.js.map +1 -0
  189. package/dist/providers/litellm_provider.d.ts +35 -0
  190. package/dist/providers/litellm_provider.d.ts.map +1 -0
  191. package/dist/providers/litellm_provider.js +205 -0
  192. package/dist/providers/litellm_provider.js.map +1 -0
  193. package/dist/providers/registry.d.ts +44 -0
  194. package/dist/providers/registry.d.ts.map +1 -0
  195. package/dist/providers/registry.js +252 -0
  196. package/dist/providers/registry.js.map +1 -0
  197. package/dist/providers/transcription.d.ts +10 -0
  198. package/dist/providers/transcription.d.ts.map +1 -0
  199. package/dist/providers/transcription.js +83 -0
  200. package/dist/providers/transcription.js.map +1 -0
  201. package/dist/session/manager.d.ts +35 -0
  202. package/dist/session/manager.d.ts.map +1 -0
  203. package/dist/session/manager.js +193 -0
  204. package/dist/session/manager.js.map +1 -0
  205. package/dist/utils/helpers.d.ts +15 -0
  206. package/dist/utils/helpers.d.ts.map +1 -0
  207. package/dist/utils/helpers.js +100 -0
  208. package/dist/utils/helpers.js.map +1 -0
  209. package/dist/utils/logger.d.ts +7 -0
  210. package/dist/utils/logger.d.ts.map +1 -0
  211. package/dist/utils/logger.js +25 -0
  212. package/dist/utils/logger.js.map +1 -0
  213. package/package.json +58 -0
  214. package/templates/AGENTS.md +51 -0
  215. package/templates/HEARTBEAT.md +16 -0
  216. package/templates/SOUL.md +36 -0
  217. package/templates/TOOLS.md +150 -0
  218. package/templates/USER.md +17 -0
  219. package/templates/memory/MEMORY.md +23 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOvB,CAAC;AAIH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAIlD,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration schema
4
+ * Uses Zod for validation.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ConfigSchema = exports.SecurityConfigSchema = exports.ToolsConfigSchema = exports.DockerSandboxConfigSchema = exports.ExecToolConfigSchema = exports.WebToolsConfigSchema = exports.WebSearchConfigSchema = exports.GatewayConfigSchema = exports.ProvidersConfigSchema = exports.ProviderConfigSchema = exports.AgentsConfigSchema = exports.AgentDefaultsSchema = exports.ChannelsConfigSchema = exports.QQConfigSchema = exports.SlackConfigSchema = exports.SlackDMConfigSchema = exports.MochatConfigSchema = exports.MochatGroupRuleSchema = exports.MochatMentionConfigSchema = exports.EmailConfigSchema = exports.DiscordConfigSchema = exports.DingTalkConfigSchema = exports.FeishuConfigSchema = exports.TelegramConfigSchema = exports.WhatsAppConfigSchema = void 0;
41
+ exports.getWorkspacePath = getWorkspacePath;
42
+ const zod_1 = require("zod");
43
+ const path = __importStar(require("path"));
44
+ const os = __importStar(require("os"));
45
+ // ─── Channel Configs ─────────────────────────────────────────────────────────
46
+ exports.WhatsAppConfigSchema = zod_1.z.object({
47
+ enabled: zod_1.z.boolean().default(false),
48
+ bridgeUrl: zod_1.z.string().default("ws://localhost:3001"),
49
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
50
+ });
51
+ exports.TelegramConfigSchema = zod_1.z.object({
52
+ enabled: zod_1.z.boolean().default(false),
53
+ token: zod_1.z.string().default(""),
54
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
55
+ proxy: zod_1.z.string().nullable().default(null),
56
+ startReply: zod_1.z.string().default("👋 Hi, I'm SeClaw, your secure AI agent assistant.\n I help you complete tasks safely and efficiently.\nSend /help to see the available commands."),
57
+ });
58
+ exports.FeishuConfigSchema = zod_1.z.object({
59
+ enabled: zod_1.z.boolean().default(false),
60
+ appId: zod_1.z.string().default(""),
61
+ appSecret: zod_1.z.string().default(""),
62
+ encryptKey: zod_1.z.string().default(""),
63
+ verificationToken: zod_1.z.string().default(""),
64
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
65
+ });
66
+ exports.DingTalkConfigSchema = zod_1.z.object({
67
+ enabled: zod_1.z.boolean().default(false),
68
+ clientId: zod_1.z.string().default(""),
69
+ clientSecret: zod_1.z.string().default(""),
70
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
71
+ });
72
+ exports.DiscordConfigSchema = zod_1.z.object({
73
+ enabled: zod_1.z.boolean().default(false),
74
+ token: zod_1.z.string().default(""),
75
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
76
+ gatewayUrl: zod_1.z.string().default("wss://gateway.discord.gg/?v=10&encoding=json"),
77
+ intents: zod_1.z.number().default(37377),
78
+ });
79
+ exports.EmailConfigSchema = zod_1.z.object({
80
+ enabled: zod_1.z.boolean().default(false),
81
+ consentGranted: zod_1.z.boolean().default(false),
82
+ imapHost: zod_1.z.string().default(""),
83
+ imapPort: zod_1.z.number().default(993),
84
+ imapUsername: zod_1.z.string().default(""),
85
+ imapPassword: zod_1.z.string().default(""),
86
+ imapMailbox: zod_1.z.string().default("INBOX"),
87
+ imapUseSsl: zod_1.z.boolean().default(true),
88
+ smtpHost: zod_1.z.string().default(""),
89
+ smtpPort: zod_1.z.number().default(587),
90
+ smtpUsername: zod_1.z.string().default(""),
91
+ smtpPassword: zod_1.z.string().default(""),
92
+ smtpUseTls: zod_1.z.boolean().default(true),
93
+ smtpUseSsl: zod_1.z.boolean().default(false),
94
+ fromAddress: zod_1.z.string().default(""),
95
+ autoReplyEnabled: zod_1.z.boolean().default(true),
96
+ pollIntervalSeconds: zod_1.z.number().default(30),
97
+ markSeen: zod_1.z.boolean().default(true),
98
+ maxBodyChars: zod_1.z.number().default(12000),
99
+ subjectPrefix: zod_1.z.string().default("Re: "),
100
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
101
+ });
102
+ exports.MochatMentionConfigSchema = zod_1.z.object({
103
+ requireInGroups: zod_1.z.boolean().default(false),
104
+ });
105
+ exports.MochatGroupRuleSchema = zod_1.z.object({
106
+ requireMention: zod_1.z.boolean().default(false),
107
+ });
108
+ exports.MochatConfigSchema = zod_1.z.object({
109
+ enabled: zod_1.z.boolean().default(false),
110
+ baseUrl: zod_1.z.string().default("https://mochat.io"),
111
+ socketUrl: zod_1.z.string().default(""),
112
+ socketPath: zod_1.z.string().default("/socket.io"),
113
+ socketDisableMsgpack: zod_1.z.boolean().default(false),
114
+ socketReconnectDelayMs: zod_1.z.number().default(1000),
115
+ socketMaxReconnectDelayMs: zod_1.z.number().default(10000),
116
+ socketConnectTimeoutMs: zod_1.z.number().default(10000),
117
+ refreshIntervalMs: zod_1.z.number().default(30000),
118
+ watchTimeoutMs: zod_1.z.number().default(25000),
119
+ watchLimit: zod_1.z.number().default(100),
120
+ retryDelayMs: zod_1.z.number().default(500),
121
+ maxRetryAttempts: zod_1.z.number().default(0),
122
+ clawToken: zod_1.z.string().default(""),
123
+ agentUserId: zod_1.z.string().default(""),
124
+ sessions: zod_1.z.array(zod_1.z.string()).default([]),
125
+ panels: zod_1.z.array(zod_1.z.string()).default([]),
126
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
127
+ mention: exports.MochatMentionConfigSchema.default({}),
128
+ groups: zod_1.z.record(exports.MochatGroupRuleSchema).default({}),
129
+ replyDelayMode: zod_1.z.string().default("non-mention"),
130
+ replyDelayMs: zod_1.z.number().default(120000),
131
+ });
132
+ exports.SlackDMConfigSchema = zod_1.z.object({
133
+ enabled: zod_1.z.boolean().default(true),
134
+ policy: zod_1.z.string().default("open"),
135
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
136
+ });
137
+ exports.SlackConfigSchema = zod_1.z.object({
138
+ enabled: zod_1.z.boolean().default(false),
139
+ mode: zod_1.z.string().default("socket"),
140
+ webhookPath: zod_1.z.string().default("/slack/events"),
141
+ botToken: zod_1.z.string().default(""),
142
+ appToken: zod_1.z.string().default(""),
143
+ userTokenReadOnly: zod_1.z.boolean().default(true),
144
+ groupPolicy: zod_1.z.string().default("mention"),
145
+ groupAllowFrom: zod_1.z.array(zod_1.z.string()).default([]),
146
+ dm: exports.SlackDMConfigSchema.default({}),
147
+ });
148
+ exports.QQConfigSchema = zod_1.z.object({
149
+ enabled: zod_1.z.boolean().default(false),
150
+ appId: zod_1.z.string().default(""),
151
+ secret: zod_1.z.string().default(""),
152
+ allowFrom: zod_1.z.array(zod_1.z.string()).default([]),
153
+ });
154
+ exports.ChannelsConfigSchema = zod_1.z.object({
155
+ whatsapp: exports.WhatsAppConfigSchema.default({}),
156
+ telegram: exports.TelegramConfigSchema.default({}),
157
+ discord: exports.DiscordConfigSchema.default({}),
158
+ feishu: exports.FeishuConfigSchema.default({}),
159
+ mochat: exports.MochatConfigSchema.default({}),
160
+ dingtalk: exports.DingTalkConfigSchema.default({}),
161
+ email: exports.EmailConfigSchema.default({}),
162
+ slack: exports.SlackConfigSchema.default({}),
163
+ qq: exports.QQConfigSchema.default({}),
164
+ });
165
+ // ─── Agent Configs ────────────────────────────────────────────────────────────
166
+ exports.AgentDefaultsSchema = zod_1.z.object({
167
+ workspace: zod_1.z.string().default("~/.seclaw/workspace"),
168
+ model: zod_1.z.string().default("anthropic/claude-opus-4-5"),
169
+ maxTokens: zod_1.z.number().default(8192),
170
+ temperature: zod_1.z.number().default(0.7),
171
+ maxToolIterations: zod_1.z.number().default(20),
172
+ });
173
+ exports.AgentsConfigSchema = zod_1.z.object({
174
+ defaults: exports.AgentDefaultsSchema.default({}),
175
+ });
176
+ // ─── Provider Configs ─────────────────────────────────────────────────────────
177
+ exports.ProviderConfigSchema = zod_1.z.object({
178
+ apiKey: zod_1.z.string().default(""),
179
+ apiBase: zod_1.z.string().nullable().default(null),
180
+ extraHeaders: zod_1.z.record(zod_1.z.string()).nullable().default(null),
181
+ });
182
+ exports.ProvidersConfigSchema = zod_1.z.object({
183
+ anthropic: exports.ProviderConfigSchema.default({}),
184
+ openai: exports.ProviderConfigSchema.default({}),
185
+ openrouter: exports.ProviderConfigSchema.default({}),
186
+ deepseek: exports.ProviderConfigSchema.default({}),
187
+ groq: exports.ProviderConfigSchema.default({}),
188
+ zhipu: exports.ProviderConfigSchema.default({}),
189
+ dashscope: exports.ProviderConfigSchema.default({}),
190
+ vllm: exports.ProviderConfigSchema.default({}),
191
+ gemini: exports.ProviderConfigSchema.default({}),
192
+ moonshot: exports.ProviderConfigSchema.default({}),
193
+ minimax: exports.ProviderConfigSchema.default({}),
194
+ aihubmix: exports.ProviderConfigSchema.default({}),
195
+ });
196
+ // ─── Gateway Config ───────────────────────────────────────────────────────────
197
+ exports.GatewayConfigSchema = zod_1.z.object({
198
+ host: zod_1.z.string().default("0.0.0.0"),
199
+ port: zod_1.z.number().default(18790),
200
+ });
201
+ // ─── Tools Configs ────────────────────────────────────────────────────────────
202
+ exports.WebSearchConfigSchema = zod_1.z.object({
203
+ apiKey: zod_1.z.string().default(""),
204
+ maxResults: zod_1.z.number().default(5),
205
+ });
206
+ exports.WebToolsConfigSchema = zod_1.z.object({
207
+ search: exports.WebSearchConfigSchema.default({}),
208
+ });
209
+ exports.ExecToolConfigSchema = zod_1.z.object({
210
+ timeout: zod_1.z.number().default(60),
211
+ });
212
+ exports.DockerSandboxConfigSchema = zod_1.z.object({
213
+ enabled: zod_1.z.boolean().default(false),
214
+ image: zod_1.z.string().default("ubuntu:22.04"),
215
+ containerName: zod_1.z.string().default("seclaw"),
216
+ workspaceContainer: zod_1.z.string().default("/workspace"),
217
+ workspaceReadOnly: zod_1.z.boolean().default(false),
218
+ extraMounts: zod_1.z.array(zod_1.z.string()).default([]),
219
+ extraEnv: zod_1.z.record(zod_1.z.string()).default({}),
220
+ memoryLimit: zod_1.z.string().nullable().default(null),
221
+ network: zod_1.z.string().default("bridge"),
222
+ snapshotEnabled: zod_1.z.boolean().default(true),
223
+ snapshotMax: zod_1.z.number().default(10),
224
+ snapshotMinIntervalSeconds: zod_1.z.number().default(1800),
225
+ });
226
+ exports.ToolsConfigSchema = zod_1.z.object({
227
+ web: exports.WebToolsConfigSchema.default({}),
228
+ exec: exports.ExecToolConfigSchema.default({}),
229
+ restrictToWorkspace: zod_1.z.boolean().default(false),
230
+ });
231
+ // ─── Security Config ──────────────────────────────────────────────────────────
232
+ exports.SecurityConfigSchema = zod_1.z.object({
233
+ dockerSandbox: exports.DockerSandboxConfigSchema.default({}),
234
+ prohibitedCommands: zod_1.z.array(zod_1.z.string()).default([]),
235
+ inputValidationEnabled: zod_1.z.boolean().default(true),
236
+ outputValidationEnabled: zod_1.z.boolean().default(true),
237
+ executionLogEnabled: zod_1.z.boolean().default(true),
238
+ executionLogStep: zod_1.z.number().default(1),
239
+ postExecutionAuditEnabled: zod_1.z.boolean().default(true),
240
+ skillAuditEnabled: zod_1.z.boolean().default(true),
241
+ });
242
+ // ─── Root Config ──────────────────────────────────────────────────────────────
243
+ exports.ConfigSchema = zod_1.z.object({
244
+ agents: exports.AgentsConfigSchema.default({}),
245
+ channels: exports.ChannelsConfigSchema.default({}),
246
+ providers: exports.ProvidersConfigSchema.default({}),
247
+ gateway: exports.GatewayConfigSchema.default({}),
248
+ tools: exports.ToolsConfigSchema.default({}),
249
+ security: exports.SecurityConfigSchema.default({}),
250
+ });
251
+ // ─── Config helpers ───────────────────────────────────────────────────────────
252
+ /** Get expanded workspace path */
253
+ function getWorkspacePath(config) {
254
+ const ws = config.agents.defaults.workspace;
255
+ return ws.startsWith("~") ? path.join(os.homedir(), ws.slice(1)) : ws;
256
+ }
257
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgRH,4CAGC;AAjRD,6BAAwB;AACxB,2CAA6B;AAC7B,uCAAyB;AAEzB,gFAAgF;AAEnE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;IACpD,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mJAAmJ,CAAC;CACpL,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC;IAC9E,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnC,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC5C,oBAAoB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChD,sBAAsB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,yBAAyB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpD,sBAAsB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACnC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACrC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,iCAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,6BAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IACjD,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACzC,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1C,cAAc,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,EAAE,EAAE,2BAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CACpC,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,2BAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,MAAM,EAAE,0BAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,0BAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,KAAK,EAAE,yBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,KAAK,EAAE,yBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,EAAE,EAAE,sBAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;IACpD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACtD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpC,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,2BAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,UAAU,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,IAAI,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,IAAI,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAChC,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,6BAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAChC,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IACzC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IACpD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrC,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,0BAA0B,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACrD,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAChD,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,iCAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD,kBAAkB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,sBAAsB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD,uBAAuB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClD,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,yBAAyB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC7C,CAAC,CAAC;AAEH,iFAAiF;AAEpE,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,0BAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,6BAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,2BAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,KAAK,EAAE,yBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACpC,QAAQ,EAAE,4BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AA2BH,iFAAiF;AAEjF,kCAAkC;AAClC,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5C,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Cron service
3
+ */
4
+ import { CronJob, CronSchedule } from "./types";
5
+ type JobCallback = (job: CronJob) => Promise<string | null>;
6
+ export declare class CronService {
7
+ storePath: string;
8
+ onJob: JobCallback | null;
9
+ private _store;
10
+ private _timerHandle;
11
+ private _running;
12
+ constructor(storePath: string, onJob?: JobCallback | null);
13
+ private _loadStore;
14
+ private _saveStore;
15
+ start(): Promise<void>;
16
+ stop(): void;
17
+ private _recomputeNextRuns;
18
+ private _getNextWakeMs;
19
+ private _armTimer;
20
+ private _onTimer;
21
+ private _executeJob;
22
+ listJobs(includeDisabled?: boolean): CronJob[];
23
+ addJob(opts: {
24
+ name: string;
25
+ schedule: CronSchedule;
26
+ message: string;
27
+ deliver?: boolean;
28
+ channel?: string | null;
29
+ to?: string | null;
30
+ deleteAfterRun?: boolean;
31
+ }): CronJob;
32
+ removeJob(jobId: string): boolean;
33
+ enableJob(jobId: string, enabled?: boolean): CronJob | null;
34
+ runJob(jobId: string, force?: boolean): Promise<boolean>;
35
+ status(): Record<string, unknown>;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cron/service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,OAAO,EAGP,YAAY,EAEb,MAAM,SAAS,CAAC;AA+BjB,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5D,qBAAa,WAAW;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzD,OAAO,CAAC,UAAU;IAgDlB,OAAO,CAAC,UAAU;IAuCZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,SAAS;YAmBH,QAAQ;YAgBR,WAAW;IAkCzB,QAAQ,CAAC,eAAe,UAAQ,GAAG,OAAO,EAAE;IAQ5C,MAAM,CAAC,IAAI,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,YAAY,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,OAAO;IA+BX,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAejC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,GAAG,IAAI;IAelD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC"}
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ /**
3
+ * Cron service
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.CronService = void 0;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const uuid_1 = require("uuid");
43
+ const logger_1 = require("../utils/logger");
44
+ function nowMs() {
45
+ return Date.now();
46
+ }
47
+ function computeNextRun(schedule, nowMs) {
48
+ if (schedule.kind === "at") {
49
+ return schedule.atMs && schedule.atMs > nowMs ? schedule.atMs : null;
50
+ }
51
+ if (schedule.kind === "every") {
52
+ if (!schedule.everyMs || schedule.everyMs <= 0)
53
+ return null;
54
+ return nowMs + schedule.everyMs;
55
+ }
56
+ if (schedule.kind === "cron" && schedule.expr) {
57
+ try {
58
+ // Use the cron package for parsing
59
+ const { CronTime } = require("cron");
60
+ const ct = new CronTime(schedule.expr, schedule.tz ?? "UTC");
61
+ const next = ct.sendAt();
62
+ return next.toMillis ? next.toMillis() : next.getTime();
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ return null;
69
+ }
70
+ class CronService {
71
+ storePath;
72
+ onJob;
73
+ _store = null;
74
+ _timerHandle = null;
75
+ _running = false;
76
+ constructor(storePath, onJob) {
77
+ this.storePath = storePath;
78
+ this.onJob = onJob ?? null;
79
+ }
80
+ _loadStore() {
81
+ if (this._store)
82
+ return this._store;
83
+ if (fs.existsSync(this.storePath)) {
84
+ try {
85
+ const data = JSON.parse(fs.readFileSync(this.storePath, "utf8"));
86
+ const jobs = (data["jobs"] ?? []).map((j) => ({
87
+ id: j["id"],
88
+ name: j["name"],
89
+ enabled: j["enabled"] ?? true,
90
+ schedule: {
91
+ kind: (j["schedule"]?.["kind"] ?? "every"),
92
+ atMs: j["schedule"]?.["atMs"] ?? null,
93
+ everyMs: j["schedule"]?.["everyMs"] ?? null,
94
+ expr: j["schedule"]?.["expr"] ?? null,
95
+ tz: j["schedule"]?.["tz"] ?? null,
96
+ },
97
+ payload: {
98
+ kind: (j["payload"]?.["kind"] ?? "agent_turn"),
99
+ message: j["payload"]?.["message"] ?? "",
100
+ deliver: j["payload"]?.["deliver"] ?? false,
101
+ channel: j["payload"]?.["channel"] ?? null,
102
+ to: j["payload"]?.["to"] ?? null,
103
+ },
104
+ state: {
105
+ nextRunAtMs: j["state"]?.["nextRunAtMs"] ?? null,
106
+ lastRunAtMs: j["state"]?.["lastRunAtMs"] ?? null,
107
+ lastStatus: j["state"]?.["lastStatus"] ?? null,
108
+ lastError: j["state"]?.["lastError"] ?? null,
109
+ },
110
+ createdAtMs: j["createdAtMs"] ?? 0,
111
+ updatedAtMs: j["updatedAtMs"] ?? 0,
112
+ deleteAfterRun: j["deleteAfterRun"] ?? false,
113
+ }));
114
+ this._store = { version: data["version"] ?? 1, jobs };
115
+ }
116
+ catch (e) {
117
+ logger_1.logger.warn({ err: e }, "Failed to load cron store");
118
+ this._store = { version: 1, jobs: [] };
119
+ }
120
+ }
121
+ else {
122
+ this._store = { version: 1, jobs: [] };
123
+ }
124
+ return this._store;
125
+ }
126
+ _saveStore() {
127
+ if (!this._store)
128
+ return;
129
+ fs.mkdirSync(path.dirname(this.storePath), { recursive: true });
130
+ const data = {
131
+ version: this._store.version,
132
+ jobs: this._store.jobs.map((j) => ({
133
+ id: j.id,
134
+ name: j.name,
135
+ enabled: j.enabled,
136
+ schedule: {
137
+ kind: j.schedule.kind,
138
+ atMs: j.schedule.atMs ?? null,
139
+ everyMs: j.schedule.everyMs ?? null,
140
+ expr: j.schedule.expr ?? null,
141
+ tz: j.schedule.tz ?? null,
142
+ },
143
+ payload: {
144
+ kind: j.payload.kind,
145
+ message: j.payload.message,
146
+ deliver: j.payload.deliver,
147
+ channel: j.payload.channel ?? null,
148
+ to: j.payload.to ?? null,
149
+ },
150
+ state: {
151
+ nextRunAtMs: j.state.nextRunAtMs ?? null,
152
+ lastRunAtMs: j.state.lastRunAtMs ?? null,
153
+ lastStatus: j.state.lastStatus ?? null,
154
+ lastError: j.state.lastError ?? null,
155
+ },
156
+ createdAtMs: j.createdAtMs,
157
+ updatedAtMs: j.updatedAtMs,
158
+ deleteAfterRun: j.deleteAfterRun,
159
+ })),
160
+ };
161
+ fs.writeFileSync(this.storePath, JSON.stringify(data, null, 2));
162
+ }
163
+ async start() {
164
+ this._running = true;
165
+ this._loadStore();
166
+ this._recomputeNextRuns();
167
+ this._saveStore();
168
+ this._armTimer();
169
+ const count = this._store?.jobs.length ?? 0;
170
+ logger_1.logger.info(`Cron service started with ${count} jobs`);
171
+ }
172
+ stop() {
173
+ this._running = false;
174
+ if (this._timerHandle) {
175
+ clearTimeout(this._timerHandle);
176
+ this._timerHandle = null;
177
+ }
178
+ }
179
+ _recomputeNextRuns() {
180
+ if (!this._store)
181
+ return;
182
+ const now = nowMs();
183
+ for (const job of this._store.jobs) {
184
+ if (job.enabled) {
185
+ job.state.nextRunAtMs = computeNextRun(job.schedule, now);
186
+ }
187
+ }
188
+ }
189
+ _getNextWakeMs() {
190
+ if (!this._store)
191
+ return null;
192
+ const times = this._store.jobs
193
+ .filter((j) => j.enabled && j.state.nextRunAtMs)
194
+ .map((j) => j.state.nextRunAtMs);
195
+ return times.length > 0 ? Math.min(...times) : null;
196
+ }
197
+ _armTimer() {
198
+ if (this._timerHandle) {
199
+ clearTimeout(this._timerHandle);
200
+ this._timerHandle = null;
201
+ }
202
+ const nextWake = this._getNextWakeMs();
203
+ if (!nextWake || !this._running)
204
+ return;
205
+ const delayMs = Math.max(0, nextWake - nowMs());
206
+ this._timerHandle = setTimeout(() => {
207
+ if (this._running) {
208
+ this._onTimer().catch((e) => logger_1.logger.error({ err: e }, "Cron timer error"));
209
+ }
210
+ }, delayMs);
211
+ }
212
+ async _onTimer() {
213
+ if (!this._store)
214
+ return;
215
+ const now = nowMs();
216
+ const dueJobs = this._store.jobs.filter((j) => j.enabled && j.state.nextRunAtMs != null && now >= j.state.nextRunAtMs);
217
+ for (const job of dueJobs) {
218
+ await this._executeJob(job);
219
+ }
220
+ this._saveStore();
221
+ this._armTimer();
222
+ }
223
+ async _executeJob(job) {
224
+ const startMs = nowMs();
225
+ logger_1.logger.info({ jobId: job.id, jobName: job.name }, "Cron: executing job");
226
+ try {
227
+ if (this.onJob) {
228
+ await this.onJob(job);
229
+ }
230
+ job.state.lastStatus = "ok";
231
+ job.state.lastError = null;
232
+ logger_1.logger.info({ jobId: job.id }, "Cron: job completed");
233
+ }
234
+ catch (e) {
235
+ job.state.lastStatus = "error";
236
+ job.state.lastError = String(e);
237
+ logger_1.logger.error({ err: e, jobId: job.id }, "Cron: job failed");
238
+ }
239
+ job.state.lastRunAtMs = startMs;
240
+ job.updatedAtMs = nowMs();
241
+ if (job.schedule.kind === "at") {
242
+ if (job.deleteAfterRun) {
243
+ this._store.jobs = this._store.jobs.filter((j) => j.id !== job.id);
244
+ }
245
+ else {
246
+ job.enabled = false;
247
+ job.state.nextRunAtMs = null;
248
+ }
249
+ }
250
+ else {
251
+ job.state.nextRunAtMs = computeNextRun(job.schedule, nowMs());
252
+ }
253
+ }
254
+ // ─── Public API ───────────────────────────────────────────────────────────
255
+ listJobs(includeDisabled = false) {
256
+ const store = this._loadStore();
257
+ const jobs = includeDisabled ? store.jobs : store.jobs.filter((j) => j.enabled);
258
+ return jobs.sort((a, b) => (a.state.nextRunAtMs ?? Infinity) - (b.state.nextRunAtMs ?? Infinity));
259
+ }
260
+ addJob(opts) {
261
+ const store = this._loadStore();
262
+ const now = nowMs();
263
+ const job = {
264
+ id: (0, uuid_1.v4)().slice(0, 8),
265
+ name: opts.name,
266
+ enabled: true,
267
+ schedule: opts.schedule,
268
+ payload: {
269
+ kind: "agent_turn",
270
+ message: opts.message,
271
+ deliver: opts.deliver ?? false,
272
+ channel: opts.channel ?? null,
273
+ to: opts.to ?? null,
274
+ },
275
+ state: {
276
+ nextRunAtMs: computeNextRun(opts.schedule, now),
277
+ },
278
+ createdAtMs: now,
279
+ updatedAtMs: now,
280
+ deleteAfterRun: opts.deleteAfterRun ?? false,
281
+ };
282
+ store.jobs.push(job);
283
+ this._saveStore();
284
+ this._armTimer();
285
+ logger_1.logger.info({ jobId: job.id, jobName: opts.name }, "Cron: added job");
286
+ return job;
287
+ }
288
+ removeJob(jobId) {
289
+ const store = this._loadStore();
290
+ const before = store.jobs.length;
291
+ store.jobs = store.jobs.filter((j) => j.id !== jobId);
292
+ const removed = store.jobs.length < before;
293
+ if (removed) {
294
+ this._saveStore();
295
+ this._armTimer();
296
+ logger_1.logger.info({ jobId }, "Cron: removed job");
297
+ }
298
+ return removed;
299
+ }
300
+ enableJob(jobId, enabled = true) {
301
+ const store = this._loadStore();
302
+ const job = store.jobs.find((j) => j.id === jobId);
303
+ if (!job)
304
+ return null;
305
+ job.enabled = enabled;
306
+ job.updatedAtMs = nowMs();
307
+ job.state.nextRunAtMs = enabled
308
+ ? computeNextRun(job.schedule, nowMs())
309
+ : null;
310
+ this._saveStore();
311
+ this._armTimer();
312
+ return job;
313
+ }
314
+ async runJob(jobId, force = false) {
315
+ const store = this._loadStore();
316
+ const job = store.jobs.find((j) => j.id === jobId);
317
+ if (!job)
318
+ return false;
319
+ if (!force && !job.enabled)
320
+ return false;
321
+ await this._executeJob(job);
322
+ this._saveStore();
323
+ this._armTimer();
324
+ return true;
325
+ }
326
+ status() {
327
+ const store = this._loadStore();
328
+ return {
329
+ enabled: this._running,
330
+ jobs: store.jobs.length,
331
+ nextWakeAtMs: this._getNextWakeMs(),
332
+ };
333
+ }
334
+ }
335
+ exports.CronService = CronService;
336
+ //# sourceMappingURL=service.js.map