@reinamaccredy/oh-my-opencode 3.0.0-beta.13 → 3.0.0-beta.15

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.
package/dist/cli/index.js CHANGED
@@ -2253,7 +2253,7 @@ var require_picocolors = __commonJS((exports, module) => {
2253
2253
  var require_package = __commonJS((exports, module) => {
2254
2254
  module.exports = {
2255
2255
  name: "@reinamaccredy/oh-my-opencode",
2256
- version: "3.0.0-beta.13",
2256
+ version: "3.0.0-beta.15",
2257
2257
  description: "Fork of oh-my-opencode with Maestro workflow integration - Multi-Model Orchestration, Parallel Background Agents, Design Phases, and TDD Methodology",
2258
2258
  main: "dist/index.js",
2259
2259
  types: "dist/index.d.ts",
@@ -2321,6 +2321,7 @@ var require_package = __commonJS((exports, module) => {
2321
2321
  "@openauthjs/openauth": "^0.4.3",
2322
2322
  "@opencode-ai/plugin": "^1.1.1",
2323
2323
  "@opencode-ai/sdk": "^1.1.1",
2324
+ "@reinamaccredy/oh-my-opencode": "^3.0.0-beta.13",
2324
2325
  commander: "^14.0.2",
2325
2326
  hono: "^4.10.4",
2326
2327
  "js-yaml": "^4.1.1",
@@ -6736,7 +6737,7 @@ function deepMerge(target, source) {
6736
6737
  }
6737
6738
  function generateOmoConfig(installConfig) {
6738
6739
  const config = {
6739
- $schema: "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json"
6740
+ $schema: "https://raw.githubusercontent.com/ReinaMacCredy/oh-my-opencode/main/assets/oh-my-opencode.schema.json"
6740
6741
  };
6741
6742
  if (installConfig.hasProxyPal || installConfig.hasGemini) {
6742
6743
  config.google_auth = false;
@@ -1,3 +1,3 @@
1
1
  export * from "./types";
2
- export { BackgroundManager } from "./manager";
2
+ export { BackgroundManager, type PendingNotification } from "./manager";
3
3
  export { ConcurrencyManager } from "./concurrency";
@@ -12,9 +12,17 @@ interface Event {
12
12
  type: string;
13
13
  properties?: EventProperties;
14
14
  }
15
+ export interface PendingNotification {
16
+ taskId: string;
17
+ description: string;
18
+ duration: string;
19
+ status: "completed" | "error";
20
+ error?: string;
21
+ }
15
22
  export declare class BackgroundManager {
16
23
  private tasks;
17
24
  private notifications;
25
+ private pendingNotifications;
18
26
  private client;
19
27
  private directory;
20
28
  private pollingInterval?;
@@ -43,6 +51,8 @@ export declare class BackgroundManager {
43
51
  markForNotification(task: BackgroundTask): void;
44
52
  getPendingNotifications(sessionID: string): BackgroundTask[];
45
53
  clearNotifications(sessionID: string): void;
54
+ hasPendingNotifications(sessionID: string): boolean;
55
+ consumePendingNotifications(sessionID: string): PendingNotification[];
46
56
  private clearNotificationsForTask;
47
57
  private startPolling;
48
58
  private stopPolling;
@@ -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;
@@ -0,0 +1,16 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare const MAESTRO_HOOK_NAME = "maestro-mode-detector";
3
+ interface MaestroHookInput {
4
+ sessionID: string;
5
+ messageID?: string;
6
+ }
7
+ interface MaestroHookOutput {
8
+ parts: Array<{
9
+ type: string;
10
+ text?: string;
11
+ }>;
12
+ }
13
+ export declare function createMaestroModeDetectorHook(ctx: PluginInput): {
14
+ "chat.message": (input: MaestroHookInput, output: MaestroHookOutput) => Promise<void>;
15
+ };
16
+ export { createMaestroModeDetectorHook as createMaestroHook };
@@ -0,0 +1,4 @@
1
+ export * from "./skills/index";
2
+ export * from "./hooks/index";
3
+ export * from "./utils/index";
4
+ export * from "./types";
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../../builtin-skills/types";
2
+ export declare const tddSkill: BuiltinSkill;
3
+ export declare const agentMailSkill: BuiltinSkill;
4
+ export declare function createMaestroSkills(): BuiltinSkill[];
@@ -0,0 +1,42 @@
1
+ export type MaestroMode = "ci" | "co" | "ca";
2
+ export interface ModeDetectionResult {
3
+ mode: MaestroMode;
4
+ reason: string;
5
+ epicCount: number;
6
+ readyBeadCount: number;
7
+ parallelGroups: string[][];
8
+ skills: string[];
9
+ }
10
+ export interface ParsedBead {
11
+ id: string;
12
+ title: string;
13
+ epicId?: string;
14
+ epicTitle?: string;
15
+ priority: number;
16
+ dependencies: string[];
17
+ fileScope?: string[];
18
+ status: "pending" | "ready" | "in_progress" | "completed" | "blocked";
19
+ }
20
+ export interface ParsedEpic {
21
+ id: string;
22
+ title: string;
23
+ beads: ParsedBead[];
24
+ fileScope: string[];
25
+ }
26
+ export interface ParsedPlan {
27
+ name: string;
28
+ path: string;
29
+ epics: ParsedEpic[];
30
+ allBeads: ParsedBead[];
31
+ hasAutonomousFlag: boolean;
32
+ }
33
+ export interface MaestroContext {
34
+ mode: MaestroMode;
35
+ skills: string[];
36
+ planPath: string;
37
+ epicCount: number;
38
+ readyBeadCount: number;
39
+ beadSummary: string;
40
+ }
41
+ export declare const MODE_SKILLS: Record<MaestroMode, string[]>;
42
+ export declare const MODE_DESCRIPTIONS: Record<MaestroMode, string>;
@@ -0,0 +1,4 @@
1
+ import type { ModeDetectionResult, ParsedPlan } from "../types";
2
+ export declare function parsePlanToBeads(planContent: string, planPath: string): ParsedPlan;
3
+ export declare function detectMode(plan: ParsedPlan): ModeDetectionResult;
4
+ export declare function generateBeadSummary(plan: ParsedPlan): string;
@@ -6,7 +6,17 @@ interface Event {
6
6
  interface EventInput {
7
7
  event: Event;
8
8
  }
9
+ interface ToolExecuteInput {
10
+ sessionID?: string;
11
+ tool: string;
12
+ }
13
+ interface ToolExecuteOutput {
14
+ title: string;
15
+ output: string;
16
+ metadata: unknown;
17
+ }
9
18
  export declare function createBackgroundNotificationHook(manager: BackgroundManager): {
10
19
  event: ({ event }: EventInput) => Promise<void>;
20
+ "tool.execute.after": (input: ToolExecuteInput, output: ToolExecuteOutput) => Promise<void>;
11
21
  };
12
22
  export type { BackgroundNotificationHookConfig } from "./types";
@@ -28,3 +28,4 @@ export { createPrometheusMdOnlyHook } from "./prometheus-md-only";
28
28
  export { createTaskResumeInfoHook } from "./task-resume-info";
29
29
  export { createStartWorkHook } from "./start-work";
30
30
  export { createSisyphusOrchestratorHook } from "./sisyphus-orchestrator";
31
+ export { createMaestroModeDetectorHook, MAESTRO_HOOK_NAME } from "../features/maestro/hooks";