@bridgekitux/agent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +17 -0
  2. package/dist/src/audit.d.ts +18 -0
  3. package/dist/src/audit.d.ts.map +1 -0
  4. package/dist/src/audit.js +30 -0
  5. package/dist/src/audit.js.map +1 -0
  6. package/dist/src/cli.d.ts +3 -0
  7. package/dist/src/cli.d.ts.map +1 -0
  8. package/dist/src/cli.js +173 -0
  9. package/dist/src/cli.js.map +1 -0
  10. package/dist/src/config.d.ts +24 -0
  11. package/dist/src/config.d.ts.map +1 -0
  12. package/dist/src/config.js +66 -0
  13. package/dist/src/config.js.map +1 -0
  14. package/dist/src/handlers.d.ts +87 -0
  15. package/dist/src/handlers.d.ts.map +1 -0
  16. package/dist/src/handlers.js +1143 -0
  17. package/dist/src/handlers.js.map +1 -0
  18. package/dist/src/index.d.ts +7 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/dist/src/index.js +7 -0
  21. package/dist/src/index.js.map +1 -0
  22. package/dist/src/path-scope.d.ts +2 -0
  23. package/dist/src/path-scope.d.ts.map +1 -0
  24. package/dist/src/path-scope.js +12 -0
  25. package/dist/src/path-scope.js.map +1 -0
  26. package/dist/src/resources.d.ts +74 -0
  27. package/dist/src/resources.d.ts.map +1 -0
  28. package/dist/src/resources.js +92 -0
  29. package/dist/src/resources.js.map +1 -0
  30. package/dist/src/server.d.ts +54 -0
  31. package/dist/src/server.d.ts.map +1 -0
  32. package/dist/src/server.js +291 -0
  33. package/dist/src/server.js.map +1 -0
  34. package/dist/src/state.d.ts +59 -0
  35. package/dist/src/state.d.ts.map +1 -0
  36. package/dist/src/state.js +98 -0
  37. package/dist/src/state.js.map +1 -0
  38. package/dist/src/vault.d.ts +31 -0
  39. package/dist/src/vault.d.ts.map +1 -0
  40. package/dist/src/vault.js +69 -0
  41. package/dist/src/vault.js.map +1 -0
  42. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # @bridgekitux/agent
2
+
3
+ BridgeKit local capability agent and CLI.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install -g @bridgekitux/agent
9
+ ```
10
+
11
+ ## Use
12
+
13
+ ```sh
14
+ bridgekit-agent start --host 127.0.0.1 --port 7777
15
+ ```
16
+
17
+ The agent is the trusted local runtime that enforces approved capabilities for databases, files, HTTP resources, ports, streams, and other BridgeKit resources. It should be configured with scoped resources rather than blanket machine access.
@@ -0,0 +1,18 @@
1
+ export interface AuditEntry {
2
+ timestamp: string;
3
+ action: string;
4
+ outcome: 'allowed' | 'denied' | 'error' | 'info';
5
+ sessionId?: string;
6
+ pairingId?: string;
7
+ capability?: string;
8
+ resourceId?: string;
9
+ origin?: string;
10
+ details?: unknown;
11
+ }
12
+ export declare class AuditLog {
13
+ private readonly filePath;
14
+ constructor(filePath: string);
15
+ write(entry: Omit<AuditEntry, 'timestamp'>): Promise<void>;
16
+ tail(limit?: number): Promise<AuditEntry[]>;
17
+ }
18
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEvC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,IAAI,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAc9C"}
@@ -0,0 +1,30 @@
1
+ import { appendFile, mkdir, readFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ export class AuditLog {
4
+ filePath;
5
+ constructor(filePath) {
6
+ this.filePath = filePath;
7
+ }
8
+ async write(entry) {
9
+ await mkdir(dirname(this.filePath), { recursive: true, mode: 0o700 });
10
+ const line = JSON.stringify({ timestamp: new Date().toISOString(), ...entry });
11
+ await appendFile(this.filePath, `${line}\n`, { mode: 0o600 });
12
+ }
13
+ async tail(limit = 50) {
14
+ try {
15
+ const text = await readFile(this.filePath, 'utf8');
16
+ return text
17
+ .trim()
18
+ .split('\n')
19
+ .filter(Boolean)
20
+ .slice(-limit)
21
+ .map((line) => JSON.parse(line));
22
+ }
23
+ catch (error) {
24
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT')
25
+ return [];
26
+ throw error;
27
+ }
28
+ }
29
+ }
30
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,OAAO,QAAQ;IACU;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjD,KAAK,CAAC,KAAK,CAAC,KAAoC;QAC9C,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,OAAO,IAAI;iBACR,IAAI,EAAE;iBACN,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,OAAO,CAAC;iBACf,KAAK,CAAC,CAAC,KAAK,CAAC;iBACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACpF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env node
2
+ import { readFile } from 'node:fs/promises';
3
+ import { BridgeKitAgent } from './server.js';
4
+ import { createBridgeKitPaths, JsonFileStore } from './config.js';
5
+ import { ResourceRegistry } from './resources.js';
6
+ import { PairingStore } from './state.js';
7
+ import { SessionStore } from './state.js';
8
+ import { AuditLog } from './audit.js';
9
+ function valueAfter(flag, args) {
10
+ const index = args.indexOf(flag);
11
+ return index >= 0 ? args[index + 1] : undefined;
12
+ }
13
+ function hasFlag(flag, args) {
14
+ return args.includes(flag);
15
+ }
16
+ function printHelp() {
17
+ console.log(`BridgeKit CLI
18
+
19
+ Usage:
20
+ bridgekit start [--port 7777] [--host 127.0.0.1] [--auto-approve]
21
+ bridgekit pairings
22
+ bridgekit approve <code-or-id>
23
+ bridgekit deny <code-or-id>
24
+ bridgekit resources list
25
+ bridgekit resources add-file <id> <folder>
26
+ bridgekit resources add-postgres <id> <connection-string>
27
+ bridgekit resources add-mongodb <id> <connection-string> [database]
28
+ bridgekit resources add-mysql <id> <connection-string>
29
+ bridgekit resources add-sqlite <id> <file>
30
+ bridgekit resources add-http <id> <base-url> [METHODS]
31
+ bridgekit resources add-port <id> <port> [host]
32
+ bridgekit resources add-tcp <id> <host> <port> [--tls]
33
+ bridgekit resources add-websocket <id> <ws-url> [protocols]
34
+ bridgekit audit [limit]
35
+ bridgekit sessions
36
+ bridgekit revoke <session-id>
37
+ `);
38
+ }
39
+ function stores(home) {
40
+ const paths = createBridgeKitPaths(home);
41
+ return {
42
+ paths,
43
+ registry: new ResourceRegistry(new JsonFileStore(paths.resources, { resources: [] })),
44
+ pairings: new PairingStore(new JsonFileStore(paths.pairings, { pairings: [] })),
45
+ sessions: new SessionStore(new JsonFileStore(paths.sessions, { sessions: [] })),
46
+ audit: new AuditLog(paths.auditLog)
47
+ };
48
+ }
49
+ async function main() {
50
+ const [, , command, ...args] = process.argv;
51
+ const home = valueAfter('--home', args);
52
+ const store = stores(home);
53
+ switch (command) {
54
+ case 'start': {
55
+ const agent = new BridgeKitAgent({
56
+ home,
57
+ host: valueAfter('--host', args) ?? '127.0.0.1',
58
+ port: Number(valueAfter('--port', args) ?? process.env.BRIDGEKIT_PORT ?? 7777),
59
+ autoApprove: hasFlag('--auto-approve', args)
60
+ });
61
+ await agent.start();
62
+ console.log(`BridgeKit agent listening at ${agent.url}`);
63
+ console.log(`State directory: ${agent.paths.home}`);
64
+ await new Promise(() => undefined);
65
+ return;
66
+ }
67
+ case 'pairings': {
68
+ console.log(JSON.stringify(await store.pairings.list(), null, 2));
69
+ return;
70
+ }
71
+ case 'approve': {
72
+ const id = args[0];
73
+ if (!id)
74
+ throw new Error('approve requires a pairing code or id');
75
+ const pairing = await store.pairings.update(id, (record) => ({ ...record, status: 'approved', decidedAt: new Date().toISOString() }));
76
+ await store.audit.write({ action: 'pair.approve', outcome: 'allowed', pairingId: pairing.id, details: { code: pairing.code } });
77
+ console.log(`Approved pairing ${pairing.code}. The WebContainer app can continue polling.`);
78
+ return;
79
+ }
80
+ case 'deny': {
81
+ const id = args[0];
82
+ if (!id)
83
+ throw new Error('deny requires a pairing code or id');
84
+ const pairing = await store.pairings.update(id, (record) => ({ ...record, status: 'denied', decidedAt: new Date().toISOString() }));
85
+ await store.audit.write({ action: 'pair.deny', outcome: 'denied', pairingId: pairing.id, details: { code: pairing.code } });
86
+ console.log(`Denied pairing ${pairing.code}.`);
87
+ return;
88
+ }
89
+ case 'resources': {
90
+ const subcommand = args[0];
91
+ if (subcommand === 'list') {
92
+ console.log(JSON.stringify(await store.registry.list(), null, 2));
93
+ return;
94
+ }
95
+ const id = args[1];
96
+ if (!id)
97
+ throw new Error('resource id is required');
98
+ let resource;
99
+ switch (subcommand) {
100
+ case 'add-file':
101
+ resource = { kind: 'file', id, rootPath: required(args[2], 'folder') };
102
+ break;
103
+ case 'add-postgres':
104
+ resource = { kind: 'database', id, databaseType: 'postgres', connectionString: required(args[2], 'connection-string') };
105
+ break;
106
+ case 'add-mongodb':
107
+ resource = { kind: 'database', id, databaseType: 'mongodb', connectionString: required(args[2], 'connection-string'), database: args[3] };
108
+ break;
109
+ case 'add-mysql':
110
+ resource = { kind: 'database', id, databaseType: 'mysql', connectionString: required(args[2], 'connection-string') };
111
+ break;
112
+ case 'add-sqlite':
113
+ resource = { kind: 'database', id, databaseType: 'sqlite', filePath: required(args[2], 'file') };
114
+ break;
115
+ case 'add-http':
116
+ resource = { kind: 'http', id, baseUrl: required(args[2], 'base-url'), allowedMethods: args[3]?.split(',').map((method) => method.trim().toUpperCase()) ?? ['GET'] };
117
+ break;
118
+ case 'add-port':
119
+ resource = { kind: 'port', id, port: Number(required(args[2], 'port')), host: args[3] ?? '127.0.0.1' };
120
+ break;
121
+ case 'add-tcp':
122
+ resource = { kind: 'tcp', id, host: required(args[2], 'host'), port: Number(required(args[3], 'port')), tls: hasFlag('--tls', args) };
123
+ break;
124
+ case 'add-websocket':
125
+ resource = { kind: 'websocket', id, url: required(args[2], 'ws-url'), protocols: args[3]?.split(',').map((protocol) => protocol.trim()).filter(Boolean) };
126
+ break;
127
+ default:
128
+ printHelp();
129
+ return;
130
+ }
131
+ await store.registry.upsert(resource);
132
+ console.log(`Saved resource ${id}`);
133
+ return;
134
+ }
135
+ case 'audit': {
136
+ console.log(JSON.stringify(await store.audit.tail(Number(args[0] ?? 50)), null, 2));
137
+ return;
138
+ }
139
+ case 'sessions': {
140
+ console.log(JSON.stringify(await store.sessions.list(), null, 2));
141
+ return;
142
+ }
143
+ case 'revoke': {
144
+ const id = args[0];
145
+ if (!id)
146
+ throw new Error('revoke requires a session id');
147
+ await store.sessions.revoke(id);
148
+ await store.audit.write({ action: 'session.revoke', outcome: 'allowed', sessionId: id });
149
+ console.log(`Revoked session ${id}`);
150
+ return;
151
+ }
152
+ case 'load-resources': {
153
+ const file = required(args[0], 'file');
154
+ const parsed = JSON.parse(await readFile(file, 'utf8'));
155
+ for (const resource of parsed.resources)
156
+ await store.registry.upsert(resource);
157
+ console.log(`Loaded ${parsed.resources.length} resources`);
158
+ return;
159
+ }
160
+ default:
161
+ printHelp();
162
+ }
163
+ }
164
+ function required(value, name) {
165
+ if (!value)
166
+ throw new Error(`${name} is required`);
167
+ return value;
168
+ }
169
+ main().catch((error) => {
170
+ console.error(error instanceof Error ? error.message : error);
171
+ process.exitCode = 1;
172
+ });
173
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface BridgeKitPaths {
2
+ home: string;
3
+ resources: string;
4
+ pairings: string;
5
+ sessions: string;
6
+ auditLog: string;
7
+ vault: string;
8
+ vaultKey: string;
9
+ }
10
+ export declare function bridgeKitHome(): string;
11
+ export declare function createBridgeKitPaths(home?: string): BridgeKitPaths;
12
+ export declare function ensureBridgeKitHome(paths: BridgeKitPaths): Promise<void>;
13
+ export declare class JsonFileStore<TValue> {
14
+ private readonly filePath;
15
+ private readonly fallback;
16
+ private queue;
17
+ constructor(filePath: string, fallback: TValue);
18
+ read(): Promise<TValue>;
19
+ write(value: TValue): Promise<void>;
20
+ update(mutator: (value: TValue) => TValue | void): Promise<TValue>;
21
+ private writeNow;
22
+ private enqueue;
23
+ }
24
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,SAAkB,GAAG,cAAc,CAU3E;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED,qBAAa,aAAa,CAAC,MAAM;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFxE,OAAO,CAAC,KAAK,CAAoC;gBAEpB,QAAQ,EAAE,MAAM,EAAmB,QAAQ,EAAE,MAAM;IAE1E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAUvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAS1D,QAAQ;YAOR,OAAO;CAKtB"}
@@ -0,0 +1,66 @@
1
+ import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
2
+ import { dirname, join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { randomUUID } from 'node:crypto';
5
+ export function bridgeKitHome() {
6
+ return process.env.BRIDGEKIT_HOME && process.env.BRIDGEKIT_HOME.trim().length > 0
7
+ ? process.env.BRIDGEKIT_HOME
8
+ : join(homedir(), '.bridgekit');
9
+ }
10
+ export function createBridgeKitPaths(home = bridgeKitHome()) {
11
+ return {
12
+ home,
13
+ resources: join(home, 'resources.json'),
14
+ pairings: join(home, 'pairings.json'),
15
+ sessions: join(home, 'sessions.json'),
16
+ auditLog: join(home, 'audit.jsonl'),
17
+ vault: join(home, 'vault.json'),
18
+ vaultKey: join(home, 'vault.key')
19
+ };
20
+ }
21
+ export async function ensureBridgeKitHome(paths) {
22
+ await mkdir(paths.home, { recursive: true, mode: 0o700 });
23
+ }
24
+ export class JsonFileStore {
25
+ filePath;
26
+ fallback;
27
+ queue = Promise.resolve();
28
+ constructor(filePath, fallback) {
29
+ this.filePath = filePath;
30
+ this.fallback = fallback;
31
+ }
32
+ async read() {
33
+ try {
34
+ const text = await readFile(this.filePath, 'utf8');
35
+ return JSON.parse(text);
36
+ }
37
+ catch (error) {
38
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT')
39
+ return structuredClone(this.fallback);
40
+ throw error;
41
+ }
42
+ }
43
+ async write(value) {
44
+ await this.enqueue(() => this.writeNow(value));
45
+ }
46
+ async update(mutator) {
47
+ return this.enqueue(async () => {
48
+ const value = await this.read();
49
+ const next = mutator(value) ?? value;
50
+ await this.writeNow(next);
51
+ return next;
52
+ });
53
+ }
54
+ async writeNow(value) {
55
+ await mkdir(dirname(this.filePath), { recursive: true, mode: 0o700 });
56
+ const temp = `${this.filePath}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
57
+ await writeFile(temp, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
58
+ await rename(temp, this.filePath);
59
+ }
60
+ async enqueue(task) {
61
+ const run = this.queue.then(task, task);
62
+ this.queue = run.then(() => undefined, () => undefined);
63
+ return run;
64
+ }
65
+ }
66
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { type Server } from 'node:http';
2
+ import type { BridgeKitEventPayload, InvokePayload, StreamSendPayload, StreamSendResultPayload, SubscribePayload } from '@bridgekitux/protocol';
3
+ import type { AuditLog } from './audit.js';
4
+ import type { ProcessResource } from './resources.js';
5
+ import { ResourceRegistry } from './resources.js';
6
+ import type { SecretVault } from './vault.js';
7
+ export interface HandlerContext {
8
+ registry: ResourceRegistry;
9
+ vault: SecretVault;
10
+ audit: AuditLog;
11
+ agentHost: string;
12
+ agentPort: number;
13
+ processManager: ProcessManager;
14
+ }
15
+ export interface QueryArgs {
16
+ sql?: string;
17
+ text?: string;
18
+ params?: unknown[];
19
+ values?: unknown[];
20
+ collection?: string;
21
+ action?: string;
22
+ filter?: Record<string, unknown>;
23
+ document?: Record<string, unknown>;
24
+ documents?: Array<Record<string, unknown>>;
25
+ update?: Record<string, unknown>;
26
+ replacement?: Record<string, unknown>;
27
+ pipeline?: Array<Record<string, unknown>>;
28
+ key?: string;
29
+ options?: Record<string, unknown>;
30
+ }
31
+ export interface TcpConnectArgs {
32
+ data?: string;
33
+ encoding?: BufferEncoding;
34
+ timeoutMs?: number;
35
+ end?: boolean;
36
+ readUntilClose?: boolean;
37
+ }
38
+ export interface TcpStreamArgs extends TcpConnectArgs {
39
+ idleTimeoutMs?: number;
40
+ noDelay?: boolean;
41
+ keepAlive?: boolean;
42
+ }
43
+ export interface WebSocketConnectArgs {
44
+ path?: string;
45
+ protocols?: string[];
46
+ headers?: Record<string, string>;
47
+ data?: string;
48
+ json?: unknown;
49
+ binaryBase64?: string;
50
+ timeoutMs?: number;
51
+ }
52
+ export type SubscriptionEmit = (event: Omit<BridgeKitEventPayload, 'subscriptionId' | 'sequence'>) => void;
53
+ export interface SubscriptionControl {
54
+ close(): void;
55
+ send?(payload: StreamSendPayload): Promise<Omit<StreamSendResultPayload, 'subscriptionId'>>;
56
+ }
57
+ export declare function operationForInvoke(payload: InvokePayload): string | undefined;
58
+ export declare function invokeCapability(ctx: HandlerContext, payload: InvokePayload): Promise<unknown>;
59
+ export declare function subscribeCapability(ctx: HandlerContext, payload: SubscribePayload, emit: SubscriptionEmit): Promise<SubscriptionControl>;
60
+ export declare function createAgentHttpServer(ctxFactory: () => HandlerContext): Promise<Server>;
61
+ export declare class ProcessManager {
62
+ private readonly processes;
63
+ private readonly logs;
64
+ private readonly subscribers;
65
+ start(id: string, resource: ProcessResource, extraArgs?: string[]): {
66
+ processId: number | undefined;
67
+ resourceId: string;
68
+ };
69
+ stop(id: string): {
70
+ stopped: boolean;
71
+ };
72
+ status(id: string): {
73
+ running: boolean;
74
+ processId?: number;
75
+ };
76
+ getLogs(id: string): {
77
+ lines: string[];
78
+ };
79
+ subscribe(id: string, listener: (event: {
80
+ stream: 'stdout' | 'stderr' | 'system';
81
+ text: string;
82
+ lines: string[];
83
+ timestamp: string;
84
+ }) => void, replay?: boolean): () => void;
85
+ private capture;
86
+ }
87
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/handlers.ts"],"names":[],"mappings":"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"}