UNPKG

@agentled/cli

Version:

CLI for Agentled — manage workflows, apps, and knowledge from the command line. Zero context-window cost for AI agents.

97 lines (96 loc) 3.68 kB
{ "name": "Orchestrator: Loop call-workflow over KG", "goal": "Read rows from a KG list, call a child workflow per row to score/process each, persist the results back to KG, then summarize.", "description": "Pattern 11 (orchestrator) wired to a child built from the `child-with-return` scaffold. The KG list is the source of truth; the child encapsulates the per-row logic. Uses `entryConditions.type: \"loop_completion\"` with `onCriteriaFail: \"wait\"` so downstream steps block until every child finishes.", "status": "draft", "context": { "executionInputConfig": { "title": "Orchestrate Scoring", "description": "Score every `new` row in the KG list by calling a child workflow per row.", "runCTALabel": "Run", "allowRegeneration": false, "fields": [ { "name": "source_list_key", "label": "Source KG list key", "type": "text", "required": true }, { "name": "child_workflow_id", "label": "Child workflow id (the scoring workflow)", "type": "text", "required": true } ] } }, "steps": [ { "id": "start", "type": "trigger", "name": "Manual Start", "pipelineStepStartConditions": { "trigger": { "type": "manual" } }, "next": { "stepId": "read-candidates" } }, { "id": "read-candidates", "type": "appAction", "name": "Read Candidates from KG", "app": { "id": "kg", "actionId": "kg.read-list", "source": "native" }, "stepInputData": { "listKey": "{{input.source_list_key}}", "status": "new", "limit": "50" }, "next": { "stepId": "call-child" } }, { "id": "call-child", "type": "appAction", "name": "Score Row (child workflow)", "loopConfig": { "source": "executionContent", "config": { "stepId": "read-candidates", "field": "listEntries" }, "ItemAlias": "row" }, "app": { "id": "agentled", "actionId": "agentled.call-workflow", "source": "native" }, "stepInputData": { "workflowId": "{{input.child_workflow_id}}", "executionInputData": "{\"entity_id\": \"{{row.id}}\", \"entity_url\": \"{{row.url}}\"}", "timeoutMinutes": "30" }, "next": { "stepId": "persist-scores" } }, { "id": "persist-scores", "type": "appAction", "name": "Write Scores Back to KG", "app": { "id": "kg", "actionId": "kg.update-rows", "source": "native" }, "entryConditions": { "onCriteriaFail": "wait", "conditionText": "Wait for every child call to complete before flipping status.", "criteria": [ { "type": "loop_completion", "stepId": "call-child", "operator": "==", "value": true } ] }, "stepInputData": { "listKey": "{{input.source_list_key}}", "rowIds": "{{steps.call-child.rowIds}}", "fieldUpdates": "{{steps.call-child.returnData}}", "status": "scored" }, "next": { "stepId": "summarize" } }, { "id": "summarize", "type": "aiAction", "name": "Summarize Run", "pipelineStepPrompt": { "template": "Summarize this orchestration run.\n\nRows processed: {{steps.read-candidates.count}}\nResults: {{steps.call-child.returnData}}\n\nReport totals, top-3 by score, and anything that looked anomalous.", "responseStructure": { "totals": "object — counts by decision bucket", "top": "array — top 3 rows", "notes": "string" } }, "creditCost": 5, "next": { "stepId": "done" } }, { "id": "done", "type": "milestone", "name": "Orchestration Done" } ] }