Skip to content

bang404/goal

v2.2.1MIT

Persistent goal execution with an autonomous continuation loop.

MCP servers

Declared configuration, as published in mcp.json. The directory shows indexed content; it never connects to or executes these servers.

goalstdio
{
  "type": "stdio",
  "command": "node",
  "args": [
    "${PLUGIN_ROOT}/bin/goal-mcp.mjs"
  ]
}

What this package declares

The files a client reads when it loads this plugin, exactly as this revision carries them.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "goal",
  "version": "2.2.1",
  "description": "Persistent goal execution with an autonomous continuation loop.",
  "license": "MIT",
  "repository": "https://github.com/BANG404/openagent-goal",
  "keywords": ["openagent", "goal", "checkpoint", "automation"],
  "extensions": {
    "openagent": {
      "capabilities": ["command", "mcp", "automation"],
      "commands": [
        {
          "id": "goal",
          "label": "Goal",
          "description": "View, set, edit, pause, resume or clear a persistent objective.",
          "argument": "optional_text",
          "command": "bin/goal-command.mjs",
          "timeout_secs": 30
        },
        {
          "id": "cancel",
          "label": "Cancel Goal",
          "description": "Stop the Goal on this branch and preserve its progress.",
          "argument": "none",
          "command": "bin/goal-cancel.mjs",
          "timeout_secs": 30
        }
      ],
      "i18n": {
        "supported_locales": ["en", "zh"],
        "default_locale": "en",
        "translations": {
          "en": {
            "display_name": "Goal",
            "description": "Persistent goal execution with an autonomous continuation loop.",
            "commands.goal.label": "Goal",
            "commands.goal.description": "View, set, edit, pause, resume or clear a persistent objective.",
            "commands.cancel.label": "Cancel Goal",
            "commands.cancel.description": "Stop the Goal on this branch and preserve its progress.",
            "notice.objectiveAction": "{action} does not accept an objective",
            "notice.objectiveLength": "Goal objective must contain 1–4000 characters",
            "notice.context": "conversation and branch context are required",
            "notice.unknownAction": "Unknown Goal action: {action}",
            "notice.runId": "Read the current Goal and pass its run_id before changing it",
            "notice.runMissing": "No Goal matches this branch and run token",
            "notice.mcpRunMissing": "No Goal run matches this conversation, branch, and run token",
            "notice.mcpContext": "OpenAgent did not provide a conversation context",
            "notice.goalMissing": "No Goal exists on this branch; start /goal <objective>",
            "notice.resumeStatus": "Cannot resume a {status} Goal; set a new objective",
            "notice.editStatus": "Cannot edit a {status} Goal; set a new objective",
            "notice.pauseStatus": "Cannot pause a {status} Goal",
            "notice.dataMissing": "PLUGIN_DATA is not set, so this package has nowhere to keep its goal state. OpenAgent exports it as the package's own writable directory; set it to a writable empty directory to run this package outside OpenAgent.",
            "notice.busy": "Goal state is busy; retry the operation",
            "notice.closedGoal": "This Goal is {status}; use the goal lifecycle tool before updating progress",
            "notice.updateStatus": "update_goal status must be one of {allowed}, got '{status}'",
            "notice.todoObject": "update_goal todos[{index}] must be an object",
            "notice.todoTask": "update_goal todos[{index}] requires a non-empty 'task' string",
            "notice.todoStatus": "update_goal todos[{index}].status must be one of {allowed}, got '{status}'",
            "notice.unknownTool": "Unknown tool: {name}",
            "notice.methodMissing": "Method not found: {method}",
            "notice.wakeFailed": "Could not schedule a Goal continuation for conversation {conversation} ({code})",
            "notice.hookPayload": "Could not read the Goal hook payload",
            "notice.unexpected": "Goal operation failed ({code})"
          },
          "zh": {
            "display_name": "Goal",
            "description": "通过自主续行循环持续执行目标任务。",
            "commands.goal.label": "目标",
            "commands.goal.description": "查看、设置、编辑、暂停、恢复或清除持续执行的目标。",
            "commands.cancel.label": "取消目标",
            "commands.cancel.description": "停止当前分支上的目标任务并保留进度。",
            "notice.objectiveAction": "{action} 操作不接受目标文本",
            "notice.objectiveLength": "目标文本长度必须为 1 至 4000 个字符",
            "notice.context": "必须提供会话和分支上下文",
            "notice.unknownAction": "未知的 Goal 操作:{action}",
            "notice.runId": "请先查看当前 Goal,并在修改前传入其 run_id",
            "notice.runMissing": "此分支上没有与该运行令牌匹配的 Goal",
            "notice.mcpRunMissing": "此会话分支中没有与该运行令牌匹配的 Goal",
            "notice.mcpContext": "OpenAgent 未提供会话上下文",
            "notice.goalMissing": "此分支上没有 Goal;请运行 /goal <目标内容> 创建一个",
            "notice.resumeStatus": "无法恢复状态为 {status} 的 Goal;请设置新目标",
            "notice.editStatus": "无法编辑状态为 {status} 的 Goal;请设置新目标",
            "notice.pauseStatus": "无法暂停状态为 {status} 的 Goal",
            "notice.dataMissing": "未设置 PLUGIN_DATA,无法保存 Goal 状态。OpenAgent 会将此变量设为插件专用的可写目录;若要在 OpenAgent 外运行,请将其设为一个可写的空目录。",
            "notice.busy": "Goal 状态正忙,请稍后重试",
            "notice.closedGoal": "此 Goal 已处于 {status} 状态;请先使用 Goal 生命周期工具,再更新进度",
            "notice.updateStatus": "update_goal 的 status 必须是 {allowed} 之一,当前值为 '{status}'",
            "notice.todoObject": "update_goal 的 todos[{index}] 必须是对象",
            "notice.todoTask": "update_goal 的 todos[{index}] 必须包含非空的 task 字符串",
            "notice.todoStatus": "update_goal 的 todos[{index}].status 必须是 {allowed} 之一,当前值为 '{status}'",
            "notice.unknownTool": "未知工具:{name}",
            "notice.methodMissing": "找不到方法:{method}",
            "notice.wakeFailed": "无法为会话 {conversation} 安排 Goal 续行({code})",
            "notice.hookPayload": "无法读取 Goal 钩子请求内容",
            "notice.unexpected": "Goal 操作失败({code})"
          }
        }
      },
      "automation": [
        {
          "id": "continue",
          "event": "stop",
          "command": "bin/goal-hook.mjs",
          "timeout_secs": 30
        }
      ]
    }
  }
}

What else this package ships

These files come with the package and this site does not publish them. They are listed so you know what is there before you install it.

  • LICENSE
View on GitHub

Client extensions

Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.

  • openagent