oh-my-opencode 2.5.1 → 2.5.3

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 (45) hide show
  1. package/LICENSE.md +82 -0
  2. package/README.ja.md +79 -40
  3. package/README.ko.md +78 -39
  4. package/README.md +79 -40
  5. package/README.zh-cn.md +79 -40
  6. package/dist/agents/build-prompt.d.ts +31 -0
  7. package/dist/agents/document-writer.d.ts +1 -0
  8. package/dist/agents/explore.d.ts +1 -0
  9. package/dist/agents/frontend-ui-ux-engineer.d.ts +1 -0
  10. package/dist/agents/librarian.d.ts +1 -0
  11. package/dist/agents/multimodal-looker.d.ts +1 -0
  12. package/dist/agents/types.d.ts +3 -1
  13. package/dist/cli/config-manager.d.ts +0 -1
  14. package/dist/cli/index.js +1664 -3
  15. package/dist/cli/run/completion.d.ts +2 -0
  16. package/dist/cli/run/completion.test.d.ts +1 -0
  17. package/dist/cli/run/events.d.ts +7 -0
  18. package/dist/cli/run/events.test.d.ts +1 -0
  19. package/dist/cli/run/index.d.ts +2 -0
  20. package/dist/cli/run/runner.d.ts +2 -0
  21. package/dist/cli/run/types.d.ts +45 -0
  22. package/dist/config/schema.d.ts +126 -2
  23. package/dist/hooks/claude-code-hooks/config-loader.d.ts +1 -0
  24. package/dist/hooks/claude-code-hooks/index.d.ts +5 -0
  25. package/dist/hooks/claude-code-hooks/pre-compact.d.ts +16 -0
  26. package/dist/hooks/claude-code-hooks/types.d.ts +17 -1
  27. package/dist/hooks/non-interactive-env/detector.d.ts +1 -0
  28. package/dist/hooks/non-interactive-env/index.d.ts +1 -0
  29. package/dist/hooks/session-notification.test.d.ts +1 -0
  30. package/dist/hooks/todo-continuation-enforcer.d.ts +5 -1
  31. package/dist/index.js +1143 -339
  32. package/dist/shared/data-path.d.ts +15 -0
  33. package/dist/shared/index.d.ts +1 -0
  34. package/dist/tools/index.d.ts +52 -0
  35. package/dist/tools/session-manager/constants.d.ts +11 -0
  36. package/dist/tools/session-manager/index.d.ts +3 -0
  37. package/dist/tools/session-manager/storage.d.ts +8 -0
  38. package/dist/tools/session-manager/storage.test.d.ts +1 -0
  39. package/dist/tools/session-manager/tools.d.ts +52 -0
  40. package/dist/tools/session-manager/tools.test.d.ts +1 -0
  41. package/dist/tools/session-manager/types.d.ts +71 -0
  42. package/dist/tools/session-manager/utils.d.ts +11 -0
  43. package/dist/tools/session-manager/utils.test.d.ts +1 -0
  44. package/package.json +3 -2
  45. package/LICENSE +0 -21
@@ -0,0 +1,2 @@
1
+ import type { RunContext } from "./types";
2
+ export declare function checkCompletionConditions(ctx: RunContext): Promise<boolean>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { RunContext } from "./types";
2
+ export interface EventState {
3
+ mainSessionIdle: boolean;
4
+ lastOutput: string;
5
+ }
6
+ export declare function createEventState(): EventState;
7
+ export declare function processEvents(ctx: RunContext, stream: AsyncIterable<unknown>, state: EventState): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { run } from "./runner";
2
+ export type { RunOptions, RunContext } from "./types";
@@ -0,0 +1,2 @@
1
+ import type { RunOptions } from "./types";
2
+ export declare function run(options: RunOptions): Promise<number>;
@@ -0,0 +1,45 @@
1
+ import type { OpencodeClient } from "@opencode-ai/sdk";
2
+ export interface RunOptions {
3
+ message: string;
4
+ agent?: string;
5
+ directory?: string;
6
+ timeout?: number;
7
+ }
8
+ export interface RunContext {
9
+ client: OpencodeClient;
10
+ sessionID: string;
11
+ directory: string;
12
+ abortController: AbortController;
13
+ }
14
+ export interface Todo {
15
+ id: string;
16
+ content: string;
17
+ status: string;
18
+ priority: string;
19
+ }
20
+ export interface SessionStatus {
21
+ type: "idle" | "busy" | "retry";
22
+ }
23
+ export interface ChildSession {
24
+ id: string;
25
+ }
26
+ export interface EventPayload {
27
+ type: string;
28
+ properties?: Record<string, unknown>;
29
+ }
30
+ export interface SessionIdleProps {
31
+ sessionID?: string;
32
+ }
33
+ export interface SessionStatusProps {
34
+ sessionID?: string;
35
+ status?: {
36
+ type?: string;
37
+ };
38
+ }
39
+ export interface MessageUpdatedProps {
40
+ info?: {
41
+ sessionID?: string;
42
+ role?: string;
43
+ };
44
+ content?: string;
45
+ }
@@ -18,6 +18,7 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
18
18
  "multimodal-looker": "multimodal-looker";
19
19
  build: "build";
20
20
  plan: "plan";
21
+ "Builder-Sisyphus": "Builder-Sisyphus";
21
22
  "Planner-Sisyphus": "Planner-Sisyphus";
22
23
  }>;
23
24
  export declare const AgentNameSchema: z.ZodEnum<{
@@ -57,6 +58,7 @@ export declare const AgentOverrideConfigSchema: z.ZodObject<{
57
58
  temperature: z.ZodOptional<z.ZodNumber>;
58
59
  top_p: z.ZodOptional<z.ZodNumber>;
59
60
  prompt: z.ZodOptional<z.ZodString>;
61
+ prompt_append: z.ZodOptional<z.ZodString>;
60
62
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
61
63
  disable: z.ZodOptional<z.ZodBoolean>;
62
64
  description: z.ZodOptional<z.ZodString>;
@@ -104,6 +106,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
104
106
  temperature: z.ZodOptional<z.ZodNumber>;
105
107
  top_p: z.ZodOptional<z.ZodNumber>;
106
108
  prompt: z.ZodOptional<z.ZodString>;
109
+ prompt_append: z.ZodOptional<z.ZodString>;
107
110
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
108
111
  disable: z.ZodOptional<z.ZodBoolean>;
109
112
  description: z.ZodOptional<z.ZodString>;
@@ -150,6 +153,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
150
153
  temperature: z.ZodOptional<z.ZodNumber>;
151
154
  top_p: z.ZodOptional<z.ZodNumber>;
152
155
  prompt: z.ZodOptional<z.ZodString>;
156
+ prompt_append: z.ZodOptional<z.ZodString>;
153
157
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
154
158
  disable: z.ZodOptional<z.ZodBoolean>;
155
159
  description: z.ZodOptional<z.ZodString>;
@@ -196,6 +200,54 @@ export declare const AgentOverridesSchema: z.ZodObject<{
196
200
  temperature: z.ZodOptional<z.ZodNumber>;
197
201
  top_p: z.ZodOptional<z.ZodNumber>;
198
202
  prompt: z.ZodOptional<z.ZodString>;
203
+ prompt_append: z.ZodOptional<z.ZodString>;
204
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
205
+ disable: z.ZodOptional<z.ZodBoolean>;
206
+ description: z.ZodOptional<z.ZodString>;
207
+ mode: z.ZodOptional<z.ZodEnum<{
208
+ primary: "primary";
209
+ subagent: "subagent";
210
+ all: "all";
211
+ }>>;
212
+ color: z.ZodOptional<z.ZodString>;
213
+ permission: z.ZodOptional<z.ZodObject<{
214
+ edit: z.ZodOptional<z.ZodEnum<{
215
+ allow: "allow";
216
+ deny: "deny";
217
+ ask: "ask";
218
+ }>>;
219
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
220
+ allow: "allow";
221
+ deny: "deny";
222
+ ask: "ask";
223
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
224
+ allow: "allow";
225
+ deny: "deny";
226
+ ask: "ask";
227
+ }>>]>>;
228
+ webfetch: z.ZodOptional<z.ZodEnum<{
229
+ allow: "allow";
230
+ deny: "deny";
231
+ ask: "ask";
232
+ }>>;
233
+ doom_loop: z.ZodOptional<z.ZodEnum<{
234
+ allow: "allow";
235
+ deny: "deny";
236
+ ask: "ask";
237
+ }>>;
238
+ external_directory: z.ZodOptional<z.ZodEnum<{
239
+ allow: "allow";
240
+ deny: "deny";
241
+ ask: "ask";
242
+ }>>;
243
+ }, z.core.$strip>>;
244
+ }, z.core.$strip>>;
245
+ "Builder-Sisyphus": z.ZodOptional<z.ZodObject<{
246
+ model: z.ZodOptional<z.ZodString>;
247
+ temperature: z.ZodOptional<z.ZodNumber>;
248
+ top_p: z.ZodOptional<z.ZodNumber>;
249
+ prompt: z.ZodOptional<z.ZodString>;
250
+ prompt_append: z.ZodOptional<z.ZodString>;
199
251
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
200
252
  disable: z.ZodOptional<z.ZodBoolean>;
201
253
  description: z.ZodOptional<z.ZodString>;
@@ -242,6 +294,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
242
294
  temperature: z.ZodOptional<z.ZodNumber>;
243
295
  top_p: z.ZodOptional<z.ZodNumber>;
244
296
  prompt: z.ZodOptional<z.ZodString>;
297
+ prompt_append: z.ZodOptional<z.ZodString>;
245
298
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
246
299
  disable: z.ZodOptional<z.ZodBoolean>;
247
300
  description: z.ZodOptional<z.ZodString>;
@@ -288,6 +341,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
288
341
  temperature: z.ZodOptional<z.ZodNumber>;
289
342
  top_p: z.ZodOptional<z.ZodNumber>;
290
343
  prompt: z.ZodOptional<z.ZodString>;
344
+ prompt_append: z.ZodOptional<z.ZodString>;
291
345
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
292
346
  disable: z.ZodOptional<z.ZodBoolean>;
293
347
  description: z.ZodOptional<z.ZodString>;
@@ -334,6 +388,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
334
388
  temperature: z.ZodOptional<z.ZodNumber>;
335
389
  top_p: z.ZodOptional<z.ZodNumber>;
336
390
  prompt: z.ZodOptional<z.ZodString>;
391
+ prompt_append: z.ZodOptional<z.ZodString>;
337
392
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
338
393
  disable: z.ZodOptional<z.ZodBoolean>;
339
394
  description: z.ZodOptional<z.ZodString>;
@@ -380,6 +435,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
380
435
  temperature: z.ZodOptional<z.ZodNumber>;
381
436
  top_p: z.ZodOptional<z.ZodNumber>;
382
437
  prompt: z.ZodOptional<z.ZodString>;
438
+ prompt_append: z.ZodOptional<z.ZodString>;
383
439
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
384
440
  disable: z.ZodOptional<z.ZodBoolean>;
385
441
  description: z.ZodOptional<z.ZodString>;
@@ -426,6 +482,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
426
482
  temperature: z.ZodOptional<z.ZodNumber>;
427
483
  top_p: z.ZodOptional<z.ZodNumber>;
428
484
  prompt: z.ZodOptional<z.ZodString>;
485
+ prompt_append: z.ZodOptional<z.ZodString>;
429
486
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
430
487
  disable: z.ZodOptional<z.ZodBoolean>;
431
488
  description: z.ZodOptional<z.ZodString>;
@@ -472,6 +529,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
472
529
  temperature: z.ZodOptional<z.ZodNumber>;
473
530
  top_p: z.ZodOptional<z.ZodNumber>;
474
531
  prompt: z.ZodOptional<z.ZodString>;
532
+ prompt_append: z.ZodOptional<z.ZodString>;
475
533
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
476
534
  disable: z.ZodOptional<z.ZodBoolean>;
477
535
  description: z.ZodOptional<z.ZodString>;
@@ -518,6 +576,7 @@ export declare const AgentOverridesSchema: z.ZodObject<{
518
576
  temperature: z.ZodOptional<z.ZodNumber>;
519
577
  top_p: z.ZodOptional<z.ZodNumber>;
520
578
  prompt: z.ZodOptional<z.ZodString>;
579
+ prompt_append: z.ZodOptional<z.ZodString>;
521
580
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
522
581
  disable: z.ZodOptional<z.ZodBoolean>;
523
582
  description: z.ZodOptional<z.ZodString>;
@@ -569,13 +628,17 @@ export declare const ClaudeCodeConfigSchema: z.ZodObject<{
569
628
  }, z.core.$strip>;
570
629
  export declare const SisyphusAgentConfigSchema: z.ZodObject<{
571
630
  disabled: z.ZodOptional<z.ZodBoolean>;
631
+ builder_enabled: z.ZodOptional<z.ZodBoolean>;
632
+ planner_enabled: z.ZodOptional<z.ZodBoolean>;
633
+ replace_build: z.ZodOptional<z.ZodBoolean>;
634
+ replace_plan: z.ZodOptional<z.ZodBoolean>;
572
635
  }, z.core.$strip>;
573
636
  export declare const ExperimentalConfigSchema: z.ZodObject<{
574
637
  aggressive_truncation: z.ZodOptional<z.ZodBoolean>;
575
638
  auto_resume: z.ZodOptional<z.ZodBoolean>;
576
639
  preemptive_compaction: z.ZodOptional<z.ZodBoolean>;
577
640
  preemptive_compaction_threshold: z.ZodOptional<z.ZodNumber>;
578
- truncate_all_tool_outputs: z.ZodOptional<z.ZodBoolean>;
641
+ truncate_all_tool_outputs: z.ZodDefault<z.ZodBoolean>;
579
642
  }, z.core.$strip>;
580
643
  export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
581
644
  $schema: z.ZodOptional<z.ZodString>;
@@ -622,6 +685,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
622
685
  temperature: z.ZodOptional<z.ZodNumber>;
623
686
  top_p: z.ZodOptional<z.ZodNumber>;
624
687
  prompt: z.ZodOptional<z.ZodString>;
688
+ prompt_append: z.ZodOptional<z.ZodString>;
625
689
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
626
690
  disable: z.ZodOptional<z.ZodBoolean>;
627
691
  description: z.ZodOptional<z.ZodString>;
@@ -668,6 +732,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
668
732
  temperature: z.ZodOptional<z.ZodNumber>;
669
733
  top_p: z.ZodOptional<z.ZodNumber>;
670
734
  prompt: z.ZodOptional<z.ZodString>;
735
+ prompt_append: z.ZodOptional<z.ZodString>;
671
736
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
672
737
  disable: z.ZodOptional<z.ZodBoolean>;
673
738
  description: z.ZodOptional<z.ZodString>;
@@ -714,6 +779,54 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
714
779
  temperature: z.ZodOptional<z.ZodNumber>;
715
780
  top_p: z.ZodOptional<z.ZodNumber>;
716
781
  prompt: z.ZodOptional<z.ZodString>;
782
+ prompt_append: z.ZodOptional<z.ZodString>;
783
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
784
+ disable: z.ZodOptional<z.ZodBoolean>;
785
+ description: z.ZodOptional<z.ZodString>;
786
+ mode: z.ZodOptional<z.ZodEnum<{
787
+ primary: "primary";
788
+ subagent: "subagent";
789
+ all: "all";
790
+ }>>;
791
+ color: z.ZodOptional<z.ZodString>;
792
+ permission: z.ZodOptional<z.ZodObject<{
793
+ edit: z.ZodOptional<z.ZodEnum<{
794
+ allow: "allow";
795
+ deny: "deny";
796
+ ask: "ask";
797
+ }>>;
798
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
799
+ allow: "allow";
800
+ deny: "deny";
801
+ ask: "ask";
802
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
803
+ allow: "allow";
804
+ deny: "deny";
805
+ ask: "ask";
806
+ }>>]>>;
807
+ webfetch: z.ZodOptional<z.ZodEnum<{
808
+ allow: "allow";
809
+ deny: "deny";
810
+ ask: "ask";
811
+ }>>;
812
+ doom_loop: z.ZodOptional<z.ZodEnum<{
813
+ allow: "allow";
814
+ deny: "deny";
815
+ ask: "ask";
816
+ }>>;
817
+ external_directory: z.ZodOptional<z.ZodEnum<{
818
+ allow: "allow";
819
+ deny: "deny";
820
+ ask: "ask";
821
+ }>>;
822
+ }, z.core.$strip>>;
823
+ }, z.core.$strip>>;
824
+ "Builder-Sisyphus": z.ZodOptional<z.ZodObject<{
825
+ model: z.ZodOptional<z.ZodString>;
826
+ temperature: z.ZodOptional<z.ZodNumber>;
827
+ top_p: z.ZodOptional<z.ZodNumber>;
828
+ prompt: z.ZodOptional<z.ZodString>;
829
+ prompt_append: z.ZodOptional<z.ZodString>;
717
830
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
718
831
  disable: z.ZodOptional<z.ZodBoolean>;
719
832
  description: z.ZodOptional<z.ZodString>;
@@ -760,6 +873,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
760
873
  temperature: z.ZodOptional<z.ZodNumber>;
761
874
  top_p: z.ZodOptional<z.ZodNumber>;
762
875
  prompt: z.ZodOptional<z.ZodString>;
876
+ prompt_append: z.ZodOptional<z.ZodString>;
763
877
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
764
878
  disable: z.ZodOptional<z.ZodBoolean>;
765
879
  description: z.ZodOptional<z.ZodString>;
@@ -806,6 +920,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
806
920
  temperature: z.ZodOptional<z.ZodNumber>;
807
921
  top_p: z.ZodOptional<z.ZodNumber>;
808
922
  prompt: z.ZodOptional<z.ZodString>;
923
+ prompt_append: z.ZodOptional<z.ZodString>;
809
924
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
810
925
  disable: z.ZodOptional<z.ZodBoolean>;
811
926
  description: z.ZodOptional<z.ZodString>;
@@ -852,6 +967,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
852
967
  temperature: z.ZodOptional<z.ZodNumber>;
853
968
  top_p: z.ZodOptional<z.ZodNumber>;
854
969
  prompt: z.ZodOptional<z.ZodString>;
970
+ prompt_append: z.ZodOptional<z.ZodString>;
855
971
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
856
972
  disable: z.ZodOptional<z.ZodBoolean>;
857
973
  description: z.ZodOptional<z.ZodString>;
@@ -898,6 +1014,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
898
1014
  temperature: z.ZodOptional<z.ZodNumber>;
899
1015
  top_p: z.ZodOptional<z.ZodNumber>;
900
1016
  prompt: z.ZodOptional<z.ZodString>;
1017
+ prompt_append: z.ZodOptional<z.ZodString>;
901
1018
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
902
1019
  disable: z.ZodOptional<z.ZodBoolean>;
903
1020
  description: z.ZodOptional<z.ZodString>;
@@ -944,6 +1061,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
944
1061
  temperature: z.ZodOptional<z.ZodNumber>;
945
1062
  top_p: z.ZodOptional<z.ZodNumber>;
946
1063
  prompt: z.ZodOptional<z.ZodString>;
1064
+ prompt_append: z.ZodOptional<z.ZodString>;
947
1065
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
948
1066
  disable: z.ZodOptional<z.ZodBoolean>;
949
1067
  description: z.ZodOptional<z.ZodString>;
@@ -990,6 +1108,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
990
1108
  temperature: z.ZodOptional<z.ZodNumber>;
991
1109
  top_p: z.ZodOptional<z.ZodNumber>;
992
1110
  prompt: z.ZodOptional<z.ZodString>;
1111
+ prompt_append: z.ZodOptional<z.ZodString>;
993
1112
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
994
1113
  disable: z.ZodOptional<z.ZodBoolean>;
995
1114
  description: z.ZodOptional<z.ZodString>;
@@ -1036,6 +1155,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1036
1155
  temperature: z.ZodOptional<z.ZodNumber>;
1037
1156
  top_p: z.ZodOptional<z.ZodNumber>;
1038
1157
  prompt: z.ZodOptional<z.ZodString>;
1158
+ prompt_append: z.ZodOptional<z.ZodString>;
1039
1159
  tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1040
1160
  disable: z.ZodOptional<z.ZodBoolean>;
1041
1161
  description: z.ZodOptional<z.ZodString>;
@@ -1088,13 +1208,17 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1088
1208
  google_auth: z.ZodOptional<z.ZodBoolean>;
1089
1209
  sisyphus_agent: z.ZodOptional<z.ZodObject<{
1090
1210
  disabled: z.ZodOptional<z.ZodBoolean>;
1211
+ builder_enabled: z.ZodOptional<z.ZodBoolean>;
1212
+ planner_enabled: z.ZodOptional<z.ZodBoolean>;
1213
+ replace_build: z.ZodOptional<z.ZodBoolean>;
1214
+ replace_plan: z.ZodOptional<z.ZodBoolean>;
1091
1215
  }, z.core.$strip>>;
1092
1216
  experimental: z.ZodOptional<z.ZodObject<{
1093
1217
  aggressive_truncation: z.ZodOptional<z.ZodBoolean>;
1094
1218
  auto_resume: z.ZodOptional<z.ZodBoolean>;
1095
1219
  preemptive_compaction: z.ZodOptional<z.ZodBoolean>;
1096
1220
  preemptive_compaction_threshold: z.ZodOptional<z.ZodNumber>;
1097
- truncate_all_tool_outputs: z.ZodOptional<z.ZodBoolean>;
1221
+ truncate_all_tool_outputs: z.ZodDefault<z.ZodBoolean>;
1098
1222
  }, z.core.$strip>>;
1099
1223
  auto_update: z.ZodOptional<z.ZodBoolean>;
1100
1224
  }, z.core.$strip>;
@@ -4,6 +4,7 @@ export interface DisabledHooksConfig {
4
4
  PreToolUse?: string[];
5
5
  PostToolUse?: string[];
6
6
  UserPromptSubmit?: string[];
7
+ PreCompact?: string[];
7
8
  }
8
9
  export interface PluginExtendedConfig {
9
10
  disabledHooks?: DisabledHooksConfig;
@@ -1,6 +1,11 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import type { PluginConfig } from "./types";
3
3
  export declare function createClaudeCodeHooksHook(ctx: PluginInput, config?: PluginConfig): {
4
+ "experimental.session.compacting": (input: {
5
+ sessionID: string;
6
+ }, output: {
7
+ context: string[];
8
+ }) => Promise<void>;
4
9
  "chat.message": (input: {
5
10
  sessionID: string;
6
11
  agent?: string;
@@ -0,0 +1,16 @@
1
+ import type { ClaudeHooksConfig } from "./types";
2
+ import { type PluginExtendedConfig } from "./config-loader";
3
+ export interface PreCompactContext {
4
+ sessionId: string;
5
+ cwd: string;
6
+ }
7
+ export interface PreCompactResult {
8
+ context: string[];
9
+ elapsedMs?: number;
10
+ hookName?: string;
11
+ continue?: boolean;
12
+ stopReason?: string;
13
+ suppressOutput?: boolean;
14
+ systemMessage?: string;
15
+ }
16
+ export declare function executePreCompactHooks(ctx: PreCompactContext, config: ClaudeHooksConfig | null, extendedConfig?: PluginExtendedConfig | null): Promise<PreCompactResult>;
@@ -2,7 +2,7 @@
2
2
  * Claude Code Hooks Type Definitions
3
3
  * Maps Claude Code hook concepts to OpenCode plugin events
4
4
  */
5
- export type ClaudeHookEvent = "PreToolUse" | "PostToolUse" | "UserPromptSubmit" | "Stop";
5
+ export type ClaudeHookEvent = "PreToolUse" | "PostToolUse" | "UserPromptSubmit" | "Stop" | "PreCompact";
6
6
  export interface HookMatcher {
7
7
  matcher: string;
8
8
  hooks: HookCommand[];
@@ -16,6 +16,7 @@ export interface ClaudeHooksConfig {
16
16
  PostToolUse?: HookMatcher[];
17
17
  UserPromptSubmit?: HookMatcher[];
18
18
  Stop?: HookMatcher[];
19
+ PreCompact?: HookMatcher[];
19
20
  }
20
21
  export interface PreToolUseInput {
21
22
  session_id: string;
@@ -67,6 +68,12 @@ export interface StopInput {
67
68
  todo_path?: string;
68
69
  hook_source?: HookSource;
69
70
  }
71
+ export interface PreCompactInput {
72
+ session_id: string;
73
+ cwd: string;
74
+ hook_event_name: "PreCompact";
75
+ hook_source?: HookSource;
76
+ }
70
77
  export type PermissionDecision = "allow" | "deny" | "ask";
71
78
  /**
72
79
  * Common JSON fields for all hook outputs (Claude Code spec)
@@ -141,6 +148,15 @@ export interface StopOutput {
141
148
  permission_mode?: PermissionMode;
142
149
  inject_prompt?: string;
143
150
  }
151
+ export interface PreCompactOutput extends HookCommonOutput {
152
+ /** Additional context to inject into compaction prompt */
153
+ context?: string[];
154
+ hookSpecificOutput?: {
155
+ hookEventName: "PreCompact";
156
+ /** Additional context strings to inject */
157
+ additionalContext?: string[];
158
+ };
159
+ }
144
160
  export type ClaudeCodeContent = {
145
161
  type: "text";
146
162
  text: string;
@@ -0,0 +1 @@
1
+ export declare function isNonInteractive(): boolean;
@@ -1,5 +1,6 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  export * from "./constants";
3
+ export * from "./detector";
3
4
  export * from "./types";
4
5
  export declare function createNonInteractiveEnvHook(_ctx: PluginInput): {
5
6
  "tool.execute.before": (input: {
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,8 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { BackgroundManager } from "../features/background-agent";
3
+ export interface TodoContinuationEnforcerOptions {
4
+ backgroundManager?: BackgroundManager;
5
+ }
2
6
  export interface TodoContinuationEnforcer {
3
7
  handler: (input: {
4
8
  event: {
@@ -9,4 +13,4 @@ export interface TodoContinuationEnforcer {
9
13
  markRecovering: (sessionID: string) => void;
10
14
  markRecoveryComplete: (sessionID: string) => void;
11
15
  }
12
- export declare function createTodoContinuationEnforcer(ctx: PluginInput): TodoContinuationEnforcer;
16
+ export declare function createTodoContinuationEnforcer(ctx: PluginInput, options?: TodoContinuationEnforcerOptions): TodoContinuationEnforcer;