@agentled/cli
Version:
CLI for Agentled — manage workflows, apps, and knowledge from the command line. Zero context-window cost for AI agents.
135 lines (134 loc) • 5.42 kB
JSON
{
"_scaffold": "funnel-orchestrator",
"_description": "Scheduled KG funnel coordinator: read new rows, call child scoring workflow, read qualified rows, queue outreach workflow, compute KPIs, and finish with a digest.",
"name": "Scheduled Funnel Orchestrator",
"goal": "Run a recurring funnel pass across already-working child workflows and report what moved.",
"description": "Use after sourcing, scoring, contact discovery, and outreach workflows have each passed manual validation.",
"status": "draft",
"context": {
"executionInputConfig": {
"title": "Run Funnel",
"description": "Manual override for the scheduled orchestrator.",
"runCTALabel": "Run funnel",
"fields": [
{ "name": "source_list_key", "label": "Source list key", "type": "text", "required": true, "defaultValue": "leads", "description": "Knowledge list key (e.g. \"leads\", \"startups\")." },
{ "name": "new_status", "label": "New status", "type": "text", "required": true, "defaultValue": "new" },
{ "name": "qualified_status", "label": "Qualified status", "type": "text", "required": true, "defaultValue": "qualified" },
{ "name": "score_workflow_id", "label": "Scoring workflow ID", "type": "text", "required": true, "description": "Workflow ID for the child scoring workflow." },
{ "name": "outreach_workflow_id", "label": "Outreach workflow ID", "type": "text", "required": true, "description": "Workflow ID for the child outreach workflow." }
]
}
},
"steps": [
{
"id": "start",
"type": "trigger",
"name": "Scheduled funnel run",
"pipelineStepStartConditions": {
"trigger": {
"type": "schedule",
"description": "Run weekly.",
"config": { "frequency": "weekly", "dayOfWeek": "monday", "time": "09:00" }
}
},
"next": { "stepId": "read-new" }
},
{
"id": "read-new",
"type": "appAction",
"name": "Read new rows",
"app": { "id": "kg", "actionId": "kg.read-list", "source": "native" },
"stepInputData": {
"listKey": "{{input.source_list_key}}",
"status": "{{input.new_status || 'new'}}",
"limit": "25"
},
"next": { "stepId": "score-rows" }
},
{
"id": "score-rows",
"type": "appAction",
"name": "Run scoring workflow",
"app": { "id": "agentled", "actionId": "agentled.call-workflow", "source": "native" },
"stepInputData": {
"workflowId": "{{input.score_workflow_id}}",
"executionInputData": "{\"row\": {{newRow}}, \"listKey\": \"{{input.source_list_key}}\"}",
"timeoutMinutes": "20"
},
"loopConfig": {
"source": "executionContent",
"config": { "stepId": "read-new", "field": "listEntries" },
"ItemAlias": "newRow",
"loopCompletion": { "criteria": "all_items_processed" }
},
"creditCost": 0,
"next": { "stepId": "read-qualified" }
},
{
"id": "read-qualified",
"type": "appAction",
"name": "Read qualified rows",
"app": { "id": "kg", "actionId": "kg.read-list", "source": "native" },
"stepInputData": {
"listKey": "{{input.source_list_key}}",
"status": "{{input.qualified_status || 'qualified'}}",
"limit": "25"
},
"entryConditions": {
"onCriteriaFail": "wait",
"conditionText": "Wait for scoring child workflows to complete.",
"criteria": [
{ "type": "loop_completion", "stepId": "score-rows", "operator": "==", "value": true }
]
},
"next": { "stepId": "queue-outreach" }
},
{
"id": "queue-outreach",
"type": "appAction",
"name": "Queue outreach workflow",
"app": { "id": "agentled", "actionId": "agentled.start-workflow", "source": "native" },
"stepInputData": {
"workflowId": "{{input.outreach_workflow_id}}",
"executionInputData": "{\"row\": {{qualifiedRow}}, \"listKey\": \"{{input.source_list_key}}\"}"
},
"entryConditions": {
"onCriteriaFail": "skip",
"conditionText": "Skip outreach if no qualified rows are available.",
"criteria": [
{ "variable": "{{steps.read-qualified.count}}", "operator": ">", "value": 0 }
]
},
"loopConfig": {
"source": "executionContent",
"config": { "stepId": "read-qualified", "field": "listEntries" },
"ItemAlias": "qualifiedRow",
"loopCompletion": { "criteria": "all_items_processed" }
},
"creditCost": 0,
"next": { "stepId": "summarize-run" }
},
{
"id": "summarize-run",
"type": "aiAction",
"name": "Summarize run",
"pipelineStepPrompt": {
"template": "Create a concise internal funnel digest.\n\nNew rows read: {{steps.read-new.count}}\nQualified rows read: {{steps.read-qualified.count}}\nScoring results: {{steps.score-rows}}\nOutreach starts: {{steps.queue-outreach}}\n\nReturn JSON only.",
"responseStructure": {
"summary": "string",
"newCount": "number",
"qualifiedCount": "number",
"outreachQueuedCount": "number",
"recommendations": ["string"]
}
},
"creditCost": 3,
"next": { "stepId": "done" }
},
{
"id": "done",
"type": "milestone",
"name": "Funnel run complete"
}
]
}