takt/src/infra/task/taskQueryService.ts
nrs e52e1da6bf
takt-list (#271)
* refactor: provider/modelの解決ロジックをAgentRunnerに集約

OptionsBuilderでCLIレベルとstepレベルを事前マージしていたのをやめ、
stepProvider/stepModelとして分離して渡す形に変更。
AgentRunnerが全レイヤーの優先度を一括で解決する。

* takt: takt-list
2026-02-14 11:44:01 +09:00

38 lines
1.2 KiB
TypeScript

import type { TaskInfo, TaskListItem } from './types.js';
import { toFailedTaskItem, toPendingTaskItem, toTaskInfo, toTaskListItem } from './mapper.js';
import { TaskStore } from './store.js';
export class TaskQueryService {
constructor(
private readonly projectDir: string,
private readonly tasksFile: string,
private readonly store: TaskStore,
) {}
listTasks(): TaskInfo[] {
const state = this.store.read();
return state.tasks
.filter((task) => task.status === 'pending')
.map((task) => toTaskInfo(this.projectDir, this.tasksFile, task));
}
listPendingTaskItems(): TaskListItem[] {
const state = this.store.read();
return state.tasks
.filter((task) => task.status === 'pending')
.map((task) => toPendingTaskItem(this.projectDir, this.tasksFile, task));
}
listAllTaskItems(): TaskListItem[] {
const state = this.store.read();
return state.tasks.map((task) => toTaskListItem(this.projectDir, this.tasksFile, task));
}
listFailedTasks(): TaskListItem[] {
const state = this.store.read();
return state.tasks
.filter((task) => task.status === 'failed')
.map((task) => toFailedTaskItem(this.projectDir, this.tasksFile, task));
}
}