connectonion 0.0.8 β†’ 0.0.10

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 (56) hide show
  1. package/README.md +120 -1
  2. package/dist/connect.d.ts +57 -32
  3. package/dist/connect.d.ts.map +1 -1
  4. package/dist/connect.js +76 -69
  5. package/dist/console.d.ts +31 -0
  6. package/dist/console.d.ts.map +1 -1
  7. package/dist/console.js +31 -0
  8. package/dist/core/agent.d.ts +57 -0
  9. package/dist/core/agent.d.ts.map +1 -1
  10. package/dist/core/agent.js +57 -0
  11. package/dist/index.d.ts +28 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +28 -0
  14. package/dist/llm/anthropic.d.ts +28 -0
  15. package/dist/llm/anthropic.d.ts.map +1 -1
  16. package/dist/llm/anthropic.js +28 -0
  17. package/dist/llm/gemini.d.ts +30 -0
  18. package/dist/llm/gemini.d.ts.map +1 -1
  19. package/dist/llm/gemini.js +30 -0
  20. package/dist/llm/index.d.ts +36 -0
  21. package/dist/llm/index.d.ts.map +1 -1
  22. package/dist/llm/index.js +36 -0
  23. package/dist/llm/llm-do.d.ts.map +1 -1
  24. package/dist/llm/llm-do.js +32 -0
  25. package/dist/llm/noop.d.ts +14 -0
  26. package/dist/llm/noop.d.ts.map +1 -1
  27. package/dist/llm/noop.js +14 -0
  28. package/dist/llm/openai.d.ts +39 -0
  29. package/dist/llm/openai.d.ts.map +1 -1
  30. package/dist/llm/openai.js +39 -0
  31. package/dist/react/index.d.ts +14 -24
  32. package/dist/react/index.d.ts.map +1 -1
  33. package/dist/react/index.js +50 -45
  34. package/dist/tools/email.d.ts.map +1 -1
  35. package/dist/tools/email.js +20 -0
  36. package/dist/tools/replay.d.ts +32 -0
  37. package/dist/tools/replay.d.ts.map +1 -1
  38. package/dist/tools/replay.js +32 -0
  39. package/dist/tools/tool-executor.d.ts +40 -0
  40. package/dist/tools/tool-executor.d.ts.map +1 -1
  41. package/dist/tools/tool-executor.js +40 -0
  42. package/dist/tools/tool-utils.d.ts +56 -0
  43. package/dist/tools/tool-utils.d.ts.map +1 -1
  44. package/dist/tools/tool-utils.js +56 -0
  45. package/dist/tools/xray.d.ts +48 -0
  46. package/dist/tools/xray.d.ts.map +1 -1
  47. package/dist/tools/xray.js +48 -0
  48. package/dist/trust/index.d.ts +27 -0
  49. package/dist/trust/index.d.ts.map +1 -1
  50. package/dist/trust/index.js +27 -0
  51. package/dist/trust/tools.d.ts.map +1 -1
  52. package/dist/trust/tools.js +26 -0
  53. package/dist/types.d.ts +40 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/types.js +40 -0
  56. package/package.json +1 -1
package/README.md CHANGED
@@ -205,7 +205,98 @@ While we recommend building agents in Python, you can also build simple agents d
205
205
 
206
206
  If you encounter bugs building agents in TypeScript, please [report them on GitHub](https://github.com/openonion/connectonion-ts/issues).
207
207
 
208
- ## πŸ—οΈ Project Structure
208
+ ## πŸ—οΈ Architecture
209
+
210
+ ### System Overview
211
+
212
+ ```
213
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
214
+ β”‚ ConnectOnion TypeScript SDK β”‚
215
+ β”‚ β”‚
216
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
217
+ β”‚ β”‚ Agent β”‚ β”‚ connect() β”‚ β”‚ llmDo() β”‚ β”‚
218
+ β”‚ β”‚ (local AI) β”‚ β”‚ (remote) β”‚ β”‚ (one-shot LLM call) β”‚ β”‚
219
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
220
+ β”‚ β”‚ β”‚ β”‚ β”‚
221
+ β”‚ β–Ό β–Ό β”‚ β”‚
222
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
223
+ β”‚ β”‚ LLM Factory β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
224
+ β”‚ β”‚ createLLM(model) β”‚ β”‚
225
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
226
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
227
+ β”‚ β–Ό β–Ό β–Ό β–Ό β”‚
228
+ β”‚ Anthropic OpenAI Gemini OpenOnion β”‚
229
+ β”‚ (claude-*) (gpt-*) (gemini-*) (co/*) β”‚
230
+ β”‚ β”‚
231
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
232
+ β”‚ β”‚ Tool System β”‚ β”‚ Trust β”‚ β”‚ Console β”‚ β”‚ Xray β”‚ β”‚
233
+ │ │ func→schema │ │ Levels │ │ Logging │ │ Debugger │ │
234
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
235
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
236
+ ```
237
+
238
+ ### Agent Execution Flow
239
+
240
+ ```
241
+ agent.input("What is 2+2?")
242
+ β”‚
243
+ β–Ό
244
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
245
+ β”‚ Init messages β”‚ [system prompt] + [user message]
246
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
247
+ β”‚
248
+ β–Ό
249
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
250
+ β”‚ Main Loop (max 10 iter) β”‚
251
+ β”‚ β”‚
252
+ β”‚ LLM.complete(messages, tools) β”‚
253
+ β”‚ β”‚ β”‚
254
+ β”‚ β”œβ”€β”€ No tool calls ──▢ EXIT β”‚
255
+ β”‚ β”‚ β”‚
256
+ β”‚ └── Tool calls found: β”‚
257
+ β”‚ Promise.all( β”‚
258
+ β”‚ tool_1.run(args), β”‚
259
+ β”‚ tool_2.run(args) β”‚
260
+ β”‚ ) β”‚
261
+ β”‚ β”‚ β”‚
262
+ β”‚ β–Ό β”‚
263
+ β”‚ Append results β†’ LOOP β”‚
264
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
265
+ β”‚
266
+ β–Ό
267
+ Return final text response
268
+ ```
269
+
270
+ ### Tool Conversion
271
+
272
+ ```
273
+ Your code SDK internals
274
+
275
+ function add(a: number, Tool {
276
+ b: number): number { ──▢ name: "add",
277
+ return a + b; description: "...",
278
+ } run(args) β†’ add(a, b),
279
+ toFunctionSchema() β†’ {
280
+ class API { type: "object",
281
+ search(q: string) {} ──▢ properties: {a: {type: "number"}, ...}
282
+ fetch(id: number) {} }
283
+ } }
284
+ ```
285
+
286
+ ### LLM Provider Routing
287
+
288
+ ```
289
+ createLLM(model)
290
+ β”‚
291
+ β”œβ”€β”€ "co/*" ──▢ OpenAI LLM + OpenOnion baseURL
292
+ β”œβ”€β”€ "claude-*" ──▢ Anthropic LLM (default)
293
+ β”œβ”€β”€ "gpt-*" ──▢ OpenAI LLM
294
+ β”œβ”€β”€ "o*" ──▢ OpenAI LLM
295
+ β”œβ”€β”€ "gemini-*" ──▢ Gemini LLM
296
+ └── (unknown) ──▢ Anthropic (fallback) or NoopLLM
297
+ ```
298
+
299
+ ### Project Structure
209
300
 
210
301
  ```
211
302
  your-project/
@@ -218,6 +309,34 @@ your-project/
218
309
  └── tsconfig.json
219
310
  ```
220
311
 
312
+ ### SDK Internal Structure
313
+
314
+ ```
315
+ src/
316
+ β”œβ”€β”€ core/
317
+ β”‚ └── agent.ts # Main Agent class (orchestrator)
318
+ β”œβ”€β”€ llm/
319
+ β”‚ β”œβ”€β”€ index.ts # LLM factory (routes model names)
320
+ β”‚ β”œβ”€β”€ anthropic.ts # Anthropic Claude provider (default)
321
+ β”‚ β”œβ”€β”€ openai.ts # OpenAI GPT/O-series provider
322
+ β”‚ β”œβ”€β”€ gemini.ts # Google Gemini provider
323
+ β”‚ β”œβ”€β”€ noop.ts # Fallback for missing config
324
+ β”‚ └── llm-do.ts # One-shot llmDo() helper
325
+ β”œβ”€β”€ tools/
326
+ β”‚ β”œβ”€β”€ tool-utils.ts # Function β†’ Tool conversion
327
+ β”‚ β”œβ”€β”€ tool-executor.ts # Execution + trace recording
328
+ β”‚ β”œβ”€β”€ xray.ts # Debug context injection (@xray)
329
+ β”‚ β”œβ”€β”€ replay.ts # Replay decorator for debugging
330
+ β”‚ └── email.ts # Mock email tools for demos/tests
331
+ β”œβ”€β”€ trust/
332
+ β”‚ β”œβ”€β”€ index.ts # Trust levels (open/careful/strict)
333
+ β”‚ └── tools.ts # Whitelist checks & verification
334
+ β”œβ”€β”€ connect.ts # Remote agent connection via relay
335
+ β”œβ”€β”€ console.ts # Dual logging (stderr + file)
336
+ β”œβ”€β”€ types.ts # Core TypeScript interfaces
337
+ └── index.ts # Public API exports
338
+ ```
339
+
221
340
  ---
222
341
 
223
342
  ## πŸ’¬ Join the Community
package/dist/connect.d.ts CHANGED
@@ -1,30 +1,56 @@
1
1
  /**
2
2
  * @purpose Client for connecting to remote agents via WebSocket with automatic keep-alive, session recovery, and polling fallback
3
- * @llm-note
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
3
  *
11
- * Architecture:
12
- * Normal Flow:
13
- * Client β†’ /ws/input β†’ Relay β†’ Agent β†’ OUTPUT β†’ Relay β†’ Client
4
+ * @graph Connection Modes
5
+ *
6
+ * connect('0xAddr', options?)
7
+ * β”‚
8
+ * β”œβ”€β”€ directUrl set? ──yes──▢ Direct: wss://{directUrl}/ws
9
+ * β”‚
10
+ * β”œβ”€β”€ resolveEndpoint()? ──found──▢ Direct: resolved wsUrl
11
+ * β”‚
12
+ * └── fallback ──▢ Relay: {relayUrl}/ws/input
14
13
  *
15
- * Keep-Alive:
16
- * Server sends PING every 30s β†’ Client responds PONG β†’ Health check every 10s
14
+ * @graph Remote Agent Communication Flow
17
15
  *
18
- * Recovery Flow (on disconnect/timeout):
19
- * WebSocket fails β†’ Poll GET /sessions/{session_id} every 10s β†’ Status="done" β†’ Return result
16
+ * Client (TS) Relay / Agent
17
+ * β”‚ β”‚
18
+ * β”‚ connect('0xAddr') β”‚
19
+ * β”‚ ──▢ RemoteAgent β”‚
20
+ * β”‚ (lazy-load Ed25519 keys) β”‚
21
+ * β”‚ β”‚
22
+ * β”‚ agent.input("prompt") β”‚
23
+ * β”‚ ──▢ WebSocket open ─────────▢ β”‚
24
+ * β”‚ INPUT{prompt, sig, to} β”‚ ──▢ agent processes
25
+ * β”‚ β”‚
26
+ * β”‚ ◀── PING ◀───────────────── β”‚ (every 30s keep-alive)
27
+ * β”‚ ──▢ PONG ──────────────────▢ β”‚
28
+ * β”‚ β”‚
29
+ * β”‚ ◀── stream events ◀──────── β”‚ (thinking, tool_call,
30
+ * β”‚ (update agent.ui[]) β”‚ tool_result, assistant)
31
+ * β”‚ β”‚
32
+ * β”‚ ◀── OUTPUT{result, session} β—€ β”‚
33
+ * β”‚ ws.close() β”‚
34
+ * β–Ό β–Ό
20
35
  *
21
- * Related Files:
22
- * - oo-api/relay/routes.py: Relay server WebSocket endpoints
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
26
- * - src/react/index.ts: useAgent hook built on RemoteAgent
27
- * - src/types.ts: SessionStatus, PollResult interfaces
36
+ * @graph Recovery Flow (on disconnect/timeout)
37
+ *
38
+ * WebSocket fails
39
+ * β”‚
40
+ * β–Ό
41
+ * Poll GET /sessions/{session_id} (every 10s)
42
+ * β”‚
43
+ * β”œβ”€β”€ status: "running" ──▢ retry poll
44
+ * β”œβ”€β”€ status: "done" ──▢ return result
45
+ * └── 404 / max attempts ──▢ throw Error
46
+ *
47
+ * @llm-note
48
+ * 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]
49
+ * Data flow: connect(address, options) β†’ creates RemoteAgent β†’ agent.input(prompt) β†’ generates session_id (UUID) β†’ opens WebSocket β†’ sends INPUT{type, input_id, to, prompt, session{session_id, messages}, signature?} β†’ receives PING every 30s, responds with PONG β†’ receives stream events (tool_call, tool_result, thinking, assistant) with session state β†’ receives OUTPUT{result, session_id, session} β†’ returns Response{text, done} | On disconnect/timeout: polls GET /sessions/{session_id} every 10s until result ready
50
+ * State/Effects: opens WebSocket connections | sends signed/unsigned messages | updates internal UI events array | syncs session from server events (in-memory) | generates/loads Ed25519 keys | saves keys to localStorage (browser) or .co/keys/ (Node.js) | polls server via HTTP fetch on connection failure | health check interval detects dead connections
51
+ * 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
52
+ * Performance: 600s timeout default (10 min) | real-time WebSocket streaming | PING/PONG keep-alive every 30s | health check every 10s | polling fallback on failures | results persist 24h server-side
53
+ * 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 | graceful fallback to polling prevents data loss
28
54
  */
29
55
  import * as address from './address';
30
56
  export type { AddressData } from './address';
@@ -45,6 +71,7 @@ export type ChatItem = {
45
71
  id: string;
46
72
  type: 'user';
47
73
  content: string;
74
+ images?: string[];
48
75
  } | {
49
76
  id: string;
50
77
  type: 'agent';
@@ -279,14 +306,20 @@ export declare class RemoteAgent {
279
306
  * Returns Response with text and done flag.
280
307
  *
281
308
  * @param prompt - User's input
282
- * @param timeoutMs - Timeout in milliseconds (default: 600000 / 10 minutes)
309
+ * @param options - Optional settings: images (base64 data URLs), timeoutMs
283
310
  * @returns Response with text and done flag
284
311
  */
285
- input(prompt: string, timeoutMs?: number): Promise<Response>;
312
+ input(prompt: string, options?: {
313
+ images?: string[];
314
+ timeoutMs?: number;
315
+ }): Promise<Response>;
286
316
  /**
287
317
  * Async version of input (same as input, for API consistency with Python).
288
318
  */
289
- inputAsync(prompt: string, timeoutMs?: number): Promise<Response>;
319
+ inputAsync(prompt: string, options?: {
320
+ images?: string[];
321
+ timeoutMs?: number;
322
+ }): Promise<Response>;
290
323
  /**
291
324
  * Respond to ask_user event.
292
325
  * Only valid when status === 'waiting' after an ask_user event.
@@ -324,14 +357,6 @@ export declare class RemoteAgent {
324
357
  * Repeatedly checks GET /sessions/{session_id} until result is ready.
325
358
  */
326
359
  private _pollForResult;
327
- /**
328
- * Save session ID to localStorage (browser only).
329
- */
330
- private _saveSessionId;
331
- /**
332
- * Clear session ID from localStorage (browser only).
333
- */
334
- private _clearSessionId;
335
360
  /**
336
361
  * Start health check interval to detect dead connections.
337
362
  * Checks if PING received within 60 seconds, attempts reconnect if not.
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
package/dist/connect.js CHANGED
@@ -1,31 +1,57 @@
1
1
  "use strict";
2
2
  /**
3
3
  * @purpose Client for connecting to remote agents via WebSocket with automatic keep-alive, session recovery, and polling fallback
4
- * @llm-note
5
- * 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]
6
- * 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
7
- * 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
8
- * 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
9
- * 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
10
- * 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
11
4
  *
12
- * Architecture:
13
- * Normal Flow:
14
- * Client β†’ /ws/input β†’ Relay β†’ Agent β†’ OUTPUT β†’ Relay β†’ Client
5
+ * @graph Connection Modes
6
+ *
7
+ * connect('0xAddr', options?)
8
+ * β”‚
9
+ * β”œβ”€β”€ directUrl set? ──yes──▢ Direct: wss://{directUrl}/ws
10
+ * β”‚
11
+ * β”œβ”€β”€ resolveEndpoint()? ──found──▢ Direct: resolved wsUrl
12
+ * β”‚
13
+ * └── fallback ──▢ Relay: {relayUrl}/ws/input
15
14
  *
16
- * Keep-Alive:
17
- * Server sends PING every 30s β†’ Client responds PONG β†’ Health check every 10s
15
+ * @graph Remote Agent Communication Flow
18
16
  *
19
- * Recovery Flow (on disconnect/timeout):
20
- * WebSocket fails β†’ Poll GET /sessions/{session_id} every 10s β†’ Status="done" β†’ Return result
17
+ * Client (TS) Relay / Agent
18
+ * β”‚ β”‚
19
+ * β”‚ connect('0xAddr') β”‚
20
+ * β”‚ ──▢ RemoteAgent β”‚
21
+ * β”‚ (lazy-load Ed25519 keys) β”‚
22
+ * β”‚ β”‚
23
+ * β”‚ agent.input("prompt") β”‚
24
+ * β”‚ ──▢ WebSocket open ─────────▢ β”‚
25
+ * β”‚ INPUT{prompt, sig, to} β”‚ ──▢ agent processes
26
+ * β”‚ β”‚
27
+ * β”‚ ◀── PING ◀───────────────── β”‚ (every 30s keep-alive)
28
+ * β”‚ ──▢ PONG ──────────────────▢ β”‚
29
+ * β”‚ β”‚
30
+ * β”‚ ◀── stream events ◀──────── β”‚ (thinking, tool_call,
31
+ * β”‚ (update agent.ui[]) β”‚ tool_result, assistant)
32
+ * β”‚ β”‚
33
+ * β”‚ ◀── OUTPUT{result, session} β—€ β”‚
34
+ * β”‚ ws.close() β”‚
35
+ * β–Ό β–Ό
21
36
  *
22
- * Related Files:
23
- * - oo-api/relay/routes.py: Relay server WebSocket endpoints
24
- * - connectonion/network/connect.py: Python equivalent of this file
25
- * - connectonion/network/asgi/websocket.py: Server-side PING sender
26
- * - connectonion/network/host/session.py: SessionStorage for 24h TTL
27
- * - src/react/index.ts: useAgent hook built on RemoteAgent
28
- * - src/types.ts: SessionStatus, PollResult interfaces
37
+ * @graph Recovery Flow (on disconnect/timeout)
38
+ *
39
+ * WebSocket fails
40
+ * β”‚
41
+ * β–Ό
42
+ * Poll GET /sessions/{session_id} (every 10s)
43
+ * β”‚
44
+ * β”œβ”€β”€ status: "running" ──▢ retry poll
45
+ * β”œβ”€β”€ status: "done" ──▢ return result
46
+ * └── 404 / max attempts ──▢ throw Error
47
+ *
48
+ * @llm-note
49
+ * 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]
50
+ * Data flow: connect(address, options) β†’ creates RemoteAgent β†’ agent.input(prompt) β†’ generates session_id (UUID) β†’ opens WebSocket β†’ sends INPUT{type, input_id, to, prompt, session{session_id, messages}, signature?} β†’ receives PING every 30s, responds with PONG β†’ receives stream events (tool_call, tool_result, thinking, assistant) with session state β†’ receives OUTPUT{result, session_id, session} β†’ returns Response{text, done} | On disconnect/timeout: polls GET /sessions/{session_id} every 10s until result ready
51
+ * State/Effects: opens WebSocket connections | sends signed/unsigned messages | updates internal UI events array | syncs session from server events (in-memory) | generates/loads Ed25519 keys | saves keys to localStorage (browser) or .co/keys/ (Node.js) | polls server via HTTP fetch on connection failure | health check interval detects dead connections
52
+ * 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
53
+ * Performance: 600s timeout default (10 min) | real-time WebSocket streaming | PING/PONG keep-alive every 30s | health check every 10s | polling fallback on failures | results persist 24h server-side
54
+ * 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 | graceful fallback to polling prevents data loss
29
55
  */
30
56
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
31
57
  if (k2 === undefined) k2 = k;
@@ -360,17 +386,19 @@ class RemoteAgent {
360
386
  * Returns Response with text and done flag.
361
387
  *
362
388
  * @param prompt - User's input
363
- * @param timeoutMs - Timeout in milliseconds (default: 600000 / 10 minutes)
389
+ * @param options - Optional settings: images (base64 data URLs), timeoutMs
364
390
  * @returns Response with text and done flag
365
391
  */
366
- async input(prompt, timeoutMs = 600000) {
367
- return this._streamInput(prompt, timeoutMs);
392
+ async input(prompt, options) {
393
+ const timeoutMs = options?.timeoutMs ?? 600000;
394
+ const images = options?.images;
395
+ return this._streamInput(prompt, timeoutMs, images);
368
396
  }
369
397
  /**
370
398
  * Async version of input (same as input, for API consistency with Python).
371
399
  */
372
- async inputAsync(prompt, timeoutMs = 600000) {
373
- return this.input(prompt, timeoutMs);
400
+ async inputAsync(prompt, options) {
401
+ return this.input(prompt, options);
374
402
  }
375
403
  /**
376
404
  * Respond to ask_user event.
@@ -493,32 +521,6 @@ class RemoteAgent {
493
521
  }
494
522
  throw new Error('Polling timeout: Result not ready after maximum attempts');
495
523
  }
496
- /**
497
- * Save session ID to localStorage (browser only).
498
- */
499
- _saveSessionId(sessionId) {
500
- if (isBrowserEnv() && typeof globalThis !== 'undefined' && 'localStorage' in globalThis) {
501
- try {
502
- globalThis.localStorage.setItem('connectonion_active_session', sessionId);
503
- }
504
- catch {
505
- // Ignore localStorage errors
506
- }
507
- }
508
- }
509
- /**
510
- * Clear session ID from localStorage (browser only).
511
- */
512
- _clearSessionId() {
513
- if (isBrowserEnv() && typeof globalThis !== 'undefined' && 'localStorage' in globalThis) {
514
- try {
515
- globalThis.localStorage.removeItem('connectonion_active_session');
516
- }
517
- catch {
518
- // Ignore localStorage errors
519
- }
520
- }
521
- }
522
524
  /**
523
525
  * Start health check interval to detect dead connections.
524
526
  * Checks if PING received within 60 seconds, attempts reconnect if not.
@@ -538,16 +540,13 @@ class RemoteAgent {
538
540
  if (this._enablePolling) {
539
541
  this._pollForResult(sessionId)
540
542
  .then((result) => {
541
- this._clearSessionId();
542
543
  resolve({ text: result, done: true });
543
544
  })
544
545
  .catch((pollError) => {
545
- this._clearSessionId();
546
546
  reject(new Error(`Connection health check failed and polling failed: ${pollError}`));
547
547
  });
548
548
  }
549
549
  else {
550
- this._clearSessionId();
551
550
  reject(new Error('Connection health check failed: No PING received for 60 seconds'));
552
551
  }
553
552
  }
@@ -584,21 +583,20 @@ class RemoteAgent {
584
583
  * Stream input to agent with real-time UI events.
585
584
  * Uses directUrl if provided, otherwise tries auto-discovery, then falls back to relay.
586
585
  */
587
- async _streamInput(prompt, timeoutMs) {
586
+ async _streamInput(prompt, timeoutMs, images) {
588
587
  // Lazy-load keys on first use
589
588
  this._ensureKeys();
590
589
  // Try endpoint resolution (once, cached)
591
590
  await this._tryResolveEndpoint();
592
591
  // Add user event to UI
593
- this._addChatItem({ type: 'user', content: prompt });
592
+ this._addChatItem({ type: 'user', content: prompt, images });
594
593
  // Add optimistic thinking (shows immediately, removed when real events arrive)
595
594
  this._addChatItem({ type: 'thinking', id: '__optimistic__', status: 'running' });
596
595
  // Set status to working
597
596
  this._status = 'working';
598
597
  const inputId = generateUUID();
599
- // Generate or reuse session_id for tracking and polling fallback
598
+ // Reuse existing session_id or generate new one for tracking and polling fallback
600
599
  const sessionId = this._currentSession?.session_id || generateUUID();
601
- this._saveSessionId(sessionId);
602
600
  // Choose connection mode: direct (explicit or resolved) or via relay
603
601
  let wsUrl;
604
602
  let isDirect = false;
@@ -634,16 +632,16 @@ class RemoteAgent {
634
632
  if (this._enablePolling) {
635
633
  try {
636
634
  const result = await this._pollForResult(sessionId);
637
- this._clearSessionId();
635
+ // Don't clear session - keep for next message
638
636
  resolve({ text: result, done: true });
639
637
  }
640
638
  catch (pollError) {
641
- this._clearSessionId();
639
+ // Don't clear session - keep for retry with context
642
640
  reject(new Error(`Connection timed out and polling failed: ${pollError}`));
643
641
  }
644
642
  }
645
643
  else {
646
- this._clearSessionId();
644
+ // Don't clear session - keep for retry with context
647
645
  reject(new Error('Connection timed out'));
648
646
  }
649
647
  }
@@ -667,6 +665,10 @@ class RemoteAgent {
667
665
  prompt,
668
666
  ...signed,
669
667
  };
668
+ // Add images if provided
669
+ if (images && images.length > 0) {
670
+ inputMessage.images = images;
671
+ }
670
672
  // Only include 'to' for relay mode
671
673
  if (!isDirect) {
672
674
  inputMessage.to = this.address;
@@ -720,6 +722,10 @@ class RemoteAgent {
720
722
  data?.type === 'intent' || data?.type === 'eval' || data?.type === 'compact' ||
721
723
  data?.type === 'tool_blocked') {
722
724
  this._handleStreamEvent(data);
725
+ // Sync session state from each event (client is source of truth)
726
+ if (data.session) {
727
+ this._currentSession = data.session;
728
+ }
723
729
  }
724
730
  // Handle ask_user event (agent needs more input)
725
731
  // Keep WebSocket OPEN - user will respond via respond() method
@@ -807,6 +813,7 @@ class RemoteAgent {
807
813
  settled = true;
808
814
  clearTimeout(timer);
809
815
  this._stopHealthCheck();
816
+ this._removeOptimisticThinking();
810
817
  this._status = 'idle';
811
818
  // Sync session from server
812
819
  if (data.session) {
@@ -821,7 +828,7 @@ class RemoteAgent {
821
828
  }
822
829
  }
823
830
  this._activeWs = null; // Clear before close
824
- this._clearSessionId(); // Clear session_id on success
831
+ // Don't clear session - keep for next message in conversation
825
832
  try {
826
833
  ws.close();
827
834
  }
@@ -835,7 +842,7 @@ class RemoteAgent {
835
842
  this._stopHealthCheck();
836
843
  this._status = 'idle';
837
844
  this._activeWs = null; // Clear before close
838
- this._clearSessionId(); // Clear session_id on error
845
+ // Don't clear session - keep for retry with context
839
846
  try {
840
847
  ws.close();
841
848
  }
@@ -848,7 +855,7 @@ class RemoteAgent {
848
855
  clearTimeout(timer);
849
856
  this._stopHealthCheck();
850
857
  this._status = 'idle';
851
- this._clearSessionId(); // Clear session_id on error
858
+ // Don't clear session - keep for retry with context
852
859
  try {
853
860
  ws.close();
854
861
  }
@@ -871,7 +878,7 @@ class RemoteAgent {
871
878
  if (this._enablePolling) {
872
879
  try {
873
880
  const result = await this._pollForResult(sessionId);
874
- this._clearSessionId();
881
+ // Don't clear session - keep for next message
875
882
  resolve({ text: result, done: true });
876
883
  return;
877
884
  }
@@ -879,7 +886,7 @@ class RemoteAgent {
879
886
  // Polling failed, fall through to original error
880
887
  }
881
888
  }
882
- this._clearSessionId();
889
+ // Don't clear session - keep for retry with context
883
890
  reject(new Error(`WebSocket error: ${String(err)}`));
884
891
  };
885
892
  ws.onclose = async () => {
@@ -893,7 +900,7 @@ class RemoteAgent {
893
900
  if (this._enablePolling) {
894
901
  try {
895
902
  const result = await this._pollForResult(sessionId);
896
- this._clearSessionId();
903
+ // Don't clear session - keep for next message
897
904
  resolve({ text: result, done: true });
898
905
  return;
899
906
  }
@@ -901,7 +908,7 @@ class RemoteAgent {
901
908
  // Polling failed, fall through to original error
902
909
  }
903
910
  }
904
- this._clearSessionId();
911
+ // Don't clear session - keep for retry with context
905
912
  reject(new Error('Connection closed before response'));
906
913
  }
907
914
  };
package/dist/console.d.ts CHANGED
@@ -1,5 +1,36 @@
1
1
  /**
2
2
  * @purpose Dual-output logging system (terminal + optional file) that mirrors Python SDK UX with colored terminal output and @xray tool tracing
3
+ *
4
+ * @graph Dual Output Flow
5
+ *
6
+ * Agent / Tool Executor
7
+ * β”‚
8
+ * β–Ό
9
+ * console.print(message)
10
+ * β”‚
11
+ * β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
12
+ * β–Ό β–Ό
13
+ * β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
14
+ * β”‚ stderr (TTY) β”‚ β”‚ Log File (optional) β”‚
15
+ * β”‚ β”‚ β”‚ β”‚
16
+ * β”‚ [HH:MM:SS] β”‚ β”‚ .co/logs/{name}.log β”‚
17
+ * β”‚ + ANSI colors β”‚ β”‚ plain text, no ANSI β”‚
18
+ * β”‚ + dim timestamp β”‚ β”‚ + [timestamp] prefix β”‚
19
+ * β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
20
+ *
21
+ * @graph @xray Output Block
22
+ *
23
+ * printXray(toolName, args, result, timing, context)
24
+ * β”‚
25
+ * β–Ό
26
+ * β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
27
+ * β”‚ @xray: toolName β”‚
28
+ * β”‚ agent: myAgent iter: 3 β”‚
29
+ * β”‚ args: { query: "hello" } β”‚
30
+ * β”‚ result: "world" β”‚
31
+ * β”‚ timing: 42ms β”‚
32
+ * β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
33
+ *
3
34
  * @llm-note
4
35
  * Dependencies: imports from [node:fs, node:path] | imported by [src/core/agent.ts, src/tools/tool-executor.ts] | tested by agent tests
5
36
  * Data flow: receives log messages/xray traces β†’ formats with timestamps/colors β†’ writes to stderr + optional file (.co/logs/{name}.log)
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,CAAC,EAAE,MAAM;IAM5B,OAAO,CAAC,WAAW;IASnB,KAAK,CAAC,OAAO,EAAE,MAAM;IAUrB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAgBvE,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;CACb"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAKH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,CAAC,EAAE,MAAM;IAM5B,OAAO,CAAC,WAAW;IASnB,KAAK,CAAC,OAAO,EAAE,MAAM;IAUrB,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAgBvE,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;CACb"}