Manifest Schema
Manifest Schema
The NudgeLang manifest schema defines the structure and configuration of autonomous agents. This document provides a comprehensive reference for all available options and their usage.
Basic Structure
name: string # Required: Unique identifier for the agent
version: string # Required: Semantic version (e.g., "1.0.0")
description: string # Required: Brief description of the agent
author: string # Optional: Author information
license: string # Optional: License information
# Configuration
config:
timeout: number # Optional: Global timeout in seconds
retry_attempts: number # Optional: Number of retry attempts
max_iterations: number # Optional: Maximum iteration count
debug: boolean # Optional: Enable debug mode
# State Definitions
states:
- id: string # Required: Unique state identifier
type: string # Required: State type (initial, llm, tool, etc.)
next: string # Required: Next state ID
transitions: # Optional: Conditional transitions
- when: string # Required: Condition expression
next: string # Required: Next state ID
input: # Optional: Input mapping
key: string # Required: Input key
value: string # Required: Value expression
output: # Optional: Output mapping
key: string # Required: Output key
value: string # Required: Value expression
# Tool Definitions
tools:
- name: string # Required: Tool name
type: string # Required: Tool type
description: string # Required: Tool description
parameters: # Required: Parameter definitions
- name: string # Required: Parameter name
type: string # Required: Parameter type
required: boolean # Required: Is parameter required
description: string # Required: Parameter description
# Model Definitions
models:
- name: string # Required: Model name
type: string # Required: Model type
provider: string # Required: Model provider
version: string # Required: Model version
parameters: # Optional: Model parameters
key: value # Provider-specific parameters
# Context Definitions
context:
variables: # Optional: Global variables
- name: string # Required: Variable name
type: string # Required: Variable type
default: any # Optional: Default value
persistence: # Optional: Context persistence
type: string # Required: Storage type
config: object # Required: Storage configurationState Types
Initial State
states:
- id: start
type: initial
next: next_stateLLM State
states:
- id: process
type: llm
model: model_name
prompt: |
Your prompt template here
{variable}
input:
variable: "${context.value}"
next: next_stateTool State
states:
- id: execute
type: tool
tool: tool_name
parameters:
param1: "${input.value}"
param2: "${context.value}"
next: next_stateOutput State
states:
- id: end
type: output
value: "${context.result}"Transitions
Basic Transition
states:
- id: process
type: llm
next: next_stateConditional Transition
states:
- id: process
type: llm
transitions:
- when: "${output.status === 'success'}"
next: success_state
- when: "${output.status === 'error'}"
next: error_state
- next: default_stateInput/Output Mapping
Input Mapping
states:
- id: process
type: llm
input:
user_input: "${input.message}"
context_data: "${context.data}"
previous_result: "${previous.output}"Output Mapping
states:
- id: process
type: llm
output:
result: "${output.data}"
status: "${output.status}"Tool Configuration
Basic Tool
tools:
- name: send_message
type: http
description: "Send a message to a channel"
parameters:
- name: message
type: string
required: true
description: "Message content"
- name: channel
type: string
required: true
description: "Target channel"Custom Tool
tools:
- name: custom_tool
type: custom
description: "Custom tool implementation"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
implementation: "path/to/implementation"Model Configuration
LLM Model
models:
- name: gpt4
type: llm
provider: openai
version: "4.0"
parameters:
temperature: 0.7
max_tokens: 1000Custom Model
models:
- name: custom_model
type: custom
provider: custom
version: "1.0"
parameters:
custom_param: valueContext Configuration
Global Variables
context:
variables:
- name: max_retries
type: number
default: 3
- name: timeout
type: number
default: 30Persistence
context:
persistence:
type: redis
config:
host: localhost
port: 6379
db: 0Best Practices
Naming Conventions
- Use descriptive names
- Follow consistent patterns
- Avoid reserved words
- Use lowercase with underscores
State Management
- Keep states focused
- Use clear transitions
- Handle errors properly
- Document state purposes
Tool Usage
- Define clear parameters
- Provide descriptions
- Handle errors
- Validate inputs
Model Configuration
- Set appropriate parameters
- Monitor usage
- Handle rate limits
- Cache when possible
Common Patterns
- Error Handling
states:
- id: process
type: llm
transitions:
- when: "${output.error}"
next: handle_error
- next: continue- Retry Logic
states:
- id: process
type: tool
retry:
attempts: 3
delay: 1000
next: next_state- Conditional Flow
states:
- id: process
type: llm
transitions:
- when: "${output.value > 0}"
next: positive
- when: "${output.value < 0}"
next: negative
- next: zeroNext Steps
- Learn about State Types
- Explore Tool Definitions
- Read about MCP Integration
Last updated on