@gamalan/pi-gateway 1.0.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.
- package/README.md +366 -0
- package/config/config.default.json +51 -0
- package/dist/adapters/base.d.ts +85 -0
- package/dist/adapters/base.js +34 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/discord.d.ts +53 -0
- package/dist/adapters/discord.js +224 -0
- package/dist/adapters/discord.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/slack.d.ts +49 -0
- package/dist/adapters/slack.js +231 -0
- package/dist/adapters/slack.js.map +1 -0
- package/dist/adapters/telegram.d.ts +64 -0
- package/dist/adapters/telegram.js +274 -0
- package/dist/adapters/telegram.js.map +1 -0
- package/dist/adapters/twitch.d.ts +75 -0
- package/dist/adapters/twitch.js +222 -0
- package/dist/adapters/twitch.js.map +1 -0
- package/dist/adapters/websocket.d.ts +30 -0
- package/dist/adapters/websocket.js +132 -0
- package/dist/adapters/websocket.js.map +1 -0
- package/dist/adapters/whatsapp.d.ts +49 -0
- package/dist/adapters/whatsapp.js +251 -0
- package/dist/adapters/whatsapp.js.map +1 -0
- package/dist/background/index.d.ts +1 -0
- package/dist/background/index.js +2 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/manager.d.ts +70 -0
- package/dist/background/manager.js +291 -0
- package/dist/background/manager.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +1275 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +12 -0
- package/dist/logger.js +39 -0
- package/dist/logger.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.js +32 -0
- package/dist/paths.js.map +1 -0
- package/dist/security/auth.d.ts +91 -0
- package/dist/security/auth.js +316 -0
- package/dist/security/auth.js.map +1 -0
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.js +2 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/tool-policy.d.ts +66 -0
- package/dist/security/tool-policy.js +467 -0
- package/dist/security/tool-policy.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/store.d.ts +64 -0
- package/dist/sessions/store.js +247 -0
- package/dist/sessions/store.js.map +1 -0
- package/package.json +57 -0
- package/src/adapters/base.ts +124 -0
- package/src/adapters/discord.ts +270 -0
- package/src/adapters/index.ts +13 -0
- package/src/adapters/slack.ts +313 -0
- package/src/adapters/telegram.ts +394 -0
- package/src/adapters/twitch.ts +316 -0
- package/src/adapters/websocket.ts +158 -0
- package/src/adapters/whatsapp.ts +296 -0
- package/src/background/index.ts +1 -0
- package/src/background/manager.ts +395 -0
- package/src/index.ts +1665 -0
- package/src/logger.ts +43 -0
- package/src/paths.ts +40 -0
- package/src/security/auth.ts +458 -0
- package/src/security/index.ts +1 -0
- package/src/security/tool-policy.ts +568 -0
- package/src/sessions/index.ts +1 -0
- package/src/sessions/store.ts +360 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Task Manager - Hermes-style background session handling
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Isolated sessions for background tasks
|
|
6
|
+
* - Result delivery to parent session
|
|
7
|
+
* - Progress notifications
|
|
8
|
+
* - Timeout handling
|
|
9
|
+
*/
|
|
10
|
+
import Database from "better-sqlite3";
|
|
11
|
+
import { join } from "path";
|
|
12
|
+
import { homedir } from "os";
|
|
13
|
+
import { existsSync, mkdirSync } from "fs";
|
|
14
|
+
import { spawn } from "node:child_process";
|
|
15
|
+
import { createBackgroundSession } from "../sessions/store.js";
|
|
16
|
+
import { randomBytes } from "node:crypto";
|
|
17
|
+
import { logger } from "../logger.js";
|
|
18
|
+
const GATEWAY_DIR = join(homedir(), ".pi");
|
|
19
|
+
const TASKS_DB = join(GATEWAY_DIR, "gateway-background-tasks.db");
|
|
20
|
+
let db = null;
|
|
21
|
+
const runningProcesses = new Map();
|
|
22
|
+
const progressCallbacks = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Initialize background tasks database
|
|
25
|
+
*/
|
|
26
|
+
export function initBackgroundTasks() {
|
|
27
|
+
if (db)
|
|
28
|
+
return db;
|
|
29
|
+
if (!existsSync(GATEWAY_DIR)) {
|
|
30
|
+
mkdirSync(GATEWAY_DIR, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
db = new Database(TASKS_DB);
|
|
33
|
+
db.exec("PRAGMA journal_mode = WAL;");
|
|
34
|
+
// Tasks table
|
|
35
|
+
db.exec(`
|
|
36
|
+
CREATE TABLE IF NOT EXISTS background_tasks (
|
|
37
|
+
id TEXT PRIMARY KEY,
|
|
38
|
+
session_id TEXT NOT NULL,
|
|
39
|
+
parent_session_id TEXT NOT NULL,
|
|
40
|
+
command TEXT NOT NULL,
|
|
41
|
+
status TEXT NOT NULL DEFAULT 'running',
|
|
42
|
+
progress INTEGER NOT NULL DEFAULT 0,
|
|
43
|
+
progress_message TEXT,
|
|
44
|
+
result TEXT,
|
|
45
|
+
error TEXT,
|
|
46
|
+
created_at INTEGER NOT NULL,
|
|
47
|
+
started_at INTEGER,
|
|
48
|
+
completed_at INTEGER,
|
|
49
|
+
delivered_at INTEGER
|
|
50
|
+
)
|
|
51
|
+
`);
|
|
52
|
+
// Indexes
|
|
53
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_tasks_parent ON background_tasks(parent_session_id)`);
|
|
54
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_tasks_status ON background_tasks(status)`);
|
|
55
|
+
logger.info("[BackgroundTasks] Database initialized");
|
|
56
|
+
return db;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Start a background task
|
|
60
|
+
*/
|
|
61
|
+
export function startBackgroundTask(parentSessionId, command, onProgress) {
|
|
62
|
+
const database = initBackgroundTasks();
|
|
63
|
+
const id = `bg-${Date.now()}-${randomBytes(4).toString("hex")}`;
|
|
64
|
+
const now = Date.now();
|
|
65
|
+
// Create background session
|
|
66
|
+
const session = createBackgroundSession("background", id, "system", parentSessionId);
|
|
67
|
+
// Create task record
|
|
68
|
+
const task = {
|
|
69
|
+
id,
|
|
70
|
+
sessionId: session.id,
|
|
71
|
+
parentSessionId,
|
|
72
|
+
command,
|
|
73
|
+
status: "running",
|
|
74
|
+
progress: 0,
|
|
75
|
+
createdAt: now,
|
|
76
|
+
};
|
|
77
|
+
database
|
|
78
|
+
.prepare(`
|
|
79
|
+
INSERT INTO background_tasks
|
|
80
|
+
(id, session_id, parent_session_id, command, status, progress, created_at)
|
|
81
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
82
|
+
`)
|
|
83
|
+
.run(id, session.id, parentSessionId, command, "running", 0, now);
|
|
84
|
+
// Register progress callback
|
|
85
|
+
if (onProgress) {
|
|
86
|
+
progressCallbacks.set(id, onProgress);
|
|
87
|
+
}
|
|
88
|
+
// Start the actual process
|
|
89
|
+
const proc = spawn("pi", ["--mode", "json", "--print", command], {
|
|
90
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
91
|
+
env: { ...process.env },
|
|
92
|
+
});
|
|
93
|
+
runningProcesses.set(id, proc);
|
|
94
|
+
let stdout = "";
|
|
95
|
+
let stderr = "";
|
|
96
|
+
proc.stdout?.on("data", (data) => {
|
|
97
|
+
stdout += data.toString();
|
|
98
|
+
// Parse progress updates
|
|
99
|
+
try {
|
|
100
|
+
const lines = stdout.split("\n").filter(Boolean);
|
|
101
|
+
for (const line of lines) {
|
|
102
|
+
const parsed = JSON.parse(line);
|
|
103
|
+
if (parsed.progress !== undefined) {
|
|
104
|
+
updateTaskProgress(id, parsed.progress, parsed.message);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Not JSON yet
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
proc.stderr?.on("data", (data) => {
|
|
113
|
+
stderr += data.toString();
|
|
114
|
+
});
|
|
115
|
+
proc.on("close", (code) => {
|
|
116
|
+
runningProcesses.delete(id);
|
|
117
|
+
if (code === 0) {
|
|
118
|
+
try {
|
|
119
|
+
const result = stdout.trim() ? JSON.parse(stdout) : { success: true };
|
|
120
|
+
completeTask(id, result);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
completeTask(id, { success: true, output: stdout });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
failTask(id, stderr || `Process exited with code ${code}`);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
proc.on("error", (err) => {
|
|
131
|
+
runningProcesses.delete(id);
|
|
132
|
+
failTask(id, err.message);
|
|
133
|
+
});
|
|
134
|
+
logger.info(`[BackgroundTasks] Started task ${id.slice(0, 12)}...`);
|
|
135
|
+
return task;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Update task progress
|
|
139
|
+
*/
|
|
140
|
+
export function updateTaskProgress(taskId, progress, message) {
|
|
141
|
+
const database = initBackgroundTasks();
|
|
142
|
+
database
|
|
143
|
+
.prepare(`
|
|
144
|
+
UPDATE background_tasks SET progress = ?, progress_message = ?
|
|
145
|
+
WHERE id = ?
|
|
146
|
+
`)
|
|
147
|
+
.run(progress, message ?? null, taskId);
|
|
148
|
+
// Notify via callback
|
|
149
|
+
const callback = progressCallbacks.get(taskId);
|
|
150
|
+
if (callback) {
|
|
151
|
+
const task = getTask(taskId);
|
|
152
|
+
if (task)
|
|
153
|
+
callback(task);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Complete a task successfully
|
|
158
|
+
*/
|
|
159
|
+
export function completeTask(taskId, result) {
|
|
160
|
+
const database = initBackgroundTasks();
|
|
161
|
+
const now = Date.now();
|
|
162
|
+
database
|
|
163
|
+
.prepare(`
|
|
164
|
+
UPDATE background_tasks
|
|
165
|
+
SET status = 'completed', progress = 100, result = ?, completed_at = ?
|
|
166
|
+
WHERE id = ?
|
|
167
|
+
`)
|
|
168
|
+
.run(JSON.stringify(result), now, taskId);
|
|
169
|
+
logger.info(`[BackgroundTasks] Task ${taskId.slice(0, 12)}... completed`);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Fail a task
|
|
173
|
+
*/
|
|
174
|
+
export function failTask(taskId, error) {
|
|
175
|
+
const database = initBackgroundTasks();
|
|
176
|
+
const now = Date.now();
|
|
177
|
+
database
|
|
178
|
+
.prepare(`
|
|
179
|
+
UPDATE background_tasks
|
|
180
|
+
SET status = 'failed', error = ?, completed_at = ?
|
|
181
|
+
WHERE id = ?
|
|
182
|
+
`)
|
|
183
|
+
.run(error, now, taskId);
|
|
184
|
+
logger.info(`[BackgroundTasks] Task ${taskId.slice(0, 12)}... failed: ${error}`);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Mark task as delivered to user
|
|
188
|
+
*/
|
|
189
|
+
export function markTaskDelivered(taskId) {
|
|
190
|
+
const database = initBackgroundTasks();
|
|
191
|
+
database
|
|
192
|
+
.prepare(`
|
|
193
|
+
UPDATE background_tasks SET status = 'delivered', delivered_at = ?
|
|
194
|
+
WHERE id = ?
|
|
195
|
+
`)
|
|
196
|
+
.run(Date.now(), taskId);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get task by ID
|
|
200
|
+
*/
|
|
201
|
+
export function getTask(taskId) {
|
|
202
|
+
const database = initBackgroundTasks();
|
|
203
|
+
const row = database
|
|
204
|
+
.prepare("SELECT * FROM background_tasks WHERE id = ?")
|
|
205
|
+
.get(taskId);
|
|
206
|
+
return row ? rowToTask(row) : null;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get pending results for parent session
|
|
210
|
+
*/
|
|
211
|
+
export function getPendingResultsForSession(parentSessionId) {
|
|
212
|
+
const database = initBackgroundTasks();
|
|
213
|
+
const rows = database
|
|
214
|
+
.prepare(`
|
|
215
|
+
SELECT * FROM background_tasks
|
|
216
|
+
WHERE parent_session_id = ? AND status IN ('completed', 'failed')
|
|
217
|
+
AND delivered_at IS NULL
|
|
218
|
+
ORDER BY created_at ASC
|
|
219
|
+
`)
|
|
220
|
+
.all(parentSessionId);
|
|
221
|
+
return rows.map(rowToTask);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* List all tasks
|
|
225
|
+
*/
|
|
226
|
+
export function listTasks(status) {
|
|
227
|
+
const database = initBackgroundTasks();
|
|
228
|
+
const query = status
|
|
229
|
+
? "SELECT * FROM background_tasks WHERE status = ? ORDER BY created_at DESC"
|
|
230
|
+
: "SELECT * FROM background_tasks ORDER BY created_at DESC";
|
|
231
|
+
const rows = status
|
|
232
|
+
? database.prepare(query).all(status)
|
|
233
|
+
: database.prepare(query).all();
|
|
234
|
+
return rows.map(rowToTask);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Cancel a running task
|
|
238
|
+
*/
|
|
239
|
+
export function cancelTask(taskId) {
|
|
240
|
+
const proc = runningProcesses.get(taskId);
|
|
241
|
+
if (proc) {
|
|
242
|
+
proc.kill("SIGTERM");
|
|
243
|
+
runningProcesses.delete(taskId);
|
|
244
|
+
const database = initBackgroundTasks();
|
|
245
|
+
database
|
|
246
|
+
.prepare(`
|
|
247
|
+
UPDATE background_tasks SET status = 'failed', error = ?, completed_at = ?
|
|
248
|
+
WHERE id = ?
|
|
249
|
+
`)
|
|
250
|
+
.run("Cancelled by user", Date.now(), taskId);
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Clean up old tasks
|
|
257
|
+
*/
|
|
258
|
+
export function cleanupOldTasks(maxAgeMs = 7 * 24 * 60 * 60 * 1000) {
|
|
259
|
+
const database = initBackgroundTasks();
|
|
260
|
+
const cutoff = Date.now() - maxAgeMs;
|
|
261
|
+
const result = database
|
|
262
|
+
.prepare("DELETE FROM background_tasks WHERE created_at < ?")
|
|
263
|
+
.run(cutoff);
|
|
264
|
+
return result.changes;
|
|
265
|
+
}
|
|
266
|
+
// Helper to convert DB row to BackgroundTask
|
|
267
|
+
function rowToTask(row) {
|
|
268
|
+
return {
|
|
269
|
+
id: row.id,
|
|
270
|
+
sessionId: row.session_id,
|
|
271
|
+
parentSessionId: row.parent_session_id,
|
|
272
|
+
command: row.command,
|
|
273
|
+
status: row.status,
|
|
274
|
+
progress: row.progress,
|
|
275
|
+
progressMessage: row.progress_message ?? undefined,
|
|
276
|
+
result: (() => {
|
|
277
|
+
try {
|
|
278
|
+
return row.result ? JSON.parse(row.result) : undefined;
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
})(),
|
|
284
|
+
error: row.error ?? undefined,
|
|
285
|
+
createdAt: row.created_at,
|
|
286
|
+
startedAt: row.started_at ?? undefined,
|
|
287
|
+
completedAt: row.completed_at ?? undefined,
|
|
288
|
+
deliveredAt: row.delivered_at ?? undefined,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/background/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-gateway - Hermes-style Messaging Gateway
|
|
3
|
+
*
|
|
4
|
+
* Architecture:
|
|
5
|
+
* - Single background process
|
|
6
|
+
* - Platform adapters (Discord, Telegram, etc.)
|
|
7
|
+
* - Per-chat session management
|
|
8
|
+
* - Background task support
|
|
9
|
+
* - Security (allowlists, pairing)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* /gateway start [port] - Start the gateway
|
|
13
|
+
* /gateway stop - Stop the gateway
|
|
14
|
+
* /gateway status - Show status
|
|
15
|
+
* /gateway pair <code> - Approve pairing code
|
|
16
|
+
*/
|
|
17
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
18
|
+
export default function (pi: ExtensionAPI): void;
|