Governed substrate for autonomous agents: scoped identity (passports), audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
215 lines
No EOL
8.1 KiB
SQL
215 lines
No EOL
8.1 KiB
SQL
-- Migration 015: Labs AI Templates Seed Data
|
|
-- Migrated from MindWorkflow AI Agents Catalog
|
|
-- Source: /home/dev2/workspace/mindworkflow-download/app/src/data/aiCatalog.ts
|
|
-- Created: 2026-01-24
|
|
|
|
-- ============================================================
|
|
-- Seed labs_ai_templates with MindWorkflow AI Agents
|
|
-- ============================================================
|
|
|
|
-- 1. Strategic Planner (text_to_text)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'planner_llm',
|
|
'Strategic Planner',
|
|
'text_to_text',
|
|
'Long-form reasoning model for planning multi-step creative pipelines.',
|
|
'You are a senior creative strategist. Respond with numbered steps, each containing a goal, reasoning, and deliverable.',
|
|
'Draft a 5 step plan for launching a snack food brand on social media.',
|
|
'[
|
|
{"name": "brief", "description": "Primary project description or goal statement"},
|
|
{"name": "constraints", "description": "Hard limits such as budget or timeline", "requirement": "Optional but recommended"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "gpt-4.1-mini",
|
|
"temperature": "0.4",
|
|
"top_p": "0.9"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "text", "type": "text", "enabled": true}],
|
|
"maxLength": "8k tokens"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- 2. Tone Refiner (text_to_text)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'tone_refiner',
|
|
'Tone Refiner',
|
|
'text_to_text',
|
|
'Refines supplied copy to match a target brand voice.',
|
|
'You are a copy editor tasked with adjusting tone without changing intent.',
|
|
'Rewrite this paragraph to sound energetic and Gen-Z friendly.',
|
|
'[
|
|
{"name": "draft", "description": "Original text to rephrase"},
|
|
{"name": "tone", "description": "Voice guidelines or adjectives"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "claude-3.5",
|
|
"temperature": "0.3"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "text", "type": "text", "enabled": true}],
|
|
"maxLength": "4k tokens"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- 3. Visual Ideation Adapter (text_to_image)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'midjourney_adapter',
|
|
'Visual Ideation Adapter',
|
|
'text_to_image',
|
|
'Prepares prompts and references for image generation pipelines.',
|
|
'Combine user prompt and structured references into a single Midjourney-style command. List modifiers last.',
|
|
'Concept art of a neon-lit street vendor in rainy Tokyo.',
|
|
'[
|
|
{"name": "reference_image", "description": "Primary inspiration image URL", "requirement": "JPEG/PNG up to 2 MB"},
|
|
{"name": "character_sheet", "description": "Character reference board", "requirement": "Optional"},
|
|
{"name": "style", "description": "Target art direction keywords"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "mj-v6-raw",
|
|
"resolution": "1024x1024",
|
|
"seed": "auto"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "image", "type": "image", "enabled": true}],
|
|
"maxLength": "N/A"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- 4. Scene Captioning (image_to_text)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'caption_model',
|
|
'Scene Captioning',
|
|
'image_to_text',
|
|
'Generates descriptive captions for storyboard frames.',
|
|
'Return vivid but production-ready descriptions mentioning characters, lighting, and props.',
|
|
'Describe the uploaded storyboard frame in two sentences.',
|
|
'[
|
|
{"name": "frame", "description": "Story frame image", "requirement": "PNG up to 5 MB"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "gpt-4o-mini-vision",
|
|
"temperature": "0.2"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "text", "type": "text", "enabled": true}],
|
|
"maxLength": "1k tokens"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- 5. Narration Voice (text_to_voice)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'voiceover_tts',
|
|
'Narration Voice',
|
|
'text_to_voice',
|
|
'Produces natural voiceover tracks from scripts.',
|
|
'Render the line with studio quality, subtle pacing, and no background music.',
|
|
'Generate a calm, confident narration for the supplied script.',
|
|
'[
|
|
{"name": "script", "description": "Narration script markdown"},
|
|
{"name": "voice_reference", "description": "Optional timbre reference clip", "requirement": "MP3/WAV up to 30s"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "elevenlabs-pro",
|
|
"sample_rate": "48kHz",
|
|
"language": "en-US"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "audio", "type": "voice", "enabled": true}],
|
|
"maxLength": "1.5k tokens"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- 6. Interview Transcriber (voice_to_text)
|
|
INSERT INTO labs_ai_templates (mindworkflow_id, name, category, description, system_prompt, user_prompt_example, inputs, settings, routing_config, created_at)
|
|
VALUES (
|
|
'speech_to_text',
|
|
'Interview Transcriber',
|
|
'voice_to_text',
|
|
'High accuracy transcription tuned for production interviews.',
|
|
'Return JSON with segments, timestamps, and speaker labels suitable for editing timelines.',
|
|
'Transcribe the conversation and highlight key soundbites.',
|
|
'[
|
|
{"name": "recording", "description": "Interview audio", "requirement": "MP3/WAV up to 60 minutes"},
|
|
{"name": "speaker_map", "description": "List of speaker names in order of appearance", "requirement": "Optional"}
|
|
]'::jsonb,
|
|
'{
|
|
"model": "whisper-large-v3",
|
|
"diarization": "enabled"
|
|
}'::jsonb,
|
|
'{
|
|
"outputs": [{"id": "text", "type": "text", "enabled": true}],
|
|
"maxLength": "60 minutes audio"
|
|
}'::jsonb,
|
|
NOW()
|
|
) ON CONFLICT (mindworkflow_id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
category = EXCLUDED.category,
|
|
description = EXCLUDED.description,
|
|
system_prompt = EXCLUDED.system_prompt,
|
|
user_prompt_example = EXCLUDED.user_prompt_example,
|
|
inputs = EXCLUDED.inputs,
|
|
settings = EXCLUDED.settings,
|
|
routing_config = EXCLUDED.routing_config;
|
|
|
|
-- ============================================================
|
|
-- SQLite Compatibility Notes
|
|
-- ============================================================
|
|
|
|
-- For SQLite, the above queries need to be adapted:
|
|
-- 1. Replace JSONB with TEXT
|
|
-- 2. Replace NOW() with datetime('now')
|
|
-- 3. Replace ON CONFLICT with INSERT OR REPLACE
|
|
-- 4. Remove ::jsonb casting
|
|
|
|
-- The JavaScript migration file handles these differences automatically |