oh-my-opencode 3.7.4 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.ja.md +206 -243
  2. package/README.ko.md +205 -244
  3. package/README.md +176 -174
  4. package/README.zh-cn.md +211 -255
  5. package/dist/agents/atlas/default.d.ts +1 -1
  6. package/dist/agents/atlas/gpt.d.ts +1 -1
  7. package/dist/agents/atlas/prompt-section-builder.d.ts +1 -1
  8. package/dist/agents/builtin-agents/environment-context.d.ts +5 -1
  9. package/dist/agents/builtin-agents/general-agents.d.ts +1 -0
  10. package/dist/agents/builtin-agents/hephaestus-agent.d.ts +1 -0
  11. package/dist/agents/builtin-agents/sisyphus-agent.d.ts +1 -0
  12. package/dist/agents/builtin-agents.d.ts +1 -1
  13. package/dist/agents/dynamic-agent-prompt-builder.d.ts +0 -5
  14. package/dist/agents/index.d.ts +2 -1
  15. package/dist/agents/prometheus/gpt.d.ts +24 -0
  16. package/dist/agents/prometheus/index.d.ts +3 -1
  17. package/dist/agents/prometheus/system-prompt.d.ts +12 -1
  18. package/dist/agents/types.d.ts +1 -0
  19. package/dist/cli/fallback-chain-resolution.d.ts +1 -1
  20. package/dist/cli/index.js +366 -118
  21. package/dist/cli/model-fallback-requirements.d.ts +3 -0
  22. package/dist/cli/model-fallback-types.d.ts +0 -5
  23. package/dist/cli/provider-model-id-transform.d.ts +1 -1
  24. package/dist/cli/run/timestamp-output.d.ts +5 -0
  25. package/dist/cli/run/types.d.ts +1 -0
  26. package/dist/config/index.d.ts +2 -2
  27. package/dist/config/schema/agent-overrides.d.ts +75 -60
  28. package/dist/config/schema/categories.d.ts +2 -0
  29. package/dist/config/schema/experimental.d.ts +2 -0
  30. package/dist/config/schema/fallback-models.d.ts +3 -0
  31. package/dist/config/schema/hooks.d.ts +3 -3
  32. package/dist/config/schema/oh-my-opencode-config.d.ts +87 -104
  33. package/dist/config/schema/ralph-loop.d.ts +4 -0
  34. package/dist/config/schema/runtime-fallback.d.ts +10 -0
  35. package/dist/config/schema.d.ts +2 -0
  36. package/dist/create-hooks.d.ts +7 -5
  37. package/dist/features/background-agent/manager.d.ts +3 -0
  38. package/dist/features/background-agent/types.d.ts +7 -0
  39. package/dist/features/builtin-commands/templates/ralph-loop.d.ts +1 -1
  40. package/dist/features/claude-code-session-state/state.d.ts +1 -0
  41. package/dist/features/task-toast-manager/manager.d.ts +5 -0
  42. package/dist/features/task-toast-manager/types.d.ts +2 -1
  43. package/dist/features/tmux-subagent/action-executor.d.ts +10 -3
  44. package/dist/features/tmux-subagent/grid-planning.d.ts +5 -3
  45. package/dist/features/tmux-subagent/manager.d.ts +12 -0
  46. package/dist/features/tmux-subagent/pane-split-availability.d.ts +0 -1
  47. package/dist/features/tmux-subagent/spawn-target-finder.d.ts +2 -2
  48. package/dist/features/tmux-subagent/tmux-grid-constants.d.ts +4 -0
  49. package/dist/features/tmux-subagent/types.d.ts +2 -0
  50. package/dist/hooks/hashline-edit-diff-enhancer/hook.d.ts +28 -0
  51. package/dist/hooks/hashline-edit-diff-enhancer/index.d.ts +1 -0
  52. package/dist/hooks/index.d.ts +4 -2
  53. package/dist/hooks/model-fallback/hook.d.ts +60 -0
  54. package/dist/hooks/no-hephaestus-non-gpt/hook.d.ts +16 -0
  55. package/dist/hooks/no-hephaestus-non-gpt/index.d.ts +1 -0
  56. package/dist/hooks/ralph-loop/command-arguments.d.ts +8 -0
  57. package/dist/hooks/ralph-loop/continuation-prompt-injector.d.ts +1 -0
  58. package/dist/hooks/ralph-loop/iteration-continuation.d.ts +12 -0
  59. package/dist/hooks/ralph-loop/loop-state-controller.d.ts +2 -0
  60. package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +1 -0
  61. package/dist/hooks/ralph-loop/ralph-loop-hook.d.ts +1 -0
  62. package/dist/hooks/ralph-loop/session-reset-strategy.d.ts +3 -0
  63. package/dist/hooks/ralph-loop/types.d.ts +1 -0
  64. package/dist/hooks/runtime-fallback/agent-resolver.d.ts +5 -0
  65. package/dist/hooks/runtime-fallback/auto-retry.d.ts +10 -0
  66. package/dist/hooks/runtime-fallback/chat-message-handler.d.ts +20 -0
  67. package/dist/hooks/runtime-fallback/constants.d.ts +19 -0
  68. package/dist/hooks/runtime-fallback/error-classifier.d.ts +17 -0
  69. package/dist/hooks/runtime-fallback/event-handler.d.ts +8 -0
  70. package/dist/hooks/runtime-fallback/fallback-models.d.ts +2 -0
  71. package/dist/hooks/runtime-fallback/fallback-state.d.ts +6 -0
  72. package/dist/hooks/runtime-fallback/hook.d.ts +3 -0
  73. package/dist/hooks/runtime-fallback/index.d.ts +2 -0
  74. package/dist/hooks/runtime-fallback/message-update-handler.d.ts +5 -0
  75. package/dist/hooks/runtime-fallback/types.d.ts +59 -0
  76. package/dist/hooks/session-recovery/detect-error-type.d.ts +2 -1
  77. package/dist/hooks/session-recovery/recover-unavailable-tool.d.ts +5 -0
  78. package/dist/hooks/todo-continuation-enforcer/continuation-injection.d.ts +1 -0
  79. package/dist/hooks/todo-continuation-enforcer/countdown.d.ts +1 -0
  80. package/dist/hooks/write-existing-file-guard/hook.d.ts +1 -0
  81. package/dist/index.js +6179 -2820
  82. package/dist/oh-my-opencode.schema.json +3681 -0
  83. package/dist/plugin/chat-headers.d.ts +4 -0
  84. package/dist/plugin/chat-message.d.ts +9 -8
  85. package/dist/plugin/chat-params.d.ts +2 -3
  86. package/dist/plugin/event.d.ts +2 -6
  87. package/dist/plugin/hooks/create-core-hooks.d.ts +7 -5
  88. package/dist/plugin/hooks/create-session-hooks.d.ts +6 -6
  89. package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -1
  90. package/dist/plugin/hooks/create-transform-hooks.d.ts +1 -1
  91. package/dist/plugin/system-transform.d.ts +5 -0
  92. package/dist/plugin/types.d.ts +7 -1
  93. package/dist/plugin/ultrawork-db-model-override.d.ts +11 -0
  94. package/dist/plugin/ultrawork-model-override.d.ts +37 -0
  95. package/dist/shared/index.d.ts +3 -0
  96. package/dist/shared/internal-initiator-marker.d.ts +5 -0
  97. package/dist/shared/model-error-classifier.d.ts +31 -0
  98. package/dist/shared/model-resolution-pipeline.d.ts +1 -0
  99. package/dist/shared/model-resolver.d.ts +6 -0
  100. package/dist/shared/provider-model-id-transform.d.ts +1 -0
  101. package/dist/shared/session-category-registry.d.ts +32 -0
  102. package/dist/shared/session-model-state.d.ts +7 -0
  103. package/dist/shared/tmux/tmux-utils/layout.d.ts +17 -2
  104. package/dist/tools/delegate-task/background-task.d.ts +2 -1
  105. package/dist/tools/delegate-task/category-resolver.d.ts +2 -0
  106. package/dist/tools/delegate-task/skill-resolver.d.ts +1 -0
  107. package/dist/tools/delegate-task/subagent-resolver.d.ts +2 -0
  108. package/dist/tools/delegate-task/sync-task.d.ts +1 -1
  109. package/dist/tools/hashline-edit/constants.d.ts +5 -2
  110. package/dist/tools/hashline-edit/diff-utils.d.ts +6 -0
  111. package/dist/tools/hashline-edit/edit-operations.d.ts +4 -4
  112. package/dist/tools/hashline-edit/hash-computation.d.ts +1 -1
  113. package/dist/tools/hashline-edit/index.d.ts +1 -1
  114. package/dist/tools/hashline-edit/types.d.ts +4 -4
  115. package/dist/tools/hashline-edit/validation.d.ts +1 -0
  116. package/dist/tools/index.d.ts +2 -2
  117. package/dist/tools/skill/constants.d.ts +2 -2
  118. package/dist/tools/skill/types.d.ts +4 -0
  119. package/dist/tools/slashcommand/index.d.ts +1 -1
  120. package/dist/tools/slashcommand/types.d.ts +1 -7
  121. package/package.json +10 -10
  122. package/dist/hooks/ultrawork-model-override/hook.d.ts +0 -6
  123. package/dist/hooks/ultrawork-model-override/index.d.ts +0 -1
  124. package/dist/tools/slashcommand/skill-command-converter.d.ts +0 -3
  125. package/dist/tools/slashcommand/slashcommand-description.d.ts +0 -3
  126. package/dist/tools/slashcommand/slashcommand-tool.d.ts +0 -4
  127. package/dist/tools/slashcommand/tools.d.ts +0 -2
@@ -23,54 +23,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
23
23
  "frontend-ui-ux": "frontend-ui-ux";
24
24
  "git-master": "git-master";
25
25
  }>>>;
26
- disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
27
- atlas: "atlas";
28
- "ralph-loop": "ralph-loop";
29
- "start-work": "start-work";
30
- "todo-continuation-enforcer": "todo-continuation-enforcer";
31
- "context-window-monitor": "context-window-monitor";
32
- "session-recovery": "session-recovery";
33
- "session-notification": "session-notification";
34
- "comment-checker": "comment-checker";
35
- "grep-output-truncator": "grep-output-truncator";
36
- "tool-output-truncator": "tool-output-truncator";
37
- "question-label-truncator": "question-label-truncator";
38
- "directory-agents-injector": "directory-agents-injector";
39
- "directory-readme-injector": "directory-readme-injector";
40
- "empty-task-response-detector": "empty-task-response-detector";
41
- "think-mode": "think-mode";
42
- "anthropic-context-window-limit-recovery": "anthropic-context-window-limit-recovery";
43
- "preemptive-compaction": "preemptive-compaction";
44
- "rules-injector": "rules-injector";
45
- "background-notification": "background-notification";
46
- "auto-update-checker": "auto-update-checker";
47
- "startup-toast": "startup-toast";
48
- "keyword-detector": "keyword-detector";
49
- "agent-usage-reminder": "agent-usage-reminder";
50
- "non-interactive-env": "non-interactive-env";
51
- "interactive-bash-session": "interactive-bash-session";
52
- "thinking-block-validator": "thinking-block-validator";
53
- "ultrawork-model-override": "ultrawork-model-override";
54
- "category-skill-reminder": "category-skill-reminder";
55
- "compaction-context-injector": "compaction-context-injector";
56
- "compaction-todo-preserver": "compaction-todo-preserver";
57
- "claude-code-hooks": "claude-code-hooks";
58
- "auto-slash-command": "auto-slash-command";
59
- "edit-error-recovery": "edit-error-recovery";
60
- "json-error-recovery": "json-error-recovery";
61
- "delegate-task-retry": "delegate-task-retry";
62
- "prometheus-md-only": "prometheus-md-only";
63
- "sisyphus-junior-notepad": "sisyphus-junior-notepad";
64
- "no-sisyphus-gpt": "no-sisyphus-gpt";
65
- "unstable-agent-babysitter": "unstable-agent-babysitter";
66
- "task-reminder": "task-reminder";
67
- "task-resume-info": "task-resume-info";
68
- "stop-continuation-guard": "stop-continuation-guard";
69
- "tasks-todowrite-disabler": "tasks-todowrite-disabler";
70
- "write-existing-file-guard": "write-existing-file-guard";
71
- "anthropic-effort": "anthropic-effort";
72
- "hashline-read-enhancer": "hashline-read-enhancer";
73
- }>>>;
26
+ disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodString>>;
74
27
  disabled_commands: z.ZodOptional<z.ZodArray<z.ZodEnum<{
75
28
  "init-deep": "init-deep";
76
29
  "ralph-loop": "ralph-loop";
@@ -81,9 +34,11 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
81
34
  "stop-continuation": "stop-continuation";
82
35
  }>>>;
83
36
  disabled_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ hashline_edit: z.ZodOptional<z.ZodBoolean>;
84
38
  agents: z.ZodOptional<z.ZodObject<{
85
39
  build: z.ZodOptional<z.ZodObject<{
86
40
  model: z.ZodOptional<z.ZodString>;
41
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
87
42
  variant: z.ZodOptional<z.ZodString>;
88
43
  category: z.ZodOptional<z.ZodString>;
89
44
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -144,10 +99,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
144
99
  }>;
145
100
  budgetTokens: z.ZodOptional<z.ZodNumber>;
146
101
  }, z.core.$strip>>;
147
- ultrawork: z.ZodOptional<z.ZodObject<{
148
- model: z.ZodString;
149
- variant: z.ZodOptional<z.ZodString>;
150
- }, z.core.$strip>>;
151
102
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
152
103
  low: "low";
153
104
  medium: "medium";
@@ -160,9 +111,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
160
111
  high: "high";
161
112
  }>>;
162
113
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
114
+ ultrawork: z.ZodOptional<z.ZodObject<{
115
+ model: z.ZodOptional<z.ZodString>;
116
+ variant: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>>;
163
118
  }, z.core.$strip>>;
164
119
  plan: z.ZodOptional<z.ZodObject<{
165
120
  model: z.ZodOptional<z.ZodString>;
121
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
166
122
  variant: z.ZodOptional<z.ZodString>;
167
123
  category: z.ZodOptional<z.ZodString>;
168
124
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -223,10 +179,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
223
179
  }>;
224
180
  budgetTokens: z.ZodOptional<z.ZodNumber>;
225
181
  }, z.core.$strip>>;
226
- ultrawork: z.ZodOptional<z.ZodObject<{
227
- model: z.ZodString;
228
- variant: z.ZodOptional<z.ZodString>;
229
- }, z.core.$strip>>;
230
182
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
231
183
  low: "low";
232
184
  medium: "medium";
@@ -239,9 +191,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
239
191
  high: "high";
240
192
  }>>;
241
193
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
194
+ ultrawork: z.ZodOptional<z.ZodObject<{
195
+ model: z.ZodOptional<z.ZodString>;
196
+ variant: z.ZodOptional<z.ZodString>;
197
+ }, z.core.$strip>>;
242
198
  }, z.core.$strip>>;
243
199
  sisyphus: z.ZodOptional<z.ZodObject<{
244
200
  model: z.ZodOptional<z.ZodString>;
201
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
245
202
  variant: z.ZodOptional<z.ZodString>;
246
203
  category: z.ZodOptional<z.ZodString>;
247
204
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -302,10 +259,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
302
259
  }>;
303
260
  budgetTokens: z.ZodOptional<z.ZodNumber>;
304
261
  }, z.core.$strip>>;
305
- ultrawork: z.ZodOptional<z.ZodObject<{
306
- model: z.ZodString;
307
- variant: z.ZodOptional<z.ZodString>;
308
- }, z.core.$strip>>;
309
262
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
310
263
  low: "low";
311
264
  medium: "medium";
@@ -318,9 +271,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
318
271
  high: "high";
319
272
  }>>;
320
273
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
274
+ ultrawork: z.ZodOptional<z.ZodObject<{
275
+ model: z.ZodOptional<z.ZodString>;
276
+ variant: z.ZodOptional<z.ZodString>;
277
+ }, z.core.$strip>>;
321
278
  }, z.core.$strip>>;
322
279
  hephaestus: z.ZodOptional<z.ZodObject<{
323
280
  model: z.ZodOptional<z.ZodString>;
281
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
324
282
  variant: z.ZodOptional<z.ZodString>;
325
283
  category: z.ZodOptional<z.ZodString>;
326
284
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -381,10 +339,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
381
339
  }>;
382
340
  budgetTokens: z.ZodOptional<z.ZodNumber>;
383
341
  }, z.core.$strip>>;
384
- ultrawork: z.ZodOptional<z.ZodObject<{
385
- model: z.ZodString;
386
- variant: z.ZodOptional<z.ZodString>;
387
- }, z.core.$strip>>;
388
342
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
389
343
  low: "low";
390
344
  medium: "medium";
@@ -397,9 +351,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
397
351
  high: "high";
398
352
  }>>;
399
353
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
354
+ ultrawork: z.ZodOptional<z.ZodObject<{
355
+ model: z.ZodOptional<z.ZodString>;
356
+ variant: z.ZodOptional<z.ZodString>;
357
+ }, z.core.$strip>>;
400
358
  }, z.core.$strip>>;
401
359
  "sisyphus-junior": z.ZodOptional<z.ZodObject<{
402
360
  model: z.ZodOptional<z.ZodString>;
361
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
403
362
  variant: z.ZodOptional<z.ZodString>;
404
363
  category: z.ZodOptional<z.ZodString>;
405
364
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -460,10 +419,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
460
419
  }>;
461
420
  budgetTokens: z.ZodOptional<z.ZodNumber>;
462
421
  }, z.core.$strip>>;
463
- ultrawork: z.ZodOptional<z.ZodObject<{
464
- model: z.ZodString;
465
- variant: z.ZodOptional<z.ZodString>;
466
- }, z.core.$strip>>;
467
422
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
468
423
  low: "low";
469
424
  medium: "medium";
@@ -476,9 +431,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
476
431
  high: "high";
477
432
  }>>;
478
433
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
434
+ ultrawork: z.ZodOptional<z.ZodObject<{
435
+ model: z.ZodOptional<z.ZodString>;
436
+ variant: z.ZodOptional<z.ZodString>;
437
+ }, z.core.$strip>>;
479
438
  }, z.core.$strip>>;
480
439
  "OpenCode-Builder": z.ZodOptional<z.ZodObject<{
481
440
  model: z.ZodOptional<z.ZodString>;
441
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
482
442
  variant: z.ZodOptional<z.ZodString>;
483
443
  category: z.ZodOptional<z.ZodString>;
484
444
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -539,10 +499,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
539
499
  }>;
540
500
  budgetTokens: z.ZodOptional<z.ZodNumber>;
541
501
  }, z.core.$strip>>;
542
- ultrawork: z.ZodOptional<z.ZodObject<{
543
- model: z.ZodString;
544
- variant: z.ZodOptional<z.ZodString>;
545
- }, z.core.$strip>>;
546
502
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
547
503
  low: "low";
548
504
  medium: "medium";
@@ -555,9 +511,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
555
511
  high: "high";
556
512
  }>>;
557
513
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
514
+ ultrawork: z.ZodOptional<z.ZodObject<{
515
+ model: z.ZodOptional<z.ZodString>;
516
+ variant: z.ZodOptional<z.ZodString>;
517
+ }, z.core.$strip>>;
558
518
  }, z.core.$strip>>;
559
519
  prometheus: z.ZodOptional<z.ZodObject<{
560
520
  model: z.ZodOptional<z.ZodString>;
521
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
561
522
  variant: z.ZodOptional<z.ZodString>;
562
523
  category: z.ZodOptional<z.ZodString>;
563
524
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -618,10 +579,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
618
579
  }>;
619
580
  budgetTokens: z.ZodOptional<z.ZodNumber>;
620
581
  }, z.core.$strip>>;
621
- ultrawork: z.ZodOptional<z.ZodObject<{
622
- model: z.ZodString;
623
- variant: z.ZodOptional<z.ZodString>;
624
- }, z.core.$strip>>;
625
582
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
626
583
  low: "low";
627
584
  medium: "medium";
@@ -634,9 +591,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
634
591
  high: "high";
635
592
  }>>;
636
593
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
594
+ ultrawork: z.ZodOptional<z.ZodObject<{
595
+ model: z.ZodOptional<z.ZodString>;
596
+ variant: z.ZodOptional<z.ZodString>;
597
+ }, z.core.$strip>>;
637
598
  }, z.core.$strip>>;
638
599
  metis: z.ZodOptional<z.ZodObject<{
639
600
  model: z.ZodOptional<z.ZodString>;
601
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
640
602
  variant: z.ZodOptional<z.ZodString>;
641
603
  category: z.ZodOptional<z.ZodString>;
642
604
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -697,10 +659,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
697
659
  }>;
698
660
  budgetTokens: z.ZodOptional<z.ZodNumber>;
699
661
  }, z.core.$strip>>;
700
- ultrawork: z.ZodOptional<z.ZodObject<{
701
- model: z.ZodString;
702
- variant: z.ZodOptional<z.ZodString>;
703
- }, z.core.$strip>>;
704
662
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
705
663
  low: "low";
706
664
  medium: "medium";
@@ -713,9 +671,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
713
671
  high: "high";
714
672
  }>>;
715
673
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
674
+ ultrawork: z.ZodOptional<z.ZodObject<{
675
+ model: z.ZodOptional<z.ZodString>;
676
+ variant: z.ZodOptional<z.ZodString>;
677
+ }, z.core.$strip>>;
716
678
  }, z.core.$strip>>;
717
679
  momus: z.ZodOptional<z.ZodObject<{
718
680
  model: z.ZodOptional<z.ZodString>;
681
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
719
682
  variant: z.ZodOptional<z.ZodString>;
720
683
  category: z.ZodOptional<z.ZodString>;
721
684
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -776,10 +739,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
776
739
  }>;
777
740
  budgetTokens: z.ZodOptional<z.ZodNumber>;
778
741
  }, z.core.$strip>>;
779
- ultrawork: z.ZodOptional<z.ZodObject<{
780
- model: z.ZodString;
781
- variant: z.ZodOptional<z.ZodString>;
782
- }, z.core.$strip>>;
783
742
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
784
743
  low: "low";
785
744
  medium: "medium";
@@ -792,9 +751,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
792
751
  high: "high";
793
752
  }>>;
794
753
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
754
+ ultrawork: z.ZodOptional<z.ZodObject<{
755
+ model: z.ZodOptional<z.ZodString>;
756
+ variant: z.ZodOptional<z.ZodString>;
757
+ }, z.core.$strip>>;
795
758
  }, z.core.$strip>>;
796
759
  oracle: z.ZodOptional<z.ZodObject<{
797
760
  model: z.ZodOptional<z.ZodString>;
761
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
798
762
  variant: z.ZodOptional<z.ZodString>;
799
763
  category: z.ZodOptional<z.ZodString>;
800
764
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -855,10 +819,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
855
819
  }>;
856
820
  budgetTokens: z.ZodOptional<z.ZodNumber>;
857
821
  }, z.core.$strip>>;
858
- ultrawork: z.ZodOptional<z.ZodObject<{
859
- model: z.ZodString;
860
- variant: z.ZodOptional<z.ZodString>;
861
- }, z.core.$strip>>;
862
822
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
863
823
  low: "low";
864
824
  medium: "medium";
@@ -871,9 +831,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
871
831
  high: "high";
872
832
  }>>;
873
833
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
834
+ ultrawork: z.ZodOptional<z.ZodObject<{
835
+ model: z.ZodOptional<z.ZodString>;
836
+ variant: z.ZodOptional<z.ZodString>;
837
+ }, z.core.$strip>>;
874
838
  }, z.core.$strip>>;
875
839
  librarian: z.ZodOptional<z.ZodObject<{
876
840
  model: z.ZodOptional<z.ZodString>;
841
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
877
842
  variant: z.ZodOptional<z.ZodString>;
878
843
  category: z.ZodOptional<z.ZodString>;
879
844
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -934,10 +899,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
934
899
  }>;
935
900
  budgetTokens: z.ZodOptional<z.ZodNumber>;
936
901
  }, z.core.$strip>>;
937
- ultrawork: z.ZodOptional<z.ZodObject<{
938
- model: z.ZodString;
939
- variant: z.ZodOptional<z.ZodString>;
940
- }, z.core.$strip>>;
941
902
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
942
903
  low: "low";
943
904
  medium: "medium";
@@ -950,9 +911,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
950
911
  high: "high";
951
912
  }>>;
952
913
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
914
+ ultrawork: z.ZodOptional<z.ZodObject<{
915
+ model: z.ZodOptional<z.ZodString>;
916
+ variant: z.ZodOptional<z.ZodString>;
917
+ }, z.core.$strip>>;
953
918
  }, z.core.$strip>>;
954
919
  explore: z.ZodOptional<z.ZodObject<{
955
920
  model: z.ZodOptional<z.ZodString>;
921
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
956
922
  variant: z.ZodOptional<z.ZodString>;
957
923
  category: z.ZodOptional<z.ZodString>;
958
924
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1013,10 +979,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1013
979
  }>;
1014
980
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1015
981
  }, z.core.$strip>>;
1016
- ultrawork: z.ZodOptional<z.ZodObject<{
1017
- model: z.ZodString;
1018
- variant: z.ZodOptional<z.ZodString>;
1019
- }, z.core.$strip>>;
1020
982
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1021
983
  low: "low";
1022
984
  medium: "medium";
@@ -1029,9 +991,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1029
991
  high: "high";
1030
992
  }>>;
1031
993
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
994
+ ultrawork: z.ZodOptional<z.ZodObject<{
995
+ model: z.ZodOptional<z.ZodString>;
996
+ variant: z.ZodOptional<z.ZodString>;
997
+ }, z.core.$strip>>;
1032
998
  }, z.core.$strip>>;
1033
999
  "multimodal-looker": z.ZodOptional<z.ZodObject<{
1034
1000
  model: z.ZodOptional<z.ZodString>;
1001
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1035
1002
  variant: z.ZodOptional<z.ZodString>;
1036
1003
  category: z.ZodOptional<z.ZodString>;
1037
1004
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1092,10 +1059,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1092
1059
  }>;
1093
1060
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1094
1061
  }, z.core.$strip>>;
1095
- ultrawork: z.ZodOptional<z.ZodObject<{
1096
- model: z.ZodString;
1097
- variant: z.ZodOptional<z.ZodString>;
1098
- }, z.core.$strip>>;
1099
1062
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1100
1063
  low: "low";
1101
1064
  medium: "medium";
@@ -1108,9 +1071,14 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1108
1071
  high: "high";
1109
1072
  }>>;
1110
1073
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1074
+ ultrawork: z.ZodOptional<z.ZodObject<{
1075
+ model: z.ZodOptional<z.ZodString>;
1076
+ variant: z.ZodOptional<z.ZodString>;
1077
+ }, z.core.$strip>>;
1111
1078
  }, z.core.$strip>>;
1112
1079
  atlas: z.ZodOptional<z.ZodObject<{
1113
1080
  model: z.ZodOptional<z.ZodString>;
1081
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1114
1082
  variant: z.ZodOptional<z.ZodString>;
1115
1083
  category: z.ZodOptional<z.ZodString>;
1116
1084
  skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1171,10 +1139,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1171
1139
  }>;
1172
1140
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1173
1141
  }, z.core.$strip>>;
1174
- ultrawork: z.ZodOptional<z.ZodObject<{
1175
- model: z.ZodString;
1176
- variant: z.ZodOptional<z.ZodString>;
1177
- }, z.core.$strip>>;
1178
1142
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1179
1143
  low: "low";
1180
1144
  medium: "medium";
@@ -1187,11 +1151,16 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1187
1151
  high: "high";
1188
1152
  }>>;
1189
1153
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1154
+ ultrawork: z.ZodOptional<z.ZodObject<{
1155
+ model: z.ZodOptional<z.ZodString>;
1156
+ variant: z.ZodOptional<z.ZodString>;
1157
+ }, z.core.$strip>>;
1190
1158
  }, z.core.$strip>>;
1191
1159
  }, z.core.$strip>>;
1192
1160
  categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1193
1161
  description: z.ZodOptional<z.ZodString>;
1194
1162
  model: z.ZodOptional<z.ZodString>;
1163
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1195
1164
  variant: z.ZodOptional<z.ZodString>;
1196
1165
  temperature: z.ZodOptional<z.ZodNumber>;
1197
1166
  top_p: z.ZodOptional<z.ZodNumber>;
@@ -1271,7 +1240,9 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1271
1240
  task_system: z.ZodOptional<z.ZodBoolean>;
1272
1241
  plugin_load_timeout_ms: z.ZodOptional<z.ZodNumber>;
1273
1242
  safe_hook_creation: z.ZodOptional<z.ZodBoolean>;
1243
+ disable_omo_env: z.ZodOptional<z.ZodBoolean>;
1274
1244
  hashline_edit: z.ZodOptional<z.ZodBoolean>;
1245
+ model_fallback_title: z.ZodOptional<z.ZodBoolean>;
1275
1246
  }, z.core.$strip>>;
1276
1247
  auto_update: z.ZodOptional<z.ZodBoolean>;
1277
1248
  skills: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
@@ -1300,7 +1271,19 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1300
1271
  enabled: z.ZodDefault<z.ZodBoolean>;
1301
1272
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
1302
1273
  state_dir: z.ZodOptional<z.ZodString>;
1274
+ default_strategy: z.ZodDefault<z.ZodEnum<{
1275
+ reset: "reset";
1276
+ continue: "continue";
1277
+ }>>;
1303
1278
  }, z.core.$strip>>;
1279
+ runtime_fallback: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
1280
+ enabled: z.ZodOptional<z.ZodBoolean>;
1281
+ retry_on_errors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
1282
+ max_fallback_attempts: z.ZodOptional<z.ZodNumber>;
1283
+ cooldown_seconds: z.ZodOptional<z.ZodNumber>;
1284
+ timeout_seconds: z.ZodOptional<z.ZodNumber>;
1285
+ notify_on_fallback: z.ZodOptional<z.ZodBoolean>;
1286
+ }, z.core.$strip>]>>;
1304
1287
  background_task: z.ZodOptional<z.ZodObject<{
1305
1288
  defaultConcurrency: z.ZodOptional<z.ZodNumber>;
1306
1289
  providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
@@ -3,5 +3,9 @@ export declare const RalphLoopConfigSchema: z.ZodObject<{
3
3
  enabled: z.ZodDefault<z.ZodBoolean>;
4
4
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
5
5
  state_dir: z.ZodOptional<z.ZodString>;
6
+ default_strategy: z.ZodDefault<z.ZodEnum<{
7
+ reset: "reset";
8
+ continue: "continue";
9
+ }>>;
6
10
  }, z.core.$strip>;
7
11
  export type RalphLoopConfig = z.infer<typeof RalphLoopConfigSchema>;
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ export declare const RuntimeFallbackConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodOptional<z.ZodBoolean>;
4
+ retry_on_errors: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
5
+ max_fallback_attempts: z.ZodOptional<z.ZodNumber>;
6
+ cooldown_seconds: z.ZodOptional<z.ZodNumber>;
7
+ timeout_seconds: z.ZodOptional<z.ZodNumber>;
8
+ notify_on_fallback: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ export type RuntimeFallbackConfig = z.infer<typeof RuntimeFallbackConfigSchema>;
@@ -9,11 +9,13 @@ export * from "./schema/comment-checker";
9
9
  export * from "./schema/commands";
10
10
  export * from "./schema/dynamic-context-pruning";
11
11
  export * from "./schema/experimental";
12
+ export * from "./schema/fallback-models";
12
13
  export * from "./schema/git-master";
13
14
  export * from "./schema/hooks";
14
15
  export * from "./schema/notification";
15
16
  export * from "./schema/oh-my-opencode-config";
16
17
  export * from "./schema/ralph-loop";
18
+ export * from "./schema/runtime-fallback";
17
19
  export * from "./schema/skills";
18
20
  export * from "./schema/sisyphus";
19
21
  export * from "./schema/sisyphus-agent";
@@ -24,7 +24,7 @@ export declare function createHooks(args: {
24
24
  unstableAgentBabysitter: ReturnType<typeof import("./plugin/unstable-agent-babysitter").createUnstableAgentBabysitter> | null;
25
25
  backgroundNotificationHook: ReturnType<typeof import("./hooks").createBackgroundNotificationHook> | null;
26
26
  atlasHook: ReturnType<typeof import("./hooks").createAtlasHook> | null;
27
- claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook>;
27
+ claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook> | null;
28
28
  keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
29
29
  contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
30
30
  thinkingBlockValidator: ReturnType<typeof import("./hooks").createThinkingBlockValidatorHook> | null;
@@ -37,11 +37,13 @@ export declare function createHooks(args: {
37
37
  tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
38
38
  writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
39
39
  hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
40
+ jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
40
41
  contextWindowMonitor: ReturnType<typeof import("./hooks").createContextWindowMonitorHook> | null;
41
42
  preemptiveCompaction: ReturnType<typeof import("./hooks").createPreemptiveCompactionHook> | null;
42
43
  sessionRecovery: ReturnType<typeof import("./hooks").createSessionRecoveryHook> | null;
43
44
  sessionNotification: ReturnType<typeof import("./hooks").createSessionNotification> | null;
44
45
  thinkMode: ReturnType<typeof import("./hooks").createThinkModeHook> | null;
46
+ modelFallback: ReturnType<typeof import("./hooks").createModelFallbackHook> | null;
45
47
  anthropicContextWindowLimitRecovery: ReturnType<typeof import("./hooks").createAnthropicContextWindowLimitRecoveryHook> | null;
46
48
  autoUpdateChecker: ReturnType<typeof import("./hooks").createAutoUpdateCheckerHook> | null;
47
49
  agentUsageReminder: ReturnType<typeof import("./hooks").createAgentUsageReminderHook> | null;
@@ -49,14 +51,14 @@ export declare function createHooks(args: {
49
51
  interactiveBashSession: ReturnType<typeof import("./hooks").createInteractiveBashSessionHook> | null;
50
52
  ralphLoop: ReturnType<typeof import("./hooks").createRalphLoopHook> | null;
51
53
  editErrorRecovery: ReturnType<typeof import("./hooks").createEditErrorRecoveryHook> | null;
52
- jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
53
54
  delegateTaskRetry: ReturnType<typeof import("./hooks").createDelegateTaskRetryHook> | null;
54
55
  startWork: ReturnType<typeof import("./hooks").createStartWorkHook> | null;
55
56
  prometheusMdOnly: ReturnType<typeof import("./hooks").createPrometheusMdOnlyHook> | null;
56
57
  sisyphusJuniorNotepad: ReturnType<typeof import("./hooks").createSisyphusJuniorNotepadHook> | null;
57
58
  noSisyphusGpt: ReturnType<typeof import("./hooks").createNoSisyphusGptHook> | null;
58
- questionLabelTruncator: ReturnType<typeof import("./hooks").createQuestionLabelTruncatorHook>;
59
- taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook>;
59
+ noHephaestusNonGpt: ReturnType<typeof import("./hooks").createNoHephaestusNonGptHook> | null;
60
+ questionLabelTruncator: ReturnType<typeof import("./hooks").createQuestionLabelTruncatorHook> | null;
61
+ taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook> | null;
60
62
  anthropicEffort: ReturnType<typeof import("./hooks/anthropic-effort").createAnthropicEffortHook> | null;
61
- ultraworkModelOverride: ReturnType<typeof import("./hooks").createUltraworkModelOverrideHook> | null;
63
+ runtimeFallback: ReturnType<typeof import("./hooks").createRuntimeFallbackHook> | null;
62
64
  };
@@ -73,6 +73,7 @@ export declare class BackgroundManager {
73
73
  resume(input: ResumeInput): Promise<BackgroundTask>;
74
74
  private checkSessionTodos;
75
75
  handleEvent(event: Event): void;
76
+ private tryFallbackRetry;
76
77
  markForNotification(task: BackgroundTask): void;
77
78
  getPendingNotifications(sessionID: string): BackgroundTask[];
78
79
  clearNotifications(sessionID: string): void;
@@ -119,6 +120,8 @@ export declare class BackgroundManager {
119
120
  private formatDuration;
120
121
  private isAbortedSessionError;
121
122
  private getErrorText;
123
+ private extractErrorName;
124
+ private extractErrorMessage;
122
125
  private isRecord;
123
126
  private getSessionErrorMessage;
124
127
  private hasRunningTasks;
@@ -1,3 +1,4 @@
1
+ import type { FallbackEntry } from "../../shared/model-requirements";
1
2
  export type BackgroundTaskStatus = "pending" | "running" | "completed" | "error" | "cancelled" | "interrupt";
2
3
  export interface TaskProgress {
3
4
  toolCalls: number;
@@ -30,6 +31,10 @@ export interface BackgroundTask {
30
31
  modelID: string;
31
32
  variant?: string;
32
33
  };
34
+ /** Fallback chain for runtime retry on model errors */
35
+ fallbackChain?: FallbackEntry[];
36
+ /** Number of fallback retry attempts made */
37
+ attemptCount?: number;
33
38
  /** Active concurrency slot key */
34
39
  concurrencyKey?: string;
35
40
  /** Persistent key for re-acquiring concurrency on resume */
@@ -64,6 +69,8 @@ export interface LaunchInput {
64
69
  modelID: string;
65
70
  variant?: string;
66
71
  };
72
+ /** Fallback chain for runtime retry on model errors */
73
+ fallbackChain?: FallbackEntry[];
67
74
  isUnstableAgent?: boolean;
68
75
  skills?: string[];
69
76
  skillContent?: string;
@@ -1,2 +1,2 @@
1
- export declare const RALPH_LOOP_TEMPLATE = "You are starting a Ralph Loop - a self-referential development loop that runs until task completion.\n\n## How Ralph Loop Works\n\n1. You will work on the task continuously\n2. When you believe the task is FULLY complete, output: `<promise>{{COMPLETION_PROMISE}}</promise>`\n3. If you don't output the promise, the loop will automatically inject another prompt to continue\n4. Maximum iterations: Configurable (default 100)\n\n## Rules\n\n- Focus on completing the task fully, not partially\n- Don't output the completion promise until the task is truly done\n- Each iteration should make meaningful progress toward the goal\n- If stuck, try different approaches\n- Use todos to track your progress\n\n## Exit Conditions\n\n1. **Completion**: Output your completion promise tag when fully complete\n2. **Max Iterations**: Loop stops automatically at limit\n3. **Cancel**: User runs `/cancel-ralph` command\n\n## Your Task\n\nParse the arguments below and begin working on the task. The format is:\n`\"task description\" [--completion-promise=TEXT] [--max-iterations=N]`\n\nDefault completion promise is \"DONE\" and default max iterations is 100.";
1
+ export declare const RALPH_LOOP_TEMPLATE = "You are starting a Ralph Loop - a self-referential development loop that runs until task completion.\n\n## How Ralph Loop Works\n\n1. You will work on the task continuously\n2. When you believe the task is FULLY complete, output: `<promise>{{COMPLETION_PROMISE}}</promise>`\n3. If you don't output the promise, the loop will automatically inject another prompt to continue\n4. Maximum iterations: Configurable (default 100)\n\n## Rules\n\n- Focus on completing the task fully, not partially\n- Don't output the completion promise until the task is truly done\n- Each iteration should make meaningful progress toward the goal\n- If stuck, try different approaches\n- Use todos to track your progress\n\n## Exit Conditions\n\n1. **Completion**: Output your completion promise tag when fully complete\n2. **Max Iterations**: Loop stops automatically at limit\n3. **Cancel**: User runs `/cancel-ralph` command\n\n## Your Task\n\nParse the arguments below and begin working on the task. The format is:\n`\"task description\" [--completion-promise=TEXT] [--max-iterations=N] [--strategy=reset|continue]`\n\nDefault completion promise is \"DONE\" and default max iterations is 100.";
2
2
  export declare const CANCEL_RALPH_TEMPLATE = "Cancel the currently active Ralph Loop.\n\nThis will:\n1. Stop the loop from continuing\n2. Clear the loop state file\n3. Allow the session to end normally\n\nCheck if a loop is active and cancel it. Inform the user of the result.";
@@ -1,4 +1,5 @@
1
1
  export declare const subagentSessions: Set<string>;
2
+ export declare const syncSubagentSessions: Set<string>;
2
3
  export declare function setMainSession(id: string | undefined): void;
3
4
  export declare function getMainSessionID(): string | undefined;
4
5
  /** @internal For testing only */
@@ -10,6 +10,7 @@ export declare class TaskToastManager {
10
10
  setConcurrencyManager(manager: ConcurrencyManager): void;
11
11
  addTask(task: {
12
12
  id: string;
13
+ sessionID?: string;
13
14
  description: string;
14
15
  agent: string;
15
16
  isBackground: boolean;
@@ -22,6 +23,10 @@ export declare class TaskToastManager {
22
23
  * Update task status
23
24
  */
24
25
  updateTask(id: string, status: TaskStatus): void;
26
+ /**
27
+ * Update model info for a task by session ID
28
+ */
29
+ updateTaskModelBySession(sessionID: string, modelInfo: ModelFallbackInfo): void;
25
30
  /**
26
31
  * Remove completed/error task
27
32
  */
@@ -2,11 +2,12 @@ import type { ModelSource } from "../../shared/model-resolver";
2
2
  export type TaskStatus = "running" | "queued" | "completed" | "error";
3
3
  export interface ModelFallbackInfo {
4
4
  model: string;
5
- type: "user-defined" | "inherited" | "category-default" | "system-default";
5
+ type: "user-defined" | "inherited" | "category-default" | "system-default" | "runtime-fallback";
6
6
  source?: ModelSource;
7
7
  }
8
8
  export interface TrackedTask {
9
9
  id: string;
10
+ sessionID?: string;
10
11
  description: string;
11
12
  agent: string;
12
13
  status: TaskStatus;
@@ -1,6 +1,7 @@
1
- import type { PaneAction } from "./types";
2
- import type { ActionResult, ExecuteContext } from "./action-executor-core";
3
- export type { ActionExecutorDeps, ActionResult, ExecuteContext } from "./action-executor-core";
1
+ import type { TmuxConfig } from "../../config/schema";
2
+ import type { PaneAction, WindowState } from "./types";
3
+ import type { ActionResult } from "./action-executor-core";
4
+ export type { ActionExecutorDeps, ActionResult } from "./action-executor-core";
4
5
  export interface ExecuteActionsResult {
5
6
  success: boolean;
6
7
  spawnedPaneId?: string;
@@ -9,5 +10,11 @@ export interface ExecuteActionsResult {
9
10
  result: ActionResult;
10
11
  }>;
11
12
  }
13
+ export interface ExecuteContext {
14
+ config: TmuxConfig;
15
+ serverUrl: string;
16
+ windowState: WindowState;
17
+ sourcePaneId?: string;
18
+ }
12
19
  export declare function executeAction(action: PaneAction, ctx: ExecuteContext): Promise<ActionResult>;
13
20
  export declare function executeActions(actions: PaneAction[], ctx: ExecuteContext): Promise<ExecuteActionsResult>;