@luckydraw/cumulus 0.31.37 → 0.31.39

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 (46) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/gateway/adapters/webchat.d.ts +3 -0
  3. package/dist/gateway/adapters/webchat.d.ts.map +1 -1
  4. package/dist/gateway/adapters/webchat.js +27 -9
  5. package/dist/gateway/adapters/webchat.js.map +1 -1
  6. package/dist/gateway/auth.d.ts +7 -0
  7. package/dist/gateway/auth.d.ts.map +1 -1
  8. package/dist/gateway/auth.js +4 -2
  9. package/dist/gateway/auth.js.map +1 -1
  10. package/dist/gateway/bridge/client.d.ts +65 -0
  11. package/dist/gateway/bridge/client.d.ts.map +1 -0
  12. package/dist/gateway/bridge/client.js +138 -0
  13. package/dist/gateway/bridge/client.js.map +1 -0
  14. package/dist/gateway/bridge/gateway.d.ts +51 -0
  15. package/dist/gateway/bridge/gateway.d.ts.map +1 -0
  16. package/dist/gateway/bridge/gateway.js +190 -0
  17. package/dist/gateway/bridge/gateway.js.map +1 -0
  18. package/dist/gateway/bridge/protocol.d.ts +25 -0
  19. package/dist/gateway/bridge/protocol.d.ts.map +1 -0
  20. package/dist/gateway/bridge/protocol.js +40 -0
  21. package/dist/gateway/bridge/protocol.js.map +1 -0
  22. package/dist/gateway/config.d.ts +56 -0
  23. package/dist/gateway/config.d.ts.map +1 -1
  24. package/dist/gateway/config.js +111 -0
  25. package/dist/gateway/config.js.map +1 -1
  26. package/dist/gateway/daemon.js +3 -0
  27. package/dist/gateway/daemon.js.map +1 -1
  28. package/dist/gateway/gateway-agents-mcp.js +3 -1
  29. package/dist/gateway/gateway-agents-mcp.js.map +1 -1
  30. package/dist/gateway/hooks.d.ts +4 -2
  31. package/dist/gateway/hooks.d.ts.map +1 -1
  32. package/dist/gateway/hooks.js +3 -2
  33. package/dist/gateway/hooks.js.map +1 -1
  34. package/dist/gateway/namespaces.d.ts +82 -0
  35. package/dist/gateway/namespaces.d.ts.map +1 -0
  36. package/dist/gateway/namespaces.js +122 -0
  37. package/dist/gateway/namespaces.js.map +1 -0
  38. package/dist/gateway/server.d.ts +6 -4
  39. package/dist/gateway/server.d.ts.map +1 -1
  40. package/dist/gateway/server.js +214 -15
  41. package/dist/gateway/server.js.map +1 -1
  42. package/dist/lib/gateway.d.ts +14 -0
  43. package/dist/lib/gateway.d.ts.map +1 -1
  44. package/dist/lib/gateway.js +35 -2
  45. package/dist/lib/gateway.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ import type { Server } from 'http';
2
+ import { type BridgeResult } from './protocol.js';
3
+ export interface BridgeContextFrame {
4
+ describeView?: unknown;
5
+ selection?: unknown;
6
+ }
7
+ export interface BridgeGatewayOptions {
8
+ /** Authorize a tab registration. Return false to reject the socket. */
9
+ authenticate: (apiKey: string, thread: string) => boolean | Promise<boolean>;
10
+ callTimeoutMs?: number;
11
+ confirmTimeoutMs?: number;
12
+ /** Invoked with piggybacked describeView/selection context from the tab. */
13
+ onContext?: (thread: string, context: BridgeContextFrame) => void;
14
+ onTabChange?: (thread: string, event: 'connect' | 'disconnect') => void;
15
+ }
16
+ export declare class BridgeGateway {
17
+ private readonly authenticate;
18
+ private readonly callTimeoutMs;
19
+ private readonly confirmTimeoutMs;
20
+ private readonly onContext?;
21
+ private readonly onTabChange?;
22
+ private readonly tabs;
23
+ private nextId;
24
+ private readonly wss;
25
+ constructor(opts: BridgeGatewayOptions);
26
+ /**
27
+ * Claim WS upgrades for `path` on an existing http.Server. Leaves upgrades
28
+ * for other paths untouched (cumulus federation pattern).
29
+ */
30
+ attach(server: Server, path?: string): this;
31
+ /** Manifest of the currently connected tab for a thread, or null. */
32
+ manifest(thread: string): unknown;
33
+ hasTab(thread: string): boolean;
34
+ /**
35
+ * Dispatch a command to the thread's tab. Resolves with the tab's
36
+ * { ok, summary, data?, affected? } result, a timeout result, or the
37
+ * graceful no-session result — never rejects.
38
+ */
39
+ call(thread: string, command: string, params?: object): Promise<BridgeResult>;
40
+ /**
41
+ * Export-tier dispatch: sends a confirm-request and executes only after the
42
+ * tab reports the user accepted. Declined or timed-out confirms resolve to an
43
+ * ok:false result. Never rejects.
44
+ */
45
+ callWithConfirm(thread: string, command: string, params?: object, summary?: string): Promise<BridgeResult>;
46
+ close(): void;
47
+ private awaitResult;
48
+ private onConnection;
49
+ private dropTab;
50
+ }
51
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/gateway/bridge/gateway.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAcvB,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,KAAK,IAAI,CAAC;CACzE;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;gBAE1B,IAAI,EAAE,oBAAoB;IAUtC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAY,GAAG,IAAI;IAW9C,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIjC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI/B;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IASjF;;;;OAIG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAW,EACnB,OAAO,SAAK,GACX,OAAO,CAAC,YAAY,CAAC;IASxB,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,YAAY;IAmFpB,OAAO,CAAC,OAAO;CAQhB"}
@@ -0,0 +1,190 @@
1
+ // Gateway side of the agent bridge: accepts tab registrations over WebSocket,
2
+ // routes tool calls to the registered tab, enforces the confirm protocol for
3
+ // export-tier commands. App-agnostic — knows about "a manifest" and "a thread",
4
+ // nothing else.
5
+ //
6
+ // Attachment: designed for cumulus's federation-style mount — pass the
7
+ // gateway's http.Server and a path, and BridgeGateway claims WS upgrades on
8
+ // that path, leaving upgrades for other paths (federation, webchat) untouched.
9
+ //
10
+ // Vendored from @soapko/agent-bridge@0.1.0 (task 097).
11
+ import { WebSocketServer, WebSocket } from 'ws';
12
+ import { MSG, DEFAULT_CALL_TIMEOUT_MS, DEFAULT_CONFIRM_TIMEOUT_MS, NO_SESSION_RESULT, timeoutResult, } from './protocol.js';
13
+ export class BridgeGateway {
14
+ authenticate;
15
+ callTimeoutMs;
16
+ confirmTimeoutMs;
17
+ onContext;
18
+ onTabChange;
19
+ tabs = new Map();
20
+ nextId = 1;
21
+ wss;
22
+ constructor(opts) {
23
+ this.authenticate = opts.authenticate;
24
+ this.callTimeoutMs = opts.callTimeoutMs ?? DEFAULT_CALL_TIMEOUT_MS;
25
+ this.confirmTimeoutMs = opts.confirmTimeoutMs ?? DEFAULT_CONFIRM_TIMEOUT_MS;
26
+ this.onContext = opts.onContext;
27
+ this.onTabChange = opts.onTabChange;
28
+ this.wss = new WebSocketServer({ noServer: true });
29
+ this.wss.on('connection', (ws) => this.onConnection(ws));
30
+ }
31
+ /**
32
+ * Claim WS upgrades for `path` on an existing http.Server. Leaves upgrades
33
+ * for other paths untouched (cumulus federation pattern).
34
+ */
35
+ attach(server, path = '/bridge') {
36
+ server.on('upgrade', (req, socket, head) => {
37
+ const url = new URL(req.url ?? '', 'http://localhost');
38
+ if (url.pathname !== path)
39
+ return;
40
+ this.wss.handleUpgrade(req, socket, head, ws => {
41
+ this.wss.emit('connection', ws, req);
42
+ });
43
+ });
44
+ return this;
45
+ }
46
+ /** Manifest of the currently connected tab for a thread, or null. */
47
+ manifest(thread) {
48
+ return this.tabs.get(thread)?.manifest ?? null;
49
+ }
50
+ hasTab(thread) {
51
+ return this.tabs.has(thread);
52
+ }
53
+ /**
54
+ * Dispatch a command to the thread's tab. Resolves with the tab's
55
+ * { ok, summary, data?, affected? } result, a timeout result, or the
56
+ * graceful no-session result — never rejects.
57
+ */
58
+ call(thread, command, params = {}) {
59
+ const tab = this.tabs.get(thread);
60
+ if (!tab)
61
+ return Promise.resolve({ ...NO_SESSION_RESULT });
62
+ const id = String(this.nextId++);
63
+ return this.awaitResult(tab, id, command, this.callTimeoutMs, () => send(tab.ws, { type: MSG.CALL, id, command, params }));
64
+ }
65
+ /**
66
+ * Export-tier dispatch: sends a confirm-request and executes only after the
67
+ * tab reports the user accepted. Declined or timed-out confirms resolve to an
68
+ * ok:false result. Never rejects.
69
+ */
70
+ callWithConfirm(thread, command, params = {}, summary = '') {
71
+ const tab = this.tabs.get(thread);
72
+ if (!tab)
73
+ return Promise.resolve({ ...NO_SESSION_RESULT });
74
+ const id = String(this.nextId++);
75
+ return this.awaitResult(tab, id, command, this.confirmTimeoutMs, () => send(tab.ws, { type: MSG.CONFIRM_REQUEST, id, command, params, summary }));
76
+ }
77
+ close() {
78
+ for (const tab of this.tabs.values())
79
+ this.dropTab(tab);
80
+ this.tabs.clear();
81
+ this.wss.close();
82
+ }
83
+ awaitResult(tab, id, command, timeoutMs, fire) {
84
+ return new Promise(resolve => {
85
+ const timer = setTimeout(() => {
86
+ tab.pending.delete(id);
87
+ resolve(timeoutResult(command, timeoutMs));
88
+ }, timeoutMs);
89
+ tab.pending.set(id, { resolve, timer, command });
90
+ fire();
91
+ });
92
+ }
93
+ onConnection(ws) {
94
+ let thread = null;
95
+ ws.on('message', async (raw) => {
96
+ let msg;
97
+ try {
98
+ msg = JSON.parse(String(raw));
99
+ }
100
+ catch {
101
+ send(ws, { type: MSG.ERROR, summary: 'Malformed JSON' });
102
+ return;
103
+ }
104
+ if (msg.type === MSG.REGISTER) {
105
+ const apiKey = String(msg.apiKey ?? '');
106
+ const registerThread = typeof msg.thread === 'string' ? msg.thread : '';
107
+ const ok = await this.authenticate(apiKey, registerThread);
108
+ if (!ok || !registerThread || !msg.manifest) {
109
+ send(ws, { type: MSG.ERROR, summary: 'Registration rejected' });
110
+ ws.close(4001, 'unauthorized');
111
+ return;
112
+ }
113
+ thread = registerThread;
114
+ const prev = this.tabs.get(thread);
115
+ if (prev)
116
+ this.dropTab(prev); // one tab per thread — last-connect wins
117
+ this.tabs.set(thread, { ws, manifest: msg.manifest, pending: new Map() });
118
+ send(ws, { type: MSG.REGISTERED, thread });
119
+ this.onTabChange?.(thread, 'connect');
120
+ return;
121
+ }
122
+ const tab = thread ? this.tabs.get(thread) : undefined;
123
+ if (!tab || tab.ws !== ws)
124
+ return;
125
+ switch (msg.type) {
126
+ case MSG.RESULT: {
127
+ const pending = tab.pending.get(String(msg.id));
128
+ if (!pending)
129
+ return;
130
+ clearTimeout(pending.timer);
131
+ tab.pending.delete(String(msg.id));
132
+ const { ok, summary, data, affected } = msg;
133
+ pending.resolve({
134
+ ok: Boolean(ok),
135
+ summary: String(summary ?? ''),
136
+ ...(data !== undefined && { data }),
137
+ ...(affected !== undefined && { affected }),
138
+ });
139
+ return;
140
+ }
141
+ case MSG.CONFIRM_DECLINE: {
142
+ const pending = tab.pending.get(String(msg.id));
143
+ if (!pending)
144
+ return;
145
+ clearTimeout(pending.timer);
146
+ tab.pending.delete(String(msg.id));
147
+ pending.resolve({ ok: false, summary: `User declined ${pending.command}` });
148
+ return;
149
+ }
150
+ // confirm-accept carries no result itself — the tab executes the
151
+ // command on accept and replies with a normal result message, so
152
+ // nothing to do here. Kept as an explicit case for protocol clarity.
153
+ case MSG.CONFIRM_ACCEPT:
154
+ return;
155
+ case MSG.CONTEXT:
156
+ this.onContext?.(thread, {
157
+ describeView: msg.describeView,
158
+ selection: msg.selection,
159
+ });
160
+ return;
161
+ default:
162
+ return;
163
+ }
164
+ });
165
+ ws.on('close', () => {
166
+ if (!thread)
167
+ return;
168
+ const tab = this.tabs.get(thread);
169
+ if (tab?.ws === ws) {
170
+ this.dropTab(tab);
171
+ this.tabs.delete(thread);
172
+ this.onTabChange?.(thread, 'disconnect');
173
+ }
174
+ });
175
+ }
176
+ dropTab(tab) {
177
+ for (const { resolve, timer, command } of tab.pending.values()) {
178
+ clearTimeout(timer);
179
+ resolve({ ok: false, summary: `App session dropped during ${command}` });
180
+ }
181
+ tab.pending.clear();
182
+ if (tab.ws.readyState === WebSocket.OPEN)
183
+ tab.ws.close(4000, 'replaced');
184
+ }
185
+ }
186
+ function send(ws, msg) {
187
+ if (ws.readyState === WebSocket.OPEN)
188
+ ws.send(JSON.stringify(msg));
189
+ }
190
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/gateway/bridge/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare const MSG: {
2
+ readonly REGISTER: "register";
3
+ readonly REGISTERED: "registered";
4
+ readonly CALL: "call";
5
+ readonly RESULT: "result";
6
+ readonly CONFIRM_REQUEST: "confirm-request";
7
+ readonly CONFIRM_ACCEPT: "confirm-accept";
8
+ readonly CONFIRM_DECLINE: "confirm-decline";
9
+ readonly CONTEXT: "context";
10
+ readonly ERROR: "error";
11
+ };
12
+ /** Risk tiers a manifest entry may declare. 'export' always routes through confirm. */
13
+ export declare const RISK_TIERS: readonly ["read", "display", "mutate", "export"];
14
+ export declare const DEFAULT_CALL_TIMEOUT_MS = 10000;
15
+ export declare const DEFAULT_CONFIRM_TIMEOUT_MS = 120000;
16
+ /** Result of a bridge command dispatched to the tab's registry. */
17
+ export interface BridgeResult {
18
+ ok: boolean;
19
+ summary: string;
20
+ data?: unknown;
21
+ affected?: unknown;
22
+ }
23
+ export declare const NO_SESSION_RESULT: BridgeResult;
24
+ export declare function timeoutResult(command: string, ms: number): BridgeResult;
25
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/gateway/bridge/protocol.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,GAAG;;;;;;;;;;CAUN,CAAC;AAEX,uFAAuF;AACvF,eAAO,MAAM,UAAU,kDAAmD,CAAC;AAE3E,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAElD,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,YAG9B,CAAC;AAEH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAKvE"}
@@ -0,0 +1,40 @@
1
+ // Wire protocol for the agent bridge — gateway <-> live browser tab.
2
+ //
3
+ // Vendored from @soapko/agent-bridge@0.1.0 (kevin's Pursuit POC) into mainline
4
+ // cumulus (task 097): the upstream package was an unpublished `file:` dep, so
5
+ // its three source files live here as TypeScript. These shapes are the frozen
6
+ // seam contract — changes must be mirrored to the front-end team.
7
+ //
8
+ // Message flow:
9
+ // Tab -> gateway register { thread, apiKey, manifest }
10
+ // gateway -> tab call { id, command, params }
11
+ // Tab -> gateway result { id, ok, summary, data?, affected? }
12
+ // gateway -> tab confirm-request { id, command, params, summary } (export-tier; never auto-run)
13
+ // Tab -> gateway confirm-accept { id } or confirm-decline { id }
14
+ // Tab -> gateway context { describeView, selection? } (piggybacked on chat turns)
15
+ export const MSG = {
16
+ REGISTER: 'register',
17
+ REGISTERED: 'registered',
18
+ CALL: 'call',
19
+ RESULT: 'result',
20
+ CONFIRM_REQUEST: 'confirm-request',
21
+ CONFIRM_ACCEPT: 'confirm-accept',
22
+ CONFIRM_DECLINE: 'confirm-decline',
23
+ CONTEXT: 'context',
24
+ ERROR: 'error',
25
+ };
26
+ /** Risk tiers a manifest entry may declare. 'export' always routes through confirm. */
27
+ export const RISK_TIERS = ['read', 'display', 'mutate', 'export'];
28
+ export const DEFAULT_CALL_TIMEOUT_MS = 10_000;
29
+ export const DEFAULT_CONFIRM_TIMEOUT_MS = 120_000;
30
+ export const NO_SESSION_RESULT = Object.freeze({
31
+ ok: false,
32
+ summary: 'No active app session',
33
+ });
34
+ export function timeoutResult(command, ms) {
35
+ return {
36
+ ok: false,
37
+ summary: `Command ${command} timed out after ${ms / 1000}s in the app session`,
38
+ };
39
+ }
40
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/gateway/bridge/protocol.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,gBAAgB;AAChB,4DAA4D;AAC5D,uDAAuD;AACvD,qEAAqE;AACrE,sGAAsG;AACtG,0EAA0E;AAC1E,0FAA0F;AAE1F,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACN,CAAC;AAEX,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAUlD,MAAM,CAAC,MAAM,iBAAiB,GAAiB,MAAM,CAAC,MAAM,CAAC;IAC3D,EAAE,EAAE,KAAK;IACT,OAAO,EAAE,uBAAuB;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,EAAU;IACvD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,WAAW,OAAO,oBAAoB,EAAE,GAAG,IAAI,sBAAsB;KAC/E,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Gateway server configuration — loads and validates gateway.config.json.
3
3
  */
4
+ import type { McpServerEntry } from '../lib/gateway.js';
4
5
  export interface SlackChannelConfig {
5
6
  enabled: boolean;
6
7
  botToken: string;
@@ -97,6 +98,61 @@ export interface GatewayConfig {
97
98
  baseUrl?: string;
98
99
  /** Optional: federation config for hub-and-spoke cross-gateway messaging */
99
100
  federation?: FederationConfig;
101
+ /** Optional: agent-native app bridge — mounts /bridge WS routing to live browser tabs (task 097) */
102
+ bridge?: BridgeConfig;
103
+ /** Optional: thread namespaces — prefix-scoped visibility for app/test threads (task 097 P2) */
104
+ namespaces?: NamespaceConfig[];
105
+ }
106
+ /**
107
+ * Thread namespace (task 097 P2). A namespace name is a thread-name prefix:
108
+ * namespace `pursuit` covers every `pursuit-*` thread but NOT bare `pursuit`,
109
+ * which stays the owner's own work thread. Namespaced threads are hidden from the
110
+ * default thread list; a request bearing one of the namespace's `apiKeys` sees only
111
+ * that namespace's threads. Visibility only — not a hard access boundary
112
+ * (inject/history by exact name still works).
113
+ */
114
+ export interface NamespaceConfig {
115
+ /** Namespace name = thread-name prefix (e.g. "pursuit"). */
116
+ name: string;
117
+ /** API keys scoped to this namespace. A request bearing one sees only these threads. */
118
+ apiKeys?: string[];
119
+ /** Optional display label for the folder UI (visibility-first; folders are a fast-follow). */
120
+ label?: string;
121
+ /**
122
+ * Optional generic executor pass-through (task 097 P3). Reverse-proxies the
123
+ * listed path prefixes to `origin`, so the app tab talks to a single origin.
124
+ * Replaces the fork's baked-in /state + /journal routes (Rule #8). Presence
125
+ * alone activates the proxy — independent of bridge.enabled.
126
+ */
127
+ executorProxy?: NamespaceExecutorProxy;
128
+ /**
129
+ * Optional extra MCP servers included in agent turns on this namespace's
130
+ * threads (name -> {command, args, env}), alongside cumulus-history and
131
+ * gateway-agents (task 097 P5). String values in `args` and `env` may carry a
132
+ * `{thread}` placeholder, resolved to the calling thread's name. Scoped like
133
+ * `executorProxy`: only `${name}-*` threads get these servers, so one app's
134
+ * tools never leak into unrelated threads.
135
+ */
136
+ extraMcpServers?: Record<string, McpServerEntry>;
137
+ }
138
+ /** Generic executor reverse-proxy for a namespace (task 097 P3). */
139
+ export interface NamespaceExecutorProxy {
140
+ /** Upstream origin the prefixes forward to, e.g. "http://127.0.0.1:8097". */
141
+ origin: string;
142
+ /** Path prefixes forwarded verbatim (matched exact or as `${prefix}/…`), e.g. ["/state", "/journal"]. */
143
+ pathPrefixes: string[];
144
+ }
145
+ /** Agent-native app bridge (gateway <-> live browser tab). Default off. */
146
+ export interface BridgeConfig {
147
+ /** When true, mounts the /bridge WS + /bridge/call + /bridge/manifest routes. */
148
+ enabled: boolean;
149
+ /**
150
+ * Base URL of the app's headless executor. Used to hydrate selection refs in
151
+ * the CONTEXT injection block (soft-fails if unreachable). Default
152
+ * http://127.0.0.1:8091. The /state+/journal proxy is a separate concern
153
+ * (task 097 P3) and is not mounted here.
154
+ */
155
+ executorUrl?: string;
100
156
  }
101
157
  /** Model entry for per-thread selection */
102
158
  export interface ModelEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC,wDAAwD;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iHAAiH;IACjH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,oGAAoG;IACpG,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gGAAgG;IAChG,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAClD;AAED,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,EAAE,YAAY,GAAG,aAAa,CAAC;IACvC,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAenF;AAsXD,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -59,6 +59,117 @@ function validateConfig(raw) {
59
59
  claudeModels: validateClaudeModels(raw.claudeModels),
60
60
  model: typeof raw.model === 'string' && raw.model ? raw.model : undefined,
61
61
  federation: validateFederation(raw.federation),
62
+ bridge: validateBridge(raw.bridge),
63
+ namespaces: validateNamespaces(raw.namespaces),
64
+ };
65
+ }
66
+ /**
67
+ * A namespace's extra MCP servers, included in agent turns on its `${ns}-*`
68
+ * threads (task 097 P5). `command` is required; `args`/`env` default to empty and
69
+ * drop non-string members rather than throwing, since a malformed entry there
70
+ * would otherwise take the whole gateway down at boot. Returns undefined when
71
+ * nothing valid was configured, so the option stays absent rather than an empty
72
+ * object.
73
+ */
74
+ function validateExtraMcpServers(raw, namespace) {
75
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
76
+ return undefined;
77
+ const out = {};
78
+ for (const [name, entry] of Object.entries(raw)) {
79
+ if (!entry || typeof entry !== 'object')
80
+ continue;
81
+ const e = entry;
82
+ if (typeof e.command !== 'string' || !e.command) {
83
+ throw new Error(`gateway.config.json: namespace "${namespace}" extraMcpServers.${name}.command is required`);
84
+ }
85
+ out[name] = {
86
+ command: e.command,
87
+ args: Array.isArray(e.args) ? e.args.filter((a) => typeof a === 'string') : [],
88
+ env: e.env && typeof e.env === 'object'
89
+ ? Object.fromEntries(Object.entries(e.env).filter(([, v]) => typeof v === 'string'))
90
+ : {},
91
+ };
92
+ }
93
+ return Object.keys(out).length > 0 ? out : undefined;
94
+ }
95
+ function validateNamespaces(raw) {
96
+ if (!raw || !Array.isArray(raw))
97
+ return undefined;
98
+ const result = [];
99
+ // Track each proxied path prefix → owning namespace, so two namespaces can't
100
+ // claim the same prefix (a route path would then be ambiguous).
101
+ const prefixOwner = new Map();
102
+ for (const entry of raw) {
103
+ if (!entry || typeof entry !== 'object')
104
+ continue;
105
+ const e = entry;
106
+ const name = typeof e.name === 'string' ? e.name.trim() : '';
107
+ if (!name) {
108
+ throw new Error('gateway.config.json: each namespace requires a non-empty "name"');
109
+ }
110
+ const apiKeys = Array.isArray(e.apiKeys)
111
+ ? e.apiKeys.filter((k) => typeof k === 'string' && k.length >= 8)
112
+ : undefined;
113
+ result.push({
114
+ name,
115
+ apiKeys: apiKeys && apiKeys.length > 0 ? apiKeys : undefined,
116
+ label: typeof e.label === 'string' && e.label ? e.label : undefined,
117
+ executorProxy: validateExecutorProxy(e.executorProxy, name, prefixOwner),
118
+ extraMcpServers: validateExtraMcpServers(e.extraMcpServers, name),
119
+ });
120
+ }
121
+ return result.length > 0 ? result : undefined;
122
+ }
123
+ /**
124
+ * Parse a namespace's executorProxy (task 097 P3). Requires a non-empty origin
125
+ * and at least one path prefix; each prefix is normalized to a leading `/` with
126
+ * no trailing slash, and checked against `prefixOwner` so no two namespaces
127
+ * claim the same prefix.
128
+ */
129
+ function validateExecutorProxy(raw, namespace, prefixOwner) {
130
+ if (raw === undefined || raw === null)
131
+ return undefined;
132
+ if (typeof raw !== 'object') {
133
+ throw new Error(`gateway.config.json: namespace "${namespace}" executorProxy must be an object`);
134
+ }
135
+ const r = raw;
136
+ const origin = typeof r.origin === 'string' ? r.origin.trim() : '';
137
+ if (!origin) {
138
+ throw new Error(`gateway.config.json: namespace "${namespace}" executorProxy requires a non-empty "origin"`);
139
+ }
140
+ const rawPrefixes = Array.isArray(r.pathPrefixes) ? r.pathPrefixes : [];
141
+ const pathPrefixes = [];
142
+ for (const p of rawPrefixes) {
143
+ if (typeof p !== 'string' || !p.trim())
144
+ continue;
145
+ let prefix = p.trim();
146
+ if (!prefix.startsWith('/'))
147
+ prefix = '/' + prefix;
148
+ // Drop a trailing slash so "/state" and "/state/" normalize identically.
149
+ if (prefix.length > 1 && prefix.endsWith('/'))
150
+ prefix = prefix.slice(0, -1);
151
+ if (pathPrefixes.includes(prefix))
152
+ continue;
153
+ const owner = prefixOwner.get(prefix);
154
+ if (owner && owner !== namespace) {
155
+ throw new Error(`gateway.config.json: executorProxy path prefix "${prefix}" is claimed by both ` +
156
+ `namespace "${owner}" and "${namespace}" — prefixes must be unique across namespaces`);
157
+ }
158
+ prefixOwner.set(prefix, namespace);
159
+ pathPrefixes.push(prefix);
160
+ }
161
+ if (pathPrefixes.length === 0) {
162
+ throw new Error(`gateway.config.json: namespace "${namespace}" executorProxy requires at least one path prefix`);
163
+ }
164
+ return { origin, pathPrefixes };
165
+ }
166
+ function validateBridge(raw) {
167
+ if (!raw || typeof raw !== 'object')
168
+ return undefined;
169
+ const r = raw;
170
+ return {
171
+ enabled: r.enabled === true,
172
+ executorUrl: typeof r.executorUrl === 'string' && r.executorUrl ? r.executorUrl : undefined,
62
173
  };
63
174
  }
64
175
  function validateResend(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACnF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAgIlE,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAmB;IACzD,MAAM,aAAa,GAAG,UAAU,IAAI,WAAW,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,aAAa,GAAkB;YACnC,OAAO,EAAE,CAAC,cAAc,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACpE,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAmB;QAC5B,IAAI;QACJ,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3E,aAAa,EAAE,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QACpF,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClE,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAClE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxC,WAAW,EACT,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACtF,WAAW,EAAE,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC9D,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAClC,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACrF,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAClC,YAAY,EAAE,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC;QACpD,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACzE,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC9D,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,GAAG;SACP,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAE,aAAuB,CAAC,CAAC,CAAE,YAAsB;QAC3F,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC9C,aAAa,EAAE,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,GAAG;SACP,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAC/C,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEtD,MAAM,QAAQ,GAAG,GAA8B,CAAC;IAChD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,IAAI,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAgC,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,GAAG;gBACb,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAkC,CAAC;QAC5D,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YACD,MAAM,CAAC,OAAO,GAAG;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1F,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAgC,CAAC;QACjD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YACD,MAAM,CAAC,KAAK,GAAG;gBACb,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBACxF,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,eAAe,EACb,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAA+B,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,CAAC,IAAI,GAAG;gBACZ,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,eAAe,EACb,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAmC,CAAC;QACvD,MAAM,SAAS,GAA0D,EAAE,CAAC;QAC5E,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,GAA8B,CAAC;gBAC1C,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,qBAAqB,CAAC,CAAC;gBACpF,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,GAAG;oBAChB,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBACpE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAEzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEzD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,CAAC,YAAuC,CAAC;YACpD,MAAM,CAAC,YAAY,GAAG;gBACpB,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;gBACpE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAa,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAgB,CAAC;QACnC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAc,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"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"}
@@ -277,6 +277,8 @@ async function cmdStart(args) {
277
277
  claudeModels: config.claudeModels,
278
278
  model: config.model,
279
279
  baseUrl: config.baseUrl,
280
+ bridge: config.bridge,
281
+ namespaces: config.namespaces,
280
282
  gatewayAgentsConfig: {
281
283
  apiUrl: `http://127.0.0.1:${port}`,
282
284
  apiKey: config.apiKeys[0],
@@ -350,6 +352,7 @@ async function cmdStart(args) {
350
352
  webChatAdapter = createWebChatAdapter({
351
353
  server: handle.server,
352
354
  apiKeys: config.apiKeys,
355
+ namespaces: config.namespaces,
353
356
  pipelineOpts: {
354
357
  claudePath: config.claudePath,
355
358
  sharedMcpPort: config.sharedMcpPort,