aibroker 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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/dist/adapters/iterm/core.d.ts +28 -0
  4. package/dist/adapters/iterm/core.d.ts.map +1 -0
  5. package/dist/adapters/iterm/core.js +191 -0
  6. package/dist/adapters/iterm/core.js.map +1 -0
  7. package/dist/adapters/iterm/dictation.d.ts +26 -0
  8. package/dist/adapters/iterm/dictation.d.ts.map +1 -0
  9. package/dist/adapters/iterm/dictation.js +99 -0
  10. package/dist/adapters/iterm/dictation.js.map +1 -0
  11. package/dist/adapters/iterm/sessions.d.ts +31 -0
  12. package/dist/adapters/iterm/sessions.d.ts.map +1 -0
  13. package/dist/adapters/iterm/sessions.js +156 -0
  14. package/dist/adapters/iterm/sessions.js.map +1 -0
  15. package/dist/adapters/kokoro/media.d.ts +32 -0
  16. package/dist/adapters/kokoro/media.d.ts.map +1 -0
  17. package/dist/adapters/kokoro/media.js +157 -0
  18. package/dist/adapters/kokoro/media.js.map +1 -0
  19. package/dist/adapters/kokoro/tts.d.ts +19 -0
  20. package/dist/adapters/kokoro/tts.d.ts.map +1 -0
  21. package/dist/adapters/kokoro/tts.js +157 -0
  22. package/dist/adapters/kokoro/tts.js.map +1 -0
  23. package/dist/adapters/session/backend.d.ts +22 -0
  24. package/dist/adapters/session/backend.d.ts.map +1 -0
  25. package/dist/adapters/session/backend.js +43 -0
  26. package/dist/adapters/session/backend.js.map +1 -0
  27. package/dist/backend/api.d.ts +20 -0
  28. package/dist/backend/api.d.ts.map +1 -0
  29. package/dist/backend/api.js +26 -0
  30. package/dist/backend/api.js.map +1 -0
  31. package/dist/core/log.d.ts +7 -0
  32. package/dist/core/log.d.ts.map +1 -0
  33. package/dist/core/log.js +14 -0
  34. package/dist/core/log.js.map +1 -0
  35. package/dist/core/markdown.d.ts +32 -0
  36. package/dist/core/markdown.d.ts.map +1 -0
  37. package/dist/core/markdown.js +71 -0
  38. package/dist/core/markdown.js.map +1 -0
  39. package/dist/core/mime.d.ts +11 -0
  40. package/dist/core/mime.d.ts.map +1 -0
  41. package/dist/core/mime.js +46 -0
  42. package/dist/core/mime.js.map +1 -0
  43. package/dist/core/persistence.d.ts +20 -0
  44. package/dist/core/persistence.d.ts.map +1 -0
  45. package/dist/core/persistence.js +108 -0
  46. package/dist/core/persistence.js.map +1 -0
  47. package/dist/core/router.d.ts +24 -0
  48. package/dist/core/router.d.ts.map +1 -0
  49. package/dist/core/router.js +38 -0
  50. package/dist/core/router.js.map +1 -0
  51. package/dist/core/state.d.ts +45 -0
  52. package/dist/core/state.d.ts.map +1 -0
  53. package/dist/core/state.js +82 -0
  54. package/dist/core/state.js.map +1 -0
  55. package/dist/index.d.ts +35 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +38 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/ipc/client.d.ts +45 -0
  60. package/dist/ipc/client.d.ts.map +1 -0
  61. package/dist/ipc/client.js +199 -0
  62. package/dist/ipc/client.js.map +1 -0
  63. package/dist/ipc/server.d.ts +34 -0
  64. package/dist/ipc/server.d.ts.map +1 -0
  65. package/dist/ipc/server.js +123 -0
  66. package/dist/ipc/server.js.map +1 -0
  67. package/dist/types/backend.d.ts +25 -0
  68. package/dist/types/backend.d.ts.map +1 -0
  69. package/dist/types/backend.js +9 -0
  70. package/dist/types/backend.js.map +1 -0
  71. package/dist/types/index.d.ts +6 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/index.js +6 -0
  74. package/dist/types/index.js.map +1 -0
  75. package/dist/types/ipc.d.ts +18 -0
  76. package/dist/types/ipc.d.ts.map +1 -0
  77. package/dist/types/ipc.js +6 -0
  78. package/dist/types/ipc.js.map +1 -0
  79. package/dist/types/session.d.ts +29 -0
  80. package/dist/types/session.d.ts.map +1 -0
  81. package/dist/types/session.js +5 -0
  82. package/dist/types/session.js.map +1 -0
  83. package/dist/types/transport.d.ts +43 -0
  84. package/dist/types/transport.d.ts.map +1 -0
  85. package/dist/types/transport.js +8 -0
  86. package/dist/types/transport.js.map +1 -0
  87. package/dist/types/voice.d.ts +17 -0
  88. package/dist/types/voice.d.ts.map +1 -0
  89. package/dist/types/voice.js +5 -0
  90. package/dist/types/voice.js.map +1 -0
  91. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * ipc/client.ts — MCP-side IPC client.
3
+ *
4
+ * WatcherClient connects to the watcher's Unix Domain Socket.
5
+ * Socket path is injected so each consumer uses its own socket.
6
+ */
7
+ import { connect } from "node:net";
8
+ import { randomUUID } from "node:crypto";
9
+ import { homedir } from "node:os";
10
+ import { basename } from "node:path";
11
+ export class WatcherClient {
12
+ sessionId;
13
+ socketPath;
14
+ constructor(socketPath) {
15
+ this.sessionId = process.env.TERM_SESSION_ID ?? "unknown-session";
16
+ this.socketPath = socketPath;
17
+ }
18
+ get session() {
19
+ return this.sessionId;
20
+ }
21
+ get defaultName() {
22
+ const cwd = process.cwd();
23
+ const home = homedir();
24
+ if (cwd === home)
25
+ return "Home";
26
+ return basename(cwd);
27
+ }
28
+ // ── Public API ──
29
+ async register(name) {
30
+ const params = { name: name ?? this.defaultName };
31
+ const itermSessionId = process.env.ITERM_SESSION_ID;
32
+ if (itermSessionId)
33
+ params.itermSessionId = itermSessionId;
34
+ return this.call("register", params);
35
+ }
36
+ async rename(name) {
37
+ return this.call("rename", { name });
38
+ }
39
+ async status() {
40
+ return this.call("status", {});
41
+ }
42
+ async send(message, recipient) {
43
+ const params = { message };
44
+ if (recipient !== undefined)
45
+ params.recipient = recipient;
46
+ return this.call("send", params);
47
+ }
48
+ async receive(from) {
49
+ const params = {};
50
+ if (from !== undefined)
51
+ params.from = from;
52
+ return this.call("receive", params);
53
+ }
54
+ async contacts(search, limit) {
55
+ const params = {};
56
+ if (search !== undefined)
57
+ params.search = search;
58
+ if (limit !== undefined)
59
+ params.limit = limit;
60
+ return this.call("contacts", params);
61
+ }
62
+ async chats(search, limit) {
63
+ const params = {};
64
+ if (search !== undefined)
65
+ params.search = search;
66
+ if (limit !== undefined)
67
+ params.limit = limit;
68
+ return this.call("chats", params);
69
+ }
70
+ async wait(timeoutMs) {
71
+ return this.call("wait", { timeoutMs });
72
+ }
73
+ async login() {
74
+ return this.call("login", {});
75
+ }
76
+ async history(params) {
77
+ return this.call("history", params);
78
+ }
79
+ async tts(params) {
80
+ return this.call("tts", params);
81
+ }
82
+ async voiceConfig(action, updates) {
83
+ return this.call("voice_config", { action, ...updates });
84
+ }
85
+ async sendFile(filePath, recipient, caption, prettify) {
86
+ const params = { filePath };
87
+ if (recipient !== undefined)
88
+ params.recipient = recipient;
89
+ if (caption !== undefined)
90
+ params.caption = caption;
91
+ if (prettify !== undefined)
92
+ params.prettify = prettify;
93
+ return this.call("send_file", params);
94
+ }
95
+ async speak(text, voice) {
96
+ const params = { text };
97
+ if (voice !== undefined)
98
+ params.voice = voice;
99
+ return this.call("speak", params);
100
+ }
101
+ async discover() {
102
+ return this.call("discover", {});
103
+ }
104
+ async sessions() {
105
+ return this.call("sessions", {});
106
+ }
107
+ async switchSession(target) {
108
+ return this.call("switch", { target });
109
+ }
110
+ async endSession(target) {
111
+ return this.call("end_session", { target });
112
+ }
113
+ async command(text) {
114
+ return this.call("command", { text });
115
+ }
116
+ async dictate(maxDuration) {
117
+ const params = {};
118
+ if (maxDuration !== undefined)
119
+ params.maxDuration = maxDuration;
120
+ return this.call("dictate", params);
121
+ }
122
+ async restart() {
123
+ return this.call("restart", {});
124
+ }
125
+ // ── Internal transport ──
126
+ call(method, params) {
127
+ return new Promise((resolve, reject) => {
128
+ let socket = null;
129
+ let done = false;
130
+ let buffer = "";
131
+ let timer = null;
132
+ function finish(err, value) {
133
+ if (done)
134
+ return;
135
+ done = true;
136
+ if (timer !== null) {
137
+ clearTimeout(timer);
138
+ timer = null;
139
+ }
140
+ try {
141
+ socket?.destroy();
142
+ }
143
+ catch { /* ignore */ }
144
+ if (err)
145
+ reject(err);
146
+ else
147
+ resolve(value);
148
+ }
149
+ socket = connect(this.socketPath, () => {
150
+ const request = {
151
+ id: randomUUID(),
152
+ sessionId: this.sessionId,
153
+ method,
154
+ params,
155
+ };
156
+ const itermId = process.env.ITERM_SESSION_ID;
157
+ if (itermId)
158
+ request.itermSessionId = itermId;
159
+ socket.write(JSON.stringify(request) + "\n");
160
+ });
161
+ socket.on("data", (chunk) => {
162
+ buffer += chunk.toString();
163
+ const nl = buffer.indexOf("\n");
164
+ if (nl === -1)
165
+ return;
166
+ const line = buffer.slice(0, nl);
167
+ buffer = buffer.slice(nl + 1);
168
+ let response;
169
+ try {
170
+ response = JSON.parse(line);
171
+ }
172
+ catch {
173
+ finish(new Error(`IPC parse error: ${line}`));
174
+ return;
175
+ }
176
+ if (!response.ok) {
177
+ finish(new Error(response.error ?? "IPC call failed"));
178
+ }
179
+ else {
180
+ finish(null, response.result ?? {});
181
+ }
182
+ });
183
+ socket.on("error", (err) => {
184
+ if (err.code === "ENOENT" || err.code === "ECONNREFUSED") {
185
+ finish(new Error("Watcher not running. Start it with the appropriate watch command."));
186
+ }
187
+ else {
188
+ finish(err);
189
+ }
190
+ });
191
+ socket.on("end", () => {
192
+ if (!done)
193
+ finish(new Error("IPC connection closed before response"));
194
+ });
195
+ timer = setTimeout(() => finish(new Error("IPC call timed out")), 310_000);
196
+ });
197
+ }
198
+ }
199
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ipc/server.ts — Unix Domain Socket IPC server.
3
+ *
4
+ * Creates the UDS, parses NDJSON requests, and delegates to a handler map.
5
+ * Transport-specific handlers are registered by the per-project watcher.
6
+ */
7
+ import type { IpcRequest } from "../types/ipc.js";
8
+ export type IpcHandler = (req: IpcRequest) => Promise<{
9
+ ok: true;
10
+ result: Record<string, unknown>;
11
+ } | {
12
+ ok: false;
13
+ error: string;
14
+ }>;
15
+ export declare class IpcServer {
16
+ private server;
17
+ private readonly handlers;
18
+ private readonly socketPath;
19
+ constructor(socketPath: string);
20
+ /**
21
+ * Register a handler for an IPC method.
22
+ */
23
+ on(method: string, handler: IpcHandler): void;
24
+ /**
25
+ * Start listening on the Unix Domain Socket.
26
+ */
27
+ start(): void;
28
+ /**
29
+ * Stop the IPC server.
30
+ */
31
+ stop(): void;
32
+ private dispatch;
33
+ }
34
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ipc/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAI/D,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,UAAU,KACZ,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3F,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM;IAI9B;;OAEG;IACH,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAI7C;;OAEG;IACH,KAAK,IAAI,IAAI;IAqDb;;OAEG;IACH,IAAI,IAAI,IAAI;YAOE,QAAQ;CAkCvB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * ipc/server.ts — Unix Domain Socket IPC server.
3
+ *
4
+ * Creates the UDS, parses NDJSON requests, and delegates to a handler map.
5
+ * Transport-specific handlers are registered by the per-project watcher.
6
+ */
7
+ import { createServer } from "node:net";
8
+ import { existsSync, unlinkSync } from "node:fs";
9
+ import { log } from "../core/log.js";
10
+ import { sessionRegistry, clientQueues } from "../core/state.js";
11
+ export class IpcServer {
12
+ server = null;
13
+ handlers = new Map();
14
+ socketPath;
15
+ constructor(socketPath) {
16
+ this.socketPath = socketPath;
17
+ }
18
+ /**
19
+ * Register a handler for an IPC method.
20
+ */
21
+ on(method, handler) {
22
+ this.handlers.set(method, handler);
23
+ }
24
+ /**
25
+ * Start listening on the Unix Domain Socket.
26
+ */
27
+ start() {
28
+ // Clean up stale socket
29
+ if (existsSync(this.socketPath)) {
30
+ try {
31
+ unlinkSync(this.socketPath);
32
+ }
33
+ catch { /* ignore */ }
34
+ }
35
+ this.server = createServer((socket) => {
36
+ let buffer = "";
37
+ socket.on("data", (chunk) => {
38
+ buffer += chunk.toString();
39
+ const nl = buffer.indexOf("\n");
40
+ if (nl === -1)
41
+ return;
42
+ const line = buffer.slice(0, nl);
43
+ buffer = buffer.slice(nl + 1);
44
+ let req;
45
+ try {
46
+ req = JSON.parse(line);
47
+ }
48
+ catch {
49
+ const errResp = { id: "unknown", ok: false, error: "Invalid JSON" };
50
+ socket.write(JSON.stringify(errResp) + "\n");
51
+ socket.end();
52
+ return;
53
+ }
54
+ this.dispatch(req).then((resp) => {
55
+ socket.write(JSON.stringify(resp) + "\n");
56
+ socket.end();
57
+ }).catch((err) => {
58
+ const errResp = {
59
+ id: req.id,
60
+ ok: false,
61
+ error: err instanceof Error ? err.message : String(err),
62
+ };
63
+ socket.write(JSON.stringify(errResp) + "\n");
64
+ socket.end();
65
+ });
66
+ });
67
+ socket.on("error", () => { });
68
+ });
69
+ this.server.listen(this.socketPath, () => {
70
+ log(`IPC server listening on ${this.socketPath}`);
71
+ });
72
+ this.server.on("error", (err) => {
73
+ log(`IPC server error: ${err}`);
74
+ });
75
+ }
76
+ /**
77
+ * Stop the IPC server.
78
+ */
79
+ stop() {
80
+ this.server?.close();
81
+ if (existsSync(this.socketPath)) {
82
+ try {
83
+ unlinkSync(this.socketPath);
84
+ }
85
+ catch { /* ignore */ }
86
+ }
87
+ }
88
+ async dispatch(req) {
89
+ // Auto-register unknown sessions
90
+ if (req.method !== "register" && !sessionRegistry.has(req.sessionId)) {
91
+ sessionRegistry.set(req.sessionId, {
92
+ sessionId: req.sessionId,
93
+ name: "Auto-registered",
94
+ itermSessionId: req.itermSessionId,
95
+ registeredAt: Date.now(),
96
+ });
97
+ if (!clientQueues.has(req.sessionId)) {
98
+ clientQueues.set(req.sessionId, []);
99
+ }
100
+ }
101
+ const handler = this.handlers.get(req.method);
102
+ if (!handler) {
103
+ return { id: req.id, ok: false, error: `Unknown method: ${req.method}` };
104
+ }
105
+ try {
106
+ const result = await handler(req);
107
+ if (result.ok) {
108
+ return { id: req.id, ok: true, result: result.result };
109
+ }
110
+ else {
111
+ return { id: req.id, ok: false, error: result.error };
112
+ }
113
+ }
114
+ catch (err) {
115
+ return {
116
+ id: req.id,
117
+ ok: false,
118
+ error: err instanceof Error ? err.message : String(err),
119
+ };
120
+ }
121
+ }
122
+ }
123
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ipc/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Backend interface — AI model abstraction.
3
+ *
4
+ * Two flavors:
5
+ * - SessionBackend: delivers via typeIntoSession (iTerm2 CLI sessions)
6
+ * - APIBackend: delivers via direct HTTP API calls (future)
7
+ */
8
+ export interface Backend {
9
+ readonly name: string;
10
+ readonly type: "session" | "api";
11
+ deliver(message: string, sessionId?: string): Promise<string | undefined>;
12
+ }
13
+ export interface SessionBackendConfig {
14
+ type: "session";
15
+ command: string;
16
+ }
17
+ export interface APIBackendConfig {
18
+ type: "api";
19
+ provider: "anthropic" | "openai" | "ollama";
20
+ model: string;
21
+ baseUrl?: string;
22
+ apiKey?: string;
23
+ }
24
+ export type BackendConfig = SessionBackendConfig | APIBackendConfig;
25
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/types/backend.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Backend interface — AI model abstraction.
3
+ *
4
+ * Two flavors:
5
+ * - SessionBackend: delivers via typeIntoSession (iTerm2 CLI sessions)
6
+ * - APIBackend: delivers via direct HTTP API calls (future)
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/types/backend.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,6 @@
1
+ export * from "./ipc.js";
2
+ export * from "./session.js";
3
+ export * from "./voice.js";
4
+ export * from "./transport.js";
5
+ export * from "./backend.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./ipc.js";
2
+ export * from "./session.js";
3
+ export * from "./voice.js";
4
+ export * from "./transport.js";
5
+ export * from "./backend.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * IPC protocol types — shared between MCP client and watcher process.
3
+ * Zero project-level imports.
4
+ */
5
+ export interface IpcRequest {
6
+ id: string;
7
+ sessionId: string;
8
+ itermSessionId?: string;
9
+ method: string;
10
+ params: Record<string, unknown>;
11
+ }
12
+ export interface IpcResponse {
13
+ id: string;
14
+ ok: boolean;
15
+ result?: Record<string, unknown>;
16
+ error?: string;
17
+ }
18
+ //# sourceMappingURL=ipc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/types/ipc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * IPC protocol types — shared between MCP client and watcher process.
3
+ * Zero project-level imports.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=ipc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../src/types/ipc.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Session routing metadata for multi-client support.
3
+ */
4
+ export interface RegisteredSession {
5
+ sessionId: string;
6
+ name: string;
7
+ itermSessionId?: string;
8
+ registeredAt: number;
9
+ }
10
+ export interface QueuedMessage {
11
+ body: string;
12
+ timestamp: number;
13
+ }
14
+ /**
15
+ * Long-poll waiter callback type.
16
+ */
17
+ export type ClientWaiter = (msgs: QueuedMessage[]) => void;
18
+ /**
19
+ * Serialized session registry (for persistence).
20
+ */
21
+ export interface SessionRegistryData {
22
+ activeItermSessionId: string;
23
+ sessions: Array<{
24
+ sessionId: string;
25
+ name: string;
26
+ itermSessionId?: string;
27
+ }>;
28
+ }
29
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Session routing metadata for multi-client support.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Transport interface — messaging platform abstraction.
3
+ *
4
+ * Implemented by WhatsAppTransport (in Whazaa) and TelegramTransport (in Telex).
5
+ * AIBroker never imports any transport SDK.
6
+ */
7
+ /** Connection status snapshot */
8
+ export interface ConnectionStatus {
9
+ connected: boolean;
10
+ phoneNumber: string | null;
11
+ selfId: string | null;
12
+ awaitingAuth: boolean;
13
+ }
14
+ /** Generic contact entry (transport-agnostic) */
15
+ export interface ContactEntry {
16
+ /** Transport-specific identifier (JID for WhatsApp, chatId for Telegram) */
17
+ id: string;
18
+ name: string | null;
19
+ /** Optional secondary identifier (phone number, username, etc.) */
20
+ handle?: string;
21
+ lastSeen: number;
22
+ }
23
+ /** Incoming message callback */
24
+ export type MessageHandler = (text: string, messageId: string | number, timestamp: number) => Promise<void>;
25
+ /**
26
+ * Transport abstraction — one implementation per messaging platform.
27
+ */
28
+ export interface Transport {
29
+ readonly name: string;
30
+ readonly messagePrefix: string;
31
+ readonly voicePrefix: string;
32
+ connect(onMessage: MessageHandler): Promise<void>;
33
+ disconnect(): Promise<void>;
34
+ getStatus(): ConnectionStatus;
35
+ sendMessage(text: string, recipient?: string): Promise<string>;
36
+ sendFile(path: string, recipient?: string, caption?: string): Promise<void>;
37
+ sendVoiceNote(buffer: Buffer, recipient?: string): Promise<void>;
38
+ startTyping(recipient?: string): void;
39
+ stopTyping(): void;
40
+ formatMarkdown(text: string): string;
41
+ resolveRecipient(query: string): Promise<string | null>;
42
+ }
43
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/types/transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,gCAAgC;AAChC,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,IAAI,gBAAgB,CAAC;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,UAAU,IAAI,IAAI,CAAC;IACnB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACzD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Transport interface — messaging platform abstraction.
3
+ *
4
+ * Implemented by WhatsAppTransport (in Whazaa) and TelegramTransport (in Telex).
5
+ * AIBroker never imports any transport SDK.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/types/transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Voice-synthesis configuration, persisted to disk.
3
+ */
4
+ export interface VoiceConfig {
5
+ defaultVoice: string;
6
+ voiceMode: boolean;
7
+ localMode: boolean;
8
+ personas: Record<string, string>;
9
+ }
10
+ /** Voice mode settings */
11
+ export type VoiceMode = "off" | "listen" | "speak" | "both";
12
+ /** Per-contact persona override */
13
+ export interface PersonaConfig {
14
+ contactPattern: string;
15
+ voice: string;
16
+ }
17
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/types/voice.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,0BAA0B;AAC1B,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Voice-synthesis configuration, persisted to disk.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/types/voice.ts"],"names":[],"mappings":"AAAA;;GAEG"}