mirror of
https://github.com/harivansh-afk/clanker-agent.git
synced 2026-04-20 01:00:28 +00:00
grind mode baby
This commit is contained in:
parent
aa70afbd7e
commit
ff6e39dd10
17 changed files with 1232 additions and 8 deletions
72
packages/pi-grind/test/state.test.ts
Normal file
72
packages/pi-grind/test/state.test.ts
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
import type { SessionEntry } from "@mariozechner/pi-coding-agent";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { createRunState, getLatestRunState, withLoopStatus, withStatus } from "../src/state.js";
|
||||
import { GRIND_STATE_ENTRY_TYPE } from "../src/types.js";
|
||||
|
||||
describe("pi-grind state", () => {
|
||||
it("creates active run state", () => {
|
||||
const state = createRunState({
|
||||
activation: "explicit",
|
||||
goal: "Ship the refactor",
|
||||
sourcePrompt: "Don't stop until this is done",
|
||||
deadlineAt: null,
|
||||
completionCriterion: "this is done",
|
||||
});
|
||||
|
||||
expect(state.status).toBe("active");
|
||||
expect(state.goal).toBe("Ship the refactor");
|
||||
expect(state.completionCriterion).toBe("this is done");
|
||||
});
|
||||
|
||||
it("hydrates latest persisted state from session entries", () => {
|
||||
const older = createRunState({
|
||||
activation: "command",
|
||||
goal: "older",
|
||||
sourcePrompt: "older",
|
||||
deadlineAt: null,
|
||||
completionCriterion: null,
|
||||
});
|
||||
const newer = withStatus(older, "paused");
|
||||
|
||||
const entries = [
|
||||
{
|
||||
type: "custom",
|
||||
id: "a",
|
||||
parentId: null,
|
||||
timestamp: new Date().toISOString(),
|
||||
customType: GRIND_STATE_ENTRY_TYPE,
|
||||
data: older,
|
||||
},
|
||||
{
|
||||
type: "custom",
|
||||
id: "b",
|
||||
parentId: "a",
|
||||
timestamp: new Date().toISOString(),
|
||||
customType: GRIND_STATE_ENTRY_TYPE,
|
||||
data: newer,
|
||||
},
|
||||
] satisfies SessionEntry[];
|
||||
|
||||
expect(getLatestRunState(entries)?.status).toBe("paused");
|
||||
});
|
||||
|
||||
it("applies loop results", () => {
|
||||
const state = createRunState({
|
||||
activation: "explicit",
|
||||
goal: "Ship it",
|
||||
sourcePrompt: "Ship it",
|
||||
deadlineAt: null,
|
||||
completionCriterion: null,
|
||||
});
|
||||
|
||||
const next = withLoopStatus(state, {
|
||||
state: "done",
|
||||
summary: "finished",
|
||||
nextAction: "none",
|
||||
});
|
||||
|
||||
expect(next.status).toBe("done");
|
||||
expect(next.lastCheckpoint).toBe("finished");
|
||||
expect(next.lastNextAction).toBe("none");
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue