بنقرة واحدة
session-persistence
Protocol for local session metadata persistence in the Virgo extension.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Protocol for local session metadata persistence in the Virgo extension.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
# Dev Cycle Protocol: CDP Shell Sovereignty (v2.5.1)
Protocol for high-density, symmetrical shorthand logging in VS Code extensions.
Architectural map and development guidelines for the Virgo extension. Mandatory reference for all agent modifications.
Protocol for high-integrity conversational AI injections and sensory parity in the Virgo extension.
Governance protocol and automated scripts for packaging and publishing the Virgo MCP standalone server to the public NPM registry. Enforces safety gates and clean extraction logic.
Unified Release Authority — Single Source of Truth for all release lifecycle actions. Merges release_prestige and version_sentinel into one sovereign skill covering: semantic versioning rules, authorization gates, pipeline execution, artifact verification, git history auditing, SemVer enforcement, and post-release validation.
| name | session_persistence |
| description | Protocol for local session metadata persistence in the Virgo extension. |
To ensure human-readable session titles and turn metadata are correctly resolved in the UI without relying on central agent memory, all session-specific state must be persisted locally.
~/.gemini/antigravity/ (absolute, OS-normalized)~/.gemini/antigravity/virgo/~/.gemini/antigravity/virgo/<sessionId>/~/.gemini/antigravity/virgo/<sessionId>/extension_state.json~/.gemini/antigravity/virgo/<sessionId>/<timestamp>_<name>.md[!IMPORTANT] The
_antigravityRootfield inSpeechProvideris set topath.join(root, 'virgo')— NOT the bareantigravity/root._getSnippetHistory()scans_antigravityRootdirectly. Session directories are immediate children of this path.
extension_state.json){
"session_title": "Human Readable Title",
"current_turn_index": 0,
"last_updated": "2026-04-05T00:00:00Z"
}
In speechProvider.ts, use _getSnippetHistory() to resolve the displayName:
extension_state.json in the session directory.session_title.sessionId (truncated).In mcpStandalone.ts or mcpBridge.ts, the say_this_loud tool must accept an optional session_title:
extension_state.json with the new title if provided.current_turn_index atomically.extension_state.json.state.json in the brain/ directory is deprecated and MUST NOT be used for session vitals.[!NOTE] Observed: 2026-04-10.
_getSnippetHistory()iterates ALL directories inantigravityRoot(virgo/). System-only directories are NOT user sessions and produce empty results but waste I/O and clutter session discovery. They MUST be excluded from the scan.
_getSnippetHistory())| Directory | Reason |
|---|---|
brain/ | Agent memory (already excluded — line 802) |
protocols/ | Agent protocol templates — not a user session |
tempmediaStorage/ | Transient media files — not a user session |
// REQUIRED filter in _getSnippetHistory() directory scan:
const EXCLUDED_DIRS = new Set(['brain', 'protocols', 'tempmediaStorage']);
// In the filter instead of checking name === 'brain' only:
if (EXCLUDED_DIRS.has(name)) { return null; }
These are filtered automatically by the type !== FileType.Directory check:
active_servers.jsonmcp_discovery.json[!IMPORTANT] There are TWO distinct storage paths used by the system. Conflating them will cause the Snippet Discovery sidebar to show empty.
| Path | Purpose | Scanner Reads It? |
|---|---|---|
brain/<sessionId>/ | Agent artifacts (task.md, implementation_plan.md, media, scratch) | ❌ NOT scanned by _getSnippetHistory() |
virgo/<sessionId>/ | User-playable snippet .md files injected via MCP say_this_loud | ✅ YES — this is where _getSnippetHistory() reads from |
When say_this_loud is called by the AI agent (via mcp_virgo_say_this_loud):
.md file MUST be written to virgo/<sessionId>/<timestamp>_<snippet_name>.mdbrain/<sessionId>/, it will NEVER appear in the Snippet Discovery UIIf the Snippet tab shows "No injected snippets found" for the current session, the most likely cause is:
brain/<sessionId>/ instead of virgo/<sessionId>/virgo/ but contains only extension_state.json (no .md files)Remedy: Verify that say_this_loud writes to the correct virgo/ path before troubleshooting the scanner.