aibroker 0.2.2 → 0.2.4

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.
@@ -6,8 +6,33 @@
6
6
  *
7
7
  * Supports multiple parallel sessions, each with its own conversation
8
8
  * context, working directory, and Claude session UUID for resume.
9
+ *
10
+ * Tracks live session status (thinking, tool_running, compacting, etc.)
11
+ * so consumers can show meaningful status via /ss.
9
12
  */
10
13
  import type { Backend, APIBackendConfig } from "../types/backend.js";
14
+ /** Live status of a session's current deliver() call */
15
+ export type SessionState = "idle" | "thinking" | "tool_running" | "compacting" | "done" | "error";
16
+ /** Live status snapshot for a session */
17
+ export interface SessionStatus {
18
+ state: SessionState;
19
+ /** Current tool name (when state === "tool_running") */
20
+ currentTool?: string;
21
+ /** How long the current tool has been running (seconds) */
22
+ toolElapsed?: number;
23
+ /** Number of turns completed so far */
24
+ turns: number;
25
+ /** Accumulated cost in USD */
26
+ costUsd: number;
27
+ /** Result subtype from the last completed deliver() */
28
+ lastResult?: string;
29
+ /** Error messages from the last completed deliver() */
30
+ lastErrors?: string[];
31
+ /** Permission denials encountered */
32
+ permissionDenials: number;
33
+ /** Timestamp when deliver() started */
34
+ startedAt?: number;
35
+ }
11
36
  /** Metadata for a single API session */
12
37
  export interface APISession {
13
38
  /** External session ID (e.g. "api-1") */
@@ -29,6 +54,8 @@ export declare class APIBackend implements Backend {
29
54
  private readonly config;
30
55
  /** All active API sessions */
31
56
  private readonly sessions;
57
+ /** Live status per session */
58
+ private readonly statuses;
32
59
  /** Currently active session ID */
33
60
  private _activeSessionId;
34
61
  /** Auto-increment counter for session IDs */
@@ -50,6 +77,11 @@ export declare class APIBackend implements Backend {
50
77
  listSessions(): APISession[];
51
78
  /** Get session by list index (1-based, matching /s display) */
52
79
  getSessionByIndex(index: number): APISession | undefined;
80
+ /** Get live status for a session (or the active session) */
81
+ getStatus(sessionId?: string): SessionStatus;
82
+ /** Get a formatted status string suitable for display */
83
+ formatStatus(): string;
84
+ private formatState;
53
85
  deliver(message: string, sessionId?: string): Promise<string | undefined>;
54
86
  }
55
87
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/backend/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKrE,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAW,YAAW,OAAO;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,kCAAkC;IAClC,OAAO,CAAC,gBAAgB,CAAc;IACtC,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,gBAAgB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAUxD,gCAAgC;IAChC,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,gCAAgC;IAChC,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,EAK7B;IAED,8CAA8C;IAC9C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU;IAcrD,2DAA2D;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAa/B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAS/B,0CAA0C;IAC1C,YAAY,IAAI,UAAU,EAAE;IAQ5B,+DAA+D;IAC/D,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKlD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAiFhF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/backend/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKrE,wDAAwD;AACxD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,UAAU,GACV,cAAc,GACd,YAAY,GACZ,MAAM,GACN,OAAO,CAAC;AAEZ,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,UAAW,YAAW,OAAO;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,kCAAkC;IAClC,OAAO,CAAC,gBAAgB,CAAc;IACtC,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,gBAAgB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAUxD,gCAAgC;IAChC,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,gCAAgC;IAChC,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,EAK7B;IAED,8CAA8C;IAC9C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU;IAerD,2DAA2D;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAc/B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAU/B,0CAA0C;IAC1C,YAAY,IAAI,UAAU,EAAE;IAQ5B,+DAA+D;IAC/D,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKxD,4DAA4D;IAC5D,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa;IAK5C,yDAAyD;IACzD,YAAY,IAAI,MAAM;IAsCtB,OAAO,CAAC,WAAW;IA2Bb,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAmIhF"}
@@ -6,10 +6,16 @@
6
6
  *
7
7
  * Supports multiple parallel sessions, each with its own conversation
8
8
  * context, working directory, and Claude session UUID for resume.
9
+ *
10
+ * Tracks live session status (thinking, tool_running, compacting, etc.)
11
+ * so consumers can show meaningful status via /ss.
9
12
  */
10
13
  import { log } from "../core/log.js";
11
14
  import { homedir } from "os";
12
15
  import { spawn } from "child_process";
16
+ function defaultStatus() {
17
+ return { state: "idle", turns: 0, costUsd: 0, permissionDenials: 0 };
18
+ }
13
19
  export class APIBackend {
14
20
  name;
15
21
  type = "api";
@@ -18,6 +24,8 @@ export class APIBackend {
18
24
  config;
19
25
  /** All active API sessions */
20
26
  sessions = new Map();
27
+ /** Live status per session */
28
+ statuses = new Map();
21
29
  /** Currently active session ID */
22
30
  _activeSessionId = "";
23
31
  /** Auto-increment counter for session IDs */
@@ -51,6 +59,7 @@ export class APIBackend {
51
59
  lastActive: Date.now(),
52
60
  };
53
61
  this.sessions.set(id, session);
62
+ this.statuses.set(id, defaultStatus());
54
63
  this._activeSessionId = id;
55
64
  log(`APIBackend: created session ${id} "${name}" (cwd=${session.cwd})`);
56
65
  return session;
@@ -60,6 +69,7 @@ export class APIBackend {
60
69
  if (!this.sessions.has(id))
61
70
  return false;
62
71
  this.sessions.delete(id);
72
+ this.statuses.delete(id);
63
73
  log(`APIBackend: ended session ${id}`);
64
74
  // Switch to most recent remaining session
65
75
  if (this._activeSessionId === id) {
@@ -74,6 +84,7 @@ export class APIBackend {
74
84
  const session = this.sessions.get(targetId);
75
85
  if (session) {
76
86
  session.claudeSessionId = undefined;
87
+ this.statuses.set(targetId, defaultStatus());
77
88
  log(`APIBackend: cleared conversation for session ${targetId}`);
78
89
  }
79
90
  }
@@ -90,6 +101,69 @@ export class APIBackend {
90
101
  const list = this.listSessions();
91
102
  return list[index - 1];
92
103
  }
104
+ /** Get live status for a session (or the active session) */
105
+ getStatus(sessionId) {
106
+ const id = sessionId ?? this._activeSessionId;
107
+ return this.statuses.get(id) ?? defaultStatus();
108
+ }
109
+ /** Get a formatted status string suitable for display */
110
+ formatStatus() {
111
+ const sessions = this.listSessions();
112
+ const lines = [
113
+ `*API Mode — ${this.model}*`,
114
+ ``,
115
+ ];
116
+ for (const s of sessions) {
117
+ const isActive = s.id === this._activeSessionId;
118
+ const status = this.statuses.get(s.id) ?? defaultStatus();
119
+ // Session header
120
+ const marker = isActive ? "*" : " ";
121
+ lines.push(`${marker}${s.name} (${s.cwd})`);
122
+ // State line
123
+ const stateDisplay = this.formatState(status);
124
+ const ctx = s.claudeSessionId ? "has context" : "fresh";
125
+ lines.push(` ${stateDisplay} | ${ctx}`);
126
+ // Stats line (only if there's been activity)
127
+ if (status.turns > 0 || status.costUsd > 0) {
128
+ const cost = status.costUsd > 0 ? ` | $${status.costUsd.toFixed(3)}` : "";
129
+ lines.push(` ${status.turns} turns${cost}`);
130
+ }
131
+ // Errors or denials
132
+ if (status.lastErrors?.length) {
133
+ lines.push(` Error: ${status.lastErrors[0]}`);
134
+ }
135
+ if (status.permissionDenials > 0) {
136
+ lines.push(` ${status.permissionDenials} permission denial(s)`);
137
+ }
138
+ }
139
+ return lines.join("\n");
140
+ }
141
+ formatState(status) {
142
+ switch (status.state) {
143
+ case "idle":
144
+ if (status.lastResult) {
145
+ return status.lastResult === "success" ? "Idle (completed)" : `Idle (${status.lastResult})`;
146
+ }
147
+ return "Idle";
148
+ case "thinking": {
149
+ const elapsed = status.startedAt ? Math.round((Date.now() - status.startedAt) / 1000) : 0;
150
+ return `Thinking... (${elapsed}s)`;
151
+ }
152
+ case "tool_running": {
153
+ const tool = status.currentTool ?? "unknown";
154
+ const secs = status.toolElapsed ? `${Math.round(status.toolElapsed)}s` : "";
155
+ return `Running: ${tool} ${secs}`.trim();
156
+ }
157
+ case "compacting":
158
+ return "Compacting context...";
159
+ case "done":
160
+ return status.lastResult === "success" ? "Done" : `Done (${status.lastResult})`;
161
+ case "error":
162
+ return "Error";
163
+ default:
164
+ return String(status.state);
165
+ }
166
+ }
93
167
  async deliver(message, sessionId) {
94
168
  if (this.provider !== "anthropic") {
95
169
  log(`APIBackend: provider '${this.provider}' not yet supported, only 'anthropic'`);
@@ -102,15 +176,33 @@ export class APIBackend {
102
176
  const cwd = session?.cwd ?? this.config.cwd ?? homedir();
103
177
  if (session)
104
178
  session.lastActive = Date.now();
179
+ // Initialize live status tracking
180
+ const status = {
181
+ state: "thinking",
182
+ turns: 0,
183
+ costUsd: 0,
184
+ permissionDenials: 0,
185
+ startedAt: Date.now(),
186
+ };
187
+ if (targetId)
188
+ this.statuses.set(targetId, status);
105
189
  try {
106
190
  // Dynamic import — avoid loading the SDK at module level for consumers that don't use API mode
107
191
  const { query } = await import("@anthropic-ai/claude-agent-sdk");
108
192
  log(`APIBackend: delivering to ${this.model} (session=${targetId ?? "none"}, resume=${resumeId ?? "new"}, cwd=${cwd})`);
109
193
  const chunks = [];
110
194
  let claudeSessionId;
111
- // Must unset CLAUDECODE env var to allow nested Claude subprocess
195
+ // Build clean env: unset CLAUDECODE to allow nested subprocess,
196
+ // set IS_SANDBOX=1 to match the user's shell alias convention,
197
+ // ensure PATH includes ~/.local/bin where Claude CLI lives.
112
198
  const cleanEnv = { ...process.env };
113
199
  delete cleanEnv.CLAUDECODE;
200
+ cleanEnv.IS_SANDBOX = "1";
201
+ if (!cleanEnv.PATH?.includes(".local/bin")) {
202
+ cleanEnv.PATH = `${homedir()}/.local/bin:${cleanEnv.PATH ?? ""}`;
203
+ }
204
+ // Resolve Claude CLI binary path — shell aliases aren't available in spawn()
205
+ const claudeBin = `${homedir()}/.local/bin/claude`;
114
206
  for await (const event of query({
115
207
  prompt: message,
116
208
  options: {
@@ -123,7 +215,7 @@ export class APIBackend {
123
215
  maxBudgetUsd: this.config.maxBudgetUsd ?? 1.0,
124
216
  ...(resumeId ? { resume: resumeId } : {}),
125
217
  spawnClaudeCodeProcess: ({ args, signal }) => {
126
- return spawn("claude", args, {
218
+ return spawn(claudeBin, args, {
127
219
  env: cleanEnv,
128
220
  stdio: ["pipe", "pipe", "pipe"],
129
221
  signal,
@@ -131,16 +223,26 @@ export class APIBackend {
131
223
  },
132
224
  },
133
225
  })) {
226
+ // Track SDK events for live status
227
+ const ev = event;
134
228
  if (event.type === "system") {
135
- const sysEvent = event;
136
- if (typeof sysEvent.session_id === "string") {
137
- claudeSessionId = sysEvent.session_id;
229
+ if (typeof ev.session_id === "string") {
230
+ claudeSessionId = ev.session_id;
231
+ }
232
+ if (ev.subtype === "status") {
233
+ status.state = ev.status === "compacting" ? "compacting" : "thinking";
234
+ }
235
+ if (ev.subtype === "compact_boundary") {
236
+ // Context was compacted — note it happened
237
+ log(`APIBackend: context compacted (session=${targetId})`);
138
238
  }
139
239
  }
140
240
  else if (event.type === "assistant") {
141
- const msg = event;
142
- const message = msg.message;
143
- const content = message?.content;
241
+ status.state = "thinking";
242
+ status.currentTool = undefined;
243
+ status.toolElapsed = undefined;
244
+ const msg = ev.message;
245
+ const content = msg?.content;
144
246
  if (Array.isArray(content)) {
145
247
  for (const block of content) {
146
248
  if (block && typeof block === "object" && "type" in block && block.type === "text" && "text" in block) {
@@ -149,18 +251,43 @@ export class APIBackend {
149
251
  }
150
252
  }
151
253
  }
254
+ else if (event.type === "tool_progress") {
255
+ status.state = "tool_running";
256
+ status.currentTool = typeof ev.tool_name === "string" ? ev.tool_name : undefined;
257
+ status.toolElapsed = typeof ev.elapsed_time_seconds === "number" ? ev.elapsed_time_seconds : undefined;
258
+ }
259
+ else if (event.type === "result") {
260
+ const subtype = typeof ev.subtype === "string" ? ev.subtype : "unknown";
261
+ status.state = "done";
262
+ status.lastResult = subtype;
263
+ status.currentTool = undefined;
264
+ status.toolElapsed = undefined;
265
+ if (typeof ev.num_turns === "number")
266
+ status.turns = ev.num_turns;
267
+ if (typeof ev.total_cost_usd === "number")
268
+ status.costUsd = ev.total_cost_usd;
269
+ if (Array.isArray(ev.permission_denials))
270
+ status.permissionDenials = ev.permission_denials.length;
271
+ if (Array.isArray(ev.errors))
272
+ status.lastErrors = ev.errors;
273
+ }
152
274
  }
153
275
  // Store Claude session UUID for future resume
154
276
  if (session && claudeSessionId) {
155
277
  session.claudeSessionId = claudeSessionId;
156
278
  }
279
+ // Finalize status
280
+ status.state = "idle";
281
+ status.lastResult = status.lastResult ?? "success";
157
282
  const response = chunks.join("\n").trim();
158
- log(`APIBackend: got response (${response.length} chars, session=${claudeSessionId ?? "unknown"})`);
283
+ log(`APIBackend: got response (${response.length} chars, session=${claudeSessionId ?? "unknown"}, turns=${status.turns}, cost=$${status.costUsd.toFixed(3)})`);
159
284
  return response || undefined;
160
285
  }
161
286
  catch (err) {
162
287
  const msg = err instanceof Error ? err.message : String(err);
163
288
  log(`APIBackend: error — ${msg}`);
289
+ status.state = "error";
290
+ status.lastErrors = [msg];
164
291
  return `Error from Claude subprocess: ${msg}`;
165
292
  }
166
293
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/backend/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/backend/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * core/transport.ts — Shared API backend delivery with transport abstraction.
3
+ *
4
+ * Centralises the voice-detection, TTS chunking, and response-routing logic
5
+ * that every transport (Whazaa, Telex, …) needs when using the APIBackend.
6
+ * Transports only provide two callbacks: sendText and sendVoice.
7
+ */
8
+ import type { APIBackend } from "../backend/api.js";
9
+ /** Transport-provided callbacks for sending responses back to the user. */
10
+ export interface TransportCallbacks {
11
+ /** Send a text message (already markdown-formatted by the transport). */
12
+ sendText: (text: string) => Promise<unknown>;
13
+ /** Send a single voice-note buffer (OGG Opus). transcript is for companion-app display. */
14
+ sendVoice: (buffer: Buffer, transcript?: string) => Promise<unknown>;
15
+ }
16
+ /**
17
+ * Deliver a message through the APIBackend and route the response back
18
+ * via the appropriate transport channel (text or voice).
19
+ *
20
+ * Voice detection: if `message` contains `:voice]` (e.g. `[Whazaa:voice]`),
21
+ * the response is synthesised to voice notes via Kokoro TTS and sent as
22
+ * audio. Otherwise it's sent as a plain text message.
23
+ */
24
+ export declare function deliverViaApi(backend: APIBackend, message: string, sessionId: string, transport: TransportCallbacks): Promise<void>;
25
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,2FAA2F;IAC3F,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyBf"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * core/transport.ts — Shared API backend delivery with transport abstraction.
3
+ *
4
+ * Centralises the voice-detection, TTS chunking, and response-routing logic
5
+ * that every transport (Whazaa, Telex, …) needs when using the APIBackend.
6
+ * Transports only provide two callbacks: sendText and sendVoice.
7
+ */
8
+ import { textToVoiceNote } from "../adapters/kokoro/tts.js";
9
+ import { splitIntoChunks } from "../adapters/kokoro/media.js";
10
+ import { loadVoiceConfig } from "./persistence.js";
11
+ import { log } from "./log.js";
12
+ /**
13
+ * Deliver a message through the APIBackend and route the response back
14
+ * via the appropriate transport channel (text or voice).
15
+ *
16
+ * Voice detection: if `message` contains `:voice]` (e.g. `[Whazaa:voice]`),
17
+ * the response is synthesised to voice notes via Kokoro TTS and sent as
18
+ * audio. Otherwise it's sent as a plain text message.
19
+ */
20
+ export async function deliverViaApi(backend, message, sessionId, transport) {
21
+ const isVoice = message.includes(":voice]");
22
+ log(`deliverViaApi: session=${sessionId}, voice=${isVoice}`);
23
+ try {
24
+ const response = await backend.deliver(message, sessionId);
25
+ if (!response)
26
+ return;
27
+ if (isVoice) {
28
+ const voice = loadVoiceConfig().defaultVoice;
29
+ const chunks = splitIntoChunks(response);
30
+ for (let i = 0; i < chunks.length; i++) {
31
+ if (i > 0)
32
+ await new Promise((r) => setTimeout(r, 1000));
33
+ const audioBuffer = await textToVoiceNote(chunks[i], voice);
34
+ await transport.sendVoice(audioBuffer, chunks[i]);
35
+ }
36
+ log(`deliverViaApi: voice reply sent (${chunks.length} chunk${chunks.length > 1 ? "s" : ""})`);
37
+ }
38
+ else {
39
+ await transport.sendText(response);
40
+ }
41
+ }
42
+ catch (err) {
43
+ const msg = err instanceof Error ? err.message : String(err);
44
+ log(`deliverViaApi: error — ${msg}`);
45
+ await transport.sendText(`Error: ${msg}`).catch(() => { });
46
+ }
47
+ }
48
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAU/B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,SAA6B;IAE7B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,GAAG,CAAC,0BAA0B,SAAS,WAAW,OAAO,EAAE,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,YAAY,CAAC;YAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5D,MAAM,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,GAAG,CAAC,oCAAoC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,GAAG,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,8 @@ export { sessionRegistry, managedSessions, sessionTtyCache, activeClientId, acti
20
20
  export type { CommandHandler } from "./core/state.js";
21
21
  export { setAppDir, getAppDir, DEFAULT_VOICE_CONFIG, loadVoiceConfig, saveVoiceConfig, loadSessionRegistry, saveSessionRegistry, } from "./core/persistence.js";
22
22
  export { MessageRouter, router } from "./core/router.js";
23
+ export { deliverViaApi } from "./core/transport.js";
24
+ export type { TransportCallbacks } from "./core/transport.js";
23
25
  export { WatcherClient } from "./ipc/client.js";
24
26
  export { IpcServer } from "./ipc/server.js";
25
27
  export type { IpcHandler } from "./ipc/server.js";
@@ -32,5 +34,5 @@ export type { KokoroVoice } from "./adapters/kokoro/tts.js";
32
34
  export { transcribeAudio, splitIntoChunks, mimetypeToExt, mimetypeToDocExt, WHISPER_BIN, WHISPER_MODEL, } from "./adapters/kokoro/media.js";
33
35
  export { SessionBackend } from "./adapters/session/backend.js";
34
36
  export { APIBackend } from "./backend/api.js";
35
- export type { APISession } from "./backend/api.js";
37
+ export type { APISession, SessionStatus, SessionState } from "./backend/api.js";
36
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,IAAI,qBAAqB,EACpC,aAAa,IAAI,uBAAuB,GACzC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrF,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,IAAI,qBAAqB,EACpC,aAAa,IAAI,uBAAuB,GACzC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrF,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ export { applySharedMarkdownTransforms, markdownToWhatsApp } from "./core/markdo
21
21
  export { sessionRegistry, managedSessions, sessionTtyCache, activeClientId, activeItermSessionId, setActiveClientId, setActiveItermSessionId, updateSessionTtyCache, cachedSessionList, cachedSessionListTime, setCachedSessionList, clientQueues, clientWaiters, contactMessageQueues, contactDirectory, voiceConfig, setVoiceConfig, commandHandler, setCommandHandler, sentMessageIds, dispatchIncomingMessage, enqueueContactMessage, } from "./core/state.js";
22
22
  export { setAppDir, getAppDir, DEFAULT_VOICE_CONFIG, loadVoiceConfig, saveVoiceConfig, loadSessionRegistry, saveSessionRegistry, } from "./core/persistence.js";
23
23
  export { MessageRouter, router } from "./core/router.js";
24
+ export { deliverViaApi } from "./core/transport.js";
24
25
  // ── IPC ──
25
26
  export { WatcherClient } from "./ipc/client.js";
26
27
  export { IpcServer } from "./ipc/server.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc;AACd,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,0BAA0B;AAC1B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,IAAI,qBAAqB,EACpC,aAAa,IAAI,uBAAuB,GACzC,MAAM,+BAA+B,CAAC;AAEvC,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAErF,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc;AACd,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,0BAA0B;AAC1B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,WAAW,IAAI,qBAAqB,EACpC,aAAa,IAAI,uBAAuB,GACzC,MAAM,+BAA+B,CAAC;AAEvC,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAErF,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aibroker",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Platform-agnostic AI message broker — routes between user channels and AI backends",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",