[ { "type": "function", "function": { "name": "bifrost.soong-lab.set_name", "parameters": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "maxLength": 128, "minLength": 1 } } }, "description": "Set the agent's name (its display name; export slugifies it)." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.set_role", "parameters": { "type": "object", "required": ["role"], "properties": { "role": { "enum": ["assistant", "thoughtful-assistant", "character", "thoughtful-character"], "type": "string" } } }, "description": "Set the agent's model-role — one of: assistant (general), thoughtful-assistant (reasoning general), character (RP/writing-tuned), thoughtful-character (reasoning RP). Export ships it as the native agents.define `role`." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.set_ocean", "parameters": { "type": "object", "properties": { "A": { "type": "number", "maximum": 1, "minimum": -1 }, "C": { "type": "number", "maximum": 1, "minimum": -1 }, "E": { "type": "number", "maximum": 1, "minimum": -1 }, "N": { "type": "number", "maximum": 1, "minimum": -1 }, "O": { "type": "number", "maximum": 1, "minimum": -1 } }, "minProperties": 1 }, "description": "Merge OCEAN dials (each in [-1,1]); re-derives the disposition." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.edit_prompt", "parameters": { "type": "object", "required": ["system_prompt"], "properties": { "system_prompt": { "type": "string", "maxLength": 32768, "minLength": 1 } } }, "description": "Replace the authored role/instructions block (the exported system prompt)." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.attach_tool", "parameters": { "type": "object", "required": ["id", "name"], "properties": { "id": { "type": "string", "maxLength": 256, "minLength": 1 }, "name": { "type": "string", "maxLength": 256, "minLength": 1 }, "description": { "type": "string", "maxLength": 2048 } } }, "description": "Attach (upsert by id) a tool the designed agent will bind via Bifrost." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.author_first_message", "parameters": { "type": "object", "required": ["first_message"], "properties": { "first_message": { "type": "string", "maxLength": 32768, "minLength": 1 } } }, "description": "Set the agent's in-character opening turn (tone + format by example)." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.edit_psych_profile", "parameters": { "type": "object", "required": ["psych_profile"], "properties": { "psych_profile": { "type": "string", "maxLength": 8192, "minLength": 1 } } }, "description": "Author the character's Psychological Profile & Experience — a ~150-300 word prose lens (the self-report producer reads it every turn) covering four dimensions: disposition/appraisal bent, attention/salience focus, values/yardstick, and formative history. Integrate them as one paragraph and CLOSE ON ATTENTION — what the character characteristically notices ('...notices who is unwell, what is left unsaid'). Guardrails: (1) NEVER name a per-event output emotion ('is anxious', 'feels hurt') — naming PRIMES it, so it fires regardless of the event; describe the bent and let emotion follow from the appraisal. (2) Magnitude lives in the OCEAN dials, not the prose (don't narrate 'comes apart'/'takes it hard'). (3) Appraisal-STYLE yes ('reads others charitably until she can't'), output-emotion no. (4) Salience is character-relative — never rewrite what happened." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.generate_portrait", "parameters": { "type": "object", "required": ["description"], "properties": { "description": { "type": "string", "maxLength": 500, "minLength": 1 }, "style_mode": { "enum": ["anime", "cartoon", "photoreal"], "type": "string" } } }, "description": "Generate the agent's persona portrait NOW from a visual `description` you author — the persona's LOOK (e.g. 'a stern woman in her 40s, short dark hair, sharp jaw'). A persona is personality, not appearance, so YOU compose the appearance in conversation and pass it here; describe only the subject, never the art style. `style_mode` (anime | cartoon | photoreal) selects the curated render style — the style preset owns the look. Generation runs in the background; the portrait pane shows it when ready. Offer/generate a portrait once the look is settled." } }, { "type": "function", "function": { "name": "bifrost.soong-lab.export", "parameters": { "type": "object", "properties": {} }, "description": "Export the native payload + sidecar bundle (stub — lands in E5)." } } ]