Skip to content

v0.9.91 — MCP Session Replay, Task Outcomes & Signed-In Google Sheets#105

Open
LakshmanTurlapati wants to merge 27 commits into
mainfrom
refinements-v0.9.91
Open

v0.9.91 — MCP Session Replay, Task Outcomes & Signed-In Google Sheets#105
LakshmanTurlapati wants to merge 27 commits into
mainfrom
refinements-v0.9.91

Conversation

@LakshmanTurlapati

@LakshmanTurlapati LakshmanTurlapati commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

Ships FSB extension v0.9.91 and fsb-mcp-server v0.11.0. This release brings MCP-run browser sessions into the same local history, replay, and memory pipeline as Autopilot; adds an ordered terminal task-outcome handoff; and exposes bounded Google Sheets capabilities through the user's already signed-in, agent-owned spreadsheet tab.

  • Extension: 0.9.91
  • MCP server: 0.11.0
  • Diff: 23 commits, 116 files

What changed

MCP session history, replay, and memory

  • Records MCP action sessions at the extension bridge with resolved tab IDs and replay-compatible action names.
  • Saves MCP sessions into the existing local logs, session index, replay history, and memory-extraction flow used by Autopilot.
  • Persists open-session state through MV3 service-worker eviction and closes sessions on an explicit final action or the sliding idle deadline.
  • Applies recorder redaction and retention rules before persistence.
  • Adds MCP · <client> and Autopilot source badges to session-history surfaces.

Terminal task outcomes in MCP v0.11.0

  • Adds the mcp:task-status bridge contract for complete_task, partial_task, and fail_task.
  • Preserves agent identity, ownership token, optional tab target, and client-authored outcome details.
  • Serializes terminal outcomes behind pending browser mutations so a completion or failure cannot overtake the action it describes.
  • Records only handler-confirmed outcomes into local MCP task memory; validation and ownership failures are excluded.

Signed-in Google Sheets capabilities

  • Adds five typed catalog capabilities: gsheets.get_spreadsheet, gsheets.get_values, gsheets.update_values, gsheets.append_values, and gsheets.clear_values.
  • Uses the user's existing signed-in Google Sheets tab—no extension-managed OAuth flow, consent screen, cookie access, token storage, or generic authenticated proxy.
  • Re-pins every request to the agent-owned docs.google.com/spreadsheets/d/<id> tab and rejects spreadsheet-ID mismatches.
  • Uses a fixed page-owned Sheets client when available, with a bounded trusted-UI fallback for supported operations.
  • Fails closed on ambiguous mutation outcomes and never automatically replays a write that may have taken effect.
  • Keeps spreadsheet records shape-only by redacting IDs, ranges, sheet names, values, formulas, bodies, and raw errors.

Activation note: the two read capabilities are implemented and verified. The three mutation capabilities remain guarded-fail-closed until disposable-sheet live UAT and readback evidence pass.

UI, showcase, and repository refinements

  • Prevents custom selects from clipping inside settings cards and contains dashboard scrolling to the content pane.
  • Reworks the 3D knowledge graph into a category overview with expandable detail and syncs categories with the full site-guide catalog.
  • Adds community guidelines and updates extension, showcase, skill, store-listing, crawler, and release metadata for v0.9.91.

Compatibility

  • fsb-mcp-server@0.11.0 requires extension v0.9.91 or newer for the new terminal task-status route.
  • Existing manual actions, trigger watchers, observability tools, installer configuration, and npm package identity remain compatible.
  • No dependency versions changed in the MCP package.

Test plan

  • npm run ci after merging current origin/main
  • Extension validation and complete test chain
  • MCP build plus lifecycle/tool smoke tests
  • Angular production build and 126 crawler assertions
  • GitHub Actions: extension, MCP, showcase, and aggregate all-green jobs
  • Focused MCP session recorder, retention, settings, replay, and privacy coverage
  • Focused Sheets session, content action, handler, wiring, origin-pin, and redaction coverage
  • Live disposable-Sheet UAT before activating update_values, append_values, or clear_values

Lakshman added 26 commits July 7, 2026 05:58
…eplay/memory

- new extension/utils/mcp-session-recorder.js: sessions keyed agentId+tabId,
  birthed by the visualSession sidecar, closed on isFinal or 60s sliding idle,
  persisted via direct automationLogger.saveSession + extractAndStoreMemories
  globals with mode 'mcp-agent' and replay-shape actionHistory
- sibling recordDispatch hooks in BOTH dispatcher finally blocks (message
  route gated by !_mcpMetricsSuppressInner; metrics Test 9 pins undisturbed)
- eviction survival via versioned fsbMcpSessionBuffer chrome.storage.session
  envelope; key-targeted sensitive-param redaction, replay values raw
- run_task and pure read-only bursts never recorded
- automation-logger carries mode + mcpClient through saveSession and the
  session index; sidepanel history badge (MCP vs Autopilot)
- lattice importScripts tally bumped 309->310 mentions / 305->306 call sites
- tests/mcp-session-recorder.test.js: 10 locked cases + eviction restore +
  source-pin guards (94 assertions)
… resolved tab ids and replay-compatible names

Review findings on 721e282 plus the root defect beneath them:

- content/cdp-routed action tools (click, type, pressEnter, ...) never
  reached the dispatcher choke points, so the recorder only ever saw
  background-routed actions. New MCPBridgeClient._recordMcpSessionAction
  tap fires from all three _handleExecuteAction branches (main path,
  open_tab/switch_tab bootstrap, navigate NO_OWNED_TAB recovery) with the
  ownership-resolved tabId; the dispatcher tool-route session hook is
  removed (its action traffic all originates in _handleExecuteAction --
  keeping it would double-count background actions). The message-route
  join hook and both metrics hooks are untouched.
- finding #1: session keying read only params.tabId while wire params
  carry snake_case tab_id -- multi-tab agents collapsed onto
  agentId::none. Keying now prefers the explicit resolved tabId, then
  params.tab_id, then params.tabId (resolveAgentTabOrError order).
- finding #2: stored tool names must satisfy the replay whitelist.
  Wire verbs are already replay-compatible for content tools; the two
  real mismatches map at append time (go_back->goBack,
  go_forward->goForward); non-replayable verbs store verbatim.
- resolveMcpClientLabel exported to globalThis so the bridge tap
  resolves the canonical client label.
- test fixtures now simulate the production shapes (bridge recordAction
  with wire verbs + resolved tabId); pins updated (1 dispatcher session
  site inside the suppression gate, 1 bridge recordAction site, 3 tap
  invocations, metrics still exactly 2, resolver within 4500 chars of
  _handleExecuteAction); new cases for tab_id keying/no-collapse,
  bootstrap birth, name mapping, and failure/sidecar-less semantics
  (125 assertions).
… script

tests/mcp-session-recorder.test.js landed in the prior mcp-session-recorder
commits but was never added to the npm test script, so it wasn't running.
Mirrors the history-source-badge sidepanel.js already renders for MCP
agent vs autopilot sessions, so the control panel's session list carries
the same source indicator.
…ngs cards

.settings-card clips overflow for its rounded-card styling, which cut off
the custom .fsb-select dropdown menu whenever it opened near a card edge.
Toggle a .settings-card--select-open class (overflow: visible, elevated
z-index) on the host card for as long as its select is open, routed
through shared setFsbSelectCardOpen/closeFsbSelect helpers so every close
path (option pick, outside click, sibling open) clears it consistently.
html/body could grow taller than the viewport and scroll as a second
scroller alongside .dashboard-content, and flex children without
min-height: 0 wouldn't shrink to fit, letting page-level scroll fight
the intended single scroll pane. Pin html/body/.dashboard-container to
100vh with overflow: hidden, let .dashboard-main/.dashboard-content
shrink via min-height: 0, and add overscroll-behavior: contain so
.dashboard-content stays the one scroller and doesn't chain scroll past
its own edges.
…pandable detail

Overview now renders one node per category instead of flattening straight
to individual sites, with Full Detail (relabeled "Expanded" in the UI)
branching each category out to its sites in a cap around the category's
outward direction so they visibly fan off their parent. Adds animated
zoom-to-fit when switching detail levels, stronger highlight emphasis
(glow ring, bolder label, thicker link) on search matches, and drops the
now-redundant third detail tier and unused learned-pattern aggregation
from task-memory sites.
… list

CATEGORY_ORDER only listed 6 of the built-in site-guide categories, so
the showcase demo undercounted what the extension's knowledge graph
actually covers. Add the missing categories and drop the stale hardcoded
9-categories/43+-sites figure from the header comment.
@LakshmanTurlapati LakshmanTurlapati changed the title v0.9.62 — Implicit Visual Session Contract v0.9.91 — MCP Session Replay, Task Outcomes & Signed-In Google Sheets Jul 21, 2026
@LakshmanTurlapati
LakshmanTurlapati marked this pull request as ready for review July 21, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant