Files
keyhunter/.planning/phases/02-tier-1-2-providers/02-01-PLAN.md
2026-04-05 14:08:04 +03:00

11 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
02-tier-1-2-providers 01 execute 1
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
true
PROV-01
truths artifacts key_links
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/
path provides contains
providers/google-ai.yaml Google AI (Gemini) AIzaSy pattern AIzaSy
path provides contains
providers/xai.yaml xAI Grok xai- pattern xai-
path provides contains
providers/aws-bedrock.yaml AWS Bedrock ABSK pattern ABSK
path provides contains
pkg/providers/definitions/google-ai.yaml Embedded Google AI definition AIzaSy
from to via pattern
pkg/providers/definitions/*.yaml pkg/providers/loader.go go:embed definitions/*.yaml 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.

<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>

@.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):
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:
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:

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 <acceptance_criteria> - 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 </acceptance_criteria> 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:
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:

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:

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:

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 <acceptance_criteria> - 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) </acceptance_criteria> 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.

<success_criteria>

  • 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 </success_criteria>
After completion, create `.planning/phases/02-tier-1-2-providers/02-01-SUMMARY.md`