diff --git a/docs-site/assets/img/kagent-ui-chat-dark.png b/docs-site/assets/img/kagent-ui-chat-dark.png index f57f227f..461c7544 100644 Binary files a/docs-site/assets/img/kagent-ui-chat-dark.png and b/docs-site/assets/img/kagent-ui-chat-dark.png differ diff --git a/docs-site/assets/img/kagent-ui-chat.png b/docs-site/assets/img/kagent-ui-chat.png index 86c9af80..f7d7a84f 100644 Binary files a/docs-site/assets/img/kagent-ui-chat.png and b/docs-site/assets/img/kagent-ui-chat.png differ diff --git a/docs-site/content/kagent/1.x/observability/launch-ui.md b/docs-site/content/kagent/1.x/observability/launch-ui.md index caefeba2..6c71faf2 100644 --- a/docs-site/content/kagent/1.x/observability/launch-ui.md +++ b/docs-site/content/kagent/1.x/observability/launch-ui.md @@ -92,13 +92,18 @@ Start at the **Agents** page to review the agents and their backing pairs of Age Opening an agent and sending a message creates an {{< gloss "AgentInstance" >}}AgentInstance{{< /gloss >}}, which is one conversation scheduled onto a Substrate {{< gloss "Actor" >}}Actor{{< /gloss >}}. The conversation view shows the transcript, the tool calls the agent made along the way, and the controls that branch the conversation. -{{< reuse-image-light src="img/kagent-ui-chat.png" alt="A conversation with an agent, showing a tool call and a checkpoint" caption="Figure: A conversation with an agent" >}} -{{< reuse-image-dark srcDark="img/kagent-ui-chat-dark.png" alt="A conversation with an agent, showing a tool call and a checkpoint" caption="Figure: A conversation with an agent" >}} +{{< reuse-image-light src="img/kagent-ui-chat.png" alt="A conversation with an agent, showing a named snapshot and the controls on its mark" caption="Figure: A conversation with an agent" >}} +{{< reuse-image-dark srcDark="img/kagent-ui-chat-dark.png" alt="A conversation with an agent, showing a named snapshot and the controls on its mark" caption="Figure: A conversation with an agent" >}} -Two controls under the transcript branch the conversation rather than continue it. +The UI labels a {{< gloss "Checkpoint" >}}checkpoint{{< /gloss >}} **Snapshot**. The label names the pin, not the Agent Substrate {{< gloss "Snapshot" >}}snapshot{{< /gloss >}} beneath it. Agent Substrate writes a snapshot each time an Actor suspends, and a checkpoint pins one of those snapshots so that Agent Substrate does not collect it. -- **Checkpoint** pins the snapshot that the AgentInstance most recently suspended to, and records how far the transcript advanced. Agent Substrate does not collect a pinned snapshot, so the point stays available to return to. To understand how pinning works, and why a turn must be complete first, see [Checkpoints]({{< link path="substrate-runtime/suspend-and-resume#checkpoints" >}}). -- **Fork** creates a second AgentInstance from a checkpoint, continuing from the point that the checkpoint pinned. A {{< gloss "Fork" >}}fork{{< /gloss >}} inherits the checkpoint's {{< gloss "Revision" >}}Revision{{< /gloss >}}, so later edits to the AgentTemplate do not change what it runs, and new turns append only to the fork. For the same operation over the gRPC API, see [Fork the conversation into a second agent]({{< link path="examples/agent-substrate#fork-the-conversation-into-a-second-agent" >}}). +To take a checkpoint, select the save icon beside the message box. kagent pins the snapshot that the AgentInstance most recently suspended to, and records how far the transcript advanced. To understand how pinning works, and why a turn must be complete first, see [Checkpoints]({{< link path="substrate-runtime/suspend-and-resume#checkpoints" >}}). + +A checkpoint appears in the transcript as a mark carrying the snapshot name and three controls. Select the mark to open the record behind it. The record holds the checkpoint's ID, turn, state, and age. + +- **Fork** creates a second AgentInstance from the checkpoint, continuing from the point that the checkpoint pinned. A {{< gloss "Fork" >}}fork{{< /gloss >}} inherits the checkpoint's {{< gloss "Revision" >}}Revision{{< /gloss >}}, so later edits to the AgentTemplate do not change what it runs, and new turns append only to the fork. The fork takes the snapshot name as its own. For the same operation over the gRPC API, see [Fork the conversation into a second agent]({{< link path="examples/agent-substrate#fork-the-conversation-into-a-second-agent" >}}). +- **Rename** replaces the snapshot name that kagent generates on creation from the AgentInstance ID and the turn the checkpoint pins. Clearing the name restores that generated default. +- **Delete** removes the checkpoint and releases the snapshot it pinned. Agent Substrate is then free to collect that snapshot. > [!NOTE] > A checkpoint is always taken at the latest turn boundary, so the UI offers **Fork** on your own most recent message and not on earlier ones. diff --git a/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-dark.png b/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-dark.png index f57f227f..461c7544 100644 Binary files a/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-dark.png and b/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-dark.png differ diff --git a/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-light.png b/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-light.png index 86c9af80..f7d7a84f 100644 Binary files a/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-light.png and b/docs-site/playwright/__screenshots__/chat.spec.ts-snapshots/kagent-ui-chat-light.png differ diff --git a/docs-site/playwright/tests/chat.spec.ts b/docs-site/playwright/tests/chat.spec.ts index 4afd5853..853d28af 100644 --- a/docs-site/playwright/tests/chat.spec.ts +++ b/docs-site/playwright/tests/chat.spec.ts @@ -9,6 +9,11 @@ import { test, expect, gotoUI, pinClock, settle } from '../fixtures/test'; * seeded conversation has a fixed transcript, a checkpoint and a share * (ui/src/mocks/state.ts), which is exactly the 1.0 chat surface this page needs to show. * + * The chat labels that checkpoint "Snapshot" and carries Fork, Rename and Delete on its + * mark (kagent-dev/kagent#2847). That card is taller than the strip it replaced, so it + * pushes the transcript's tool call above the fold: `fullPage` does not recover it, + * because the transcript scrolls in its own container rather than with the page. + * * Run it against a dev server from a kagent checkout, NOT against a cluster: * * cd /ui && VITE_API_MODE=mock yarn dev --port 8101