8a7b0a5c06
- Added built-in model entries for gpt-5.5 and gpt-image-2, including updated context windows, token limits, and pricing. - Updated generated-model policy application to set or clear applyPatchToolType based on inferred GPT-5 freeform rules. - Changed Spark edit-mode resolution to return apply_patch by default, honoring explicit replace and strict-mode overrides. - Added tests for GPT-5 freeform policy inference and Spark edit-mode default, variant, and strict-mode behavior.
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import { afterEach, describe, expect, test } from "bun:test";
|
|
import { type EditMode, type EditModeSessionLike, resolveEditMode } from "@oh-my-pi/pi-coding-agent/utils/edit-mode";
|
|
|
|
const originalEditVariant = Bun.env.PI_EDIT_VARIANT;
|
|
const originalStrictEditMode = Bun.env.PI_STRICT_EDIT_MODE;
|
|
|
|
function restoreEnv(): void {
|
|
if (originalEditVariant === undefined) {
|
|
delete Bun.env.PI_EDIT_VARIANT;
|
|
} else {
|
|
Bun.env.PI_EDIT_VARIANT = originalEditVariant;
|
|
}
|
|
if (originalStrictEditMode === undefined) {
|
|
delete Bun.env.PI_STRICT_EDIT_MODE;
|
|
} else {
|
|
Bun.env.PI_STRICT_EDIT_MODE = originalStrictEditMode;
|
|
}
|
|
}
|
|
|
|
function createSession(args: {
|
|
activeModel?: string;
|
|
modelVariant?: EditMode | null;
|
|
settingsMode?: EditMode;
|
|
}): EditModeSessionLike {
|
|
return {
|
|
getActiveModelString: () => args.activeModel,
|
|
settings: {
|
|
get: () => args.settingsMode ?? "hashline",
|
|
getEditVariantForModel: () => args.modelVariant ?? null,
|
|
},
|
|
};
|
|
}
|
|
|
|
describe("resolveEditMode", () => {
|
|
afterEach(() => {
|
|
restoreEnv();
|
|
});
|
|
|
|
test("defaults Spark models to apply_patch mode", () => {
|
|
delete Bun.env.PI_EDIT_VARIANT;
|
|
delete Bun.env.PI_STRICT_EDIT_MODE;
|
|
|
|
expect(resolveEditMode(createSession({ activeModel: "openai-codex/gpt-5.3-codex-spark" }))).toBe("apply_patch");
|
|
});
|
|
|
|
test("keeps explicit model variants ahead of Spark fallback", () => {
|
|
delete Bun.env.PI_EDIT_VARIANT;
|
|
delete Bun.env.PI_STRICT_EDIT_MODE;
|
|
|
|
expect(
|
|
resolveEditMode(createSession({ activeModel: "openai-codex/gpt-5.3-codex-spark", modelVariant: "replace" })),
|
|
).toBe("replace");
|
|
});
|
|
|
|
test("strict edit mode disables Spark fallback", () => {
|
|
delete Bun.env.PI_EDIT_VARIANT;
|
|
Bun.env.PI_STRICT_EDIT_MODE = "1";
|
|
|
|
expect(
|
|
resolveEditMode(createSession({ activeModel: "openai-codex/gpt-5.3-codex-spark", settingsMode: "hashline" })),
|
|
).toBe("hashline");
|
|
});
|
|
});
|