9.5 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 03-tier-3-9-providers | 04 | execute | 1 |
|
true |
|
|
Purpose: Satisfy PROV-07 (10 Tier 7 Code/Dev Tools providers).
Output: 20 YAML files.
Addresses PROV-07.
<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>
@.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: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:
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:
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:
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:
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
<acceptance_criteria>
- 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
</acceptance_criteria>
5 code assistant providers dual-located.
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:
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:
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:
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:
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
<acceptance_criteria>
- 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
</acceptance_criteria>
All 10 Tier 7 code/dev tools providers dual-located. PROV-07 satisfied.
<success_criteria>
- 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 </success_criteria>