@octavus/docs 3.0.0 → 3.2.0

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 (59) hide show
  1. package/content/01-getting-started/01-introduction.md +15 -15
  2. package/content/01-getting-started/02-quickstart.md +2 -2
  3. package/content/02-server-sdk/01-overview.md +6 -6
  4. package/content/02-server-sdk/02-sessions.md +1 -1
  5. package/content/02-server-sdk/03-tools.md +4 -4
  6. package/content/02-server-sdk/04-streaming.md +1 -1
  7. package/content/02-server-sdk/05-cli.md +15 -15
  8. package/content/02-server-sdk/06-workers.md +8 -8
  9. package/content/02-server-sdk/07-debugging.md +7 -7
  10. package/content/02-server-sdk/08-computer.md +4 -4
  11. package/content/03-client-sdk/01-overview.md +11 -11
  12. package/content/03-client-sdk/02-messages.md +28 -1
  13. package/content/03-client-sdk/03-streaming.md +3 -3
  14. package/content/03-client-sdk/04-execution-blocks.md +1 -1
  15. package/content/03-client-sdk/05-socket-transport.md +5 -5
  16. package/content/03-client-sdk/06-http-transport.md +5 -5
  17. package/content/03-client-sdk/07-structured-output.md +3 -3
  18. package/content/03-client-sdk/08-file-uploads.md +2 -2
  19. package/content/03-client-sdk/09-error-handling.md +3 -3
  20. package/content/03-client-sdk/10-client-tools.md +3 -3
  21. package/content/04-protocol/01-overview.md +19 -18
  22. package/content/04-protocol/02-input-resources.md +1 -1
  23. package/content/04-protocol/03-triggers.md +1 -1
  24. package/content/04-protocol/04-tools.md +6 -6
  25. package/content/04-protocol/05-skills.md +5 -5
  26. package/content/04-protocol/06-handlers.md +3 -0
  27. package/content/04-protocol/07-agent-config.md +114 -21
  28. package/content/04-protocol/09-skills-advanced.md +18 -18
  29. package/content/04-protocol/10-types.md +22 -22
  30. package/content/04-protocol/11-workers.md +31 -30
  31. package/content/04-protocol/12-references.md +10 -10
  32. package/content/04-protocol/13-mcp-servers.md +95 -6
  33. package/content/05-api-reference/02-sessions.md +2 -2
  34. package/content/06-examples/02-nextjs-chat.md +3 -3
  35. package/content/06-examples/03-socket-chat.md +3 -3
  36. package/dist/chunk-R4UMXGAC.js +1523 -0
  37. package/dist/chunk-R4UMXGAC.js.map +1 -0
  38. package/dist/content.js +1 -1
  39. package/dist/docs.json +40 -40
  40. package/dist/index.js +1 -1
  41. package/dist/search-index.json +1 -1
  42. package/dist/search.js +1 -1
  43. package/dist/search.js.map +1 -1
  44. package/dist/sections.json +40 -40
  45. package/package.json +1 -1
  46. package/dist/chunk-4XCEGHY7.js +0 -1549
  47. package/dist/chunk-4XCEGHY7.js.map +0 -1
  48. package/dist/chunk-BKMROUXE.js +0 -1523
  49. package/dist/chunk-BKMROUXE.js.map +0 -1
  50. package/dist/chunk-HMRAGEPN.js +0 -1523
  51. package/dist/chunk-HMRAGEPN.js.map +0 -1
  52. package/dist/chunk-HQCOEPPD.js +0 -1523
  53. package/dist/chunk-HQCOEPPD.js.map +0 -1
  54. package/dist/chunk-J5MPASK3.js +0 -1523
  55. package/dist/chunk-J5MPASK3.js.map +0 -1
  56. package/dist/chunk-TFR7YOK2.js +0 -1523
  57. package/dist/chunk-TFR7YOK2.js.map +0 -1
  58. package/dist/chunk-XVO2F2JU.js +0 -1523
  59. package/dist/chunk-XVO2F2JU.js.map +0 -1
@@ -11,11 +11,11 @@ Octavus is an agent orchestration platform that lets developers define, manage,
11
11
 
12
12
  Building and managing AI agents is complex. Developers face challenges with:
13
13
 
14
- - **Fragmented tooling** No unified way to define, manage, and deploy agents
15
- - **Prompt management** Prompts are scattered across codebases, hard to version and iterate
16
- - **Integration complexity** Connecting agents to tools, resources, and other agents requires significant custom work
17
- - **Observability** Difficult to debug, monitor, and understand agent behavior in production
18
- - **Infrastructure overhead** Teams rebuild the same agent infrastructure repeatedly
14
+ - **Fragmented tooling** - No unified way to define, manage, and deploy agents
15
+ - **Prompt management** - Prompts are scattered across codebases, hard to version and iterate
16
+ - **Integration complexity** - Connecting agents to tools, resources, and other agents requires significant custom work
17
+ - **Observability** - Difficult to debug, monitor, and understand agent behavior in production
18
+ - **Infrastructure overhead** - Teams rebuild the same agent infrastructure repeatedly
19
19
 
20
20
  Octavus solves these problems by providing:
21
21
 
@@ -30,7 +30,7 @@ Octavus solves these problems by providing:
30
30
 
31
31
  ### Agents
32
32
 
33
- An **Agent** is the main entity in Octavus a self-contained unit that defines how an AI agent behaves. Agents are defined using YAML protocols that specify:
33
+ An **Agent** is the main entity in Octavus - a self-contained unit that defines how an AI agent behaves. Agents are defined using YAML protocols that specify:
34
34
 
35
35
  - Input variables the agent accepts
36
36
  - Triggers that invoke the agent (user messages, button clicks, API calls)
@@ -49,16 +49,16 @@ A **Session** represents a conversation with an agent. Sessions:
49
49
 
50
50
  **Triggers** define how an agent is invoked:
51
51
 
52
- - **User Message** Respond to a text message in a chat interface
53
- - **User Action** Respond to UI actions (button clicks, form submissions)
54
- - **API Call** Direct invocation via SDK
52
+ - **User Message** - Respond to a text message in a chat interface
53
+ - **User Action** - Respond to UI actions (button clicks, form submissions)
54
+ - **API Call** - Direct invocation via SDK
55
55
 
56
56
  ### Tools
57
57
 
58
58
  **Tools** extend what agents can do:
59
59
 
60
- - **External Tools** Consumer-defined tools that call back to your systems
61
- - **Internal Tools** Built-in capabilities (web search, code execution)
60
+ - **External Tools** - Consumer-defined tools that call back to your systems
61
+ - **Internal Tools** - Built-in capabilities (web search, code execution)
62
62
 
63
63
  Tools execute on your server, not on Octavus, giving you full control over data and authentication.
64
64
 
@@ -87,7 +87,7 @@ sequenceDiagram
87
87
 
88
88
  ## Next Steps
89
89
 
90
- - [Quick Start](/docs/getting-started/quickstart) Get your first agent running in minutes
91
- - [Server SDK](/docs/server-sdk/overview) Learn about backend integration
92
- - [Client SDK](/docs/client-sdk/overview) Build chat interfaces with React (or other frameworks)
93
- - [Protocol Reference](/docs/protocol/overview) Deep dive into agent protocols
90
+ - [Quick Start](/docs/getting-started/quickstart) - Get your first agent running in minutes
91
+ - [Server SDK](/docs/server-sdk/overview) - Learn about backend integration
92
+ - [Client SDK](/docs/client-sdk/overview) - Build chat interfaces with React (or other frameworks)
93
+ - [Protocol Reference](/docs/protocol/overview) - Deep dive into agent protocols
@@ -17,7 +17,7 @@ This guide will walk you through integrating Octavus into your application in un
17
17
 
18
18
  Before integrating with SDKs, use **Agent Preview** to test your agent directly in the platform:
19
19
 
20
- 1. Open your agent in the platform at `octavus.ai/platform/agents/[agentId]`
20
+ 1. Open your agent in the platform (navigate to your project, then select the agent)
21
21
  2. Click the **Preview** tab
22
22
  3. Configure session inputs and tool mock responses
23
23
  4. Start a conversation to test agent behavior
@@ -81,7 +81,7 @@ There are two ways to create and manage agents:
81
81
  **Option 1: Platform UI (Recommended for getting started)**
82
82
 
83
83
  1. Go to [octavus.ai](https://octavus.ai) and create an agent in the web editor
84
- 2. Copy the agent ID from the URL (e.g., `octavus.ai/platform/agents/clxyz123abc456`)
84
+ 2. Copy the agent ID from the URL (e.g., `octavus.ai/projects/.../agents/clxyz123abc456`)
85
85
  3. Add it to your `.env.local`: `OCTAVUS_SUPPORT_AGENT_ID=clxyz123abc456`
86
86
 
87
87
  **Option 2: Local Development with CLI**
@@ -263,9 +263,9 @@ The client uploads files directly to S3 using the presigned upload URL. See [Fil
263
263
 
264
264
  ## Next Steps
265
265
 
266
- - [Sessions](/docs/server-sdk/sessions) Deep dive into session management
267
- - [Tools](/docs/server-sdk/tools) Implementing tool handlers
268
- - [Streaming](/docs/server-sdk/streaming) Understanding stream events
269
- - [Workers](/docs/server-sdk/workers) Executing worker agents
270
- - [Debugging](/docs/server-sdk/debugging) Model request tracing and debugging
271
- - [Computer](/docs/server-sdk/computer) Browser, filesystem, and shell via MCP
266
+ - [Sessions](/docs/server-sdk/sessions) - Deep dive into session management
267
+ - [Tools](/docs/server-sdk/tools) - Implementing tool handlers
268
+ - [Streaming](/docs/server-sdk/streaming) - Understanding stream events
269
+ - [Workers](/docs/server-sdk/workers) - Executing worker agents
270
+ - [Debugging](/docs/server-sdk/debugging) - Model request tracing and debugging
271
+ - [Computer](/docs/server-sdk/computer) - Browser, filesystem, and shell via MCP
@@ -416,7 +416,7 @@ interface ClearSessionResult {
416
416
  }
417
417
  ```
418
418
 
419
- This is idempotent calling `clear()` on an already expired session succeeds without error.
419
+ This is idempotent - calling `clear()` on an already expired session succeeds without error.
420
420
 
421
421
  ## Error Handling
422
422
 
@@ -28,10 +28,10 @@ For client-side tool handling, see [Client Tools](/docs/client-sdk/client-tools)
28
28
 
29
29
  Server-side tools give you full control:
30
30
 
31
- - ✅ **Full data access** Query your database directly
32
- - ✅ **Your authentication** Use your existing auth context
33
- - ✅ **No data exposure** Sensitive data never leaves your infrastructure
34
- - ✅ **Custom logic** Any complexity you need
31
+ - ✅ **Full data access** - Query your database directly
32
+ - ✅ **Your authentication** - Use your existing auth context
33
+ - ✅ **No data exposure** - Sensitive data never leaves your infrastructure
34
+ - ✅ **Custom logic** - Any complexity you need
35
35
 
36
36
  ## Defining Tool Handlers
37
37
 
@@ -41,7 +41,7 @@ The `X-Accel-Buffering: no` header disables proxy buffering on Nginx-based infra
41
41
 
42
42
  ### Heartbeat
43
43
 
44
- `toSSEStream` automatically sends SSE comment lines (`: heartbeat`) every 15 seconds during idle periods. This prevents proxies and load balancers from closing the connection due to inactivity particularly important during multi-step executions where the stream may be silent while waiting for tool processing or LLM responses.
44
+ `toSSEStream` automatically sends SSE comment lines (`: heartbeat`) every 15 seconds during idle periods. This prevents proxies and load balancers from closing the connection due to inactivity - particularly important during multi-step executions where the stream may be silent while waiting for tool processing or LLM responses.
45
45
 
46
46
  Heartbeat comments are ignored by all SSE parsers per the spec. No client-side handling is needed.
47
47
 
@@ -88,8 +88,8 @@ octavus sync ./agents/my-agent
88
88
 
89
89
  **Options:**
90
90
 
91
- - `--json` Output as JSON (for CI/CD parsing)
92
- - `--quiet` Suppress non-essential output
91
+ - `--json` - Output as JSON (for CI/CD parsing)
92
+ - `--quiet` - Suppress non-essential output
93
93
 
94
94
  **Example output:**
95
95
 
@@ -110,9 +110,9 @@ octavus validate ./agents/my-agent
110
110
 
111
111
  **Exit codes:**
112
112
 
113
- - `0` Validation passed
114
- - `1` Validation errors
115
- - `2` Configuration errors (missing API key, etc.)
113
+ - `0` - Validation passed
114
+ - `1` - Validation errors
115
+ - `2` - Configuration errors (missing API key, etc.)
116
116
 
117
117
  ### `octavus list`
118
118
 
@@ -150,8 +150,8 @@ octavus archive support-chat
150
150
 
151
151
  **Options:**
152
152
 
153
- - `--json` Output as JSON (for CI/CD parsing)
154
- - `--quiet` Suppress non-essential output
153
+ - `--json` - Output as JSON (for CI/CD parsing)
154
+ - `--quiet` - Suppress non-essential output
155
155
 
156
156
  **Example output:**
157
157
 
@@ -171,8 +171,8 @@ octavus skills sync ./skills/github
171
171
 
172
172
  **Options:**
173
173
 
174
- - `--json` Output as JSON (for CI/CD parsing)
175
- - `--quiet` Suppress non-essential output
174
+ - `--json` - Output as JSON (for CI/CD parsing)
175
+ - `--quiet` - Suppress non-essential output
176
176
 
177
177
  **Example output:**
178
178
 
@@ -187,7 +187,7 @@ octavus skills sync ./skills/github
187
187
 
188
188
  **Secret handling:**
189
189
 
190
- If the skill directory contains a `.env` file, secrets are pushed alongside the bundle. Secrets are cross-validated against the `secrets` declarations in `SKILL.md` warnings are shown for undeclared or missing required secrets.
190
+ If the skill directory contains a `.env` file, secrets are pushed alongside the bundle. Secrets are cross-validated against the `secrets` declarations in `SKILL.md` - warnings are shown for undeclared or missing required secrets.
191
191
 
192
192
  ```
193
193
  my-skill/
@@ -289,11 +289,11 @@ Add sync scripts to your `package.json`:
289
289
 
290
290
  The recommended workflow for managing agents:
291
291
 
292
- 1. **Define agent locally** Create `settings.json`, `protocol.yaml`, and prompts
293
- 2. **Validate** Run `octavus validate ./my-agent` to check for errors
294
- 3. **Sync** Run `octavus sync ./my-agent` to push to platform
295
- 4. **Store agent ID** Save the output ID in an environment variable
296
- 5. **Use in app** Read the ID from env and pass to `client.agentSessions.create()`
292
+ 1. **Define agent locally** - Create `settings.json`, `protocol.yaml`, and prompts
293
+ 2. **Validate** - Run `octavus validate ./my-agent` to check for errors
294
+ 3. **Sync** - Run `octavus sync ./my-agent` to push to platform
295
+ 4. **Store agent ID** - Save the output ID in an environment variable
296
+ 5. **Use in app** - Read the ID from env and pass to `client.agentSessions.create()`
297
297
 
298
298
  ```bash
299
299
  # After syncing: octavus sync ./agents/support-chat
@@ -92,7 +92,7 @@ interface WorkerExecuteOptions {
92
92
  tools?: ToolHandlers;
93
93
  /** Abort signal to cancel the execution */
94
94
  signal?: AbortSignal;
95
- /** Dynamic tool schemas (e.g., from MCP servers browser, filesystem, shell) */
95
+ /** Dynamic tool schemas (e.g., from MCP servers - browser, filesystem, shell) */
96
96
  dynamicToolSchemas?: ToolSchema[];
97
97
  }
98
98
  ```
@@ -128,7 +128,7 @@ const { output } = await client.workers.generate(
128
128
  );
129
129
  ```
130
130
 
131
- Tools defined in the worker protocol but not provided as handlers become client tools the execution pauses and emits a `client-tool-request` event.
131
+ Tools defined in the worker protocol but not provided as handlers become client tools - the execution pauses and emits a `client-tool-request` event.
132
132
 
133
133
  ## Error Handling
134
134
 
@@ -146,7 +146,7 @@ try {
146
146
  if (error instanceof WorkerError) {
147
147
  console.error('Worker failed:', error.message);
148
148
  if (error.sessionId) {
149
- console.error(`Debug: ${client.baseUrl}/platform/sessions/${error.sessionId}`);
149
+ console.error(`Debug: ${client.baseUrl}/sessions/${error.sessionId}`);
150
150
  }
151
151
  }
152
152
  }
@@ -211,7 +211,7 @@ try {
211
211
 
212
212
  ## Streaming
213
213
 
214
- When you need real-time visibility into the worker's execution text generation, tool calls, or progress use `execute()` instead of `generate()`.
214
+ When you need real-time visibility into the worker's execution - text generation, tool calls, or progress - use `execute()` instead of `generate()`.
215
215
 
216
216
  ### Basic Streaming
217
217
 
@@ -359,7 +359,7 @@ try {
359
359
  if (error instanceof WorkerError) {
360
360
  console.error('Failed:', error.message);
361
361
  if (error.sessionId) {
362
- console.error(`Debug: ${client.baseUrl}/platform/sessions/${error.sessionId}`);
362
+ console.error(`Debug: ${client.baseUrl}/sessions/${error.sessionId}`);
363
363
  }
364
364
  }
365
365
  }
@@ -434,6 +434,6 @@ console.log('Result:', result);
434
434
 
435
435
  ## Next Steps
436
436
 
437
- - [Workers Protocol](/docs/protocol/workers) Worker protocol reference
438
- - [Streaming](/docs/server-sdk/streaming) Understanding stream events
439
- - [Tools](/docs/server-sdk/tools) Tool handler patterns
437
+ - [Workers Protocol](/docs/protocol/workers) - Worker protocol reference
438
+ - [Streaming](/docs/server-sdk/streaming) - Understanding stream events
439
+ - [Tools](/docs/server-sdk/tools) - Tool handler patterns
@@ -7,7 +7,7 @@ description: Model request tracing and debugging tools for Octavus agents.
7
7
 
8
8
  ## Model Request Tracing
9
9
 
10
- Model request tracing captures the full payload sent to model providers (LLM and image) during agent execution. This helps you understand exactly what was sent system prompts, messages, tool definitions, and provider options making it easier to debug agent behavior.
10
+ Model request tracing captures the full payload sent to model providers (LLM and image) during agent execution. This helps you understand exactly what was sent - system prompts, messages, tool definitions, and provider options - making it easier to debug agent behavior.
11
11
 
12
12
  ### Enabling Tracing
13
13
 
@@ -57,8 +57,8 @@ Traces appear as **Model Request** entries in the execution log timeline, alongs
57
57
 
58
58
  In the Octavus dashboard:
59
59
 
60
- - **Session debug view** Full execution log with expandable model request entries
61
- - **Agent preview** Activity panel shows model requests in the execution steps
60
+ - **Session debug view** - Full execution log with expandable model request entries
61
+ - **Agent preview** - Activity panel shows model requests in the execution steps
62
62
 
63
63
  Each entry shows the raw JSON payload with a copy button for easy inspection.
64
64
 
@@ -70,10 +70,10 @@ Traces are stored in Redis alongside other execution log entries with a 24-hour
70
70
 
71
71
  | Environment | Recommendation |
72
72
  | ----------- | ---------------------------------------------------------- |
73
- | Development | Enable helps debug agent behavior during development |
74
- | Staging | Enable useful for pre-production testing |
75
- | Production | Disable (default) saves storage for high-volume sessions |
73
+ | Development | Enable - helps debug agent behavior during development |
74
+ | Staging | Enable - useful for pre-production testing |
75
+ | Production | Disable (default) - saves storage for high-volume sessions |
76
76
 
77
77
  ### Preview Sessions
78
78
 
79
- Model request tracing is always enabled for preview sessions in the Octavus dashboard. No configuration needed the platform automatically traces all model requests when using the agent preview.
79
+ Model request tracing is always enabled for preview sessions in the Octavus dashboard. No configuration needed - the platform automatically traces all model requests when using the agent preview.
@@ -45,7 +45,7 @@ const session = client.agentSessions.attach(sessionId, {
45
45
  session.setDynamicTools(computer);
46
46
  ```
47
47
 
48
- Dynamic tools are registered after attaching via `session.setDynamicTools()`. Pass the `computer` directly the session extracts schemas and handlers from the `ToolProvider`. Tool schemas are sent to the platform on the next `execute()` call, and tool calls flow back through the existing execution loop.
48
+ Dynamic tools are registered after attaching via `session.setDynamicTools()`. Pass the `computer` directly - the session extracts schemas and handlers from the `ToolProvider`. Tool schemas are sent to the platform on the next `execute()` call, and tool calls flow back through the existing execution loop.
49
49
 
50
50
  ## How It Works
51
51
 
@@ -54,7 +54,7 @@ Dynamic tools are registered after attaching via `session.setDynamicTools()`. Pa
54
54
  3. Each tool is namespaced with `__` (e.g., `browser__navigate_page`, `filesystem__read_file`)
55
55
  4. The server-sdk sends tool schemas to the platform and handles tool call execution
56
56
 
57
- The agent's protocol must declare matching `mcpServers` with `source: device` see [MCP Servers](/docs/protocol/mcp-servers).
57
+ The agent's protocol must declare matching `mcpServers` with `source: device` - see [MCP Servers](/docs/protocol/mcp-servers).
58
58
 
59
59
  ## Entry Types
60
60
 
@@ -160,7 +160,7 @@ When `allowedPatterns` is set, only matching commands are permitted. When `block
160
160
 
161
161
  ### Starting
162
162
 
163
- `computer.start()` connects to all configured MCP servers in parallel. If some servers fail to connect, the computer still starts with the remaining servers only if _all_ connections fail does it throw an error.
163
+ `computer.start()` connects to all configured MCP servers in parallel. If some servers fail to connect, the computer still starts with the remaining servers - only if _all_ connections fail does it throw an error.
164
164
 
165
165
  ```typescript
166
166
  const { errors } = await computer.start();
@@ -228,7 +228,7 @@ interface ToolProvider {
228
228
  }
229
229
  ```
230
230
 
231
- `setDynamicTools()` accepts any `ToolProvider` directly the session extracts schemas and handlers automatically:
231
+ `setDynamicTools()` accepts any `ToolProvider` directly - the session extracts schemas and handlers automatically:
232
232
 
233
233
  ```typescript
234
234
  session.setDynamicTools(computer);
@@ -12,7 +12,7 @@ Octavus provides two packages for frontend integration:
12
12
  | `@octavus/react` | React hooks and bindings | Building React applications |
13
13
  | `@octavus/client-sdk` | Framework-agnostic core | Using Vue, Svelte, vanilla JS, or custom integrations |
14
14
 
15
- **Most users should install `@octavus/react`** it includes everything from `@octavus/client-sdk` plus React-specific hooks.
15
+ **Most users should install `@octavus/react`** - it includes everything from `@octavus/client-sdk` plus React-specific hooks.
16
16
 
17
17
  ## Installation
18
18
 
@@ -271,7 +271,7 @@ interface UserMessageInput {
271
271
 
272
272
  ### useAutoScroll
273
273
 
274
- Smart auto-scroll for chat containers. Scrolls to bottom when content updates, but pauses if the user has scrolled up. See [Streaming Auto-Scroll](/docs/client-sdk/streaming#auto-scroll) for full usage.
274
+ Smart auto-scroll for chat containers. Scrolls to bottom when content updates, but pauses if the user has scrolled up. See [Streaming - Auto-Scroll](/docs/client-sdk/streaming#auto-scroll) for full usage.
275
275
 
276
276
  ```typescript
277
277
  function useAutoScroll(options?: UseAutoScrollOptions): {
@@ -373,12 +373,12 @@ class OctavusChat {
373
373
 
374
374
  ## Next Steps
375
375
 
376
- - [HTTP Transport](/docs/client-sdk/http-transport) HTTP/SSE integration (recommended)
377
- - [Socket Transport](/docs/client-sdk/socket-transport) WebSocket and SockJS integration
378
- - [Messages](/docs/client-sdk/messages) Working with message state
379
- - [Streaming](/docs/client-sdk/streaming) Building streaming UIs
380
- - [Client Tools](/docs/client-sdk/client-tools) Interactive browser-side tool handling
381
- - [Operations](/docs/client-sdk/execution-blocks) Showing agent progress
382
- - [Error Handling](/docs/client-sdk/error-handling) Handling errors with type guards
383
- - [File Uploads](/docs/client-sdk/file-uploads) Uploading images and documents
384
- - [Examples](/docs/examples/overview) Complete working examples
376
+ - [HTTP Transport](/docs/client-sdk/http-transport) - HTTP/SSE integration (recommended)
377
+ - [Socket Transport](/docs/client-sdk/socket-transport) - WebSocket and SockJS integration
378
+ - [Messages](/docs/client-sdk/messages) - Working with message state
379
+ - [Streaming](/docs/client-sdk/streaming) - Building streaming UIs
380
+ - [Client Tools](/docs/client-sdk/client-tools) - Interactive browser-side tool handling
381
+ - [Operations](/docs/client-sdk/execution-blocks) - Showing agent progress
382
+ - [Error Handling](/docs/client-sdk/error-handling) - Handling errors with type guards
383
+ - [File Uploads](/docs/client-sdk/file-uploads) - Uploading images and documents
384
+ - [Examples](/docs/examples/overview) - Complete working examples
@@ -31,7 +31,9 @@ type UIMessagePart =
31
31
  | UIOperationPart
32
32
  | UISourcePart
33
33
  | UIFilePart
34
- | UIObjectPart;
34
+ | UIObjectPart
35
+ | UITodoPart
36
+ | UIWorkerPart;
35
37
 
36
38
  // Text content
37
39
  interface UITextPart {
@@ -107,6 +109,31 @@ interface UIObjectPart {
107
109
  error?: string;
108
110
  thread?: string;
109
111
  }
112
+
113
+ // Structured task list (when the agent uses octavus_todo_write)
114
+ interface UITodoPart {
115
+ type: 'todo';
116
+ todos: {
117
+ id: string;
118
+ content: string;
119
+ status: 'pending' | 'in_progress' | 'completed' | 'cancelled';
120
+ }[];
121
+ status: 'streaming' | 'done';
122
+ thread?: string;
123
+ }
124
+
125
+ // Sub-agent execution container (when an agent invokes a worker)
126
+ interface UIWorkerPart {
127
+ type: 'worker';
128
+ workerId: string;
129
+ workerSlug: string;
130
+ description?: string;
131
+ input?: Record<string, unknown>;
132
+ parts: UIMessagePart[]; // Nested parts from the worker (excluding nested workers)
133
+ output?: unknown;
134
+ error?: string;
135
+ status: 'running' | 'done' | 'error';
136
+ }
110
137
  ```
111
138
 
112
139
  ## Sending Messages
@@ -256,9 +256,9 @@ The hook returns four values:
256
256
  | Return Value | Purpose |
257
257
  | ----------------- | ------------------------------------------------------------------------------------------------- |
258
258
  | `scrollRef` | Attach to the scrollable container's `ref` |
259
- | `handleScroll` | Attach to the container's `onScroll` tracks whether the user is near the bottom |
260
- | `scrollOnUpdate` | Call inside a `useEffect` when messages change scrolls to bottom if the user hasn't scrolled up |
261
- | `resetAutoScroll` | Call when the user sends a message forces the next update to scroll to bottom |
259
+ | `handleScroll` | Attach to the container's `onScroll` - tracks whether the user is near the bottom |
260
+ | `scrollOnUpdate` | Call inside a `useEffect` when messages change - scrolls to bottom if the user hasn't scrolled up |
261
+ | `resetAutoScroll` | Call when the user sends a message - forces the next update to scroll to bottom |
262
262
 
263
263
  You can customize the hook with options:
264
264
 
@@ -111,7 +111,7 @@ function EscalationProgress({ message }: { message: UIMessage }) {
111
111
 
112
112
  Operations are only sent to the client if their protocol block has a visible display mode (`name`, `description`, or `stream`). Hidden operations (`display: hidden`) are filtered out by the platform before reaching the client.
113
113
 
114
- This means you can safely render all operations without checking display mode hidden ones won't be in the message parts.
114
+ This means you can safely render all operations without checking display mode - hidden ones won't be in the message parts.
115
115
 
116
116
  ## Named Thread Operations
117
117
 
@@ -19,7 +19,7 @@ The socket transport enables real-time bidirectional communication using WebSock
19
19
 
20
20
  ## Connection Lifecycle
21
21
 
22
- By default, socket transport uses **lazy connection** the socket connects only when you first call `send()`. This is efficient but can be surprising if you want to show connection status.
22
+ By default, socket transport uses **lazy connection** - the socket connects only when you first call `send()`. This is efficient but can be surprising if you want to show connection status.
23
23
 
24
24
  For UI indicators, use **eager connection**:
25
25
 
@@ -86,7 +86,7 @@ There are two main patterns for socket-based integrations:
86
86
 
87
87
  ## Server-Managed Sessions (Recommended)
88
88
 
89
- The cleanest pattern is to have the server manage session lifecycle. The client never needs to know about `sessionId` the server creates it lazily on first message.
89
+ The cleanest pattern is to have the server manage session lifecycle. The client never needs to know about `sessionId` - the server creates it lazily on first message.
90
90
 
91
91
  ### Client Setup
92
92
 
@@ -104,7 +104,7 @@ function connectSocket(): Promise<SocketLike> {
104
104
  }
105
105
 
106
106
  function Chat() {
107
- // Transport is stable no dependencies on sessionId
107
+ // Transport is stable - no dependencies on sessionId
108
108
  const transport = useMemo(() => createSocketTransport({ connect: connectSocket }), []);
109
109
 
110
110
  const { messages, status, send, stop, connectionState, connect, disconnect } = useOctavusChat({
@@ -185,7 +185,7 @@ sockServer.installHandlers(httpServer);
185
185
 
186
186
  **Benefits of this pattern:**
187
187
 
188
- - Client code is simple no sessionId management
188
+ - Client code is simple - no sessionId management
189
189
  - No transport caching issues
190
190
  - Session is created only when needed
191
191
  - Server controls session configuration
@@ -300,7 +300,7 @@ function ChatPage() {
300
300
  }
301
301
  ```
302
302
 
303
- This is the cleanest approach the `Chat` component always receives a valid `sessionId`.
303
+ This is the cleanest approach - the `Chat` component always receives a valid `sessionId`.
304
304
 
305
305
  ### Option 2: Server-Managed Sessions
306
306
 
@@ -364,8 +364,8 @@ See [Streaming Events](/docs/server-sdk/streaming#event-types) for the full list
364
364
 
365
365
  ## Next Steps
366
366
 
367
- - [Quick Start](/docs/getting-started/quickstart) Complete Next.js integration guide
368
- - [Client Tools](/docs/client-sdk/client-tools) Handling tools on the client side
369
- - [Messages](/docs/client-sdk/messages) Working with message state
370
- - [Streaming](/docs/client-sdk/streaming) Building streaming UIs
371
- - [Error Handling](/docs/client-sdk/error-handling) Handling errors with type guards
367
+ - [Quick Start](/docs/getting-started/quickstart) - Complete Next.js integration guide
368
+ - [Client Tools](/docs/client-sdk/client-tools) - Handling tools on the client side
369
+ - [Messages](/docs/client-sdk/messages) - Working with message state
370
+ - [Streaming](/docs/client-sdk/streaming) - Building streaming UIs
371
+ - [Error Handling](/docs/client-sdk/error-handling) - Handling errors with type guards
@@ -373,9 +373,9 @@ The `responseType` in your protocol must be an **object type** (regular custom t
373
373
 
374
374
  The following cannot be used directly as `responseType`:
375
375
 
376
- - **Discriminated unions** LLM providers don't allow `anyOf` at the schema root
377
- - **Array types** Must be wrapped in an object
378
- - **Primitives** `string`, `number`, etc. are not valid
376
+ - **Discriminated unions** - LLM providers don't allow `anyOf` at the schema root
377
+ - **Array types** - Must be wrapped in an object
378
+ - **Primitives** - `string`, `number`, etc. are not valid
379
379
 
380
380
  If you need variant responses, wrap the discriminated union in an object:
381
381
 
@@ -188,12 +188,12 @@ Uploads include built-in timeout and retry logic for handling transient failures
188
188
 
189
189
  **Default behavior:**
190
190
 
191
- - **Timeout**: 60 seconds per file prevents uploads from hanging on stalled connections
191
+ - **Timeout**: 60 seconds per file - prevents uploads from hanging on stalled connections
192
192
  - **Retries**: 2 automatic retries on transient failures (network errors, 5xx, 429)
193
193
  - **Retry delay**: 1 second between retries
194
194
  - **Non-retryable errors** (4xx like 403, 404) fail immediately without retrying
195
195
 
196
- Only the S3 upload is retried the presigned URL stays valid for 15 minutes. On retry, the progress callback resets to 0%.
196
+ Only the S3 upload is retried - the presigned URL stays valid for 15 minutes. On retry, the progress callback resets to 0%.
197
197
 
198
198
  Configure via `uploadOptions`:
199
199
 
@@ -137,7 +137,7 @@ if (canRetry) {
137
137
  }
138
138
  ```
139
139
 
140
- `retry()` also works after stopping (cancellation) or when the result is unsatisfactory not just errors.
140
+ `retry()` also works after stopping (cancellation) or when the result is unsatisfactory - not just errors.
141
141
 
142
142
  ## Building Error UI
143
143
 
@@ -281,7 +281,7 @@ interface ErrorEvent {
281
281
 
282
282
  ## Tool Errors
283
283
 
284
- Tool errors are handled differentlythey appear inline on the tool call:
284
+ Tool errors are handled differently - they appear inline on the tool call:
285
285
 
286
286
  ```tsx
287
287
  function ToolCallPart({ part }: { part: UIToolCallPart }) {
@@ -295,4 +295,4 @@ function ToolCallPart({ part }: { part: UIToolCallPart }) {
295
295
  }
296
296
  ```
297
297
 
298
- Tool errors don't trigger `onError`—they're captured on the tool call part itself.
298
+ Tool errors don't trigger `onError` - they're captured on the tool call part itself.
@@ -7,9 +7,9 @@ description: Handling tool calls on the client side for interactive UI and brows
7
7
 
8
8
  By default, tools execute on your server where you have access to databases and APIs. However, some tools are better suited for client-side execution:
9
9
 
10
- - **Browser-only operations** Geolocation, clipboard, local storage
11
- - **Interactive UIs** Confirmation dialogs, form inputs, selections
12
- - **Real-time feedback** Progress indicators, approval workflows
10
+ - **Browser-only operations** - Geolocation, clipboard, local storage
11
+ - **Interactive UIs** - Confirmation dialogs, form inputs, selections
12
+ - **Real-time feedback** - Progress indicators, approval workflows
13
13
 
14
14
  ## How Client Tools Work
15
15
 
@@ -11,11 +11,11 @@ Agent protocols define how an AI agent behaves. They're written in YAML and spec
11
11
 
12
12
  Protocols provide:
13
13
 
14
- - **Declarative definition** Define behavior, not implementation
15
- - **Portable agents** Move agents between projects
16
- - **Versioning** Track changes with git
17
- - **Validation** Catch errors before runtime
18
- - **Visualization** Debug execution flows
14
+ - **Declarative definition** - Define behavior, not implementation
15
+ - **Portable agents** - Move agents between projects
16
+ - **Versioning** - Track changes with git
17
+ - **Validation** - Catch errors before runtime
18
+ - **Visualization** - Debug execution flows
19
19
 
20
20
  ## Agent Formats
21
21
 
@@ -26,9 +26,9 @@ Octavus supports two agent formats:
26
26
  | `interactive` | Chat and multi-turn dialogue | `triggers` + `handlers` + `agent` |
27
27
  | `worker` | Background tasks and pipelines | `steps` + `output` |
28
28
 
29
- **Interactive agents** handle conversations they respond to triggers (like user messages) and maintain session state across interactions.
29
+ **Interactive agents** handle conversations - they respond to triggers (like user messages) and maintain session state across interactions.
30
30
 
31
- **Worker agents** execute tasks they run steps sequentially and return an output value. Workers can be called independently or composed into interactive agents.
31
+ **Worker agents** execute tasks - they run steps sequentially and return an output value. Workers can be called independently or composed into interactive agents.
32
32
 
33
33
  See [Workers](/docs/protocol/workers) for the worker protocol reference.
34
34
 
@@ -90,6 +90,7 @@ agent:
90
90
  skills: [qr-code] # Enable skills
91
91
  imageModel: google/gemini-2.5-flash-image # Enable image generation
92
92
  webSearch: true # Enable web search
93
+ todoList: true # Enable structured task tracking
93
94
  agentic: true # Allow multiple tool calls
94
95
  thinking: medium # Extended reasoning
95
96
 
@@ -192,14 +193,14 @@ The referenced prompt content is inserted before variable interpolation, so vari
192
193
 
193
194
  ## Next Steps
194
195
 
195
- - [Input & Resources](/docs/protocol/input-resources) Defining agent inputs
196
- - [Triggers](/docs/protocol/triggers) How agents are invoked
197
- - [Tools](/docs/protocol/tools) External capabilities
198
- - [MCP Servers](/docs/protocol/mcp-servers) Remote services and device capabilities via MCP
199
- - [Skills](/docs/protocol/skills) Code execution and knowledge packages
200
- - [References](/docs/protocol/references) On-demand context documents
201
- - [Handlers](/docs/protocol/handlers) Execution blocks
202
- - [Agent Config](/docs/protocol/agent-config) Model and settings
203
- - [Workers](/docs/protocol/workers) Worker agent format
204
- - [Provider Options](/docs/protocol/provider-options) Provider-specific features
205
- - [Types](/docs/protocol/types) Custom type definitions
196
+ - [Input & Resources](/docs/protocol/input-resources) - Defining agent inputs
197
+ - [Triggers](/docs/protocol/triggers) - How agents are invoked
198
+ - [Tools](/docs/protocol/tools) - External capabilities
199
+ - [MCP Servers](/docs/protocol/mcp-servers) - Remote services and device capabilities via MCP
200
+ - [Skills](/docs/protocol/skills) - Code execution and knowledge packages
201
+ - [References](/docs/protocol/references) - On-demand context documents
202
+ - [Handlers](/docs/protocol/handlers) - Execution blocks
203
+ - [Agent Config](/docs/protocol/agent-config) - Model and settings
204
+ - [Workers](/docs/protocol/workers) - Worker agent format
205
+ - [Provider Options](/docs/protocol/provider-options) - Provider-specific features
206
+ - [Types](/docs/protocol/types) - Custom type definitions