--- phase: 02-tier-1-2-providers plan: 01 type: execute wave: 1 depends_on: [] files_modified: - providers/openai.yaml - providers/anthropic.yaml - providers/google-ai.yaml - providers/vertex-ai.yaml - providers/aws-bedrock.yaml - providers/xai.yaml - pkg/providers/definitions/openai.yaml - pkg/providers/definitions/anthropic.yaml - pkg/providers/definitions/google-ai.yaml - pkg/providers/definitions/vertex-ai.yaml - pkg/providers/definitions/aws-bedrock.yaml - pkg/providers/definitions/xai.yaml autonomous: true requirements: [PROV-01] must_haves: truths: - "Registry loads 6 high-confidence Tier 1 providers with valid schemas" - "All regex patterns compile under Go RE2" - "Each provider YAML exists in BOTH providers/ and pkg/providers/definitions/" artifacts: - path: "providers/google-ai.yaml" provides: "Google AI (Gemini) AIzaSy pattern" contains: "AIzaSy" - path: "providers/xai.yaml" provides: "xAI Grok xai- pattern" contains: "xai-" - path: "providers/aws-bedrock.yaml" provides: "AWS Bedrock ABSK pattern" contains: "ABSK" - path: "pkg/providers/definitions/google-ai.yaml" provides: "Embedded Google AI definition" contains: "AIzaSy" key_links: - from: "pkg/providers/definitions/*.yaml" to: "pkg/providers/loader.go" via: "go:embed definitions/*.yaml" pattern: "go:embed" --- Create or upgrade the 6 high-confidence Tier 1 LLM provider YAML definitions with distinctive key prefixes: OpenAI (upgrade), Anthropic (upgrade), Google AI (Gemini), Google Vertex AI, AWS Bedrock, xAI (Grok). Purpose: These providers have well-documented, distinctive key prefixes (sk-proj-, sk-ant-api03-, AIzaSy, ABSK, xai-) — they anchor the detection engine with HIGH confidence patterns validated by TruffleHog/gitleaks. Output: 12 YAML files (6 provider definitions x 2 locations). Addresses PROV-01 requirement. @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md @.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/02-tier-1-2-providers/02-RESEARCH.md @pkg/providers/schema.go @providers/openai.yaml @providers/anthropic.yaml The Provider YAML schema (from pkg/providers/schema.go): ```go type Provider struct { FormatVersion int `yaml:"format_version"` // must be >= 1 Name string `yaml:"name"` DisplayName string `yaml:"display_name"` Tier int `yaml:"tier"` LastVerified string `yaml:"last_verified"` // required, non-empty Keywords []string `yaml:"keywords"` Patterns []Pattern `yaml:"patterns"` Verify VerifySpec `yaml:"verify"` } type Pattern struct { Regex string `yaml:"regex"` EntropyMin float64 `yaml:"entropy_min"` Confidence string `yaml:"confidence"` // "high" | "medium" | "low" } type VerifySpec struct { Method string URL string Headers map[string]string ValidStatus []int InvalidStatus []int } ``` Note: schema has NO `category` field. Do not include category in YAML. Loader uses `go:embed definitions/*.yaml` — files must be in `pkg/providers/definitions/`. Task 1: Upgrade OpenAI and Anthropic YAMLs providers/openai.yaml, providers/anthropic.yaml, pkg/providers/definitions/openai.yaml, pkg/providers/definitions/anthropic.yaml - providers/openai.yaml (current baseline) - providers/anthropic.yaml (current baseline) - pkg/providers/schema.go (validation rules) - .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "1. OpenAI", "2. Anthropic" Overwrite providers/openai.yaml with: ```yaml format_version: 1 name: openai display_name: OpenAI tier: 1 last_verified: "2026-04-05" keywords: - "sk-proj-" - "sk-svcacct-" - "sk-none-" - "openai" - "t3blbkfj" patterns: - regex: 'sk-proj-[A-Za-z0-9_\-]{48,}' entropy_min: 3.5 confidence: high - regex: 'sk-svcacct-[A-Za-z0-9_\-]{48,}' entropy_min: 3.5 confidence: high - regex: 'sk-[A-Za-z0-9]{20,}T3BlbkFJ[A-Za-z0-9_\-]{20,}' entropy_min: 3.5 confidence: high verify: method: GET url: https://api.openai.com/v1/models headers: Authorization: "Bearer {KEY}" valid_status: [200] invalid_status: [401, 403] ``` Overwrite providers/anthropic.yaml with: ```yaml format_version: 1 name: anthropic display_name: Anthropic tier: 1 last_verified: "2026-04-05" keywords: - "sk-ant-api03-" - "sk-ant-admin01-" - "anthropic" patterns: - regex: 'sk-ant-api03-[A-Za-z0-9_\-]{93}AA' entropy_min: 3.5 confidence: high - regex: 'sk-ant-admin01-[A-Za-z0-9_\-]{93}AA' entropy_min: 3.5 confidence: high verify: method: GET url: https://api.anthropic.com/v1/models headers: x-api-key: "{KEY}" anthropic-version: "2023-06-01" valid_status: [200] invalid_status: [401, 403] ``` Copy both files VERBATIM to pkg/providers/definitions/openai.yaml and pkg/providers/definitions/anthropic.yaml (dual-location sync required — Go embed only reads pkg/providers/definitions/). cd /home/salva/Documents/apikey && diff providers/openai.yaml pkg/providers/definitions/openai.yaml && diff providers/anthropic.yaml pkg/providers/definitions/anthropic.yaml && go test ./pkg/providers/... -run TestRegistry -count=1 - `grep -q 'sk-svcacct-' providers/openai.yaml` exits 0 - `grep -q 'T3BlbkFJ' providers/openai.yaml` exits 0 - `grep -q 'AA$\|AA'"'" providers/anthropic.yaml | grep -q api03` (AA suffix present) - `grep -q 'sk-ant-admin01-' providers/anthropic.yaml` exits 0 - `diff providers/openai.yaml pkg/providers/definitions/openai.yaml` returns no diff - `diff providers/anthropic.yaml pkg/providers/definitions/anthropic.yaml` returns no diff - `go test ./pkg/providers/... -count=1` passes OpenAI YAML has 3 patterns (sk-proj-, sk-svcacct-, legacy T3BlbkFJ). Anthropic YAML has 2 patterns (api03, admin01) with AA suffix. Both files dual-located and registry loads cleanly. Task 2: Create Google AI, Vertex AI, AWS Bedrock, xAI YAMLs providers/google-ai.yaml, providers/vertex-ai.yaml, providers/aws-bedrock.yaml, providers/xai.yaml, pkg/providers/definitions/google-ai.yaml, pkg/providers/definitions/vertex-ai.yaml, pkg/providers/definitions/aws-bedrock.yaml, pkg/providers/definitions/xai.yaml - pkg/providers/schema.go (validation rules) - providers/openai.yaml (template style after Task 1) - .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "3. Google AI", "4. Google Vertex AI", "5. AWS Bedrock", "8. xAI" Create providers/google-ai.yaml: ```yaml format_version: 1 name: google-ai display_name: Google AI (Gemini) tier: 1 last_verified: "2026-04-05" keywords: - "AIzaSy" - "gemini" - "google_api" - "generativelanguage" patterns: - regex: 'AIzaSy[A-Za-z0-9_\-]{33}' entropy_min: 3.5 confidence: high verify: method: GET url: https://generativelanguage.googleapis.com/v1/models?key={KEY} headers: {} valid_status: [200] invalid_status: [400, 401, 403] ``` Create providers/vertex-ai.yaml: ```yaml format_version: 1 name: vertex-ai display_name: Google Vertex AI tier: 1 last_verified: "2026-04-05" keywords: - "vertex" - "vertex_ai" - "google_cloud" - "aiplatform.googleapis.com" - "AIzaSy" patterns: - regex: 'AIzaSy[A-Za-z0-9_\-]{33}' entropy_min: 3.5 confidence: medium verify: method: GET url: https://aiplatform.googleapis.com/v1/projects headers: Authorization: "Bearer {KEY}" valid_status: [200] invalid_status: [401, 403] ``` Create providers/aws-bedrock.yaml: ```yaml format_version: 1 name: aws-bedrock display_name: AWS Bedrock tier: 1 last_verified: "2026-04-05" keywords: - "ABSK" - "bedrock" - "aws_bedrock" - "bedrock-runtime" - "AKIA" patterns: - regex: 'ABSK[A-Za-z0-9+/]{109,269}={0,2}' entropy_min: 4.0 confidence: high - regex: 'AKIA[0-9A-Z]{16}' entropy_min: 3.0 confidence: medium verify: method: GET url: "" headers: {} valid_status: [] invalid_status: [] ``` Create providers/xai.yaml: ```yaml format_version: 1 name: xai display_name: xAI (Grok) tier: 1 last_verified: "2026-04-05" keywords: - "xai-" - "xai" - "grok" patterns: - regex: 'xai-[0-9a-zA-Z_]{80}' entropy_min: 3.5 confidence: high verify: method: GET url: https://api.x.ai/v1/api-key headers: Authorization: "Bearer {KEY}" valid_status: [200] invalid_status: [401, 403] ``` Copy ALL FOUR files VERBATIM to pkg/providers/definitions/ with same names. The loader uses `go:embed definitions/*.yaml` — files in providers/ are user-visible only. cd /home/salva/Documents/apikey && for f in google-ai vertex-ai aws-bedrock xai; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1 - All 8 files exist: `test -f providers/google-ai.yaml -a -f providers/vertex-ai.yaml -a -f providers/aws-bedrock.yaml -a -f providers/xai.yaml -a -f pkg/providers/definitions/google-ai.yaml -a -f pkg/providers/definitions/vertex-ai.yaml -a -f pkg/providers/definitions/aws-bedrock.yaml -a -f pkg/providers/definitions/xai.yaml` - `grep -q 'AIzaSy\[A-Za-z0-9_' providers/google-ai.yaml` - `grep -q 'ABSK\[A-Za-z0-9' providers/aws-bedrock.yaml` - `grep -q 'xai-\[0-9a-zA-Z_' providers/xai.yaml` - `diff providers/xai.yaml pkg/providers/definitions/xai.yaml` returns no diff - `go test ./pkg/providers/... -count=1` passes (registry loads all new YAMLs without schema errors) 4 new providers created and dual-located. Registry loads 9 providers total (3 pre-existing + 6 upgraded/new). All regex patterns compile under RE2. Run `go test ./pkg/providers/... -count=1` and confirm registry loads at least 9 providers (existing 3 + 6 from this plan, noting openai/anthropic were already counted). Count provider files in both directories — they must match. - 6 Tier 1 high-confidence providers defined (2 upgraded, 4 new) - Every YAML dual-located - All regex patterns are RE2-compatible and compile - go test ./pkg/providers/... passes After completion, create `.planning/phases/02-tier-1-2-providers/02-01-SUMMARY.md`