@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.
Files changed (75) hide show
  1. package/README.md +366 -0
  2. package/config/config.default.json +51 -0
  3. package/dist/adapters/base.d.ts +85 -0
  4. package/dist/adapters/base.js +34 -0
  5. package/dist/adapters/base.js.map +1 -0
  6. package/dist/adapters/discord.d.ts +53 -0
  7. package/dist/adapters/discord.js +224 -0
  8. package/dist/adapters/discord.js.map +1 -0
  9. package/dist/adapters/index.d.ts +13 -0
  10. package/dist/adapters/index.js +8 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/slack.d.ts +49 -0
  13. package/dist/adapters/slack.js +231 -0
  14. package/dist/adapters/slack.js.map +1 -0
  15. package/dist/adapters/telegram.d.ts +64 -0
  16. package/dist/adapters/telegram.js +274 -0
  17. package/dist/adapters/telegram.js.map +1 -0
  18. package/dist/adapters/twitch.d.ts +75 -0
  19. package/dist/adapters/twitch.js +222 -0
  20. package/dist/adapters/twitch.js.map +1 -0
  21. package/dist/adapters/websocket.d.ts +30 -0
  22. package/dist/adapters/websocket.js +132 -0
  23. package/dist/adapters/websocket.js.map +1 -0
  24. package/dist/adapters/whatsapp.d.ts +49 -0
  25. package/dist/adapters/whatsapp.js +251 -0
  26. package/dist/adapters/whatsapp.js.map +1 -0
  27. package/dist/background/index.d.ts +1 -0
  28. package/dist/background/index.js +2 -0
  29. package/dist/background/index.js.map +1 -0
  30. package/dist/background/manager.d.ts +70 -0
  31. package/dist/background/manager.js +291 -0
  32. package/dist/background/manager.js.map +1 -0
  33. package/dist/index.d.ts +18 -0
  34. package/dist/index.js +1275 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/logger.d.ts +12 -0
  37. package/dist/logger.js +39 -0
  38. package/dist/logger.js.map +1 -0
  39. package/dist/paths.d.ts +14 -0
  40. package/dist/paths.js +32 -0
  41. package/dist/paths.js.map +1 -0
  42. package/dist/security/auth.d.ts +91 -0
  43. package/dist/security/auth.js +316 -0
  44. package/dist/security/auth.js.map +1 -0
  45. package/dist/security/index.d.ts +1 -0
  46. package/dist/security/index.js +2 -0
  47. package/dist/security/index.js.map +1 -0
  48. package/dist/security/tool-policy.d.ts +66 -0
  49. package/dist/security/tool-policy.js +467 -0
  50. package/dist/security/tool-policy.js.map +1 -0
  51. package/dist/sessions/index.d.ts +1 -0
  52. package/dist/sessions/index.js +2 -0
  53. package/dist/sessions/index.js.map +1 -0
  54. package/dist/sessions/store.d.ts +64 -0
  55. package/dist/sessions/store.js +247 -0
  56. package/dist/sessions/store.js.map +1 -0
  57. package/package.json +57 -0
  58. package/src/adapters/base.ts +124 -0
  59. package/src/adapters/discord.ts +270 -0
  60. package/src/adapters/index.ts +13 -0
  61. package/src/adapters/slack.ts +313 -0
  62. package/src/adapters/telegram.ts +394 -0
  63. package/src/adapters/twitch.ts +316 -0
  64. package/src/adapters/websocket.ts +158 -0
  65. package/src/adapters/whatsapp.ts +296 -0
  66. package/src/background/index.ts +1 -0
  67. package/src/background/manager.ts +395 -0
  68. package/src/index.ts +1665 -0
  69. package/src/logger.ts +43 -0
  70. package/src/paths.ts +40 -0
  71. package/src/security/auth.ts +458 -0
  72. package/src/security/index.ts +1 -0
  73. package/src/security/tool-policy.ts +568 -0
  74. package/src/sessions/index.ts +1 -0
  75. package/src/sessions/store.ts +360 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Gateway Logger - writes all logs to a file instead of console
3
+ *
4
+ * All gateway log output goes to ~/.pi/gateway/gateway.log so that
5
+ * console.log/console.error do not escape pi's TUI and break the layout.
6
+ */
7
+ export declare const logger: {
8
+ info: (...args: unknown[]) => void;
9
+ warn: (...args: unknown[]) => void;
10
+ error: (...args: unknown[]) => void;
11
+ debug: (...args: unknown[]) => void;
12
+ };
package/dist/logger.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Gateway Logger - writes all logs to a file instead of console
3
+ *
4
+ * All gateway log output goes to ~/.pi/gateway/gateway.log so that
5
+ * console.log/console.error do not escape pi's TUI and break the layout.
6
+ */
7
+ import { appendFileSync, existsSync, mkdirSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { homedir } from "node:os";
10
+ const GATEWAY_DIR = join(homedir(), ".pi", "gateway");
11
+ const LOG_FILE = join(GATEWAY_DIR, "gateway.log");
12
+ function ensureLogDir() {
13
+ if (!existsSync(GATEWAY_DIR)) {
14
+ mkdirSync(GATEWAY_DIR, { recursive: true });
15
+ }
16
+ }
17
+ function formatTimestamp() {
18
+ return new Date().toISOString();
19
+ }
20
+ function writeLog(level, ...args) {
21
+ ensureLogDir();
22
+ const message = args
23
+ .map((a) => (typeof a === "string" ? a : JSON.stringify(a)))
24
+ .join(" ");
25
+ const line = `[${formatTimestamp()}] [${level}] ${message}\n`;
26
+ try {
27
+ appendFileSync(LOG_FILE, line, "utf-8");
28
+ }
29
+ catch {
30
+ // Fail silently — we must not break the TUI
31
+ }
32
+ }
33
+ export const logger = {
34
+ info: (...args) => writeLog("INFO", ...args),
35
+ warn: (...args) => writeLog("WARN", ...args),
36
+ error: (...args) => writeLog("ERROR", ...args),
37
+ debug: (...args) => writeLog("DEBUG", ...args),
38
+ };
39
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAElD,SAAS,YAAY;IACpB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAG,IAAe;IAClD,YAAY,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,IAAI;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC;IAC9D,IAAI,CAAC;QACJ,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACR,4CAA4C;IAC7C,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IACvD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IACvD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACzD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;CACzD,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Path utilities — resolve the pi-gateway package root and share
3
+ * config file locations so every module reads the same files.
4
+ */
5
+ /** Single source of truth: ~/.pi/gateway/config.json */
6
+ export declare const GATEWAY_CONFIG_DIR: string;
7
+ export declare const GATEWAY_CONFIG_FILE: string;
8
+ /**
9
+ * Walk up from the calling module's location until we find a
10
+ * package.json or config/ directory, then return that directory.
11
+ *
12
+ * Call with `import.meta.url` from the file that needs the root.
13
+ */
14
+ export declare function getPackageRoot(importMetaUrl: string): string;
package/dist/paths.js ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Path utilities — resolve the pi-gateway package root and share
3
+ * config file locations so every module reads the same files.
4
+ */
5
+ import { fileURLToPath } from "node:url";
6
+ import { dirname, join } from "node:path";
7
+ import { existsSync } from "node:fs";
8
+ import { homedir } from "node:os";
9
+ // ── Runtime config paths (user's home directory) ─────────────────
10
+ /** Single source of truth: ~/.pi/gateway/config.json */
11
+ export const GATEWAY_CONFIG_DIR = join(homedir(), ".pi", "gateway");
12
+ export const GATEWAY_CONFIG_FILE = join(GATEWAY_CONFIG_DIR, "config.json");
13
+ // ── Package root resolution ──────────────────────────────────────
14
+ /**
15
+ * Walk up from the calling module's location until we find a
16
+ * package.json or config/ directory, then return that directory.
17
+ *
18
+ * Call with `import.meta.url` from the file that needs the root.
19
+ */
20
+ export function getPackageRoot(importMetaUrl) {
21
+ let dir = dirname(fileURLToPath(importMetaUrl));
22
+ for (let i = 0; i < 6; i++) {
23
+ if (existsSync(join(dir, "package.json")) ||
24
+ existsSync(join(dir, "config"))) {
25
+ return dir;
26
+ }
27
+ dir = dirname(dir);
28
+ }
29
+ // Last-resort fallback
30
+ return dirname(fileURLToPath(importMetaUrl));
31
+ }
32
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,oEAAoE;AAEpE,wDAAwD;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAE3E,oEAAoE;AAEpE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,aAAqB;IACnD,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IACC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAC9B,CAAC;YACF,OAAO,GAAG,CAAC;QACZ,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,uBAAuB;IACvB,OAAO,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Security Layer - Hermes-style allowlists and DM pairing
3
+ *
4
+ * Features:
5
+ * - Per-platform user allowlists
6
+ * - DM pairing flow with one-time codes
7
+ * - Rate limiting
8
+ * - Token authentication for gateway access
9
+ */
10
+ import Database from "better-sqlite3";
11
+ export type Platform = "discord" | "telegram" | "slack" | "whatsapp" | "signal" | "sms" | "email" | "matrix" | "web" | "websocket";
12
+ interface AllowlistEntry {
13
+ platform: Platform;
14
+ userId: string;
15
+ addedAt: number;
16
+ note?: string;
17
+ }
18
+ interface AdminEntry {
19
+ platform: Platform | "*";
20
+ userId: string;
21
+ addedAt: number;
22
+ note?: string;
23
+ }
24
+ /**
25
+ * Initialize security database
26
+ */
27
+ export declare function initSecurityStore(): Database.Database;
28
+ /**
29
+ * Generate pairing code
30
+ */
31
+ export declare function generatePairingCode(platform: Platform, userId: string): string;
32
+ /**
33
+ * Approve pairing code
34
+ */
35
+ export declare function approvePairingCode(code: string): boolean;
36
+ /**
37
+ * List pending pairing codes
38
+ */
39
+ export declare function listPendingPairingCodes(): Array<{
40
+ code: string;
41
+ platform: Platform;
42
+ userId: string;
43
+ createdAt: number;
44
+ expiresIn: number;
45
+ }>;
46
+ /**
47
+ * Revoke user access
48
+ */
49
+ export declare function revokeUserAccess(platform: Platform, userId: string): boolean;
50
+ /**
51
+ * Check if user is allowed
52
+ */
53
+ export declare function isUserAllowed(platform: Platform, userId: string): boolean;
54
+ /**
55
+ * Add user to allowlist
56
+ */
57
+ export declare function addToAllowlist(platform: Platform, userId: string, note?: string): void;
58
+ /**
59
+ * List allowlisted users
60
+ */
61
+ export declare function listAllowlistedUsers(platform?: Platform): AllowlistEntry[];
62
+ /**
63
+ * Rate limiting
64
+ */
65
+ export declare function checkRateLimit(identifier: string, maxRequests?: number, windowMs?: number): boolean;
66
+ /**
67
+ * Clean up expired pairing codes
68
+ */
69
+ export declare function cleanupExpiredCodes(): number;
70
+ export interface SecurityConfig {
71
+ allowAll: boolean;
72
+ requirePairing: boolean;
73
+ allowedUids: Record<string, string[]>;
74
+ adminUids: Record<string, string[]>;
75
+ rateLimit: {
76
+ maxRequests: number;
77
+ windowMs: number;
78
+ };
79
+ }
80
+ /**
81
+ * Check if a user has admin privileges.
82
+ * Looks at both DB admins table and config adminUids.
83
+ */
84
+ export declare function isAdmin(platform: Platform | string, userId: string): boolean;
85
+ /** Add a user as admin. Platform "*" means admin on all platforms. */
86
+ export declare function addAdmin(platform: Platform | "*", userId: string, note?: string): void;
87
+ /** Remove admin privileges from a user. Returns true if removed. */
88
+ export declare function removeAdmin(platform: Platform | "*", userId: string): boolean;
89
+ /** List all admin entries. */
90
+ export declare function listAdmins(): AdminEntry[];
91
+ export {};
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Security Layer - Hermes-style allowlists and DM pairing
3
+ *
4
+ * Features:
5
+ * - Per-platform user allowlists
6
+ * - DM pairing flow with one-time codes
7
+ * - Rate limiting
8
+ * - Token authentication for gateway access
9
+ */
10
+ import Database from "better-sqlite3";
11
+ import { join } from "path";
12
+ import { homedir } from "os";
13
+ import { existsSync, mkdirSync, readFileSync } from "fs";
14
+ import { randomBytes } from "node:crypto";
15
+ import { logger } from "../logger.js";
16
+ import { GATEWAY_CONFIG_FILE } from "../paths.js";
17
+ const GATEWAY_DIR = join(homedir(), ".pi");
18
+ const SECURITY_DB = join(GATEWAY_DIR, "gateway-security.db");
19
+ let db = null;
20
+ /**
21
+ * Initialize security database
22
+ */
23
+ export function initSecurityStore() {
24
+ if (db)
25
+ return db;
26
+ if (!existsSync(GATEWAY_DIR)) {
27
+ mkdirSync(GATEWAY_DIR, { recursive: true });
28
+ }
29
+ db = new Database(SECURITY_DB);
30
+ db.exec("PRAGMA journal_mode = WAL;");
31
+ // Allowlist table
32
+ db.exec(`
33
+ CREATE TABLE IF NOT EXISTS allowlist (
34
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
35
+ platform TEXT NOT NULL,
36
+ user_id TEXT NOT NULL,
37
+ added_at INTEGER NOT NULL,
38
+ note TEXT
39
+ )
40
+ `);
41
+ db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_allowlist ON allowlist(platform, user_id)`);
42
+ // Pairing codes table
43
+ db.exec(`
44
+ CREATE TABLE IF NOT EXISTS pairing_codes (
45
+ code TEXT PRIMARY KEY,
46
+ platform TEXT NOT NULL,
47
+ user_id TEXT NOT NULL,
48
+ created_at INTEGER NOT NULL,
49
+ expires_at INTEGER NOT NULL,
50
+ used INTEGER NOT NULL DEFAULT 0
51
+ )
52
+ `);
53
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_pairing_expires ON pairing_codes(expires_at)`);
54
+ // Rate limiting table
55
+ db.exec(`
56
+ CREATE TABLE IF NOT EXISTS rate_limits (
57
+ identifier TEXT PRIMARY KEY,
58
+ count INTEGER NOT NULL DEFAULT 1,
59
+ window_start INTEGER NOT NULL
60
+ )
61
+ `);
62
+ // Admin table
63
+ db.exec(`
64
+ CREATE TABLE IF NOT EXISTS admins (
65
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
66
+ platform TEXT NOT NULL DEFAULT '*',
67
+ user_id TEXT NOT NULL,
68
+ added_at INTEGER NOT NULL,
69
+ note TEXT
70
+ )
71
+ `);
72
+ db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_admins ON admins(platform, user_id)`);
73
+ logger.info("[Security] Database initialized");
74
+ return db;
75
+ }
76
+ /**
77
+ * Generate pairing code
78
+ */
79
+ export function generatePairingCode(platform, userId) {
80
+ const database = initSecurityStore();
81
+ // Generate 8-character alphanumeric code
82
+ const code = randomBytes(6).toString("base64url").slice(0, 8).toUpperCase();
83
+ const now = Date.now();
84
+ const expiresAt = now + 60 * 60 * 1000; // 1 hour
85
+ database
86
+ .prepare(`
87
+ INSERT INTO pairing_codes (code, platform, user_id, created_at, expires_at, used)
88
+ VALUES (?, ?, ?, ?, ?, 0)
89
+ `)
90
+ .run(code, platform, userId, now, expiresAt);
91
+ logger.info(`[Security] Generated pairing code ${code} for ${platform}/${userId}`);
92
+ return code;
93
+ }
94
+ /**
95
+ * Approve pairing code
96
+ */
97
+ export function approvePairingCode(code) {
98
+ const database = initSecurityStore();
99
+ const entry = database
100
+ .prepare(`
101
+ SELECT * FROM pairing_codes WHERE code = ? AND used = 0 AND expires_at > ?
102
+ `)
103
+ .get(code, Date.now());
104
+ if (!entry) {
105
+ logger.info(`[Security] Pairing code ${code} not found or expired`);
106
+ return false;
107
+ }
108
+ // Add to allowlist
109
+ database
110
+ .prepare(`
111
+ INSERT OR IGNORE INTO allowlist (platform, user_id, added_at)
112
+ VALUES (?, ?, ?)
113
+ `)
114
+ .run(entry.platform, entry.userId, Date.now());
115
+ // Mark code as used
116
+ database
117
+ .prepare("UPDATE pairing_codes SET used = 1 WHERE code = ?")
118
+ .run(code);
119
+ logger.info(`[Security] Approved pairing: ${entry.platform}/${entry.userId}`);
120
+ return true;
121
+ }
122
+ /**
123
+ * List pending pairing codes
124
+ */
125
+ export function listPendingPairingCodes() {
126
+ const database = initSecurityStore();
127
+ const now = Date.now();
128
+ const rows = database
129
+ .prepare(`
130
+ SELECT * FROM pairing_codes WHERE used = 0 AND expires_at > ?
131
+ ORDER BY created_at ASC
132
+ `)
133
+ .all(now);
134
+ return rows.map((row) => ({
135
+ code: row.code,
136
+ platform: row.platform,
137
+ userId: row.userId,
138
+ createdAt: row.createdAt,
139
+ expiresIn: Math.max(0, row.expiresAt - now),
140
+ }));
141
+ }
142
+ /**
143
+ * Revoke user access
144
+ */
145
+ export function revokeUserAccess(platform, userId) {
146
+ const database = initSecurityStore();
147
+ const result = database
148
+ .prepare("DELETE FROM allowlist WHERE platform = ? AND user_id = ?")
149
+ .run(platform, userId);
150
+ return result.changes > 0;
151
+ }
152
+ /**
153
+ * Check if user is allowed
154
+ */
155
+ export function isUserAllowed(platform, userId) {
156
+ const database = initSecurityStore();
157
+ // Check global allow all first
158
+ const config = getSecurityConfig();
159
+ if (config.allowAll)
160
+ return true;
161
+ // Check config-based allowedUids (cross-platform wildcard or platform-specific)
162
+ if (config.allowedUids) {
163
+ const platformUids = config.allowedUids[platform];
164
+ if (platformUids?.includes(userId))
165
+ return true;
166
+ const wildcardUids = config.allowedUids["*"];
167
+ if (wildcardUids?.includes(userId))
168
+ return true;
169
+ }
170
+ // Check specific allowlist
171
+ const entry = database
172
+ .prepare(`
173
+ SELECT 1 FROM allowlist WHERE platform = ? AND user_id = ?
174
+ `)
175
+ .get(platform, userId);
176
+ return !!entry;
177
+ }
178
+ /**
179
+ * Add user to allowlist
180
+ */
181
+ export function addToAllowlist(platform, userId, note) {
182
+ const database = initSecurityStore();
183
+ database
184
+ .prepare(`
185
+ INSERT OR REPLACE INTO allowlist (platform, user_id, added_at, note)
186
+ VALUES (?, ?, ?, ?)
187
+ `)
188
+ .run(platform, userId, Date.now(), note ?? null);
189
+ }
190
+ /**
191
+ * List allowlisted users
192
+ */
193
+ export function listAllowlistedUsers(platform) {
194
+ const database = initSecurityStore();
195
+ const query = platform
196
+ ? "SELECT * FROM allowlist WHERE platform = ? ORDER BY added_at DESC"
197
+ : "SELECT * FROM allowlist ORDER BY platform, added_at DESC";
198
+ const rows = platform
199
+ ? database.prepare(query).all(platform)
200
+ : database.prepare(query).all();
201
+ return rows;
202
+ }
203
+ /**
204
+ * Rate limiting
205
+ */
206
+ export function checkRateLimit(identifier, maxRequests = 60, windowMs = 60000) {
207
+ const database = initSecurityStore();
208
+ const now = Date.now();
209
+ const entry = database
210
+ .prepare(`
211
+ SELECT * FROM rate_limits WHERE identifier = ?
212
+ `)
213
+ .get(identifier);
214
+ if (!entry || now - entry.windowStart > windowMs) {
215
+ // New window
216
+ database
217
+ .prepare(`
218
+ INSERT OR REPLACE INTO rate_limits (identifier, count, window_start)
219
+ VALUES (?, 1, ?)
220
+ `)
221
+ .run(identifier, now);
222
+ return true;
223
+ }
224
+ if (entry.count >= maxRequests) {
225
+ logger.warn(`[Security] Rate limit exceeded for ${identifier}`);
226
+ return false;
227
+ }
228
+ // Increment counter
229
+ database
230
+ .prepare(`
231
+ UPDATE rate_limits SET count = count + 1 WHERE identifier = ?
232
+ `)
233
+ .run(identifier);
234
+ return true;
235
+ }
236
+ /**
237
+ * Clean up expired pairing codes
238
+ */
239
+ export function cleanupExpiredCodes() {
240
+ const database = initSecurityStore();
241
+ const result = database
242
+ .prepare("DELETE FROM pairing_codes WHERE expires_at < ?")
243
+ .run(Date.now());
244
+ return result.changes;
245
+ }
246
+ function getSecurityConfig() {
247
+ try {
248
+ if (existsSync(GATEWAY_CONFIG_FILE)) {
249
+ const raw = JSON.parse(readFileSync(GATEWAY_CONFIG_FILE, "utf-8"));
250
+ if (raw.security)
251
+ return raw.security;
252
+ }
253
+ }
254
+ catch (err) {
255
+ logger.error("[Security] Failed to parse config — using defaults. Error:", err);
256
+ }
257
+ return {
258
+ allowAll: false,
259
+ requirePairing: false,
260
+ allowedUids: {},
261
+ adminUids: {},
262
+ rateLimit: { maxRequests: 60, windowMs: 60000 },
263
+ };
264
+ }
265
+ // ── Admin Role Management ─────────────────────────────────────────
266
+ /**
267
+ * Check if a user has admin privileges.
268
+ * Looks at both DB admins table and config adminUids.
269
+ */
270
+ export function isAdmin(platform, userId) {
271
+ const database = initSecurityStore();
272
+ const config = getSecurityConfig();
273
+ // Check config-based adminUids (cross-platform wildcard or platform-specific)
274
+ if (config.adminUids) {
275
+ const platformUids = config.adminUids[platform];
276
+ if (platformUids?.includes(userId))
277
+ return true;
278
+ const wildcardUids = config.adminUids["*"];
279
+ if (wildcardUids?.includes(userId))
280
+ return true;
281
+ }
282
+ // Check DB admins (platform-specific or wildcard)
283
+ const entry = database
284
+ .prepare(`SELECT 1 FROM admins WHERE (platform = ? OR platform = '*') AND user_id = ?`)
285
+ .get(platform, userId);
286
+ return !!entry;
287
+ }
288
+ /** Add a user as admin. Platform "*" means admin on all platforms. */
289
+ export function addAdmin(platform, userId, note) {
290
+ const database = initSecurityStore();
291
+ database
292
+ .prepare(`INSERT OR REPLACE INTO admins (platform, user_id, added_at, note)
293
+ VALUES (?, ?, ?, ?)`)
294
+ .run(platform, userId, Date.now(), note ?? null);
295
+ logger.info(`[Security] Admin added: ${platform}:${userId}`);
296
+ }
297
+ /** Remove admin privileges from a user. Returns true if removed. */
298
+ export function removeAdmin(platform, userId) {
299
+ const database = initSecurityStore();
300
+ const result = database
301
+ .prepare("DELETE FROM admins WHERE platform = ? AND user_id = ?")
302
+ .run(platform, userId);
303
+ if (result.changes > 0) {
304
+ logger.info(`[Security] Admin removed: ${platform}:${userId}`);
305
+ }
306
+ return result.changes > 0;
307
+ }
308
+ /** List all admin entries. */
309
+ export function listAdmins() {
310
+ const database = initSecurityStore();
311
+ const rows = database
312
+ .prepare("SELECT * FROM admins ORDER BY platform, user_id")
313
+ .all();
314
+ return rows;
315
+ }
316
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/security/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { initSecurityStore, isUserAllowed, approvePairingCode, generatePairingCode, listPendingPairingCodes, addToAllowlist, listAllowlistedUsers, revokeUserAccess, checkRateLimit, type Platform } from "./auth.js";
@@ -0,0 +1,2 @@
1
+ export { initSecurityStore, isUserAllowed, approvePairingCode, generatePairingCode, listPendingPairingCodes, addToAllowlist, listAllowlistedUsers, revokeUserAccess, checkRateLimit } from "./auth.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAiB,MAAM,WAAW,CAAC"}