Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
c5835c7
Initial plan
Copilot Apr 18, 2026
8fafe0f
Add Azure DevOps adapter with auth service, tests, and docs
Copilot Apr 18, 2026
922d5bc
Address code review: HTTPS-only, execFile, auth header sanitization, …
Copilot Apr 18, 2026
40ca521
Address final code review: anchored regex, PAT validation, pop() fall…
Copilot Apr 18, 2026
35c4268
Plan: ADO blob discovery, PAT auth docs, VS Code Microsoft auth
Copilot Apr 25, 2026
8ca925a
Improve ADO auth (VS Code Microsoft) and bundle discovery (full-tree …
Copilot Apr 25, 2026
51dcacc
feat(source-commands): add Azure DevOps as a selectable source type i…
Copilot Apr 25, 2026
6ce92ac
fix(azure-devops-adapter): omit path query param when collectionsPath…
Copilot Apr 26, 2026
d418d5e
fix(azure-devops-adapter): preserve literal '/' in path query params …
Copilot Apr 26, 2026
9400141
fix(azure-devops-adapter): always fetch full tree from root, filter c…
Copilot Apr 27, 2026
4adfe75
feat(azure-devops): switch bundle discovery to .collection.yml with d…
Copilot May 5, 2026
043e9d4
docs: update ADO adapter docs and UI label to reflect .collection.yml…
Copilot May 5, 2026
5f3349b
feat(azure-devops): support flat repo layout with depth-0 collections…
Copilot May 5, 2026
f053ea0
fix(azure-devops): use {project}-{repository}-{collectionId} as bundl…
Copilot May 6, 2026
f17fb77
fix(azure-devops): fix orphaned JSDoc comment and add depth-1 bundle …
Copilot May 6, 2026
fb5cd8b
fix(azure-devops): use collectionId directly as bundle ID to fix mani…
Copilot May 6, 2026
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
4 changes: 3 additions & 1 deletion docs/contributor-guide/architecture/adapters.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ interface IRepositoryAdapter {
| **LocalAwesomeCopilotAdapter** | `local-awesome-copilot` | Buffer-based | Active |
| **ApmAdapter** | `apm` | URL-based | Active |
| **LocalApmAdapter** | `local-apm` | Buffer-based | Active |
| **AzureDevOpsAdapter** | `azure-devops` | Buffer-based (ADO Items API zip) | Active |

Source types are defined in `src/types/registry.ts`:
```typescript
export type SourceType = 'github' | 'local' |
'awesome-copilot' | 'local-awesome-copilot' | 'apm' | 'local-apm';
'awesome-copilot' | 'local-awesome-copilot' | 'apm' | 'local-apm' |
'azure-devops';
```

## Two Installation Paths
Expand Down
40 changes: 40 additions & 0 deletions docs/reference/adapter-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,46 @@ export type SourceType =
| `LocalApmAdapter` | `local-apm` | Local APM packages | Active |
| `SkillsAdapter` | `skills` | Fetches skills from a GitHub repository's `skills/` directory | Active |
| `LocalSkillsAdapter` | `local-skills` | Local filesystem skills directory | Active |
| `AzureDevOpsAdapter` | `azure-devops` | Private ADO Git repositories (cloud or on-premises) | Active |

### AzureDevOpsAdapter

Fetches bundles from Azure DevOps Git repositories by scanning for `.collection.yml` files
under `collectionsPath`. Two repo layouts are supported:

- **Flat layout (depth-0)**: the `.collection.yml` lives directly inside `collectionsPath`
(e.g. `collections/my-collection.collection.yml`). Item paths in the YAML are relative to
the repo root. Skill items reference the skill directory path.
- **Bundle-directory layout (depth-1)**: each `.collection.yml` lives inside its own
subdirectory one level beneath `collectionsPath` (e.g. `collections/my-bundle/my-bundle.collection.yml`).

Bundles are assembled on-the-fly: each listed item is
fetched individually and packaged with a synthesised `deployment-manifest.yml` into an
in-memory ZIP archive β€” no `deployment-manifest.yml` needs to exist in the repository.

**Configuration:**

```json
{
"id": "my-ado-source",
"name": "My ADO Prompts",
"type": "azure-devops",
"url": "https://dev.azure.com/myorg/myproject/_git/myrepo",
"enabled": true,
"priority": 1,
"private": true,
"token": "<personal-access-token>",
"config": {
"branch": "main",
"collectionsPath": "/"
}
}
```

**Authentication:** Uses `AzureDevOpsAuthService` with the following fallback chain:
1. PAT from `source.token` (Basic auth)
2. VS Code Microsoft authentication (Bearer token via `vscode.authentication.getSession`)
3. Azure CLI: `az account get-access-token` (Bearer token)

## Authentication

Expand Down
Loading
Loading