UNPKG

@phren/cli

Version:

Knowledge layer for AI agents - CLI, MCP server, and data layer

76 lines (75 loc) • 2.89 kB
import type { PhrenResult } from "../shared.js"; export { taskStores, taskStoreHasProject } from "./task-store-directory.js"; import { type TaskDoc, type TaskItem } from "./tasks.js"; export type TaskResponsibility = "human" | "agent"; export interface TaskDependency { storeId: string; project: string; stableId: string; } export interface TaskChange { at: string; change: string; } export interface TaskPrerequisite extends TaskDependency { title: string; responsibility: TaskResponsibility; completed: boolean; missing: boolean; } export interface TaskReadiness { responsibility: TaskResponsibility; readiness: "ready" | "waiting-on-human" | "waiting-on-task"; prerequisites: TaskPrerequisite[]; } /** Writers that can create cycles lock every writable attached store in path order. * Reciprocal links edited from different store roots serialize on the same locks. */ export declare function withTaskGraphLock<T>(base: string, fn: () => PhrenResult<T>): PhrenResult<T>; export declare function taskIdentity(phrenPath: string, doc: TaskDoc, item: TaskItem): TaskDependency | undefined; /** Derived, never persisted. Missing or unknown metadata blocks autonomous selection. */ export declare function taskReadiness(phrenPath: string, doc: TaskDoc, item: TaskItem): TaskReadiness; export declare function taskView(phrenPath: string, doc: TaskDoc, item: TaskItem): { responsibility: TaskResponsibility; readiness: "ready" | "waiting-on-human" | "waiting-on-task"; prerequisites: TaskPrerequisite[]; identity: TaskDependency | null; id: string; stableId?: string; identityAmbiguous?: boolean; section: import("./tasks.js").TaskSection; line: string; checked: boolean; priority?: "high" | "medium" | "low"; context?: string; pinned?: boolean; githubIssue?: number; githubUrl?: string; claim?: import("./tasks.js").TaskClaim; rank?: number; lastActivity?: string; createdAt?: string; sessionId?: string; scope?: string; childFindings?: string[]; speculative?: boolean; parentFinding?: string; dependencies?: TaskDependency[]; history?: TaskChange[]; taskContractRaw?: string; taskContractRecords?: string[]; taskContractLines?: string[]; opaqueContinuationLines?: string[]; }; export declare function validateTaskDependencies(phrenPath: string, doc: TaskDoc, item: TaskItem, refs: TaskDependency[]): string | undefined; export interface TaskFilter { responsibility?: TaskResponsibility; readiness?: TaskReadiness["readiness"]; } export declare function filterTaskDoc(base: string, doc: TaskDoc, filter: TaskFilter): TaskDoc; export declare function taskCounts(base: string, doc: TaskDoc): { human: number; agentReady: number; agentWaitingOnHuman: number; agentWaitingOnTask: number; done: number; };