Skip to content

Pulling dev into production#42

Open
github-actions[bot] wants to merge 12 commits into
masterfrom
dev
Open

Pulling dev into production#42
github-actions[bot] wants to merge 12 commits into
masterfrom
dev

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated promotion PR from dev to master

Esturban added 12 commits March 12, 2026 18:41
- lib/env.sh: use export "${name?}" to suppress SC2163 false positive
  on indirect variable export (semantics unchanged)
- tests/pinecone_adapter_test.sh: remove unused CAPTURED_DATA variable (SC2034)
- tests/qdrant_adapter_test.sh: remove unused CAPTURED_DATA variable (SC2034)

All 26 tests pass; shellcheck exits 0.
ingo_vector_upstash_embed_jsonl was calling the legacy ingo_upsert_line
shim in embed.sh, which then called ingo_vector_upstash_upsert_line_impl
back in the same file. Replace the round-trip with a direct call to
ingo_vector_upstash_upsert_line_impl.

Update path_key_collision_test to pre-load the vector dispatch layer
and mock ingo_vector_upstash_upsert_line_impl instead of the shim.

Suppress SC2094 false positives in all three adapter embed_jsonl loops
(basename of the loop variable is not a write to the input file).

Extend CI shellcheck glob to include lib/vector/*.sh so adapter files
are linted on every push.
Any vector backend (ChromaDB, Redis, Weaviate, custom REST) can now be
wired into ingo without touching core code:

  INGO_VECTOR_BACKEND=chroma \
  INGO_VECTOR_ADAPTER=/opt/adapters/chroma.sh \
  ingo query "question"

Changes:
- lib/vector.sh: replace hard-coded case dispatch with dynamic function
  resolution via _ingo_vector_load_adapter and _ingo_vector_slug; backend
  names with hyphens are supported (slug maps hyphens to underscores);
  unknown backends print available built-ins and hint at INGO_VECTOR_ADAPTER
- lib/vector/generic.sh: new built-in adapter that talks to any REST API
  via INGO_VECTOR_URL / INGO_VECTOR_TOKEN / configurable paths — zero code
  required for simple custom backends
- docs/adapter-contract.md: three-function contract, HTTP helper notes,
  reference implementations table, and minimal starter template
- tests/external_adapter_test.sh: 6 new tests covering external load,
  missing file error, unknown backend hint, hyphenated name, generic
  adapter doctor, and generic adapter missing-env error
Adds a pluggable embedder module (lib/embedder.sh) that produces float
vectors from plain text via Ollama, OpenAI, Voyage, Cohere, or Together
AI. When INGO_EMBEDDING_MODE=external, ingo calls the configured embedder
before reaching the adapter — enabling pure vector DBs (Turbopuffer,
LanceDB, MongoDB Atlas, pgvector) without any server-side embedding.

New optional adapter contract functions:
- ingo_vector_<name>_upsert_vector_jsonl: upsert pre-vectorized JSONL
- ingo_vector_<name>_query_vector: ANN query with a float array

Built-in implementations in generic.sh and qdrant.sh (qdrant doctor no
longer requires INGO_VECTOR_MODEL when INGO_EMBEDDING_MODE=external).
Embedder doctor integrated into bin/ingo doctor when mode is external.
12 new tests in tests/embedder_test.sh; all tests and shellcheck pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant