Skip to content

Enhancement: OpenClaw plugin — expose full task CRUD via tools/commands #7

@Tweakzx

Description

@Tweakzx

Problem

The current OpenClaw plugin (plugins/openclaw-agentflow/index.ts) exposes limited capabilities:

Commands:

  • agentflow.run — run one task (via mock adapter)
  • agentflow.help — show usage guidance

Tools:

  • agentflow_status — read board summary
  • agentflow_capabilities — show capability map

Missing:

  • No task creation tool/command
  • No task status update tool/command
  • No run history query tool
  • No audit trail query tool
  • No way to specify a real adapter from within the plugin

This means the OpenClaw agent cannot fully manage AgentFlow tasks through the plugin — it still needs to shell out to CLI or call HTTP endpoints directly.

Suggested Additions

New Tools

Tool ID Description Input
agentflow_create_task Create a task in a project { project, title, description?, priority?, impact?, effort?, source?, external_id? }
agentflow_move_task Move a task to a new status { task_id, to_status, note? }
agentflow_run_task Trigger a run on a specific task { task_id, adapter?, agent? }
agentflow_task_detail Get full task detail with runs and history { task_id }
agentflow_recent_runs List recent runs for a project { project?, limit? }
agentflow_audit Query audit trail { project?, limit? }

New Commands

Command ID Description Input
agentflow.create Create a task { project, title, ... }
agentflow.move Move task status { task_id, to_status }
agentflow.detail Show task detail { task_id }
agentflow.audit Show audit trail { project?, limit? }

Implementation Notes

The plugin already has runAgentflow() helper that calls the CLI. The new tools/commands follow the same pattern:

api.registerTool?.({
  id: "agentflow_create_task",
  description: "Create a task in AgentFlow",
  inputSchema: { type: "object", properties: {
    project: { type: "string" },
    title: { type: "string" },
    description: { type: "string" },
    priority: { type: "number" },
    impact: { type: "number" },
    effort: { type: "number" },
    source: { type: "string" },
    external_id: { type: "string" },
  }, required: ["project", "title"] },
  async run(input) {
    const args = ["add-task", "--project", input.project, "--title", input.title];
    if (input.description) args.push("--description", input.description);
    if (input.priority) args.push("--priority", String(input.priority));
    // ... etc
    const result = await runAgentflow(args);
    return { content: result.stdout };
  }
});

Why this matters

Depends on

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions