* refactor: provider/modelの解決ロジックをAgentRunnerに集約 OptionsBuilderでCLIレベルとstepレベルを事前マージしていたのをやめ、 stepProvider/stepModelとして分離して渡す形に変更。 AgentRunnerが全レイヤーの優先度を一括で解決する。 * takt: takt-list
38 lines
1.2 KiB
TypeScript
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));
|
|
}
|
|
}
|