test(engine): complete agent-session-helpers thinking-level resolver set + pi mocks (restart/mcp-pr/triage)
This commit is contained in:
@@ -16,6 +16,12 @@ vi.mock("../agent-session-helpers.js", () => ({
|
||||
provider: settings.defaultProvider,
|
||||
modelId: settings.defaultModelId,
|
||||
})),
|
||||
// FNXC:EngineTestDrift 2026-07-11-22:30:
|
||||
// pr-response-run-ops resolves the merger lane thinking level via
|
||||
// resolveMergerThinkingLevel (Settings-ThinkingLevel precedence, 2026-07-10).
|
||||
// The mock must surface it or every PR-response run throws on the missing
|
||||
// export. Neutral undefined return — no test asserts on thinking level.
|
||||
resolveMergerThinkingLevel: vi.fn(() => undefined),
|
||||
}));
|
||||
|
||||
vi.mock("../pi.js", () => ({
|
||||
|
||||
@@ -132,6 +132,20 @@ vi.mock("../agent-session-helpers.js", async () => {
|
||||
}
|
||||
return { provider: undefined, modelId: undefined };
|
||||
},
|
||||
// FNXC:EngineTestDrift 2026-07-11-22:30:
|
||||
// agent-session-helpers gained phase/lane thinking-level + fallback resolvers
|
||||
// (Settings-ThinkingLevel precedence, 2026-07-10) and an implicit planning
|
||||
// fallback model resolver. The exercised executor + triage paths import them;
|
||||
// surface the full set so the next export doesn't re-break this mock.
|
||||
resolveExecutorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveExecutorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveImplicitPlanningFallbackModel: vi.fn(() => ({ provider: undefined, modelId: undefined })),
|
||||
};
|
||||
});
|
||||
vi.mock("node:child_process", () => {
|
||||
|
||||
@@ -16,6 +16,20 @@ vi.mock("../agent-session-helpers.js", () => ({
|
||||
createResolvedAgentSession: mockCreateResolvedAgentSession,
|
||||
extractRuntimeHint: vi.fn(),
|
||||
resolvePlanningSessionModel: vi.fn().mockReturnValue({ provider: "mock", modelId: "mock-model" }),
|
||||
// FNXC:EngineTestDrift 2026-07-11-22:30:
|
||||
// triage.ts planning imports resolvePlanningThinkingLevel +
|
||||
// resolveImplicitPlanningFallbackModel (Settings-ThinkingLevel precedence +
|
||||
// implicit fallback model, 2026-07-10). Surface the full resolver set so the
|
||||
// next export doesn't re-break specifyTask on a missing mock member.
|
||||
resolveExecutorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveExecutorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveImplicitPlanningFallbackModel: vi.fn(() => ({ provider: undefined, modelId: undefined })),
|
||||
}));
|
||||
|
||||
vi.mock("../pi.js", () => {
|
||||
|
||||
@@ -15,19 +15,41 @@ vi.mock("../agent-session-helpers.js", () => ({
|
||||
createResolvedAgentSession: mockCreateResolvedAgentSession,
|
||||
extractRuntimeHint: vi.fn(),
|
||||
resolvePlanningSessionModel: vi.fn().mockReturnValue({ provider: "mock", modelId: "mock-model" }),
|
||||
// FNXC:EngineTestDrift 2026-07-11-22:30:
|
||||
// triage.ts planning imports resolvePlanningThinkingLevel +
|
||||
// resolveImplicitPlanningFallbackModel (Settings-ThinkingLevel precedence +
|
||||
// implicit fallback model, 2026-07-10). Surface the full resolver set so the
|
||||
// next export doesn't re-break specifyTask on a missing mock member.
|
||||
resolveExecutorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveExecutorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningThinkingLevel: vi.fn(() => undefined),
|
||||
resolvePlanningFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorThinkingLevel: vi.fn(() => undefined),
|
||||
resolveValidatorFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerThinkingLevel: vi.fn(() => undefined),
|
||||
resolveMergerFallbackThinkingLevel: vi.fn(() => undefined),
|
||||
resolveImplicitPlanningFallbackModel: vi.fn(() => ({ provider: undefined, modelId: undefined })),
|
||||
}));
|
||||
|
||||
vi.mock("../pi.js", () => ({
|
||||
describeModel: vi.fn().mockReturnValue("mock-model"),
|
||||
promptWithFallback: mockPromptWithFallback,
|
||||
// FNXC:TriageTests 2026-07-02-07:40:
|
||||
// triage.ts specifyTask now calls formatModelMarkerDetails (from pi.js) to
|
||||
// build the model-marker log line after the agent session resolves. The mock
|
||||
// must expose the export so the stuck-requeue planning path can reach
|
||||
// finalization (moveTask todo / needs-replan) instead of throwing on a
|
||||
// missing mock member.
|
||||
formatModelMarkerDetails: vi.fn((model: string) => model),
|
||||
}));
|
||||
vi.mock("../pi.js", () => {
|
||||
// FNXC:EngineTestDrift 2026-07-11-22:30:
|
||||
// triage.ts specifyTask catch guards `err instanceof ModelFallbackExhaustedError`
|
||||
// (FN-7559). The pi mock must expose the class so the stuck-requeue planning
|
||||
// path can finalize instead of throwing on a missing mock member.
|
||||
class ModelFallbackExhaustedError extends Error {}
|
||||
return {
|
||||
describeModel: vi.fn().mockReturnValue("mock-model"),
|
||||
promptWithFallback: mockPromptWithFallback,
|
||||
// FNXC:TriageTests 2026-07-02-07:40:
|
||||
// triage.ts specifyTask now calls formatModelMarkerDetails (from pi.js) to
|
||||
// build the model-marker log line after the agent session resolves. The mock
|
||||
// must expose the export so the stuck-requeue planning path can reach
|
||||
// finalization (moveTask todo / needs-replan) instead of throwing on a
|
||||
// missing mock member.
|
||||
formatModelMarkerDetails: vi.fn((model: string) => model),
|
||||
ModelFallbackExhaustedError,
|
||||
};
|
||||
});
|
||||
|
||||
function createTask(overrides: Partial<Task> = {}): Task {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user