singularity-forge/src/resources/extensions/sf/workflow-tools.js
2026-05-07 03:45:41 +02:00

76 lines
2.1 KiB
JavaScript

/**
* Workflow Tools — required native tool contracts for guided and autonomous units.
*
* Purpose: keep workflow dispatch validation tied to native SF agent tools while
* preserving the explicit "no workflow MCP transport" boundary.
*
* Consumer: guided-flow, auto dispatch, auto phases, and model selection checks.
*/
export function getRequiredWorkflowToolsForGuidedUnit(unitType) {
switch (unitType) {
case "discuss-milestone":
return ["sf_summary_save", "sf_plan_milestone"];
case "discuss-slice":
return ["sf_summary_save"];
case "research-milestone":
case "research-slice":
return ["sf_summary_save"];
case "plan-milestone":
return ["sf_plan_milestone"];
case "plan-slice":
return ["sf_plan_slice"];
case "execute-task":
return ["sf_task_complete"];
case "complete-slice":
return ["sf_slice_complete"];
default:
return [];
}
}
export function getRequiredWorkflowToolsForAutoUnit(unitType) {
switch (unitType) {
case "discuss-milestone":
return ["sf_summary_save", "sf_plan_milestone"];
case "research-milestone":
case "research-slice":
case "run-uat":
return ["sf_summary_save"];
case "plan-milestone":
return ["sf_plan_milestone"];
case "plan-slice":
return ["sf_plan_slice"];
case "execute-task":
case "execute-task-simple":
case "reactive-execute":
return ["sf_task_complete"];
case "complete-slice":
return ["sf_slice_complete"];
case "replan-slice":
return ["sf_replan_slice"];
case "reassess-roadmap":
return ["sf_milestone_status", "sf_reassess_roadmap"];
case "gate-evaluate":
return ["sf_save_gate_result"];
case "validate-milestone":
return ["sf_milestone_status", "sf_validate_milestone"];
case "complete-milestone":
return ["sf_milestone_status", "sf_complete_milestone"];
default:
return [];
}
}
export function supportsStructuredQuestions(activeTools, options = {}) {
void options;
if (!activeTools.includes("ask_user_questions")) return false;
return true;
}
export function getWorkflowTransportSupportError(
provider,
requiredTools,
options = {},
) {
void provider;
void requiredTools;
void options;
return null;
}