---
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>
