---
title: "openvibe-sdk/agents/blueprint · OpenVibe.Services"
canonical: "https://openvibe.services/docs/sdk/agents-blueprint"
updated: null
---

# openvibe-sdk/agents/blueprint · OpenVibe.Services

HTML: [openvibe-sdk/agents/blueprint · OpenVibe.Services](https://openvibe.services/docs/sdk/agents-blueprint)

# `openvibe-sdk/agents/blueprint`

Generated at 2026-11-14 06:36:17 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.168.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.168.0).

From `types/agents-blueprint.d.ts` (both). Declarations are shown verbatim.

## type Level

~~~~
export type Level = 'ask' | 'auto-edits' | 'approve-for-me' | 'full';
~~~~

## type PlaceKind

~~~~
export type PlaceKind = 'none' | 'own' | 'shared' | 'openvibe' | 'sandbox';
~~~~

## type MemoryScope

~~~~
export type MemoryScope = 'none' | 'thread' | 'person' | 'team';
~~~~

## type Who

~~~~
export type Who = 'owner' | 'list' | 'followers' | 'anyone';
~~~~

## type WhenKind

~~~~
export type WhenKind = 'manual' | 'chat' | 'feed' | 'comments' | 'git' | 'composer' | 'notifications' | 'mail' | 'schedule' | 'goal' | 'event' | 'webhook' | 'machine';
~~~~

## type InputType

~~~~
export type InputType = 'text' | 'number' | 'boolean' | 'choice' | 'channel' | 'room' | 'repository' | 'machine' | 'url';
~~~~

## interface BlueprintInput

~~~~
export interface BlueprintInput { id: string; type: InputType; label: string; help?: string; required?: boolean; default?: string | number | boolean; choices?: string[]; }
~~~~

## interface Blueprint

~~~~
export interface Blueprint {
    id: string;
    version: number;
    state: 'draft' | 'published' | 'retired';
    name: string;
    summary: string;
    author: { type: 'user' | 'service'; id: string };
    visibility: 'private' | 'link' | 'public';
    forked_from?: string | null;
    licence?: string;
    tags?: string[];
    inputs?: BlueprintInput[];
    needs?: Array<{ kind: 'machine' | 'key' | 'plan' | 'app' | 'robot'; what: string; why?: string }>;
    face?: { avatar?: string; glyph?: string; hue?: number; voice?: string | null; tone?: string; greeting?: string; elements?: string[] };
    brain?: { pick?: 'auto' | 'size' | 'exact'; size?: Tier; model?: string; rungs?: Rung[]; max_usd_per_m?: number; caps?: string[]; depth?: 'quick' | 'balanced' | 'deep'; advisor?: { size?: 'medium' | 'strong'; consults: number } | null; decisions?: boolean };
    knows: { instructions: string; skills?: string[]; knowledge?: Array<{ kind: 'file' | 'media' | 'wiki' | 'search' | 'repository' | 'url'; ref: string; note?: string }>; examples?: Array<{ ask: string; good: string }> };
    hands?: { tools?: Array<{ tool: string; mode: 'allow' | 'ask'; note?: string }>; search?: boolean };
    places?: { order?: PlaceKind[]; needs?: string[] };
    memory?: { scope: MemoryScope; remember?: string; keep_days?: number | null };
    rules?: { level?: Level; budget?: { run_usd?: number; day_usd?: number; run_seconds?: number; run_steps?: number }; who?: { may: Who } };
    when?: Array<{ kind: WhenKind; rule?: string; where?: { service: string; kind?: string; id?: string }; event?: string; cron?: string; tz?: string }>;
    makes?: { answer?: string[]; schema?: object | null; serve?: { a2a?: boolean; mcp?: boolean; input?: object | null } };
    team?: { play: string; roles: Record<string, string> } | null;
    created_at?: string;
    updated_at?: string;
    published_at?: string | null;
}
~~~~

## interface Install

~~~~
export interface Install { agent: string; owner: { type: 'user'; id: string }; blueprint: string; inputs?: Record<string, string | number | boolean>; agreed: string[]; places?: { own?: string[]; shared?: string[] }; updates: 'ask' | 'same-or-less'; pending?: string | null; installed_at?: string; updated_at?: string; }
~~~~

## interface Problem

~~~~
export interface Problem { at: string; why: string; }
~~~~

## interface Ask

~~~~
export interface Ask { key: string; part: string; words: string; ask: boolean; }
~~~~

## export export class BlueprintError extends Error { errors: Problem\[

~~~~
export class BlueprintError extends Error { errors: Problem[]; }
~~~~

## export export function validate(doc: unknown): { ok: boolean; error

~~~~
export function validate(doc: unknown): { ok: boolean; errors: Problem[] };
~~~~

## export export function withDefaults(doc: Blueprint): Required<Bluep

~~~~
export function withDefaults(doc: Blueprint): Required<Blueprint>;
~~~~

## export export function asks(doc: Blueprint, options?: { describe?:

~~~~
export function asks(doc: Blueprint, options?: { describe?: (tool: string) => string | null | undefined }): Ask[];
~~~~

## export export function wider(oldDoc: Blueprint, newDoc: Blueprint):

~~~~
export function wider(oldDoc: Blueprint, newDoc: Blueprint): Array<{ key: string; words: string }>;
~~~~

## export export function unagreed(doc: Blueprint, agreed: string\[\]):

~~~~
export function unagreed(doc: Blueprint, agreed: string[]): Ask[];
~~~~

## export export function fill(doc: Blueprint, inputs?: Record<string,

~~~~
export function fill(doc: Blueprint, inputs?: Record<string, unknown>): Blueprint;
~~~~

## interface Compiled

~~~~
export interface Compiled {
    start: { text: string; title: string; agent?: string; blueprint?: string; play?: string; budget?: { usd?: number; seconds?: number; steps?: number }; depth?: string; context?: object };
    loop: { system: string; tools: Array<{ name: string; mode: 'allow' | 'ask' }>; search: boolean; budget: { usd?: number; seconds?: number; steps?: number }; schema: object | null };
    dispatch: { pin: string | null; rungs: Rung[]; maxPrice: number | null; need: { caps: string[]; tier?: Tier }; advisor: { size?: string; consults: number } | null; decisions: boolean };
    place: { order: PlaceKind[]; needs: string[]; machines: { own?: string[]; shared?: string[] } };
    memory: { scope: MemoryScope; remember: string | null; keep_days: number | null };
    team: { play: string; roles: Record<string, string> } | null;
}
~~~~

## export export function compile(doc: Blueprint, options?: { install?

~~~~
export function compile(doc: Blueprint, options?: { install?: Install | null; inputs?: Record<string, unknown>; text?: string; context?: object; tryIt?: boolean }): Compiled;
~~~~

## export export function estimate(doc: Blueprint, choices: Choice\[\],

~~~~
export function estimate(doc: Blueprint, choices: Choice[], options?: { turns?: number; tokens?: { tokensIn?: number; tokensOut?: number } }): { usd_per_run: number | null; choice: (Choice & { why: string }) | null; free_on: Rung[]; why: string };
~~~~

## export export function ref(doc: { id: string; version: number }): s

~~~~
export function ref(doc: { id: string; version: number }): string;
~~~~

## export export function parseRef(s: string): { id: string; version:

~~~~
export function parseRef(s: string): { id: string; version: number } | null;
~~~~

## export export function toolWords(tool: string): string;

~~~~
export function toolWords(tool: string): string;
~~~~

## export export const FLOOR: string\[\];

~~~~
export const FLOOR: string[];
~~~~

## export export const LEVELS: Level\[\];

~~~~
export const LEVELS: Level[];
~~~~

## export export const PLACES: PlaceKind\[\];

~~~~
export const PLACES: PlaceKind[];
~~~~

## export export const MEMORY: MemoryScope\[\];

~~~~
export const MEMORY: MemoryScope[];
~~~~

## export export const WHO: Who\[\];

~~~~
export const WHO: Who[];
~~~~

## export export const WHEN: WhenKind\[\];

~~~~
export const WHEN: WhenKind[];
~~~~

## export export const INPUT\_TYPES: InputType\[\];

~~~~
export const INPUT_TYPES: InputType[];
~~~~

## export export const TOOL: RegExp;

~~~~
export const TOOL: RegExp;
~~~~

## export export const BP\_REF: RegExp;

~~~~
export const BP_REF: RegExp;
~~~~
