Introspection API¶
ninja_introspect
¶
ninja-introspect — Polyglot database introspection engine for Ninja Stack.
__all__
module-attribute
¶
__all__ = [
"GraphProvider",
"IntrospectionEngine",
"IntrospectionProvider",
"IntrospectionResult",
"MongoProvider",
"SQLProvider",
"VectorProvider",
]
IntrospectionEngine
¶
Orchestrates multiple introspection providers and merges their results.
Usage::
engine = IntrospectionEngine(project_name="my-project")
schema = await engine.run([
"sqlite+aiosqlite:///path/to/db.sqlite",
"mongodb://localhost:27017/mydb",
])
Source code in libs/ninja-introspect/src/ninja_introspect/engine.py
run
async
¶
run(
connection_strings: list[str],
*,
providers: dict[str, IntrospectionProvider]
| None = None,
) -> AgenticSchema
Run introspection across all connection strings and merge results.
| PARAMETER | DESCRIPTION |
|---|---|
connection_strings
|
List of database connection URIs.
TYPE:
|
providers
|
Optional mapping of connection string → provider override.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
AgenticSchema
|
A merged AgenticSchema containing entities and relationships from all sources. |
Source code in libs/ninja-introspect/src/ninja_introspect/engine.py
IntrospectionProvider
¶
Bases: ABC
Protocol for database introspection providers.
Each provider connects to a specific database type, reads its schema, and produces EntitySchema + RelationshipSchema objects.
introspect
abstractmethod
async
¶
introspect(connection_string: str) -> IntrospectionResult
Connect to the database and extract schema information.
| PARAMETER | DESCRIPTION |
|---|---|
connection_string
|
Database connection URI.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
IntrospectionResult
|
IntrospectionResult containing discovered entities and relationships. |
Source code in libs/ninja-introspect/src/ninja_introspect/providers/base.py
IntrospectionResult
dataclass
¶
IntrospectionResult(
entities: list[EntitySchema] = list(),
relationships: list[RelationshipSchema] = list(),
)
Result from a single provider's introspection run.
entities
class-attribute
instance-attribute
¶
entities: list[EntitySchema] = field(default_factory=list)
relationships
class-attribute
instance-attribute
¶
relationships: list[RelationshipSchema] = field(
default_factory=list
)
GraphProvider
¶
Bases: IntrospectionProvider
Introspects Neo4j graph databases — reads node labels, relationship types, and properties.
Source code in libs/ninja-introspect/src/ninja_introspect/providers/graph.py
introspect
async
¶
introspect(connection_string: str) -> IntrospectionResult
Source code in libs/ninja-introspect/src/ninja_introspect/providers/graph.py
MongoProvider
¶
Bases: IntrospectionProvider
Introspects MongoDB databases by sampling documents to infer schema.
Source code in libs/ninja-introspect/src/ninja_introspect/providers/mongo.py
introspect
async
¶
introspect(connection_string: str) -> IntrospectionResult
Source code in libs/ninja-introspect/src/ninja_introspect/providers/mongo.py
SQLProvider
¶
Bases: IntrospectionProvider
Introspects SQL databases (Postgres, MySQL, SQLite) via SQLAlchemy.
introspect
async
¶
introspect(connection_string: str) -> IntrospectionResult
VectorProvider
¶
Bases: IntrospectionProvider
Introspects vector databases (Chroma) — reads collection metadata.
introspect
async
¶
introspect(connection_string: str) -> IntrospectionResult
Introspect a Chroma vector database.
| PARAMETER | DESCRIPTION |
|---|---|
connection_string
|
For Chroma, this is the persist directory path
or an HTTP URL like
TYPE:
|