Skip to content

Provisioning boundary: agent-driven database, table, and index lifecycle #61

Description

@rohan-hotdata

Measured against published 0.6.0: an agent holding our tools can create a managed database,
declare a table, load data into it, query it and delete it — the whole lifecycle, end to end,
unaided. What it cannot do is make any of that searchable.

There is no agent-callable way to build a vector store, and no agent-callable way to create an
index of either kind. Both search modes need setup that happens outside the agent's reach, in
Python, by a developer.

So the honest position today is: this integration supports agent-driven analytics over data a
developer provisioned.
That may well be the right boundary — letting a model create indexes has
real cost implications — but right now it is neither documented nor decided, it is just where the
API happens to stop.

What is agent-reachable today

Capability Agent can do it alone Note
Query, aggregate, analyse yes over loaded data or attached live sources
Discover the schema yes types only — cannot tell a populated column from an empty one
Rank by keyword or by meaning yes only if a developer provisioned the index or corpus
Express a cohort inside one query yes keyword only — see the asymmetry below
Create a database, declare tables yes verified end to end, then cleanly deleted
Load data partly local parquet paths only
Build a vector store or an index no developer-only Python API

The four specific gaps

  1. load_managed_table takes a local filesystem path only. A URL raises a raw Python
    FileNotFoundError before anything reaches the engine, which makes it unusable from a deployed
    Agent Server that has no local files. (URL loads are already noted in Tool layer: surface tool errors to the model, read-only mode and tool name constants, URL-based table loads #41 — flagged here for
    completeness, not to duplicate.)
  2. Parquet only. No CSV, JSON, Arrow, or inline rows — so an agent cannot materialise data it
    already holds.
  3. No vector-store creation tool. HotdataVectorStore is Python-only.
  4. No index-creation tool, for vector or BM25. BM25 in particular has no brute-force fallback,
    so an unindexed column is a hard error rather than a slow query.

The asymmetry underneath it

bm25_search takes text, so an agent can compose it into SQL unaided — that is what makes a
relevance-defined cohort expressible in one query. vector_search takes a vector, so a
meaning-defined cohort cannot be expressed in SQL by an agent at all. Something has to embed the
concept first.

This is the sharpest gap the downstream POC found, and it is why the semantic side is a
second-class citizen of the composability story that this integration's whole pitch rests on. A
tool that takes a concept, embeds it, and returns a SQL-addressable cohort would close it.
That work belongs with the semantic search tool in #39; this issue is the surrounding provisioning
question.

What this issue needs before it needs code

A decision, not an implementation:

  • Should provisioning be agent-callable at all, or explicitly developer-only?
  • If agent-callable: behind a flag, off by default? With what cost guardrails?
  • If developer-only: say so in the tool descriptions and the README, so the boundary is a stated
    design position rather than an accident.

Whichever way it goes, the boundary should be written down. Right now a reader of the tool list
would reasonably infer more autonomy than exists.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-native-layerPart of the AI-native query layer effort for LangChainenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions