8c6e8e4986
Fully rename the ultragoal component to ulw-loop so the identifier matches the ulw-loop skill it powers. Renames the component directory, nested skill, TS identifiers (UlwLoop / ULW_LOOP_* / ulwLoop*), the omo ulw-loop CLI subcommand, the .omo/ulw-loop state directory, the OMO_ULW_LOOP_STEER directive token, and the @code-yeongyu/codex-ulw-loop package. Also threads Atlas-style right-sized parallel worker delegation and a Prometheus-style QA + maximum-parallelism plan into the ulw-loop skill, with a critical post-subagent QA gate. Updates aggregate wiring (plugin package components, hooks.json, sync-skills), the install-codex agent-link test fixture, and user docs.
28 lines
1011 B
TypeScript
28 lines
1011 B
TypeScript
import { join } from "node:path";
|
|
import { ULW_LOOP_BRIEF, ULW_LOOP_DIR, ULW_LOOP_GOALS, ULW_LOOP_LEDGER } from "./types.js";
|
|
|
|
export function ulwLoopDir(repoRoot: string): string {
|
|
return join(repoRoot, ULW_LOOP_DIR);
|
|
}
|
|
|
|
export function ulwLoopBriefPath(repoRoot: string): string {
|
|
return join(ulwLoopDir(repoRoot), ULW_LOOP_BRIEF);
|
|
}
|
|
|
|
export function ulwLoopGoalsPath(repoRoot: string): string {
|
|
return join(ulwLoopDir(repoRoot), ULW_LOOP_GOALS);
|
|
}
|
|
|
|
export function ulwLoopLedgerPath(repoRoot: string): string {
|
|
return join(ulwLoopDir(repoRoot), ULW_LOOP_LEDGER);
|
|
}
|
|
|
|
export function repoRelative(absolutePath: string, repoRoot: string): string {
|
|
const slashPrefix = `${repoRoot}/`;
|
|
const backslashPrefix = `${repoRoot}\\`;
|
|
if (absolutePath.startsWith(slashPrefix)) return absolutePath.slice(slashPrefix.length).split("\\").join("/");
|
|
if (absolutePath.startsWith(backslashPrefix))
|
|
return absolutePath.slice(backslashPrefix.length).split("\\").join("/");
|
|
return absolutePath.split("\\").join("/");
|
|
}
|