Skip to main content

Instructions

Enhance your AI agent's capabilities by adding dynamic, interactive responses with callbacks and delays during tool execution. This feature allows you to create more engaging user experiences with real-time feedback and controlled execution flow.

Overview

Instructions enable you to:

  • Execute custom JavaScript functions during tool execution
  • Add controlled delays for better user experience
  • Provide real-time progress updates
  • Create multi-step interactive workflows

Implementation

Define your tool with instructions

copilot.tools.add([
{
name: "data_processor",
description: "Process data with real-time progress updates",
timeout: 15000,

handler: () => {
return {
success: true,
message: "Data processing initiated",

_agent_instructions: [
{
type: "callback",
options: {
name: "show_processing_start",
args: ["Starting data analysis..."]
}
},
{
type: "delay",
options: {
duration: 1000
}
},
{
type: "callback",
options: {
name: "update_progress",
args: ["Processing step 1 of 3..."]
}
},
{
type: "delay",
options: {
duration: 2000
}
},
{
type: "callback",
options: {
name: "show_completion",
args: ["Data processing completed successfully!"]
}
}
]
};
}
}
]);

Register callback handlers

// Progress indicator callback
copilot.callbacks.add({
name: "show_processing_start",
handler: (message) => {
console.log("Processing started:", message);
// Update UI to show loading state
updateProgressUI("start", message);
}
});

// Progress update callback
copilot.callbacks.add({
name: "update_progress",
handler: (message) => {
console.log("Progress update:", message);
// Update progress bar or status
updateProgressUI("update", message);
}
});

// Completion callback
copilot.callbacks.add({
name: "show_completion",
handler: (message) => {
console.log("Processing completed:", message);
// Show success state
updateProgressUI("complete", message);
}
});

Instruction Types

Callback Instructions

Execute custom JavaScript functions during tool execution to update UI, show progress, or perform side effects.

{
type: "callback",
options: {
name: "your_callback_function",
args: ["parameter1", "parameter2"]
}
}

Parameters:

  • name: The callback function name (must match registered handler)
  • args: Array of arguments passed to the callback function

Delay Instructions

Pause execution for a specified duration to create natural conversation flow or simulate processing time.

Parameters:

  • duration: Time to wait in milliseconds
{
type: "delay",
options: {
duration: 2000 // milliseconds
}
}

Quick Reply Instructions

Automatically send a predefined message as a quick reply option during tool execution.

{
type: "quick_reply",
options: {
value: "Show Details of move-on-restart-oversize-men-s-tshirt-7868711"
}
}

Redirect users to a specific URL during tool execution.

{
type: "navigate",
options: {
value: "https://fynd.hostx5.de/product/move-on-restart-oversize-men-s-tshirt-7868711"
}
}

Parameters:

  • value: The URL to navigate to

Best Practices

User Experience

  • Use delays sparingly to avoid frustrating users
  • Provide meaningful progress updates
  • Keep callback execution time minimal

Error Handling

copilot.callbacks.add({
name: "handle_error",
handler: (errorMessage) => {
console.error("Tool execution error:", errorMessage);
showErrorMessage(errorMessage);
}
});

Performance

  • Limit the number of instructions per tool
  • Use appropriate timeout values
  • Clean up resources in callback handlers

Common Use Cases

Progress Indicators

// Show step-by-step progress
{
type: "callback",
options: {
name: "update_progress_bar",
args: ["Step 1/5: Initializing..."]
}
}

User Feedback

// Provide real-time status updates
{
type: "callback",
options: {
name: "show_notification",
args: ["Data validation completed"]
}
}

Sequential Operations

// Chain multiple operations with delays
[
{ type: "callback", options: { name: "start_operation", args: [] } },
{ type: "delay", options: { duration: 1000 } },
{ type: "callback", options: { name: "complete_operation", args: [] } }
]

Interactive Workflows

// Create multi-step processes
[
{ type: "callback", options: { name: "show_step_1", args: [] } },
{ type: "delay", options: { duration: 500 } },
{ type: "callback", options: { name: "show_step_2", args: [] } },
{ type: "delay", options: { duration: 500 } },
{ type: "callback", options: { name: "show_final_result", args: [] } }
]

Troubleshooting

Common Issues and Solutions

Callbacks not executing:

  • Verify callback names match exactly between tool definition and registration
  • Check browser console for JavaScript errors
  • Ensure callback handlers are registered before tool execution

Timeout errors:

  • Increase the tool's timeout value
  • Reduce the number of instructions or delay durations
  • Optimize callback handler performance

UI not updating:

  • Ensure callback handlers properly update DOM elements
  • Check for CSS conflicts or z-index issues
  • Verify event listeners are properly attached

Memory leaks:

  • Clean up event listeners in callback handlers
  • Avoid creating circular references
  • Use proper cleanup functions for long-running operations

Debug Mode

Enable debug logging to troubleshoot instruction execution:

// Enable debug mode
copilot.debug = true;

// Check instruction execution in console
copilot.callbacks.add({
name: "debug_callback",
handler: (message) => {
console.log("Debug callback executed:", message);
}
});
Kaily logo

More than just a virtual AI assistant, Kaily brings interactive, human-like conversations to your website. Easy to create, easier to customize, and the easiest to deploy—no code required. Let Kaily enhance your user experience using the information you provide.

Is this page useful?