aibroker 0.2.6 → 0.6.1
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.
- package/README.md +164 -4
- package/dist/adapters/iterm/core.d.ts +2 -0
- package/dist/adapters/iterm/core.d.ts.map +1 -1
- package/dist/adapters/iterm/core.js +13 -5
- package/dist/adapters/iterm/core.js.map +1 -1
- package/dist/adapters/iterm/iterm2-api.d.ts +20 -0
- package/dist/adapters/iterm/iterm2-api.d.ts.map +1 -0
- package/dist/adapters/iterm/iterm2-api.js +244 -0
- package/dist/adapters/iterm/iterm2-api.js.map +1 -0
- package/dist/adapters/iterm/sessions.d.ts.map +1 -1
- package/dist/adapters/iterm/sessions.js +3 -2
- package/dist/adapters/iterm/sessions.js.map +1 -1
- package/dist/adapters/kokoro/media.d.ts +2 -1
- package/dist/adapters/kokoro/media.d.ts.map +1 -1
- package/dist/adapters/kokoro/media.js +53 -5
- package/dist/adapters/kokoro/media.js.map +1 -1
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).d.ts +49 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +1 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).js +632 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).js.map +1 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-59).js +632 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).d.ts +49 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +1 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).js +614 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).js.map +1 -0
- package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-46).js +614 -0
- package/dist/adapters/pailot/gateway.d.ts +48 -0
- package/dist/adapters/pailot/gateway.d.ts (SFConflict mnott 2026-03-06-21-13-59).map +1 -0
- package/dist/adapters/pailot/gateway.d.ts (SFConflict mnott 2026-03-06-21-15-46).map +1 -0
- package/dist/adapters/pailot/gateway.d.ts.map +1 -0
- package/dist/adapters/pailot/gateway.js +828 -0
- package/dist/adapters/pailot/gateway.js (SFConflict mnott 2026-03-06-21-13-59).map +1 -0
- package/dist/adapters/pailot/gateway.js (SFConflict mnott 2026-03-06-21-15-46).map +1 -0
- package/dist/adapters/pailot/gateway.js.map +1 -0
- package/dist/backend/api.d.ts +5 -1
- package/dist/backend/api.d.ts.map +1 -1
- package/dist/backend/api.js +74 -3
- package/dist/backend/api.js.map +1 -1
- package/dist/core/hybrid.d.ts +7 -0
- package/dist/core/hybrid.d.ts.map +1 -1
- package/dist/core/hybrid.js +33 -0
- package/dist/core/hybrid.js.map +1 -1
- package/dist/core/state.d.ts +3 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +4 -0
- package/dist/core/state.js.map +1 -1
- package/dist/core/status-cache.d.ts +51 -0
- package/dist/core/status-cache.d.ts.map +1 -0
- package/dist/core/status-cache.js +62 -0
- package/dist/core/status-cache.js.map +1 -0
- package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).d.ts +63 -0
- package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +1 -0
- package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).js +229 -0
- package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).js.map +1 -0
- package/dist/daemon/adapter-registry.d.ts +63 -0
- package/dist/daemon/adapter-registry.d.ts.map +1 -0
- package/dist/daemon/adapter-registry.js +240 -0
- package/dist/daemon/adapter-registry.js.map +1 -0
- package/dist/daemon/cli.d.ts +14 -0
- package/dist/daemon/cli.d.ts.map +1 -0
- package/dist/daemon/cli.js +150 -0
- package/dist/daemon/cli.js.map +1 -0
- package/dist/daemon/command-context.d.ts +24 -0
- package/dist/daemon/command-context.d.ts.map +1 -0
- package/dist/daemon/command-context.js +13 -0
- package/dist/daemon/command-context.js.map +1 -0
- package/dist/daemon/commands.d.ts +22 -0
- package/dist/daemon/commands.d.ts.map +1 -0
- package/dist/daemon/commands.js +632 -0
- package/dist/daemon/commands.js.map +1 -0
- package/dist/daemon/core-handlers.d.ts +24 -0
- package/dist/daemon/core-handlers.d.ts.map +1 -0
- package/dist/daemon/core-handlers.js +640 -0
- package/dist/daemon/core-handlers.js.map +1 -0
- package/dist/daemon/create-adapter.d.ts +22 -0
- package/dist/daemon/create-adapter.d.ts.map +1 -0
- package/dist/daemon/create-adapter.js +153 -0
- package/dist/daemon/create-adapter.js.map +1 -0
- package/dist/daemon/image-gen.d.ts +28 -0
- package/dist/daemon/image-gen.d.ts.map +1 -0
- package/dist/daemon/image-gen.js +97 -0
- package/dist/daemon/image-gen.js.map +1 -0
- package/dist/daemon/index.d.ts +12 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +184 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/pai-projects.d.ts +68 -0
- package/dist/daemon/pai-projects.d.ts.map +1 -0
- package/dist/daemon/pai-projects.js +174 -0
- package/dist/daemon/pai-projects.js.map +1 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).d.ts +12 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +1 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).js +252 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).js.map +1 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-59).js +252 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).d.ts +12 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +1 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).js +240 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).js.map +1 -0
- package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-46).js +240 -0
- package/dist/daemon/screenshot.d.ts +12 -0
- package/dist/daemon/screenshot.d.ts (SFConflict mnott 2026-03-06-21-13-59).map +1 -0
- package/dist/daemon/screenshot.d.ts (SFConflict mnott 2026-03-06-21-15-46).map +1 -0
- package/dist/daemon/screenshot.d.ts.map +1 -0
- package/dist/daemon/screenshot.js +252 -0
- package/dist/daemon/screenshot.js (SFConflict mnott 2026-03-06-21-13-59).map +1 -0
- package/dist/daemon/screenshot.js (SFConflict mnott 2026-03-06-21-15-46).map +1 -0
- package/dist/daemon/screenshot.js.map +1 -0
- package/dist/daemon/session-content.d.ts +27 -0
- package/dist/daemon/session-content.d.ts.map +1 -0
- package/dist/daemon/session-content.js +76 -0
- package/dist/daemon/session-content.js.map +1 -0
- package/dist/daemon/vision.d.ts +46 -0
- package/dist/daemon/vision.d.ts.map +1 -0
- package/dist/daemon/vision.js +176 -0
- package/dist/daemon/vision.js.map +1 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/ipc/client.d.ts +4 -1
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +10 -1
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/validate.d.ts +52 -0
- package/dist/ipc/validate.d.ts.map +1 -0
- package/dist/ipc/validate.js +129 -0
- package/dist/ipc/validate.js.map +1 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).d.ts +23 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +1 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).js +595 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).js.map +1 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-59).js +595 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).d.ts +23 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +1 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).js +592 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).js.map +1 -0
- package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-46).js +592 -0
- package/dist/mcp/index.d.ts +23 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +660 -0
- package/dist/mcp/index.js (SFConflict mnott 2026-03-06-21-13-59).map +1 -0
- package/dist/mcp/index.js (SFConflict mnott 2026-03-06-21-15-46).map +1 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/types/adapter.d.ts +41 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +2 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/backend.d.ts +29 -1
- package/dist/types/backend.d.ts.map +1 -1
- package/dist/types/broker.d.ts +47 -0
- package/dist/types/broker.d.ts.map +1 -0
- package/dist/types/broker.js +21 -0
- package/dist/types/broker.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +12 -2
- package/templates/adapter/ONBOARDING_PROMPT.md +309 -0
- package/templates/adapter/README.md.tmpl +81 -0
- package/templates/adapter/package.json.tmpl +23 -0
- package/templates/adapter/src/watcher/cli.ts.tmpl +12 -0
- package/templates/adapter/src/watcher/commands.ts.tmpl +44 -0
- package/templates/adapter/src/watcher/connection.ts.tmpl +59 -0
- package/templates/adapter/src/watcher/index.ts.tmpl +201 -0
- package/templates/adapter/src/watcher/ipc-server.ts.tmpl +250 -0
- package/templates/adapter/src/watcher/send.ts.tmpl +62 -0
- package/templates/adapter/src/watcher/state.ts.tmpl +39 -0
- package/templates/adapter/tsconfig.json.tmpl +14 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/session-content.ts — Read terminal content from iTerm2 sessions.
|
|
3
|
+
*
|
|
4
|
+
* Uses AppleScript to read the visible + scrollback content from iTerm2 tabs.
|
|
5
|
+
* Also detects busy/idle state via `is at shell prompt`.
|
|
6
|
+
*
|
|
7
|
+
* Part of Session Orchestration (Phase 1, v0.7).
|
|
8
|
+
*/
|
|
9
|
+
import { runAppleScript, withSessionAppleScript, snapshotAllSessions } from "../adapters/iterm/core.js";
|
|
10
|
+
/**
|
|
11
|
+
* Read terminal content from a specific iTerm2 session.
|
|
12
|
+
* Returns the last N lines of terminal output + busy/idle flag.
|
|
13
|
+
*/
|
|
14
|
+
export function readSessionContent(sessionId, lines = 100) {
|
|
15
|
+
// AppleScript: get contents, name, atPrompt for a specific session
|
|
16
|
+
const script = withSessionAppleScript(sessionId, ` set sessionName to name of aSession
|
|
17
|
+
set isAtPrompt to (is at shell prompt of aSession)
|
|
18
|
+
tell aSession
|
|
19
|
+
try
|
|
20
|
+
set paiName to (variable named "user.paiName")
|
|
21
|
+
on error
|
|
22
|
+
set paiName to ""
|
|
23
|
+
end try
|
|
24
|
+
end tell
|
|
25
|
+
set rawContent to contents of aSession
|
|
26
|
+
-- Take last N lines
|
|
27
|
+
set AppleScript's text item delimiters to linefeed
|
|
28
|
+
set allLines to text items of rawContent
|
|
29
|
+
set lineCount to count of allLines
|
|
30
|
+
if lineCount > ${lines} then
|
|
31
|
+
set lastLines to items (lineCount - ${lines - 1}) thru lineCount of allLines
|
|
32
|
+
else
|
|
33
|
+
set lastLines to allLines
|
|
34
|
+
end if
|
|
35
|
+
set resultContent to lastLines as text
|
|
36
|
+
return sessionName & (ASCII character 9) & (isAtPrompt as text) & (ASCII character 9) & paiName & (ASCII character 9) & resultContent`, 'return "NOT_FOUND"');
|
|
37
|
+
const result = runAppleScript(script);
|
|
38
|
+
if (!result || result === "NOT_FOUND")
|
|
39
|
+
return null;
|
|
40
|
+
const tabIdx = result.indexOf("\t");
|
|
41
|
+
const tabIdx2 = result.indexOf("\t", tabIdx + 1);
|
|
42
|
+
const tabIdx3 = result.indexOf("\t", tabIdx2 + 1);
|
|
43
|
+
if (tabIdx < 0 || tabIdx2 < 0 || tabIdx3 < 0)
|
|
44
|
+
return null;
|
|
45
|
+
const name = result.substring(0, tabIdx);
|
|
46
|
+
const atPrompt = result.substring(tabIdx + 1, tabIdx2) === "true";
|
|
47
|
+
const paiName = result.substring(tabIdx2 + 1, tabIdx3);
|
|
48
|
+
const content = result.substring(tabIdx3 + 1);
|
|
49
|
+
return {
|
|
50
|
+
sessionId,
|
|
51
|
+
name,
|
|
52
|
+
content,
|
|
53
|
+
lineCount: content.split("\n").length,
|
|
54
|
+
atPrompt,
|
|
55
|
+
paiName: paiName && paiName !== "missing value" && paiName !== "" ? paiName : null,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read terminal content from ALL iTerm2 sessions.
|
|
60
|
+
* Returns array of session contents with busy/idle flags.
|
|
61
|
+
*/
|
|
62
|
+
export function readAllSessionContent(lines = 100) {
|
|
63
|
+
// First get all session IDs via snapshot
|
|
64
|
+
const snapshots = snapshotAllSessions();
|
|
65
|
+
if (snapshots.length === 0)
|
|
66
|
+
return [];
|
|
67
|
+
const results = [];
|
|
68
|
+
for (const snap of snapshots) {
|
|
69
|
+
const content = readSessionContent(snap.id, lines);
|
|
70
|
+
if (content) {
|
|
71
|
+
results.push(content);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=session-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-content.js","sourceRoot":"","sources":["../../src/daemon/session-content.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAYxG;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAK,GAAG,GAAG;IAC/D,mEAAmE;IACnE,MAAM,MAAM,GAAG,sBAAsB,CACnC,SAAS,EACT;;;;;;;;;;;;;;2BAcuB,KAAK;kDACkB,KAAK,GAAG,CAAC;;;;;gJAKqF,EAC5I,oBAAoB,CACrB,CAAC;IAEF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAE9C,OAAO;QACL,SAAS;QACT,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;QACrC,QAAQ;QACR,OAAO,EAAE,OAAO,IAAI,OAAO,KAAK,eAAe,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;KACnF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAK,GAAG,GAAG;IAC/C,yCAAyC;IACzC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/vision.ts — Image and video understanding.
|
|
3
|
+
*
|
|
4
|
+
* Image analysis: Delivered to the active Claude Code session via iTerm2.
|
|
5
|
+
* The image is written to a temp file, and the path is typed into the session
|
|
6
|
+
* so Claude's built-in Read tool can analyze it. Covered by Max plan.
|
|
7
|
+
*
|
|
8
|
+
* Video analysis: Google Gemini 2.0 Flash REST API (free tier: 15 RPM, 1M tokens/day).
|
|
9
|
+
* Only model with native video understanding — no frame extraction needed.
|
|
10
|
+
*
|
|
11
|
+
* Requires GEMINI_API_KEY for video analysis (free tier available).
|
|
12
|
+
*/
|
|
13
|
+
interface SaveImageResult {
|
|
14
|
+
path: string;
|
|
15
|
+
sizeBytes: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Save a received image to disk and return the path.
|
|
19
|
+
* The path can be typed into an active Claude Code session for analysis.
|
|
20
|
+
*/
|
|
21
|
+
export declare function saveReceivedImage(imageBuffer: Buffer, mimetype?: string): SaveImageResult;
|
|
22
|
+
/**
|
|
23
|
+
* Save a received video to disk and return the path.
|
|
24
|
+
*/
|
|
25
|
+
export declare function saveReceivedVideo(videoBuffer: Buffer, mimetype?: string): SaveImageResult;
|
|
26
|
+
interface AnalyzeVideoOptions {
|
|
27
|
+
videoBuffer: Buffer;
|
|
28
|
+
mimetype?: string;
|
|
29
|
+
prompt?: string;
|
|
30
|
+
model?: string;
|
|
31
|
+
}
|
|
32
|
+
interface AnalyzeResult {
|
|
33
|
+
text: string;
|
|
34
|
+
model: string;
|
|
35
|
+
durationMs: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Analyze a video using Gemini's native video understanding.
|
|
39
|
+
* Free tier: 15 requests/minute, 1M tokens/day.
|
|
40
|
+
*
|
|
41
|
+
* Used as a fallback when no active Claude Code session is available,
|
|
42
|
+
* or for direct video analysis requests.
|
|
43
|
+
*/
|
|
44
|
+
export declare function analyzeVideo(opts: AnalyzeVideoOptions): Promise<AnalyzeResult>;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=vision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/daemon/vision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAQzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAQzF;AAOD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiEpF"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/vision.ts — Image and video understanding.
|
|
3
|
+
*
|
|
4
|
+
* Image analysis: Delivered to the active Claude Code session via iTerm2.
|
|
5
|
+
* The image is written to a temp file, and the path is typed into the session
|
|
6
|
+
* so Claude's built-in Read tool can analyze it. Covered by Max plan.
|
|
7
|
+
*
|
|
8
|
+
* Video analysis: Google Gemini 2.0 Flash REST API (free tier: 15 RPM, 1M tokens/day).
|
|
9
|
+
* Only model with native video understanding — no frame extraction needed.
|
|
10
|
+
*
|
|
11
|
+
* Requires GEMINI_API_KEY for video analysis (free tier available).
|
|
12
|
+
*/
|
|
13
|
+
import { writeFileSync, mkdirSync } from "node:fs";
|
|
14
|
+
import { homedir } from "node:os";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { log } from "../core/log.js";
|
|
17
|
+
/** Directory for received media files. */
|
|
18
|
+
const MEDIA_DIR = join(homedir(), ".aibroker", "media");
|
|
19
|
+
/**
|
|
20
|
+
* Save a received image to disk and return the path.
|
|
21
|
+
* The path can be typed into an active Claude Code session for analysis.
|
|
22
|
+
*/
|
|
23
|
+
export function saveReceivedImage(imageBuffer, mimetype) {
|
|
24
|
+
mkdirSync(MEDIA_DIR, { recursive: true });
|
|
25
|
+
const ext = mimeToExt(mimetype ?? "image/png");
|
|
26
|
+
const filename = `img-${Date.now()}.${ext}`;
|
|
27
|
+
const path = join(MEDIA_DIR, filename);
|
|
28
|
+
writeFileSync(path, imageBuffer);
|
|
29
|
+
log(`Vision: saved image (${imageBuffer.length} bytes) to ${path}`);
|
|
30
|
+
return { path, sizeBytes: imageBuffer.length };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Save a received video to disk and return the path.
|
|
34
|
+
*/
|
|
35
|
+
export function saveReceivedVideo(videoBuffer, mimetype) {
|
|
36
|
+
mkdirSync(MEDIA_DIR, { recursive: true });
|
|
37
|
+
const ext = mimeToExt(mimetype ?? "video/mp4");
|
|
38
|
+
const filename = `vid-${Date.now()}.${ext}`;
|
|
39
|
+
const path = join(MEDIA_DIR, filename);
|
|
40
|
+
writeFileSync(path, videoBuffer);
|
|
41
|
+
log(`Vision: saved video (${videoBuffer.length} bytes) to ${path}`);
|
|
42
|
+
return { path, sizeBytes: videoBuffer.length };
|
|
43
|
+
}
|
|
44
|
+
// ── Video Analysis (Gemini 2.0 Flash — free tier) ──
|
|
45
|
+
const GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta";
|
|
46
|
+
const DEFAULT_VIDEO_MODEL = "gemini-2.0-flash";
|
|
47
|
+
/**
|
|
48
|
+
* Analyze a video using Gemini's native video understanding.
|
|
49
|
+
* Free tier: 15 requests/minute, 1M tokens/day.
|
|
50
|
+
*
|
|
51
|
+
* Used as a fallback when no active Claude Code session is available,
|
|
52
|
+
* or for direct video analysis requests.
|
|
53
|
+
*/
|
|
54
|
+
export async function analyzeVideo(opts) {
|
|
55
|
+
const apiKey = process.env.GEMINI_API_KEY;
|
|
56
|
+
if (!apiKey) {
|
|
57
|
+
throw new Error("GEMINI_API_KEY not set. Get a free key at https://aistudio.google.com/app/apikey");
|
|
58
|
+
}
|
|
59
|
+
const model = opts.model ?? DEFAULT_VIDEO_MODEL;
|
|
60
|
+
const mimetype = opts.mimetype ?? "video/mp4";
|
|
61
|
+
const prompt = opts.prompt ?? "Describe what is happening in this video.";
|
|
62
|
+
const startMs = Date.now();
|
|
63
|
+
const sizeBytes = opts.videoBuffer.length;
|
|
64
|
+
log(`Vision: analyzing video (${sizeBytes} bytes, ${mimetype}) with ${model}`);
|
|
65
|
+
let fileUri;
|
|
66
|
+
if (sizeBytes > 20 * 1024 * 1024) {
|
|
67
|
+
fileUri = await uploadToGeminiFileApi(opts.videoBuffer, mimetype, apiKey);
|
|
68
|
+
}
|
|
69
|
+
const parts = [];
|
|
70
|
+
if (fileUri) {
|
|
71
|
+
parts.push({
|
|
72
|
+
fileData: { mimeType: mimetype, fileUri },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
parts.push({
|
|
77
|
+
inlineData: { mimeType: mimetype, data: opts.videoBuffer.toString("base64") },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
parts.push({ text: prompt });
|
|
81
|
+
const generateUrl = `${GEMINI_API_URL}/models/${model}:generateContent?key=${apiKey}`;
|
|
82
|
+
const res = await fetch(generateUrl, {
|
|
83
|
+
method: "POST",
|
|
84
|
+
headers: { "Content-Type": "application/json" },
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
contents: [{ parts }],
|
|
87
|
+
generationConfig: { maxOutputTokens: 1024 },
|
|
88
|
+
}),
|
|
89
|
+
});
|
|
90
|
+
if (!res.ok) {
|
|
91
|
+
const errText = await res.text();
|
|
92
|
+
throw new Error(`Gemini API error (${res.status}): ${errText}`);
|
|
93
|
+
}
|
|
94
|
+
const data = await res.json();
|
|
95
|
+
const text = data.candidates?.[0]?.content?.parts
|
|
96
|
+
?.filter((p) => p.text)
|
|
97
|
+
.map((p) => p.text)
|
|
98
|
+
.join("\n") ?? "";
|
|
99
|
+
const durationMs = Date.now() - startMs;
|
|
100
|
+
log(`Vision: video analysis completed in ${durationMs}ms`);
|
|
101
|
+
return { text, model, durationMs };
|
|
102
|
+
}
|
|
103
|
+
async function uploadToGeminiFileApi(buffer, mimetype, apiKey) {
|
|
104
|
+
const startUrl = `https://generativelanguage.googleapis.com/upload/v1beta/files?key=${apiKey}`;
|
|
105
|
+
const startRes = await fetch(startUrl, {
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: {
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
"X-Goog-Upload-Protocol": "resumable",
|
|
110
|
+
"X-Goog-Upload-Command": "start",
|
|
111
|
+
"X-Goog-Upload-Header-Content-Length": String(buffer.length),
|
|
112
|
+
"X-Goog-Upload-Header-Content-Type": mimetype,
|
|
113
|
+
},
|
|
114
|
+
body: JSON.stringify({
|
|
115
|
+
file: { displayName: `aibroker-upload-${Date.now()}` },
|
|
116
|
+
}),
|
|
117
|
+
});
|
|
118
|
+
if (!startRes.ok) {
|
|
119
|
+
throw new Error(`Gemini File API start failed (${startRes.status}): ${await startRes.text()}`);
|
|
120
|
+
}
|
|
121
|
+
const uploadUrl = startRes.headers.get("X-Goog-Upload-URL");
|
|
122
|
+
if (!uploadUrl) {
|
|
123
|
+
throw new Error("Gemini File API did not return an upload URL");
|
|
124
|
+
}
|
|
125
|
+
const uploadRes = await fetch(uploadUrl, {
|
|
126
|
+
method: "PUT",
|
|
127
|
+
headers: {
|
|
128
|
+
"Content-Length": String(buffer.length),
|
|
129
|
+
"X-Goog-Upload-Offset": "0",
|
|
130
|
+
"X-Goog-Upload-Command": "upload, finalize",
|
|
131
|
+
},
|
|
132
|
+
body: buffer,
|
|
133
|
+
});
|
|
134
|
+
if (!uploadRes.ok) {
|
|
135
|
+
throw new Error(`Gemini File API upload failed (${uploadRes.status}): ${await uploadRes.text()}`);
|
|
136
|
+
}
|
|
137
|
+
const fileData = await uploadRes.json();
|
|
138
|
+
const uri = fileData.file?.uri;
|
|
139
|
+
if (!uri) {
|
|
140
|
+
throw new Error("Gemini File API did not return a file URI");
|
|
141
|
+
}
|
|
142
|
+
if (fileData.file?.state === "PROCESSING") {
|
|
143
|
+
await waitForGeminiFile(uri, apiKey);
|
|
144
|
+
}
|
|
145
|
+
return uri;
|
|
146
|
+
}
|
|
147
|
+
async function waitForGeminiFile(uri, apiKey, maxWaitMs = 120_000) {
|
|
148
|
+
const startMs = Date.now();
|
|
149
|
+
while (Date.now() - startMs < maxWaitMs) {
|
|
150
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
151
|
+
const res = await fetch(`${uri}?key=${apiKey}`);
|
|
152
|
+
if (!res.ok)
|
|
153
|
+
continue;
|
|
154
|
+
const data = await res.json();
|
|
155
|
+
if (data.state === "ACTIVE")
|
|
156
|
+
return;
|
|
157
|
+
if (data.state === "FAILED")
|
|
158
|
+
throw new Error("Gemini file processing failed");
|
|
159
|
+
}
|
|
160
|
+
throw new Error(`Gemini file processing timed out after ${maxWaitMs}ms`);
|
|
161
|
+
}
|
|
162
|
+
// ── Helpers ──
|
|
163
|
+
function mimeToExt(mime) {
|
|
164
|
+
const map = {
|
|
165
|
+
"image/png": "png",
|
|
166
|
+
"image/jpeg": "jpg",
|
|
167
|
+
"image/gif": "gif",
|
|
168
|
+
"image/webp": "webp",
|
|
169
|
+
"image/svg+xml": "svg",
|
|
170
|
+
"video/mp4": "mp4",
|
|
171
|
+
"video/webm": "webm",
|
|
172
|
+
"video/quicktime": "mov",
|
|
173
|
+
};
|
|
174
|
+
return map[mime] ?? "bin";
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=vision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/daemon/vision.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - adapters/iterm/ — macOS iTerm2 integration (AppleScript, session management)
|
|
9
9
|
* - adapters/kokoro/ — Kokoro TTS synthesis + Whisper audio transcription
|
|
10
10
|
* - adapters/session/ — SessionBackend: deliver messages via iTerm2 typeIntoSession
|
|
11
|
+
* - adapters/pailot/ — WebSocket gateway for PAILot iOS app connections
|
|
11
12
|
*
|
|
12
13
|
* Hard rule: this package NEVER imports @whiskeysockets/baileys,
|
|
13
14
|
* telegram/gramjs, better-sqlite3, qrcode, or any transport SDK.
|
|
@@ -16,8 +17,8 @@ export * from "./types/index.js";
|
|
|
16
17
|
export { log, setLogPrefix } from "./core/log.js";
|
|
17
18
|
export { MIME_MAP, lookupMime } from "./core/mime.js";
|
|
18
19
|
export { applySharedMarkdownTransforms, markdownToWhatsApp, stripMarkdown } from "./core/markdown.js";
|
|
19
|
-
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";
|
|
20
|
-
export type { CommandHandler } from "./core/state.js";
|
|
20
|
+
export { sessionRegistry, managedSessions, sessionTtyCache, activeClientId, activeItermSessionId, setActiveClientId, setActiveItermSessionId, updateSessionTtyCache, cachedSessionList, cachedSessionListTime, setCachedSessionList, clientQueues, clientWaiters, contactMessageQueues, contactDirectory, voiceConfig, setVoiceConfig, commandHandler, setCommandHandler, sentMessageIds, messageSource, setMessageSource, dispatchIncomingMessage, enqueueContactMessage, } from "./core/state.js";
|
|
21
|
+
export type { CommandHandler, MessageSource } from "./core/state.js";
|
|
21
22
|
export { setAppDir, getAppDir, DEFAULT_VOICE_CONFIG, loadVoiceConfig, saveVoiceConfig, loadSessionRegistry, saveSessionRegistry, } from "./core/persistence.js";
|
|
22
23
|
export { MessageRouter, router } from "./core/router.js";
|
|
23
24
|
export { deliverViaApi } from "./core/transport.js";
|
|
@@ -27,6 +28,8 @@ export type { HybridSession, SessionKind } from "./core/hybrid.js";
|
|
|
27
28
|
export { WatcherClient } from "./ipc/client.js";
|
|
28
29
|
export { IpcServer } from "./ipc/server.js";
|
|
29
30
|
export type { IpcHandler } from "./ipc/server.js";
|
|
31
|
+
export { validateAdapterHealth, validateSessionList, validateHubStatus, validateTtsResult, validateTranscription, } from "./ipc/validate.js";
|
|
32
|
+
export type { ValidatedSession, ValidatedHubStatus, ValidatedTtsResult, ValidatedTranscription, } from "./ipc/validate.js";
|
|
30
33
|
export { runAppleScript, stripItermPrefix, withSessionAppleScript, sendKeystrokeToSession, sendEscapeSequenceToSession, typeIntoSession, pasteTextIntoSession, findClaudeSession, isClaudeRunningInSession, isItermRunning, isItermSessionAlive, isScreenLocked, writeToTty, snapshotAllSessions, } from "./adapters/iterm/core.js";
|
|
31
34
|
export type { SessionSnapshot } from "./adapters/iterm/core.js";
|
|
32
35
|
export { setItermSessionVar, setItermTabName, getItermSessionVar, findItermSessionForTermId, listClaudeSessions, getSessionList, createClaudeSession, createTerminalTab, restartSession, killSession, } from "./adapters/iterm/sessions.js";
|
|
@@ -34,7 +37,18 @@ export { recordFromMic, transcribeLocalAudio, WHISPER_BIN as DICTATION_WHISPER_B
|
|
|
34
37
|
export { textToVoiceNote, speakLocally, listVoices } from "./adapters/kokoro/tts.js";
|
|
35
38
|
export type { KokoroVoice } from "./adapters/kokoro/tts.js";
|
|
36
39
|
export { transcribeAudio, splitIntoChunks, mimetypeToExt, mimetypeToDocExt, WHISPER_BIN, WHISPER_MODEL, } from "./adapters/kokoro/media.js";
|
|
40
|
+
export { startWsGateway, stopWsGateway, broadcastText, broadcastImage, broadcastVoice, broadcastStatus, hasPailotClients, setScreenshotHandler, } from "./adapters/pailot/gateway.js";
|
|
37
41
|
export { SessionBackend } from "./adapters/session/backend.js";
|
|
38
42
|
export { APIBackend } from "./backend/api.js";
|
|
39
43
|
export type { APISession, SessionStatus, SessionState } from "./backend/api.js";
|
|
44
|
+
export { startDaemon, DAEMON_SOCKET_PATH } from "./daemon/index.js";
|
|
45
|
+
export type { CommandContext } from "./daemon/command-context.js";
|
|
46
|
+
export { createHubCommandHandler } from "./daemon/commands.js";
|
|
47
|
+
export { handleScreenshot } from "./daemon/screenshot.js";
|
|
48
|
+
export { AdapterRegistry } from "./daemon/adapter-registry.js";
|
|
49
|
+
export type { AdapterDescriptor } from "./daemon/adapter-registry.js";
|
|
50
|
+
export { listPaiProjects, findPaiProject, launchPaiProject, getEffectiveConfig, invalidatePaiProjectCache, } from "./daemon/pai-projects.js";
|
|
51
|
+
export type { PaiProject } from "./daemon/pai-projects.js";
|
|
52
|
+
export { createBrokerMessage } from "./types/broker.js";
|
|
53
|
+
export type { BrokerMessage, BrokerMessageType, BrokerMessagePayload, RouteResult } from "./types/broker.js";
|
|
40
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - adapters/iterm/ — macOS iTerm2 integration (AppleScript, session management)
|
|
9
9
|
* - adapters/kokoro/ — Kokoro TTS synthesis + Whisper audio transcription
|
|
10
10
|
* - adapters/session/ — SessionBackend: deliver messages via iTerm2 typeIntoSession
|
|
11
|
+
* - adapters/pailot/ — WebSocket gateway for PAILot iOS app connections
|
|
11
12
|
*
|
|
12
13
|
* Hard rule: this package NEVER imports @whiskeysockets/baileys,
|
|
13
14
|
* telegram/gramjs, better-sqlite3, qrcode, or any transport SDK.
|
|
@@ -18,7 +19,7 @@ export * from "./types/index.js";
|
|
|
18
19
|
export { log, setLogPrefix } from "./core/log.js";
|
|
19
20
|
export { MIME_MAP, lookupMime } from "./core/mime.js";
|
|
20
21
|
export { applySharedMarkdownTransforms, markdownToWhatsApp, stripMarkdown } from "./core/markdown.js";
|
|
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
|
+
export { sessionRegistry, managedSessions, sessionTtyCache, activeClientId, activeItermSessionId, setActiveClientId, setActiveItermSessionId, updateSessionTtyCache, cachedSessionList, cachedSessionListTime, setCachedSessionList, clientQueues, clientWaiters, contactMessageQueues, contactDirectory, voiceConfig, setVoiceConfig, commandHandler, setCommandHandler, sentMessageIds, messageSource, setMessageSource, dispatchIncomingMessage, enqueueContactMessage, } from "./core/state.js";
|
|
22
23
|
export { setAppDir, getAppDir, DEFAULT_VOICE_CONFIG, loadVoiceConfig, saveVoiceConfig, loadSessionRegistry, saveSessionRegistry, } from "./core/persistence.js";
|
|
23
24
|
export { MessageRouter, router } from "./core/router.js";
|
|
24
25
|
export { deliverViaApi } from "./core/transport.js";
|
|
@@ -26,6 +27,7 @@ export { HybridSessionManager, hybridManager, setHybridManager } from "./core/hy
|
|
|
26
27
|
// ── IPC ──
|
|
27
28
|
export { WatcherClient } from "./ipc/client.js";
|
|
28
29
|
export { IpcServer } from "./ipc/server.js";
|
|
30
|
+
export { validateAdapterHealth, validateSessionList, validateHubStatus, validateTtsResult, validateTranscription, } from "./ipc/validate.js";
|
|
29
31
|
// ── Adapters > iTerm2 ──
|
|
30
32
|
export { runAppleScript, stripItermPrefix, withSessionAppleScript, sendKeystrokeToSession, sendEscapeSequenceToSession, typeIntoSession, pasteTextIntoSession, findClaudeSession, isClaudeRunningInSession, isItermRunning, isItermSessionAlive, isScreenLocked, writeToTty, snapshotAllSessions, } from "./adapters/iterm/core.js";
|
|
31
33
|
export { setItermSessionVar, setItermTabName, getItermSessionVar, findItermSessionForTermId, listClaudeSessions, getSessionList, createClaudeSession, createTerminalTab, restartSession, killSession, } from "./adapters/iterm/sessions.js";
|
|
@@ -33,8 +35,17 @@ export { recordFromMic, transcribeLocalAudio, WHISPER_BIN as DICTATION_WHISPER_B
|
|
|
33
35
|
// ── Adapters > Kokoro TTS ──
|
|
34
36
|
export { textToVoiceNote, speakLocally, listVoices } from "./adapters/kokoro/tts.js";
|
|
35
37
|
export { transcribeAudio, splitIntoChunks, mimetypeToExt, mimetypeToDocExt, WHISPER_BIN, WHISPER_MODEL, } from "./adapters/kokoro/media.js";
|
|
38
|
+
// ── Adapters > PAILot Gateway ──
|
|
39
|
+
export { startWsGateway, stopWsGateway, broadcastText, broadcastImage, broadcastVoice, broadcastStatus, hasPailotClients, setScreenshotHandler, } from "./adapters/pailot/gateway.js";
|
|
36
40
|
// ── Adapters > Session Backend ──
|
|
37
41
|
export { SessionBackend } from "./adapters/session/backend.js";
|
|
38
42
|
// ── Backend ──
|
|
39
43
|
export { APIBackend } from "./backend/api.js";
|
|
44
|
+
// ── Daemon ──
|
|
45
|
+
export { startDaemon, DAEMON_SOCKET_PATH } from "./daemon/index.js";
|
|
46
|
+
export { createHubCommandHandler } from "./daemon/commands.js";
|
|
47
|
+
export { handleScreenshot } from "./daemon/screenshot.js";
|
|
48
|
+
export { AdapterRegistry } from "./daemon/adapter-registry.js";
|
|
49
|
+
export { listPaiProjects, findPaiProject, launchPaiProject, getEffectiveConfig, invalidatePaiProjectCache, } from "./daemon/pai-projects.js";
|
|
50
|
+
export { createBrokerMessage } from "./types/broker.js";
|
|
40
51
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ipc/client.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare class WatcherClient {
|
|
|
13
13
|
register(name?: string): Promise<Record<string, unknown>>;
|
|
14
14
|
rename(name: string): Promise<Record<string, unknown>>;
|
|
15
15
|
status(): Promise<Record<string, unknown>>;
|
|
16
|
-
send(message: string, recipient?: string): Promise<Record<string, unknown>>;
|
|
16
|
+
send(message: string, recipient?: string, channel?: string): Promise<Record<string, unknown>>;
|
|
17
17
|
receive(from?: string): Promise<Record<string, unknown>>;
|
|
18
18
|
contacts(search?: string, limit?: number): Promise<Record<string, unknown>>;
|
|
19
19
|
chats(search?: string, limit?: number): Promise<Record<string, unknown>>;
|
|
@@ -29,6 +29,7 @@ export declare class WatcherClient {
|
|
|
29
29
|
voice?: string;
|
|
30
30
|
jid?: string;
|
|
31
31
|
recipient?: string;
|
|
32
|
+
channel?: string;
|
|
32
33
|
}): Promise<Record<string, unknown>>;
|
|
33
34
|
voiceConfig(action: "get" | "set", updates?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
34
35
|
sendFile(filePath: string, recipient?: string, caption?: string, prettify?: boolean): Promise<Record<string, unknown>>;
|
|
@@ -40,6 +41,8 @@ export declare class WatcherClient {
|
|
|
40
41
|
command(text: string): Promise<Record<string, unknown>>;
|
|
41
42
|
dictate(maxDuration?: number): Promise<Record<string, unknown>>;
|
|
42
43
|
restart(): Promise<Record<string, unknown>>;
|
|
44
|
+
broadcastStatus(status: string): Promise<Record<string, unknown>>;
|
|
45
|
+
call_raw(method: string, params: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
43
46
|
private call;
|
|
44
47
|
}
|
|
45
48
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/ipc/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM;IAK9B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,OAAO,KAAK,WAAW,GAKtB;IAIK,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM;IAK9B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,OAAO,KAAK,WAAW,GAKtB;IAIK,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAItD,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO7F,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO3E,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOxE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzC,OAAO,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpG,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInI,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIvG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQtH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMrE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI5C,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI5C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI/D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI5D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIvD,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAM/D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI3C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMjE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMjG,OAAO,CAAC,IAAI;CAgEb"}
|
package/dist/ipc/client.js
CHANGED
|
@@ -39,10 +39,12 @@ export class WatcherClient {
|
|
|
39
39
|
async status() {
|
|
40
40
|
return this.call("status", {});
|
|
41
41
|
}
|
|
42
|
-
async send(message, recipient) {
|
|
42
|
+
async send(message, recipient, channel) {
|
|
43
43
|
const params = { message };
|
|
44
44
|
if (recipient !== undefined)
|
|
45
45
|
params.recipient = recipient;
|
|
46
|
+
if (channel !== undefined)
|
|
47
|
+
params.channel = channel;
|
|
46
48
|
return this.call("send", params);
|
|
47
49
|
}
|
|
48
50
|
async receive(from) {
|
|
@@ -122,6 +124,13 @@ export class WatcherClient {
|
|
|
122
124
|
async restart() {
|
|
123
125
|
return this.call("restart", {});
|
|
124
126
|
}
|
|
127
|
+
async broadcastStatus(status) {
|
|
128
|
+
return this.call("broadcast_status", { status });
|
|
129
|
+
}
|
|
130
|
+
// ── Generic call (for daemon CLI and adapter registration) ──
|
|
131
|
+
async call_raw(method, params) {
|
|
132
|
+
return this.call(method, params);
|
|
133
|
+
}
|
|
125
134
|
// ── Internal transport ──
|
|
126
135
|
call(method, params) {
|
|
127
136
|
return new Promise((resolve, reject) => {
|
package/dist/ipc/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,UAAU,CAAS;IAEpC,YAAY,UAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAY,WAAW;QACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,mBAAmB;IAEnB,KAAK,CAAC,QAAQ,CAAC,IAAa;QAC1B,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD,IAAI,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,SAAkB;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ipc/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,UAAU,CAAS;IAEpC,YAAY,UAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAY,WAAW;QACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,mBAAmB;IAEnB,KAAK,CAAC,QAAQ,CAAC,IAAa;QAC1B,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD,IAAI,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,SAAkB,EAAE,OAAgB;QAC9D,MAAM,MAAM,GAA4B,EAAE,OAAO,EAAE,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAa;QACzB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAe,EAAE,KAAc;QAC5C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAe,EAAE,KAAc;QACzC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAyD;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAiC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAA4F;QACpG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAiC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAqB,EAAE,OAAiC;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,SAAkB,EAAE,OAAgB,EAAE,QAAkB;QACvF,MAAM,MAAM,GAA4B,EAAE,QAAQ,EAAE,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,KAAc;QACtC,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAoB;QAChC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,+DAA+D;IAE/D,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,MAA+B;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,2BAA2B;IAEnB,IAAI,CAAC,MAAc,EAAE,MAA+B;QAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,MAAM,GAAkB,IAAI,CAAC;YACjC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,KAAK,GAAyC,IAAI,CAAC;YAEvD,SAAS,MAAM,CAAC,GAAiB,EAAE,KAA+B;gBAChE,IAAI,IAAI;oBAAE,OAAO;gBACjB,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAAC,KAAK,GAAG,IAAI,CAAC;gBAAC,CAAC;gBAC1D,IAAI,CAAC;oBAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACjD,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAAM,OAAO,CAAC,KAAM,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;gBACrC,MAAM,OAAO,GAAe;oBAC1B,EAAE,EAAE,UAAU,EAAE;oBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,MAAM;oBACN,MAAM;iBACP,CAAC;gBACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC7C,IAAI,OAAO;oBAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC9C,MAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAAE,OAAO;gBACtB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAE9B,IAAI,QAAqB,CAAC;gBAC1B,IAAI,CAAC;oBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;gBAC7C,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACzD,MAAM,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAC;gBACzF,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI;oBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YAEH,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ipc/validate.ts — Runtime validation for IPC responses.
|
|
3
|
+
*
|
|
4
|
+
* IPC calls return Record<string, unknown>. These helpers validate
|
|
5
|
+
* the shape at the system boundary so consumers get typed data
|
|
6
|
+
* instead of unsafe casts.
|
|
7
|
+
*/
|
|
8
|
+
import type { AdapterHealth } from "../types/adapter.js";
|
|
9
|
+
/**
|
|
10
|
+
* Validate and coerce an IPC response into a typed AdapterHealth.
|
|
11
|
+
* Returns a degraded health object if the response shape is wrong.
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateAdapterHealth(raw: unknown): AdapterHealth;
|
|
14
|
+
export interface ValidatedSession {
|
|
15
|
+
index: number;
|
|
16
|
+
name: string;
|
|
17
|
+
kind: string;
|
|
18
|
+
active: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate a sessions IPC response.
|
|
22
|
+
* Expects { sessions: Array<{ index, name, kind, active }> }.
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateSessionList(raw: unknown): ValidatedSession[];
|
|
25
|
+
export interface ValidatedHubStatus {
|
|
26
|
+
version: string;
|
|
27
|
+
adapters: string[];
|
|
28
|
+
activeSessions: number;
|
|
29
|
+
activeSession: string | null;
|
|
30
|
+
adapterHealth: Record<string, AdapterHealth>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate a hub status IPC response.
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateHubStatus(raw: unknown): ValidatedHubStatus;
|
|
36
|
+
export interface ValidatedTtsResult {
|
|
37
|
+
generated: boolean;
|
|
38
|
+
voice: string;
|
|
39
|
+
bytes: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Validate a TTS IPC response.
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateTtsResult(raw: unknown): ValidatedTtsResult;
|
|
45
|
+
export interface ValidatedTranscription {
|
|
46
|
+
text: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate a transcription IPC response.
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateTranscription(raw: unknown): ValidatedTranscription;
|
|
52
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/ipc/validate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAgClF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAiCjE;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAapE;AAID,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAuBlE;AAID,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CASlE;AAID,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAG1E"}
|