@0xmaxma/claude-gateway 1.1.9 → 1.2.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 (67) hide show
  1. package/README.md +61 -1
  2. package/dist/agent/builtin-commands.d.ts +10 -0
  3. package/dist/agent/builtin-commands.d.ts.map +1 -0
  4. package/dist/agent/builtin-commands.js +38 -0
  5. package/dist/agent/builtin-commands.js.map +1 -0
  6. package/dist/agent/runner.d.ts +7 -5
  7. package/dist/agent/runner.d.ts.map +1 -1
  8. package/dist/agent/runner.js +56 -30
  9. package/dist/agent/runner.js.map +1 -1
  10. package/dist/agent/workspace-loader.d.ts.map +1 -1
  11. package/dist/agent/workspace-loader.js +9 -4
  12. package/dist/agent/workspace-loader.js.map +1 -1
  13. package/dist/api/apps-router.d.ts +7 -0
  14. package/dist/api/apps-router.d.ts.map +1 -0
  15. package/dist/api/apps-router.js +242 -0
  16. package/dist/api/apps-router.js.map +1 -0
  17. package/dist/api/gateway-router.d.ts +17 -1
  18. package/dist/api/gateway-router.d.ts.map +1 -1
  19. package/dist/api/gateway-router.js +171 -2
  20. package/dist/api/gateway-router.js.map +1 -1
  21. package/dist/api/router.d.ts.map +1 -1
  22. package/dist/api/router.js +385 -4
  23. package/dist/api/router.js.map +1 -1
  24. package/dist/apps/agent-manager.d.ts +76 -0
  25. package/dist/apps/agent-manager.d.ts.map +1 -0
  26. package/dist/apps/agent-manager.js +311 -0
  27. package/dist/apps/agent-manager.js.map +1 -0
  28. package/dist/apps/compose-generator.d.ts +108 -0
  29. package/dist/apps/compose-generator.d.ts.map +1 -0
  30. package/dist/apps/compose-generator.js +687 -0
  31. package/dist/apps/compose-generator.js.map +1 -0
  32. package/dist/apps/installer.d.ts +101 -0
  33. package/dist/apps/installer.d.ts.map +1 -0
  34. package/dist/apps/installer.js +898 -0
  35. package/dist/apps/installer.js.map +1 -0
  36. package/dist/apps/registry-client.d.ts +37 -0
  37. package/dist/apps/registry-client.d.ts.map +1 -0
  38. package/dist/apps/registry-client.js +106 -0
  39. package/dist/apps/registry-client.js.map +1 -0
  40. package/dist/apps/registry.d.ts +54 -0
  41. package/dist/apps/registry.d.ts.map +1 -0
  42. package/dist/apps/registry.js +182 -0
  43. package/dist/apps/registry.js.map +1 -0
  44. package/dist/apps/socket-server.d.ts +46 -0
  45. package/dist/apps/socket-server.d.ts.map +1 -0
  46. package/dist/apps/socket-server.js +297 -0
  47. package/dist/apps/socket-server.js.map +1 -0
  48. package/dist/config/watcher.d.ts +1 -0
  49. package/dist/config/watcher.d.ts.map +1 -1
  50. package/dist/config/watcher.js +55 -2
  51. package/dist/config/watcher.js.map +1 -1
  52. package/dist/index.js +170 -3
  53. package/dist/index.js.map +1 -1
  54. package/dist/session/process.d.ts.map +1 -1
  55. package/dist/session/process.js +47 -6
  56. package/dist/session/process.js.map +1 -1
  57. package/dist/types.d.ts +6 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/mcp/server.ts +2 -0
  60. package/mcp/tools/apps/client.ts +78 -0
  61. package/mcp/tools/apps/module.ts +211 -0
  62. package/mcp/tools/apps/skills/app-status/SKILL.md +48 -0
  63. package/mcp/tools/apps/skills/create-app-yaml/SKILL.md +94 -0
  64. package/mcp/tools/apps/skills/install-app/SKILL.md +102 -0
  65. package/mcp/tools/apps/skills/list-apps/SKILL.md +34 -0
  66. package/mcp/tools/telegram/receiver-server.ts +36 -2
  67. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/apps/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface RegistryVersion {
2
+ version: string;
3
+ commit: string;
4
+ approved_at: string;
5
+ }
6
+ export interface RegistryApp {
7
+ name: string;
8
+ description: string;
9
+ repo: string;
10
+ author: string;
11
+ versions: RegistryVersion[];
12
+ }
13
+ interface RegistryIndex {
14
+ updated_at: string;
15
+ apps: RegistryApp[];
16
+ }
17
+ export declare class RegistryClient {
18
+ private cache;
19
+ /**
20
+ * Fetch the community registry.
21
+ * Returns cached data if within TTL.
22
+ * Falls back to stale cache on network/parse error.
23
+ * Throws only if no cached data is available.
24
+ */
25
+ fetchRegistry(): Promise<RegistryIndex>;
26
+ findApp(name: string): Promise<RegistryApp | undefined>;
27
+ findVersion(name: string, version: string): Promise<{
28
+ app: RegistryApp;
29
+ ver: RegistryVersion;
30
+ } | undefined>;
31
+ clearCache(): void;
32
+ private validate;
33
+ private validateApp;
34
+ private validateVersion;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=registry-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../src/apps/registry-client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAsB;IAEnC;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IA4BvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKvD,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,GAAG,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,GAAG,SAAS,CAAC;IAQlE,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,eAAe;CAcxB"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RegistryClient = void 0;
4
+ const REGISTRY_URL = 'https://raw.githubusercontent.com/0xMaxMa/claude-gateway-appstore/main/apps.json';
5
+ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
6
+ // ─── Client ───────────────────────────────────────────────────────────────────
7
+ class RegistryClient {
8
+ constructor() {
9
+ this.cache = null;
10
+ }
11
+ /**
12
+ * Fetch the community registry.
13
+ * Returns cached data if within TTL.
14
+ * Falls back to stale cache on network/parse error.
15
+ * Throws only if no cached data is available.
16
+ */
17
+ async fetchRegistry() {
18
+ const now = Date.now();
19
+ if (this.cache && now - this.cache.fetchedAt < CACHE_TTL_MS) {
20
+ return this.cache.data;
21
+ }
22
+ try {
23
+ const res = await fetch(REGISTRY_URL, {
24
+ headers: { 'User-Agent': 'claude-gateway/appstore' },
25
+ signal: AbortSignal.timeout(10000),
26
+ });
27
+ if (!res.ok) {
28
+ throw new Error(`Registry fetch failed: HTTP ${res.status}`);
29
+ }
30
+ const raw = await res.json();
31
+ const data = this.validate(raw);
32
+ this.cache = { data, fetchedAt: now };
33
+ return data;
34
+ }
35
+ catch (err) {
36
+ if (this.cache) {
37
+ // Stale cache is better than nothing — log so operators know registry is unreachable
38
+ console.warn(`[registry-client] fetch failed, using stale cache: ${err.message}`);
39
+ return this.cache.data;
40
+ }
41
+ throw err;
42
+ }
43
+ }
44
+ async findApp(name) {
45
+ const registry = await this.fetchRegistry();
46
+ return registry.apps.find((a) => a.name === name);
47
+ }
48
+ async findVersion(name, version) {
49
+ const app = await this.findApp(name);
50
+ if (!app)
51
+ return undefined;
52
+ const ver = app.versions.find((v) => v.version === version);
53
+ if (!ver)
54
+ return undefined;
55
+ return { app, ver };
56
+ }
57
+ clearCache() {
58
+ this.cache = null;
59
+ }
60
+ // ─── Internal ─────────────────────────────────────────────────────────────
61
+ validate(raw) {
62
+ if (typeof raw !== 'object' || raw === null) {
63
+ throw new Error('Invalid registry format: expected object');
64
+ }
65
+ const obj = raw;
66
+ if (typeof obj['updated_at'] !== 'string') {
67
+ throw new Error('Invalid registry format: missing "updated_at"');
68
+ }
69
+ if (!Array.isArray(obj['apps'])) {
70
+ throw new Error('Invalid registry format: "apps" must be an array');
71
+ }
72
+ for (const app of obj['apps']) {
73
+ this.validateApp(app);
74
+ }
75
+ return raw;
76
+ }
77
+ validateApp(app) {
78
+ if (typeof app !== 'object' || app === null) {
79
+ throw new Error('Invalid registry entry: app must be an object');
80
+ }
81
+ const a = app;
82
+ if (typeof a['name'] !== 'string' || !a['name']) {
83
+ throw new Error('Invalid registry entry: missing "name"');
84
+ }
85
+ if (!Array.isArray(a['versions'])) {
86
+ throw new Error(`Invalid registry entry "${a['name']}": "versions" must be an array`);
87
+ }
88
+ for (const v of a['versions']) {
89
+ this.validateVersion(v, String(a['name']));
90
+ }
91
+ }
92
+ validateVersion(v, appName) {
93
+ if (typeof v !== 'object' || v === null) {
94
+ throw new Error(`Invalid version in "${appName}": must be an object`);
95
+ }
96
+ const ver = v;
97
+ if (typeof ver['version'] !== 'string' || !ver['version']) {
98
+ throw new Error(`Invalid version in "${appName}": missing "version"`);
99
+ }
100
+ if (typeof ver['commit'] !== 'string' || !/^[0-9a-f]{40}$/.test(ver['commit'])) {
101
+ throw new Error(`Invalid version in "${appName}": "commit" must be a 40-char hex string`);
102
+ }
103
+ }
104
+ }
105
+ exports.RegistryClient = RegistryClient;
106
+ //# sourceMappingURL=registry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/apps/registry-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export interface PortEntry {
2
+ name: string;
3
+ service: string;
4
+ hostPort: number;
5
+ containerPort: number;
6
+ type: 'api' | 'web';
7
+ rateLimit: number;
8
+ }
9
+ export interface AppEntry {
10
+ name: string;
11
+ version: string;
12
+ commit: string;
13
+ githubUrl: string;
14
+ installPath: string;
15
+ ports: PortEntry[];
16
+ /** serviceName → host socket path (/run/claude-gateway/apps/<name>-<svc>.sock) */
17
+ sockets: Record<string, string>;
18
+ installedAt: string;
19
+ updatedAt: string;
20
+ status: 'running' | 'stopped' | 'error' | 'building';
21
+ source: 'registry' | 'custom' | 'local';
22
+ agentPaths?: {
23
+ claudeBin: string;
24
+ nodeBin: string;
25
+ npmRoot: string;
26
+ claudeVersion?: string;
27
+ };
28
+ /** Agent service declared in app.yaml (path + name). Null means no agent. */
29
+ agentDeclaration?: {
30
+ path: string;
31
+ name: string;
32
+ } | null;
33
+ }
34
+ /**
35
+ * Persistent store for installed apps.
36
+ * All mutations are atomic (tmp-file + rename) and serialised through:
37
+ * 1. An in-process promise chain (fast path, single-process safety)
38
+ * 2. An advisory file lock (cross-process safety: O_EXCL on .lock file)
39
+ */
40
+ export declare class AppsRegistry {
41
+ private readonly filePath;
42
+ private inProcessLock;
43
+ constructor(filePath?: string);
44
+ private withLock;
45
+ private withFileLock;
46
+ private readSync;
47
+ private writeAtomic;
48
+ list(): Promise<AppEntry[]>;
49
+ get(name: string): Promise<AppEntry | undefined>;
50
+ upsert(entry: AppEntry): Promise<void>;
51
+ remove(name: string): Promise<void>;
52
+ updateStatus(name: string, status: AppEntry['status']): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/apps/registry.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACrD,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAUD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,aAAa,CAAoC;gBAE7C,QAAQ,SAAoB;YAM1B,QAAQ;YAcR,YAAY;IAgD1B,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,WAAW;IAUb,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAIhD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAatC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAW5E"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AppsRegistry = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const os = __importStar(require("node:os"));
40
+ // ─── Registry ────────────────────────────────────────────────────────────────
41
+ const DEFAULT_APPS_PATH = path.join(os.homedir(), '.claude-gateway', 'apps.json');
42
+ /**
43
+ * Persistent store for installed apps.
44
+ * All mutations are atomic (tmp-file + rename) and serialised through:
45
+ * 1. An in-process promise chain (fast path, single-process safety)
46
+ * 2. An advisory file lock (cross-process safety: O_EXCL on .lock file)
47
+ */
48
+ class AppsRegistry {
49
+ constructor(filePath = DEFAULT_APPS_PATH) {
50
+ this.inProcessLock = Promise.resolve();
51
+ this.filePath = filePath;
52
+ }
53
+ // ─── Mutual exclusion ──────────────────────────────────────────────────────
54
+ async withLock(fn) {
55
+ // Layer 1: in-process serialisation
56
+ let release;
57
+ const prev = this.inProcessLock;
58
+ this.inProcessLock = new Promise((r) => { release = r; });
59
+ await prev;
60
+ try {
61
+ // Layer 2: cross-process advisory file lock
62
+ return await this.withFileLock(fn);
63
+ }
64
+ finally {
65
+ release();
66
+ }
67
+ }
68
+ async withFileLock(fn) {
69
+ const lockPath = `${this.filePath}.lock`;
70
+ const deadline = Date.now() + 5000;
71
+ // Ensure directory exists before trying to create lock file
72
+ fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
73
+ // Acquire lock via atomic O_EXCL file creation
74
+ while (true) {
75
+ try {
76
+ const fd = fs.openSync(lockPath, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY);
77
+ const pidBuf = Buffer.from(String(process.pid));
78
+ fs.writeSync(fd, pidBuf, 0, pidBuf.length);
79
+ fs.closeSync(fd);
80
+ break; // Lock acquired
81
+ }
82
+ catch (err) {
83
+ if (err.code !== 'EEXIST')
84
+ throw err;
85
+ if (Date.now() > deadline)
86
+ throw new Error('Failed to acquire registry lock after 5s');
87
+ // Check for stale lock (holding process may have crashed)
88
+ try {
89
+ const holderPid = parseInt(fs.readFileSync(lockPath, 'utf-8'), 10);
90
+ if (!isNaN(holderPid) && holderPid !== process.pid) {
91
+ try {
92
+ process.kill(holderPid, 0);
93
+ // Process is alive — wait and retry
94
+ }
95
+ catch (killErr) {
96
+ if (killErr.code !== 'EPERM') {
97
+ // ESRCH: process doesn't exist — stale lock, remove and retry immediately
98
+ fs.unlinkSync(lockPath);
99
+ continue;
100
+ }
101
+ // EPERM: process exists but owned by another user (e.g. root) — it's alive, don't steal lock
102
+ }
103
+ }
104
+ }
105
+ catch { /* Can't read lock file — retry */ }
106
+ await new Promise((r) => setTimeout(r, 20));
107
+ }
108
+ }
109
+ try {
110
+ return await fn();
111
+ }
112
+ finally {
113
+ try {
114
+ fs.unlinkSync(lockPath);
115
+ }
116
+ catch { /* Already removed */ }
117
+ }
118
+ }
119
+ // ─── File I/O ──────────────────────────────────────────────────────────────
120
+ readSync() {
121
+ try {
122
+ const raw = fs.readFileSync(this.filePath, 'utf-8');
123
+ const parsed = JSON.parse(raw);
124
+ if (typeof parsed !== 'object' ||
125
+ parsed === null ||
126
+ !Array.isArray(parsed.apps)) {
127
+ return { apps: [] };
128
+ }
129
+ return parsed;
130
+ }
131
+ catch {
132
+ return { apps: [] };
133
+ }
134
+ }
135
+ writeAtomic(data) {
136
+ const dir = path.dirname(this.filePath);
137
+ fs.mkdirSync(dir, { recursive: true });
138
+ const tmp = `${this.filePath}.tmp.${process.pid}`;
139
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf-8');
140
+ fs.renameSync(tmp, this.filePath);
141
+ }
142
+ // ─── Public API ────────────────────────────────────────────────────────────
143
+ async list() {
144
+ return this.withLock(async () => this.readSync().apps);
145
+ }
146
+ async get(name) {
147
+ return this.withLock(async () => this.readSync().apps.find((a) => a.name === name));
148
+ }
149
+ async upsert(entry) {
150
+ return this.withLock(async () => {
151
+ const data = this.readSync();
152
+ const idx = data.apps.findIndex((a) => a.name === entry.name);
153
+ if (idx >= 0) {
154
+ data.apps[idx] = entry;
155
+ }
156
+ else {
157
+ data.apps.push(entry);
158
+ }
159
+ this.writeAtomic(data);
160
+ });
161
+ }
162
+ async remove(name) {
163
+ return this.withLock(async () => {
164
+ const data = this.readSync();
165
+ data.apps = data.apps.filter((a) => a.name !== name);
166
+ this.writeAtomic(data);
167
+ });
168
+ }
169
+ async updateStatus(name, status) {
170
+ return this.withLock(async () => {
171
+ const data = this.readSync();
172
+ const entry = data.apps.find((a) => a.name === name);
173
+ if (entry) {
174
+ entry.status = status;
175
+ entry.updatedAt = new Date().toISOString();
176
+ this.writeAtomic(data);
177
+ }
178
+ });
179
+ }
180
+ }
181
+ exports.AppsRegistry = AppsRegistry;
182
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/apps/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export interface ScriptDefinition {
2
+ /** Relative path to .sh script (within app dir) */
3
+ path: string;
4
+ /** Script timeout in seconds parsed from e.g. "60s" */
5
+ timeoutMs: number;
6
+ /** Argument definitions for pattern validation */
7
+ args?: Array<{
8
+ name: string;
9
+ type: string;
10
+ pattern?: string;
11
+ /** Compiled RegExp from pattern — cached at startup to avoid per-request ReDoS risk */
12
+ _compiledPattern?: RegExp;
13
+ }>;
14
+ }
15
+ interface SocketConfig {
16
+ appName: string;
17
+ serviceName: string;
18
+ appDir: string;
19
+ scripts: Record<string, ScriptDefinition>;
20
+ }
21
+ /**
22
+ * Manages per-app Unix socket servers.
23
+ * Each socket is a separate HTTP server listening on a Unix domain socket file.
24
+ * Containers with the socket volume-mounted send HTTP requests here to execute
25
+ * declared scripts on the VM host.
26
+ */
27
+ export declare class SocketServer {
28
+ private readonly servers;
29
+ /**
30
+ * Create a Unix socket server at socketPath.
31
+ * The socket is created with the caller's umask; chmod 600 is applied after bind.
32
+ */
33
+ start(socketPath: string, config: SocketConfig): Promise<void>;
34
+ stop(socketPath: string): void;
35
+ stopAll(): void;
36
+ /** Stop all sockets whose path is under the app's socket directory (e.g. "my-app-svc/"). */
37
+ stopApp(appName: string): void;
38
+ private handleRequest;
39
+ private validateArgs;
40
+ private readBody;
41
+ private send;
42
+ }
43
+ /** Parse "60s", "10s", "5s" → milliseconds. Defaults to 30000. */
44
+ export declare function parseTimeoutMs(timeout?: string): number;
45
+ export {};
46
+ //# sourceMappingURL=socket-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-server.d.ts","sourceRoot":"","sources":["../../src/apps/socket-server.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,IAAI,CAAC,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,uFAAuF;QACvF,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACJ;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAID;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IAEzD;;;OAGG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD9D,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAe9B,OAAO,IAAI,IAAI;IAMf,4FAA4F;IAC5F,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;YAgBhB,aAAa;IAwF3B,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,IAAI;CAQb;AAID,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKvD"}