원클릭으로
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.