(workflowId: string, planRelativePath: string)
| 151 | } |
| 152 | |
| 153 | export function workflowPlanBackingPath(workflowId: string, planRelativePath: string): string { |
| 154 | const segments = decodeVfsPathSegments(planRelativePath) |
| 155 | if (segments.length === 0) { |
| 156 | throw new Error('Workflow plan alias must include a plan file path') |
| 157 | } |
| 158 | return canonicalWorkspaceFilePath({ |
| 159 | folderPath: [WORKFLOW_PLANS_BACKING_FOLDER, workflowId, ...segments.slice(0, -1)].join('/'), |
| 160 | name: segments[segments.length - 1], |
| 161 | }) |
| 162 | } |
| 163 | |
| 164 | function workflowAliasTargetForPath(workflow: WorkflowAliasWorkflow, rawPath: string) { |
| 165 | const workflowPath = workflowVfsPath(workflow) |
no test coverage detected