{
  "schema": "freshvibe-way-v8.ingredients",
  "schema_version": "1.0.0",
  "module_id": "oscar.assistant",
  "data_shapes": [
    { "name": "DockState", "type": "'bar' | 'sheet-min' | 'sheet-full' | 'peek'", "source": "assistant/types.ts" },
    { "name": "Anchor", "type": "{ id, type, position, content, metadata }", "source": "assistant/types.ts" },
    { "name": "ChatMessage", "type": "{ id, role, text, latencyMs?, provider? }", "source": "assistant/types.ts" },
    { "name": "AskResult", "type": "{ text, provider, latencyMs, error? }", "source": "assistant/ask.ts" },
    { "name": "AssistantAction", "type": "navigate | open-item | compose | export", "source": "assistant/actions.ts" },
    { "name": "ConversationMemory", "type": "{ lastSpecies?, lastTree?, standardsMentioned[], categoriesDiscussed[], sitesMentioned[] }", "source": "assistant/memory.ts" }
  ],
  "dependencies": [
    { "package": "react", "version": "^18", "purpose": "UI components" },
    { "package": "react-router-dom", "version": "^6", "purpose": "route-aware state" }
  ],
  "environment": {
    "node": ">=20",
    "npm": ">=10",
    "browser": "modern evergreen"
  }
}
