@hypercli.com/sdk 0.9.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.
Files changed (193) hide show
  1. package/README.md +629 -0
  2. package/dist/acp-driver.d.ts +72 -0
  3. package/dist/acp-driver.d.ts.map +1 -0
  4. package/dist/acp-driver.js +147 -0
  5. package/dist/acp-driver.js.map +1 -0
  6. package/dist/acp-pool.d.ts +70 -0
  7. package/dist/acp-pool.d.ts.map +1 -0
  8. package/dist/acp-pool.js +181 -0
  9. package/dist/acp-pool.js.map +1 -0
  10. package/dist/acp.d.ts +179 -0
  11. package/dist/acp.d.ts.map +1 -0
  12. package/dist/acp.js +487 -0
  13. package/dist/acp.js.map +1 -0
  14. package/dist/agent-persona.d.ts +68 -0
  15. package/dist/agent-persona.d.ts.map +1 -0
  16. package/dist/agent-persona.js +78 -0
  17. package/dist/agent-persona.js.map +1 -0
  18. package/dist/agent-slots.d.ts +18 -0
  19. package/dist/agent-slots.d.ts.map +1 -0
  20. package/dist/agent-slots.js +24 -0
  21. package/dist/agent-slots.js.map +1 -0
  22. package/dist/agent-urls.d.ts +47 -0
  23. package/dist/agent-urls.d.ts.map +1 -0
  24. package/dist/agent-urls.js +178 -0
  25. package/dist/agent-urls.js.map +1 -0
  26. package/dist/agent.d.ts +482 -0
  27. package/dist/agent.d.ts.map +1 -0
  28. package/dist/agent.js +926 -0
  29. package/dist/agent.js.map +1 -0
  30. package/dist/agents.d.ts +1452 -0
  31. package/dist/agents.d.ts.map +1 -0
  32. package/dist/agents.js +4022 -0
  33. package/dist/agents.js.map +1 -0
  34. package/dist/billing.d.ts +72 -0
  35. package/dist/billing.d.ts.map +1 -0
  36. package/dist/billing.js +93 -0
  37. package/dist/billing.js.map +1 -0
  38. package/dist/browser-jobs.d.ts +24 -0
  39. package/dist/browser-jobs.d.ts.map +1 -0
  40. package/dist/browser-jobs.js +209 -0
  41. package/dist/browser-jobs.js.map +1 -0
  42. package/dist/browser.d.ts +41 -0
  43. package/dist/browser.d.ts.map +1 -0
  44. package/dist/browser.js +57 -0
  45. package/dist/browser.js.map +1 -0
  46. package/dist/buzz-activity.d.ts +169 -0
  47. package/dist/buzz-activity.d.ts.map +1 -0
  48. package/dist/buzz-activity.js +844 -0
  49. package/dist/buzz-activity.js.map +1 -0
  50. package/dist/channels.d.ts +99 -0
  51. package/dist/channels.d.ts.map +1 -0
  52. package/dist/channels.js +27 -0
  53. package/dist/channels.js.map +1 -0
  54. package/dist/chat-integrations.d.ts +44 -0
  55. package/dist/chat-integrations.d.ts.map +1 -0
  56. package/dist/chat-integrations.js +138 -0
  57. package/dist/chat-integrations.js.map +1 -0
  58. package/dist/client.d.ts +88 -0
  59. package/dist/client.d.ts.map +1 -0
  60. package/dist/client.js +144 -0
  61. package/dist/client.js.map +1 -0
  62. package/dist/config.d.ts +44 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +192 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/connectors.d.ts +80 -0
  67. package/dist/connectors.d.ts.map +1 -0
  68. package/dist/connectors.js +2 -0
  69. package/dist/connectors.js.map +1 -0
  70. package/dist/errors.d.ts +16 -0
  71. package/dist/errors.d.ts.map +1 -0
  72. package/dist/errors.js +26 -0
  73. package/dist/errors.js.map +1 -0
  74. package/dist/files.d.ts +60 -0
  75. package/dist/files.d.ts.map +1 -0
  76. package/dist/files.js +128 -0
  77. package/dist/files.js.map +1 -0
  78. package/dist/http.d.ts +56 -0
  79. package/dist/http.d.ts.map +1 -0
  80. package/dist/http.js +362 -0
  81. package/dist/http.js.map +1 -0
  82. package/dist/index.d.ts +49 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +64 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/instances.d.ts +94 -0
  87. package/dist/instances.d.ts.map +1 -0
  88. package/dist/instances.js +197 -0
  89. package/dist/instances.js.map +1 -0
  90. package/dist/integrations.d.ts +111 -0
  91. package/dist/integrations.d.ts.map +1 -0
  92. package/dist/integrations.js +206 -0
  93. package/dist/integrations.js.map +1 -0
  94. package/dist/job/base.d.ts +86 -0
  95. package/dist/job/base.d.ts.map +1 -0
  96. package/dist/job/base.js +206 -0
  97. package/dist/job/base.js.map +1 -0
  98. package/dist/job/comfyui.d.ts +259 -0
  99. package/dist/job/comfyui.d.ts.map +1 -0
  100. package/dist/job/comfyui.js +1563 -0
  101. package/dist/job/comfyui.js.map +1 -0
  102. package/dist/job/gradio.d.ts +48 -0
  103. package/dist/job/gradio.d.ts.map +1 -0
  104. package/dist/job/gradio.js +90 -0
  105. package/dist/job/gradio.js.map +1 -0
  106. package/dist/job-codecs.d.ts +66 -0
  107. package/dist/job-codecs.d.ts.map +1 -0
  108. package/dist/job-codecs.js +132 -0
  109. package/dist/job-codecs.js.map +1 -0
  110. package/dist/jobs.d.ts +148 -0
  111. package/dist/jobs.d.ts.map +1 -0
  112. package/dist/jobs.js +480 -0
  113. package/dist/jobs.js.map +1 -0
  114. package/dist/keys.d.ts +99 -0
  115. package/dist/keys.d.ts.map +1 -0
  116. package/dist/keys.js +145 -0
  117. package/dist/keys.js.map +1 -0
  118. package/dist/logs.d.ts +54 -0
  119. package/dist/logs.d.ts.map +1 -0
  120. package/dist/logs.js +256 -0
  121. package/dist/logs.js.map +1 -0
  122. package/dist/managed-context.d.ts +20 -0
  123. package/dist/managed-context.d.ts.map +1 -0
  124. package/dist/managed-context.js +95 -0
  125. package/dist/managed-context.js.map +1 -0
  126. package/dist/mcp.d.ts +7 -0
  127. package/dist/mcp.d.ts.map +1 -0
  128. package/dist/mcp.js +8 -0
  129. package/dist/mcp.js.map +1 -0
  130. package/dist/memory.d.ts +87 -0
  131. package/dist/memory.d.ts.map +1 -0
  132. package/dist/memory.js +79 -0
  133. package/dist/memory.js.map +1 -0
  134. package/dist/models.d.ts +15 -0
  135. package/dist/models.d.ts.map +1 -0
  136. package/dist/models.js +19 -0
  137. package/dist/models.js.map +1 -0
  138. package/dist/openclaw-control-ui-origin.d.ts +23 -0
  139. package/dist/openclaw-control-ui-origin.d.ts.map +1 -0
  140. package/dist/openclaw-control-ui-origin.js +53 -0
  141. package/dist/openclaw-control-ui-origin.js.map +1 -0
  142. package/dist/renders.d.ts +187 -0
  143. package/dist/renders.d.ts.map +1 -0
  144. package/dist/renders.js +360 -0
  145. package/dist/renders.js.map +1 -0
  146. package/dist/routines.d.ts +59 -0
  147. package/dist/routines.d.ts.map +1 -0
  148. package/dist/routines.js +135 -0
  149. package/dist/routines.js.map +1 -0
  150. package/dist/runners.d.ts +61 -0
  151. package/dist/runners.d.ts.map +1 -0
  152. package/dist/runners.js +127 -0
  153. package/dist/runners.js.map +1 -0
  154. package/dist/sessions.d.ts +280 -0
  155. package/dist/sessions.d.ts.map +1 -0
  156. package/dist/sessions.js +292 -0
  157. package/dist/sessions.js.map +1 -0
  158. package/dist/skills.d.ts +170 -0
  159. package/dist/skills.d.ts.map +1 -0
  160. package/dist/skills.js +2 -0
  161. package/dist/skills.js.map +1 -0
  162. package/dist/user.d.ts +78 -0
  163. package/dist/user.d.ts.map +1 -0
  164. package/dist/user.js +143 -0
  165. package/dist/user.js.map +1 -0
  166. package/dist/version.d.ts +2 -0
  167. package/dist/version.d.ts.map +1 -0
  168. package/dist/version.js +3 -0
  169. package/dist/version.js.map +1 -0
  170. package/dist/voice-session.d.ts +66 -0
  171. package/dist/voice-session.d.ts.map +1 -0
  172. package/dist/voice-session.js +366 -0
  173. package/dist/voice-session.js.map +1 -0
  174. package/dist/voice-transcription-session.d.ts +64 -0
  175. package/dist/voice-transcription-session.d.ts.map +1 -0
  176. package/dist/voice-transcription-session.js +228 -0
  177. package/dist/voice-transcription-session.js.map +1 -0
  178. package/dist/voice.d.ts +62 -0
  179. package/dist/voice.d.ts.map +1 -0
  180. package/dist/voice.js +134 -0
  181. package/dist/voice.js.map +1 -0
  182. package/dist/workspace-tomd.d.ts +61 -0
  183. package/dist/workspace-tomd.d.ts.map +1 -0
  184. package/dist/workspace-tomd.js +177 -0
  185. package/dist/workspace-tomd.js.map +1 -0
  186. package/dist/workspaces.d.ts +255 -0
  187. package/dist/workspaces.d.ts.map +1 -0
  188. package/dist/workspaces.js +653 -0
  189. package/dist/workspaces.js.map +1 -0
  190. package/package.json +115 -0
  191. package/runtime/config-require.browser.js +4 -0
  192. package/runtime/config-require.d.ts +2 -0
  193. package/runtime/config-require.node.js +8 -0
@@ -0,0 +1,64 @@
1
+ export type VoiceTranscriptionSessionState = 'closed' | 'ready' | 'streaming' | 'committed';
2
+ export interface VoiceTranscriptionSessionOptions {
3
+ /** Agents WS base, e.g. wss://api.agents.hypercli.com/ws */
4
+ wsUrl: string;
5
+ /** API key (hyper_api_...) or opaque access token. */
6
+ credential: string;
7
+ /** Per-request timeout in milliseconds (default 300 000). */
8
+ timeoutMs?: number;
9
+ language?: string;
10
+ model?: string;
11
+ responseFormat?: string;
12
+ prompt?: string;
13
+ }
14
+ export interface TranscriptionStartOptions {
15
+ language?: string;
16
+ model?: string;
17
+ responseFormat?: string;
18
+ prompt?: string;
19
+ }
20
+ export interface VoiceTranscriptionAckEvent {
21
+ type: 'ack';
22
+ [key: string]: unknown;
23
+ }
24
+ export interface VoiceTranscriptDeltaEvent {
25
+ type: 'transcript.delta';
26
+ text: string;
27
+ delta?: string;
28
+ [key: string]: unknown;
29
+ }
30
+ export interface VoiceTranscriptFinalEvent {
31
+ type: 'transcript.final';
32
+ text: string;
33
+ [key: string]: unknown;
34
+ }
35
+ export type VoiceTranscriptionEvent = VoiceTranscriptionAckEvent | VoiceTranscriptDeltaEvent | VoiceTranscriptFinalEvent;
36
+ export declare class VoiceTranscriptionSession {
37
+ state: VoiceTranscriptionSessionState;
38
+ private readonly wsUrl;
39
+ private readonly credential;
40
+ private readonly timeoutMs;
41
+ private readonly transcriptionOptions;
42
+ private ws;
43
+ private messages;
44
+ private waiter;
45
+ private closeError;
46
+ constructor(options: VoiceTranscriptionSessionOptions);
47
+ open(): Promise<this>;
48
+ close(): void;
49
+ sendAudio(audio: Uint8Array | ArrayBuffer): void;
50
+ sendBase64Audio(audio: string | Uint8Array | ArrayBuffer): void;
51
+ commit(): void;
52
+ events(): AsyncGenerator<VoiceTranscriptionEvent, void, undefined>;
53
+ transcribe(audio: Uint8Array | ArrayBuffer | string, options?: {
54
+ base64?: boolean;
55
+ }): AsyncGenerator<VoiceTranscriptionEvent, void, undefined>;
56
+ private sendJson;
57
+ private connectionUrl;
58
+ private waitForReady;
59
+ private parseMessage;
60
+ private enqueue;
61
+ private handleClose;
62
+ private nextMessage;
63
+ }
64
+ //# sourceMappingURL=voice-transcription-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-transcription-session.d.ts","sourceRoot":"","sources":["../src/voice-transcription-session.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5F,MAAM,WAAW,gCAAgC;IAC/C,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,uBAAuB,GAC/B,0BAA0B,GAC1B,yBAAyB,GACzB,yBAAyB,CAAC;AAmB9B,qBAAa,yBAAyB;IACpC,KAAK,EAAE,8BAA8B,CAAY;IAEjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACjE,OAAO,CAAC,EAAE,CAA0C;IACpD,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAsB;gBAE5B,OAAO,EAAE,gCAAgC;IAY/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B,KAAK,IAAI,IAAI;IAab,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAMhD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI;IAQ/D,MAAM,IAAI,IAAI;IAKP,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC;IA+BlE,UAAU,CACf,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,EACxC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GACjC,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC;IAU3D,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;YASP,YAAY;IAiB1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;CAqBpB"}
@@ -0,0 +1,228 @@
1
+ import { encodeBase64, VoiceStreamError } from './voice-session.js';
2
+ async function loadNodeWebSocket() {
3
+ const moduleName = 'ws';
4
+ const mod = await import(moduleName);
5
+ return (mod.default ?? mod);
6
+ }
7
+ function bytesFromAudio(audio) {
8
+ return new Uint8Array(audio);
9
+ }
10
+ export class VoiceTranscriptionSession {
11
+ state = 'closed';
12
+ wsUrl;
13
+ credential;
14
+ timeoutMs;
15
+ transcriptionOptions;
16
+ ws = null;
17
+ messages = [];
18
+ waiter = null;
19
+ closeError = null;
20
+ constructor(options) {
21
+ this.wsUrl = options.wsUrl.replace(/\/+$/, '');
22
+ this.credential = options.credential;
23
+ this.timeoutMs = options.timeoutMs ?? 300_000;
24
+ this.transcriptionOptions = {
25
+ language: options.language,
26
+ model: options.model,
27
+ responseFormat: options.responseFormat,
28
+ prompt: options.prompt,
29
+ };
30
+ }
31
+ async open() {
32
+ if (this.ws)
33
+ return this;
34
+ const useBrowserSocket = 'localStorage' in globalThis && typeof WebSocket !== 'undefined';
35
+ await new Promise((resolve, reject) => {
36
+ if (useBrowserSocket) {
37
+ const url = this.connectionUrl();
38
+ const ws = new WebSocket(url);
39
+ this.ws = ws;
40
+ ws.onopen = () => resolve();
41
+ ws.onmessage = (event) => this.enqueue(String(event.data ?? ''));
42
+ ws.onerror = () => reject(new Error('voice transcription WS connection failed'));
43
+ ws.onclose = (event) => this.handleClose(event.code ?? 1006, String(event.reason ?? ''));
44
+ return;
45
+ }
46
+ loadNodeWebSocket()
47
+ .then((NodeSocket) => {
48
+ const ws = new NodeSocket(this.connectionUrl(), {
49
+ headers: { Authorization: `Bearer ${this.credential}` },
50
+ });
51
+ this.ws = ws;
52
+ ws.on('open', () => resolve());
53
+ ws.on('message', (data) => this.enqueue(typeof data === 'string' ? data : data.toString()));
54
+ ws.on('error', (error) => reject(error));
55
+ ws.on('close', (code, reason) => this.handleClose(code ?? 1006, reason?.toString() ?? ''));
56
+ })
57
+ .catch(() => reject(new Error('WebSocket is not available in this environment')));
58
+ });
59
+ await this.waitForReady();
60
+ this.state = 'ready';
61
+ return this;
62
+ }
63
+ close() {
64
+ const ws = this.ws;
65
+ this.ws = null;
66
+ this.state = 'closed';
67
+ if (ws) {
68
+ try {
69
+ ws.close();
70
+ }
71
+ catch {
72
+ // already closed
73
+ }
74
+ }
75
+ }
76
+ sendAudio(audio) {
77
+ if (!this.ws)
78
+ throw new Error('Session is not connected');
79
+ this.ws.send(bytesFromAudio(audio));
80
+ this.state = 'streaming';
81
+ }
82
+ sendBase64Audio(audio) {
83
+ this.sendJson({
84
+ event: 'audio',
85
+ audio: typeof audio === 'string' ? audio : encodeBase64(audio),
86
+ });
87
+ this.state = 'streaming';
88
+ }
89
+ commit() {
90
+ this.sendJson({ event: 'commit' });
91
+ this.state = 'committed';
92
+ }
93
+ async *events() {
94
+ if (!this.ws || this.state === 'closed') {
95
+ throw new Error("Session is not connected; call open() first");
96
+ }
97
+ const deadline = Date.now() + this.timeoutMs;
98
+ while (true) {
99
+ const remaining = deadline - Date.now();
100
+ if (remaining <= 0) {
101
+ throw new VoiceStreamError('timeout', `voice transcription stream timed out after ${this.timeoutMs}ms`);
102
+ }
103
+ const message = this.parseMessage(await this.nextMessage(remaining));
104
+ if (!message)
105
+ continue;
106
+ if (message.type === 'error') {
107
+ throw new VoiceStreamError(String(message.code ?? ''), String(message.detail ?? message.message ?? ''));
108
+ }
109
+ if (message.type === 'ack') {
110
+ yield message;
111
+ continue;
112
+ }
113
+ if (message.type === 'transcript.delta') {
114
+ yield { ...message, type: 'transcript.delta', text: String(message.text ?? ''), delta: String(message.delta ?? '') };
115
+ continue;
116
+ }
117
+ if (message.type === 'transcript.final') {
118
+ yield { ...message, type: 'transcript.final', text: String(message.text ?? '') };
119
+ this.state = this.ws ? 'ready' : 'closed';
120
+ return;
121
+ }
122
+ }
123
+ }
124
+ async *transcribe(audio, options = {}) {
125
+ if (typeof audio === 'string' || options.base64) {
126
+ this.sendBase64Audio(audio);
127
+ }
128
+ else {
129
+ this.sendAudio(audio);
130
+ }
131
+ this.commit();
132
+ yield* this.events();
133
+ }
134
+ sendJson(message) {
135
+ if (!this.ws)
136
+ throw new Error('Session is not connected');
137
+ const body = Object.fromEntries(Object.entries(message).filter(([, value]) => value !== undefined));
138
+ this.ws.send(JSON.stringify(body));
139
+ }
140
+ connectionUrl() {
141
+ const params = new URLSearchParams({ token: this.credential });
142
+ if (this.transcriptionOptions.language)
143
+ params.set('language', this.transcriptionOptions.language);
144
+ if (this.transcriptionOptions.model)
145
+ params.set('model', this.transcriptionOptions.model);
146
+ if (this.transcriptionOptions.responseFormat)
147
+ params.set('response_format', this.transcriptionOptions.responseFormat);
148
+ if (this.transcriptionOptions.prompt)
149
+ params.set('prompt', this.transcriptionOptions.prompt);
150
+ return `${this.wsUrl}/voice/transcribe?${params.toString()}`;
151
+ }
152
+ async waitForReady() {
153
+ const deadline = Date.now() + this.timeoutMs;
154
+ while (true) {
155
+ const remaining = deadline - Date.now();
156
+ if (remaining <= 0) {
157
+ throw new VoiceStreamError('timeout', `voice transcription stream timed out after ${this.timeoutMs}ms`);
158
+ }
159
+ const message = this.parseMessage(await this.nextMessage(remaining));
160
+ if (!message)
161
+ continue;
162
+ if (message.type === 'ready')
163
+ return;
164
+ if (message.type === 'error') {
165
+ throw new VoiceStreamError(String(message.code ?? ''), String(message.detail ?? message.message ?? ''));
166
+ }
167
+ this.messages.push(JSON.stringify(message));
168
+ }
169
+ }
170
+ parseMessage(raw) {
171
+ try {
172
+ const message = JSON.parse(raw);
173
+ if (message.type === undefined && typeof message.event === 'string') {
174
+ message.type = message.event;
175
+ }
176
+ if (message.detail === undefined && typeof message.error === 'string') {
177
+ message.detail = message.error;
178
+ }
179
+ return message;
180
+ }
181
+ catch {
182
+ return null;
183
+ }
184
+ }
185
+ enqueue(raw) {
186
+ if (this.waiter) {
187
+ const waiter = this.waiter;
188
+ this.waiter = null;
189
+ waiter.resolve(raw);
190
+ return;
191
+ }
192
+ this.messages.push(raw);
193
+ }
194
+ handleClose(code, reason) {
195
+ this.ws = null;
196
+ this.state = 'closed';
197
+ this.closeError = new Error(`voice transcription WS closed (${code}): ${reason || 'connection closed'}`);
198
+ if (this.waiter) {
199
+ const waiter = this.waiter;
200
+ this.waiter = null;
201
+ waiter.reject(this.closeError);
202
+ }
203
+ }
204
+ nextMessage(timeoutMs) {
205
+ const queued = this.messages.shift();
206
+ if (queued !== undefined)
207
+ return Promise.resolve(queued);
208
+ if (!this.ws)
209
+ return Promise.reject(this.closeError ?? new Error('Session is not connected'));
210
+ return new Promise((resolve, reject) => {
211
+ const timer = setTimeout(() => {
212
+ this.waiter = null;
213
+ reject(new VoiceStreamError('timeout', `no message within ${Math.round(timeoutMs)}ms`));
214
+ }, timeoutMs);
215
+ this.waiter = {
216
+ resolve: (value) => {
217
+ clearTimeout(timer);
218
+ resolve(value);
219
+ },
220
+ reject: (error) => {
221
+ clearTimeout(timer);
222
+ reject(error);
223
+ },
224
+ };
225
+ });
226
+ }
227
+ }
228
+ //# sourceMappingURL=voice-transcription-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-transcription-session.js","sourceRoot":"","sources":["../src/voice-transcription-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { type HTTPClient } from './http.js';
2
+ import { VoiceSession, type VoiceChunkEvent } from './voice-session.js';
3
+ import { VoiceTranscriptionSession, type TranscriptionStartOptions, type VoiceTranscriptionEvent } from './voice-transcription-session.js';
4
+ export { VoiceSession, VoiceStreamError, type CloneSpeakOptions, type VoiceAudioMetadata, type VoiceChunkEvent, type VoiceSessionOptions, type VoiceSessionState, } from './voice-session.js';
5
+ export { VoiceTranscriptionSession, type TranscriptionStartOptions, type VoiceTranscriptDeltaEvent, type VoiceTranscriptFinalEvent, type VoiceTranscriptionAckEvent, type VoiceTranscriptionEvent, type VoiceTranscriptionSessionOptions, type VoiceTranscriptionSessionState, } from './voice-transcription-session.js';
6
+ export interface CloneOptions {
7
+ text: string;
8
+ refAudio: Uint8Array | ArrayBuffer;
9
+ language?: string;
10
+ xVectorOnly?: boolean;
11
+ responseFormat?: string;
12
+ signal?: AbortSignal;
13
+ }
14
+ export interface TranscribeOptions {
15
+ audio: Uint8Array | ArrayBuffer | Blob;
16
+ filename?: string;
17
+ contentType?: string;
18
+ language?: string;
19
+ model?: string;
20
+ responseFormat?: string;
21
+ prompt?: string;
22
+ signal?: AbortSignal;
23
+ }
24
+ export interface TranscriptionResult {
25
+ text: string;
26
+ [key: string]: unknown;
27
+ }
28
+ export interface TranscribeStreamOptions {
29
+ audio: Uint8Array | ArrayBuffer | string;
30
+ language?: string;
31
+ model?: string;
32
+ responseFormat?: string;
33
+ prompt?: string;
34
+ base64?: boolean;
35
+ timeoutMs?: number;
36
+ }
37
+ export declare class VoiceAPI {
38
+ private http;
39
+ constructor(http: HTTPClient);
40
+ clone(options: CloneOptions): Promise<Uint8Array>;
41
+ transcribe(options: TranscribeOptions): Promise<TranscriptionResult>;
42
+ /**
43
+ * Create a streaming VoiceSession over /ws/voice (call open() or use cloneStream()).
44
+ */
45
+ connect(options?: {
46
+ timeoutMs?: number;
47
+ }): VoiceSession;
48
+ connectTranscription(options?: TranscriptionStartOptions & {
49
+ timeoutMs?: number;
50
+ }): VoiceTranscriptionSession;
51
+ transcribeStream(options: TranscribeStreamOptions): AsyncGenerator<VoiceTranscriptionEvent, void, undefined>;
52
+ /**
53
+ * One-shot streaming voice clone: opens a session, speaks, closes.
54
+ * Defaults to PCM with automatic incremental negotiation. Older servers may
55
+ * return known-total chunks. Request an encoded responseFormat for file output;
56
+ * unlike REST clone(), omitting it no longer requests MP3.
57
+ */
58
+ cloneStream(options: CloneOptions & {
59
+ timeoutMs?: number;
60
+ }): AsyncGenerator<VoiceChunkEvent, void, undefined>;
61
+ }
62
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,GACpC,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,qBAAa,QAAQ;IACP,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE9B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAUjD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+B1E;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY;IAQvD,oBAAoB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,yBAAyB;IAYtG,gBAAgB,CACrB,OAAO,EAAE,uBAAuB,GAC/B,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC;IAkB3D;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC;CAiBrH"}
package/dist/voice.js ADDED
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Voice capability API
3
+ */
4
+ import { getAgentsWsUrlFromProductBase } from './config.js';
5
+ import { requestWithRetry, responseAPIError } from './http.js';
6
+ import { VoiceSession } from './voice-session.js';
7
+ import { VoiceTranscriptionSession, } from './voice-transcription-session.js';
8
+ export { VoiceSession, VoiceStreamError, } from './voice-session.js';
9
+ export { VoiceTranscriptionSession, } from './voice-transcription-session.js';
10
+ function encodeBase64(bytes) {
11
+ const data = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
12
+ if (typeof Buffer !== 'undefined') {
13
+ return Buffer.from(data).toString('base64');
14
+ }
15
+ // Browser fallback: btoa over chunked binary string (avoids arg-limit blowups)
16
+ let binary = '';
17
+ const CHUNK = 0x8000;
18
+ for (let i = 0; i < data.length; i += CHUNK) {
19
+ binary += String.fromCharCode(...data.subarray(i, i + CHUNK));
20
+ }
21
+ return btoa(binary);
22
+ }
23
+ export class VoiceAPI {
24
+ http;
25
+ constructor(http) {
26
+ this.http = http;
27
+ }
28
+ async clone(options) {
29
+ return this.http.postBytes('/voice/clone', {
30
+ text: options.text,
31
+ ref_audio_base64: encodeBase64(options.refAudio),
32
+ language: options.language ?? 'auto',
33
+ x_vector_only: options.xVectorOnly ?? true,
34
+ response_format: options.responseFormat ?? 'mp3',
35
+ }, options.signal ? { signal: options.signal } : {});
36
+ }
37
+ async transcribe(options) {
38
+ const formData = new FormData();
39
+ const filename = options.filename ?? 'audio';
40
+ const audio = options.audio instanceof Blob
41
+ ? options.audio
42
+ : new Blob([options.audio], {
43
+ type: options.contentType ?? 'application/octet-stream',
44
+ });
45
+ formData.append('file', audio, filename);
46
+ if (options.language)
47
+ formData.append('language', options.language);
48
+ if (options.model)
49
+ formData.append('model', options.model);
50
+ if (options.responseFormat)
51
+ formData.append('response_format', options.responseFormat);
52
+ if (options.prompt)
53
+ formData.append('prompt', options.prompt);
54
+ const response = await requestWithRetry({
55
+ method: 'POST',
56
+ url: `${this.http.base}/voice/transcribe`,
57
+ headers: { Authorization: `Bearer ${this.http.credential}` },
58
+ body: formData,
59
+ rawBody: true,
60
+ signal: options.signal,
61
+ });
62
+ if (response.status >= 400)
63
+ throw await responseAPIError(response, 'POST');
64
+ const contentType = response.headers.get('content-type') ?? '';
65
+ if (contentType.includes('application/json')) {
66
+ const data = await response.json();
67
+ return { ...data, text: String(data.text ?? data.transcript ?? '') };
68
+ }
69
+ return { text: await response.text() };
70
+ }
71
+ /**
72
+ * Create a streaming VoiceSession over /ws/voice (call open() or use cloneStream()).
73
+ */
74
+ connect(options) {
75
+ return new VoiceSession({
76
+ wsUrl: getAgentsWsUrlFromProductBase(this.http.base),
77
+ credential: this.http.credential,
78
+ timeoutMs: options?.timeoutMs,
79
+ });
80
+ }
81
+ connectTranscription(options) {
82
+ return new VoiceTranscriptionSession({
83
+ wsUrl: getAgentsWsUrlFromProductBase(this.http.base),
84
+ credential: this.http.credential,
85
+ timeoutMs: options?.timeoutMs,
86
+ language: options?.language,
87
+ model: options?.model,
88
+ responseFormat: options?.responseFormat,
89
+ prompt: options?.prompt,
90
+ });
91
+ }
92
+ async *transcribeStream(options) {
93
+ const session = this.connectTranscription({
94
+ timeoutMs: options.timeoutMs,
95
+ language: options.language,
96
+ model: options.model,
97
+ responseFormat: options.responseFormat,
98
+ prompt: options.prompt,
99
+ });
100
+ await session.open();
101
+ try {
102
+ yield* session.transcribe(options.audio, {
103
+ base64: options.base64,
104
+ });
105
+ }
106
+ finally {
107
+ session.close();
108
+ }
109
+ }
110
+ /**
111
+ * One-shot streaming voice clone: opens a session, speaks, closes.
112
+ * Defaults to PCM with automatic incremental negotiation. Older servers may
113
+ * return known-total chunks. Request an encoded responseFormat for file output;
114
+ * unlike REST clone(), omitting it no longer requests MP3.
115
+ */
116
+ async *cloneStream(options) {
117
+ const session = this.connect({ timeoutMs: options.timeoutMs });
118
+ await session.open();
119
+ try {
120
+ yield* session.speakClone({
121
+ text: options.text,
122
+ refAudio: options.refAudio,
123
+ language: options.language,
124
+ xVectorOnly: options.xVectorOnly,
125
+ format: options.responseFormat,
126
+ chunks: true,
127
+ });
128
+ }
129
+ finally {
130
+ session.close();
131
+ }
132
+ }
133
+ }
134
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Parser for the workspaces `/tomd` Markdown document shape: a YAML
3
+ * frontmatter block between `---` fences carrying typed file metadata, then
4
+ * a Markdown body. The frontmatter writer is the tomd pipeline's own emitter
5
+ * (agents/workspaces `_frontmatter_scalar`): scalars are double-quoted
6
+ * strings, booleans, numbers, or `null`; lists/objects are inline JSON. This
7
+ * parser is dependency-free and scoped to that emitted shape (plus block
8
+ * `- item` lists for robustness) so the SDK stays yaml-free.
9
+ */
10
+ export interface WorkspaceTomdFrontmatter {
11
+ fileId?: string;
12
+ path?: string;
13
+ version?: number;
14
+ index?: number;
15
+ partCount?: number;
16
+ state?: string;
17
+ keywords?: string[];
18
+ summary?: string;
19
+ sizeBytes?: number;
20
+ contentType?: string;
21
+ etag?: string;
22
+ lastModified?: string;
23
+ createdAt?: string;
24
+ updatedAt?: string;
25
+ downloadCommand?: string;
26
+ detectedType?: string;
27
+ docType?: string;
28
+ enriched?: boolean;
29
+ language?: string;
30
+ longSummary?: string;
31
+ pageCount?: number;
32
+ title?: string;
33
+ /** Keys not mapped above, kept verbatim (snake_case) so new backend keys never break parsing. */
34
+ extra: Record<string, unknown>;
35
+ }
36
+ export interface WorkspaceTomdDocument {
37
+ frontmatter: WorkspaceTomdFrontmatter;
38
+ /** The Markdown body after the closing frontmatter fence. */
39
+ body: string;
40
+ /**
41
+ * The body minus the sections the tomd pipeline generates from the same
42
+ * frontmatter (`## Keywords`, `## Summary`, `## Long Summary`,
43
+ * `## Section Summaries`) — they duplicate a metadata header, so rich
44
+ * previews render this instead. Everything else, including `## Full Text`,
45
+ * is kept.
46
+ */
47
+ contentBody: string;
48
+ }
49
+ /**
50
+ * Split a `/tomd` Markdown document into typed frontmatter and body.
51
+ * Missing or unterminated frontmatter is not an error: the whole input is
52
+ * treated as the body with an empty frontmatter.
53
+ */
54
+ export declare function parseWorkspaceTomd(markdown: string): WorkspaceTomdDocument;
55
+ /**
56
+ * Remove the tomd-generated `## Keywords` / `## Summary` / `## Long Summary`
57
+ * / `## Section Summaries` sections (each runs until the next level-1/2
58
+ * heading). Headings inside fenced code blocks are left alone.
59
+ */
60
+ export declare function stripWorkspaceTomdGeneratedSections(body: string): string;
61
+ //# sourceMappingURL=workspace-tomd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tomd.d.ts","sourceRoot":"","sources":["../src/workspace-tomd.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,wBAAwB,CAAC;IACtC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AA6BD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAO1E;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBxE"}