35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
CREATE TABLE IF NOT EXISTS "mission_actions" (
|
|
"id" text PRIMARY KEY DEFAULT gen_random_uuid()::text NOT NULL,
|
|
"user_id" text NOT NULL REFERENCES "users"("id") ON DELETE cascade,
|
|
"mission_instance_id" text NOT NULL REFERENCES "grow_active_missions"("instance_id") ON DELETE cascade,
|
|
"mission_id" text NOT NULL,
|
|
"stage_id" text,
|
|
"agent_id" text NOT NULL,
|
|
"agent_name" text NOT NULL,
|
|
"base_agent" text,
|
|
"service_id" text,
|
|
"tool_name" text,
|
|
"mode" text NOT NULL,
|
|
"status" text DEFAULT 'queued' NOT NULL,
|
|
"title" text NOT NULL,
|
|
"body" text NOT NULL,
|
|
"prompt" text,
|
|
"payload" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
"result" jsonb,
|
|
"error" text,
|
|
"source_event_id" text REFERENCES "grow_events"("id") ON DELETE set null,
|
|
"idempotency_key" text,
|
|
"priority" integer DEFAULT 0 NOT NULL,
|
|
"urgency" text DEFAULT 'calm' NOT NULL,
|
|
"due_at" timestamp with time zone,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"resolved_at" timestamp with time zone
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "mission_actions_mission_idx" ON "mission_actions" ("user_id", "mission_instance_id", "status", "priority");
|
|
CREATE INDEX IF NOT EXISTS "mission_actions_user_idx" ON "mission_actions" ("user_id", "status", "updated_at");
|
|
CREATE INDEX IF NOT EXISTS "mission_actions_source_idx" ON "mission_actions" ("source_event_id");
|
|
CREATE INDEX IF NOT EXISTS "mission_actions_due_idx" ON "mission_actions" ("due_at");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "mission_actions_idempotency_idx" ON "mission_actions" ("idempotency_key");
|