feat(web): add decision graph data transformation and stylesheet
Implement decision-graph.ts with:
- decisionsToElements(): Convert GraphNode/GraphEdge to Cytoscape ElementDefinition[]
* Each node includes: id, label (title), type, status, description, priority, assigned_to, metadata
* Each edge includes: id, source, target, label, edgeType
- filterNowMode(): Filter for 'Now' mode (active decisions only)
* Include Decision nodes with status 'active' or 'decided'
* Include Option nodes with status 'chosen'
* Include Outcome nodes with status 'active' or 'completed'
* Exclude: rejected, abandoned, superseded nodes
* Prune edges where either endpoint is filtered out
- decisionStylesheet(): Return Cytoscape stylesheet with node-type styling
* Decision: diamond shape, gold (#FFD700) background, dark border
* Option chosen: hexagon, green (#32CD32)
* Option rejected: hexagon, gray (#666), dashed border
* Option abandoned: hexagon, muted red (#CD5C5C), dashed border
* Outcome completed: ellipse, green
* Outcome active: ellipse, blue (#4169E1)
* Revisit: triangle, orange (#FFA500)
* Edges: straight lines with arrow, chosen=thicker+green, rejected=dashed+gray
* Selected nodes: red border
TypeScript verification: passed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>