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":"manager.js","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Mochat channel
3
+ *
4
+ * Connects to a Mochat server via Socket.IO (or HTTP polling fallback).
5
+ * Requires: socket.io-client
6
+ */
7
+ import { OutboundMessage } from "../bus/events";
8
+ import { MessageBus } from "../bus/queue";
9
+ import { BaseChannel } from "./base";
10
+ interface MochatConfig {
11
+ enabled?: boolean;
12
+ baseUrl?: string;
13
+ token?: string;
14
+ agentId?: string;
15
+ allowFrom?: string[];
16
+ bufferWindowMs?: number;
17
+ [key: string]: unknown;
18
+ }
19
+ export declare class MochatChannel extends BaseChannel {
20
+ readonly name = "mochat";
21
+ private mochatConfig;
22
+ private socket?;
23
+ private seenIds;
24
+ private bufferByUser;
25
+ private cursorPath?;
26
+ private cursor?;
27
+ constructor(config: MochatConfig, bus: MessageBus);
28
+ start(): Promise<void>;
29
+ stop(): Promise<void>;
30
+ send(msg: OutboundMessage): Promise<void>;
31
+ private _connectSocket;
32
+ private _onMessage;
33
+ private _bufferMessage;
34
+ private _loadCursor;
35
+ private _saveCursor;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=mochat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochat.d.ts","sourceRoot":"","sources":["../../src/channels/mochat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAyE;IAC7F,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU;IAK3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAqBjC,cAAc;YAmCd,UAAU;YAiCV,cAAc;IAqB5B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;CAQpB"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Mochat channel
4
+ *
5
+ * Connects to a Mochat server via Socket.IO (or HTTP polling fallback).
6
+ * Requires: socket.io-client
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.MochatChannel = void 0;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const logger_1 = __importDefault(require("../utils/logger"));
49
+ const base_1 = require("./base");
50
+ const MAX_SEEN_IDS = 2000;
51
+ class MochatChannel extends base_1.BaseChannel {
52
+ name = "mochat";
53
+ mochatConfig;
54
+ socket; // socket.io-client Socket
55
+ seenIds = [];
56
+ bufferByUser = new Map();
57
+ cursorPath;
58
+ cursor;
59
+ constructor(config, bus) {
60
+ super(config, bus);
61
+ this.mochatConfig = config;
62
+ }
63
+ async start() {
64
+ let ioConnect;
65
+ try {
66
+ const sio = require("socket.io-client");
67
+ ioConnect = sio.io ?? sio;
68
+ }
69
+ catch {
70
+ logger_1.default.error("socket.io-client not installed. Run: npm install socket.io-client");
71
+ return;
72
+ }
73
+ if (!this.mochatConfig.baseUrl) {
74
+ logger_1.default.error("Mochat baseUrl not configured");
75
+ return;
76
+ }
77
+ this.running = true;
78
+ this._loadCursor();
79
+ await this._connectSocket(ioConnect);
80
+ // Keep alive
81
+ while (this.running) {
82
+ await new Promise((r) => setTimeout(r, 1000));
83
+ }
84
+ }
85
+ async stop() {
86
+ this.running = false;
87
+ if (this.socket) {
88
+ this.socket.disconnect();
89
+ }
90
+ logger_1.default.info("Mochat channel stopped");
91
+ }
92
+ async send(msg) {
93
+ if (!this.mochatConfig.baseUrl)
94
+ return;
95
+ try {
96
+ const axios = require("axios");
97
+ const url = `${this.mochatConfig.baseUrl}/api/v1/messages`;
98
+ await axios.post(url, { content: msg.content, user_id: msg.chatId, agent_id: this.mochatConfig.agentId }, {
99
+ headers: {
100
+ Authorization: `Bearer ${this.mochatConfig.token ?? ""}`,
101
+ "Content-Type": "application/json",
102
+ },
103
+ });
104
+ }
105
+ catch (e) {
106
+ logger_1.default.error(`Mochat send error: ${e}`);
107
+ }
108
+ }
109
+ async _connectSocket(ioConnect) {
110
+ const socket = ioConnect(this.mochatConfig.baseUrl, {
111
+ extraHeaders: { Authorization: `Bearer ${this.mochatConfig.token ?? ""}` },
112
+ transports: ["websocket", "polling"],
113
+ reconnection: true,
114
+ });
115
+ this.socket = socket;
116
+ socket.on("connect", () => {
117
+ logger_1.default.info("Connected to Mochat server");
118
+ });
119
+ socket.on("disconnect", () => {
120
+ logger_1.default.warn("Disconnected from Mochat server");
121
+ });
122
+ socket.on("message", async (data) => {
123
+ await this._onMessage(data);
124
+ });
125
+ socket.on("new_message", async (data) => {
126
+ await this._onMessage(data);
127
+ });
128
+ socket.on("error", (e) => {
129
+ logger_1.default.error(`Mochat socket error: ${e}`);
130
+ });
131
+ }
132
+ async _onMessage(data) {
133
+ try {
134
+ const messageId = data["id"] ??
135
+ data["message_id"] ??
136
+ JSON.stringify(data).slice(0, 64);
137
+ // Dedup
138
+ if (this.seenIds.includes(messageId))
139
+ return;
140
+ this.seenIds.push(messageId);
141
+ if (this.seenIds.length > MAX_SEEN_IDS)
142
+ this.seenIds.shift();
143
+ const senderId = data["author"] ??
144
+ data["user"]?.["id"] ??
145
+ "unknown";
146
+ const content = data["content"] ?? data["text"] ?? "";
147
+ if (!content.trim())
148
+ return;
149
+ const windowMs = this.mochatConfig.bufferWindowMs ?? 0;
150
+ if (windowMs > 0) {
151
+ await this._bufferMessage(senderId, content, windowMs);
152
+ }
153
+ else {
154
+ await this.handleMessage({ senderId, chatId: senderId, content });
155
+ }
156
+ }
157
+ catch (e) {
158
+ logger_1.default.error(`Mochat message handler error: ${e}`);
159
+ }
160
+ }
161
+ async _bufferMessage(userId, content, windowMs) {
162
+ let state = this.bufferByUser.get(userId);
163
+ if (!state) {
164
+ state = { entries: [] };
165
+ this.bufferByUser.set(userId, state);
166
+ }
167
+ state.entries.push(content);
168
+ if (state.timer)
169
+ clearTimeout(state.timer);
170
+ state.timer = setTimeout(async () => {
171
+ const combined = state.entries.join("\n");
172
+ state.entries = [];
173
+ await this.handleMessage({ senderId: userId, chatId: userId, content: combined });
174
+ }, windowMs);
175
+ }
176
+ _loadCursor() {
177
+ if (!this.mochatConfig.baseUrl)
178
+ return;
179
+ try {
180
+ const home = process.env["HOME"] ?? "/tmp";
181
+ this.cursorPath = path.join(home, ".seclaw", "mochat_cursor.json");
182
+ if (fs.existsSync(this.cursorPath)) {
183
+ const data = JSON.parse(fs.readFileSync(this.cursorPath, "utf-8"));
184
+ this.cursor = data["cursor"];
185
+ }
186
+ }
187
+ catch (_) { }
188
+ }
189
+ _saveCursor(cursor) {
190
+ if (!this.cursorPath)
191
+ return;
192
+ try {
193
+ fs.mkdirSync(path.dirname(this.cursorPath), { recursive: true });
194
+ fs.writeFileSync(this.cursorPath, JSON.stringify({ cursor }), "utf-8");
195
+ this.cursor = cursor;
196
+ }
197
+ catch (_) { }
198
+ }
199
+ }
200
+ exports.MochatChannel = MochatChannel;
201
+ //# sourceMappingURL=mochat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochat.js","sourceRoot":"","sources":["../../src/channels/mochat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * QQ channel
3
+ *
4
+ * Uses QQ Open Platform WebSocket Gateway to receive events.
5
+ * Sends replies via the QQ Bot REST API (C2C and group messages).
6
+ * Requires: ws
7
+ */
8
+ import { OutboundMessage } from "../bus/events";
9
+ import { MessageBus } from "../bus/queue";
10
+ import { BaseChannel } from "./base";
11
+ interface QQConfig {
12
+ enabled?: boolean;
13
+ appId?: string;
14
+ secret?: string;
15
+ allowFrom?: string[];
16
+ [key: string]: unknown;
17
+ }
18
+ export declare class QQChannel extends BaseChannel {
19
+ readonly name = "qq";
20
+ private qqConfig;
21
+ private accessToken?;
22
+ private tokenExpiry;
23
+ private ws?;
24
+ private heartbeatInterval?;
25
+ private sessionId?;
26
+ private lastSeq;
27
+ private processedIds;
28
+ constructor(config: QQConfig, bus: MessageBus);
29
+ start(): Promise<void>;
30
+ stop(): Promise<void>;
31
+ send(msg: OutboundMessage): Promise<void>;
32
+ private _connect;
33
+ private _handleGatewayEvent;
34
+ private _onMessage;
35
+ private _getAccessToken;
36
+ private _apiGet;
37
+ private _apiPost;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=qq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qq.d.ts","sourceRoot":"","sources":["../../src/channels/qq.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,QAAQ;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,qBAAa,SAAU,SAAQ,WAAW;IACxC,QAAQ,CAAC,IAAI,QAAQ;IACrB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,YAAY,CAA0B;gBAElC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU;IAKvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAoBjC,QAAQ;YAiCR,mBAAmB;YA0CnB,UAAU;YAyBV,eAAe;IAoC7B,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,QAAQ;CAwBjB"}
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ /**
3
+ * QQ channel
4
+ *
5
+ * Uses QQ Open Platform WebSocket Gateway to receive events.
6
+ * Sends replies via the QQ Bot REST API (C2C and group messages).
7
+ * Requires: ws
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.QQChannel = void 0;
47
+ const https = __importStar(require("https"));
48
+ const ws_1 = __importDefault(require("ws"));
49
+ const logger_1 = __importDefault(require("../utils/logger"));
50
+ const base_1 = require("./base");
51
+ const QQ_API = "api.sgroup.qq.com";
52
+ const QQ_AUTH = "bots.qq.com";
53
+ class QQChannel extends base_1.BaseChannel {
54
+ name = "qq";
55
+ qqConfig;
56
+ accessToken;
57
+ tokenExpiry = 0;
58
+ ws;
59
+ heartbeatInterval;
60
+ sessionId;
61
+ lastSeq = 0;
62
+ processedIds = new Set();
63
+ constructor(config, bus) {
64
+ super(config, bus);
65
+ this.qqConfig = config;
66
+ }
67
+ async start() {
68
+ if (!this.qqConfig.appId || !this.qqConfig.secret) {
69
+ logger_1.default.error("QQ appId and secret not configured");
70
+ return;
71
+ }
72
+ this.running = true;
73
+ logger_1.default.info("QQ channel starting...");
74
+ while (this.running) {
75
+ try {
76
+ await this._connect();
77
+ }
78
+ catch (e) {
79
+ logger_1.default.warn(`QQ connection error: ${e}`);
80
+ }
81
+ if (this.running) {
82
+ logger_1.default.info("QQ reconnecting in 5s...");
83
+ await new Promise((r) => setTimeout(r, 5000));
84
+ }
85
+ }
86
+ }
87
+ async stop() {
88
+ this.running = false;
89
+ if (this.heartbeatInterval)
90
+ clearInterval(this.heartbeatInterval);
91
+ this.ws?.close();
92
+ logger_1.default.info("QQ channel stopped");
93
+ }
94
+ async send(msg) {
95
+ try {
96
+ const token = await this._getAccessToken();
97
+ if (!token)
98
+ return;
99
+ // Try C2C message (user:openid format in chatId)
100
+ const [type, openId] = msg.chatId.includes(":") ? msg.chatId.split(":") : ["c2c", msg.chatId];
101
+ const body = JSON.stringify({ content: msg.content, msg_type: 0 });
102
+ const apiPath = type === "group"
103
+ ? `/v2/groups/${openId}/messages`
104
+ : `/v2/users/${openId}/messages`;
105
+ await this._apiPost(apiPath, body, token);
106
+ }
107
+ catch (e) {
108
+ logger_1.default.error(`QQ send error: ${e}`);
109
+ }
110
+ }
111
+ async _connect() {
112
+ const token = await this._getAccessToken();
113
+ if (!token)
114
+ return;
115
+ // Get gateway URL
116
+ const gatewayResp = await this._apiGet("/gateway/bot", token);
117
+ const gatewayData = JSON.parse(gatewayResp);
118
+ const wsUrl = gatewayData["url"] ?? "wss://api.sgroup.qq.com/websocket";
119
+ return new Promise((resolve) => {
120
+ const ws = new ws_1.default(wsUrl);
121
+ this.ws = ws;
122
+ ws.on("message", async (raw) => {
123
+ try {
124
+ await this._handleGatewayEvent(JSON.parse(raw.toString()));
125
+ }
126
+ catch (_) { }
127
+ });
128
+ ws.on("close", () => {
129
+ if (this.heartbeatInterval)
130
+ clearInterval(this.heartbeatInterval);
131
+ logger_1.default.warn("QQ gateway disconnected");
132
+ resolve();
133
+ });
134
+ ws.on("error", (e) => {
135
+ logger_1.default.error(`QQ WS error: ${e}`);
136
+ ws.terminate();
137
+ resolve();
138
+ });
139
+ });
140
+ }
141
+ async _handleGatewayEvent(payload) {
142
+ const op = payload["op"];
143
+ const s = payload["s"];
144
+ if (s)
145
+ this.lastSeq = s;
146
+ if (op === 10) {
147
+ // Hello - start heartbeat
148
+ const heartbeatInterval = payload["d"]?.["heartbeat_interval"] ?? 45000;
149
+ this.heartbeatInterval = setInterval(() => {
150
+ this.ws?.send(JSON.stringify({ op: 1, d: this.lastSeq || null }));
151
+ }, heartbeatInterval);
152
+ // Identify
153
+ const token = await this._getAccessToken();
154
+ this.ws?.send(JSON.stringify({
155
+ op: 2,
156
+ d: {
157
+ token: `QQBot ${token}`,
158
+ intents: (1 << 25) | (1 << 12), // C2C_MESSAGE_CREATE | DIRECT_MESSAGE
159
+ shard: [0, 1],
160
+ },
161
+ }));
162
+ }
163
+ else if (op === 0) {
164
+ const t = payload["t"];
165
+ const d = payload["d"];
166
+ if (t === "C2C_MESSAGE_CREATE" || t === "DIRECT_MESSAGE_CREATE") {
167
+ await this._onMessage(d, t);
168
+ }
169
+ else if (t === "READY") {
170
+ this.sessionId = d?.["session_id"];
171
+ logger_1.default.info(`QQ bot ready: ${d?.["user"]?.["username"]}`);
172
+ }
173
+ }
174
+ else if (op === 7) {
175
+ // Reconnect
176
+ this.ws?.close();
177
+ }
178
+ else if (op === 9) {
179
+ // Invalid session
180
+ logger_1.default.warn("QQ invalid session");
181
+ this.ws?.close();
182
+ }
183
+ }
184
+ async _onMessage(d, eventType) {
185
+ const msgId = d["id"];
186
+ if (msgId && this.processedIds.has(msgId))
187
+ return;
188
+ if (msgId) {
189
+ this.processedIds.add(msgId);
190
+ if (this.processedIds.size > 1000) {
191
+ const first = this.processedIds.values().next().value;
192
+ if (first !== undefined)
193
+ this.processedIds.delete(first);
194
+ }
195
+ }
196
+ const author = d["author"];
197
+ const senderId = author?.["user_openid"] ?? author?.["id"] ?? "unknown";
198
+ const content = (d["content"] ?? "").trim();
199
+ if (!content)
200
+ return;
201
+ const chatType = eventType === "C2C_MESSAGE_CREATE" ? "c2c" : "group";
202
+ const chatId = eventType === "C2C_MESSAGE_CREATE"
203
+ ? `c2c:${senderId}`
204
+ : `group:${d["group_openid"] ?? senderId}`;
205
+ await this.handleMessage({ senderId, chatId, content });
206
+ }
207
+ async _getAccessToken() {
208
+ if (this.accessToken && Date.now() < this.tokenExpiry)
209
+ return this.accessToken;
210
+ try {
211
+ const body = JSON.stringify({
212
+ appId: this.qqConfig.appId,
213
+ clientSecret: this.qqConfig.secret,
214
+ });
215
+ const respBody = await new Promise((resolve, reject) => {
216
+ const req = https.request({
217
+ hostname: QQ_AUTH,
218
+ path: "/app/getAppAccessToken",
219
+ method: "POST",
220
+ headers: { "Content-Type": "application/json" },
221
+ }, (res) => {
222
+ let data = "";
223
+ res.on("data", (c) => (data += c));
224
+ res.on("end", () => resolve(data));
225
+ });
226
+ req.on("error", reject);
227
+ req.write(body);
228
+ req.end();
229
+ });
230
+ const parsed = JSON.parse(respBody);
231
+ this.accessToken = parsed["access_token"];
232
+ this.tokenExpiry =
233
+ Date.now() + parseInt(parsed["expires_in"], 10) * 1000 - 60000;
234
+ return this.accessToken;
235
+ }
236
+ catch (e) {
237
+ logger_1.default.error(`QQ access token error: ${e}`);
238
+ return undefined;
239
+ }
240
+ }
241
+ _apiGet(path, token) {
242
+ return new Promise((resolve, reject) => {
243
+ const req = https.request({
244
+ hostname: QQ_API,
245
+ path,
246
+ method: "GET",
247
+ headers: { Authorization: `QQBot ${token}`, "Content-Type": "application/json" },
248
+ }, (res) => {
249
+ let data = "";
250
+ res.on("data", (c) => (data += c));
251
+ res.on("end", () => resolve(data));
252
+ });
253
+ req.on("error", reject);
254
+ req.end();
255
+ });
256
+ }
257
+ _apiPost(path, body, token) {
258
+ return new Promise((resolve, reject) => {
259
+ const req = https.request({
260
+ hostname: QQ_API,
261
+ path,
262
+ method: "POST",
263
+ headers: {
264
+ Authorization: `QQBot ${token}`,
265
+ "Content-Type": "application/json",
266
+ "Content-Length": Buffer.byteLength(body),
267
+ },
268
+ }, (res) => {
269
+ let data = "";
270
+ res.on("data", (c) => (data += c));
271
+ res.on("end", () => resolve(data));
272
+ });
273
+ req.on("error", reject);
274
+ req.write(body);
275
+ req.end();
276
+ });
277
+ }
278
+ }
279
+ exports.QQChannel = QQChannel;
280
+ //# sourceMappingURL=qq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qq.js","sourceRoot":"","sources":["../../src/channels/qq.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Slack channel
3
+ */
4
+ import { OutboundMessage } from "../bus/events";
5
+ import { MessageBus } from "../bus/queue";
6
+ import { BaseChannel } from "./base";
7
+ interface SlackConfig {
8
+ botToken?: string;
9
+ appToken?: string;
10
+ mode?: string;
11
+ allowFrom?: string[];
12
+ [key: string]: unknown;
13
+ }
14
+ export declare class SlackChannel extends BaseChannel {
15
+ readonly name = "slack";
16
+ private slackConfig;
17
+ private webClient?;
18
+ private socketClient?;
19
+ private botUserId?;
20
+ constructor(config: SlackConfig, bus: MessageBus);
21
+ start(): Promise<void>;
22
+ stop(): Promise<void>;
23
+ send(msg: OutboundMessage): Promise<void>;
24
+ private _onEvent;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/channels/slack.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU;IAK1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAqBjC,QAAQ;CAsBvB"}