505 lines
12 KiB
Markdown
505 lines
12 KiB
Markdown
---
|
|
phase: 03-tier-3-9-providers
|
|
plan: 07
|
|
type: execute
|
|
wave: 1
|
|
depends_on: []
|
|
files_modified:
|
|
- providers/reka.yaml
|
|
- providers/aleph-alpha.yaml
|
|
- providers/writer.yaml
|
|
- providers/jasper.yaml
|
|
- providers/typeface.yaml
|
|
- providers/comet.yaml
|
|
- providers/wandb.yaml
|
|
- providers/langsmith.yaml
|
|
- providers/pinecone.yaml
|
|
- providers/weaviate.yaml
|
|
- providers/qdrant.yaml
|
|
- providers/chroma.yaml
|
|
- providers/milvus.yaml
|
|
- providers/neon.yaml
|
|
- providers/lamini.yaml
|
|
- pkg/providers/definitions/reka.yaml
|
|
- pkg/providers/definitions/aleph-alpha.yaml
|
|
- pkg/providers/definitions/writer.yaml
|
|
- pkg/providers/definitions/jasper.yaml
|
|
- pkg/providers/definitions/typeface.yaml
|
|
- pkg/providers/definitions/comet.yaml
|
|
- pkg/providers/definitions/wandb.yaml
|
|
- pkg/providers/definitions/langsmith.yaml
|
|
- pkg/providers/definitions/pinecone.yaml
|
|
- pkg/providers/definitions/weaviate.yaml
|
|
- pkg/providers/definitions/qdrant.yaml
|
|
- pkg/providers/definitions/chroma.yaml
|
|
- pkg/providers/definitions/milvus.yaml
|
|
- pkg/providers/definitions/neon.yaml
|
|
- pkg/providers/definitions/lamini.yaml
|
|
autonomous: true
|
|
requirements: [PROV-06]
|
|
must_haves:
|
|
truths:
|
|
- "15 Tier 6 Emerging/Niche provider YAMLs load"
|
|
- "W&B uses documented 40-hex key; LangSmith uses lsv2_ prefix; Pinecone uses pcsk_ prefix"
|
|
- "Vector DBs and writing tools have strong env var keyword anchors"
|
|
artifacts:
|
|
- path: "providers/langsmith.yaml"
|
|
provides: "LangSmith lsv2_ prefix pattern"
|
|
contains: "lsv2_"
|
|
- path: "providers/pinecone.yaml"
|
|
provides: "Pinecone pcsk_ prefix pattern"
|
|
contains: "pcsk_"
|
|
- path: "providers/wandb.yaml"
|
|
provides: "Weights & Biases 40-hex key pattern"
|
|
contains: "WANDB_API_KEY"
|
|
key_links:
|
|
- from: "provider keywords[]"
|
|
to: "Registry Aho-Corasick automaton"
|
|
via: "NewRegistry()"
|
|
pattern: "keywords"
|
|
---
|
|
|
|
<objective>
|
|
Create 15 Tier 6 Emerging/Niche provider YAMLs — emerging LLM labs (Reka, Aleph Alpha, Lamini), writing tools (Writer, Jasper, Typeface), observability (Comet, W&B, LangSmith), and vector DBs (Pinecone, Weaviate, Qdrant, Chroma, Milvus, Neon).
|
|
|
|
Purpose: Satisfy PROV-06 (15 Tier 6 Emerging/Niche providers).
|
|
|
|
Output: 30 YAML files.
|
|
|
|
Addresses PROV-06.
|
|
</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/03-tier-3-9-providers/03-CONTEXT.md
|
|
@pkg/providers/schema.go
|
|
|
|
<interfaces>
|
|
Dual-location required. Several providers in this group have documented prefixes (LangSmith lsv2_, Pinecone pcsk_, W&B 40-hex). Others use keyword-only.
|
|
</interfaces>
|
|
</context>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: Emerging labs + writing tools (Reka, Aleph Alpha, Lamini, Writer, Jasper, Typeface, Comet, W&B)</name>
|
|
<files>providers/reka.yaml, providers/aleph-alpha.yaml, providers/lamini.yaml, providers/writer.yaml, providers/jasper.yaml, providers/typeface.yaml, providers/comet.yaml, providers/wandb.yaml, pkg/providers/definitions/reka.yaml, pkg/providers/definitions/aleph-alpha.yaml, pkg/providers/definitions/lamini.yaml, pkg/providers/definitions/writer.yaml, pkg/providers/definitions/jasper.yaml, pkg/providers/definitions/typeface.yaml, pkg/providers/definitions/comet.yaml, pkg/providers/definitions/wandb.yaml</files>
|
|
<read_first>
|
|
- pkg/providers/schema.go
|
|
</read_first>
|
|
<action>
|
|
providers/reka.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: reka
|
|
display_name: Reka AI
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "reka"
|
|
- "REKA_API_KEY"
|
|
- "api.reka.ai"
|
|
- "reka-core"
|
|
- "reka-flash"
|
|
verify:
|
|
method: GET
|
|
url: https://api.reka.ai/v1/models
|
|
headers:
|
|
X-Api-Key: "{KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/aleph-alpha.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: aleph-alpha
|
|
display_name: Aleph Alpha
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "aleph-alpha"
|
|
- "aleph_alpha"
|
|
- "ALEPH_ALPHA_API_KEY"
|
|
- "AA_TOKEN"
|
|
- "api.aleph-alpha.com"
|
|
- "luminous"
|
|
verify:
|
|
method: GET
|
|
url: https://api.aleph-alpha.com/models_available
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/lamini.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: lamini
|
|
display_name: Lamini
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "lamini"
|
|
- "LAMINI_API_KEY"
|
|
- "api.lamini.ai"
|
|
- "lamini.ai"
|
|
verify:
|
|
method: GET
|
|
url: https://api.lamini.ai/v1/models
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/writer.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: writer
|
|
display_name: Writer
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "writer.com"
|
|
- "WRITER_API_KEY"
|
|
- "api.writer.com"
|
|
- "palmyra"
|
|
verify:
|
|
method: GET
|
|
url: https://api.writer.com/v1/models
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/jasper.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: jasper
|
|
display_name: Jasper AI
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "jasper.ai"
|
|
- "JASPER_API_KEY"
|
|
- "api.jasper.ai"
|
|
- "jasper-ai"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/typeface.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: typeface
|
|
display_name: Typeface
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "typeface"
|
|
- "typeface.ai"
|
|
- "TYPEFACE_API_KEY"
|
|
- "typeface-app"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/comet.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: comet
|
|
display_name: Comet ML / Opik
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "comet_ml"
|
|
- "comet-ml"
|
|
- "COMET_API_KEY"
|
|
- "COMET_WORKSPACE"
|
|
- "opik"
|
|
- "comet.com"
|
|
verify:
|
|
method: GET
|
|
url: https://www.comet.com/api/rest/v2/workspaces
|
|
headers:
|
|
Authorization: "{KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/wandb.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: wandb
|
|
display_name: Weights & Biases
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "wandb"
|
|
- "weights_and_biases"
|
|
- "WANDB_API_KEY"
|
|
- "api.wandb.ai"
|
|
- "wandb.ai"
|
|
patterns:
|
|
- regex: '[a-f0-9]{40}'
|
|
entropy_min: 3.5
|
|
confidence: low
|
|
verify:
|
|
method: GET
|
|
url: https://api.wandb.ai/graphql
|
|
headers:
|
|
Authorization: "Basic {KEY}"
|
|
valid_status: [200, 400]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
Copy all 8 files verbatim to pkg/providers/definitions/.
|
|
</action>
|
|
<verify>
|
|
<automated>cd /home/salva/Documents/apikey && for f in reka aleph-alpha lamini writer jasper typeface comet wandb; 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</automated>
|
|
</verify>
|
|
<acceptance_criteria>
|
|
- All 16 files exist
|
|
- `grep -q 'luminous' providers/aleph-alpha.yaml`
|
|
- `grep -q 'palmyra' providers/writer.yaml`
|
|
- `grep -q 'WANDB_API_KEY' providers/wandb.yaml`
|
|
- `go test ./pkg/providers/... -count=1` passes
|
|
</acceptance_criteria>
|
|
<done>8 emerging/writing/observability providers dual-located.</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 2: LangSmith + vector DBs (LangSmith, Pinecone, Weaviate, Qdrant, Chroma, Milvus, Neon)</name>
|
|
<files>providers/langsmith.yaml, providers/pinecone.yaml, providers/weaviate.yaml, providers/qdrant.yaml, providers/chroma.yaml, providers/milvus.yaml, providers/neon.yaml, pkg/providers/definitions/langsmith.yaml, pkg/providers/definitions/pinecone.yaml, pkg/providers/definitions/weaviate.yaml, pkg/providers/definitions/qdrant.yaml, pkg/providers/definitions/chroma.yaml, pkg/providers/definitions/milvus.yaml, pkg/providers/definitions/neon.yaml</files>
|
|
<read_first>
|
|
- pkg/providers/schema.go
|
|
</read_first>
|
|
<action>
|
|
providers/langsmith.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: langsmith
|
|
display_name: LangSmith (LangChain)
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "langsmith"
|
|
- "langchain"
|
|
- "LANGCHAIN_API_KEY"
|
|
- "LANGSMITH_API_KEY"
|
|
- "LANGCHAIN_TRACING_V2"
|
|
- "api.smith.langchain.com"
|
|
- "lsv2_"
|
|
patterns:
|
|
- regex: 'lsv2_(pt|sk)_[a-f0-9]{32}_[a-f0-9]{10}'
|
|
entropy_min: 4.0
|
|
confidence: high
|
|
verify:
|
|
method: GET
|
|
url: https://api.smith.langchain.com/info
|
|
headers:
|
|
X-API-Key: "{KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/pinecone.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: pinecone
|
|
display_name: Pinecone
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "pinecone"
|
|
- "PINECONE_API_KEY"
|
|
- "PINECONE_ENVIRONMENT"
|
|
- "api.pinecone.io"
|
|
- "pinecone.io"
|
|
- "pcsk_"
|
|
patterns:
|
|
- regex: 'pcsk_[A-Za-z0-9]{40,}'
|
|
entropy_min: 4.0
|
|
confidence: high
|
|
verify:
|
|
method: GET
|
|
url: https://api.pinecone.io/indexes
|
|
headers:
|
|
Api-Key: "{KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
providers/weaviate.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: weaviate
|
|
display_name: Weaviate
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "weaviate"
|
|
- "WEAVIATE_API_KEY"
|
|
- "WEAVIATE_URL"
|
|
- "weaviate.io"
|
|
- "wcs.api"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/qdrant.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: qdrant
|
|
display_name: Qdrant
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "qdrant"
|
|
- "QDRANT_API_KEY"
|
|
- "QDRANT_URL"
|
|
- "qdrant.tech"
|
|
- "cloud.qdrant.io"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/chroma.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: chroma
|
|
display_name: Chroma
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "chromadb"
|
|
- "chroma-client"
|
|
- "CHROMA_API_KEY"
|
|
- "CHROMA_HOST"
|
|
- "trychroma.com"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/milvus.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: milvus
|
|
display_name: Milvus / Zilliz
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "milvus"
|
|
- "zilliz"
|
|
- "ZILLIZ_API_KEY"
|
|
- "MILVUS_TOKEN"
|
|
- "zilliz.com"
|
|
- "api.cloud.zilliz.com"
|
|
verify:
|
|
method: GET
|
|
url: ""
|
|
headers: {}
|
|
valid_status: []
|
|
invalid_status: []
|
|
```
|
|
|
|
providers/neon.yaml:
|
|
|
|
```yaml
|
|
format_version: 1
|
|
name: neon
|
|
display_name: Neon (Serverless Postgres + pgvector)
|
|
tier: 6
|
|
last_verified: "2026-04-05"
|
|
keywords:
|
|
- "neon-db"
|
|
- "neondb"
|
|
- "NEON_API_KEY"
|
|
- "NEON_CONNECTION_STRING"
|
|
- "console.neon.tech"
|
|
- "pg.neon.tech"
|
|
verify:
|
|
method: GET
|
|
url: https://console.neon.tech/api/v2/projects
|
|
headers:
|
|
Authorization: "Bearer {KEY}"
|
|
valid_status: [200]
|
|
invalid_status: [401, 403]
|
|
```
|
|
|
|
Copy all 7 files verbatim to pkg/providers/definitions/.
|
|
</action>
|
|
<verify>
|
|
<automated>cd /home/salva/Documents/apikey && for f in langsmith pinecone weaviate qdrant chroma milvus neon; 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: 6' providers/*.yaml | wc -l) -eq 15</automated>
|
|
</verify>
|
|
<acceptance_criteria>
|
|
- All 14 files exist
|
|
- `grep -q 'lsv2_' providers/langsmith.yaml`
|
|
- `grep -q 'pcsk_' providers/pinecone.yaml`
|
|
- `grep -q 'zilliz' providers/milvus.yaml`
|
|
- Total Tier 6 count = 15
|
|
- `go test ./pkg/providers/... -count=1` passes
|
|
- `go test ./pkg/engine/... -count=1` passes
|
|
</acceptance_criteria>
|
|
<done>All 15 Tier 6 emerging/niche providers dual-located. PROV-06 satisfied.</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<verification>
|
|
`grep -l 'tier: 6' providers/*.yaml | wc -l` returns 15.
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
- 15 Tier 6 providers created
|
|
- LangSmith lsv2_ and Pinecone pcsk_ use high-confidence regex
|
|
- Vector DB env vars captured
|
|
- No engine regression
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.planning/phases/03-tier-3-9-providers/03-07-SUMMARY.md`
|
|
</output>
|