@hybridaione/hybridclaw 0.1.5
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.
- package/.env.example +14 -0
- package/.github/workflows/pages.yml +41 -0
- package/AGENTS.md +24 -0
- package/CHANGELOG.md +113 -0
- package/LICENSE +21 -0
- package/README.md +226 -0
- package/SECURITY.md +67 -0
- package/config.example.json +62 -0
- package/container/Dockerfile +23 -0
- package/container/package-lock.json +246 -0
- package/container/package.json +17 -0
- package/container/src/hybridai-client.ts +38 -0
- package/container/src/index.ts +198 -0
- package/container/src/ipc.ts +37 -0
- package/container/src/tools.ts +1008 -0
- package/container/src/types.ts +74 -0
- package/container/src/web-fetch.ts +389 -0
- package/container/tsconfig.json +16 -0
- package/dist/agent.d.ts +3 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +21 -0
- package/dist/agent.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +32 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +107 -0
- package/dist/config.js.map +1 -0
- package/dist/container-runner.d.ts +11 -0
- package/dist/container-runner.d.ts.map +1 -0
- package/dist/container-runner.js +246 -0
- package/dist/container-runner.js.map +1 -0
- package/dist/conversation.d.ts +18 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +29 -0
- package/dist/conversation.js.map +1 -0
- package/dist/db.d.ts +29 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +205 -0
- package/dist/db.js.map +1 -0
- package/dist/discord.d.ts +17 -0
- package/dist/discord.d.ts.map +1 -0
- package/dist/discord.js +115 -0
- package/dist/discord.js.map +1 -0
- package/dist/env.d.ts +6 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +36 -0
- package/dist/env.js.map +1 -0
- package/dist/gateway-client.d.ts +8 -0
- package/dist/gateway-client.d.ts.map +1 -0
- package/dist/gateway-client.js +57 -0
- package/dist/gateway-client.js.map +1 -0
- package/dist/gateway-service.d.ts +23 -0
- package/dist/gateway-service.d.ts.map +1 -0
- package/dist/gateway-service.js +360 -0
- package/dist/gateway-service.js.map +1 -0
- package/dist/gateway-types.d.ts +40 -0
- package/dist/gateway-types.d.ts.map +1 -0
- package/dist/gateway-types.js +6 -0
- package/dist/gateway-types.js.map +1 -0
- package/dist/gateway.d.ts +2 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +138 -0
- package/dist/gateway.js.map +1 -0
- package/dist/hatch.d.ts +7 -0
- package/dist/hatch.d.ts.map +1 -0
- package/dist/hatch.js +99 -0
- package/dist/hatch.js.map +1 -0
- package/dist/health.d.ts +2 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +169 -0
- package/dist/health.js.map +1 -0
- package/dist/heartbeat.d.ts +3 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +103 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/hybridai-bots.d.ts +5 -0
- package/dist/hybridai-bots.d.ts.map +1 -0
- package/dist/hybridai-bots.js +34 -0
- package/dist/hybridai-bots.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc.d.ts +33 -0
- package/dist/ipc.d.ts.map +1 -0
- package/dist/ipc.js +142 -0
- package/dist/ipc.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +21 -0
- package/dist/logger.js.map +1 -0
- package/dist/mount-security.d.ts +28 -0
- package/dist/mount-security.d.ts.map +1 -0
- package/dist/mount-security.js +187 -0
- package/dist/mount-security.js.map +1 -0
- package/dist/onboarding.d.ts +7 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +445 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/prompt-hooks.d.ts +17 -0
- package/dist/prompt-hooks.d.ts.map +1 -0
- package/dist/prompt-hooks.js +83 -0
- package/dist/prompt-hooks.js.map +1 -0
- package/dist/runtime-config.d.ts +78 -0
- package/dist/runtime-config.d.ts.map +1 -0
- package/dist/runtime-config.js +471 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/scheduled-task-runner.d.ts +11 -0
- package/dist/scheduled-task-runner.d.ts.map +1 -0
- package/dist/scheduled-task-runner.js +16 -0
- package/dist/scheduled-task-runner.js.map +1 -0
- package/dist/scheduler.d.ts +11 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +165 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/session-maintenance.d.ts +9 -0
- package/dist/session-maintenance.d.ts.map +1 -0
- package/dist/session-maintenance.js +168 -0
- package/dist/session-maintenance.js.map +1 -0
- package/dist/session-transcripts.d.ts +11 -0
- package/dist/session-transcripts.d.ts.map +1 -0
- package/dist/session-transcripts.js +32 -0
- package/dist/session-transcripts.js.map +1 -0
- package/dist/side-effects.d.ts +3 -0
- package/dist/side-effects.d.ts.map +1 -0
- package/dist/side-effects.js +30 -0
- package/dist/side-effects.js.map +1 -0
- package/dist/skills.d.ts +32 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +376 -0
- package/dist/skills.js.map +1 -0
- package/dist/tui.d.ts +2 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +305 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.d.ts +132 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace.d.ts +25 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +154 -0
- package/dist/workspace.js.map +1 -0
- package/docs/chat.html +929 -0
- package/docs/hai_logo_free.png +0 -0
- package/docs/hero.png +0 -0
- package/docs/index.html +1213 -0
- package/package.json +34 -0
- package/skills/current-time/SKILL.md +26 -0
- package/skills/iss-position/SKILL.md +46 -0
- package/skills/iss-position/agents/openai.yaml +3 -0
- package/skills/iss-position/scripts/get_iss_position.py +107 -0
- package/skills/repo-orientation/SKILL.md +74 -0
- package/src/agent.ts +35 -0
- package/src/cli.ts +35 -0
- package/src/config.ts +137 -0
- package/src/container-runner.ts +305 -0
- package/src/conversation.ts +49 -0
- package/src/db.ts +290 -0
- package/src/discord.ts +156 -0
- package/src/env.ts +36 -0
- package/src/gateway-client.ts +73 -0
- package/src/gateway-service.ts +456 -0
- package/src/gateway-types.ts +47 -0
- package/src/gateway.ts +199 -0
- package/src/health.ts +189 -0
- package/src/heartbeat.ts +121 -0
- package/src/hybridai-bots.ts +48 -0
- package/src/ipc.ts +163 -0
- package/src/logger.ts +26 -0
- package/src/mount-security.ts +216 -0
- package/src/onboarding.ts +569 -0
- package/src/prompt-hooks.ts +113 -0
- package/src/runtime-config.ts +588 -0
- package/src/scheduled-task-runner.ts +26 -0
- package/src/scheduler.ts +196 -0
- package/src/session-maintenance.ts +263 -0
- package/src/session-transcripts.ts +45 -0
- package/src/side-effects.ts +41 -0
- package/src/skills.ts +429 -0
- package/src/tui.ts +327 -0
- package/src/types.ts +135 -0
- package/src/workspace.ts +171 -0
- package/templates/AGENTS.md +104 -0
- package/templates/BOOT.md +3 -0
- package/templates/BOOTSTRAP.md +54 -0
- package/templates/HEARTBEAT.md +5 -0
- package/templates/IDENTITY.md +18 -0
- package/templates/MEMORY.md +19 -0
- package/templates/SOUL.md +36 -0
- package/templates/TOOLS.md +22 -0
- package/templates/USER.md +17 -0
- package/tsconfig.json +18 -0
package/dist/db.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { DB_PATH } from './config.js';
|
|
5
|
+
import { logger } from './logger.js';
|
|
6
|
+
let db;
|
|
7
|
+
function createSchema(database) {
|
|
8
|
+
database.exec(`
|
|
9
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
10
|
+
id TEXT PRIMARY KEY,
|
|
11
|
+
guild_id TEXT,
|
|
12
|
+
channel_id TEXT NOT NULL,
|
|
13
|
+
chatbot_id TEXT,
|
|
14
|
+
model TEXT,
|
|
15
|
+
enable_rag INTEGER DEFAULT 1,
|
|
16
|
+
message_count INTEGER DEFAULT 0,
|
|
17
|
+
session_summary TEXT,
|
|
18
|
+
summary_updated_at TEXT,
|
|
19
|
+
compaction_count INTEGER DEFAULT 0,
|
|
20
|
+
memory_flush_at TEXT,
|
|
21
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
22
|
+
last_active TEXT DEFAULT (datetime('now'))
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
26
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
27
|
+
session_id TEXT NOT NULL,
|
|
28
|
+
user_id TEXT NOT NULL,
|
|
29
|
+
username TEXT,
|
|
30
|
+
role TEXT NOT NULL,
|
|
31
|
+
content TEXT NOT NULL,
|
|
32
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
33
|
+
);
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
|
|
35
|
+
|
|
36
|
+
CREATE TABLE IF NOT EXISTS tasks (
|
|
37
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
38
|
+
session_id TEXT NOT NULL,
|
|
39
|
+
channel_id TEXT NOT NULL,
|
|
40
|
+
cron_expr TEXT NOT NULL,
|
|
41
|
+
prompt TEXT NOT NULL,
|
|
42
|
+
enabled INTEGER DEFAULT 1,
|
|
43
|
+
last_run TEXT,
|
|
44
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE IF NOT EXISTS audit_log (
|
|
48
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
49
|
+
session_id TEXT,
|
|
50
|
+
event TEXT NOT NULL,
|
|
51
|
+
detail TEXT,
|
|
52
|
+
duration_ms INTEGER,
|
|
53
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
54
|
+
);
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_audit_session ON audit_log(session_id);
|
|
56
|
+
CREATE INDEX IF NOT EXISTS idx_audit_created ON audit_log(created_at);
|
|
57
|
+
`);
|
|
58
|
+
}
|
|
59
|
+
function migrateSchema(database) {
|
|
60
|
+
const addColumnIfMissing = (table, column, ddl) => {
|
|
61
|
+
const cols = database.pragma(`table_info(${table})`);
|
|
62
|
+
if (!cols.some((c) => c.name === column)) {
|
|
63
|
+
database.exec(`ALTER TABLE ${table} ADD COLUMN ${ddl}`);
|
|
64
|
+
logger.info({ table, column }, 'Migrated table: added column');
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
// Add session columns if they don't exist
|
|
68
|
+
const sessionCols = database.pragma('table_info(sessions)');
|
|
69
|
+
if (!sessionCols.some((c) => c.name === 'model')) {
|
|
70
|
+
database.exec('ALTER TABLE sessions ADD COLUMN model TEXT');
|
|
71
|
+
logger.info('Migrated sessions table: added model column');
|
|
72
|
+
}
|
|
73
|
+
addColumnIfMissing('sessions', 'session_summary', 'session_summary TEXT');
|
|
74
|
+
addColumnIfMissing('sessions', 'summary_updated_at', 'summary_updated_at TEXT');
|
|
75
|
+
addColumnIfMissing('sessions', 'compaction_count', 'compaction_count INTEGER DEFAULT 0');
|
|
76
|
+
addColumnIfMissing('sessions', 'memory_flush_at', 'memory_flush_at TEXT');
|
|
77
|
+
// Add run_at and every_ms columns to tasks if they don't exist
|
|
78
|
+
const taskCols = database.pragma('table_info(tasks)');
|
|
79
|
+
if (!taskCols.some((c) => c.name === 'run_at')) {
|
|
80
|
+
database.exec('ALTER TABLE tasks ADD COLUMN run_at TEXT');
|
|
81
|
+
logger.info('Migrated tasks table: added run_at column');
|
|
82
|
+
}
|
|
83
|
+
if (!taskCols.some((c) => c.name === 'every_ms')) {
|
|
84
|
+
database.exec('ALTER TABLE tasks ADD COLUMN every_ms INTEGER');
|
|
85
|
+
logger.info('Migrated tasks table: added every_ms column');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function initDatabase() {
|
|
89
|
+
const dbPath = path.resolve(DB_PATH);
|
|
90
|
+
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
91
|
+
db = new Database(dbPath);
|
|
92
|
+
db.pragma('journal_mode = WAL');
|
|
93
|
+
createSchema(db);
|
|
94
|
+
migrateSchema(db);
|
|
95
|
+
logger.info({ path: dbPath }, 'Database initialized');
|
|
96
|
+
}
|
|
97
|
+
// --- Sessions ---
|
|
98
|
+
export function getOrCreateSession(sessionId, guildId, channelId) {
|
|
99
|
+
const existing = getSessionById(sessionId);
|
|
100
|
+
if (existing) {
|
|
101
|
+
db.prepare('UPDATE sessions SET last_active = datetime(\'now\') WHERE id = ?').run(sessionId);
|
|
102
|
+
return existing;
|
|
103
|
+
}
|
|
104
|
+
db.prepare('INSERT INTO sessions (id, guild_id, channel_id) VALUES (?, ?, ?)').run(sessionId, guildId, channelId);
|
|
105
|
+
return getSessionById(sessionId);
|
|
106
|
+
}
|
|
107
|
+
export function getSessionById(sessionId) {
|
|
108
|
+
return db
|
|
109
|
+
.prepare('SELECT * FROM sessions WHERE id = ?')
|
|
110
|
+
.get(sessionId);
|
|
111
|
+
}
|
|
112
|
+
export function updateSessionChatbot(sessionId, chatbotId) {
|
|
113
|
+
db.prepare('UPDATE sessions SET chatbot_id = ? WHERE id = ?').run(chatbotId, sessionId);
|
|
114
|
+
}
|
|
115
|
+
export function updateSessionModel(sessionId, model) {
|
|
116
|
+
db.prepare('UPDATE sessions SET model = ? WHERE id = ?').run(model, sessionId);
|
|
117
|
+
}
|
|
118
|
+
export function updateSessionRag(sessionId, enableRag) {
|
|
119
|
+
db.prepare('UPDATE sessions SET enable_rag = ? WHERE id = ?').run(enableRag ? 1 : 0, sessionId);
|
|
120
|
+
}
|
|
121
|
+
export function getAllSessions() {
|
|
122
|
+
return db.prepare('SELECT * FROM sessions ORDER BY last_active DESC').all();
|
|
123
|
+
}
|
|
124
|
+
export function getSessionCount() {
|
|
125
|
+
const row = db.prepare('SELECT COUNT(*) as count FROM sessions').get();
|
|
126
|
+
return row.count;
|
|
127
|
+
}
|
|
128
|
+
export function clearSessionHistory(sessionId) {
|
|
129
|
+
const result = db.prepare('DELETE FROM messages WHERE session_id = ?').run(sessionId);
|
|
130
|
+
db.prepare('UPDATE sessions SET message_count = 0, session_summary = NULL, summary_updated_at = NULL, compaction_count = 0, memory_flush_at = NULL WHERE id = ?').run(sessionId);
|
|
131
|
+
return result.changes;
|
|
132
|
+
}
|
|
133
|
+
// --- Messages ---
|
|
134
|
+
export function storeMessage(sessionId, userId, username, role, content) {
|
|
135
|
+
db.prepare('INSERT INTO messages (session_id, user_id, username, role, content) VALUES (?, ?, ?, ?, ?)').run(sessionId, userId, username, role, content);
|
|
136
|
+
db.prepare('UPDATE sessions SET message_count = message_count + 1, last_active = datetime(\'now\') WHERE id = ?').run(sessionId);
|
|
137
|
+
}
|
|
138
|
+
export function getConversationHistory(sessionId, limit = 50) {
|
|
139
|
+
return db
|
|
140
|
+
.prepare('SELECT * FROM messages WHERE session_id = ? ORDER BY id DESC LIMIT ?')
|
|
141
|
+
.all(sessionId, limit);
|
|
142
|
+
}
|
|
143
|
+
export function getCompactionCandidateMessages(sessionId, keepRecent) {
|
|
144
|
+
const keep = Math.max(1, Math.floor(keepRecent));
|
|
145
|
+
const cutoffRow = db
|
|
146
|
+
.prepare('SELECT id FROM messages WHERE session_id = ? ORDER BY id DESC LIMIT 1 OFFSET ?')
|
|
147
|
+
.get(sessionId, keep - 1);
|
|
148
|
+
if (!cutoffRow)
|
|
149
|
+
return null;
|
|
150
|
+
const older = db
|
|
151
|
+
.prepare('SELECT * FROM messages WHERE session_id = ? AND id < ? ORDER BY id ASC')
|
|
152
|
+
.all(sessionId, cutoffRow.id);
|
|
153
|
+
if (older.length === 0)
|
|
154
|
+
return null;
|
|
155
|
+
return {
|
|
156
|
+
cutoffId: cutoffRow.id,
|
|
157
|
+
olderMessages: older,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export function deleteMessagesBeforeId(sessionId, cutoffId) {
|
|
161
|
+
const result = db
|
|
162
|
+
.prepare('DELETE FROM messages WHERE session_id = ? AND id < ?')
|
|
163
|
+
.run(sessionId, cutoffId);
|
|
164
|
+
db.prepare('UPDATE sessions SET message_count = (SELECT COUNT(*) FROM messages WHERE session_id = ?), last_active = datetime(\'now\') WHERE id = ?').run(sessionId, sessionId);
|
|
165
|
+
return result.changes;
|
|
166
|
+
}
|
|
167
|
+
export function updateSessionSummary(sessionId, summary) {
|
|
168
|
+
const normalized = summary.trim();
|
|
169
|
+
db.prepare('UPDATE sessions SET session_summary = ?, summary_updated_at = datetime(\'now\'), compaction_count = compaction_count + 1 WHERE id = ?').run(normalized || null, sessionId);
|
|
170
|
+
}
|
|
171
|
+
export function markSessionMemoryFlush(sessionId) {
|
|
172
|
+
db.prepare('UPDATE sessions SET memory_flush_at = datetime(\'now\') WHERE id = ?').run(sessionId);
|
|
173
|
+
}
|
|
174
|
+
// --- Tasks ---
|
|
175
|
+
export function createTask(sessionId, channelId, cronExpr, prompt, runAt, everyMs) {
|
|
176
|
+
const result = db.prepare('INSERT INTO tasks (session_id, channel_id, cron_expr, prompt, run_at, every_ms) VALUES (?, ?, ?, ?, ?, ?)').run(sessionId, channelId, cronExpr, prompt, runAt || null, everyMs || null);
|
|
177
|
+
return result.lastInsertRowid;
|
|
178
|
+
}
|
|
179
|
+
export function getTasksForSession(sessionId) {
|
|
180
|
+
return db
|
|
181
|
+
.prepare('SELECT * FROM tasks WHERE session_id = ? ORDER BY created_at DESC')
|
|
182
|
+
.all(sessionId);
|
|
183
|
+
}
|
|
184
|
+
export function getAllEnabledTasks() {
|
|
185
|
+
return db.prepare('SELECT * FROM tasks WHERE enabled = 1').all();
|
|
186
|
+
}
|
|
187
|
+
export function updateTaskLastRun(taskId) {
|
|
188
|
+
db.prepare('UPDATE tasks SET last_run = datetime(\'now\') WHERE id = ?').run(taskId);
|
|
189
|
+
}
|
|
190
|
+
export function toggleTask(taskId, enabled) {
|
|
191
|
+
db.prepare('UPDATE tasks SET enabled = ? WHERE id = ?').run(enabled ? 1 : 0, taskId);
|
|
192
|
+
}
|
|
193
|
+
export function deleteTask(taskId) {
|
|
194
|
+
db.prepare('DELETE FROM tasks WHERE id = ?').run(taskId);
|
|
195
|
+
}
|
|
196
|
+
// --- Audit ---
|
|
197
|
+
export function logAudit(event, sessionId, detail, durationMs) {
|
|
198
|
+
db.prepare('INSERT INTO audit_log (session_id, event, detail, duration_ms) VALUES (?, ?, ?, ?)').run(sessionId || null, event, detail ? JSON.stringify(detail) : null, durationMs || null);
|
|
199
|
+
}
|
|
200
|
+
export function getRecentAudit(limit = 20) {
|
|
201
|
+
return db
|
|
202
|
+
.prepare('SELECT * FROM audit_log ORDER BY created_at DESC LIMIT ?')
|
|
203
|
+
.all(limit);
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Client } from 'discord.js';
|
|
2
|
+
export type ReplyFn = (content: string) => Promise<void>;
|
|
3
|
+
export type MessageHandler = (sessionId: string, guildId: string | null, channelId: string, userId: string, username: string, content: string, reply: ReplyFn) => Promise<void>;
|
|
4
|
+
export type CommandHandler = (sessionId: string, guildId: string | null, channelId: string, args: string[], reply: ReplyFn) => Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Format an agent response as plain text.
|
|
7
|
+
* Appends a subtle tools line if any tools were used.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildResponseText(text: string, toolsUsed?: string[]): string;
|
|
10
|
+
export declare function formatInfo(title: string, body: string): string;
|
|
11
|
+
export declare function formatError(title: string, detail: string): string;
|
|
12
|
+
export declare function initDiscord(onMessage: MessageHandler, onCommand: CommandHandler): Client;
|
|
13
|
+
/**
|
|
14
|
+
* Send a message to a channel by ID (used by scheduler).
|
|
15
|
+
*/
|
|
16
|
+
export declare function sendToChannel(channelId: string, text: string): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=discord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../src/discord.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAIP,MAAM,YAAY,CAAC;AAKpB,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,cAAc,GAAG,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;AAMnB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAO5E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE;AAkCD,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,CA0DxF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlF"}
|
package/dist/discord.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Client, GatewayIntentBits, Partials, } from 'discord.js';
|
|
2
|
+
import { DISCORD_PREFIX, DISCORD_TOKEN } from './config.js';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
let client;
|
|
5
|
+
let messageHandler;
|
|
6
|
+
let commandHandler;
|
|
7
|
+
/**
|
|
8
|
+
* Format an agent response as plain text.
|
|
9
|
+
* Appends a subtle tools line if any tools were used.
|
|
10
|
+
*/
|
|
11
|
+
export function buildResponseText(text, toolsUsed) {
|
|
12
|
+
let body = text.slice(0, 2000);
|
|
13
|
+
if (toolsUsed && toolsUsed.length > 0) {
|
|
14
|
+
const toolsLine = `\n*Tools: ${toolsUsed.join(', ')}*`;
|
|
15
|
+
body = text.slice(0, 2000 - toolsLine.length) + toolsLine;
|
|
16
|
+
}
|
|
17
|
+
return body;
|
|
18
|
+
}
|
|
19
|
+
export function formatInfo(title, body) {
|
|
20
|
+
return `**${title}**\n${body}`.slice(0, 2000);
|
|
21
|
+
}
|
|
22
|
+
export function formatError(title, detail) {
|
|
23
|
+
return `**${title}:** ${detail}`.slice(0, 2000);
|
|
24
|
+
}
|
|
25
|
+
function getSessionId(msg) {
|
|
26
|
+
return msg.guild ? `${msg.guild.id}:${msg.channelId}` : `dm:${msg.author.id}`;
|
|
27
|
+
}
|
|
28
|
+
function isTrigger(msg) {
|
|
29
|
+
if (client.user && msg.mentions.has(client.user))
|
|
30
|
+
return true;
|
|
31
|
+
if (msg.content.startsWith(DISCORD_PREFIX))
|
|
32
|
+
return true;
|
|
33
|
+
if (!msg.guild)
|
|
34
|
+
return true;
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function parseCommand(content) {
|
|
38
|
+
let text = content;
|
|
39
|
+
if (client.user) {
|
|
40
|
+
text = text.replace(new RegExp(`<@!?${client.user.id}>`, 'g'), '').trim();
|
|
41
|
+
}
|
|
42
|
+
if (text.startsWith(DISCORD_PREFIX)) {
|
|
43
|
+
text = text.slice(DISCORD_PREFIX.length).trim();
|
|
44
|
+
}
|
|
45
|
+
const parts = text.split(/\s+/);
|
|
46
|
+
const subcommands = ['bot', 'rag', 'model', 'status', 'sessions', 'audit', 'schedule', 'clear', 'help'];
|
|
47
|
+
if (parts.length > 0 && subcommands.includes(parts[0].toLowerCase())) {
|
|
48
|
+
return { isCommand: true, command: parts[0].toLowerCase(), args: parts.slice(1) };
|
|
49
|
+
}
|
|
50
|
+
return { isCommand: false, command: '', args: [] };
|
|
51
|
+
}
|
|
52
|
+
export function initDiscord(onMessage, onCommand) {
|
|
53
|
+
messageHandler = onMessage;
|
|
54
|
+
commandHandler = onCommand;
|
|
55
|
+
client = new Client({
|
|
56
|
+
intents: [
|
|
57
|
+
GatewayIntentBits.Guilds,
|
|
58
|
+
GatewayIntentBits.GuildMessages,
|
|
59
|
+
GatewayIntentBits.MessageContent,
|
|
60
|
+
GatewayIntentBits.DirectMessages,
|
|
61
|
+
],
|
|
62
|
+
partials: [Partials.Channel],
|
|
63
|
+
});
|
|
64
|
+
client.on('clientReady', () => {
|
|
65
|
+
logger.info({ user: client.user?.tag }, 'Discord bot connected');
|
|
66
|
+
});
|
|
67
|
+
client.on('messageCreate', async (msg) => {
|
|
68
|
+
if (msg.author.bot)
|
|
69
|
+
return;
|
|
70
|
+
if (!isTrigger(msg))
|
|
71
|
+
return;
|
|
72
|
+
const sessionId = getSessionId(msg);
|
|
73
|
+
const guildId = msg.guild?.id || null;
|
|
74
|
+
const channelId = msg.channelId;
|
|
75
|
+
const reply = async (text) => {
|
|
76
|
+
await msg.reply(text);
|
|
77
|
+
};
|
|
78
|
+
// Clean content (remove mention/prefix)
|
|
79
|
+
let content = msg.content;
|
|
80
|
+
if (client.user) {
|
|
81
|
+
content = content.replace(new RegExp(`<@!?${client.user.id}>`, 'g'), '').trim();
|
|
82
|
+
}
|
|
83
|
+
if (content.startsWith(DISCORD_PREFIX)) {
|
|
84
|
+
content = content.slice(DISCORD_PREFIX.length).trim();
|
|
85
|
+
}
|
|
86
|
+
const parsed = parseCommand(msg.content);
|
|
87
|
+
if (parsed.isCommand) {
|
|
88
|
+
await commandHandler(sessionId, guildId, channelId, [parsed.command, ...parsed.args], reply);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
if (!content) {
|
|
92
|
+
await reply('How can I help? Send me a message or try `!claw help`.');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if ('sendTyping' in msg.channel)
|
|
96
|
+
await msg.channel.sendTyping();
|
|
97
|
+
await messageHandler(sessionId, guildId, channelId, msg.author.id, msg.author.username, content, reply);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (!DISCORD_TOKEN) {
|
|
101
|
+
throw new Error('DISCORD_TOKEN is required to start the Discord bot');
|
|
102
|
+
}
|
|
103
|
+
client.login(DISCORD_TOKEN);
|
|
104
|
+
return client;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Send a message to a channel by ID (used by scheduler).
|
|
108
|
+
*/
|
|
109
|
+
export async function sendToChannel(channelId, text) {
|
|
110
|
+
const channel = await client.channels.fetch(channelId);
|
|
111
|
+
if (channel && 'send' in channel) {
|
|
112
|
+
await channel.send(text);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=discord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../src/discord.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CA4B7D"}
|
package/dist/env.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Load environment variables from <cwd>/.env with simple KEY=VALUE parsing.
|
|
5
|
+
* Existing process.env values win over file values.
|
|
6
|
+
*/
|
|
7
|
+
export function loadEnvFile(cwd = process.cwd()) {
|
|
8
|
+
const envPath = path.join(cwd, '.env');
|
|
9
|
+
if (!fs.existsSync(envPath))
|
|
10
|
+
return;
|
|
11
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
12
|
+
for (const line of content.split('\n')) {
|
|
13
|
+
const trimmed = line.trim();
|
|
14
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
15
|
+
continue;
|
|
16
|
+
const eqIdx = trimmed.indexOf('=');
|
|
17
|
+
if (eqIdx === -1)
|
|
18
|
+
continue;
|
|
19
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
20
|
+
let val = trimmed.slice(eqIdx + 1).trim();
|
|
21
|
+
// Strip inline comments (# ...) unless the value is quoted.
|
|
22
|
+
if (!val.startsWith('"') && !val.startsWith("'")) {
|
|
23
|
+
const hashIdx = val.indexOf('#');
|
|
24
|
+
if (hashIdx !== -1)
|
|
25
|
+
val = val.slice(0, hashIdx).trim();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Remove surrounding quotes.
|
|
29
|
+
val = val.slice(1, -1);
|
|
30
|
+
}
|
|
31
|
+
if (!process.env[key]) {
|
|
32
|
+
process.env[key] = val;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IAEpC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAE3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1C,4DAA4D;QAC5D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { renderGatewayCommand, type GatewayChatRequestBody, type GatewayChatResult, type GatewayCommandRequest, type GatewayCommandResult, type GatewayStatus } from './gateway-types.js';
|
|
2
|
+
export { renderGatewayCommand };
|
|
3
|
+
export type { GatewayChatResult, GatewayCommandResult, GatewayStatus };
|
|
4
|
+
export type GatewayChatRequest = GatewayChatRequestBody;
|
|
5
|
+
export declare function gatewayCommand(params: GatewayCommandRequest): Promise<GatewayCommandResult>;
|
|
6
|
+
export declare function gatewayChat(params: GatewayChatRequest, signal?: AbortSignal): Promise<GatewayChatResult>;
|
|
7
|
+
export declare function gatewayStatus(): Promise<GatewayStatus>;
|
|
8
|
+
//# sourceMappingURL=gateway-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-client.d.ts","sourceRoot":"","sources":["../src/gateway-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AA8BxD,wBAAsB,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CASjG;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAU5B;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAK5D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { GATEWAY_API_TOKEN, GATEWAY_BASE_URL } from './config.js';
|
|
2
|
+
import { renderGatewayCommand, } from './gateway-types.js';
|
|
3
|
+
export { renderGatewayCommand };
|
|
4
|
+
function gatewayUrl(pathname) {
|
|
5
|
+
const base = GATEWAY_BASE_URL.replace(/\/+$/, '');
|
|
6
|
+
const path = pathname.startsWith('/') ? pathname : `/${pathname}`;
|
|
7
|
+
return `${base}${path}`;
|
|
8
|
+
}
|
|
9
|
+
function authHeaders() {
|
|
10
|
+
if (!GATEWAY_API_TOKEN)
|
|
11
|
+
return {};
|
|
12
|
+
return { Authorization: `Bearer ${GATEWAY_API_TOKEN}` };
|
|
13
|
+
}
|
|
14
|
+
async function requestJson(pathname, init) {
|
|
15
|
+
let response;
|
|
16
|
+
try {
|
|
17
|
+
response = await fetch(gatewayUrl(pathname), init);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
21
|
+
throw new Error(`Gateway request failed (${GATEWAY_BASE_URL}): ${detail}`);
|
|
22
|
+
}
|
|
23
|
+
const payload = await response.json().catch(() => ({}));
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
const message = typeof payload.error === 'string' ? payload.error : `${response.status} ${response.statusText}`;
|
|
26
|
+
throw new Error(`Gateway error: ${message}`);
|
|
27
|
+
}
|
|
28
|
+
return payload;
|
|
29
|
+
}
|
|
30
|
+
export async function gatewayCommand(params) {
|
|
31
|
+
return requestJson('/api/command', {
|
|
32
|
+
method: 'POST',
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
...authHeaders(),
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify(params),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function gatewayChat(params, signal) {
|
|
41
|
+
return requestJson('/api/chat', {
|
|
42
|
+
method: 'POST',
|
|
43
|
+
headers: {
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
...authHeaders(),
|
|
46
|
+
},
|
|
47
|
+
body: JSON.stringify(params),
|
|
48
|
+
signal,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export async function gatewayStatus() {
|
|
52
|
+
return requestJson('/api/status', {
|
|
53
|
+
method: 'GET',
|
|
54
|
+
headers: authHeaders(),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=gateway-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../src/gateway-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,oBAAoB,GAMrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAIhC,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IAClE,OAAO,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,EAAE,aAAa,EAAE,UAAU,iBAAiB,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,WAAW,CAAI,QAAgB,EAAE,IAAiB;IAC/D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,2BAA2B,gBAAgB,MAAM,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAChH,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA6B;IAChE,OAAO,WAAW,CAAuB,cAAc,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,WAAW,EAAE;SACjB;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA0B,EAC1B,MAAoB;IAEpB,OAAO,WAAW,CAAoB,WAAW,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,WAAW,EAAE;SACjB;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,WAAW,CAAgB,aAAa,EAAE;QAC/C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,WAAW,EAAE;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { renderGatewayCommand, type GatewayChatRequestBody, type GatewayChatResult, type GatewayCommandRequest, type GatewayCommandResult, type GatewayStatus } from './gateway-types.js';
|
|
2
|
+
import type { StoredMessage, ToolProgressEvent } from './types.js';
|
|
3
|
+
export interface GatewayChatRequest {
|
|
4
|
+
sessionId: GatewayChatRequestBody['sessionId'];
|
|
5
|
+
guildId: GatewayChatRequestBody['guildId'];
|
|
6
|
+
channelId: GatewayChatRequestBody['channelId'];
|
|
7
|
+
userId: GatewayChatRequestBody['userId'];
|
|
8
|
+
username: GatewayChatRequestBody['username'];
|
|
9
|
+
content: GatewayChatRequestBody['content'];
|
|
10
|
+
chatbotId?: GatewayChatRequestBody['chatbotId'];
|
|
11
|
+
model?: GatewayChatRequestBody['model'];
|
|
12
|
+
enableRag?: GatewayChatRequestBody['enableRag'];
|
|
13
|
+
onToolProgress?: (event: ToolProgressEvent) => void;
|
|
14
|
+
abortSignal?: AbortSignal;
|
|
15
|
+
}
|
|
16
|
+
export type { GatewayChatResult, GatewayCommandRequest, GatewayCommandResult, GatewayStatus };
|
|
17
|
+
export { renderGatewayCommand };
|
|
18
|
+
export declare function getGatewayStatus(): GatewayStatus;
|
|
19
|
+
export declare function getGatewayHistory(sessionId: string, limit?: number): StoredMessage[];
|
|
20
|
+
export declare function handleGatewayMessage(req: GatewayChatRequest): Promise<GatewayChatResult>;
|
|
21
|
+
export declare function runGatewayScheduledTask(origSessionId: string, channelId: string, prompt: string, taskId: number, onResult: (result: string) => Promise<void>, onError: (error: unknown) => void): Promise<void>;
|
|
22
|
+
export declare function handleGatewayCommand(req: GatewayCommandRequest): Promise<GatewayCommandResult>;
|
|
23
|
+
//# sourceMappingURL=gateway-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-service.d.ts","sourceRoot":"","sources":["../src/gateway-service.ts"],"names":[],"mappings":"AAmCA,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAiB,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQlF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC3C,SAAS,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAiChC,wBAAgB,gBAAgB,IAAI,aAAa,CAWhD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAuB,GAAG,aAAa,EAAE,CAElG;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuG9F;AAED,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgNpG"}
|