Skip to content

Model Inspector

v0.5.21 — Deep model introspection for schema analysis, AI context, and CLI.

The Model Inspector provides structured metadata about every registered Aksara model — fields, relationships, constraints, timestamps, primary keys, and auto-generated diagnostic comments.


Quick Start

Python API

from aksara.inspectors.models import inspect_model, inspect_all_models
from aksara.registry import ModelRegistry

# Inspect a single model
model_cls = ModelRegistry.get("User")
summary = inspect_model(model_cls)

print(summary.name)              # "User"
print(summary.table_name)        # "users"
print(summary.num_fields)        # 5
print(summary.has_timestamps)    # True
print(summary.comments)          # ["✓ Timestamps (created_at, updated_at) detected"]

# Inspect all models
all_summaries = inspect_all_models()
for s in all_summaries:
    print(f"{s.name}: {s.num_fields} fields, {s.num_relationships} rels")

CLI

# List all models
aksara inspect models

# Inspect a single model with field details
aksara inspect models --model User

# Show fields and relationships
aksara inspect models --fields --relationships

# JSON output for piping
aksara inspect models --json

# Pipe to agent for schema review
aksara inspect models --json | aksara agent prompt -g "Review schema design"

Studio API

# Single model
curl http://localhost:8000/studio/models/inspect/User

# All models
curl http://localhost:8000/studio/models/inspect/all

Models

ModelInspectorField

Field Type Description
name str Field name on the model class
column_name str Database column name
field_type str Aksara field class name
python_type str Expected Python type
nullable bool Whether NULL is allowed
primary_key bool Is the primary key
unique bool Has UNIQUE constraint
has_default bool Whether a default is set
default_repr str | None String repr of default
max_length int | None Max length for string fields
choices list | None Enum/choice values
is_relation bool FK or M2M field
ai_description str AI-facing description
ai_sensitive bool Holds sensitive data
auto_generated str Inspector auto-comment

ModelInspectorRelationship

Field Type Description
field_name str Field name on source model
kind str fk, m2m, or o2o
target_model str Target model class name
target_table str Target database table
on_delete str CASCADE, SET_NULL, RESTRICT
through_table str | None Junction table for M2M
related_name str | None Reverse accessor name
nullable bool FK column nullable

ModelInspectorConstraint

Field Type Description
kind str primary_key, unique, index, check
columns List[str] Columns involved
name str | None Constraint name
description str Human-readable description

ModelInspectorSummary

Field Type Description
name str Model class name
table_name str Database table name
app_label str | None Application label
num_fields int Total fields
num_relationships int Total relationships
has_timestamps bool Has created_at/updated_at
pk_field str | None Primary key field name
pk_type str Primary key field type
fields List[Field] All fields with metadata
relationships List[Rel] All relationships
constraints List[Con] Inferred constraints
ai_description str AI-level model description
ai_agent_exposed bool Whether AI agents can access model
create_table_sql str CREATE TABLE SQL
comments List[str] Auto-generated inspector notes

Auto-Generated Comments

The inspector automatically generates diagnostic comments:

Comment When
⚠️ Model has no fields defined No fields found
⚠️ No explicit primary key detected No PK field
✓ Timestamps (created_at, updated_at) Both auto-timestamp fields exist
Relations: 2 FK(s), 1 M2M(s) Has relationships
⚠️ Has sensitive fields Any field marked ai_sensitive
🔒 Not exposed to AI agents ai_agent_exposed = False

Studio Integration

Inspector Tab

The Studio UI includes a dedicated Inspector tab (keyboard shortcut: 9) with:

  • Summary Cards — Total models, fields, and relationships
  • Model Cards — Expandable per-model detail with field tables, relationship tables, and CREATE TABLE SQL
  • Auto-generated Comments — Diagnostic notes for each model

Agent Context

The schema_analysis section (section 11 of 11) is included in agent context, providing:

  • total_models, total_fields, total_relationships
  • Per-model summary with name, table, field count, relationship count, timestamps, and comments