oh-my-opencode 3.7.3 → 3.7.4

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 (43) hide show
  1. package/README.ja.md +8 -8
  2. package/README.ko.md +8 -8
  3. package/README.md +8 -8
  4. package/README.zh-cn.md +8 -8
  5. package/dist/agents/atlas/default.d.ts +1 -1
  6. package/dist/agents/atlas/gpt.d.ts +1 -1
  7. package/dist/agents/metis.d.ts +1 -1
  8. package/dist/agents/prometheus/behavioral-summary.d.ts +1 -1
  9. package/dist/agents/prometheus/identity-constraints.d.ts +1 -1
  10. package/dist/agents/prometheus/interview-mode.d.ts +1 -1
  11. package/dist/agents/prometheus/plan-generation.d.ts +1 -1
  12. package/dist/agents/prometheus/plan-template.d.ts +1 -1
  13. package/dist/agents/prometheus/system-prompt.d.ts +1 -1
  14. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  15. package/dist/cli/config-manager/antigravity-provider-configuration.d.ts +2 -2
  16. package/dist/cli/index.js +187 -83
  17. package/dist/cli/model-fallback-types.d.ts +5 -0
  18. package/dist/cli/run/event-state.d.ts +4 -0
  19. package/dist/cli/run/stdin-suppression.d.ts +12 -0
  20. package/dist/config/schema/agent-overrides.d.ts +60 -0
  21. package/dist/config/schema/hooks.d.ts +2 -1
  22. package/dist/config/schema/oh-my-opencode-config.d.ts +58 -1
  23. package/dist/create-hooks.d.ts +2 -1
  24. package/dist/features/background-agent/parent-session-context-resolver.d.ts +1 -0
  25. package/dist/hooks/atlas/recent-model-resolver.d.ts +6 -0
  26. package/dist/hooks/atlas/system-reminder-templates.d.ts +1 -1
  27. package/dist/hooks/index.d.ts +2 -1
  28. package/dist/hooks/{sisyphus-gpt-hephaestus-reminder → no-sisyphus-gpt}/hook.d.ts +6 -1
  29. package/dist/hooks/no-sisyphus-gpt/index.d.ts +1 -0
  30. package/dist/hooks/session-recovery/types.d.ts +1 -0
  31. package/dist/hooks/ultrawork-model-override/hook.d.ts +6 -0
  32. package/dist/hooks/ultrawork-model-override/index.d.ts +1 -0
  33. package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +1 -0
  34. package/dist/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.d.ts +2 -0
  35. package/dist/index.js +559 -453
  36. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -1
  37. package/dist/plugin/hooks/create-session-hooks.d.ts +4 -2
  38. package/dist/shared/index.d.ts +1 -0
  39. package/dist/shared/prompt-tools.d.ts +3 -0
  40. package/dist/tools/delegate-task/constants.d.ts +1 -1
  41. package/package.json +8 -8
  42. package/dist/cli/run/opencode-bin-path.d.ts +0 -3
  43. package/dist/hooks/sisyphus-gpt-hephaestus-reminder/index.d.ts +0 -1
@@ -61,6 +61,10 @@ export declare const AgentOverrideConfigSchema: z.ZodObject<{
61
61
  }>;
62
62
  budgetTokens: z.ZodOptional<z.ZodNumber>;
63
63
  }, z.core.$strip>>;
64
+ ultrawork: z.ZodOptional<z.ZodObject<{
65
+ model: z.ZodString;
66
+ variant: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>>;
64
68
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
65
69
  low: "low";
66
70
  medium: "medium";
@@ -137,6 +141,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
137
141
  }>;
138
142
  budgetTokens: z.ZodOptional<z.ZodNumber>;
139
143
  }, z.core.$strip>>;
144
+ ultrawork: z.ZodOptional<z.ZodObject<{
145
+ model: z.ZodString;
146
+ variant: z.ZodOptional<z.ZodString>;
147
+ }, z.core.$strip>>;
140
148
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
141
149
  low: "low";
142
150
  medium: "medium";
@@ -212,6 +220,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
212
220
  }>;
213
221
  budgetTokens: z.ZodOptional<z.ZodNumber>;
214
222
  }, z.core.$strip>>;
223
+ ultrawork: z.ZodOptional<z.ZodObject<{
224
+ model: z.ZodString;
225
+ variant: z.ZodOptional<z.ZodString>;
226
+ }, z.core.$strip>>;
215
227
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
216
228
  low: "low";
217
229
  medium: "medium";
@@ -287,6 +299,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
287
299
  }>;
288
300
  budgetTokens: z.ZodOptional<z.ZodNumber>;
289
301
  }, z.core.$strip>>;
302
+ ultrawork: z.ZodOptional<z.ZodObject<{
303
+ model: z.ZodString;
304
+ variant: z.ZodOptional<z.ZodString>;
305
+ }, z.core.$strip>>;
290
306
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
291
307
  low: "low";
292
308
  medium: "medium";
@@ -362,6 +378,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
362
378
  }>;
363
379
  budgetTokens: z.ZodOptional<z.ZodNumber>;
364
380
  }, z.core.$strip>>;
381
+ ultrawork: z.ZodOptional<z.ZodObject<{
382
+ model: z.ZodString;
383
+ variant: z.ZodOptional<z.ZodString>;
384
+ }, z.core.$strip>>;
365
385
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
366
386
  low: "low";
367
387
  medium: "medium";
@@ -437,6 +457,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
437
457
  }>;
438
458
  budgetTokens: z.ZodOptional<z.ZodNumber>;
439
459
  }, z.core.$strip>>;
460
+ ultrawork: z.ZodOptional<z.ZodObject<{
461
+ model: z.ZodString;
462
+ variant: z.ZodOptional<z.ZodString>;
463
+ }, z.core.$strip>>;
440
464
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
441
465
  low: "low";
442
466
  medium: "medium";
@@ -512,6 +536,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
512
536
  }>;
513
537
  budgetTokens: z.ZodOptional<z.ZodNumber>;
514
538
  }, z.core.$strip>>;
539
+ ultrawork: z.ZodOptional<z.ZodObject<{
540
+ model: z.ZodString;
541
+ variant: z.ZodOptional<z.ZodString>;
542
+ }, z.core.$strip>>;
515
543
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
516
544
  low: "low";
517
545
  medium: "medium";
@@ -587,6 +615,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
587
615
  }>;
588
616
  budgetTokens: z.ZodOptional<z.ZodNumber>;
589
617
  }, z.core.$strip>>;
618
+ ultrawork: z.ZodOptional<z.ZodObject<{
619
+ model: z.ZodString;
620
+ variant: z.ZodOptional<z.ZodString>;
621
+ }, z.core.$strip>>;
590
622
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
591
623
  low: "low";
592
624
  medium: "medium";
@@ -662,6 +694,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
662
694
  }>;
663
695
  budgetTokens: z.ZodOptional<z.ZodNumber>;
664
696
  }, z.core.$strip>>;
697
+ ultrawork: z.ZodOptional<z.ZodObject<{
698
+ model: z.ZodString;
699
+ variant: z.ZodOptional<z.ZodString>;
700
+ }, z.core.$strip>>;
665
701
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
666
702
  low: "low";
667
703
  medium: "medium";
@@ -737,6 +773,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
737
773
  }>;
738
774
  budgetTokens: z.ZodOptional<z.ZodNumber>;
739
775
  }, z.core.$strip>>;
776
+ ultrawork: z.ZodOptional<z.ZodObject<{
777
+ model: z.ZodString;
778
+ variant: z.ZodOptional<z.ZodString>;
779
+ }, z.core.$strip>>;
740
780
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
741
781
  low: "low";
742
782
  medium: "medium";
@@ -812,6 +852,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
812
852
  }>;
813
853
  budgetTokens: z.ZodOptional<z.ZodNumber>;
814
854
  }, z.core.$strip>>;
855
+ ultrawork: z.ZodOptional<z.ZodObject<{
856
+ model: z.ZodString;
857
+ variant: z.ZodOptional<z.ZodString>;
858
+ }, z.core.$strip>>;
815
859
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
816
860
  low: "low";
817
861
  medium: "medium";
@@ -887,6 +931,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
887
931
  }>;
888
932
  budgetTokens: z.ZodOptional<z.ZodNumber>;
889
933
  }, z.core.$strip>>;
934
+ ultrawork: z.ZodOptional<z.ZodObject<{
935
+ model: z.ZodString;
936
+ variant: z.ZodOptional<z.ZodString>;
937
+ }, z.core.$strip>>;
890
938
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
891
939
  low: "low";
892
940
  medium: "medium";
@@ -962,6 +1010,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
962
1010
  }>;
963
1011
  budgetTokens: z.ZodOptional<z.ZodNumber>;
964
1012
  }, z.core.$strip>>;
1013
+ ultrawork: z.ZodOptional<z.ZodObject<{
1014
+ model: z.ZodString;
1015
+ variant: z.ZodOptional<z.ZodString>;
1016
+ }, z.core.$strip>>;
965
1017
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
966
1018
  low: "low";
967
1019
  medium: "medium";
@@ -1037,6 +1089,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
1037
1089
  }>;
1038
1090
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1039
1091
  }, z.core.$strip>>;
1092
+ ultrawork: z.ZodOptional<z.ZodObject<{
1093
+ model: z.ZodString;
1094
+ variant: z.ZodOptional<z.ZodString>;
1095
+ }, z.core.$strip>>;
1040
1096
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1041
1097
  low: "low";
1042
1098
  medium: "medium";
@@ -1112,6 +1168,10 @@ export declare const AgentOverridesSchema: z.ZodObject<{
1112
1168
  }>;
1113
1169
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1114
1170
  }, z.core.$strip>>;
1171
+ ultrawork: z.ZodOptional<z.ZodObject<{
1172
+ model: z.ZodString;
1173
+ variant: z.ZodOptional<z.ZodString>;
1174
+ }, z.core.$strip>>;
1115
1175
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1116
1176
  low: "low";
1117
1177
  medium: "medium";
@@ -26,6 +26,7 @@ export declare const HookNameSchema: z.ZodEnum<{
26
26
  "non-interactive-env": "non-interactive-env";
27
27
  "interactive-bash-session": "interactive-bash-session";
28
28
  "thinking-block-validator": "thinking-block-validator";
29
+ "ultrawork-model-override": "ultrawork-model-override";
29
30
  "category-skill-reminder": "category-skill-reminder";
30
31
  "compaction-context-injector": "compaction-context-injector";
31
32
  "compaction-todo-preserver": "compaction-todo-preserver";
@@ -36,7 +37,7 @@ export declare const HookNameSchema: z.ZodEnum<{
36
37
  "delegate-task-retry": "delegate-task-retry";
37
38
  "prometheus-md-only": "prometheus-md-only";
38
39
  "sisyphus-junior-notepad": "sisyphus-junior-notepad";
39
- "sisyphus-gpt-hephaestus-reminder": "sisyphus-gpt-hephaestus-reminder";
40
+ "no-sisyphus-gpt": "no-sisyphus-gpt";
40
41
  "unstable-agent-babysitter": "unstable-agent-babysitter";
41
42
  "task-reminder": "task-reminder";
42
43
  "task-resume-info": "task-resume-info";
@@ -50,6 +50,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
50
50
  "non-interactive-env": "non-interactive-env";
51
51
  "interactive-bash-session": "interactive-bash-session";
52
52
  "thinking-block-validator": "thinking-block-validator";
53
+ "ultrawork-model-override": "ultrawork-model-override";
53
54
  "category-skill-reminder": "category-skill-reminder";
54
55
  "compaction-context-injector": "compaction-context-injector";
55
56
  "compaction-todo-preserver": "compaction-todo-preserver";
@@ -60,7 +61,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
60
61
  "delegate-task-retry": "delegate-task-retry";
61
62
  "prometheus-md-only": "prometheus-md-only";
62
63
  "sisyphus-junior-notepad": "sisyphus-junior-notepad";
63
- "sisyphus-gpt-hephaestus-reminder": "sisyphus-gpt-hephaestus-reminder";
64
+ "no-sisyphus-gpt": "no-sisyphus-gpt";
64
65
  "unstable-agent-babysitter": "unstable-agent-babysitter";
65
66
  "task-reminder": "task-reminder";
66
67
  "task-resume-info": "task-resume-info";
@@ -143,6 +144,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
143
144
  }>;
144
145
  budgetTokens: z.ZodOptional<z.ZodNumber>;
145
146
  }, z.core.$strip>>;
147
+ ultrawork: z.ZodOptional<z.ZodObject<{
148
+ model: z.ZodString;
149
+ variant: z.ZodOptional<z.ZodString>;
150
+ }, z.core.$strip>>;
146
151
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
147
152
  low: "low";
148
153
  medium: "medium";
@@ -218,6 +223,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
218
223
  }>;
219
224
  budgetTokens: z.ZodOptional<z.ZodNumber>;
220
225
  }, z.core.$strip>>;
226
+ ultrawork: z.ZodOptional<z.ZodObject<{
227
+ model: z.ZodString;
228
+ variant: z.ZodOptional<z.ZodString>;
229
+ }, z.core.$strip>>;
221
230
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
222
231
  low: "low";
223
232
  medium: "medium";
@@ -293,6 +302,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
293
302
  }>;
294
303
  budgetTokens: z.ZodOptional<z.ZodNumber>;
295
304
  }, z.core.$strip>>;
305
+ ultrawork: z.ZodOptional<z.ZodObject<{
306
+ model: z.ZodString;
307
+ variant: z.ZodOptional<z.ZodString>;
308
+ }, z.core.$strip>>;
296
309
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
297
310
  low: "low";
298
311
  medium: "medium";
@@ -368,6 +381,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
368
381
  }>;
369
382
  budgetTokens: z.ZodOptional<z.ZodNumber>;
370
383
  }, z.core.$strip>>;
384
+ ultrawork: z.ZodOptional<z.ZodObject<{
385
+ model: z.ZodString;
386
+ variant: z.ZodOptional<z.ZodString>;
387
+ }, z.core.$strip>>;
371
388
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
372
389
  low: "low";
373
390
  medium: "medium";
@@ -443,6 +460,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
443
460
  }>;
444
461
  budgetTokens: z.ZodOptional<z.ZodNumber>;
445
462
  }, z.core.$strip>>;
463
+ ultrawork: z.ZodOptional<z.ZodObject<{
464
+ model: z.ZodString;
465
+ variant: z.ZodOptional<z.ZodString>;
466
+ }, z.core.$strip>>;
446
467
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
447
468
  low: "low";
448
469
  medium: "medium";
@@ -518,6 +539,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
518
539
  }>;
519
540
  budgetTokens: z.ZodOptional<z.ZodNumber>;
520
541
  }, z.core.$strip>>;
542
+ ultrawork: z.ZodOptional<z.ZodObject<{
543
+ model: z.ZodString;
544
+ variant: z.ZodOptional<z.ZodString>;
545
+ }, z.core.$strip>>;
521
546
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
522
547
  low: "low";
523
548
  medium: "medium";
@@ -593,6 +618,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
593
618
  }>;
594
619
  budgetTokens: z.ZodOptional<z.ZodNumber>;
595
620
  }, z.core.$strip>>;
621
+ ultrawork: z.ZodOptional<z.ZodObject<{
622
+ model: z.ZodString;
623
+ variant: z.ZodOptional<z.ZodString>;
624
+ }, z.core.$strip>>;
596
625
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
597
626
  low: "low";
598
627
  medium: "medium";
@@ -668,6 +697,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
668
697
  }>;
669
698
  budgetTokens: z.ZodOptional<z.ZodNumber>;
670
699
  }, z.core.$strip>>;
700
+ ultrawork: z.ZodOptional<z.ZodObject<{
701
+ model: z.ZodString;
702
+ variant: z.ZodOptional<z.ZodString>;
703
+ }, z.core.$strip>>;
671
704
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
672
705
  low: "low";
673
706
  medium: "medium";
@@ -743,6 +776,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
743
776
  }>;
744
777
  budgetTokens: z.ZodOptional<z.ZodNumber>;
745
778
  }, z.core.$strip>>;
779
+ ultrawork: z.ZodOptional<z.ZodObject<{
780
+ model: z.ZodString;
781
+ variant: z.ZodOptional<z.ZodString>;
782
+ }, z.core.$strip>>;
746
783
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
747
784
  low: "low";
748
785
  medium: "medium";
@@ -818,6 +855,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
818
855
  }>;
819
856
  budgetTokens: z.ZodOptional<z.ZodNumber>;
820
857
  }, z.core.$strip>>;
858
+ ultrawork: z.ZodOptional<z.ZodObject<{
859
+ model: z.ZodString;
860
+ variant: z.ZodOptional<z.ZodString>;
861
+ }, z.core.$strip>>;
821
862
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
822
863
  low: "low";
823
864
  medium: "medium";
@@ -893,6 +934,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
893
934
  }>;
894
935
  budgetTokens: z.ZodOptional<z.ZodNumber>;
895
936
  }, z.core.$strip>>;
937
+ ultrawork: z.ZodOptional<z.ZodObject<{
938
+ model: z.ZodString;
939
+ variant: z.ZodOptional<z.ZodString>;
940
+ }, z.core.$strip>>;
896
941
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
897
942
  low: "low";
898
943
  medium: "medium";
@@ -968,6 +1013,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
968
1013
  }>;
969
1014
  budgetTokens: z.ZodOptional<z.ZodNumber>;
970
1015
  }, z.core.$strip>>;
1016
+ ultrawork: z.ZodOptional<z.ZodObject<{
1017
+ model: z.ZodString;
1018
+ variant: z.ZodOptional<z.ZodString>;
1019
+ }, z.core.$strip>>;
971
1020
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
972
1021
  low: "low";
973
1022
  medium: "medium";
@@ -1043,6 +1092,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1043
1092
  }>;
1044
1093
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1045
1094
  }, z.core.$strip>>;
1095
+ ultrawork: z.ZodOptional<z.ZodObject<{
1096
+ model: z.ZodString;
1097
+ variant: z.ZodOptional<z.ZodString>;
1098
+ }, z.core.$strip>>;
1046
1099
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1047
1100
  low: "low";
1048
1101
  medium: "medium";
@@ -1118,6 +1171,10 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1118
1171
  }>;
1119
1172
  budgetTokens: z.ZodOptional<z.ZodNumber>;
1120
1173
  }, z.core.$strip>>;
1174
+ ultrawork: z.ZodOptional<z.ZodObject<{
1175
+ model: z.ZodString;
1176
+ variant: z.ZodOptional<z.ZodString>;
1177
+ }, z.core.$strip>>;
1121
1178
  reasoningEffort: z.ZodOptional<z.ZodEnum<{
1122
1179
  low: "low";
1123
1180
  medium: "medium";
@@ -54,8 +54,9 @@ export declare function createHooks(args: {
54
54
  startWork: ReturnType<typeof import("./hooks").createStartWorkHook> | null;
55
55
  prometheusMdOnly: ReturnType<typeof import("./hooks").createPrometheusMdOnlyHook> | null;
56
56
  sisyphusJuniorNotepad: ReturnType<typeof import("./hooks").createSisyphusJuniorNotepadHook> | null;
57
- sisyphusGptHephaestusReminder: ReturnType<typeof import("./hooks").createSisyphusGptHephaestusReminderHook> | null;
57
+ noSisyphusGpt: ReturnType<typeof import("./hooks").createNoSisyphusGptHook> | null;
58
58
  questionLabelTruncator: ReturnType<typeof import("./hooks").createQuestionLabelTruncatorHook>;
59
59
  taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook>;
60
60
  anthropicEffort: ReturnType<typeof import("./hooks/anthropic-effort").createAnthropicEffortHook> | null;
61
+ ultraworkModelOverride: ReturnType<typeof import("./hooks").createUltraworkModelOverrideHook> | null;
61
62
  };
@@ -10,5 +10,6 @@ export declare function resolveParentSessionAgentAndModel(input: {
10
10
  }): Promise<{
11
11
  agent?: string;
12
12
  model?: AgentModel;
13
+ tools?: Record<string, boolean>;
13
14
  }>;
14
15
  export {};
@@ -1,3 +1,9 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import type { ModelInfo } from "./types";
3
+ type PromptContext = {
4
+ model?: ModelInfo;
5
+ tools?: Record<string, boolean>;
6
+ };
7
+ export declare function resolveRecentPromptContextForSession(ctx: PluginInput, sessionID: string): Promise<PromptContext>;
3
8
  export declare function resolveRecentModelForSession(ctx: PluginInput, sessionID: string): Promise<ModelInfo | undefined>;
9
+ export {};
@@ -1,5 +1,5 @@
1
1
  export declare const DIRECT_WORK_REMINDER: string;
2
2
  export declare const BOULDER_CONTINUATION_PROMPT: string;
3
- export declare const VERIFICATION_REMINDER = "**MANDATORY: WHAT YOU MUST DO RIGHT NOW**\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nCRITICAL: Subagents FREQUENTLY LIE about completion.\nTests FAILING, code has ERRORS, implementation INCOMPLETE - but they say \"done\".\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n**STEP 1: AUTOMATED VERIFICATION (DO THIS FIRST)**\n\nRun these commands YOURSELF - do NOT trust agent's claims:\n1. `lsp_diagnostics` on changed files \u2192 Must be CLEAN\n2. `bash` to run tests \u2192 Must PASS\n3. `bash` to run build/typecheck \u2192 Must succeed\n\n**STEP 2: MANUAL CODE REVIEW (NON-NEGOTIABLE \u2014 DO NOT SKIP)**\n\nAutomated checks are NECESSARY but INSUFFICIENT. You MUST read the actual code.\n\n**RIGHT NOW \u2014 `Read` EVERY file the subagent touched. No exceptions.**\n\nFor EACH changed file, verify:\n1. Does the implementation logic ACTUALLY match the task requirements?\n2. Are there incomplete stubs (TODO comments, placeholder code, hardcoded values)?\n3. Are there logic errors, off-by-one bugs, or missing edge cases?\n4. Does it follow existing codebase patterns and conventions?\n5. Are imports correct? No unused or missing imports?\n6. Is error handling present where needed?\n\n**Cross-check the subagent's claims against reality:**\n- Subagent said \"Updated X\" \u2192 READ X. Is it actually updated?\n- Subagent said \"Added tests\" \u2192 READ tests. Do they test the RIGHT behavior?\n- Subagent said \"Follows patterns\" \u2192 COMPARE with reference. Does it actually?\n\n**If you cannot explain what the changed code does, you have not reviewed it.**\n**If you skip this step, you are rubber-stamping broken work.**\n\n**STEP 3: DETERMINE IF HANDS-ON QA IS NEEDED**\n\n| Deliverable Type | QA Method | Tool |\n|------------------|-----------|------|\n| **Frontend/UI** | Browser interaction | `/playwright` skill |\n| **TUI/CLI** | Run interactively | `interactive_bash` (tmux) |\n| **API/Backend** | Send real requests | `bash` with curl |\n\nStatic analysis CANNOT catch: visual bugs, animation issues, user flow breakages.\n\n**STEP 4: IF QA IS NEEDED - ADD TO TODO IMMEDIATELY**\n\n```\ntodowrite([\n { id: \"qa-X\", content: \"HANDS-ON QA: [specific verification action]\", status: \"pending\", priority: \"high\" }\n])\n```\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n**BLOCKING: DO NOT proceed until Steps 1-4 are ALL completed.**\n**Skipping Step 2 (manual code review) = unverified work = FAILURE.**";
3
+ export declare const VERIFICATION_REMINDER = "**THE SUBAGENT JUST CLAIMED THIS TASK IS DONE. THEY ARE PROBABLY LYING.**\n\nSubagents say \"done\" when code has errors, tests pass trivially, logic is wrong,\nor they quietly added features nobody asked for. This happens EVERY TIME.\nAssume the work is broken until YOU prove otherwise.\n\n---\n\n**PHASE 1: READ THE CODE FIRST (before running anything)**\n\nDo NOT run tests yet. Read the code FIRST so you know what you're testing.\n\n1. `Bash(\"git diff --stat\")` \u2014 see exactly which files changed. Any file outside expected scope = scope creep.\n2. `Read` EVERY changed file \u2014 no exceptions, no skimming.\n3. For EACH file, critically ask:\n - Does this code ACTUALLY do what the task required? (Re-read the task, compare line by line)\n - Any stubs, TODOs, placeholders, hardcoded values? (`Grep` for TODO, FIXME, HACK, xxx)\n - Logic errors? Trace the happy path AND the error path in your head.\n - Anti-patterns? (`Grep` for `as any`, `@ts-ignore`, empty catch, console.log in changed files)\n - Scope creep? Did the subagent touch things or add features NOT in the task spec?\n4. Cross-check every claim:\n - Said \"Updated X\" \u2014 READ X. Actually updated, or just superficially touched?\n - Said \"Added tests\" \u2014 READ the tests. Do they test REAL behavior or just `expect(true).toBe(true)`?\n - Said \"Follows patterns\" \u2014 OPEN a reference file. Does it ACTUALLY match?\n\n**If you cannot explain what every changed line does, you have NOT reviewed it.**\n\n**PHASE 2: RUN AUTOMATED CHECKS (targeted, then broad)**\n\nNow that you understand the code, verify mechanically:\n1. `lsp_diagnostics` on EACH changed file \u2014 ZERO new errors\n2. Run tests for changed modules FIRST, then full suite\n3. Build/typecheck \u2014 exit 0\n\nIf Phase 1 found issues but Phase 2 passes: Phase 2 is WRONG. The code has bugs that tests don't cover. Fix the code.\n\n**PHASE 3: HANDS-ON QA \u2014 ACTUALLY RUN IT (MANDATORY for user-facing changes)**\n\nTests and linters CANNOT catch: visual bugs, wrong CLI output, broken user flows, API response shape issues.\n\n**If this task produced anything a user would SEE or INTERACT with, you MUST launch it and verify yourself.**\n\n- **Frontend/UI**: `/playwright` skill \u2014 load the page, click through the flow, check console. Verify: page loads, interactions work, console clean, responsive.\n- **TUI/CLI**: `interactive_bash` \u2014 run the command, try good input, try bad input, try --help. Verify: command runs, output correct, error messages helpful, edge inputs handled.\n- **API/Backend**: `Bash` with curl \u2014 hit the endpoint, check response body, send malformed input. Verify: returns 200, body correct, error cases return proper errors.\n- **Config/Build**: Actually start the service or import the config. Verify: loads without error, backward compatible.\n\nThis is NOT optional \"if applicable\". If the deliverable is user-facing and you did not run it, you are shipping untested work.\n\n**PHASE 4: GATE DECISION \u2014 Should you proceed to the next task?**\n\nAnswer honestly:\n1. Can I explain what EVERY changed line does? (If no \u2014 back to Phase 1)\n2. Did I SEE it work with my own eyes? (If user-facing and no \u2014 back to Phase 3)\n3. Am I confident nothing existing is broken? (If no \u2014 run broader tests)\n\nALL three must be YES. \"Probably\" = NO. \"I think so\" = NO. Investigate until CERTAIN.\n\n- **All 3 YES** \u2014 Proceed: mark task complete, move to next.\n- **Any NO** \u2014 Reject: resume session with `session_id`, fix the specific issue.\n- **Unsure** \u2014 Reject: \"unsure\" = \"no\". Investigate until you have a definitive answer.\n\n**DO NOT proceed to the next task until all 4 phases are complete and the gate passes.**";
4
4
  export declare const ORCHESTRATOR_DELEGATION_REQUIRED: string;
5
5
  export declare const SINGLE_TASK_DIRECTIVE: string;
@@ -24,7 +24,7 @@ export { createInteractiveBashSessionHook } from "./interactive-bash-session";
24
24
  export { createThinkingBlockValidatorHook } from "./thinking-block-validator";
25
25
  export { createCategorySkillReminderHook } from "./category-skill-reminder";
26
26
  export { createRalphLoopHook, type RalphLoopHook } from "./ralph-loop";
27
- export { createSisyphusGptHephaestusReminderHook } from "./sisyphus-gpt-hephaestus-reminder";
27
+ export { createNoSisyphusGptHook } from "./no-sisyphus-gpt";
28
28
  export { createAutoSlashCommandHook } from "./auto-slash-command";
29
29
  export { createEditErrorRecoveryHook } from "./edit-error-recovery";
30
30
  export { createJsonErrorRecoveryHook } from "./json-error-recovery";
@@ -43,3 +43,4 @@ export { createPreemptiveCompactionHook } from "./preemptive-compaction";
43
43
  export { createTasksTodowriteDisablerHook } from "./tasks-todowrite-disabler";
44
44
  export { createWriteExistingFileGuardHook } from "./write-existing-file-guard";
45
45
  export { createHashlineReadEnhancerHook } from "./hashline-read-enhancer";
46
+ export { createUltraworkModelOverrideHook } from "./ultrawork-model-override";
@@ -1,5 +1,5 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
- export declare function createSisyphusGptHephaestusReminderHook(ctx: PluginInput): {
2
+ export declare function createNoSisyphusGptHook(ctx: PluginInput): {
3
3
  "chat.message": (input: {
4
4
  sessionID: string;
5
5
  agent?: string;
@@ -7,5 +7,10 @@ export declare function createSisyphusGptHephaestusReminderHook(ctx: PluginInput
7
7
  providerID: string;
8
8
  modelID: string;
9
9
  };
10
+ }, output?: {
11
+ message?: {
12
+ agent?: string;
13
+ [key: string]: unknown;
14
+ };
10
15
  }) => Promise<void>;
11
16
  };
@@ -0,0 +1 @@
1
+ export { createNoSisyphusGptHook } from "./hook";
@@ -87,4 +87,5 @@ export interface ResumeConfig {
87
87
  providerID: string;
88
88
  modelID: string;
89
89
  };
90
+ tools?: Record<string, boolean>;
90
91
  }
@@ -0,0 +1,6 @@
1
+ import type { AgentOverrides } from "../../config";
2
+ export declare function createUltraworkModelOverrideHook(args: {
3
+ agents?: AgentOverrides;
4
+ }): {
5
+ "chat.params": (input: unknown, output: unknown) => Promise<void>;
6
+ };
@@ -0,0 +1 @@
1
+ export { createUltraworkModelOverrideHook } from "./hook";
@@ -9,6 +9,7 @@ type MessageInfo = {
9
9
  };
10
10
  providerID?: string;
11
11
  modelID?: string;
12
+ tools?: Record<string, boolean | "allow" | "deny" | "ask">;
12
13
  };
13
14
  type MessagePart = {
14
15
  type?: string;
@@ -27,6 +27,7 @@ type BabysitterContext = {
27
27
  providerID: string;
28
28
  modelID: string;
29
29
  };
30
+ tools?: Record<string, boolean>;
30
31
  };
31
32
  query?: {
32
33
  directory?: string;
@@ -46,6 +47,7 @@ type BabysitterContext = {
46
47
  providerID: string;
47
48
  modelID: string;
48
49
  };
50
+ tools?: Record<string, boolean>;
49
51
  };
50
52
  query?: {
51
53
  directory?: string;