Enhance documentation
enhance-dev comment react
Set or remove one emoji reaction on a comment message.
enhance-dev comment react
enhance-dev comment react [options]
Arguments
This command takes no positional arguments.
Options
| Option | Required | Default | Meaning |
|---|---|---|---|
--canvas-id <string> | Yes | None | Canvas id, from enhance canvas list. |
--thread-id <string> | Yes | None | Comment thread id returned by comment start or enhance comment list. |
--message-id <string> | Yes | None | Comment message id returned by comment writes or enhance comment list. |
--emoji <string> | Yes | None | Single emoji to add to or remove from the comment message. |
--reacted [boolean] | No | false | Target state: true adds this person’s reaction; false removes it. |
--json <json> | No | None | Complete procedure input as JSON; do not combine it with field flags. |
--client-token <uuid> | No | None | Stable UUID to reuse when retrying the exact same mutation. |
Input
This command presents the capability comment.react. It has write effect and single idempotency.
Show complete input JSON Schema
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"canvasId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"messageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"emoji":{"type":"string","minLength":1,"maxLength":16},"reacted":{"type":"boolean"}},"required":["canvasId","threadId","messageId","emoji","reacted"]}
Output
This command writes JSON records to standard output. Returns a typed comment.react result from the Enhance API without transport-specific prose.
Show complete output JSON Schema
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"threadId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"canvasId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"anchor":{"oneOf":[{"type":"object","properties":{"on":{"type":"string","const":"canvas"},"point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"pageId":{"type":"string","minLength":1,"maxLength":256}},"required":["on","point"],"additionalProperties":false},{"type":"object","properties":{"on":{"type":"string","const":"node"},"nodeId":{"type":"string","minLength":1},"point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"element":{"type":"null"}},"required":["on","nodeId","point","element"],"additionalProperties":false},{"type":"object","properties":{"on":{"type":"string","const":"screen"},"nodeId":{"type":"string","minLength":1},"screenId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"element":{"anyOf":[{"type":"object","properties":{"selector":{"type":"string","minLength":1},"tagName":{"type":"string","minLength":1},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"object","properties":{"file":{"type":"string","minLength":1},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["file","line"],"additionalProperties":false},{"type":"null"}]}},"required":["selector","tagName","label","source"],"additionalProperties":false},{"type":"null"}]},"target":{"oneOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"kind":{"type":"string","const":"element"},"locator":{"type":"object","properties":{"selector":{"type":"string","minLength":1},"tagName":{"type":"string","minLength":1},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"object","properties":{"file":{"type":"string","minLength":1},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["file","line"],"additionalProperties":false},{"type":"null"}]},"role":{"type":"string","minLength":1}},"required":["selector","tagName","label","source"],"additionalProperties":false},"attachment":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1}},"required":["x","y"],"additionalProperties":false},"fallbackBounds":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","minimum":0,"maximum":1},"height":{"type":"number","minimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["version","kind","locator","attachment","fallbackBounds"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","const":1},"kind":{"type":"string","const":"text"},"root":{"type":"object","properties":{"selector":{"type":"string","minLength":1},"tagName":{"type":"string","minLength":1},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"object","properties":{"file":{"type":"string","minLength":1},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["file","line"],"additionalProperties":false},{"type":"null"}]},"role":{"type":"string","minLength":1}},"required":["selector","tagName","label","source"],"additionalProperties":false},"quote":{"type":"object","properties":{"exact":{"type":"string","minLength":1},"prefix":{"type":"string"},"suffix":{"type":"string"}},"required":["exact","prefix","suffix"],"additionalProperties":false},"range":{"type":"object","properties":{"start":{"type":"object","properties":{"path":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991}},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["path","offset"],"additionalProperties":false},"end":{"type":"object","properties":{"path":{"type":"array","items":{"type":"integer","minimum":0,"maximum":9007199254740991}},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["path","offset"],"additionalProperties":false}},"required":["start","end"],"additionalProperties":false},"attachment":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1}},"required":["x","y"],"additionalProperties":false},"fallbackBounds":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","minimum":0,"maximum":1},"height":{"type":"number","minimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["version","kind","root","quote","range","attachment","fallbackBounds"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","const":1},"kind":{"type":"string","const":"elements"},"members":{"minItems":2,"type":"array","items":{"type":"object","properties":{"selector":{"type":"string","minLength":1},"tagName":{"type":"string","minLength":1},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"object","properties":{"file":{"type":"string","minLength":1},"line":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["file","line"],"additionalProperties":false},{"type":"null"}]},"role":{"type":"string","minLength":1}},"required":["selector","tagName","label","source"],"additionalProperties":false}},"truncated":{"type":"boolean"},"attachment":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1}},"required":["x","y"],"additionalProperties":false},"fallbackBounds":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","minimum":0,"maximum":1},"height":{"type":"number","minimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["version","kind","members","truncated","attachment","fallbackBounds"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"number","const":1},"kind":{"type":"string","const":"area"},"bounds":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","minimum":0,"maximum":1},"height":{"type":"number","minimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false},"attachment":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1}},"required":["x","y"],"additionalProperties":false}},"required":["version","kind","bounds","attachment"],"additionalProperties":false}]}},"required":["on","nodeId","screenId","point","element"],"additionalProperties":false}]},"author":{"type":"object","properties":{"kind":{"type":"string","enum":["person","agent"]},"personId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"initials":{"type":"string","minLength":1,"maxLength":4},"avatarUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"tokenLabel":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["kind","personId","name","initials","avatarUrl","tokenLabel"],"additionalProperties":false},"messages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"messageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"seq":{"type":"integer","minimum":1,"maximum":9007199254740991},"body":{"type":"string","minLength":1},"isDeleted":{"type":"boolean"},"author":{"type":"object","properties":{"kind":{"type":"string","enum":["person","agent"]},"personId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"initials":{"type":"string","minLength":1,"maxLength":4},"avatarUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"tokenLabel":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["kind","personId","name","initials","avatarUrl","tokenLabel"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"editedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"mentions":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["personId","name"],"additionalProperties":false}},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","minLength":1,"maxLength":16},"people":{"minItems":1,"type":"array","items":{"type":"object","properties":{"personId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["personId","name"],"additionalProperties":false}}},"required":["emoji","people"],"additionalProperties":false}}},"required":["messageId","seq","body","isDeleted","author","createdAt","editedAt","mentions","reactions"],"additionalProperties":false}},"messageCount":{"type":"integer","minimum":1,"maximum":9007199254740991},"hasMoreMessages":{"type":"boolean"},"isResolved":{"type":"boolean"},"resolvedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"resolvedBy":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["person","agent"]},"personId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"tokenLabel":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["kind","personId","name","tokenLabel"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"lastMessageAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["revision","threadId","canvasId","anchor","author","messages","messageCount","hasMoreMessages","isResolved","resolvedAt","resolvedBy","createdAt","lastMessageAt"],"additionalProperties":false}
Examples
enhance-dev comment react --canvas-id <string> --thread-id <string> --message-id <string> --emoji <string>
Show example input
{
"canvasId": "00000000-0000-4000-8000-000000000010",
"threadId": "00000000-0000-4000-8000-000000000010",
"messageId": "00000000-0000-4000-8000-000000000010",
"emoji": "x",
"reacted": false
}
Show example output
{
"revision": 1,
"threadId": "00000000-0000-4000-8000-000000000010",
"canvasId": "00000000-0000-4000-8000-000000000010",
"anchor": {
"on": "canvas",
"point": {
"x": 0,
"y": 0
}
},
"author": {
"kind": "person",
"personId": "00000000-0000-4000-8000-000000000010",
"name": "x",
"initials": "x",
"avatarUrl": "x",
"tokenLabel": "x"
},
"messages": [
{
"messageId": "00000000-0000-4000-8000-000000000010",
"seq": 1,
"body": "x",
"isDeleted": false,
"author": {
"kind": "person",
"personId": "00000000-0000-4000-8000-000000000010",
"name": "x",
"initials": "x",
"avatarUrl": "x",
"tokenLabel": "x"
},
"createdAt": "2026-08-10T00:00:00.000Z",
"editedAt": "2026-08-10T00:00:00.000Z",
"mentions": [],
"reactions": []
}
],
"messageCount": 1,
"hasMoreMessages": false,
"isResolved": false,
"resolvedAt": "2026-08-10T00:00:00.000Z",
"resolvedBy": {
"kind": "person",
"personId": "00000000-0000-4000-8000-000000000010",
"name": "x",
"tokenLabel": "x"
},
"createdAt": "2026-08-10T00:00:00.000Z",
"lastMessageAt": "2026-08-10T00:00:00.000Z"
}
Exit behaviour
| Exit code | Meaning |
|---|---|
0 | The command succeeded. |
1 | The command failed for another reason (INTERNAL). A write may have an unknown outcome. |
2 | The command line was malformed. Nothing ran. |
3 | The API refused the input (BAD_REQUEST). |
4 | The credential is missing or expired (UNAUTHORIZED). |
5 | The API refused the request (FORBIDDEN, NOT_FOUND, CONFLICT, RATE_LIMITED). |
6 | A batch finished only in part. Retry with the same --client-token. |
Versions
Minimum tested versions: Enhance CLI and MCP runtime 0.1.40, plugin 1.0.38, Node.js 24. No older floor is published.