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 {
|
export function writeGlobalSettings(partial: PartialSkillReinjectSettings): void {
|
||||||
mergeSkillReinjectIntoSettingsFile(join(getAgentDir(), "settings.json"), partial);
|
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