diff --git a/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts b/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts
index 84935a841..2a6d924f2 100644
--- a/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts
+++ b/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts
@@ -1,22 +1,100 @@
-import { Component } from '@angular/core';
+import { Component, computed } from '@angular/core';
import { ChatComponent } from '@cacheplane/chat';
import { streamResource } from '@cacheplane/stream-resource';
import { environment } from '../environments/environment';
+/**
+ * Represents a file operation extracted from agent tool calls.
+ */
+interface FileOperation {
+ type: 'read' | 'write';
+ path: string;
+ preview: string;
+}
+
/**
* FilesystemComponent demonstrates agent file operations.
*
- * The agent can read and write files using tool calls.
+ * The agent can read and write files using tool calls. The sidebar displays
+ * a live log of file operations derived from `stream.messages()`, filtering
+ * for `read_file` and `write_file` tool calls.
+ *
+ * Key integration points:
+ * - `stream.messages()` exposes the full message history including tool calls
+ * - `fileOps` filters messages for file-related tool calls and extracts metadata
+ * - Operations appear in the sidebar in real time as the agent works
*/
@Component({
selector: 'app-filesystem',
standalone: true,
imports: [ChatComponent],
- template: `