plugin.json
- name
- goals
- version
- 0.1.6
- extensions
- dev.sailry.platform
plugin.json
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "goals",
"version": "0.1.6",
"extensions": {
"dev.sailry.platform": {
"api_version": "v1",
"storage": {
"collections": [
{
"scope": "conversation",
"key": "goal",
"schema": {
"type": "object",
"required": [
"id",
"description",
"state"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$"
},
"description": {
"type": "string",
"minLength": 1
},
"state": {
"type": "string",
"enum": [
"active",
"paused",
"completed",
"blocked",
"failed"
]
},
"after": {
"type": [
"string",
"null"
],
"default": null,
"pattern": "^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$"
}
}
}
}
]
},
"actions": [
"storage.read",
"storage.write",
"conversation.read",
"conversation.control"
],
"desktop": {
"ui_entry": "dev.sailry.platform/desktop/main.js",
"resources": [
"dev.sailry.platform/desktop/main.js",
"dev.sailry.platform/desktop/view.js",
"dev.sailry.platform/desktop/locales.js"
]
},
"ui": [
{
"id": "goal",
"slot": "commands",
"kind": "button",
"command": {
"name": "goal",
"kind": "message"
},
"label": {
"label": "Goal",
"locales": {
"zh-CN": "目标"
}
},
"icon": "reicon:ui/target",
"handler": "command",
"order": 20
},
{
"id": "status",
"intent": "goal",
"slot": "status",
"kind": "popover",
"label": {
"label": "Goal",
"locales": {
"zh-CN": "目标"
}
},
"icon": "reicon:ui/target",
"handler": "status",
"order": 30
}
],
"tools": [
{
"name": "create_goal",
"presentation": "content",
"handler": {
"name": "create",
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string",
"minLength": 1
}
},
"required": [
"description"
]
}
},
"description": "Start persistent goal execution only when the user explicitly requests it. One unfinished goal is allowed per session. The session keeps working until completion or a stop, under existing permissions. Returns the goal identifier and revision.",
"display": {
"label": "Create goal",
"locales": {
"zh-CN": "创建目标",
"zh-TW": "建立目標",
"ja": "目標を作成",
"ko": "목표 만들기",
"fr": "Créer un objectif",
"de": "Ziel erstellen",
"es": "Crear objetivo",
"pt-BR": "Criar objetivo",
"ru": "Создать цель",
"en": "Create goal"
},
"icon": "reicon:ui/target"
}
},
{
"name": "get_goal",
"presentation": "content",
"handler": {
"name": "read",
"read_only": true,
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {},
"required": []
}
},
"description": "Read the current objective, state and exact revision. Read before updating. A goal never grants additional authority.",
"display": {
"label": "View goal",
"locales": {
"zh-CN": "查看目标",
"zh-TW": "檢視目標",
"ja": "目標を見る",
"ko": "목표 보기",
"fr": "Voir l’objectif",
"de": "Ziel anzeigen",
"es": "Ver objetivo",
"pt-BR": "Ver objetivo",
"ru": "Показать цель",
"en": "View goal"
},
"icon": "reicon:ui/target"
}
},
{
"name": "update_goal",
"presentation": "content",
"handler": {
"name": "update",
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string",
"minLength": 1
},
"goal_id": {
"type": "string",
"format": "uuid"
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"state": {
"type": "string",
"enum": [
"active",
"completed",
"blocked",
"failed"
]
}
},
"required": [
"description",
"goal_id",
"expected_revision",
"state"
]
}
},
"description": "Update the active goal using its exact identifier and string revision from get_goal. Preserve the objective unless the user changes it. Mark completed only after verification with no required work remaining; a final answer does not complete a goal. Mark blocked or failed when work cannot continue. Do not resume or replace an unfinished goal yourself.",
"display": {
"label": "Update goal",
"locales": {
"zh-CN": "更新目标",
"zh-TW": "更新目標",
"ja": "目標を更新",
"ko": "목표 업데이트",
"fr": "Modifier l’objectif",
"de": "Ziel aktualisieren",
"es": "Actualizar objetivo",
"pt-BR": "Atualizar objetivo",
"ru": "Обновить цель",
"en": "Update goal"
},
"icon": "reicon:ui/target"
}
},
{
"name": "resume_goal",
"presentation": "content",
"handler": {
"name": "resume",
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {
"goal_id": {
"type": "string",
"format": "uuid"
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
},
"required": [
"goal_id",
"expected_revision"
]
}
},
"description": "Resume the inspected paused, blocked or failed goal only when the user explicitly requests resuming it. Use the exact goal identifier and string revision from get_goal. Existing scope and permissions still apply; never undo a Stop yourself.",
"display": {
"label": "Resume goal",
"locales": {
"zh-CN": "继续目标",
"zh-TW": "繼續目標",
"ja": "目標を再開",
"ko": "목표 재개",
"fr": "Reprendre l’objectif",
"de": "Ziel fortsetzen",
"es": "Reanudar objetivo",
"pt-BR": "Retomar objetivo",
"ru": "Продолжить цель",
"en": "Resume goal"
},
"icon": "reicon:ui/target"
}
},
{
"name": "pause_goal",
"presentation": "content",
"handler": {
"name": "pause",
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {
"goal_id": {
"type": "string",
"format": "uuid"
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
},
"required": [
"goal_id",
"expected_revision"
]
}
},
"description": "Pause the inspected goal only when the user requests pausing or stopping it. Use the exact goal identifier and string revision from get_goal. Retain the goal and its conversation history.",
"display": {
"label": "Pause goal",
"locales": {
"zh-CN": "暂停目标",
"zh-TW": "暫停目標",
"ja": "目標を一時停止",
"ko": "목표 일시중지",
"fr": "Suspendre l’objectif",
"de": "Ziel pausieren",
"es": "Pausar objetivo",
"pt-BR": "Pausar objetivo",
"ru": "Приостановить цель",
"en": "Pause goal"
},
"icon": "reicon:ui/target"
}
},
{
"name": "clear_goal",
"presentation": "content",
"handler": {
"name": "clear",
"parameters": {
"type": "object",
"additionalProperties": false,
"properties": {
"goal_id": {
"type": "string",
"format": "uuid"
},
"expected_revision": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
},
"required": [
"goal_id",
"expected_revision"
]
}
},
"description": "Clear the inspected goal only when the user explicitly requests clearing it. Use its exact identifier and string revision from get_goal. This removes that goal and stops its execution, while retaining conversation history. Never clear a goal to replace it yourself.",
"display": {
"label": "Clear goal",
"locales": {
"zh-CN": "清除目标",
"zh-TW": "清除目標",
"ja": "目標を消去",
"ko": "목표 지우기",
"fr": "Effacer l’objectif",
"de": "Ziel löschen",
"es": "Borrar objetivo",
"pt-BR": "Limpar objetivo",
"ru": "Очистить цель",
"en": "Clear goal"
},
"icon": "reicon:ui/target"
}
}
],
"display": {
"label": "Goals",
"locales": {
"zh-CN": "目标"
},
"icon": "reicon:ui/target"
},
"description": {
"label": "Continue until the goal is finished",
"locales": {
"zh-CN": "持续执行直到目标完成"
}
},
"host": {
"entry": "dev.sailry.platform/host/main.js",
"resources": [
"dev.sailry.platform/host/main.js",
"dev.sailry.platform/host/labels.js"
],
"handlers": [
"read",
"create",
"update",
"initialize",
"observe",
"completed",
"control",
"command",
"resume",
"pause",
"clear"
],
"turn": {
"initialize": "initialize",
"before_model": "observe",
"after_turn": "completed"
},
"commands": [
{
"name": "goal",
"handler": "command"
}
],
"read_only": [
"read"
]
},
"continuation_marker": {
"label": "Continue goal",
"locales": {
"zh-CN": "继续执行目标",
"zh-TW": "繼續執行目標",
"ja": "目標を続行",
"ko": "목표 계속 실행",
"de": "Ziel fortsetzen",
"es": "Continuar objetivo",
"fr": "Poursuivre l’objectif",
"pt-BR": "Continuar objetivo",
"ru": "Продолжить цель"
}
},
"category": "automation",
"tint": "amber"
}
}
}
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.
- 5JavaScript files
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- dev.sailry.platformships a directory of files