- 增加 Agent Run MVP-0,包括 RunDispatcher 和 AgentRunJob - 优化队列配置,支持 Redis 队列驱动,添加 Horizon 容器 - 更新 Docker 配置,细化角色分工,新增 Horizon 配置 - 增加测试任务 `TestJob`,扩展队列使用示例 - 更新 OpenAPI 规范,添加 Agent Run 相关接口及示例 - 编写文档,详细描述 Agent Run 流程与 MVP-0 功能 - 优化相关服务与文档,支持队列与异步运行
36 lines
1011 B
PHP
36 lines
1011 B
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Services\OutputSink;
|
|
use App\Services\RunLoop;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Queue\SerializesModels;
|
|
|
|
class AgentRunJob implements ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
public function __construct(public string $sessionId, public string $runId)
|
|
{
|
|
}
|
|
|
|
public function handle(RunLoop $loop, OutputSink $sink): void
|
|
{
|
|
try {
|
|
$loop->run($this->sessionId, $this->runId);
|
|
} catch (\Throwable $e) {
|
|
$sink->appendError($this->sessionId, $this->runId, 'run.failed', $e->getMessage());
|
|
$sink->appendRunStatus($this->sessionId, $this->runId, 'FAILED', [
|
|
'error' => $e->getMessage(),
|
|
'dedupe_key' => "run:{$this->runId}:status:FAILED",
|
|
]);
|
|
|
|
throw $e;
|
|
}
|
|
}
|
|
}
|