---
phase: 03-tier-3-9-providers
plan: 04
subsystem: providers
tags: [providers, tier-7, code-assistants, dev-tools]
requires: [pkg/providers/schema.go, pkg/providers/registry.go]
provides:
  - "10 Tier 7 code/dev tools provider definitions"
  - "GitHub Copilot ghu_/gho_ token detection"
  - "Sourcegraph Cody sgp_ high-confidence pattern"
  - "PROV-07 requirement satisfaction"
affects: [providers/, pkg/providers/definitions/]
tech-stack:
  added: []
  patterns: [dual-location YAML, keyword-only detection, documented-prefix regex]
key-files:
  created:
    - providers/github-copilot.yaml
    - providers/cursor.yaml
    - providers/tabnine.yaml
    - providers/codeium.yaml
    - providers/sourcegraph.yaml
    - providers/codewhisperer.yaml
    - providers/replit-ai.yaml
    - providers/codestral.yaml
    - providers/watsonx.yaml
    - providers/oracle-ai.yaml
    - pkg/providers/definitions/github-copilot.yaml
    - pkg/providers/definitions/cursor.yaml
    - pkg/providers/definitions/tabnine.yaml
    - pkg/providers/definitions/codeium.yaml
    - pkg/providers/definitions/sourcegraph.yaml
    - pkg/providers/definitions/codewhisperer.yaml
    - pkg/providers/definitions/replit-ai.yaml
    - pkg/providers/definitions/codestral.yaml
    - pkg/providers/definitions/watsonx.yaml
    - pkg/providers/definitions/oracle-ai.yaml
  modified: []
decisions:
  - "Keyword-only detection for undocumented key formats (Cursor, Tabnine, Codeium, CodeWhisperer, Replit AI, Oracle AI) to avoid Phase-2 false-positive regression"
  - "Codestral uses low-confidence generic 32-char pattern with entropy_min=4.5 per Phase-2 lesson"
  - "GitHub Copilot reuses documented ghu_/gho_ GitHub token formats, disambiguated by 'copilot' keyword"
metrics:
  duration: "~3 minutes"
  tasks: 2
  files: 20
  completed: "2026-04-05"
---

# Phase 3 Plan 4: Tier 7 Code/Dev Tools Providers Summary

Added 10 Tier 7 code assistant/dev tool provider YAMLs (GitHub Copilot, Cursor, Tabnine, Codeium, Sourcegraph Cody, Amazon CodeWhisperer, Replit AI, Codestral, IBM watsonx, Oracle Generative AI) dual-located under `providers/` and `pkg/providers/definitions/`.

## Tasks Completed

| # | Name | Commit |
|---|------|--------|
| 1 | GitHub Copilot, Cursor, Tabnine, Codeium, Sourcegraph YAMLs | 9f10357 |
| 2 | CodeWhisperer, Replit AI, Codestral, watsonx, Oracle AI YAMLs | fbbb54b |

## Key Decisions

- **Lessons-from-Phase-2 applied:** Providers without distinctive prefixes (Cursor, Tabnine, Codeium, CodeWhisperer, Replit AI, Oracle AI) use keyword-only detection — no regex. This avoids Phase-2 false-positive regression on generic alphanumeric patterns.
- **Sourcegraph sgp_ pattern:** High-confidence regex for the documented `sgp_<hex>_<hex40>` format plus a medium-confidence fallback for the shorter `sgp_<hex40>` variant.
- **Codestral low-confidence regex:** The Mistral Codestral key is a 32-char alphanumeric without a distinctive prefix; entropy_min=4.5 + confidence=low + `codestral` keyword anchoring contain false positives.
- **GitHub Copilot reuses `ghu_`/`gho_` GitHub tokens:** These are real GitHub OAuth/user tokens; the `copilot` keyword disambiguates from generic GitHub tokens.
- **watsonx verification endpoint:** POST to `https://iam.cloud.ibm.com/identity/token` (IBM IAM exchange) — the actual watsonx inference endpoint needs project_id + bearer, not a plain API key.

## Verification Results

- `go test ./pkg/providers/... -count=1` — PASS
- `go test ./pkg/engine/... -count=1` — PASS
- `grep -l 'tier: 7' providers/*.yaml | wc -l` — 10
- All 10 dual-location pairs `diff`-identical

## Deviations from Plan

None — plan executed exactly as written.

## Requirements Satisfied

- PROV-07: 10 Tier 7 Code/Dev Tools providers

## Self-Check: PASSED

- All 20 YAML files exist at expected paths
- Commits 9f10357 and fbbb54b present in git log
- Tier 7 count = 10
- Provider and engine test suites green
