-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
deferredenhancementNew feature or requestNew feature or requestsquad:virgilAssigned to Virgil (VS Extension Dev (VS 2026))Assigned to Virgil (VS Extension Dev (VS 2026))vs2026Visual Studio 2026 extension developmentVisual Studio 2026 extension development
Description
Description
Port the core file parsing services from the TypeScript VS Code extension to C#/.NET. These services form the data layer for the VS 2026 extension, reading and watching the .ai-team/ directory structure.
This issue depends on Issue #43 (project scaffold) being complete.
Acceptance Criteria
- TeamMdService equivalent implemented (parses
team.md)- Extracts team members, roles, status, GitHub usernames
- Returns strong-typed TeamMember model
- DecisionService equivalent implemented (parses
decisions.mdanddecisions/directory)- Reads main decisions.md file
- Scans decisions/ subdirectory for decision entries
- Parses H2/H3 headings and date metadata
- Returns DecisionEntry model list
- SkillCatalogService equivalent implemented
- Scans
skills/directory - Parses skill YAML/markdown metadata
- Returns Skill model with name, description, confidence
- Scans
- Shared models defined (TeamMember, DecisionEntry, Skill, SkillEntry, etc.)
- Models reflect TypeScript equivalents from
src/models/index.ts
- Models reflect TypeScript equivalents from
- FileWatcherService implemented
- Watches
.ai-team/directory tree for changes - Debounces rapid file changes
- Triggers service refresh callbacks
- Clean start/stop lifecycle
- Watches
- Service cache invalidation mechanism
- Services can register invalidation callbacks
- File changes trigger appropriate service refreshes
- All services have unit tests
- Mock file I/O tests
- Parser logic tests
- File watcher debounce tests
Implementation Details
Models (C# equivalents)
Create Models/ folder with:
TeamMember.cs— Name, Role, Status, GitHubUsername, Biography, etc.DecisionEntry.cs— Title, Date, Authors, Content, TagsSkill.cs— Name, Description, SourceUrl, ConfidenceLevel, InstallCommandSkillEntry.cs— lightweight version for catalog listingsFileWatcherEvent.cs— Path, ChangeType, Timestamp
Services (C# equivalents)
Create Services/ folder with:
-
TeamMdService.cs— Parseteam.md→List<TeamMember>- Reference:
src/services/TeamMdService.ts(TypeScript version) - Key methods:
GetTeamMembers(),GetMemberByUsername()
- Reference:
-
DecisionService.cs— Parse decisions →List<DecisionEntry>- Reference:
src/services/DecisionService.ts - Key methods:
GetDecisions(),GetRecentDecisions(days),GetDecisionsByAgent()
- Reference:
-
SkillCatalogService.cs— Parse skills/ directory →List<Skill>- Reference:
src/services/SkillCatalogService.ts - Key methods:
GetSkills(),GetSkillByName(),SearchSkills(query)
- Reference:
-
FileWatcherService.cs— Watch.ai-team/for changes- Reference:
src/services/FileWatcherService.ts - Key methods:
Start(),Stop(),RegisterCacheInvalidator(),OnFileChange() - Use
FileSystemWatcherfor file monitoring - Implement debounce (300-500ms) to handle rapid changes
- Reference:
Data Flow
FileWatcherService detects change
↓
Triggers CacheInvalidator callbacks
↓
TeamMdService / DecisionService / SkillCatalogService refresh their caches
↓
Services emit refresh events
↓
UI layer (tool windows, commands) update their views
Size Estimate
L (Large) — 8-10 hours
Priority
P1 (Critical Path)
Dependencies
- Depends on: Issue VS 2026: Project scaffold and VSIX configuration #43 (VS 2026: Project scaffold and VSIX configuration)
Notes
- Focus on accurate file parsing and caching; don't optimize file I/O yet
- Use .NET's
System.IO.FileSystemWatcherfor change detection - Markdown parsing can be simple regex-based or use a markdown NuGet package (e.g., MarkdownSharp, Markdig)
- Keep models serializable (JSON) for future dashboard/API usage
- Write tests for parsers with fixture files from the actual
.ai-team/directory - Assigned to: squad:virgil (VS 2026 Extension Dev)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
deferredenhancementNew feature or requestNew feature or requestsquad:virgilAssigned to Virgil (VS Extension Dev (VS 2026))Assigned to Virgil (VS Extension Dev (VS 2026))vs2026Visual Studio 2026 extension developmentVisual Studio 2026 extension development