function taskStateLifecycleFigure(host) { ensureStyles(); var boxes = [ { cls: 'l21x', x: 30, y: 24, w: 150, h: 44, tx: 105, ty: 51, label: 'input_required' }, { cls: 'l21x', x: 30, y: 188, w: 150, h: 44, tx: 105, ty: 215, label: 'working' }, { cls: 'l21x l21f', x: 380, y: 20, w: 150, h: 40, tx: 455, ty: 44, label: 'completed' }, { cls: 'l21x l21f', x: 380, y: 110, w: 150, h: 40, tx: 455, ty: 134, label: 'cancelled' }, { cls: 'l21x l21f', x: 380, y: 200, w: 150, h: 40, tx: 455, ty: 224, label: 'failed' } ]; var parts = []; var i; for (i = 0; i < boxes.length; i++) { var b = boxes[i]; parts.push(''); parts.push('' + b.label + ''); } var edges = [ ['95', '185', '95', '71', '6', '105', 'needs input'], ['118', '71', '118', '185', '132', '155', 'tasks/update'], ['183', '193', '377', '42', '250', '128', 'work finishes'], ['183', '210', '377', '130', '250', '169', 'tasks/cancel'], ['183', '227', '377', '218', '250', '208', 'protocol error'] ]; for (i = 0; i < edges.length; i++) { var e = edges[i]; parts.push(''); parts.push('' + e[6] + ''); } var shell = document.createElement('div'); shell.className = 'mf-shell'; shell.innerHTML = [ '
Task Status Lifecycle working pauses at input_required until tasks/update resumes it, then ends in one terminal status
', '
', '', '', '', parts.join(''), '', '
', '
Every tasks/get poll repeats a working snapshot until a terminal status arrives; that self-loop is not drawn. A cancel or a protocol error can also end a task directly from input_required. SEP-2663 inlines the completed result and the failed error into this same tasks/get response; there is no separate tasks/result call.
' ].join(''); host.appendChild(shell); } // register as: mcpa-21-task-states