--- phase: 03-tier-3-9-providers plan: 04 type: execute wave: 1 depends_on: [] files_modified: - 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 autonomous: true requirements: [PROV-07] must_haves: truths: - "10 Tier 7 Code/Dev Tools provider YAMLs load" - "Sourcegraph Cody uses documented sgp_ prefix pattern" - "GitHub Copilot uses ghu_/gho_ token patterns" artifacts: - path: "providers/github-copilot.yaml" provides: "GitHub Copilot token pattern" contains: "copilot" - path: "providers/sourcegraph.yaml" provides: "Sourcegraph Cody sgp_ pattern" contains: "sgp_" - path: "providers/codestral.yaml" provides: "Codestral (Mistral) keyword detection" contains: "codestral" key_links: - from: "provider keywords[]" to: "Registry Aho-Corasick automaton" via: "NewRegistry()" pattern: "keywords" --- Create 10 Tier 7 Code/Dev Tools provider YAMLs — AI coding assistants and IDE plugins (GitHub Copilot, Cursor, Tabnine, Codeium, Sourcegraph Cody, Amazon CodeWhisperer, Replit AI, Codestral, IBM watsonx, Oracle AI). Purpose: Satisfy PROV-07 (10 Tier 7 Code/Dev Tools providers). Output: 20 YAML files. Addresses PROV-07. @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md @.planning/ROADMAP.md @.planning/phases/03-tier-3-9-providers/03-CONTEXT.md @pkg/providers/schema.go Schema per pkg/providers/schema.go. Dual-location required. RE2 regex only. GitHub Copilot uses standard GitHub token formats (ghu_, gho_) — keyword anchoring to "copilot" disambiguates from generic GitHub tokens. Task 1: GitHub Copilot, Cursor, Tabnine, Codeium, Sourcegraph YAMLs providers/github-copilot.yaml, providers/cursor.yaml, providers/tabnine.yaml, providers/codeium.yaml, providers/sourcegraph.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/schema.go providers/github-copilot.yaml: ```yaml format_version: 1 name: github-copilot display_name: GitHub Copilot tier: 7 last_verified: "2026-04-05" keywords: - "copilot" - "github-copilot" - "GITHUB_COPILOT_TOKEN" - "api.githubcopilot.com" - "copilot-internal" patterns: - regex: 'ghu_[A-Za-z0-9]{36}' entropy_min: 4.0 confidence: medium - regex: 'gho_[A-Za-z0-9]{36}' entropy_min: 4.0 confidence: medium verify: method: GET url: https://api.github.com/user headers: Authorization: "token {KEY}" valid_status: [200] invalid_status: [401, 403] ``` providers/cursor.yaml: ```yaml format_version: 1 name: cursor display_name: Cursor AI tier: 7 last_verified: "2026-04-05" keywords: - "cursor" - "CURSOR_API_KEY" - "cursor.sh" - "cursor.com" - "cursor-ide" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` providers/tabnine.yaml: ```yaml format_version: 1 name: tabnine display_name: Tabnine tier: 7 last_verified: "2026-04-05" keywords: - "tabnine" - "TABNINE_API_KEY" - "api.tabnine.com" - "tabnine-pro" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` providers/codeium.yaml: ```yaml format_version: 1 name: codeium display_name: Codeium (Windsurf) tier: 7 last_verified: "2026-04-05" keywords: - "codeium" - "windsurf" - "CODEIUM_API_KEY" - "WINDSURF_API_KEY" - "codeium.com" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` providers/sourcegraph.yaml: ```yaml format_version: 1 name: sourcegraph display_name: Sourcegraph Cody tier: 7 last_verified: "2026-04-05" keywords: - "sourcegraph" - "cody" - "SRC_ACCESS_TOKEN" - "SOURCEGRAPH_TOKEN" - "sourcegraph.com" - "sgp_" patterns: - regex: 'sgp_[A-Fa-f0-9]{16,}_[A-Fa-f0-9]{40}' entropy_min: 4.0 confidence: high - regex: 'sgp_[A-Fa-f0-9]{40}' entropy_min: 4.0 confidence: medium verify: method: GET url: https://sourcegraph.com/.api/graphql headers: Authorization: "token {KEY}" valid_status: [200] invalid_status: [401, 403] ``` Copy all 5 files verbatim to pkg/providers/definitions/. cd /home/salva/Documents/apikey && for f in github-copilot cursor tabnine codeium sourcegraph; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1 && go test ./pkg/engine/... -count=1 - All 10 files exist - `grep -q 'ghu_' providers/github-copilot.yaml` - `grep -q 'sgp_' providers/sourcegraph.yaml` - `grep -q 'windsurf' providers/codeium.yaml` - `go test ./pkg/providers/... -count=1` passes - `go test ./pkg/engine/... -count=1` passes 5 code assistant providers dual-located. Task 2: CodeWhisperer, Replit AI, Codestral, watsonx, Oracle AI YAMLs providers/codewhisperer.yaml, providers/replit-ai.yaml, providers/codestral.yaml, providers/watsonx.yaml, providers/oracle-ai.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 - pkg/providers/schema.go providers/codewhisperer.yaml: ```yaml format_version: 1 name: codewhisperer display_name: Amazon CodeWhisperer / Q Developer tier: 7 last_verified: "2026-04-05" keywords: - "codewhisperer" - "q-developer" - "amazonq" - "codewhisperer.us-east-1.amazonaws.com" - "CODEWHISPERER_PROFILE_ARN" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` providers/replit-ai.yaml: ```yaml format_version: 1 name: replit-ai display_name: Replit AI (Ghostwriter) tier: 7 last_verified: "2026-04-05" keywords: - "replit" - "ghostwriter" - "REPLIT_TOKEN" - "REPLIT_DB_URL" - "replit.com" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` providers/codestral.yaml: ```yaml format_version: 1 name: codestral display_name: Codestral (Mistral Code) tier: 7 last_verified: "2026-04-05" keywords: - "codestral" - "CODESTRAL_API_KEY" - "codestral.mistral.ai" - "codestral-latest" patterns: - regex: '[a-zA-Z0-9]{32}' entropy_min: 4.5 confidence: low verify: method: GET url: https://codestral.mistral.ai/v1/models headers: Authorization: "Bearer {KEY}" valid_status: [200] invalid_status: [401, 403] ``` providers/watsonx.yaml: ```yaml format_version: 1 name: watsonx display_name: IBM watsonx tier: 7 last_verified: "2026-04-05" keywords: - "watsonx" - "WATSONX_API_KEY" - "WATSONX_PROJECT_ID" - "IBM_CLOUD_API_KEY" - "us-south.ml.cloud.ibm.com" - "watsonx.ai" verify: method: POST url: https://iam.cloud.ibm.com/identity/token headers: {} valid_status: [200] invalid_status: [400, 401] ``` providers/oracle-ai.yaml: ```yaml format_version: 1 name: oracle-ai display_name: Oracle Generative AI tier: 7 last_verified: "2026-04-05" keywords: - "oci-genai" - "oracle-genai" - "OCI_GENAI" - "generativeai.oci.oraclecloud.com" - "oraclecloud.com" verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` Copy all 5 files verbatim to pkg/providers/definitions/. cd /home/salva/Documents/apikey && for f in codewhisperer replit-ai codestral watsonx oracle-ai; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1 && go test ./pkg/engine/... -count=1 && test $(grep -l 'tier: 7' providers/*.yaml | wc -l) -eq 10 - All 10 files exist - `grep -q 'codewhisperer' providers/codewhisperer.yaml` - `grep -q 'watsonx.ai' providers/watsonx.yaml` - `grep -q 'oraclecloud' providers/oracle-ai.yaml` - Total Tier 7 count = 10 - `go test ./pkg/providers/... -count=1` passes All 10 Tier 7 code/dev tools providers dual-located. PROV-07 satisfied. `grep -l 'tier: 7' providers/*.yaml | wc -l` returns 10. - 10 Tier 7 code/dev tools providers created - Sourcegraph uses documented sgp_ high-confidence pattern - Undocumented providers (cursor, tabnine, codeium, codewhisperer, replit-ai, oracle-ai) use keyword-only - No engine regression After completion, create `.planning/phases/03-tier-3-9-providers/03-04-SUMMARY.md`