From 0d6ae2a27fad2ad0889c16a7dced6b2bde085439 Mon Sep 17 00:00:00 2001 From: mjnovice Date: Tue, 24 Mar 2026 11:17:58 +0000 Subject: [PATCH 01/11] ## Summary Resolves #319 Co-Authored-By: Claude --- docs/stylesheets/extra.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index f5f7bffb1..161ad003d 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,7 +79,7 @@ opacity: 1 !important; } -a[href^="https://"]:not(.md-source):not(.skip-link-icon)::after { +a[href^="https://"]:not(.md-source):not(.skip-link-icon):not(.md-nav__link):not(.md-header__button)::after { content: "↗"; font-size: 1em; } From 4374a3634fbe1859a435a7e80cd3cacf806ec3a6 Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 13:20:59 +0000 Subject: [PATCH 02/11] fix(docs): scope external link arrow icon to content area only Instead of excluding individual nav/header/footer classes from the external link arrow selector (which is fragile and misses elements), scope the rule to `.md-content` so it only applies within page content. Co-Authored-By: Claude Opus 4.6 --- docs/stylesheets/extra.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 161ad003d..28153470e 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,7 +79,7 @@ opacity: 1 !important; } -a[href^="https://"]:not(.md-source):not(.skip-link-icon):not(.md-nav__link):not(.md-header__button)::after { +.md-content a[href^="https://"]::after { content: "↗"; font-size: 1em; } From 0fb933c357f4950e6234ad7c7a88f051c62ed9f5 Mon Sep 17 00:00:00 2001 From: mjnovice Date: Tue, 24 Mar 2026 13:21:33 +0000 Subject: [PATCH 03/11] fix: address PR review feedback Co-Authored-By: Claude --- docs/conversational-agent/index.md | 191 ++++++++++++++ docs/conversations/index.md | 406 +++++++++++++++++++++++++++++ 2 files changed, 597 insertions(+) create mode 100644 docs/conversational-agent/index.md create mode 100644 docs/conversations/index.md diff --git a/docs/conversational-agent/index.md b/docs/conversational-agent/index.md new file mode 100644 index 000000000..c7e2b8080 --- /dev/null +++ b/docs/conversational-agent/index.md @@ -0,0 +1,191 @@ +# Conversational Agent + +Service for managing UiPath Conversational Agents — AI-powered chat interfaces that enable +natural language interactions with UiPath automation. Discover agents, create conversations, +and stream real-time responses over WebSocket. [UiPath Conversational Agents Guide](https://docs.uipath.com/agents/automation-cloud/latest/user-guide/conversational-agents) + +Prerequisites: Initialize the SDK first - see [Getting Started](/uipath-typescript/getting-started/#import-initialize) + +## How It Works + +### Lifecycle + +```mermaid +graph TD + A["Agent"] -->|conversations.create| B["Conversation"] + B -->|startSession| C["Session"] + B -->|exchanges.getAll| F(["History"]) + C -->|onSessionStarted| D["Ready"] + D -->|startExchange| E["Exchange"] + E -->|sendMessage| G["Message"] +``` + +### Real-Time Event Flow + +Once a session is started, events flow through a nested stream hierarchy: + +```mermaid +graph TD + S["SessionStream"] + S -->|onExchangeStart| E["ExchangeStream"] + S -->|onSessionEnd| SE(["session closed"]) + E -->|onMessageStart| M["MessageStream"] + E -->|onExchangeEnd| EE(["exchange complete"]) + M -->|onContentPartStart| CP["ContentPartStream"] + M -->|onToolCallStart| TC["ToolCallStream"] + M -->|onInterruptStart| IR(["awaiting approval"]) + CP -->|onChunk| CH(["streaming data"]) + TC -->|onToolCallEnd| TCE(["tool result"]) +``` + +## Usage + +```typescript +import { ConversationalAgent } from '@uipath/uipath-typescript/conversational-agent'; + +const conversationalAgent = new ConversationalAgent(sdk); + +// 1. Discover agents +const agents = await conversationalAgent.getAll(); +const agent = agents[0]; + +// 2. Create a conversation +const conversation = await agent.conversations.create({ label: 'My Chat' }); + +// 3. Start real-time session and listen for responses +const session = conversation.startSession(); + +session.onExchangeStart((exchange) => { + exchange.onMessageStart((message) => { + if (message.isAssistant) { + message.onContentPartStart((part) => { + if (part.isMarkdown) { + part.onChunk((chunk) => process.stdout.write(chunk.data ?? '')); + } + }); + } + }); +}); + +// 4. Wait for session to be ready, then send a message +session.onSessionStarted(() => { + const exchange = session.startExchange(); + exchange.sendMessageWithContentPart({ data: 'Hello!' }); +}); + +// 5. End session when done +conversation.endSession(); + +// 6. Retrieve conversation history (offline) +const exchanges = await conversation.exchanges.getAll(); +``` + +## Properties + +| Property | Modifier | Type | Description | +| ------ | ------ | ------ | ------ | +| `conversations` | `readonly` | [`ConversationServiceModel`](../api/interfaces/ConversationServiceModel.md) | Service for creating and managing conversations. See [ConversationServiceModel](../api/interfaces/ConversationServiceModel.md). | + +## Methods + +### getAll() + +> **getAll**(`folderId?`: `number`): `Promise`<[`AgentGetResponse`](../api/type-aliases/AgentGetResponse.md)[]> + +Gets all available conversational agents + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `folderId?` | `number` | Optional folder ID to filter agents | + +#### Returns + +`Promise`<[`AgentGetResponse`](../api/type-aliases/AgentGetResponse.md)[]> + +Promise resolving to an array of agents +[AgentGetResponse](../api/type-aliases/AgentGetResponse.md) + +#### Examples + +```typescript +const agents = await conversationalAgent.getAll(); +const agent = agents[0]; + +// Create conversation directly from agent (agentId and folderId are auto-filled) +const conversation = await agent.conversations.create({ label: 'My Chat' }); +``` + +```typescript +const agents = await conversationalAgent.getAll(folderId); +``` + +*** + +### getById() + +> **getById**(`id`: `number`, `folderId`: `number`): `Promise`<[`AgentGetByIdResponse`](../api/type-aliases/AgentGetByIdResponse.md)> + +Gets a specific agent by ID + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `id` | `number` | ID of the agent release | +| `folderId` | `number` | ID of the folder containing the agent | + +#### Returns + +`Promise`<[`AgentGetByIdResponse`](../api/type-aliases/AgentGetByIdResponse.md)> + +Promise resolving to the agent +[AgentGetByIdResponse](../api/type-aliases/AgentGetByIdResponse.md) + +#### Example + +```typescript +const agent = await conversationalAgent.getById(agentId, folderId); + +// Create conversation directly from agent (agentId and folderId are auto-filled) +const conversation = await agent.conversations.create({ label: 'My Chat' }); +``` + +*** + +### onConnectionStatusChanged() + +> **onConnectionStatusChanged**(`handler`: (`status`: `ConnectionStatus`, `error`: `null` \| `Error`) => `void`): () => `void` + +Registers a handler that is called whenever the WebSocket connection status changes. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `handler` | (`status`: `ConnectionStatus`, `error`: `null` \| `Error`) => `void` | Callback receiving a ConnectionStatus (`'Disconnected'` | `'Connecting'` | `'Connected'`) and an optional `Error` | + +#### Returns + +Cleanup function to remove the handler + +> (): `void` + +##### Returns + +`void` + +#### Example + +```typescript +const cleanup = conversationalAgent.onConnectionStatusChanged((status, error) => { + console.log('Connection status:', status); + if (error) { + console.error('Connection error:', error.message); + } +}); + +// Later, remove the handler +cleanup(); +``` diff --git a/docs/conversations/index.md b/docs/conversations/index.md new file mode 100644 index 000000000..e9bbdece4 --- /dev/null +++ b/docs/conversations/index.md @@ -0,0 +1,406 @@ +# Conversations + +Service for creating and managing conversations with UiPath Conversational Agents + +A conversation is a long-lived interaction with a specific agent with shared context. +It persists across sessions and can be resumed at any time. To retrieve the +conversation history, use the [Exchanges](../api/interfaces/ExchangeServiceModel.md) service. +For real-time chat, see [Session](../api/interfaces/SessionStream.md). + +### Usage + +Prerequisites: Initialize the SDK first - see [Getting Started](/uipath-typescript/getting-started/#import-initialize) + +```typescript +import { ConversationalAgent } from '@uipath/uipath-typescript/conversational-agent'; + +const conversationalAgent = new ConversationalAgent(sdk); + +// Access conversations through the main service +const conversation = await conversationalAgent.conversations.create(agentId, folderId); + +// Or through agent objects (agentId/folderId auto-filled) +const agents = await conversationalAgent.getAll(); +const agentConversation = await agents[0].conversations.create({ label: 'My Chat' }); +``` + +## Methods + +### create() + +> **create**(`agentId`: `number`, `folderId`: `number`, `options?`: [`ConversationCreateOptions`](../api/interfaces/ConversationCreateOptions.md)): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Creates a new conversation + +The returned conversation has bound methods for lifecycle management: +`update()`, `delete()`, and `startSession()`. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `agentId` | `number` | The agent ID to create the conversation for | +| `folderId` | `number` | The folder ID containing the agent | +| `options?` | [`ConversationCreateOptions`](../api/interfaces/ConversationCreateOptions.md) | Optional settings for the conversation | + +#### Returns + +`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Promise resolving to [ConversationCreateResponse](../api/type-aliases/ConversationCreateResponse.md) with bound methods + +#### Example + +```typescript +const conversation = await conversationalAgent.conversations.create( + agentId, + folderId, + { label: 'Customer Support Session' } +); + +// Update the conversation +await conversation.update({ label: 'Renamed Chat' }); + +// Start a real-time session +const session = conversation.startSession(); + +// Delete the conversation +await conversation.delete(); +``` + +*** + +### deleteById() + +> **deleteById**(`id`: `string`): `Promise`<[`RawConversationGetResponse`](../api/interfaces/RawConversationGetResponse.md)> + +Deletes a conversation by ID + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `id` | `string` | The conversation ID to delete | + +#### Returns + +`Promise`<[`RawConversationGetResponse`](../api/interfaces/RawConversationGetResponse.md)> + +Promise resolving to [ConversationDeleteResponse](../api/type-aliases/ConversationDeleteResponse.md) + +#### Example + +```typescript +await conversationalAgent.conversations.deleteById(conversationId); +``` + +*** + +### endSession() + +> **endSession**(`conversationId`: `string`): `void` + +Ends an active session for a conversation + +Sends a session end event and releases the socket for the conversation. +If no active session exists for the given conversation, this is a no-op. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `conversationId` | `string` | The conversation ID to end the session for | + +#### Returns + +`void` + +#### Example + +```typescript +// End session for a specific conversation +conversationalAgent.conversations.endSession(conversationId); +``` + +*** + +### getAll() + +> **getAll**<`T`>(`options?`: `T`): `Promise`<`T` *extends* [`HasPaginationOptions`](../api/type-aliases/HasPaginationOptions.md)<`T`> ? [`PaginatedResponse`](../api/interfaces/PaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> : [`NonPaginatedResponse`](../api/interfaces/NonPaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)>> + +Gets all conversations with optional filtering and pagination + +#### Type Parameters + +| Type Parameter | Default type | +| ------ | ------ | +| `T` *extends* [`ConversationGetAllOptions`](../api/type-aliases/ConversationGetAllOptions.md) | [`ConversationGetAllOptions`](../api/type-aliases/ConversationGetAllOptions.md) | + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `options?` | `T` | Options for querying conversations including optional pagination parameters | + +#### Returns + +`Promise`<`T` *extends* [`HasPaginationOptions`](../api/type-aliases/HasPaginationOptions.md)<`T`> ? [`PaginatedResponse`](../api/interfaces/PaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> : [`NonPaginatedResponse`](../api/interfaces/NonPaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)>> + +Promise resolving to either an array of conversations NonPaginatedResponse or a PaginatedResponse when pagination options are used + +#### Examples + +```typescript +const allConversations = await conversationalAgent.conversations.getAll(); + +for (const conversation of allConversations.items) { + console.log(`${conversation.label} - created: ${conversation.createdTime}`); +} +``` + +```typescript +// First page +const firstPage = await conversationalAgent.conversations.getAll({ pageSize: 10 }); + +// Navigate using cursor +if (firstPage.hasNextPage) { + const nextPage = await conversationalAgent.conversations.getAll({ + cursor: firstPage.nextCursor + }); +} +``` + +```typescript +const result = await conversationalAgent.conversations.getAll({ + sort: SortOrder.Descending, + pageSize: 20 +}); +``` + +*** + +### getAttachmentUploadUri() + +> **getAttachmentUploadUri**(`conversationId`: `string`, `fileName`: `string`): `Promise`<[`ConversationAttachmentCreateResponse`](../api/interfaces/ConversationAttachmentCreateResponse.md)> + +Registers a file attachment for a conversation and returns a URI along with +pre-signed upload access details. Use the returned `fileUploadAccess` to upload +the file content to blob storage, then reference `uri` in subsequent messages. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `conversationId` | `string` | The ID of the conversation to attach the file to | +| `fileName` | `string` | The name of the file to attach | + +#### Returns + +`Promise`<[`ConversationAttachmentCreateResponse`](../api/interfaces/ConversationAttachmentCreateResponse.md)> + +Promise resolving to [ConversationAttachmentCreateResponse](../api/interfaces/ConversationAttachmentCreateResponse.md) containing +the attachment `uri` and `fileUploadAccess` details needed to upload the file content + +#### Examples + +```typescript +const { uri, fileUploadAccess } = await conversationalAgent.conversations.getAttachmentUploadUri(conversationId, 'report.pdf'); +console.log(`Attachment URI: ${uri}`); +``` + +```typescript +const { uri, fileUploadAccess } = await conversationalAgent.conversations.getAttachmentUploadUri(conversationId, file.name); + +await fetch(fileUploadAccess.url, { + method: fileUploadAccess.verb, + body: file, + headers: { 'Content-Type': file.type }, +}); + +// Reference the URI in a message after upload +console.log(`File ready at: ${uri}`); +``` + +*** + +### getById() + +> **getById**(`id`: `string`): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Gets a conversation by ID + +The returned conversation has bound methods for lifecycle management: +`update()`, `delete()`, and `startSession()`. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `id` | `string` | The conversation ID to retrieve | + +#### Returns + +`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Promise resolving to [ConversationGetResponse](../api/type-aliases/ConversationGetResponse.md) with bound methods + +#### Examples + +```typescript +const conversation = await conversationalAgent.conversations.getById(conversationId); +const session = conversation.startSession(); +``` + +```typescript +//Retrieve conversation history +const conversation = await conversationalAgent.conversations.getById(conversationId); +const allExchanges = await conversation.exchanges.getAll(); +for (const exchange of allExchanges.items) { + for (const message of exchange.messages) { + console.log(`${message.role}: ${message.contentParts.map(p => p.data).join('')}`); + } +} +``` + +*** + +### getSession() + +> **getSession**(`conversationId`: `string`): `undefined` \| [`SessionStream`](../api/interfaces/SessionStream.md) + +Retrieves an active session by conversation ID + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `conversationId` | `string` | The conversation ID to get the session for | + +#### Returns + +`undefined` \| [`SessionStream`](../api/interfaces/SessionStream.md) + +The session helper if active, undefined otherwise + +#### Example + +```typescript +const session = conversationalAgent.conversations.getSession(conversationId); +if (session) { + // Session already started — safe to send exchanges directly + const exchange = session.startExchange(); + exchange.sendMessageWithContentPart({ data: 'Hello!' }); +} +``` + +*** + +### startSession() + +> **startSession**(`conversationId`: `string`, `options?`: [`ConversationSessionOptions`](../api/interfaces/ConversationSessionOptions.md)): [`SessionStream`](../api/interfaces/SessionStream.md) + +Starts a real-time chat session for a conversation + +Creates a WebSocket session and returns a SessionStream for sending +and receiving messages in real-time. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `conversationId` | `string` | The conversation ID to start the session for | +| `options?` | [`ConversationSessionOptions`](../api/interfaces/ConversationSessionOptions.md) | Optional session configuration | + +#### Returns + +[`SessionStream`](../api/interfaces/SessionStream.md) + +SessionStream for managing the session + +#### Example + +```typescript +const session = conversationalAgent.conversations.startSession(conversation.id); + +// Listen for responses using helper methods +session.onExchangeStart((exchange) => { + exchange.onMessageStart((message) => { + // Use message.isAssistant to filter AI responses + if (message.isAssistant) { + message.onContentPartStart((part) => { + // Use part.isMarkdown to handle text content + if (part.isMarkdown) { + part.onChunk((chunk) => console.log(chunk.data)); + } + }); + } + }); +}); + +// Wait for session to be ready, then send a message +session.onSessionStarted(() => { + const exchange = session.startExchange(); + exchange.sendMessageWithContentPart({ data: 'Hello!' }); +}); + +// End the session when done +conversationalAgent.conversations.endSession(conversation.id); +``` + +*** + +### updateById() + +> **updateById**(`id`: `string`, `options`: [`ConversationUpdateOptions`](../api/interfaces/ConversationUpdateOptions.md)): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Updates a conversation by ID + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `id` | `string` | The conversation ID to update | +| `options` | [`ConversationUpdateOptions`](../api/interfaces/ConversationUpdateOptions.md) | Fields to update | + +#### Returns + +`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> + +Promise resolving to [ConversationGetResponse](../api/type-aliases/ConversationGetResponse.md) with bound methods + +#### Example + +```typescript +const updatedConversation = await conversationalAgent.conversations.updateById(conversationId, { + label: 'Updated Name' +}); +``` + +*** + +### uploadAttachment() + +> **uploadAttachment**(`id`: `string`, `file`: `File`): `Promise`<[`ConversationAttachmentUploadResponse`](../api/interfaces/ConversationAttachmentUploadResponse.md)> + +Uploads a file attachment to a conversation + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `id` | `string` | The ID of the conversation to attach the file to | +| `file` | `File` | The file to upload | + +#### Returns + +`Promise`<[`ConversationAttachmentUploadResponse`](../api/interfaces/ConversationAttachmentUploadResponse.md)> + +Promise resolving to attachment metadata with URI +[ConversationAttachmentUploadResponse](../api/interfaces/ConversationAttachmentUploadResponse.md) + +#### Example + +```typescript +const attachment = await conversationalAgent.conversations.uploadAttachment(conversationId, file); +console.log(`Uploaded: ${attachment.uri}`); +``` From 8fbcea156d457684ef2435b709af388298534ed8 Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 13:33:27 +0000 Subject: [PATCH 04/11] fix(docs): improve external link arrow styling and scoping Refine the external link arrow indicator to be smaller and superscripted for a cleaner look. Add margin for visual separation from link text. Exclude .md-content__button elements from getting the arrow. The .md-content scoping ensures arrows only appear on external links within page content, not in navigation sidebar, header, or footer. Co-Authored-By: Claude Opus 4.6 --- docs/stylesheets/extra.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 28153470e..d29b69f46 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,9 +79,11 @@ opacity: 1 !important; } -.md-content a[href^="https://"]::after { +.md-content a[href^="https://"]:not(.md-content__button)::after { content: "↗"; - font-size: 1em; + font-size: 0.7em; + margin-left: 0.15em; + vertical-align: super; } @media screen and (min-width: 60em) { From 1f3cca57787076171f9a354e6410283f56e78a64 Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 13:45:20 +0000 Subject: [PATCH 05/11] fix(docs): use more specific selector for external link arrow icon Use `article.md-content__inner` instead of `.md-content` for more precise scoping of the external link arrow. This ensures the arrow only appears on links within the actual article content, not in sidebar navigation, footer, or header elements. Also covers http:// links and adds text-decoration: none to prevent underline on the arrow. Co-Authored-By: Claude Opus 4.6 --- docs/stylesheets/extra.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index d29b69f46..59762e243 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,11 +79,14 @@ opacity: 1 !important; } -.md-content a[href^="https://"]:not(.md-content__button)::after { +article.md-content__inner a[href^="https://"]:not(.md-content__button)::after, +article.md-content__inner a[href^="http://"]:not(.md-content__button)::after { content: "↗"; font-size: 0.7em; margin-left: 0.15em; vertical-align: super; + text-decoration: none; + display: inline-block; } @media screen and (min-width: 60em) { From 68ae05591fedb5a8751acb15aa9fbd2988517730 Mon Sep 17 00:00:00 2001 From: mjnovice Date: Tue, 24 Mar 2026 13:58:29 +0000 Subject: [PATCH 06/11] fix: address PR review feedback Co-Authored-By: Claude --- docs/coded-action-apps/README.md | 22 +++ .../classes/CodedActionApps.md | 124 ++++++++++++++ .../enumerations/MessageSeverity.md | 25 +++ .../enumerations/TaskStatus.md | 19 +++ docs/coded-action-apps/enumerations/Theme.md | 31 ++++ .../interfaces/CodedActionAppsServiceModel.md | 159 ++++++++++++++++++ docs/coded-action-apps/type-aliases/Task.md | 75 +++++++++ .../type-aliases/TaskCompleteResponse.md | 27 +++ docs/stylesheets/extra.css | 10 +- 9 files changed, 490 insertions(+), 2 deletions(-) create mode 100644 docs/coded-action-apps/README.md create mode 100644 docs/coded-action-apps/classes/CodedActionApps.md create mode 100644 docs/coded-action-apps/enumerations/MessageSeverity.md create mode 100644 docs/coded-action-apps/enumerations/TaskStatus.md create mode 100644 docs/coded-action-apps/enumerations/Theme.md create mode 100644 docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md create mode 100644 docs/coded-action-apps/type-aliases/Task.md create mode 100644 docs/coded-action-apps/type-aliases/TaskCompleteResponse.md diff --git a/docs/coded-action-apps/README.md b/docs/coded-action-apps/README.md new file mode 100644 index 000000000..946718950 --- /dev/null +++ b/docs/coded-action-apps/README.md @@ -0,0 +1,22 @@ +## Enumerations + +- [MessageSeverity](enumerations/MessageSeverity.md) +- [TaskStatus](enumerations/TaskStatus.md) +- [Theme](enumerations/Theme.md) + +## Classes + +- [CodedActionApps](classes/CodedActionApps.md) + +## Interfaces + +- [CodedActionAppsServiceModel](interfaces/CodedActionAppsServiceModel.md) + +## Type Aliases + +- [Task](type-aliases/Task.md) +- [TaskCompleteResponse](type-aliases/TaskCompleteResponse.md) + +## CodedActionAppsService + +Renames and re-exports [CodedActionApps](classes/CodedActionApps.md) diff --git a/docs/coded-action-apps/classes/CodedActionApps.md b/docs/coded-action-apps/classes/CodedActionApps.md new file mode 100644 index 000000000..6c7afe120 --- /dev/null +++ b/docs/coded-action-apps/classes/CodedActionApps.md @@ -0,0 +1,124 @@ +Service for bi-directional communication between coded action apps and Action Center + +## Implements + +- [`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md) + +## Constructors + +### Constructor + +> **new CodedActionApps**(): `CodedActionAppsService` + +#### Returns + +`CodedActionAppsService` + +## Methods + +### completeTask() + +> **completeTask**(`actionTaken`: `string`, `data`: `unknown`): `Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> + +Marks the current task as complete in Action Center. +Sends the final action and associated data to Action Center, +signalling that the user has finished interacting with the task. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `actionTaken` | `string` | A string identifying the action the user performed (e.g. `"Approve"`, `"Reject"`). | +| `data` | `unknown` | The final data payload to submit alongside the completion event. | + +#### Returns + +`Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> + +A promise that resolves with a [TaskCompleteResponse](../type-aliases/TaskCompleteResponse.md) object + containing success and error message if any. + +#### Throws + +If called from an untrusted origin. + +#### Throws + +If a completeTask call is already in progress. + +#### Implementation of + +[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`completeTask`](../interfaces/CodedActionAppsServiceModel.md#completetask) + +*** + +### getTask() + +> **getTask**(): `Promise`<[`Task`](../type-aliases/Task.md)> + +Fetches the current opened task's details from Action Center. + +#### Returns + +`Promise`<[`Task`](../type-aliases/Task.md)> + +A promise that resolves with a [Task](../type-aliases/Task.md) object + containing task metadata and data. + +#### Throws + +If called from an untrusted origin. + +#### Throws + +If Action Center does not respond within the allotted timeout. + +#### Implementation of + +[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`getTask`](../interfaces/CodedActionAppsServiceModel.md#gettask) + +*** + +### setTaskData() + +> **setTaskData**(`data`: `unknown`): `void` + +Notifies Action Center that the task data has been changed by the user. +This is needed to enable the save button in Action Center when the task data has changed + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `data` | `unknown` | The updated data payload to send to Action Center. | + +#### Returns + +`void` + +#### Implementation of + +[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`setTaskData`](../interfaces/CodedActionAppsServiceModel.md#settaskdata) + +*** + +### showMessage() + +> **showMessage**(`msg`: `string`, `type`: [`MessageSeverity`](../enumerations/MessageSeverity.md)): `void` + +Displays a toast message inside Action Center. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `msg` | `string` | The message text to display. | +| `type` | [`MessageSeverity`](../enumerations/MessageSeverity.md) | The severity/style of the message (`info`, `success`, `warning`, or `error`). | + +#### Returns + +`void` + +#### Implementation of + +[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`showMessage`](../interfaces/CodedActionAppsServiceModel.md#showmessage) diff --git a/docs/coded-action-apps/enumerations/MessageSeverity.md b/docs/coded-action-apps/enumerations/MessageSeverity.md new file mode 100644 index 000000000..2592cca59 --- /dev/null +++ b/docs/coded-action-apps/enumerations/MessageSeverity.md @@ -0,0 +1,25 @@ +Severity level for toast messages displayed in Action Center. + +## Enumeration Members + +### Error + +> **Error**: `"error"` + +*** + +### Info + +> **Info**: `"info"` + +*** + +### Success + +> **Success**: `"success"` + +*** + +### Warning + +> **Warning**: `"warning"` diff --git a/docs/coded-action-apps/enumerations/TaskStatus.md b/docs/coded-action-apps/enumerations/TaskStatus.md new file mode 100644 index 000000000..4792d8c0a --- /dev/null +++ b/docs/coded-action-apps/enumerations/TaskStatus.md @@ -0,0 +1,19 @@ +Represents the status of a task in Action Center. + +## Enumeration Members + +### Completed + +> **Completed**: `"Completed"` + +*** + +### Pending + +> **Pending**: `"Pending"` + +*** + +### Unassigned + +> **Unassigned**: `"Unassigned"` diff --git a/docs/coded-action-apps/enumerations/Theme.md b/docs/coded-action-apps/enumerations/Theme.md new file mode 100644 index 000000000..6ae02a33d --- /dev/null +++ b/docs/coded-action-apps/enumerations/Theme.md @@ -0,0 +1,31 @@ +UI theme applied to Action Center, passed to the coded action app on load. + +## Enumeration Members + +### AutoTheme + +> **AutoTheme**: `"autoTheme"` + +*** + +### Dark + +> **Dark**: `"dark"` + +*** + +### DarkHighContrast + +> **DarkHighContrast**: `"dark-hc"` + +*** + +### Light + +> **Light**: `"light"` + +*** + +### LightHighContrast + +> **LightHighContrast**: `"light-hc"` diff --git a/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md b/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md new file mode 100644 index 000000000..a47c6fb14 --- /dev/null +++ b/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md @@ -0,0 +1,159 @@ +Service for bi-directional communication between coded action apps and Action Center + +### Usage + +```typescript +import { CodedActionApps } from '@uipath/uipath-ts-coded-action-apps'; + +const service = new CodedActionApps(); +``` + +## Methods + +### completeTask() + +> **completeTask**(`actionTaken`: `string`, `data`: `unknown`): `Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> + +Marks the current task as complete in Action Center. +Sends the final action and associated data to Action Center, +signalling that the user has finished interacting with the task. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `actionTaken` | `string` | A string identifying the action the user performed (e.g. `"Approve"`, `"Reject"`). | +| `data` | `unknown` | The final data payload to submit alongside the completion event. | + +#### Returns + +`Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> + +A promise that resolves with a [TaskCompleteResponse](../type-aliases/TaskCompleteResponse.md) object + containing success and error message if any. + +#### Throws + +If called from an untrusted origin. + +#### Throws + +If a completeTask call is already in progress. + +#### Example + +```typescript +// Approve a task +const result = await service.completeTask('Approve', { approved: true, notes: 'Looks good' }); + +if (!result.success) { + console.error(`Failed (code ${result.errorCode}): ${result.errorMessage}`); +} + +// Reject a task +const result = await service.completeTask('Reject', { approved: false, reason: 'Missing info' }); + +if (!result.success) { + console.error(`Failed (code ${result.errorCode}): ${result.errorMessage}`); +} +``` + +*** + +### getTask() + +> **getTask**(): `Promise`<[`Task`](../type-aliases/Task.md)> + +Fetches the current opened task's details from Action Center. + +#### Returns + +`Promise`<[`Task`](../type-aliases/Task.md)> + +A promise that resolves with a [Task](../type-aliases/Task.md) object + containing task metadata and data. + +#### Throws + +If called from an untrusted origin. + +#### Throws + +If Action Center does not respond within the allotted timeout. + +#### Example + +```typescript +// Call once when the app loads +const task = await service.getTask(); + +console.log(task.taskId); // number +console.log(task.title); // string +console.log(task.status); // TaskStatus enum +console.log(task.isReadOnly); // boolean — disable editing if true +console.log(task.data); // the task's form data +console.log(task.folderId); // number +console.log(task.folderName); // string +console.log(task.theme); // Theme enum — current Action Center UI theme + +// Disable the form when task is read-only +if (task.isReadOnly) { + disableForm(); +} +``` + +*** + +### setTaskData() + +> **setTaskData**(`data`: `unknown`): `void` + +Notifies Action Center that the task data has been changed by the user. +This is needed to enable the save button in Action Center when the task data has changed + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `data` | `unknown` | The updated data payload to send to Action Center. | + +#### Returns + +`void` + +#### Example + +```typescript +// Call whenever the user modifies the form. Make sure to pass the full current task data +service.setTaskData({ name: 'John', approved: true, notes: 'Looks good' }); +``` + +*** + +### showMessage() + +> **showMessage**(`msg`: `string`, `type`: [`MessageSeverity`](../enumerations/MessageSeverity.md)): `void` + +Displays a toast message inside Action Center. + +#### Parameters + +| Parameter | Type | Description | +| ------ | ------ | ------ | +| `msg` | `string` | The message text to display. | +| `type` | [`MessageSeverity`](../enumerations/MessageSeverity.md) | The severity/style of the message (`info`, `success`, `warning`, or `error`). | + +#### Returns + +`void` + +#### Example + +```typescript +import { MessageSeverity } from '@uipath/uipath-ts-coded-action-apps'; + +service.showMessage('Submitted successfully', MessageSeverity.Success); +service.showMessage('Submission failed', MessageSeverity.Error); +service.showMessage('Please review the details', MessageSeverity.Warning); +service.showMessage('Auto-saved', MessageSeverity.Info); +``` diff --git a/docs/coded-action-apps/type-aliases/Task.md b/docs/coded-action-apps/type-aliases/Task.md new file mode 100644 index 000000000..b87afa725 --- /dev/null +++ b/docs/coded-action-apps/type-aliases/Task.md @@ -0,0 +1,75 @@ +> **Task** = \{ `action`: `string` \| `null`; `data`: `unknown`; `folderId`: `number`; `folderName`: `string`; `isReadOnly`: `boolean`; `status`: [`TaskStatus`](../enumerations/TaskStatus.md); `taskId`: `number`; `theme`: [`Theme`](../enumerations/Theme.md); `title`: `string`; \} + +Details of task opened in Action Center. + +## Properties + +### action + +> **action**: `string` \| `null` + +The action that was taken to complete the task, or `null` if not yet completed. + +*** + +### data + +> **data**: `unknown` + +Data of the task. + +*** + +### folderId + +> **folderId**: `number` + +ID of the folder the task belongs to. + +*** + +### folderName + +> **folderName**: `string` + +Display name of the folder the task belongs to. + +*** + +### isReadOnly + +> **isReadOnly**: `boolean` + +Whether the task is in read-only mode for the current user. Disable editing if this is true + +*** + +### status + +> **status**: [`TaskStatus`](../enumerations/TaskStatus.md) + +Current status of the task. + +*** + +### taskId + +> **taskId**: `number` + +Unique identifier of the task. + +*** + +### theme + +> **theme**: [`Theme`](../enumerations/Theme.md) + +UI theme that Action Center is currently using. + +*** + +### title + +> **title**: `string` + +Display title of the task. diff --git a/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md b/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md new file mode 100644 index 000000000..637d08b99 --- /dev/null +++ b/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md @@ -0,0 +1,27 @@ +> **TaskCompleteResponse** = \{ `errorCode`: `number` \| `null`; `errorMessage`: `string` \| `null`; `success`: `boolean`; \} + +Response returned by Action Center after a task completion attempt. This type is used by coded-action-apps package + +## Properties + +### errorCode + +> **errorCode**: `number` \| `null` + +Error code returned on failure, null when successful + +*** + +### errorMessage + +> **errorMessage**: `string` \| `null` + +Human-readable error message returned on failure, null when successful. + +*** + +### success + +> **success**: `boolean` + +Whether the task was completed successfully. diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 59762e243..f6bd5acde 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,8 +79,8 @@ opacity: 1 !important; } -article.md-content__inner a[href^="https://"]:not(.md-content__button)::after, -article.md-content__inner a[href^="http://"]:not(.md-content__button)::after { +.md-content a[href^="https://"]:not(.md-content__button)::after, +.md-content a[href^="http://"]:not(.md-content__button)::after { content: "↗"; font-size: 0.7em; margin-left: 0.15em; @@ -89,6 +89,12 @@ article.md-content__inner a[href^="http://"]:not(.md-content__button)::after { display: inline-block; } +.md-content pre a::after, +.md-content blockquote a::after, +.md-content .md-content__button::after { + content: none !important; +} + @media screen and (min-width: 60em) { .md-search__form { background-color: #ffffff; From 4627583885d46bf4a6942cfa90fec07241121a55 Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 14:10:43 +0000 Subject: [PATCH 07/11] fix(docs): scope external link arrow to article element for precision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The external link arrow (↗) CSS selector now targets `.md-content article a[href^="https://"]` instead of just `.md-content a[href^="https://"]` for more precise scoping. This ensures arrows only appear on actual content links, not on any other elements that might exist within the md-content container. Also excludes .headerlink anchors. Co-Authored-By: Claude Opus 4.6 --- docs/stylesheets/extra.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index f6bd5acde..2b2776051 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,8 +79,8 @@ opacity: 1 !important; } -.md-content a[href^="https://"]:not(.md-content__button)::after, -.md-content a[href^="http://"]:not(.md-content__button)::after { +.md-content article a[href^="https://"]:not(.md-content__button):not(.headerlink)::after, +.md-content article a[href^="http://"]:not(.md-content__button):not(.headerlink)::after { content: "↗"; font-size: 0.7em; margin-left: 0.15em; @@ -89,9 +89,9 @@ display: inline-block; } -.md-content pre a::after, -.md-content blockquote a::after, -.md-content .md-content__button::after { +.md-content article pre a::after, +.md-content article blockquote a::after, +.md-content article .md-content__button::after { content: none !important; } From 6a7e2b4148a9f114354c0f08e8d18afd01f43d3c Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 14:21:45 +0000 Subject: [PATCH 08/11] fix(docs): enable pymdownx.tilde for strikethrough rendering on API pages The ~~deprecated~~ markers on API class pages (e.g., UiPath) were rendering as literal ~~ text instead of strikethrough. Adding the pymdownx.tilde extension fixes this styling bug. Co-Authored-By: Claude Opus 4.6 --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index e169a8e45..7d5d2db29 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -156,6 +156,7 @@ markdown_extensions: - pymdownx.magiclink - pymdownx.snippets - pymdownx.fancylists + - pymdownx.tilde - pymdownx.tabbed: alternate_style: true - toc: From 54d6d8d74ee73411ad4a6424ff2a56338f73a5cd Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 14:30:16 +0000 Subject: [PATCH 09/11] fix(docs): remove generated docs files from PR Generated API docs (coded-action-apps, conversational-agent, conversations) should not be committed to the repository. Co-Authored-By: Claude Opus 4.6 --- docs/coded-action-apps/README.md | 22 - .../classes/CodedActionApps.md | 124 ------ .../enumerations/MessageSeverity.md | 25 -- .../enumerations/TaskStatus.md | 19 - docs/coded-action-apps/enumerations/Theme.md | 31 -- .../interfaces/CodedActionAppsServiceModel.md | 159 ------- docs/coded-action-apps/type-aliases/Task.md | 75 ---- .../type-aliases/TaskCompleteResponse.md | 27 -- docs/conversational-agent/index.md | 191 -------- docs/conversations/index.md | 406 ------------------ 10 files changed, 1079 deletions(-) delete mode 100644 docs/coded-action-apps/README.md delete mode 100644 docs/coded-action-apps/classes/CodedActionApps.md delete mode 100644 docs/coded-action-apps/enumerations/MessageSeverity.md delete mode 100644 docs/coded-action-apps/enumerations/TaskStatus.md delete mode 100644 docs/coded-action-apps/enumerations/Theme.md delete mode 100644 docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md delete mode 100644 docs/coded-action-apps/type-aliases/Task.md delete mode 100644 docs/coded-action-apps/type-aliases/TaskCompleteResponse.md delete mode 100644 docs/conversational-agent/index.md delete mode 100644 docs/conversations/index.md diff --git a/docs/coded-action-apps/README.md b/docs/coded-action-apps/README.md deleted file mode 100644 index 946718950..000000000 --- a/docs/coded-action-apps/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Enumerations - -- [MessageSeverity](enumerations/MessageSeverity.md) -- [TaskStatus](enumerations/TaskStatus.md) -- [Theme](enumerations/Theme.md) - -## Classes - -- [CodedActionApps](classes/CodedActionApps.md) - -## Interfaces - -- [CodedActionAppsServiceModel](interfaces/CodedActionAppsServiceModel.md) - -## Type Aliases - -- [Task](type-aliases/Task.md) -- [TaskCompleteResponse](type-aliases/TaskCompleteResponse.md) - -## CodedActionAppsService - -Renames and re-exports [CodedActionApps](classes/CodedActionApps.md) diff --git a/docs/coded-action-apps/classes/CodedActionApps.md b/docs/coded-action-apps/classes/CodedActionApps.md deleted file mode 100644 index 6c7afe120..000000000 --- a/docs/coded-action-apps/classes/CodedActionApps.md +++ /dev/null @@ -1,124 +0,0 @@ -Service for bi-directional communication between coded action apps and Action Center - -## Implements - -- [`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md) - -## Constructors - -### Constructor - -> **new CodedActionApps**(): `CodedActionAppsService` - -#### Returns - -`CodedActionAppsService` - -## Methods - -### completeTask() - -> **completeTask**(`actionTaken`: `string`, `data`: `unknown`): `Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> - -Marks the current task as complete in Action Center. -Sends the final action and associated data to Action Center, -signalling that the user has finished interacting with the task. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `actionTaken` | `string` | A string identifying the action the user performed (e.g. `"Approve"`, `"Reject"`). | -| `data` | `unknown` | The final data payload to submit alongside the completion event. | - -#### Returns - -`Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> - -A promise that resolves with a [TaskCompleteResponse](../type-aliases/TaskCompleteResponse.md) object - containing success and error message if any. - -#### Throws - -If called from an untrusted origin. - -#### Throws - -If a completeTask call is already in progress. - -#### Implementation of - -[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`completeTask`](../interfaces/CodedActionAppsServiceModel.md#completetask) - -*** - -### getTask() - -> **getTask**(): `Promise`<[`Task`](../type-aliases/Task.md)> - -Fetches the current opened task's details from Action Center. - -#### Returns - -`Promise`<[`Task`](../type-aliases/Task.md)> - -A promise that resolves with a [Task](../type-aliases/Task.md) object - containing task metadata and data. - -#### Throws - -If called from an untrusted origin. - -#### Throws - -If Action Center does not respond within the allotted timeout. - -#### Implementation of - -[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`getTask`](../interfaces/CodedActionAppsServiceModel.md#gettask) - -*** - -### setTaskData() - -> **setTaskData**(`data`: `unknown`): `void` - -Notifies Action Center that the task data has been changed by the user. -This is needed to enable the save button in Action Center when the task data has changed - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `data` | `unknown` | The updated data payload to send to Action Center. | - -#### Returns - -`void` - -#### Implementation of - -[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`setTaskData`](../interfaces/CodedActionAppsServiceModel.md#settaskdata) - -*** - -### showMessage() - -> **showMessage**(`msg`: `string`, `type`: [`MessageSeverity`](../enumerations/MessageSeverity.md)): `void` - -Displays a toast message inside Action Center. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `msg` | `string` | The message text to display. | -| `type` | [`MessageSeverity`](../enumerations/MessageSeverity.md) | The severity/style of the message (`info`, `success`, `warning`, or `error`). | - -#### Returns - -`void` - -#### Implementation of - -[`CodedActionAppsServiceModel`](../interfaces/CodedActionAppsServiceModel.md).[`showMessage`](../interfaces/CodedActionAppsServiceModel.md#showmessage) diff --git a/docs/coded-action-apps/enumerations/MessageSeverity.md b/docs/coded-action-apps/enumerations/MessageSeverity.md deleted file mode 100644 index 2592cca59..000000000 --- a/docs/coded-action-apps/enumerations/MessageSeverity.md +++ /dev/null @@ -1,25 +0,0 @@ -Severity level for toast messages displayed in Action Center. - -## Enumeration Members - -### Error - -> **Error**: `"error"` - -*** - -### Info - -> **Info**: `"info"` - -*** - -### Success - -> **Success**: `"success"` - -*** - -### Warning - -> **Warning**: `"warning"` diff --git a/docs/coded-action-apps/enumerations/TaskStatus.md b/docs/coded-action-apps/enumerations/TaskStatus.md deleted file mode 100644 index 4792d8c0a..000000000 --- a/docs/coded-action-apps/enumerations/TaskStatus.md +++ /dev/null @@ -1,19 +0,0 @@ -Represents the status of a task in Action Center. - -## Enumeration Members - -### Completed - -> **Completed**: `"Completed"` - -*** - -### Pending - -> **Pending**: `"Pending"` - -*** - -### Unassigned - -> **Unassigned**: `"Unassigned"` diff --git a/docs/coded-action-apps/enumerations/Theme.md b/docs/coded-action-apps/enumerations/Theme.md deleted file mode 100644 index 6ae02a33d..000000000 --- a/docs/coded-action-apps/enumerations/Theme.md +++ /dev/null @@ -1,31 +0,0 @@ -UI theme applied to Action Center, passed to the coded action app on load. - -## Enumeration Members - -### AutoTheme - -> **AutoTheme**: `"autoTheme"` - -*** - -### Dark - -> **Dark**: `"dark"` - -*** - -### DarkHighContrast - -> **DarkHighContrast**: `"dark-hc"` - -*** - -### Light - -> **Light**: `"light"` - -*** - -### LightHighContrast - -> **LightHighContrast**: `"light-hc"` diff --git a/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md b/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md deleted file mode 100644 index a47c6fb14..000000000 --- a/docs/coded-action-apps/interfaces/CodedActionAppsServiceModel.md +++ /dev/null @@ -1,159 +0,0 @@ -Service for bi-directional communication between coded action apps and Action Center - -### Usage - -```typescript -import { CodedActionApps } from '@uipath/uipath-ts-coded-action-apps'; - -const service = new CodedActionApps(); -``` - -## Methods - -### completeTask() - -> **completeTask**(`actionTaken`: `string`, `data`: `unknown`): `Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> - -Marks the current task as complete in Action Center. -Sends the final action and associated data to Action Center, -signalling that the user has finished interacting with the task. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `actionTaken` | `string` | A string identifying the action the user performed (e.g. `"Approve"`, `"Reject"`). | -| `data` | `unknown` | The final data payload to submit alongside the completion event. | - -#### Returns - -`Promise`<[`TaskCompleteResponse`](../type-aliases/TaskCompleteResponse.md)> - -A promise that resolves with a [TaskCompleteResponse](../type-aliases/TaskCompleteResponse.md) object - containing success and error message if any. - -#### Throws - -If called from an untrusted origin. - -#### Throws - -If a completeTask call is already in progress. - -#### Example - -```typescript -// Approve a task -const result = await service.completeTask('Approve', { approved: true, notes: 'Looks good' }); - -if (!result.success) { - console.error(`Failed (code ${result.errorCode}): ${result.errorMessage}`); -} - -// Reject a task -const result = await service.completeTask('Reject', { approved: false, reason: 'Missing info' }); - -if (!result.success) { - console.error(`Failed (code ${result.errorCode}): ${result.errorMessage}`); -} -``` - -*** - -### getTask() - -> **getTask**(): `Promise`<[`Task`](../type-aliases/Task.md)> - -Fetches the current opened task's details from Action Center. - -#### Returns - -`Promise`<[`Task`](../type-aliases/Task.md)> - -A promise that resolves with a [Task](../type-aliases/Task.md) object - containing task metadata and data. - -#### Throws - -If called from an untrusted origin. - -#### Throws - -If Action Center does not respond within the allotted timeout. - -#### Example - -```typescript -// Call once when the app loads -const task = await service.getTask(); - -console.log(task.taskId); // number -console.log(task.title); // string -console.log(task.status); // TaskStatus enum -console.log(task.isReadOnly); // boolean — disable editing if true -console.log(task.data); // the task's form data -console.log(task.folderId); // number -console.log(task.folderName); // string -console.log(task.theme); // Theme enum — current Action Center UI theme - -// Disable the form when task is read-only -if (task.isReadOnly) { - disableForm(); -} -``` - -*** - -### setTaskData() - -> **setTaskData**(`data`: `unknown`): `void` - -Notifies Action Center that the task data has been changed by the user. -This is needed to enable the save button in Action Center when the task data has changed - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `data` | `unknown` | The updated data payload to send to Action Center. | - -#### Returns - -`void` - -#### Example - -```typescript -// Call whenever the user modifies the form. Make sure to pass the full current task data -service.setTaskData({ name: 'John', approved: true, notes: 'Looks good' }); -``` - -*** - -### showMessage() - -> **showMessage**(`msg`: `string`, `type`: [`MessageSeverity`](../enumerations/MessageSeverity.md)): `void` - -Displays a toast message inside Action Center. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `msg` | `string` | The message text to display. | -| `type` | [`MessageSeverity`](../enumerations/MessageSeverity.md) | The severity/style of the message (`info`, `success`, `warning`, or `error`). | - -#### Returns - -`void` - -#### Example - -```typescript -import { MessageSeverity } from '@uipath/uipath-ts-coded-action-apps'; - -service.showMessage('Submitted successfully', MessageSeverity.Success); -service.showMessage('Submission failed', MessageSeverity.Error); -service.showMessage('Please review the details', MessageSeverity.Warning); -service.showMessage('Auto-saved', MessageSeverity.Info); -``` diff --git a/docs/coded-action-apps/type-aliases/Task.md b/docs/coded-action-apps/type-aliases/Task.md deleted file mode 100644 index b87afa725..000000000 --- a/docs/coded-action-apps/type-aliases/Task.md +++ /dev/null @@ -1,75 +0,0 @@ -> **Task** = \{ `action`: `string` \| `null`; `data`: `unknown`; `folderId`: `number`; `folderName`: `string`; `isReadOnly`: `boolean`; `status`: [`TaskStatus`](../enumerations/TaskStatus.md); `taskId`: `number`; `theme`: [`Theme`](../enumerations/Theme.md); `title`: `string`; \} - -Details of task opened in Action Center. - -## Properties - -### action - -> **action**: `string` \| `null` - -The action that was taken to complete the task, or `null` if not yet completed. - -*** - -### data - -> **data**: `unknown` - -Data of the task. - -*** - -### folderId - -> **folderId**: `number` - -ID of the folder the task belongs to. - -*** - -### folderName - -> **folderName**: `string` - -Display name of the folder the task belongs to. - -*** - -### isReadOnly - -> **isReadOnly**: `boolean` - -Whether the task is in read-only mode for the current user. Disable editing if this is true - -*** - -### status - -> **status**: [`TaskStatus`](../enumerations/TaskStatus.md) - -Current status of the task. - -*** - -### taskId - -> **taskId**: `number` - -Unique identifier of the task. - -*** - -### theme - -> **theme**: [`Theme`](../enumerations/Theme.md) - -UI theme that Action Center is currently using. - -*** - -### title - -> **title**: `string` - -Display title of the task. diff --git a/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md b/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md deleted file mode 100644 index 637d08b99..000000000 --- a/docs/coded-action-apps/type-aliases/TaskCompleteResponse.md +++ /dev/null @@ -1,27 +0,0 @@ -> **TaskCompleteResponse** = \{ `errorCode`: `number` \| `null`; `errorMessage`: `string` \| `null`; `success`: `boolean`; \} - -Response returned by Action Center after a task completion attempt. This type is used by coded-action-apps package - -## Properties - -### errorCode - -> **errorCode**: `number` \| `null` - -Error code returned on failure, null when successful - -*** - -### errorMessage - -> **errorMessage**: `string` \| `null` - -Human-readable error message returned on failure, null when successful. - -*** - -### success - -> **success**: `boolean` - -Whether the task was completed successfully. diff --git a/docs/conversational-agent/index.md b/docs/conversational-agent/index.md deleted file mode 100644 index c7e2b8080..000000000 --- a/docs/conversational-agent/index.md +++ /dev/null @@ -1,191 +0,0 @@ -# Conversational Agent - -Service for managing UiPath Conversational Agents — AI-powered chat interfaces that enable -natural language interactions with UiPath automation. Discover agents, create conversations, -and stream real-time responses over WebSocket. [UiPath Conversational Agents Guide](https://docs.uipath.com/agents/automation-cloud/latest/user-guide/conversational-agents) - -Prerequisites: Initialize the SDK first - see [Getting Started](/uipath-typescript/getting-started/#import-initialize) - -## How It Works - -### Lifecycle - -```mermaid -graph TD - A["Agent"] -->|conversations.create| B["Conversation"] - B -->|startSession| C["Session"] - B -->|exchanges.getAll| F(["History"]) - C -->|onSessionStarted| D["Ready"] - D -->|startExchange| E["Exchange"] - E -->|sendMessage| G["Message"] -``` - -### Real-Time Event Flow - -Once a session is started, events flow through a nested stream hierarchy: - -```mermaid -graph TD - S["SessionStream"] - S -->|onExchangeStart| E["ExchangeStream"] - S -->|onSessionEnd| SE(["session closed"]) - E -->|onMessageStart| M["MessageStream"] - E -->|onExchangeEnd| EE(["exchange complete"]) - M -->|onContentPartStart| CP["ContentPartStream"] - M -->|onToolCallStart| TC["ToolCallStream"] - M -->|onInterruptStart| IR(["awaiting approval"]) - CP -->|onChunk| CH(["streaming data"]) - TC -->|onToolCallEnd| TCE(["tool result"]) -``` - -## Usage - -```typescript -import { ConversationalAgent } from '@uipath/uipath-typescript/conversational-agent'; - -const conversationalAgent = new ConversationalAgent(sdk); - -// 1. Discover agents -const agents = await conversationalAgent.getAll(); -const agent = agents[0]; - -// 2. Create a conversation -const conversation = await agent.conversations.create({ label: 'My Chat' }); - -// 3. Start real-time session and listen for responses -const session = conversation.startSession(); - -session.onExchangeStart((exchange) => { - exchange.onMessageStart((message) => { - if (message.isAssistant) { - message.onContentPartStart((part) => { - if (part.isMarkdown) { - part.onChunk((chunk) => process.stdout.write(chunk.data ?? '')); - } - }); - } - }); -}); - -// 4. Wait for session to be ready, then send a message -session.onSessionStarted(() => { - const exchange = session.startExchange(); - exchange.sendMessageWithContentPart({ data: 'Hello!' }); -}); - -// 5. End session when done -conversation.endSession(); - -// 6. Retrieve conversation history (offline) -const exchanges = await conversation.exchanges.getAll(); -``` - -## Properties - -| Property | Modifier | Type | Description | -| ------ | ------ | ------ | ------ | -| `conversations` | `readonly` | [`ConversationServiceModel`](../api/interfaces/ConversationServiceModel.md) | Service for creating and managing conversations. See [ConversationServiceModel](../api/interfaces/ConversationServiceModel.md). | - -## Methods - -### getAll() - -> **getAll**(`folderId?`: `number`): `Promise`<[`AgentGetResponse`](../api/type-aliases/AgentGetResponse.md)[]> - -Gets all available conversational agents - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `folderId?` | `number` | Optional folder ID to filter agents | - -#### Returns - -`Promise`<[`AgentGetResponse`](../api/type-aliases/AgentGetResponse.md)[]> - -Promise resolving to an array of agents -[AgentGetResponse](../api/type-aliases/AgentGetResponse.md) - -#### Examples - -```typescript -const agents = await conversationalAgent.getAll(); -const agent = agents[0]; - -// Create conversation directly from agent (agentId and folderId are auto-filled) -const conversation = await agent.conversations.create({ label: 'My Chat' }); -``` - -```typescript -const agents = await conversationalAgent.getAll(folderId); -``` - -*** - -### getById() - -> **getById**(`id`: `number`, `folderId`: `number`): `Promise`<[`AgentGetByIdResponse`](../api/type-aliases/AgentGetByIdResponse.md)> - -Gets a specific agent by ID - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `id` | `number` | ID of the agent release | -| `folderId` | `number` | ID of the folder containing the agent | - -#### Returns - -`Promise`<[`AgentGetByIdResponse`](../api/type-aliases/AgentGetByIdResponse.md)> - -Promise resolving to the agent -[AgentGetByIdResponse](../api/type-aliases/AgentGetByIdResponse.md) - -#### Example - -```typescript -const agent = await conversationalAgent.getById(agentId, folderId); - -// Create conversation directly from agent (agentId and folderId are auto-filled) -const conversation = await agent.conversations.create({ label: 'My Chat' }); -``` - -*** - -### onConnectionStatusChanged() - -> **onConnectionStatusChanged**(`handler`: (`status`: `ConnectionStatus`, `error`: `null` \| `Error`) => `void`): () => `void` - -Registers a handler that is called whenever the WebSocket connection status changes. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `handler` | (`status`: `ConnectionStatus`, `error`: `null` \| `Error`) => `void` | Callback receiving a ConnectionStatus (`'Disconnected'` | `'Connecting'` | `'Connected'`) and an optional `Error` | - -#### Returns - -Cleanup function to remove the handler - -> (): `void` - -##### Returns - -`void` - -#### Example - -```typescript -const cleanup = conversationalAgent.onConnectionStatusChanged((status, error) => { - console.log('Connection status:', status); - if (error) { - console.error('Connection error:', error.message); - } -}); - -// Later, remove the handler -cleanup(); -``` diff --git a/docs/conversations/index.md b/docs/conversations/index.md deleted file mode 100644 index e9bbdece4..000000000 --- a/docs/conversations/index.md +++ /dev/null @@ -1,406 +0,0 @@ -# Conversations - -Service for creating and managing conversations with UiPath Conversational Agents - -A conversation is a long-lived interaction with a specific agent with shared context. -It persists across sessions and can be resumed at any time. To retrieve the -conversation history, use the [Exchanges](../api/interfaces/ExchangeServiceModel.md) service. -For real-time chat, see [Session](../api/interfaces/SessionStream.md). - -### Usage - -Prerequisites: Initialize the SDK first - see [Getting Started](/uipath-typescript/getting-started/#import-initialize) - -```typescript -import { ConversationalAgent } from '@uipath/uipath-typescript/conversational-agent'; - -const conversationalAgent = new ConversationalAgent(sdk); - -// Access conversations through the main service -const conversation = await conversationalAgent.conversations.create(agentId, folderId); - -// Or through agent objects (agentId/folderId auto-filled) -const agents = await conversationalAgent.getAll(); -const agentConversation = await agents[0].conversations.create({ label: 'My Chat' }); -``` - -## Methods - -### create() - -> **create**(`agentId`: `number`, `folderId`: `number`, `options?`: [`ConversationCreateOptions`](../api/interfaces/ConversationCreateOptions.md)): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Creates a new conversation - -The returned conversation has bound methods for lifecycle management: -`update()`, `delete()`, and `startSession()`. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `agentId` | `number` | The agent ID to create the conversation for | -| `folderId` | `number` | The folder ID containing the agent | -| `options?` | [`ConversationCreateOptions`](../api/interfaces/ConversationCreateOptions.md) | Optional settings for the conversation | - -#### Returns - -`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Promise resolving to [ConversationCreateResponse](../api/type-aliases/ConversationCreateResponse.md) with bound methods - -#### Example - -```typescript -const conversation = await conversationalAgent.conversations.create( - agentId, - folderId, - { label: 'Customer Support Session' } -); - -// Update the conversation -await conversation.update({ label: 'Renamed Chat' }); - -// Start a real-time session -const session = conversation.startSession(); - -// Delete the conversation -await conversation.delete(); -``` - -*** - -### deleteById() - -> **deleteById**(`id`: `string`): `Promise`<[`RawConversationGetResponse`](../api/interfaces/RawConversationGetResponse.md)> - -Deletes a conversation by ID - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `id` | `string` | The conversation ID to delete | - -#### Returns - -`Promise`<[`RawConversationGetResponse`](../api/interfaces/RawConversationGetResponse.md)> - -Promise resolving to [ConversationDeleteResponse](../api/type-aliases/ConversationDeleteResponse.md) - -#### Example - -```typescript -await conversationalAgent.conversations.deleteById(conversationId); -``` - -*** - -### endSession() - -> **endSession**(`conversationId`: `string`): `void` - -Ends an active session for a conversation - -Sends a session end event and releases the socket for the conversation. -If no active session exists for the given conversation, this is a no-op. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `conversationId` | `string` | The conversation ID to end the session for | - -#### Returns - -`void` - -#### Example - -```typescript -// End session for a specific conversation -conversationalAgent.conversations.endSession(conversationId); -``` - -*** - -### getAll() - -> **getAll**<`T`>(`options?`: `T`): `Promise`<`T` *extends* [`HasPaginationOptions`](../api/type-aliases/HasPaginationOptions.md)<`T`> ? [`PaginatedResponse`](../api/interfaces/PaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> : [`NonPaginatedResponse`](../api/interfaces/NonPaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)>> - -Gets all conversations with optional filtering and pagination - -#### Type Parameters - -| Type Parameter | Default type | -| ------ | ------ | -| `T` *extends* [`ConversationGetAllOptions`](../api/type-aliases/ConversationGetAllOptions.md) | [`ConversationGetAllOptions`](../api/type-aliases/ConversationGetAllOptions.md) | - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `options?` | `T` | Options for querying conversations including optional pagination parameters | - -#### Returns - -`Promise`<`T` *extends* [`HasPaginationOptions`](../api/type-aliases/HasPaginationOptions.md)<`T`> ? [`PaginatedResponse`](../api/interfaces/PaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> : [`NonPaginatedResponse`](../api/interfaces/NonPaginatedResponse.md)<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)>> - -Promise resolving to either an array of conversations NonPaginatedResponse or a PaginatedResponse when pagination options are used - -#### Examples - -```typescript -const allConversations = await conversationalAgent.conversations.getAll(); - -for (const conversation of allConversations.items) { - console.log(`${conversation.label} - created: ${conversation.createdTime}`); -} -``` - -```typescript -// First page -const firstPage = await conversationalAgent.conversations.getAll({ pageSize: 10 }); - -// Navigate using cursor -if (firstPage.hasNextPage) { - const nextPage = await conversationalAgent.conversations.getAll({ - cursor: firstPage.nextCursor - }); -} -``` - -```typescript -const result = await conversationalAgent.conversations.getAll({ - sort: SortOrder.Descending, - pageSize: 20 -}); -``` - -*** - -### getAttachmentUploadUri() - -> **getAttachmentUploadUri**(`conversationId`: `string`, `fileName`: `string`): `Promise`<[`ConversationAttachmentCreateResponse`](../api/interfaces/ConversationAttachmentCreateResponse.md)> - -Registers a file attachment for a conversation and returns a URI along with -pre-signed upload access details. Use the returned `fileUploadAccess` to upload -the file content to blob storage, then reference `uri` in subsequent messages. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `conversationId` | `string` | The ID of the conversation to attach the file to | -| `fileName` | `string` | The name of the file to attach | - -#### Returns - -`Promise`<[`ConversationAttachmentCreateResponse`](../api/interfaces/ConversationAttachmentCreateResponse.md)> - -Promise resolving to [ConversationAttachmentCreateResponse](../api/interfaces/ConversationAttachmentCreateResponse.md) containing -the attachment `uri` and `fileUploadAccess` details needed to upload the file content - -#### Examples - -```typescript -const { uri, fileUploadAccess } = await conversationalAgent.conversations.getAttachmentUploadUri(conversationId, 'report.pdf'); -console.log(`Attachment URI: ${uri}`); -``` - -```typescript -const { uri, fileUploadAccess } = await conversationalAgent.conversations.getAttachmentUploadUri(conversationId, file.name); - -await fetch(fileUploadAccess.url, { - method: fileUploadAccess.verb, - body: file, - headers: { 'Content-Type': file.type }, -}); - -// Reference the URI in a message after upload -console.log(`File ready at: ${uri}`); -``` - -*** - -### getById() - -> **getById**(`id`: `string`): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Gets a conversation by ID - -The returned conversation has bound methods for lifecycle management: -`update()`, `delete()`, and `startSession()`. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `id` | `string` | The conversation ID to retrieve | - -#### Returns - -`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Promise resolving to [ConversationGetResponse](../api/type-aliases/ConversationGetResponse.md) with bound methods - -#### Examples - -```typescript -const conversation = await conversationalAgent.conversations.getById(conversationId); -const session = conversation.startSession(); -``` - -```typescript -//Retrieve conversation history -const conversation = await conversationalAgent.conversations.getById(conversationId); -const allExchanges = await conversation.exchanges.getAll(); -for (const exchange of allExchanges.items) { - for (const message of exchange.messages) { - console.log(`${message.role}: ${message.contentParts.map(p => p.data).join('')}`); - } -} -``` - -*** - -### getSession() - -> **getSession**(`conversationId`: `string`): `undefined` \| [`SessionStream`](../api/interfaces/SessionStream.md) - -Retrieves an active session by conversation ID - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `conversationId` | `string` | The conversation ID to get the session for | - -#### Returns - -`undefined` \| [`SessionStream`](../api/interfaces/SessionStream.md) - -The session helper if active, undefined otherwise - -#### Example - -```typescript -const session = conversationalAgent.conversations.getSession(conversationId); -if (session) { - // Session already started — safe to send exchanges directly - const exchange = session.startExchange(); - exchange.sendMessageWithContentPart({ data: 'Hello!' }); -} -``` - -*** - -### startSession() - -> **startSession**(`conversationId`: `string`, `options?`: [`ConversationSessionOptions`](../api/interfaces/ConversationSessionOptions.md)): [`SessionStream`](../api/interfaces/SessionStream.md) - -Starts a real-time chat session for a conversation - -Creates a WebSocket session and returns a SessionStream for sending -and receiving messages in real-time. - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `conversationId` | `string` | The conversation ID to start the session for | -| `options?` | [`ConversationSessionOptions`](../api/interfaces/ConversationSessionOptions.md) | Optional session configuration | - -#### Returns - -[`SessionStream`](../api/interfaces/SessionStream.md) - -SessionStream for managing the session - -#### Example - -```typescript -const session = conversationalAgent.conversations.startSession(conversation.id); - -// Listen for responses using helper methods -session.onExchangeStart((exchange) => { - exchange.onMessageStart((message) => { - // Use message.isAssistant to filter AI responses - if (message.isAssistant) { - message.onContentPartStart((part) => { - // Use part.isMarkdown to handle text content - if (part.isMarkdown) { - part.onChunk((chunk) => console.log(chunk.data)); - } - }); - } - }); -}); - -// Wait for session to be ready, then send a message -session.onSessionStarted(() => { - const exchange = session.startExchange(); - exchange.sendMessageWithContentPart({ data: 'Hello!' }); -}); - -// End the session when done -conversationalAgent.conversations.endSession(conversation.id); -``` - -*** - -### updateById() - -> **updateById**(`id`: `string`, `options`: [`ConversationUpdateOptions`](../api/interfaces/ConversationUpdateOptions.md)): `Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Updates a conversation by ID - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `id` | `string` | The conversation ID to update | -| `options` | [`ConversationUpdateOptions`](../api/interfaces/ConversationUpdateOptions.md) | Fields to update | - -#### Returns - -`Promise`<[`ConversationGetResponse`](../api/type-aliases/ConversationGetResponse.md)> - -Promise resolving to [ConversationGetResponse](../api/type-aliases/ConversationGetResponse.md) with bound methods - -#### Example - -```typescript -const updatedConversation = await conversationalAgent.conversations.updateById(conversationId, { - label: 'Updated Name' -}); -``` - -*** - -### uploadAttachment() - -> **uploadAttachment**(`id`: `string`, `file`: `File`): `Promise`<[`ConversationAttachmentUploadResponse`](../api/interfaces/ConversationAttachmentUploadResponse.md)> - -Uploads a file attachment to a conversation - -#### Parameters - -| Parameter | Type | Description | -| ------ | ------ | ------ | -| `id` | `string` | The ID of the conversation to attach the file to | -| `file` | `File` | The file to upload | - -#### Returns - -`Promise`<[`ConversationAttachmentUploadResponse`](../api/interfaces/ConversationAttachmentUploadResponse.md)> - -Promise resolving to attachment metadata with URI -[ConversationAttachmentUploadResponse](../api/interfaces/ConversationAttachmentUploadResponse.md) - -#### Example - -```typescript -const attachment = await conversationalAgent.conversations.uploadAttachment(conversationId, file); -console.log(`Uploaded: ${attachment.uri}`); -``` From 9f0f6365795e33aa43cfe277d93904c2f88e269c Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 14:34:50 +0000 Subject: [PATCH 10/11] fix(docs): add generated docs directories to .gitignore Prevent generated API docs (conversational-agent, conversations, coded-action-apps subdirectories) from being accidentally committed. Co-Authored-By: Claude Opus 4.6 --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index d5ebae838..83fdcb18f 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,13 @@ npm-debug.log* dist/ docs/api/ +docs/conversational-agent/ +docs/conversations/ +docs/coded-action-apps/classes/ +docs/coded-action-apps/enumerations/ +docs/coded-action-apps/interfaces/ +docs/coded-action-apps/type-aliases/ +docs/coded-action-apps/README.md site/ .uipath/ From 2315b42b07871c2066df129860a6d4b8e2c24edd Mon Sep 17 00:00:00 2001 From: Minion Date: Tue, 24 Mar 2026 14:40:43 +0000 Subject: [PATCH 11/11] fix(docs): revert docs/ changes from PR per review feedback Reverts docs/stylesheets/extra.css and mkdocs.yml to their original state as docs/ folder changes should not be part of this PR. Co-Authored-By: Claude Opus 4.6 --- docs/stylesheets/extra.css | 15 ++------------- mkdocs.yml | 1 - 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 2b2776051..28153470e 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -79,20 +79,9 @@ opacity: 1 !important; } -.md-content article a[href^="https://"]:not(.md-content__button):not(.headerlink)::after, -.md-content article a[href^="http://"]:not(.md-content__button):not(.headerlink)::after { +.md-content a[href^="https://"]::after { content: "↗"; - font-size: 0.7em; - margin-left: 0.15em; - vertical-align: super; - text-decoration: none; - display: inline-block; -} - -.md-content article pre a::after, -.md-content article blockquote a::after, -.md-content article .md-content__button::after { - content: none !important; + font-size: 1em; } @media screen and (min-width: 60em) { diff --git a/mkdocs.yml b/mkdocs.yml index 7d5d2db29..e169a8e45 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -156,7 +156,6 @@ markdown_extensions: - pymdownx.magiclink - pymdownx.snippets - pymdownx.fancylists - - pymdownx.tilde - pymdownx.tabbed: alternate_style: true - toc: