Initial curated projectbrain source from 8a7b1e0651dbdab97d744cbd2e653ab3970ac6c5
This commit is contained in:
commit
5aa3e8d685
700 files changed
+132801
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { serializeAnalysisJob } from "../src/repositories/analysisJobRepository.js";
|
||||
import { buildProjectContextResume } from "../src/services/contextResolver.js";
|
||||
|
||||
describe("MCP efficiency hints", () => {
|
||||
it("finishes open PRs before starting newer delivery branches", () => {
|
||||
const resume = buildProjectContextResume(
|
||||
[{ id: "repo", owner: "Jens", repository: "app", accessMode: "read_write", defaultBranch: "main" }],
|
||||
[{ id: "new", title: "New plan", status: "approved", approvalState: "approved" }, { id: "existing", title: "Finish me", status: "pull_request_open", approvalState: "approved", runs: [{ pullRequestNumber: 7 }] }], [],
|
||||
);
|
||||
expect(resume.nextAction).toMatchObject({ type: "review-and-merge", deliveryId: "existing", pullRequestNumber: 7 });
|
||||
});
|
||||
it("returns one durable resume action for an active delivery", () => {
|
||||
const resume = buildProjectContextResume(
|
||||
[{ id: "repo-1", owner: "Jens", repository: "app", accessMode: "read_write", defaultBranch: "main" }],
|
||||
[{ id: "delivery-1", title: "Improve MCP", status: "executing", approvalState: "approved", runs: [{ branch: "chatgpt/mcp", headSha: "abc" }] }],
|
||||
[],
|
||||
"2026-08-27T00:00:00.000Z",
|
||||
);
|
||||
|
||||
expect(resume).toMatchObject({
|
||||
repositoryCount: 1,
|
||||
activeDelivery: { id: "delivery-1", branch: "chatgpt/mcp" },
|
||||
nextAction: { type: "continue-implementation", deliveryId: "delivery-1" },
|
||||
});
|
||||
expect(resume.stateVersion).toMatch(/^[0-9a-f]{24}$/);
|
||||
});
|
||||
|
||||
it("tells clients when and whether to poll analysis state", () => {
|
||||
const running = serializeAnalysisJob({ id: "job-1", status: "running", progressCurrent: 1, progressTotal: 4, updatedAt: new Date("2026-08-27T00:00:00.000Z") });
|
||||
const succeeded = serializeAnalysisJob({ id: "job-1", status: "succeeded", progressCurrent: 4, progressTotal: 4, updatedAt: new Date("2026-08-27T00:01:00.000Z") });
|
||||
|
||||
expect(running).toMatchObject({ terminal: false, pollAfterMs: 4_000, nextAction: "wait-for-change" });
|
||||
expect(succeeded).toMatchObject({ terminal: true, pollAfterMs: 0, nextAction: "read-results" });
|
||||
expect(running.stateVersion).not.toBe(succeeded.stateVersion);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user