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:
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user