Task Management

Track work items with an in-memory task store and agent-accessible task tools.

The task system lets agents create and manage structured work items. When enabled, four tools are added (TaskCreate, TaskList, TaskGet, TaskUpdate) that the agent uses to decompose work into trackable steps.

Why opt-in?

Task tools are disabled by default because each additional tool increases the token cost of every request and can influence model behavior — the agent may start creating and tracking tasks even for simple one-shot work. Keeping tasks opt-in lets you pay for the overhead only when you actually need structured work tracking.

Configuration

import { Agent } from "noumen";
import { LocalSandbox } from "noumen/local";

const code = new Agent({
  provider,
  sandbox: LocalSandbox({ cwd: "/my/project" }),
  options: {
    enableTasks: true,
  },
});

Task tools

ToolDescription
TaskCreateCreate a new task with a subject and optional description.
TaskListList all tasks with current status and dependencies.
TaskGetGet details of a specific task by ID.
TaskUpdateUpdate a task's status, description, owner, or dependencies.

TaskStore

The TaskStore is an in-memory store that tracks tasks. It is created automatically when enableTasks is true, and can also be used programmatically:

import { TaskStore } from "noumen";

const store = new TaskStore();
const task = store.create({ subject: "Implement auth module" });
store.update(task.id, { status: "in_progress" });
const all = store.list();

Task type

interface Task {
  id: string;
  subject: string;
  description?: string;
  status: "pending" | "in_progress" | "completed";
  owner?: string;
  blocks: string[];     // task IDs this task blocks
  blockedBy: string[];  // task IDs that must complete first
  createdAt: string;
  updatedAt: string;
}

Dependencies

Tasks support dependency tracking through blocks and blockedBy fields. The agent can use these to model task ordering:

store.update(taskB.id, { blockedBy: [taskA.id] });