@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,209 @@
1
+ import { jobFromDict, jobListPageFromDict, jobMetricsFromDict, lifecycleEventFromDict, normalizeTags, } from './job-codecs.js';
2
+ function getBrowserWebSocket() {
3
+ const ctor = globalThis.WebSocket;
4
+ if (!ctor)
5
+ throw new Error('WebSocket is not available in this browser environment');
6
+ return ctor;
7
+ }
8
+ function productWsBase(http) {
9
+ return http.base
10
+ .replace('https://', 'wss://')
11
+ .replace('http://', 'ws://')
12
+ .replace(/\/api$/, '');
13
+ }
14
+ function buildListParams(options = {}) {
15
+ const params = {};
16
+ if (options.state) {
17
+ params.state = options.state;
18
+ }
19
+ const normalizedTags = normalizeTags(options.tags);
20
+ if (normalizedTags && normalizedTags.length > 0) {
21
+ params.tag = normalizedTags;
22
+ }
23
+ if (options.page !== undefined) {
24
+ params.page = options.page;
25
+ }
26
+ if (options.pageSize !== undefined) {
27
+ params.page_size = options.pageSize;
28
+ }
29
+ return params;
30
+ }
31
+ function addSocketListener(socket, type, listener) {
32
+ if (socket.addEventListener) {
33
+ socket.addEventListener(type, listener);
34
+ return () => socket.removeEventListener?.(type, listener);
35
+ }
36
+ const key = `on${type}`;
37
+ const previous = socket[key];
38
+ const wrapped = (event) => {
39
+ previous?.(event);
40
+ listener(event);
41
+ };
42
+ socket[key] = wrapped;
43
+ return () => {
44
+ if (socket[key] === wrapped)
45
+ socket[key] = previous ?? null;
46
+ };
47
+ }
48
+ function frameText(data) {
49
+ if (typeof data === 'string')
50
+ return data;
51
+ if (data instanceof ArrayBuffer)
52
+ return new TextDecoder().decode(data);
53
+ if (ArrayBuffer.isView(data)) {
54
+ return new TextDecoder().decode(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
55
+ }
56
+ throw new Error('unsupported WebSocket frame type');
57
+ }
58
+ async function* websocketJsonStream(url, parseFrame) {
59
+ const SocketCtor = getBrowserWebSocket();
60
+ const socket = new SocketCtor(url);
61
+ const queue = [];
62
+ const cleanups = [];
63
+ let done = false;
64
+ let failed = null;
65
+ let pending = null;
66
+ let rejectPending = null;
67
+ const resolveNext = (value) => {
68
+ if (pending) {
69
+ pending({ done: false, value });
70
+ pending = null;
71
+ rejectPending = null;
72
+ }
73
+ else {
74
+ queue.push(value);
75
+ }
76
+ };
77
+ const fail = (error) => {
78
+ failed = error;
79
+ done = true;
80
+ if (rejectPending) {
81
+ rejectPending(error);
82
+ pending = null;
83
+ rejectPending = null;
84
+ }
85
+ };
86
+ cleanups.push(addSocketListener(socket, 'message', (event) => {
87
+ try {
88
+ const parsed = JSON.parse(frameText(event.data));
89
+ const value = parseFrame(parsed);
90
+ if (value !== undefined)
91
+ resolveNext(value);
92
+ }
93
+ catch (error) {
94
+ fail(error instanceof Error ? error : new Error('invalid WebSocket frame'));
95
+ }
96
+ }));
97
+ cleanups.push(addSocketListener(socket, 'close', () => {
98
+ done = true;
99
+ if (pending) {
100
+ pending({ done: true, value: undefined });
101
+ pending = null;
102
+ rejectPending = null;
103
+ }
104
+ }));
105
+ cleanups.push(addSocketListener(socket, 'error', () => {
106
+ fail(new Error('WebSocket connection failed'));
107
+ }));
108
+ try {
109
+ while (!done || queue.length > 0) {
110
+ if (failed)
111
+ throw failed;
112
+ const value = queue.shift();
113
+ if (value) {
114
+ yield value;
115
+ continue;
116
+ }
117
+ const result = await new Promise((resolve, reject) => {
118
+ pending = resolve;
119
+ rejectPending = reject;
120
+ });
121
+ if (result.done)
122
+ break;
123
+ yield result.value;
124
+ }
125
+ }
126
+ finally {
127
+ for (const cleanup of cleanups)
128
+ cleanup();
129
+ socket.close();
130
+ }
131
+ }
132
+ /**
133
+ * Browser-safe GPU jobs API. It intentionally omits Node-only exec/shell
134
+ * helpers, but keeps REST job operations and lifecycle/metrics WebSockets.
135
+ */
136
+ export class BrowserJobs {
137
+ http;
138
+ constructor(http) {
139
+ this.http = http;
140
+ }
141
+ async list(stateOrOptions, tags) {
142
+ let options;
143
+ if (typeof stateOrOptions === 'string') {
144
+ options = { state: stateOrOptions, tags };
145
+ }
146
+ else if (stateOrOptions) {
147
+ options = stateOrOptions;
148
+ }
149
+ else {
150
+ options = tags ? { tags } : {};
151
+ }
152
+ return (await this.listPage(options)).jobs;
153
+ }
154
+ async listPage(options = {}) {
155
+ const data = await this.http.get('/api/jobs', buildListParams(options));
156
+ if (typeof data === 'object' && data && Array.isArray(data.jobs)) {
157
+ return jobListPageFromDict(data, options.page ?? 1, options.pageSize ?? 50);
158
+ }
159
+ const jobs = (data || []).map(jobFromDict);
160
+ return {
161
+ jobs,
162
+ totalCount: jobs.length,
163
+ page: options.page ?? 1,
164
+ pageSize: options.pageSize ?? (jobs.length || 50),
165
+ };
166
+ }
167
+ async get(jobId) {
168
+ const data = await this.http.get(`/api/jobs/${jobId}`);
169
+ return jobFromDict(data);
170
+ }
171
+ async cancel(jobId) {
172
+ return await this.http.delete(`/api/jobs/${jobId}`);
173
+ }
174
+ async extend(jobId, runtime) {
175
+ const data = await this.http.patch(`/api/jobs/${jobId}`, { runtime });
176
+ return jobFromDict(data);
177
+ }
178
+ async logs(jobId) {
179
+ const data = await this.http.get(`/api/jobs/${jobId}/logs`);
180
+ return data.logs || '';
181
+ }
182
+ async metrics(jobId) {
183
+ const stream = this.metricsStream(jobId, { interval: 60 });
184
+ const result = await stream.next();
185
+ await stream.return(undefined).catch(() => undefined);
186
+ if (result.done)
187
+ throw new Error('metrics stream closed before first snapshot');
188
+ return result.value;
189
+ }
190
+ async *metricsStream(jobId, options = {}) {
191
+ const interval = options.interval ?? 5;
192
+ const job = await this.get(jobId);
193
+ const url = `${productWsBase(this.http)}/orchestra/ws/metrics/jobs/${encodeURIComponent(job.jobKey)}?interval=${encodeURIComponent(String(interval))}`;
194
+ yield* websocketJsonStream(url, (parsed) => {
195
+ if (parsed?.event === 'metrics_error') {
196
+ throw new Error(String(parsed.detail || 'metrics stream failed'));
197
+ }
198
+ if (parsed?.event !== 'metrics_snapshot')
199
+ return undefined;
200
+ return jobMetricsFromDict(parsed.data || {});
201
+ });
202
+ }
203
+ async *lifecycleStream(jobId) {
204
+ const job = await this.get(jobId);
205
+ const url = `${productWsBase(this.http)}/orchestra/ws/lifecycle/${encodeURIComponent(job.jobKey)}`;
206
+ yield* websocketJsonStream(url, lifecycleEventFromDict);
207
+ }
208
+ }
209
+ //# sourceMappingURL=browser-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-jobs.js","sourceRoot":"","sources":["../src/browser-jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Billing } from './billing.js';
2
+ import { BrowserJobs } from './browser-jobs.js';
3
+ import { Instances } from './instances.js';
4
+ import { KeysAPI } from './keys.js';
5
+ import { HyperAgent } from './agent.js';
6
+ import { UserAPI } from './user.js';
7
+ import { VoiceAPI } from './voice.js';
8
+ import { WorkspacesAPI } from './workspaces.js';
9
+ import { SessionsAPI } from './sessions.js';
10
+ export * from './sessions.js';
11
+ export * from './chat-integrations.js';
12
+ export { buildAdditionalMcpEnv } from './mcp.js';
13
+ export { DEFAULT_RUNNER_CONTROL_URL, defaultRunnerControlUrl } from './agent-urls.js';
14
+ export { BrowserJobs } from './browser-jobs.js';
15
+ export { API_KEY_BASELINE_FAMILIES, issueApiKeyFromJwt, type ApiKey, type ApiKeyBaselineFamily, type ApiKeyBaselineValue, type CreateApiKeyOptions, type IssueApiKeyFromJwtOptions, } from './keys.js';
16
+ export type { Job, JobLifecycleEvent, JobListPage, JobMetrics, } from './job-codecs.js';
17
+ export interface BrowserHyperCLIOptions {
18
+ apiUrl: string;
19
+ token: string;
20
+ agentApiKey?: string;
21
+ agentDev?: boolean;
22
+ agentsApiBaseUrl?: string;
23
+ timeout?: number;
24
+ }
25
+ /**
26
+ * Browser-safe HyperCLI client for JWT-authenticated frontend apps.
27
+ */
28
+ export declare class BrowserHyperCLI {
29
+ private readonly http;
30
+ readonly billing: Billing;
31
+ readonly jobs: BrowserJobs;
32
+ readonly agent: HyperAgent;
33
+ readonly user: UserAPI;
34
+ readonly instances: Instances;
35
+ readonly keys: KeysAPI;
36
+ readonly voice: VoiceAPI;
37
+ readonly workspaces: WorkspacesAPI;
38
+ readonly sessions: SessionsAPI;
39
+ constructor(options: BrowserHyperCLIOptions);
40
+ }
41
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,GAAG,EACH,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAElC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,UAAU,EAAE,aAAa,CAAC;IAC1C,SAAgB,QAAQ,EAAE,WAAW,CAAC;gBAE1B,OAAO,EAAE,sBAAsB;CA0B5C"}
@@ -0,0 +1,57 @@
1
+ import { Billing } from './billing.js';
2
+ import { BrowserJobs } from './browser-jobs.js';
3
+ import { getAgentsApiBaseUrl } from './config.js';
4
+ import { resolveAgentsApiBase } from './agent-urls.js';
5
+ import { HTTPClient } from './http.js';
6
+ import { Instances } from './instances.js';
7
+ import { KeysAPI } from './keys.js';
8
+ import { HyperAgent } from './agent.js';
9
+ import { UserAPI } from './user.js';
10
+ import { VoiceAPI } from './voice.js';
11
+ import { WorkspacesAPI } from './workspaces.js';
12
+ import { SessionsAPI } from './sessions.js';
13
+ export * from './sessions.js';
14
+ export * from './chat-integrations.js';
15
+ export { buildAdditionalMcpEnv } from './mcp.js';
16
+ export { DEFAULT_RUNNER_CONTROL_URL, defaultRunnerControlUrl } from './agent-urls.js';
17
+ export { BrowserJobs } from './browser-jobs.js';
18
+ export { API_KEY_BASELINE_FAMILIES, issueApiKeyFromJwt, } from './keys.js';
19
+ function normalizeApiUrl(apiUrl) {
20
+ const trimmed = apiUrl.trim().replace(/\/+$/, '');
21
+ return trimmed.endsWith('/api') ? trimmed.slice(0, -4) : trimmed;
22
+ }
23
+ /**
24
+ * Browser-safe HyperCLI client for JWT-authenticated frontend apps.
25
+ */
26
+ export class BrowserHyperCLI {
27
+ http;
28
+ billing;
29
+ jobs;
30
+ agent;
31
+ user;
32
+ instances;
33
+ keys;
34
+ voice;
35
+ workspaces;
36
+ sessions;
37
+ constructor(options) {
38
+ const apiUrl = normalizeApiUrl(options.apiUrl);
39
+ this.http = new HTTPClient(apiUrl, options.token, options.timeout);
40
+ this.billing = new Billing(this.http);
41
+ this.jobs = new BrowserJobs(this.http);
42
+ const agentsApiBaseUrl = resolveAgentsApiBase(options.agentsApiBaseUrl ||
43
+ getAgentsApiBaseUrl(Boolean(options.agentDev), apiUrl), true);
44
+ const agentsHttp = new HTTPClient(agentsApiBaseUrl, options.agentApiKey ?? options.token, options.timeout);
45
+ this.sessions = new SessionsAPI(agentsHttp);
46
+ this.agent = new HyperAgent(this.http, options.agentApiKey ?? options.token, Boolean(options.agentDev), agentsApiBaseUrl);
47
+ this.user = new UserAPI(this.http, this.http, agentsHttp);
48
+ this.instances = new Instances(this.http);
49
+ this.keys = new KeysAPI(this.http);
50
+ this.voice = new VoiceAPI(agentsHttp);
51
+ this.workspaces = new WorkspacesAPI(options.agentApiKey ?? options.token, {
52
+ agentsApiBase: agentsApiBaseUrl,
53
+ timeout: options.timeout,
54
+ });
55
+ }
56
+ }
57
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import type { Agent, Deployments } from './agents.js';
2
+ export declare const BUZZ_OBSERVER_EVENT_KIND = 24200;
3
+ export interface BuzzObserverFrame {
4
+ seq: number;
5
+ timestamp: string;
6
+ kind: string;
7
+ agentIndex: number | null;
8
+ channelId: string | null;
9
+ sessionId: string | null;
10
+ turnId: string | null;
11
+ startedAt?: string;
12
+ payload: unknown;
13
+ }
14
+ export interface BuzzActivitySubscription {
15
+ close(): void;
16
+ }
17
+ export interface BuzzActivityHandlers {
18
+ onFrame(frame: BuzzObserverFrame): void;
19
+ onHistoryEnd?(): void;
20
+ onClose?(event: {
21
+ code: number;
22
+ reason: string;
23
+ }): void;
24
+ onError?(error: Error): void;
25
+ signal?: AbortSignal;
26
+ /**
27
+ * Owner key as nsec/hex string or raw bytes; omit to use the agent secret.
28
+ * SECURITY: never pass an owner key in browser/webview contexts — the owner
29
+ * identity is not throwaway like the per-agent key. This option exists for
30
+ * trusted local clients (e.g. a desktop keychain) where the key never
31
+ * leaves the device; it is used only for local key derivation and is never
32
+ * transmitted, persisted, or logged.
33
+ */
34
+ ownerSecretKey?: string | Uint8Array;
35
+ /** Relay history lookback in seconds; default 86400. */
36
+ sinceSeconds?: number;
37
+ /** REQ limit; default 500. */
38
+ limit?: number;
39
+ }
40
+ export interface BuzzEnvConfig {
41
+ relayUrl: string;
42
+ ownerPubHex: string;
43
+ }
44
+ type BuzzDeploymentsClient = Pick<Deployments, 'get' | 'secret'>;
45
+ /**
46
+ * Decode an agent/owner secret given as an nsec bech32 string, a 64-char hex
47
+ * string, or a raw 32-byte array. Throws on anything else.
48
+ */
49
+ export declare function decodeBuzzSecret(nsecOrHex: string | Uint8Array): Uint8Array;
50
+ /** Derive the x-only hex pubkey for a 32-byte secret key. */
51
+ export declare function buzzPublicKeyHex(secretKey: Uint8Array): string;
52
+ /**
53
+ * NIP-44 v2 conversation key: HKDF-extract(salt "nip44-v2", ECDH shared x).
54
+ * Symmetric across the (owner, agent) pair.
55
+ */
56
+ export declare function buzzConversationKey(secretKey: Uint8Array, peerPubHex: string): Uint8Array;
57
+ /**
58
+ * Decrypt a NIP-44 v2 payload: base64 of [version=2][nonce32][ciphertext][mac32].
59
+ * Rejects non-v2 versions, bad MACs, bad lengths, and malformed padding.
60
+ */
61
+ export declare function decryptBuzzPayload(conversationKey: Uint8Array, payload: string): string;
62
+ /**
63
+ * Resolve the Buzz relay URL and owner pubkey from a launch-config env map.
64
+ * Owner comes from `BUZZ_AUTH_TAG` (JSON `["auth", owner_pubkey_hex, ...]`,
65
+ * element [1]) with `BUZZ_ACP_AGENT_OWNER` (bare 64-hex) as fallback.
66
+ * Throws a clear "not Buzz-backed" error when no relay URL is present.
67
+ */
68
+ export declare function resolveBuzzOwnerFromEnv(env: Record<string, unknown>): BuzzEnvConfig;
69
+ /**
70
+ * Subscribe to a Buzz-backed agent's observer telemetry stream.
71
+ *
72
+ * Resolves the agent, reads `BUZZ_RELAY_URL`/owner pubkey from its
73
+ * launch-config env, reveals the agent `BUZZ_PRIVATE_KEY`, then REQ-subscribes
74
+ * the relay for kind-24200 frames and decrypts them locally. Reconnects with
75
+ * bounded backoff (1s/2s/4s) resuming from the last accepted frame; gives up
76
+ * via `onClose`.
77
+ */
78
+ export declare function subscribeBuzzActivity(deployments: BuzzDeploymentsClient, agentIdOrName: string, handlers: BuzzActivityHandlers): Promise<BuzzActivitySubscription>;
79
+ export type { BuzzDeploymentsClient };
80
+ /**
81
+ * Pinned route name for the legacy hyper-acp introspection listener. Current
82
+ * hosted Buzz launches use raw outbound ACP over `HYPER_ACP_WS_URL` and do not
83
+ * provision this route.
84
+ */
85
+ export declare const HYPER_ACP_ROUTE_NAME = "hyper-acp";
86
+ /** Thrown when the agent's launch config has no `hyper-acp` edge route. */
87
+ export declare class BuzzActivityRouteUnavailableError extends Error {
88
+ constructor(message: string);
89
+ }
90
+ /**
91
+ * Soft-signal error emitted via `onError` when the in-pod stream skipped a
92
+ * lagging client ahead. Transient by definition — the subscription is alive.
93
+ */
94
+ export declare class BuzzActivityGapError extends Error {
95
+ readonly dropped: number;
96
+ constructor(dropped: number);
97
+ }
98
+ /**
99
+ * Handler contract identical to the relay transport. No NIP-44 / owner
100
+ * resolution here: the deployment-provisioned app token replaces it.
101
+ */
102
+ export interface BuzzActivityRouteHandlers {
103
+ onFrame(frame: BuzzObserverFrame): void;
104
+ onHistoryEnd?(): void;
105
+ onClose?(event: {
106
+ code: number;
107
+ reason: string;
108
+ }): void;
109
+ onError?(error: Error): void;
110
+ signal?: AbortSignal;
111
+ }
112
+ export interface BuzzActivityRouteTarget {
113
+ /** Fully derived edge WebSocket URL, for example `wss://hyper-acp-foo.agents.example/`. */
114
+ wsUrl: string;
115
+ /** In-pod port the route forwards to (the pinned 7799 today). */
116
+ port: number;
117
+ }
118
+ type BuzzRouteDeploymentsClient = Pick<Deployments, 'get' | 'secret'>;
119
+ /**
120
+ * Resolve the `hyper-acp` edge URL from an already-loaded Agent model.
121
+ * Host derivation mirrors the platform contract: prefix defaults to the route
122
+ * name on both sides, so `prefix` is `${prefix}-${agent.hostname}` and a bare
123
+ * prefix is the root host itself. Returns null when the route is absent or
124
+ * the agent hostname is not ready — callers use that to select the relay
125
+ * transport instead.
126
+ */
127
+ export declare function resolveBuzzActivityRouteTarget(agent: Pick<Agent, 'routes' | 'hostname'>): BuzzActivityRouteTarget | null;
128
+ /**
129
+ * Subscribe to a legacy Buzz-backed agent's observer stream through the
130
+ * agent's `hyper-acp` WS route. Current hosted Buzz launches do not provision
131
+ * this observer route; the active path uses raw outbound ACP over
132
+ * `HYPER_ACP_WS_URL`.
133
+ *
134
+ * Auth is app-level and entirely in-band: the route is `auth: false` at the
135
+ * edge, so no platform JWT, cookie priming, or header tricks are involved.
136
+ * The token is the deployment-provisioned `HYPER_ACP_WS_TOKEN`; each
137
+ * connect attempt reveals the secret through the OpenClaw-style per-secret
138
+ * endpoint — fresh per attempt, with a launch-epoch freshness guard
139
+ * mirroring the OpenClaw gateway flow. After the WebSocket upgrade the client's FIRST text
140
+ * frame is exactly `{"type":"auth","token":...}`; the server answers exactly
141
+ * one `{"type":"auth_ok"}` text frame and then replays. A close with code
142
+ * 4401 before `auth_ok` means the token was rejected: terminal for the
143
+ * subscription — the retry loop is skipped and `onClose` fires immediately
144
+ * with that code/reason (consumers treat 4401 as no-reconnect).
145
+ *
146
+ * Token-fetch failures on the FIRST attempt (empty value, stale launch
147
+ * epoch, or a `secret()` APIError 401/403/404) reject this promise as-is —
148
+ * they are never converted to {@link BuzzActivityRouteUnavailableError}. On
149
+ * a mid-life reconnect they surface via `onError` and end the subscription
150
+ * with a terminal `onClose`.
151
+ *
152
+ * A recognizable protocol message (`replay_end`, `replay_gap`, or an
153
+ * observer-shaped frame) arriving BEFORE `auth_ok` is a protocol violation
154
+ * — the signature of a skewed deployment (backend secret present, pod
155
+ * missing the token). It surfaces exactly one `onError` per subscription
156
+ * and never touches the retry budget, history-end, or dedup state (so a
157
+ * wedged stream cannot look healthy); the socket stays open so a healed pod
158
+ * recovers on its own.
159
+ *
160
+ * Reconnects with bounded backoff (1s/2s/4s). The server's session log
161
+ * re-plays from disk on reconnect; overlap dedup on (timestamp, seq) makes
162
+ * duplicates a no-op. A served `replay_end` also resets the retry budget,
163
+ * the route analogue of the relay transport's EOSE reset. A
164
+ * `{"type":"replay_gap"}` frame surfaces as a soft
165
+ * {@link BuzzActivityGapError}; the stream stays alive.
166
+ */
167
+ export declare function subscribeBuzzActivityRoute(deployments: BuzzRouteDeploymentsClient, agentIdOrName: string, handlers: BuzzActivityRouteHandlers): Promise<BuzzActivitySubscription>;
168
+ export type { BuzzRouteDeploymentsClient };
169
+ //# sourceMappingURL=buzz-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buzz-activity.d.ts","sourceRoot":"","sources":["../src/buzz-activity.ts"],"names":[],"mappings":"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"}