Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions extensions/feature-orchestrator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Feature Orchestrator Extension

VS Code extension for the AI-driven feature development pipeline. Provides the dashboard UI,
feature detail panel, and design review system.

For the full developer guide, see [AI Driven Development Guide](../../AI%20Driven%20Development%20Guide.md).

## What This Extension Provides

- **Dashboard sidebar** (rocket icon) — metrics, active/completed features, open PRs
- **Feature detail panel** — artifacts, PBI table with dispatch buttons, PR actions, phase durations
- **Design review system** — inline comments via gutter icons + status bar submit button
- **Manual artifact entry** — add design specs, PBIs, or PRs via + buttons
- **Live refresh** — fetches latest PBI status from ADO and PR status from GitHub
- **Auto-completion** — detects when all PBIs are resolved and marks feature as done

## Installation

Run the setup script (builds and installs automatically):
```powershell
.\scripts\setup-ai-orchestrator.ps1
```

Or build manually:
```bash
cd extensions/feature-orchestrator
npm install
npm run compile
npx @vscode/vsce package --no-dependencies --allow-missing-repository
code --install-extension feature-orchestrator-latest.vsix --force
```

## Architecture

| File | Purpose |
|------|---------|
| `extension.ts` | Entry point — registers dashboard, commands |
| `dashboard.ts` | Sidebar webview — feature cards, metrics, open PRs |
| `featureDetail.ts` | Detail panel — artifacts, durations, dispatch, iterate, checkout |
| `designReview.ts` | CodeLens-based design review commenting |
| `tools.ts` | CLI helpers — `runCommand`, `switchGhAccount` |

## State

Feature state is stored at `~/.android-auth-orchestrator/state.json` (per-developer, not in repo).
Managed by `.github/hooks/state-utils.js`.

## Works Without This Extension

The entire pipeline (agents, prompt files, hooks, state) works without this extension.
It only provides the visual dashboard and review UI.
58 changes: 58 additions & 0 deletions extensions/feature-orchestrator/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

119 changes: 119 additions & 0 deletions extensions/feature-orchestrator/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{
"name": "feature-orchestrator",
"displayName": "Android Auth Feature Orchestrator",
"description": "AI-driven feature development orchestrator for the Android Auth multi-repo project. Dashboard + @orchestrator chat participant.",
"version": "0.3.0",
"publisher": "AzureAD",
"engines": {
"vscode": "^1.100.0"
},
"categories": [
"AI"
],
"activationEvents": ["onLanguage:markdown"],
"main": "./out/extension.js",
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "feature-orchestrator",
"title": "Feature Orchestrator",
"icon": "$(rocket)"
}
]
},
"views": {
"feature-orchestrator": [
{
"type": "webview",
"id": "orchestrator.dashboard",
"name": "Dashboard"
}
]
},
"commands": [
{
"command": "orchestrator.refreshDashboard",
"title": "Refresh Dashboard",
"icon": "$(refresh)",
"category": "Orchestrator"
},
{
"command": "orchestrator.newFeature",
"title": "New Feature",
"icon": "$(add)",
"category": "Orchestrator"
},
{
"command": "orchestrator.openFeatureDetail",
"title": "Open Feature Detail",
"category": "Orchestrator"
},
{
"command": "orchestrator.submitDesignReview",
"title": "Submit Review Comments (Current File)",
"icon": "$(comment)",
"category": "Orchestrator"
},
{
"command": "orchestrator.submitAllReviews",
"title": "Submit All Review Comments",
"icon": "$(comment-discussion)",
"category": "Orchestrator"
},
{
"command": "orchestrator.clearReviewComments",
"title": "Clear Review Comments (Current File)",
"category": "Orchestrator"
},
{
"command": "orchestrator.reviewComment.add",
"title": "Add Comment"
},
{
"command": "orchestrator.reviewComment.delete",
"title": "Delete Comment",
"icon": "$(trash)"
}
],
"menus": {
"view/title": [
{
"command": "orchestrator.refreshDashboard",
"when": "view == orchestrator.dashboard",
"group": "navigation"
},
{
"command": "orchestrator.newFeature",
"when": "view == orchestrator.dashboard",
"group": "navigation"
}
],
"comments/commentThread/context": [
{
"command": "orchestrator.reviewComment.add",
"group": "inline",
"when": "commentController == orchestrator.designReview"
}
],
"comments/comment/title": [
{
"command": "orchestrator.reviewComment.delete",
"group": "inline",
"when": "commentController == orchestrator.designReview && comment == reviewComment"
}
]
}
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"lint": "eslint src --ext ts"
},
"devDependencies": {
"@types/node": "^20.0.0",
"@types/vscode": "^1.100.0",
"typescript": "^5.5.0"
}
}
Loading
Loading