# Generated by Django 5.2.15 on 2026-07-14 05:54 import uuid import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("modelhub", "0001_initial"), ("skills", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="AgentDefinition", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("code", models.SlugField(max_length=80, unique=True)), ("name", models.CharField(max_length=120)), ("description", models.TextField(blank=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="created_agents", to=settings.AUTH_USER_MODEL, ), ), ], options={ "ordering": ["name"], }, ), migrations.CreateModel( name="AgentRun", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("public_id", models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ("sandbox", models.BooleanField(default=False)), ("status", models.CharField(default="queued", max_length=24)), ("input_payload", models.JSONField(default=dict)), ("final_output", models.JSONField(blank=True, null=True)), ("config_snapshot", models.JSONField(default=dict)), ("current_step", models.CharField(blank=True, max_length=80)), ("total_steps", models.PositiveIntegerField(default=0)), ("input_tokens", models.PositiveIntegerField(default=0)), ("output_tokens", models.PositiveIntegerField(default=0)), ("duration_ms", models.PositiveIntegerField(default=0)), ("task_id", models.CharField(blank=True, max_length=120)), ("cancellation_requested_at", models.DateTimeField(blank=True, null=True)), ("error_code", models.CharField(blank=True, max_length=80)), ("error_message", models.TextField(blank=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("started_at", models.DateTimeField(blank=True, null=True)), ("finished_at", models.DateTimeField(blank=True, null=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="agent_runs", to=settings.AUTH_USER_MODEL, ), ), ( "definition", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="runs", to="agents.agentdefinition", ), ), ], options={ "ordering": ["-created_at"], }, ), migrations.CreateModel( name="AgentRunStep", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("code", models.CharField(max_length=80)), ("name", models.CharField(max_length=120)), ("order", models.PositiveIntegerField()), ("status", models.CharField(default="queued", max_length=24)), ("input_payload", models.JSONField(default=dict)), ("output_payload", models.JSONField(blank=True, null=True)), ("input_tokens", models.PositiveIntegerField(default=0)), ("output_tokens", models.PositiveIntegerField(default=0)), ("duration_ms", models.PositiveIntegerField(default=0)), ("error_code", models.CharField(blank=True, max_length=80)), ("error_message", models.TextField(blank=True)), ("started_at", models.DateTimeField(blank=True, null=True)), ("finished_at", models.DateTimeField(blank=True, null=True)), ( "run", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="steps", to="agents.agentrun", ), ), ( "skill_version", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="run_steps", to="skills.skillversion", ), ), ], options={ "ordering": ["order"], }, ), migrations.CreateModel( name="AgentRunAttempt", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("attempt_type", models.CharField(default="initial", max_length=32)), ("status", models.CharField(max_length=24)), ("raw_output", models.TextField(blank=True)), ("validation_error", models.TextField(blank=True)), ("input_tokens", models.PositiveIntegerField(default=0)), ("output_tokens", models.PositiveIntegerField(default=0)), ("duration_ms", models.PositiveIntegerField(default=0)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "model_invocation", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="agent_attempts", to="modelhub.modelinvocation", ), ), ( "step", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="attempts", to="agents.agentrunstep", ), ), ], options={ "ordering": ["created_at"], }, ), migrations.CreateModel( name="AgentVersion", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("version", models.PositiveIntegerField()), ("status", models.CharField(default="draft", max_length=24)), ("system_prompt", models.TextField(blank=True)), ("input_schema", models.JSONField(default=dict)), ("example_input", models.JSONField(blank=True, default=dict)), ("temperature_override", models.FloatField(blank=True, null=True)), ("max_output_tokens_override", models.PositiveIntegerField(blank=True, null=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("published_at", models.DateTimeField(blank=True, null=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="created_agent_versions", to=settings.AUTH_USER_MODEL, ), ), ( "definition", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="versions", to="agents.agentdefinition", ), ), ( "model_deployment", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="agent_versions", to="modelhub.modeldeployment", ), ), ( "published_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="published_agent_versions", to=settings.AUTH_USER_MODEL, ), ), ], options={ "ordering": ["-version"], }, ), migrations.CreateModel( name="AgentStepBinding", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), ("code", models.SlugField(max_length=80)), ("order", models.PositiveIntegerField()), ("input_mapping", models.JSONField(default=dict)), ( "skill_version", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="agent_bindings", to="skills.skillversion", ), ), ( "agent_version", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="steps", to="agents.agentversion", ), ), ], options={ "ordering": ["order"], }, ), migrations.AddField( model_name="agentrun", name="agent_version", field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="runs", to="agents.agentversion", ), ), migrations.AddField( model_name="agentdefinition", name="active_version", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="active_for_definitions", to="agents.agentversion", ), ), migrations.AddConstraint( model_name="agentrunstep", constraint=models.UniqueConstraint( fields=("run", "order"), name="unique_run_step_order" ), ), migrations.AddConstraint( model_name="agentversion", constraint=models.UniqueConstraint( fields=("definition", "version"), name="unique_agent_version" ), ), migrations.AddConstraint( model_name="agentversion", constraint=models.UniqueConstraint( condition=models.Q(("status", "draft")), fields=("definition",), name="unique_agent_draft", ), ), migrations.AddConstraint( model_name="agentstepbinding", constraint=models.UniqueConstraint( fields=("agent_version", "code"), name="unique_agent_step_code" ), ), migrations.AddConstraint( model_name="agentstepbinding", constraint=models.UniqueConstraint( fields=("agent_version", "order"), name="unique_agent_step_order" ), ), migrations.AddIndex( model_name="agentrun", index=models.Index( fields=["status", "created_at"], name="agents_agen_status_27cafa_idx" ), ), migrations.AddIndex( model_name="agentrun", index=models.Index( fields=["definition", "created_at"], name="agents_agen_definit_22ef17_idx" ), ), ]