docs(02): create phase 2 tier 1-2 provider plans
This commit is contained in:
297
.planning/phases/02-tier-1-2-providers/02-02-PLAN.md
Normal file
297
.planning/phases/02-tier-1-2-providers/02-02-PLAN.md
Normal file
@@ -0,0 +1,297 @@
|
||||
---
|
||||
phase: 02-tier-1-2-providers
|
||||
plan: 02
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- providers/azure-openai.yaml
|
||||
- providers/meta-ai.yaml
|
||||
- providers/cohere.yaml
|
||||
- providers/mistral.yaml
|
||||
- providers/inflection.yaml
|
||||
- providers/ai21.yaml
|
||||
- pkg/providers/definitions/azure-openai.yaml
|
||||
- pkg/providers/definitions/meta-ai.yaml
|
||||
- pkg/providers/definitions/cohere.yaml
|
||||
- pkg/providers/definitions/mistral.yaml
|
||||
- pkg/providers/definitions/inflection.yaml
|
||||
- pkg/providers/definitions/ai21.yaml
|
||||
autonomous: true
|
||||
requirements: [PROV-01]
|
||||
must_haves:
|
||||
truths:
|
||||
- "Registry loads 6 medium/low-confidence Tier 1 providers"
|
||||
- "Each provider relies on keyword-context matching (weak prefix)"
|
||||
- "All regex patterns compile under Go RE2"
|
||||
artifacts:
|
||||
- path: "providers/azure-openai.yaml"
|
||||
provides: "Azure OpenAI 32-hex pattern"
|
||||
contains: "azure"
|
||||
- path: "providers/cohere.yaml"
|
||||
provides: "Cohere 40-char token pattern"
|
||||
contains: "cohere"
|
||||
- path: "providers/mistral.yaml"
|
||||
provides: "Mistral AI keyword-anchored pattern"
|
||||
contains: "mistral"
|
||||
key_links:
|
||||
- from: "provider keywords[]"
|
||||
to: "Registry Aho-Corasick automaton"
|
||||
via: "NewRegistry()"
|
||||
pattern: "keywords"
|
||||
---
|
||||
|
||||
<objective>
|
||||
Create the 6 medium/low-confidence Tier 1 LLM provider YAML definitions: Azure OpenAI, Meta AI (Llama), Cohere, Mistral AI, Inflection AI, AI21 Labs. These providers use generic key formats — detection leans on strong keyword lists for Aho-Corasick pre-filtering.
|
||||
|
||||
Purpose: Close out Tier 1 coverage (12/12). These providers require careful keyword anchoring since their key formats are opaque tokens.
|
||||
|
||||
Output: 12 YAML files (6 providers x 2 locations).
|
||||
|
||||
Addresses PROV-01 requirement.
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
@$HOME/.claude/get-shit-done/workflows/execute-plan.md
|
||||
@$HOME/.claude/get-shit-done/templates/summary.md
|
||||
</execution_context>
|
||||
|
||||
<context>
|
||||
@.planning/ROADMAP.md
|
||||
@.planning/phases/02-tier-1-2-providers/02-RESEARCH.md
|
||||
@pkg/providers/schema.go
|
||||
@providers/openai.yaml
|
||||
|
||||
<interfaces>
|
||||
Schema: see pkg/providers/schema.go. NO `category` field. `confidence` must be one of: high, medium, low.
|
||||
Files must be dual-located (providers/ AND pkg/providers/definitions/).
|
||||
Go RE2 regex only — no lookahead, lookbehind, or backreferences.
|
||||
</interfaces>
|
||||
</context>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Azure OpenAI, Meta AI, Cohere YAMLs</name>
|
||||
<files>providers/azure-openai.yaml, providers/meta-ai.yaml, providers/cohere.yaml, pkg/providers/definitions/azure-openai.yaml, pkg/providers/definitions/meta-ai.yaml, pkg/providers/definitions/cohere.yaml</files>
|
||||
<read_first>
|
||||
- pkg/providers/schema.go
|
||||
- .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "6. Azure OpenAI", "7. Meta AI", "9. Cohere"
|
||||
</read_first>
|
||||
<action>
|
||||
Create providers/azure-openai.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: azure-openai
|
||||
display_name: Azure OpenAI
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "azure"
|
||||
- "openai.azure.com"
|
||||
- "azure_openai"
|
||||
- "cognitiveservices"
|
||||
- "AZURE_OPENAI_API_KEY"
|
||||
- "AZURE_OPENAI_KEY"
|
||||
patterns:
|
||||
- regex: '[a-f0-9]{32}'
|
||||
entropy_min: 3.5
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
```
|
||||
|
||||
Create providers/meta-ai.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: meta-ai
|
||||
display_name: Meta AI (Llama API)
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "meta_llama"
|
||||
- "llama_api"
|
||||
- "META_LLAMA_API_KEY"
|
||||
- "api.llama.com"
|
||||
patterns:
|
||||
- regex: 'LLM\|[A-Za-z0-9_\-]{30,}'
|
||||
entropy_min: 3.5
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.llama.com/v1/models
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
```
|
||||
|
||||
Create providers/cohere.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: cohere
|
||||
display_name: Cohere
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "cohere"
|
||||
- "CO_API_KEY"
|
||||
- "COHERE_API_KEY"
|
||||
- "cohere_api"
|
||||
- "api.cohere.ai"
|
||||
patterns:
|
||||
- regex: '[a-zA-Z0-9]{40}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.cohere.ai/v1/models
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
```
|
||||
|
||||
Copy all three files VERBATIM to pkg/providers/definitions/ with same names.
|
||||
</action>
|
||||
<verify>
|
||||
<automated>cd /home/salva/Documents/apikey && for f in azure-openai meta-ai cohere; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1</automated>
|
||||
</verify>
|
||||
<acceptance_criteria>
|
||||
- All 6 files exist
|
||||
- `grep -q 'openai.azure.com' providers/azure-openai.yaml`
|
||||
- `grep -q 'CO_API_KEY' providers/cohere.yaml`
|
||||
- `grep -q 'api.llama.com' providers/meta-ai.yaml`
|
||||
- `diff providers/cohere.yaml pkg/providers/definitions/cohere.yaml` returns no diff
|
||||
- `go test ./pkg/providers/... -count=1` passes
|
||||
</acceptance_criteria>
|
||||
<done>3 providers dual-located, registry loads them without validation errors.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Mistral, Inflection, AI21 YAMLs</name>
|
||||
<files>providers/mistral.yaml, providers/inflection.yaml, providers/ai21.yaml, pkg/providers/definitions/mistral.yaml, pkg/providers/definitions/inflection.yaml, pkg/providers/definitions/ai21.yaml</files>
|
||||
<read_first>
|
||||
- pkg/providers/schema.go
|
||||
- .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "10. Mistral AI", "11. Inflection AI", "12. AI21 Labs"
|
||||
</read_first>
|
||||
<action>
|
||||
Create providers/mistral.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: mistral
|
||||
display_name: Mistral AI
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "mistral"
|
||||
- "mistral.ai"
|
||||
- "MISTRAL_API_KEY"
|
||||
- "la_plateforme"
|
||||
- "api.mistral.ai"
|
||||
patterns:
|
||||
- regex: '[a-zA-Z0-9]{32}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.mistral.ai/v1/models
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
```
|
||||
|
||||
Create providers/inflection.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: inflection
|
||||
display_name: Inflection AI (Pi)
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "inflection"
|
||||
- "pi_api"
|
||||
- "PI_API_KEY"
|
||||
- "INFLECTION_API_KEY"
|
||||
- "inflection.ai"
|
||||
patterns:
|
||||
- regex: '[A-Za-z0-9_\-]{40,}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: ""
|
||||
headers: {}
|
||||
valid_status: []
|
||||
invalid_status: []
|
||||
```
|
||||
|
||||
Create providers/ai21.yaml:
|
||||
|
||||
```yaml
|
||||
format_version: 1
|
||||
name: ai21
|
||||
display_name: AI21 Labs
|
||||
tier: 1
|
||||
last_verified: "2026-04-05"
|
||||
keywords:
|
||||
- "ai21"
|
||||
- "AI21_API_KEY"
|
||||
- "jamba"
|
||||
- "jurassic"
|
||||
- "api.ai21.com"
|
||||
patterns:
|
||||
- regex: '[a-zA-Z0-9]{32,}'
|
||||
entropy_min: 4.0
|
||||
confidence: low
|
||||
verify:
|
||||
method: GET
|
||||
url: https://api.ai21.com/studio/v1/models
|
||||
headers:
|
||||
Authorization: "Bearer {KEY}"
|
||||
valid_status: [200]
|
||||
invalid_status: [401, 403]
|
||||
```
|
||||
|
||||
Copy all three files VERBATIM to pkg/providers/definitions/ with same names.
|
||||
</action>
|
||||
<verify>
|
||||
<automated>cd /home/salva/Documents/apikey && for f in mistral inflection ai21; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1</automated>
|
||||
</verify>
|
||||
<acceptance_criteria>
|
||||
- All 6 files exist
|
||||
- `grep -q 'MISTRAL_API_KEY' providers/mistral.yaml`
|
||||
- `grep -q 'jamba' providers/ai21.yaml`
|
||||
- `grep -q 'PI_API_KEY' providers/inflection.yaml`
|
||||
- `diff providers/mistral.yaml pkg/providers/definitions/mistral.yaml` returns no diff
|
||||
- `go test ./pkg/providers/... -count=1` passes
|
||||
</acceptance_criteria>
|
||||
<done>3 providers dual-located. Tier 1 complete at 12/12.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<verification>
|
||||
Count providers with tier 1 after this plan runs: `grep -l 'tier: 1' providers/*.yaml | wc -l` should equal 12.
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- 6 Tier 1 medium/low-confidence providers created
|
||||
- Dual-location sync verified
|
||||
- Registry loads them without validation errors (go test passes)
|
||||
- Tier 1 total = 12 providers
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.planning/phases/02-tier-1-2-providers/02-02-SUMMARY.md`
|
||||
</output>
|
||||
Reference in New Issue
Block a user