329 lines
8.1 KiB
Markdown
329 lines
8.1 KiB
Markdown
---
|
|
phase: 02-tier-1-2-providers
|
|
plan: 04
|
|
type: execute
|
|
wave: 1
|
|
depends_on: []
|
|
files_modified:
|
|
- providers/lepton.yaml
|
|
- providers/modal.yaml
|
|
- providers/cerebrium.yaml
|
|
- providers/novita.yaml
|
|
- providers/sambanova.yaml
|
|
- providers/octoai.yaml
|
|
- providers/friendli.yaml
|
|
- pkg/providers/definitions/lepton.yaml
|
|
- pkg/providers/definitions/modal.yaml
|
|
- pkg/providers/definitions/cerebrium.yaml
|
|
- pkg/providers/definitions/novita.yaml
|
|
- pkg/providers/definitions/sambanova.yaml
|
|
- pkg/providers/definitions/octoai.yaml
|
|
- pkg/providers/definitions/friendli.yaml
|
|
autonomous: true
|
|
requirements: [PROV-02]
|
|
must_haves:
|
|
truths:
|
|
- "Registry loads final 7 Tier 2 inference platform providers"
|
|
- "All 14 Tier 2 providers from PROV-02 are defined after this plan"
|
|
- "Generic-format providers use strong keyword lists for AC pre-filtering"
|
|
artifacts:
|
|
- path: "providers/modal.yaml"
|
|
provides: "Modal token_id/token_secret keyword anchors"
|
|
contains: "MODAL_TOKEN"
|
|
- path: "providers/sambanova.yaml"
|
|
provides: "SambaNova keyword-anchored pattern"
|
|
contains: "sambanova"
|
|
- path: "providers/novita.yaml"
|
|
provides: "NovitaAI keyword-anchored pattern"
|
|
contains: "novita"
|
|
key_links:
|
|
- from: "keywords[]"
|
|
to: "Aho-Corasick pre-filter"
|
|
via: "NewRegistry"
|
|
pattern: "keywords"
|
|
---
|
|
|
|
<objective>
|
|
Create the remaining 7 Tier 2 inference platform provider YAMLs: Lepton AI, Modal, Cerebrium, NovitaAI, SambaNova, OctoAI, Friendli. All are generic-format providers requiring strong keyword lists.
|
|
|
|
Purpose: Complete PROV-02 (14/14 Tier 2 providers).
|
|
|
|
Output: 14 YAML files (7 providers x 2 locations).
|
|
|
|
Addresses PROV-02 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
|
|
|
|
<interfaces>
|
|
Schema: pkg/providers/schema.go. Dual-location required. Go RE2 regex only.
|
|
All providers in this plan: tier 2, confidence low (no distinctive prefix).
|
|
</interfaces>
|
|
</context>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: Lepton, Modal, Cerebrium, Novita YAMLs</name>
|
|
<files>providers/lepton.yaml, providers/modal.yaml, providers/cerebrium.yaml, providers/novita.yaml, pkg/providers/definitions/lepton.yaml, pkg/providers/definitions/modal.yaml, pkg/providers/definitions/cerebrium.yaml, pkg/providers/definitions/novita.yaml</files>
|
|
<read_first>
|
|
- pkg/providers/schema.go
|
|
- .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "7. Lepton", "8. Modal", "10. Cerebrium", "11. NovitaAI"
|
|
</read_first>
|
|
<action>
|
|
Create providers/lepton.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: lepton
|
|
display_name: Lepton AI (DGX Cloud Lepton)
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "lepton"
|
|
- "lepton.ai"
|
|
- "LEPTON_API_TOKEN"
|
|
- "dgx-cloud-lepton"
|
|
patterns:
|
|
- regex: '[A-Za-z0-9]{32,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
Create providers/modal.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: modal
|
|
display_name: Modal
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "modal"
|
|
- "modal.com"
|
|
- "MODAL_TOKEN_ID"
|
|
- "MODAL_TOKEN_SECRET"
|
|
- "ak-"
|
|
- "as-"
|
|
patterns:
|
|
- regex: 'ak-[A-Za-z0-9]{20,}'
|
|
entropy_min: 3.5
|
|
confidence: medium
|
|
- regex: 'as-[A-Za-z0-9]{20,}'
|
|
entropy_min: 3.5
|
|
confidence: medium
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
Create providers/cerebrium.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: cerebrium
|
|
display_name: Cerebrium
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "cerebrium"
|
|
- "cerebrium.ai"
|
|
- "CEREBRIUM_API_KEY"
|
|
- "api.cortex.cerebrium.ai"
|
|
patterns:
|
|
- regex: '[A-Za-z0-9]{32,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
Create providers/novita.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: novita
|
|
display_name: NovitaAI
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "novita"
|
|
- "novita.ai"
|
|
- "NOVITA_API_KEY"
|
|
- "api.novita.ai"
|
|
patterns:
|
|
- regex: '[A-Za-z0-9_\-]{32,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: https://api.novita.ai/v3/openai/models
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
Copy all four VERBATIM to pkg/providers/definitions/.
|
|
</action>
|
|
<verify>
|
|
<automated>cd /home/salva/Documents/apikey && for f in lepton modal cerebrium novita; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml || exit 1; done && go test ./pkg/providers/... -count=1</automated>
|
|
</verify>
|
|
<acceptance_criteria>
|
|
- All 8 files exist
|
|
- `grep -q 'MODAL_TOKEN_ID' providers/modal.yaml`
|
|
- `grep -q 'cerebrium.ai' providers/cerebrium.yaml`
|
|
- `grep -q 'api.novita.ai' providers/novita.yaml`
|
|
- `grep -q 'lepton.ai' providers/lepton.yaml`
|
|
- All dual-location diffs empty
|
|
- `go test ./pkg/providers/... -count=1` passes
|
|
</acceptance_criteria>
|
|
<done>4 providers created and dual-located.</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 2: SambaNova, OctoAI, Friendli YAMLs</name>
|
|
<files>providers/sambanova.yaml, providers/octoai.yaml, providers/friendli.yaml, pkg/providers/definitions/sambanova.yaml, pkg/providers/definitions/octoai.yaml, pkg/providers/definitions/friendli.yaml</files>
|
|
<read_first>
|
|
- pkg/providers/schema.go
|
|
- .planning/phases/02-tier-1-2-providers/02-RESEARCH.md sections "12. SambaNova", "13. OctoAI", "14. Friendli"
|
|
</read_first>
|
|
<action>
|
|
Create providers/sambanova.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: sambanova
|
|
display_name: SambaNova
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "sambanova"
|
|
- "sambanova.ai"
|
|
- "SAMBANOVA_API_KEY"
|
|
- "sambastudio"
|
|
- "api.sambanova.ai"
|
|
patterns:
|
|
- regex: '[a-f0-9\-]{36}'
|
|
entropy_min: 3.5
|
|
confidence: low
|
|
- regex: '[A-Za-z0-9]{40,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: https://api.sambanova.ai/v1/models
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
Create providers/octoai.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: octoai
|
|
display_name: OctoAI
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "octoai"
|
|
- "octo.ai"
|
|
- "OCTOAI_TOKEN"
|
|
- "OCTOAI_API_KEY"
|
|
patterns:
|
|
- regex: '[A-Za-z0-9\-_\.]{40,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
Create providers/friendli.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: friendli
|
|
display_name: Friendli
|
|
tier: 2
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "friendli"
|
|
- "friendli.ai"
|
|
- "FRIENDLI_TOKEN"
|
|
- "flp_"
|
|
patterns:
|
|
- regex: 'flp_[A-Za-z0-9]{20,}'
|
|
entropy_min: 3.5
|
|
confidence: medium
|
|
- regex: '[A-Za-z0-9]{32,}'
|
|
entropy_min: 4.0
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
Copy all three VERBATIM to pkg/providers/definitions/.
|
|
</action>
|
|
<verify>
|
|
<automated>cd /home/salva/Documents/apikey && for f in sambanova octoai friendli; 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 'sambanova' providers/sambanova.yaml`
|
|
- `grep -q 'octo.ai' providers/octoai.yaml`
|
|
- `grep -q 'FRIENDLI_TOKEN' providers/friendli.yaml`
|
|
- All dual-location diffs empty
|
|
- `go test ./pkg/providers/... -count=1` passes
|
|
- After this task: `ls pkg/providers/definitions/*.yaml | wc -l` >= 27 (huggingface + 26 tier1/2)
|
|
</acceptance_criteria>
|
|
<done>Final 3 Tier 2 providers created. All 14 PROV-02 providers complete.</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<verification>
|
|
After plan: `grep -l 'tier: 2' providers/*.yaml | wc -l` equals 14.
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
- 7 generic-format Tier 2 providers created
|
|
- Dual-location verified
|
|
- Registry loads cleanly
|
|
- Tier 2 total = 14 providers
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.planning/phases/02-tier-1-2-providers/02-04-SUMMARY.md`
|
|
</output>
|