import {
  CopilotTask,
  useCopilotContext
} from "@copilotkit/react-core";

const task = new CopilotTask({
  instructions: "Set a random message",
  actions: [
    {
    name: "setMessage",
    description: "Set the message.",
    argumentAnnotations: [
      {
        name: "message",
        type: "string",
        description:
          "A message to display.",
        required: true,
      },
    ],

    implementation: async (message) => {
      // ...
    },
  }
  ]
});
const context = useCopilotContext();
await task.run(context);

This class is used to execute one-off tasks, for example on button press. It can use the context available via useCopilotReadable and the actions provided by useCopilotAction, or you can provide your own context and actions.

import {
  CopilotTask,
  useCopilotContext
} from "@copilotkit/react-core";

const task = new CopilotTask({
  instructions: "Set a random message",
  actions: [
    {
    name: "setMessage",
    description: "Set the message.",
    argumentAnnotations: [
      {
        name: "message",
        type: "string",
        description:
          "A message to display.",
        required: true,
      },
    ],

    implementation: async (message) => {
      // ...
    },
  }
  ]
});
const context = useCopilotContext();
await task.run(context);

In the simplest case, use CopilotTask in the context of your app by giving it instructions on what to do.

import {
    CopilotTask,
    useCopilotContext
  } from "@copilotkit/react-core";
 
const randomSlideTask = new CopilotTask({
  instructions: "Make a random slide",
});
 
const context = useCopilotContext();
 
return (
  <button onClick={() => randomSlideTask.run(context)}>
    Make a random slide
  </button>
);

Have a look at the Presentation example for a more complete example.

It’s also possible to provide your own context and actions. In addition, you can specify to ignore useCopilotReadable and useCopilotAction.

import {
    CopilotTask,
    useCopilotContext
  } from "@copilotkit/react-core";
 
const standaloneTask = new CopilotTask({
  instructions: "Do something standalone",
  data: [...],
  actions: [...],
  includeCopilotReadable: false, // Don't use current context
  includeCopilotActions: false, // Don't use current actions
});
 
const context = useCopilotContext();
 
standaloneTask.run(context);

Constructor

instructions
string
required

The instructions to be given to the assistant.

actions
FrontendAction<any>[]

An array of action definitions that can be called.

includeCopilotReadable
boolean

Whether to include the copilot readable context in the task.

includeCopilotActions
boolean

Whether to include actions defined via useCopilotAction in the task.

run(context: CopilotContextParams, data?: T)

Run the task.

context
CopilotContextParams
required

The CopilotContext to use for the task. Use useCopilotContext to obtain the current context.

data
T

The data to use for the task.