feat(default-mode): auto-activate ultrawork and ralph loop without commands
Add new `default_mode` config section with two boolean fields:
- `ultrawork`: Auto-inject ultrawork mode prompt on main session start
without requiring the "ultrawork"/"ulw" keyword. Wired through the
keyword-detector hook — injects once per session, respects existing
guards (non-OMO agents, planner agents, subagent sessions).
- `ralph_loop`: Auto-start ralph loop on first main session message
without requiring /ralph-loop or /ulw-loop commands. When ultrawork
is also enabled, the loop starts in ultrawork mode.
Usage:
```jsonc
{
"default_mode": {
"ultrawork": true, // Always get ultrawork prompt on start
"ralph_loop": true // Auto-start ralph loop
}
}
```
Files: 7 modified/added, ~65 LOC added.
This commit is contained in:
@@ -304,6 +304,25 @@ export function createChatMessageHandler(args: {
|
||||
} else if (isCancelRalphTemplate || rawLoopCommand?.command === "cancel-ralph") {
|
||||
hooks.ralphLoop.cancelLoop(input.sessionID)
|
||||
}
|
||||
|
||||
if (
|
||||
!isRalphLoopTemplate
|
||||
&& !isUlwLoopTemplate
|
||||
&& !isCancelRalphTemplate
|
||||
&& !rawLoopCommand
|
||||
&& isFirstMessage
|
||||
&& pluginConfig.default_mode?.ralph_loop
|
||||
) {
|
||||
const loopPrompt = promptText
|
||||
const ultrawork = pluginConfig.default_mode?.ultrawork ?? false
|
||||
hooks.ralphLoop.startLoop(input.sessionID, loopPrompt, {
|
||||
ultrawork,
|
||||
})
|
||||
log("[chat-message] Default ralph loop auto-started", {
|
||||
sessionID: input.sessionID,
|
||||
ultrawork,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
await applyUltraworkModelOverrideOnMessage(
|
||||
|
||||
@@ -61,6 +61,7 @@ export function createTransformHooks(args: {
|
||||
contextCollector,
|
||||
ralphLoop ?? undefined,
|
||||
pluginConfig.keyword_detector,
|
||||
pluginConfig.default_mode,
|
||||
),
|
||||
{ enabled: safeHookEnabled },
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user