scripts/workflow-remove.ps1
|
#!/usr/bin/env pwsh <# .SYNOPSIS Remove an installed workflow from a dotbot project. .PARAMETER Name Workflow name (e.g., "iwg-bs-scoring"). #> param( [Parameter(Position = 0)] [string]$Name ) $ErrorActionPreference = "Stop" $DotbotBase = Join-Path $HOME "dotbot" $ProjectDir = Get-Location $BotDir = Join-Path $ProjectDir ".bot" Import-Module (Join-Path $DotbotBase "scripts\Platform-Functions.psm1") -Force if (-not (Test-Path $BotDir)) { Write-DotbotError "No .bot directory found." exit 1 } if (-not $Name) { Write-DotbotWarning "Usage: dotbot workflow remove <name>" exit 1 } # Import manifest utilities . (Join-Path $BotDir "systems\runtime\modules\workflow-manifest.ps1") $wfDir = Join-Path $BotDir "workflows\$Name" if (-not (Test-Path $wfDir)) { Write-DotbotError "Workflow '$Name' is not installed." exit 1 } Write-Status "Removing workflow: $Name" # Clear tasks belonging to this workflow $tasksDir = Join-Path $BotDir "workspace\tasks" $removed = Clear-WorkflowTasks -TasksBaseDir $tasksDir -WorkflowName $Name if ($removed -gt 0) { Write-DotbotCommand "Removed $removed task(s)" } # Remove workflow directory Remove-Item $wfDir -Recurse -Force Write-DotbotCommand "Removed .bot/workflows/$Name/" # Clean orphaned MCP servers $mcpJsonPath = Join-Path $ProjectDir ".mcp.json" $workflowsDir = Join-Path $BotDir "workflows" $orphansRemoved = Remove-OrphanMcpServers -McpJsonPath $mcpJsonPath -WorkflowsDir $workflowsDir if ($orphansRemoved -gt 0) { Write-DotbotCommand "Removed $orphansRemoved orphaned MCP server(s) from .mcp.json" } # Update installed_workflows list $settingsPath = Join-Path $BotDir "settings\settings.default.json" if (Test-Path $settingsPath) { $settings = Get-Content $settingsPath -Raw | ConvertFrom-Json if ($settings.PSObject.Properties['installed_workflows']) { $settings.installed_workflows = @($settings.installed_workflows | Where-Object { $_ -ne $Name }) $settings | ConvertTo-Json -Depth 10 | Set-Content $settingsPath } } Write-Success "Workflow '$Name' removed." |