merge: integrate origin/dev into modular-enforcement branch

Resolves all merge conflicts, preserving our split module structure
while integrating all dev changes:
- Custom agent summaries support (parseRegisteredAgentSummaries)
- Background notification queue (enqueueNotificationForParent)
- Atlas shared git-worktree module (collectGitDiffStats, formatFileChanges)
- Ralph-loop withTimeout + DEFAULT_API_TIMEOUT=5000
- Session recovery assistant_prefill_unsupported error type
- Atlas agentOverrides forwarding
- Config handler plan model demotion (buildPlanDemoteConfig)
- Delegate-task agentOverrides, promptSyncWithModelSuggestionRetry, variant
- LSP init timeout + stale init detection
- isPlanFamily function + task-continuation-enforcer hook
- Handoff command
This commit is contained in:
YeonGyu-Kim
2026-02-08 17:34:47 +09:00
74 changed files with 4016 additions and 654 deletions
+20 -19
View File
@@ -28,25 +28,26 @@ export function createEventHandler(args: {
const { ctx, firstMessageVariantGate, managers, hooks } = args
return async (input): Promise<void> => {
await hooks.autoUpdateChecker?.event?.(input)
await hooks.claudeCodeHooks?.event?.(input)
await hooks.backgroundNotificationHook?.event?.(input)
await hooks.sessionNotification?.(input)
await hooks.todoContinuationEnforcer?.handler?.(input)
await hooks.unstableAgentBabysitter?.event?.(input)
await hooks.contextWindowMonitor?.event?.(input)
await hooks.directoryAgentsInjector?.event?.(input)
await hooks.directoryReadmeInjector?.event?.(input)
await hooks.rulesInjector?.event?.(input)
await hooks.thinkMode?.event?.(input)
await hooks.anthropicContextWindowLimitRecovery?.event?.(input)
await hooks.agentUsageReminder?.event?.(input)
await hooks.categorySkillReminder?.event?.(input)
await hooks.interactiveBashSession?.event?.(input)
await hooks.ralphLoop?.event?.(input)
await hooks.stopContinuationGuard?.event?.(input)
await hooks.compactionTodoPreserver?.event?.(input)
await hooks.atlasHook?.handler?.(input)
await Promise.resolve(hooks.autoUpdateChecker?.event?.(input))
await Promise.resolve(hooks.claudeCodeHooks?.event?.(input))
await Promise.resolve(hooks.backgroundNotificationHook?.event?.(input))
await Promise.resolve(hooks.sessionNotification?.(input))
await Promise.resolve(hooks.todoContinuationEnforcer?.handler?.(input))
await Promise.resolve(hooks.taskContinuationEnforcer?.handler?.(input))
await Promise.resolve(hooks.unstableAgentBabysitter?.event?.(input))
await Promise.resolve(hooks.contextWindowMonitor?.event?.(input))
await Promise.resolve(hooks.directoryAgentsInjector?.event?.(input))
await Promise.resolve(hooks.directoryReadmeInjector?.event?.(input))
await Promise.resolve(hooks.rulesInjector?.event?.(input))
await Promise.resolve(hooks.thinkMode?.event?.(input))
await Promise.resolve(hooks.anthropicContextWindowLimitRecovery?.event?.(input))
await Promise.resolve(hooks.agentUsageReminder?.event?.(input))
await Promise.resolve(hooks.categorySkillReminder?.event?.(input))
await Promise.resolve(hooks.interactiveBashSession?.event?.(input))
await Promise.resolve(hooks.ralphLoop?.event?.(input))
await Promise.resolve(hooks.stopContinuationGuard?.event?.(input))
await Promise.resolve(hooks.compactionTodoPreserver?.event?.(input))
await Promise.resolve(hooks.atlasHook?.handler?.(input))
const { event } = input
const props = event.properties as Record<string, unknown> | undefined