Phase 2: add effective helpers — enabled and delivery mode resolution.

Implements SPEC §5.1 session/global layering and §6.5.3 integration
table for defer vs immediate delivery decisions.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-17 10:12:21 +07:00
parent 9b0264f687
commit 00ffdff578
+34
View File
@@ -135,3 +135,37 @@ export function mergeSkillReinjectIntoSettingsFile(
export function writeGlobalSettings(partial: PartialSkillReinjectSettings): void {
mergeSkillReinjectIntoSettingsFile(join(getAgentDir(), "settings.json"), partial);
}
/** Resolved re-inject delivery mode after integration settings (SPEC §6.5.3). */
export type ReinjectDeliveryMode = "defer" | "immediate";
/** Session override wins over global enabled default (SPEC §5.1). */
export function effectiveEnabled(
sessionOverride: boolean | null,
settings: SkillReinjectSettings,
): boolean {
return sessionOverride ?? settings.enabled;
}
/** Resolve delivery mode from integration setting, pi-auto-compact detect, and triggerTurn (SPEC §6.5.3). */
export function effectiveIntegration(
settings: SkillReinjectSettings,
autoCompactDetected: boolean,
sessionIntegrationOverride?: AutoCompactIntegration | null,
): ReinjectDeliveryMode {
const integration = sessionIntegrationOverride ?? settings.autoCompactIntegration;
switch (integration) {
case "defer":
return "defer";
case "immediate":
return "immediate";
case "off":
return settings.triggerTurn ? "immediate" : "defer";
case "auto":
default:
if (autoCompactDetected) {
return "defer";
}
return settings.triggerTurn ? "immediate" : "defer";
}
}