oh-my-opencode 3.0.0-beta.1 → 3.0.0-beta.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.
@@ -8,6 +8,8 @@ export declare const BuiltinAgentNameSchema: z.ZodEnum<{
8
8
  "document-writer": "document-writer";
9
9
  "multimodal-looker": "multimodal-looker";
10
10
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
11
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
12
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
11
13
  }>;
12
14
  export declare const BuiltinSkillNameSchema: z.ZodEnum<{
13
15
  playwright: "playwright";
@@ -23,6 +25,8 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
23
25
  "document-writer": "document-writer";
24
26
  "multimodal-looker": "multimodal-looker";
25
27
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
28
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
29
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
26
30
  build: "build";
27
31
  plan: "plan";
28
32
  "OpenCode-Builder": "OpenCode-Builder";
@@ -37,6 +41,8 @@ export declare const AgentNameSchema: z.ZodEnum<{
37
41
  "document-writer": "document-writer";
38
42
  "multimodal-looker": "multimodal-looker";
39
43
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
44
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
45
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
40
46
  }>;
41
47
  export declare const HookNameSchema: z.ZodEnum<{
42
48
  "todo-continuation-enforcer": "todo-continuation-enforcer";
@@ -419,6 +425,55 @@ export declare const AgentOverridesSchema: z.ZodObject<{
419
425
  }>>;
420
426
  }, z.core.$strip>>;
421
427
  }, z.core.$strip>>;
428
+ "Momus (Plan Reviewer)": z.ZodOptional<z.ZodObject<{
429
+ model: z.ZodOptional<z.ZodString>;
430
+ category: z.ZodOptional<z.ZodString>;
431
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
432
+ temperature: z.ZodOptional<z.ZodNumber>;
433
+ top_p: z.ZodOptional<z.ZodNumber>;
434
+ prompt: z.ZodOptional<z.ZodString>;
435
+ prompt_append: z.ZodOptional<z.ZodString>;
436
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
437
+ disable: z.ZodOptional<z.ZodBoolean>;
438
+ description: z.ZodOptional<z.ZodString>;
439
+ mode: z.ZodOptional<z.ZodEnum<{
440
+ subagent: "subagent";
441
+ primary: "primary";
442
+ all: "all";
443
+ }>>;
444
+ color: z.ZodOptional<z.ZodString>;
445
+ permission: z.ZodOptional<z.ZodObject<{
446
+ edit: z.ZodOptional<z.ZodEnum<{
447
+ allow: "allow";
448
+ ask: "ask";
449
+ deny: "deny";
450
+ }>>;
451
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
452
+ allow: "allow";
453
+ ask: "ask";
454
+ deny: "deny";
455
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
456
+ allow: "allow";
457
+ ask: "ask";
458
+ deny: "deny";
459
+ }>>]>>;
460
+ webfetch: z.ZodOptional<z.ZodEnum<{
461
+ allow: "allow";
462
+ ask: "ask";
463
+ deny: "deny";
464
+ }>>;
465
+ doom_loop: z.ZodOptional<z.ZodEnum<{
466
+ allow: "allow";
467
+ ask: "ask";
468
+ deny: "deny";
469
+ }>>;
470
+ external_directory: z.ZodOptional<z.ZodEnum<{
471
+ allow: "allow";
472
+ ask: "ask";
473
+ deny: "deny";
474
+ }>>;
475
+ }, z.core.$strip>>;
476
+ }, z.core.$strip>>;
422
477
  oracle: z.ZodOptional<z.ZodObject<{
423
478
  model: z.ZodOptional<z.ZodString>;
424
479
  category: z.ZodOptional<z.ZodString>;
@@ -713,6 +768,55 @@ export declare const AgentOverridesSchema: z.ZodObject<{
713
768
  }>>;
714
769
  }, z.core.$strip>>;
715
770
  }, z.core.$strip>>;
771
+ "orchestrator-sisyphus": z.ZodOptional<z.ZodObject<{
772
+ model: z.ZodOptional<z.ZodString>;
773
+ category: z.ZodOptional<z.ZodString>;
774
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
775
+ temperature: z.ZodOptional<z.ZodNumber>;
776
+ top_p: z.ZodOptional<z.ZodNumber>;
777
+ prompt: z.ZodOptional<z.ZodString>;
778
+ prompt_append: z.ZodOptional<z.ZodString>;
779
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
780
+ disable: z.ZodOptional<z.ZodBoolean>;
781
+ description: z.ZodOptional<z.ZodString>;
782
+ mode: z.ZodOptional<z.ZodEnum<{
783
+ subagent: "subagent";
784
+ primary: "primary";
785
+ all: "all";
786
+ }>>;
787
+ color: z.ZodOptional<z.ZodString>;
788
+ permission: z.ZodOptional<z.ZodObject<{
789
+ edit: z.ZodOptional<z.ZodEnum<{
790
+ allow: "allow";
791
+ ask: "ask";
792
+ deny: "deny";
793
+ }>>;
794
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
795
+ allow: "allow";
796
+ ask: "ask";
797
+ deny: "deny";
798
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
799
+ allow: "allow";
800
+ ask: "ask";
801
+ deny: "deny";
802
+ }>>]>>;
803
+ webfetch: z.ZodOptional<z.ZodEnum<{
804
+ allow: "allow";
805
+ ask: "ask";
806
+ deny: "deny";
807
+ }>>;
808
+ doom_loop: z.ZodOptional<z.ZodEnum<{
809
+ allow: "allow";
810
+ ask: "ask";
811
+ deny: "deny";
812
+ }>>;
813
+ external_directory: z.ZodOptional<z.ZodEnum<{
814
+ allow: "allow";
815
+ ask: "ask";
816
+ deny: "deny";
817
+ }>>;
818
+ }, z.core.$strip>>;
819
+ }, z.core.$strip>>;
716
820
  }, z.core.$strip>;
717
821
  export declare const ClaudeCodeConfigSchema: z.ZodObject<{
718
822
  mcp: z.ZodOptional<z.ZodBoolean>;
@@ -935,6 +1039,8 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
935
1039
  "document-writer": "document-writer";
936
1040
  "multimodal-looker": "multimodal-looker";
937
1041
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
1042
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
1043
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
938
1044
  }>>>;
939
1045
  disabled_skills: z.ZodOptional<z.ZodArray<z.ZodEnum<{
940
1046
  playwright: "playwright";
@@ -1273,6 +1379,55 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1273
1379
  }>>;
1274
1380
  }, z.core.$strip>>;
1275
1381
  }, z.core.$strip>>;
1382
+ "Momus (Plan Reviewer)": z.ZodOptional<z.ZodObject<{
1383
+ model: z.ZodOptional<z.ZodString>;
1384
+ category: z.ZodOptional<z.ZodString>;
1385
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1386
+ temperature: z.ZodOptional<z.ZodNumber>;
1387
+ top_p: z.ZodOptional<z.ZodNumber>;
1388
+ prompt: z.ZodOptional<z.ZodString>;
1389
+ prompt_append: z.ZodOptional<z.ZodString>;
1390
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1391
+ disable: z.ZodOptional<z.ZodBoolean>;
1392
+ description: z.ZodOptional<z.ZodString>;
1393
+ mode: z.ZodOptional<z.ZodEnum<{
1394
+ subagent: "subagent";
1395
+ primary: "primary";
1396
+ all: "all";
1397
+ }>>;
1398
+ color: z.ZodOptional<z.ZodString>;
1399
+ permission: z.ZodOptional<z.ZodObject<{
1400
+ edit: z.ZodOptional<z.ZodEnum<{
1401
+ allow: "allow";
1402
+ ask: "ask";
1403
+ deny: "deny";
1404
+ }>>;
1405
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1406
+ allow: "allow";
1407
+ ask: "ask";
1408
+ deny: "deny";
1409
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1410
+ allow: "allow";
1411
+ ask: "ask";
1412
+ deny: "deny";
1413
+ }>>]>>;
1414
+ webfetch: z.ZodOptional<z.ZodEnum<{
1415
+ allow: "allow";
1416
+ ask: "ask";
1417
+ deny: "deny";
1418
+ }>>;
1419
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1420
+ allow: "allow";
1421
+ ask: "ask";
1422
+ deny: "deny";
1423
+ }>>;
1424
+ external_directory: z.ZodOptional<z.ZodEnum<{
1425
+ allow: "allow";
1426
+ ask: "ask";
1427
+ deny: "deny";
1428
+ }>>;
1429
+ }, z.core.$strip>>;
1430
+ }, z.core.$strip>>;
1276
1431
  oracle: z.ZodOptional<z.ZodObject<{
1277
1432
  model: z.ZodOptional<z.ZodString>;
1278
1433
  category: z.ZodOptional<z.ZodString>;
@@ -1567,6 +1722,55 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1567
1722
  }>>;
1568
1723
  }, z.core.$strip>>;
1569
1724
  }, z.core.$strip>>;
1725
+ "orchestrator-sisyphus": z.ZodOptional<z.ZodObject<{
1726
+ model: z.ZodOptional<z.ZodString>;
1727
+ category: z.ZodOptional<z.ZodString>;
1728
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1729
+ temperature: z.ZodOptional<z.ZodNumber>;
1730
+ top_p: z.ZodOptional<z.ZodNumber>;
1731
+ prompt: z.ZodOptional<z.ZodString>;
1732
+ prompt_append: z.ZodOptional<z.ZodString>;
1733
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1734
+ disable: z.ZodOptional<z.ZodBoolean>;
1735
+ description: z.ZodOptional<z.ZodString>;
1736
+ mode: z.ZodOptional<z.ZodEnum<{
1737
+ subagent: "subagent";
1738
+ primary: "primary";
1739
+ all: "all";
1740
+ }>>;
1741
+ color: z.ZodOptional<z.ZodString>;
1742
+ permission: z.ZodOptional<z.ZodObject<{
1743
+ edit: z.ZodOptional<z.ZodEnum<{
1744
+ allow: "allow";
1745
+ ask: "ask";
1746
+ deny: "deny";
1747
+ }>>;
1748
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1749
+ allow: "allow";
1750
+ ask: "ask";
1751
+ deny: "deny";
1752
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1753
+ allow: "allow";
1754
+ ask: "ask";
1755
+ deny: "deny";
1756
+ }>>]>>;
1757
+ webfetch: z.ZodOptional<z.ZodEnum<{
1758
+ allow: "allow";
1759
+ ask: "ask";
1760
+ deny: "deny";
1761
+ }>>;
1762
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1763
+ allow: "allow";
1764
+ ask: "ask";
1765
+ deny: "deny";
1766
+ }>>;
1767
+ external_directory: z.ZodOptional<z.ZodEnum<{
1768
+ allow: "allow";
1769
+ ask: "ask";
1770
+ deny: "deny";
1771
+ }>>;
1772
+ }, z.core.$strip>>;
1773
+ }, z.core.$strip>>;
1570
1774
  }, z.core.$strip>>;
1571
1775
  categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1572
1776
  model: z.ZodString;
@@ -15,6 +15,7 @@ interface Event {
15
15
  export declare class BackgroundManager {
16
16
  private tasks;
17
17
  private notifications;
18
+ private pendingByParent;
18
19
  private client;
19
20
  private directory;
20
21
  private pollingInterval?;
@@ -35,6 +36,7 @@ export declare class BackgroundManager {
35
36
  parentSessionID: string;
36
37
  description: string;
37
38
  agent?: string;
39
+ parentAgent?: string;
38
40
  }): BackgroundTask;
39
41
  resume(input: ResumeInput): Promise<BackgroundTask>;
40
42
  private checkSessionTodos;
@@ -42,10 +44,23 @@ export declare class BackgroundManager {
42
44
  markForNotification(task: BackgroundTask): void;
43
45
  getPendingNotifications(sessionID: string): BackgroundTask[];
44
46
  clearNotifications(sessionID: string): void;
47
+ /**
48
+ * Validates that a session has actual assistant/tool output before marking complete.
49
+ * Prevents premature completion when session.idle fires before agent responds.
50
+ */
51
+ private validateSessionHasOutput;
45
52
  private clearNotificationsForTask;
46
53
  private startPolling;
47
54
  private stopPolling;
48
55
  cleanup(): void;
56
+ /**
57
+ * Get all running tasks (for compaction hook)
58
+ */
59
+ getRunningTasks(): BackgroundTask[];
60
+ /**
61
+ * Get all completed tasks still in memory (for compaction hook)
62
+ */
63
+ getCompletedTasks(): BackgroundTask[];
49
64
  private notifyParentSession;
50
65
  private formatDuration;
51
66
  private hasRunningTasks;
@@ -32,6 +32,10 @@ export interface BackgroundTask {
32
32
  concurrencyKey?: string;
33
33
  /** Parent session's agent name for notification */
34
34
  parentAgent?: string;
35
+ /** Last message count for stability detection */
36
+ lastMsgCount?: number;
37
+ /** Number of consecutive polls with stable message count */
38
+ stablePolls?: number;
35
39
  }
36
40
  export interface LaunchInput {
37
41
  description: string;
@@ -1,5 +1,8 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import type { AutoUpdateCheckerOptions } from "./types";
3
+ export declare function isPrereleaseVersion(version: string): boolean;
4
+ export declare function isDistTag(version: string): boolean;
5
+ export declare function isPrereleaseOrDistTag(pinnedVersion: string | null): boolean;
3
6
  export declare function createAutoUpdateCheckerHook(ctx: PluginInput, options?: AutoUpdateCheckerOptions): {
4
7
  event: ({ event }: {
5
8
  event: {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { BackgroundManager } from "../../features/background-agent";
2
+ interface CompactingInput {
3
+ sessionID: string;
4
+ }
5
+ interface CompactingOutput {
6
+ context: string[];
7
+ prompt?: string;
8
+ }
9
+ /**
10
+ * Background agent compaction hook - preserves task state during context compaction.
11
+ *
12
+ * When OpenCode compacts session context to save tokens, this hook injects
13
+ * information about running and recently completed background tasks so the
14
+ * agent doesn't lose awareness of delegated work.
15
+ */
16
+ export declare function createBackgroundCompactionHook(manager: BackgroundManager): {
17
+ "experimental.session.compacting": (input: CompactingInput, output: CompactingOutput) => Promise<void>;
18
+ };
19
+ export {};
@@ -6,6 +6,12 @@ interface Event {
6
6
  interface EventInput {
7
7
  event: Event;
8
8
  }
9
+ /**
10
+ * Background notification hook - handles event routing to BackgroundManager.
11
+ *
12
+ * Notifications are now delivered directly via session.prompt({ noReply })
13
+ * from the manager, so this hook only needs to handle event routing.
14
+ */
9
15
  export declare function createBackgroundNotificationHook(manager: BackgroundManager): {
10
16
  event: ({ event }: EventInput) => Promise<void>;
11
17
  };
@@ -14,6 +14,7 @@ export { createThinkModeHook } from "./think-mode";
14
14
  export { createClaudeCodeHooksHook } from "./claude-code-hooks";
15
15
  export { createRulesInjectorHook } from "./rules-injector";
16
16
  export { createBackgroundNotificationHook } from "./background-notification";
17
+ export { createBackgroundCompactionHook } from "./background-compaction";
17
18
  export { createAutoUpdateCheckerHook } from "./auto-update-checker";
18
19
  export { createAgentUsageReminderHook } from "./agent-usage-reminder";
19
20
  export { createKeywordDetectorHook } from "./keyword-detector";