@@ -1909,7 +1909,7 @@ var DeleteTask = Tool[DeleteTaskArgs, codersdk.Response]{
19091909
19101910expClient := codersdk .NewExperimentalClient (deps .coderClient )
19111911
1912- task ,err := resolveTask (ctx , expClient ,args .TaskID )
1912+ task ,err := expClient . TaskByIdentifier (ctx ,args .TaskID )
19131913if err != nil {
19141914return codersdk.Response {},xerrors .Errorf ("resolve task: %w" ,err )
19151915}
@@ -2004,7 +2004,7 @@ var GetTaskStatus = Tool[GetTaskStatusArgs, GetTaskStatusResponse]{
20042004
20052005expClient := codersdk .NewExperimentalClient (deps .coderClient )
20062006
2007- task ,err := resolveTask (ctx , expClient ,args .TaskID )
2007+ task ,err := expClient . TaskByIdentifier (ctx ,args .TaskID )
20082008if err != nil {
20092009return GetTaskStatusResponse {},xerrors .Errorf ("resolve task %q: %w" ,args .TaskID ,err )
20102010}
@@ -2051,7 +2051,7 @@ var SendTaskInput = Tool[SendTaskInputArgs, codersdk.Response]{
20512051
20522052expClient := codersdk .NewExperimentalClient (deps .coderClient )
20532053
2054- task ,err := resolveTask (ctx , expClient ,args .TaskID )
2054+ task ,err := expClient . TaskByIdentifier (ctx ,args .TaskID )
20552055if err != nil {
20562056return codersdk.Response {},xerrors .Errorf ("resolve task %q: %w" ,args .TaskID ,err )
20572057}
@@ -2095,7 +2095,7 @@ var GetTaskLogs = Tool[GetTaskLogsArgs, codersdk.TaskLogsResponse]{
20952095
20962096expClient := codersdk .NewExperimentalClient (deps .coderClient )
20972097
2098- task ,err := resolveTask (ctx , expClient ,args .TaskID )
2098+ task ,err := expClient . TaskByIdentifier (ctx ,args .TaskID )
20992099if err != nil {
21002100return codersdk.TaskLogsResponse {},err
21012101}
@@ -2179,50 +2179,3 @@ func taskIDDescription(action string) string {
21792179func userDescription (action string )string {
21802180return fmt .Sprintf ("Username or ID of the user for which to %s. Omit or use the `me` keyword to %s for the authenticated user." ,action ,action )
21812181}
2182-
2183- // resolveTask fetches and returns a task by an identifier, which may be either
2184- // a UUID, a bare name (for a task owned by the current user), or a "user/task"
2185- // combination, where user is either a username or UUID.
2186- //
2187- // Since there is no TaskByOwnerAndName endpoint yet, this function uses the
2188- // list endpoint with filtering when a name is provided.
2189- func resolveTask (ctx context.Context ,exp * codersdk.ExperimentalClient ,identifier string ) (codersdk.Task ,error ) {
2190- identifier = strings .TrimSpace (identifier )
2191-
2192- // Try parsing as UUID first.
2193- if taskID ,err := uuid .Parse (identifier );err == nil {
2194- return exp .TaskByID (ctx ,taskID )
2195- }
2196-
2197- // Not a UUID, treat as identifier.
2198- taskName ,owner := splitNameAndOwner (identifier )
2199-
2200- tasks ,err := exp .Tasks (ctx ,& codersdk.TasksFilter {
2201- Owner :owner ,
2202- })
2203- if err != nil {
2204- return codersdk.Task {},xerrors .Errorf ("list tasks for owner %q: %w" ,owner ,err )
2205- }
2206-
2207- if taskID ,err := uuid .Parse (taskName );err == nil {
2208- // Find task by ID.
2209- for _ ,task := range tasks {
2210- if task .ID == taskID {
2211- return task ,nil
2212- }
2213- }
2214- }else {
2215- // Find task by name.
2216- for _ ,task := range tasks {
2217- if task .Name == taskName {
2218- return task ,nil
2219- }
2220- }
2221- }
2222-
2223- // Mimic resource not found from API.
2224- var notFoundErr error = & codersdk.Error {
2225- Response : codersdk.Response {Message :"Resource not found or you do not have access to this resource" },
2226- }
2227- return codersdk.Task {},xerrors .Errorf ("task %q not found for owner %q: %w" ,taskName ,owner ,notFoundErr )
2228- }