feat(queue): erweiterte Queue mit Cron-Jobs + Tasks, Prioritäten, Delete/Priority API
This commit is contained in:
@@ -639,7 +639,28 @@ public sealed class OpenClawGatewayClient(HttpClient httpClient, IConfiguration
|
||||
var status = j["state"]?["lastStatus"]?.GetValue<string>()
|
||||
?? j["status"]?.GetValue<string>()
|
||||
?? "unknown";
|
||||
items.Add(new QueueItem(id, name, status));
|
||||
|
||||
// Calculate waitTime from nextRun if available
|
||||
var waitTime = "--";
|
||||
var nextRunStr = j["nextRun"]?.GetValue<string>()
|
||||
?? j["next_run"]?.GetValue<string>()
|
||||
?? j["scheduledAt"]?.GetValue<string>();
|
||||
if (nextRunStr is not null && DateTimeOffset.TryParse(nextRunStr, out var nextRun))
|
||||
{
|
||||
var diff = nextRun - DateTimeOffset.UtcNow;
|
||||
if (diff.TotalMinutes < 0)
|
||||
waitTime = "now";
|
||||
else if (diff.TotalMinutes < 1)
|
||||
waitTime = "<1m";
|
||||
else if (diff.TotalMinutes < 60)
|
||||
waitTime = $"{(int)diff.TotalMinutes}m";
|
||||
else if (diff.TotalHours < 24)
|
||||
waitTime = $"{(int)diff.TotalHours}h";
|
||||
else
|
||||
waitTime = $"{(int)diff.TotalDays}d";
|
||||
}
|
||||
|
||||
items.Add(new QueueItem(id, name, status, "medium", "cron", waitTime));
|
||||
}
|
||||
return items;
|
||||
}
|
||||
@@ -649,6 +670,19 @@ public sealed class OpenClawGatewayClient(HttpClient httpClient, IConfiguration
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteCronJobAsync(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await InvokeToolAsync("cron", new { action = "delete", id });
|
||||
return result is not null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<DashboardStatus> GetStatusAsync()
|
||||
{
|
||||
var gatewayOk = false;
|
||||
|
||||
Reference in New Issue
Block a user