workflows/default/systems/mcp/tools/task-mark-analysing/script.ps1
|
# Import modules Import-Module (Join-Path $global:DotbotProjectRoot ".bot\systems\mcp\modules\SessionTracking.psm1") -Force Import-Module (Join-Path $global:DotbotProjectRoot ".bot\systems\mcp\modules\TaskStore.psm1") -Force function Invoke-TaskMarkAnalysing { param( [hashtable]$Arguments ) $taskId = $Arguments['task_id'] if (-not $taskId) { throw "Task ID is required" } # Build updates $updates = @{ analysis_started_at = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss'Z'") } # Perform atomic state transition $result = Move-TaskState -TaskId $taskId -FromStates @('todo', 'analysing') -ToState 'analysing' -Updates $updates # Track Claude session for conversation continuity (only on actual transition) if (-not $result.already_in_state) { $claudeSessionId = $env:CLAUDE_SESSION_ID if ($claudeSessionId) { Add-SessionToTask -TaskContent $result.task_content -SessionId $claudeSessionId -Phase 'analysis' # Re-save with session data $result.task_content | ConvertTo-Json -Depth 20 | Set-Content -Path $result.file_path -Encoding UTF8 } } return @{ success = $true message = if ($result.already_in_state) { "Task already in analysing status" } else { "Task marked as analysing" } task_id = $taskId task_name = $result.task_name old_status = $result.old_status new_status = 'analysing' analysis_started_at = $result.task_content.analysis_started_at file_path = $result.file_path } } |