connectonion 0.0.5 → 0.0.6
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/dist/connect.d.ts +178 -42
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +524 -47
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/react/index.d.ts +62 -174
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +151 -160
- package/dist/react/useVoiceInput.d.ts +72 -0
- package/dist/react/useVoiceInput.d.ts.map +1 -0
- package/dist/react/useVoiceInput.js +171 -0
- package/dist/transcribe.d.ts +43 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/transcribe.js +181 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/connect.d.ts
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @purpose Client for connecting to remote agents via WebSocket
|
|
2
|
+
* @purpose Client for connecting to remote agents via WebSocket with automatic keep-alive, session recovery, and polling fallback
|
|
3
3
|
* @llm-note
|
|
4
|
-
* Dependencies: imports from [src/address.ts (AddressData, generate, load, sign, etc.)] | imported by [src/index.ts, src/react/index.ts, examples/connect-example.ts, tests/connect.test.ts] | tested by [tests/connect.test.ts]
|
|
5
|
-
* Data flow: connect(address, options) → creates RemoteAgent → agent.input(prompt) → opens WebSocket → sends INPUT{type, input_id, to, prompt, session
|
|
6
|
-
* State/Effects: opens WebSocket connections | sends signed/unsigned messages | updates internal UI events array | syncs session from server | generates/loads Ed25519 keys | saves keys to localStorage (browser) or .co/keys/ (Node.js)
|
|
7
|
-
* Integration: exposes connect(address, options), RemoteAgent class, Response,
|
|
8
|
-
* Performance:
|
|
9
|
-
* Errors: throws on timeout (
|
|
4
|
+
* Dependencies: imports from [src/address.ts (AddressData, generate, load, sign, etc.), src/types.ts (SessionStatus)] | imported by [src/index.ts, src/react/index.ts, examples/connect-example.ts, tests/connect.test.ts] | tested by [tests/connect.test.ts]
|
|
5
|
+
* Data flow: connect(address, options) → creates RemoteAgent → agent.input(prompt) → generates session_id (UUID) → saves to localStorage → opens WebSocket → sends INPUT{type, input_id, to, prompt, session{session_id}, signature?} → receives PING every 30s, responds with PONG → receives stream events (tool_call, tool_result, thinking, assistant) → receives OUTPUT{result, session_id, session} → clears localStorage → returns Response{text, done} | On disconnect/timeout: polls GET /sessions/{session_id} every 10s until result ready
|
|
6
|
+
* State/Effects: opens WebSocket connections | sends signed/unsigned messages | updates internal UI events array | syncs session from server | generates/loads Ed25519 keys | saves keys to localStorage (browser) or .co/keys/ (Node.js) | saves active session_id to localStorage for recovery | polls server via HTTP fetch on connection failure | health check interval detects dead connections
|
|
7
|
+
* Integration: exposes connect(address, options), RemoteAgent class, Response, ChatItem types, AgentStatus, ConnectOptions{enablePolling, pollIntervalMs, maxPollAttempts} | supports relay mode (wss://oo.openonion.ai) and direct mode (deployed agent URL) | Ed25519 signing for authentication | session persistence across calls | automatic recovery from network failures, timeouts, page refreshes
|
|
8
|
+
* Performance: 600s timeout default (10 min, up from 180s) | real-time WebSocket streaming | parallel tool execution on agent side | no client-side caching | auto-generates keys if missing | PING/PONG keep-alive every 30s | health check every 10s | polling fallback on failures | results persist 24h server-side
|
|
9
|
+
* Errors: throws on timeout (600s default) after polling exhausted | throws on WebSocket errors after polling attempt | throws on connection close after polling attempt | throws on ERROR messages from server | throws if session expired (404) during polling | includes error context in messages | graceful fallback to polling prevents data loss
|
|
10
10
|
*
|
|
11
11
|
* Architecture:
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Normal Flow:
|
|
13
|
+
* Client → /ws/input → Relay → Agent → OUTPUT → Relay → Client
|
|
14
|
+
*
|
|
15
|
+
* Keep-Alive:
|
|
16
|
+
* Server sends PING every 30s → Client responds PONG → Health check every 10s
|
|
17
|
+
*
|
|
18
|
+
* Recovery Flow (on disconnect/timeout):
|
|
19
|
+
* WebSocket fails → Poll GET /sessions/{session_id} every 10s → Status="done" → Return result
|
|
15
20
|
*
|
|
16
21
|
* Related Files:
|
|
17
22
|
* - oo-api/relay/routes.py: Relay server WebSocket endpoints
|
|
18
23
|
* - connectonion/network/connect.py: Python equivalent of this file
|
|
24
|
+
* - connectonion/network/asgi/websocket.py: Server-side PING sender
|
|
25
|
+
* - connectonion/network/host/session.py: SessionStorage for 24h TTL
|
|
19
26
|
* - src/react/index.ts: useAgent hook built on RemoteAgent
|
|
20
|
-
* -
|
|
27
|
+
* - src/types.ts: SessionStatus, PollResult interfaces
|
|
21
28
|
*/
|
|
22
29
|
import * as address from './address';
|
|
23
30
|
export type { AddressData } from './address';
|
|
@@ -31,43 +38,92 @@ export interface Response {
|
|
|
31
38
|
text: string;
|
|
32
39
|
done: boolean;
|
|
33
40
|
}
|
|
34
|
-
/**
|
|
35
|
-
export type
|
|
36
|
-
/**
|
|
37
|
-
|
|
41
|
+
/** Chat item type */
|
|
42
|
+
export type ChatItemType = 'user' | 'agent' | 'thinking' | 'tool_call' | 'ask_user' | 'approval_needed' | 'onboard_required' | 'onboard_success' | 'intent' | 'eval' | 'compact';
|
|
43
|
+
/** Chat item - data for rendering one element in chat UI */
|
|
44
|
+
export type ChatItem = {
|
|
38
45
|
id: string;
|
|
39
|
-
type: UIEventType;
|
|
40
|
-
}
|
|
41
|
-
/** User message event */
|
|
42
|
-
export interface UserUIEvent extends BaseUIEvent {
|
|
43
46
|
type: 'user';
|
|
44
47
|
content: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface AgentUIEvent extends BaseUIEvent {
|
|
48
|
+
} | {
|
|
49
|
+
id: string;
|
|
48
50
|
type: 'agent';
|
|
49
51
|
content: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface ThinkingUIEvent extends BaseUIEvent {
|
|
52
|
+
} | {
|
|
53
|
+
id: string;
|
|
53
54
|
type: 'thinking';
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
status: 'running' | 'done' | 'error';
|
|
56
|
+
model?: string;
|
|
57
|
+
duration_ms?: number;
|
|
58
|
+
content?: string;
|
|
59
|
+
kind?: string;
|
|
60
|
+
context_percent?: number;
|
|
61
|
+
usage?: {
|
|
62
|
+
input_tokens?: number;
|
|
63
|
+
output_tokens?: number;
|
|
64
|
+
prompt_tokens?: number;
|
|
65
|
+
completion_tokens?: number;
|
|
66
|
+
total_tokens?: number;
|
|
67
|
+
cost?: number;
|
|
68
|
+
};
|
|
69
|
+
} | {
|
|
70
|
+
id: string;
|
|
57
71
|
type: 'tool_call';
|
|
58
72
|
name: string;
|
|
59
73
|
args?: Record<string, unknown>;
|
|
60
74
|
status: 'running' | 'done' | 'error';
|
|
61
75
|
result?: string;
|
|
62
76
|
timing_ms?: number;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export interface AskUserUIEvent extends BaseUIEvent {
|
|
77
|
+
} | {
|
|
78
|
+
id: string;
|
|
66
79
|
type: 'ask_user';
|
|
67
80
|
text: string;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
81
|
+
options: string[];
|
|
82
|
+
multi_select: boolean;
|
|
83
|
+
} | {
|
|
84
|
+
id: string;
|
|
85
|
+
type: 'approval_needed';
|
|
86
|
+
tool: string;
|
|
87
|
+
arguments: Record<string, unknown>;
|
|
88
|
+
description?: string;
|
|
89
|
+
batch_remaining?: Array<{
|
|
90
|
+
tool: string;
|
|
91
|
+
arguments: string;
|
|
92
|
+
}>;
|
|
93
|
+
} | {
|
|
94
|
+
id: string;
|
|
95
|
+
type: 'onboard_required';
|
|
96
|
+
methods: string[];
|
|
97
|
+
paymentAmount?: number;
|
|
98
|
+
} | {
|
|
99
|
+
id: string;
|
|
100
|
+
type: 'onboard_success';
|
|
101
|
+
level: string;
|
|
102
|
+
message: string;
|
|
103
|
+
} | {
|
|
104
|
+
id: string;
|
|
105
|
+
type: 'intent';
|
|
106
|
+
status: 'analyzing' | 'understood';
|
|
107
|
+
ack?: string;
|
|
108
|
+
is_build?: boolean;
|
|
109
|
+
} | {
|
|
110
|
+
id: string;
|
|
111
|
+
type: 'eval';
|
|
112
|
+
status: 'evaluating' | 'done';
|
|
113
|
+
passed?: boolean;
|
|
114
|
+
summary?: string;
|
|
115
|
+
expected?: string;
|
|
116
|
+
eval_path?: string;
|
|
117
|
+
} | {
|
|
118
|
+
id: string;
|
|
119
|
+
type: 'compact';
|
|
120
|
+
status: 'compacting' | 'done' | 'error';
|
|
121
|
+
context_before?: number;
|
|
122
|
+
context_after?: number;
|
|
123
|
+
context_percent?: number;
|
|
124
|
+
message?: string;
|
|
125
|
+
error?: string;
|
|
126
|
+
};
|
|
71
127
|
type WebSocketLike = {
|
|
72
128
|
onopen: ((ev?: unknown) => unknown) | null;
|
|
73
129
|
onmessage: ((ev: {
|
|
@@ -97,6 +153,12 @@ export interface ConnectOptions {
|
|
|
97
153
|
directUrl?: string;
|
|
98
154
|
/** Custom WebSocket constructor */
|
|
99
155
|
wsCtor?: WebSocketCtor;
|
|
156
|
+
/** Enable polling fallback when WebSocket fails (default: true) */
|
|
157
|
+
enablePolling?: boolean;
|
|
158
|
+
/** Polling interval in milliseconds (default: 10000 / 10 seconds) */
|
|
159
|
+
pollIntervalMs?: number;
|
|
160
|
+
/** Maximum polling attempts (default: 30 / 5 minutes of polling) */
|
|
161
|
+
maxPollAttempts?: number;
|
|
100
162
|
}
|
|
101
163
|
/** Session state synced from server */
|
|
102
164
|
export interface SessionState {
|
|
@@ -140,17 +202,36 @@ export declare class RemoteAgent {
|
|
|
140
202
|
private _status;
|
|
141
203
|
/** Session state synced from server */
|
|
142
204
|
private _currentSession;
|
|
143
|
-
/**
|
|
144
|
-
private
|
|
145
|
-
/**
|
|
205
|
+
/** Chat items for rendering */
|
|
206
|
+
private _chatItems;
|
|
207
|
+
/** Active WebSocket for sending responses (ask_user, approval_needed, onboard) */
|
|
208
|
+
private _activeWs;
|
|
209
|
+
/** Pending prompt for retry after onboard success */
|
|
210
|
+
private _pendingPrompt;
|
|
211
|
+
/** Pending input ID for retry after onboard success */
|
|
212
|
+
private _pendingInputId;
|
|
213
|
+
/** Pending session ID for retry after onboard success */
|
|
214
|
+
private _pendingSessionId;
|
|
215
|
+
/**
|
|
216
|
+
* Fallback counter for UI event IDs.
|
|
217
|
+
* Most events (thinking, tool_call, assistant) use backend-generated UUIDs.
|
|
218
|
+
* Counter is only used for client-only events (user input) that have no backend ID.
|
|
219
|
+
*/
|
|
146
220
|
private _uiIdCounter;
|
|
221
|
+
/** Polling configuration */
|
|
222
|
+
private _enablePolling;
|
|
223
|
+
private _pollIntervalMs;
|
|
224
|
+
private _maxPollAttempts;
|
|
225
|
+
/** Ping/pong health tracking */
|
|
226
|
+
private _lastPingTime;
|
|
227
|
+
private _healthCheckInterval;
|
|
147
228
|
constructor(agentAddress: string, options?: ConnectOptions);
|
|
148
229
|
/** Current status: 'idle' | 'working' | 'waiting' */
|
|
149
230
|
get status(): AgentStatus;
|
|
150
231
|
/** Session state synced from server (read-only) */
|
|
151
232
|
get currentSession(): SessionState | null;
|
|
152
|
-
/**
|
|
153
|
-
get ui():
|
|
233
|
+
/** Chat items for rendering. One type = one component. */
|
|
234
|
+
get ui(): ChatItem[];
|
|
154
235
|
/** Clear session and UI state, start fresh */
|
|
155
236
|
reset(): void;
|
|
156
237
|
/** Alias for reset (backwards compatibility) */
|
|
@@ -160,7 +241,7 @@ export declare class RemoteAgent {
|
|
|
160
241
|
* Returns Response with text and done flag.
|
|
161
242
|
*
|
|
162
243
|
* @param prompt - User's input
|
|
163
|
-
* @param timeoutMs - Timeout in milliseconds (default:
|
|
244
|
+
* @param timeoutMs - Timeout in milliseconds (default: 600000 / 10 minutes)
|
|
164
245
|
* @returns Response with text and done flag
|
|
165
246
|
*/
|
|
166
247
|
input(prompt: string, timeoutMs?: number): Promise<Response>;
|
|
@@ -168,25 +249,80 @@ export declare class RemoteAgent {
|
|
|
168
249
|
* Async version of input (same as input, for API consistency with Python).
|
|
169
250
|
*/
|
|
170
251
|
inputAsync(prompt: string, timeoutMs?: number): Promise<Response>;
|
|
252
|
+
/**
|
|
253
|
+
* Respond to ask_user event.
|
|
254
|
+
* Only valid when status === 'waiting' after an ask_user event.
|
|
255
|
+
*
|
|
256
|
+
* @param answer - User's answer (string or array for multi-select)
|
|
257
|
+
*/
|
|
258
|
+
respond(answer: string | string[]): void;
|
|
259
|
+
/**
|
|
260
|
+
* Respond to approval_needed event.
|
|
261
|
+
* Only valid when status === 'waiting' after an approval_needed event.
|
|
262
|
+
*
|
|
263
|
+
* @param approved - Whether the tool is approved
|
|
264
|
+
* @param scope - 'once' for single use, 'session' to remember for session
|
|
265
|
+
* @param mode - Rejection mode: 'reject_soft' (skip, agent continues), 'reject_hard' (stop loop), 'reject_explain' (explain to user first)
|
|
266
|
+
* @param feedback - Optional feedback for the agent on why rejected
|
|
267
|
+
*/
|
|
268
|
+
respondToApproval(approved: boolean, scope?: 'once' | 'session', mode?: 'reject_soft' | 'reject_hard' | 'reject_explain', feedback?: string): void;
|
|
269
|
+
/**
|
|
270
|
+
* Submit onboard credentials (invite code or payment).
|
|
271
|
+
* Only valid when status === 'waiting' after an onboard_required event.
|
|
272
|
+
*
|
|
273
|
+
* @param options - Either inviteCode or payment
|
|
274
|
+
*/
|
|
275
|
+
submitOnboard(options: {
|
|
276
|
+
inviteCode?: string;
|
|
277
|
+
payment?: number;
|
|
278
|
+
}): void;
|
|
171
279
|
/**
|
|
172
280
|
* Ensure keys are loaded or generated (lazy initialization).
|
|
173
281
|
* Only runs once, on first connection attempt.
|
|
174
282
|
*/
|
|
175
283
|
private _ensureKeys;
|
|
284
|
+
/**
|
|
285
|
+
* Poll for session result when WebSocket fails or times out.
|
|
286
|
+
* Repeatedly checks GET /sessions/{session_id} until result is ready.
|
|
287
|
+
*/
|
|
288
|
+
private _pollForResult;
|
|
289
|
+
/**
|
|
290
|
+
* Save session ID to localStorage (browser only).
|
|
291
|
+
*/
|
|
292
|
+
private _saveSessionId;
|
|
293
|
+
/**
|
|
294
|
+
* Clear session ID from localStorage (browser only).
|
|
295
|
+
*/
|
|
296
|
+
private _clearSessionId;
|
|
297
|
+
/**
|
|
298
|
+
* Start health check interval to detect dead connections.
|
|
299
|
+
* Checks if PING received within 60 seconds, attempts reconnect if not.
|
|
300
|
+
*/
|
|
301
|
+
private _startHealthCheck;
|
|
302
|
+
/**
|
|
303
|
+
* Stop health check interval.
|
|
304
|
+
*/
|
|
305
|
+
private _stopHealthCheck;
|
|
176
306
|
/**
|
|
177
307
|
* Stream input to agent with real-time UI events.
|
|
178
308
|
* Uses directUrl if provided, otherwise routes via relay.
|
|
179
309
|
*/
|
|
180
310
|
private _streamInput;
|
|
311
|
+
/**
|
|
312
|
+
* Remove the optimistic thinking item (added for instant feedback).
|
|
313
|
+
*/
|
|
314
|
+
private _removeOptimisticThinking;
|
|
181
315
|
/**
|
|
182
316
|
* Handle streaming event and update UI.
|
|
183
317
|
* Merges tool_result into existing tool_call.
|
|
184
318
|
*/
|
|
185
319
|
private _handleStreamEvent;
|
|
186
320
|
/**
|
|
187
|
-
* Add
|
|
321
|
+
* Add chat item with ID for React keys.
|
|
322
|
+
* Backend events (thinking, tool_call, assistant) include UUID in event.id.
|
|
323
|
+
* Client-only events (user input) use fallback counter.
|
|
188
324
|
*/
|
|
189
|
-
private
|
|
325
|
+
private _addChatItem;
|
|
190
326
|
/** Sign a payload if keys are available */
|
|
191
327
|
private _signPayload;
|
|
192
328
|
toString(): string;
|
package/dist/connect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
|