@phren/cli
Version:
Knowledge layer for AI agents - CLI, MCP server, and data layer
76 lines (75 loc) • 2.89 kB
TypeScript
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;
};