oh-my-codex 0.3.8 → 0.3.10

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 (131) hide show
  1. package/dist/cli/__tests__/doctor-team.test.js +58 -0
  2. package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
  3. package/dist/cli/__tests__/index.test.js +3 -3
  4. package/dist/cli/__tests__/index.test.js.map +1 -1
  5. package/dist/cli/__tests__/lifecycle-notifications.test.d.ts +2 -0
  6. package/dist/cli/__tests__/lifecycle-notifications.test.d.ts.map +1 -0
  7. package/dist/cli/__tests__/lifecycle-notifications.test.js +48 -0
  8. package/dist/cli/__tests__/lifecycle-notifications.test.js.map +1 -0
  9. package/dist/cli/doctor.js +28 -0
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/cli/index.d.ts.map +1 -1
  12. package/dist/cli/index.js +41 -1
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/config/__tests__/models.test.d.ts +2 -0
  15. package/dist/config/__tests__/models.test.d.ts.map +1 -0
  16. package/dist/config/__tests__/models.test.js +69 -0
  17. package/dist/config/__tests__/models.test.js.map +1 -0
  18. package/dist/config/models.d.ts +24 -0
  19. package/dist/config/models.d.ts.map +1 -0
  20. package/dist/config/models.js +53 -0
  21. package/dist/config/models.js.map +1 -0
  22. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +221 -36
  23. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
  24. package/dist/mcp/__tests__/state-paths.test.js +21 -1
  25. package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
  26. package/dist/mcp/__tests__/state-server-team-tools.test.js +53 -1
  27. package/dist/mcp/__tests__/state-server-team-tools.test.js.map +1 -1
  28. package/dist/mcp/state-paths.d.ts +1 -0
  29. package/dist/mcp/state-paths.d.ts.map +1 -1
  30. package/dist/mcp/state-paths.js +34 -1
  31. package/dist/mcp/state-paths.js.map +1 -1
  32. package/dist/mcp/state-server.d.ts.map +1 -1
  33. package/dist/mcp/state-server.js +46 -11
  34. package/dist/mcp/state-server.js.map +1 -1
  35. package/dist/notifications/__tests__/config.test.d.ts +2 -0
  36. package/dist/notifications/__tests__/config.test.d.ts.map +1 -0
  37. package/dist/notifications/__tests__/config.test.js +186 -0
  38. package/dist/notifications/__tests__/config.test.js.map +1 -0
  39. package/dist/notifications/__tests__/dispatcher.test.d.ts +2 -0
  40. package/dist/notifications/__tests__/dispatcher.test.d.ts.map +1 -0
  41. package/dist/notifications/__tests__/dispatcher.test.js +202 -0
  42. package/dist/notifications/__tests__/dispatcher.test.js.map +1 -0
  43. package/dist/notifications/__tests__/formatter.test.d.ts +2 -0
  44. package/dist/notifications/__tests__/formatter.test.d.ts.map +1 -0
  45. package/dist/notifications/__tests__/formatter.test.js +103 -0
  46. package/dist/notifications/__tests__/formatter.test.js.map +1 -0
  47. package/dist/notifications/__tests__/notifier.test.d.ts +2 -0
  48. package/dist/notifications/__tests__/notifier.test.d.ts.map +1 -0
  49. package/dist/notifications/__tests__/notifier.test.js +104 -0
  50. package/dist/notifications/__tests__/notifier.test.js.map +1 -0
  51. package/dist/notifications/__tests__/profiles.test.d.ts +2 -0
  52. package/dist/notifications/__tests__/profiles.test.d.ts.map +1 -0
  53. package/dist/notifications/__tests__/profiles.test.js +404 -0
  54. package/dist/notifications/__tests__/profiles.test.js.map +1 -0
  55. package/dist/notifications/__tests__/reply-listener.test.d.ts +2 -0
  56. package/dist/notifications/__tests__/reply-listener.test.d.ts.map +1 -0
  57. package/dist/notifications/__tests__/reply-listener.test.js +58 -0
  58. package/dist/notifications/__tests__/reply-listener.test.js.map +1 -0
  59. package/dist/notifications/__tests__/session-registry.test.d.ts +2 -0
  60. package/dist/notifications/__tests__/session-registry.test.d.ts.map +1 -0
  61. package/dist/notifications/__tests__/session-registry.test.js +147 -0
  62. package/dist/notifications/__tests__/session-registry.test.js.map +1 -0
  63. package/dist/notifications/__tests__/tmux-detector.test.d.ts +2 -0
  64. package/dist/notifications/__tests__/tmux-detector.test.d.ts.map +1 -0
  65. package/dist/notifications/__tests__/tmux-detector.test.js +77 -0
  66. package/dist/notifications/__tests__/tmux-detector.test.js.map +1 -0
  67. package/dist/notifications/__tests__/tmux.test.d.ts +2 -0
  68. package/dist/notifications/__tests__/tmux.test.d.ts.map +1 -0
  69. package/dist/notifications/__tests__/tmux.test.js +86 -0
  70. package/dist/notifications/__tests__/tmux.test.js.map +1 -0
  71. package/dist/notifications/config.d.ts +44 -0
  72. package/dist/notifications/config.d.ts.map +1 -0
  73. package/dist/notifications/config.js +407 -0
  74. package/dist/notifications/config.js.map +1 -0
  75. package/dist/notifications/dispatcher.d.ts +15 -0
  76. package/dist/notifications/dispatcher.d.ts.map +1 -0
  77. package/dist/notifications/dispatcher.js +410 -0
  78. package/dist/notifications/dispatcher.js.map +1 -0
  79. package/dist/notifications/formatter.d.ts +14 -0
  80. package/dist/notifications/formatter.d.ts.map +1 -0
  81. package/dist/notifications/formatter.js +134 -0
  82. package/dist/notifications/formatter.js.map +1 -0
  83. package/dist/notifications/index.d.ts +32 -0
  84. package/dist/notifications/index.d.ts.map +1 -0
  85. package/dist/notifications/index.js +93 -0
  86. package/dist/notifications/index.js.map +1 -0
  87. package/dist/notifications/reply-listener.d.ts +47 -0
  88. package/dist/notifications/reply-listener.d.ts.map +1 -0
  89. package/dist/notifications/reply-listener.js +656 -0
  90. package/dist/notifications/reply-listener.js.map +1 -0
  91. package/dist/notifications/session-registry.d.ts +26 -0
  92. package/dist/notifications/session-registry.d.ts.map +1 -0
  93. package/dist/notifications/session-registry.js +275 -0
  94. package/dist/notifications/session-registry.js.map +1 -0
  95. package/dist/notifications/tmux-detector.d.ts +17 -0
  96. package/dist/notifications/tmux-detector.d.ts.map +1 -0
  97. package/dist/notifications/tmux-detector.js +77 -0
  98. package/dist/notifications/tmux-detector.js.map +1 -0
  99. package/dist/notifications/tmux.d.ts +28 -0
  100. package/dist/notifications/tmux.d.ts.map +1 -0
  101. package/dist/notifications/tmux.js +203 -0
  102. package/dist/notifications/tmux.js.map +1 -0
  103. package/dist/notifications/types.d.ts +181 -0
  104. package/dist/notifications/types.d.ts.map +1 -0
  105. package/dist/notifications/types.js +9 -0
  106. package/dist/notifications/types.js.map +1 -0
  107. package/dist/team/__tests__/runtime.test.js +54 -2
  108. package/dist/team/__tests__/runtime.test.js.map +1 -1
  109. package/dist/team/__tests__/state.test.js +30 -0
  110. package/dist/team/__tests__/state.test.js.map +1 -1
  111. package/dist/team/__tests__/worker-bootstrap.test.js +59 -1
  112. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  113. package/dist/team/runtime.d.ts +2 -2
  114. package/dist/team/runtime.d.ts.map +1 -1
  115. package/dist/team/runtime.js +50 -23
  116. package/dist/team/runtime.js.map +1 -1
  117. package/dist/team/state.d.ts +1 -1
  118. package/dist/team/state.d.ts.map +1 -1
  119. package/dist/team/state.js +5 -0
  120. package/dist/team/state.js.map +1 -1
  121. package/dist/team/tmux-session.d.ts.map +1 -1
  122. package/dist/team/tmux-session.js +53 -10
  123. package/dist/team/tmux-session.js.map +1 -1
  124. package/dist/team/worker-bootstrap.d.ts +12 -0
  125. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  126. package/dist/team/worker-bootstrap.js +37 -0
  127. package/dist/team/worker-bootstrap.js.map +1 -1
  128. package/package.json +1 -1
  129. package/prompts/planner.md +3 -3
  130. package/scripts/notify-hook.js +137 -7
  131. package/skills/team/SKILL.md +3 -1
@@ -0,0 +1,203 @@
1
+ /**
2
+ * tmux Session Detection for Notifications
3
+ *
4
+ * Detects the current tmux session name and pane ID for inclusion in notification payloads.
5
+ */
6
+ import { execSync } from "child_process";
7
+ /**
8
+ * Get the current tmux session name.
9
+ * First checks $TMUX env, then falls back to finding the tmux session
10
+ * that owns the current process tree (for hooks/subprocesses that don't
11
+ * inherit $TMUX).
12
+ */
13
+ export function getCurrentTmuxSession() {
14
+ // Fast path: $TMUX is set (we're directly inside tmux)
15
+ if (process.env.TMUX) {
16
+ try {
17
+ const sessionName = execSync("tmux display-message -p '#S'", {
18
+ encoding: "utf-8",
19
+ timeout: 3000,
20
+ stdio: ["pipe", "pipe", "pipe"],
21
+ }).trim();
22
+ if (sessionName)
23
+ return sessionName;
24
+ }
25
+ catch {
26
+ // fall through to PID-based detection
27
+ }
28
+ }
29
+ // Fallback: walk the process tree to find a tmux pane that owns us.
30
+ // This handles hooks/subprocesses that don't inherit $TMUX.
31
+ return detectTmuxSessionByPid();
32
+ }
33
+ /**
34
+ * Detect tmux session by walking the process tree.
35
+ * Lists all tmux panes and their PIDs, then checks if our PID (or any ancestor)
36
+ * is a child of a tmux pane process.
37
+ */
38
+ function detectTmuxSessionByPid() {
39
+ try {
40
+ // Get all tmux pane PIDs with their session names
41
+ const output = execSync("tmux list-panes -a -F '#{pane_pid} #{session_name}'", {
42
+ encoding: "utf-8",
43
+ timeout: 3000,
44
+ stdio: ["pipe", "pipe", "pipe"],
45
+ }).trim();
46
+ if (!output)
47
+ return null;
48
+ const panePids = new Map();
49
+ for (const line of output.split("\n")) {
50
+ const parts = line.trim().split(" ", 2);
51
+ if (parts.length === 2) {
52
+ const pid = parseInt(parts[0], 10);
53
+ if (!isNaN(pid))
54
+ panePids.set(pid, parts[1]);
55
+ }
56
+ }
57
+ if (panePids.size === 0)
58
+ return null;
59
+ // Walk up the process tree from our PID
60
+ let currentPid = process.pid;
61
+ const visited = new Set();
62
+ while (currentPid > 1 && !visited.has(currentPid)) {
63
+ visited.add(currentPid);
64
+ // Check if this PID is a tmux pane process
65
+ if (panePids.has(currentPid)) {
66
+ return panePids.get(currentPid) || null;
67
+ }
68
+ // Get parent PID
69
+ try {
70
+ const ppidStr = execSync(`ps -o ppid= -p ${currentPid}`, {
71
+ encoding: "utf-8",
72
+ timeout: 1000,
73
+ stdio: ["pipe", "pipe", "pipe"],
74
+ }).trim();
75
+ const ppid = parseInt(ppidStr, 10);
76
+ if (isNaN(ppid) || ppid <= 1)
77
+ break;
78
+ currentPid = ppid;
79
+ }
80
+ catch {
81
+ break;
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ /**
91
+ * List active omx-team tmux sessions for a given team.
92
+ */
93
+ export function getTeamTmuxSessions(teamName) {
94
+ const sanitized = teamName.replace(/[^a-zA-Z0-9-]/g, "");
95
+ if (!sanitized)
96
+ return [];
97
+ const prefix = `omx-team-${sanitized}-`;
98
+ try {
99
+ const output = execSync("tmux list-sessions -F '#{session_name}'", {
100
+ encoding: "utf-8",
101
+ timeout: 3000,
102
+ stdio: ["pipe", "pipe", "pipe"],
103
+ });
104
+ return output
105
+ .trim()
106
+ .split("\n")
107
+ .filter((s) => s.startsWith(prefix))
108
+ .map((s) => s.slice(prefix.length));
109
+ }
110
+ catch {
111
+ return [];
112
+ }
113
+ }
114
+ /**
115
+ * Format tmux session info for human-readable display.
116
+ * Returns null if not in tmux.
117
+ */
118
+ export function formatTmuxInfo() {
119
+ const session = getCurrentTmuxSession();
120
+ if (!session)
121
+ return null;
122
+ return `tmux: ${session}`;
123
+ }
124
+ /**
125
+ * Get the current tmux pane ID (e.g., "%0").
126
+ * Tries $TMUX_PANE env var first, then tmux display-message,
127
+ * then falls back to PID-based detection.
128
+ */
129
+ export function getCurrentTmuxPaneId() {
130
+ // Fast path: $TMUX_PANE is set
131
+ const envPane = process.env.TMUX_PANE;
132
+ if (envPane && /^%\d+$/.test(envPane))
133
+ return envPane;
134
+ // Try tmux display-message if $TMUX is set
135
+ if (process.env.TMUX) {
136
+ try {
137
+ const paneId = execSync("tmux display-message -p '#{pane_id}'", {
138
+ encoding: "utf-8",
139
+ timeout: 3000,
140
+ stdio: ["pipe", "pipe", "pipe"],
141
+ }).trim();
142
+ if (paneId && /^%\d+$/.test(paneId))
143
+ return paneId;
144
+ }
145
+ catch {
146
+ // fall through
147
+ }
148
+ }
149
+ // Fallback: find pane by walking the process tree
150
+ return detectTmuxPaneByPid();
151
+ }
152
+ /**
153
+ * Detect tmux pane ID by walking the process tree.
154
+ */
155
+ function detectTmuxPaneByPid() {
156
+ try {
157
+ const output = execSync("tmux list-panes -a -F '#{pane_pid} #{pane_id}'", {
158
+ encoding: "utf-8",
159
+ timeout: 3000,
160
+ stdio: ["pipe", "pipe", "pipe"],
161
+ }).trim();
162
+ if (!output)
163
+ return null;
164
+ const panePids = new Map();
165
+ for (const line of output.split("\n")) {
166
+ const parts = line.trim().split(" ", 2);
167
+ if (parts.length === 2) {
168
+ const pid = parseInt(parts[0], 10);
169
+ if (!isNaN(pid))
170
+ panePids.set(pid, parts[1]);
171
+ }
172
+ }
173
+ if (panePids.size === 0)
174
+ return null;
175
+ let currentPid = process.pid;
176
+ const visited = new Set();
177
+ while (currentPid > 1 && !visited.has(currentPid)) {
178
+ visited.add(currentPid);
179
+ if (panePids.has(currentPid)) {
180
+ return panePids.get(currentPid) || null;
181
+ }
182
+ try {
183
+ const ppidStr = execSync(`ps -o ppid= -p ${currentPid}`, {
184
+ encoding: "utf-8",
185
+ timeout: 1000,
186
+ stdio: ["pipe", "pipe", "pipe"],
187
+ }).trim();
188
+ const ppid = parseInt(ppidStr, 10);
189
+ if (isNaN(ppid) || ppid <= 1)
190
+ break;
191
+ currentPid = ppid;
192
+ }
193
+ catch {
194
+ break;
195
+ }
196
+ }
197
+ return null;
198
+ }
199
+ catch {
200
+ return null;
201
+ }
202
+ }
203
+ //# sourceMappingURL=tmux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/notifications/tmux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Notification System Types
3
+ *
4
+ * Defines types for the multi-platform lifecycle notification system.
5
+ * Supports Discord, Telegram, Slack, and generic webhooks across
6
+ * session lifecycle events (start, stop, end, ask-user-question).
7
+ */
8
+ /** Events that can trigger notifications */
9
+ export type NotificationEvent = "session-start" | "session-stop" | "session-end" | "session-idle" | "ask-user-question";
10
+ /** Supported notification platforms */
11
+ export type NotificationPlatform = "discord" | "discord-bot" | "telegram" | "slack" | "webhook";
12
+ /** Discord webhook configuration */
13
+ export interface DiscordNotificationConfig {
14
+ enabled: boolean;
15
+ /** Discord webhook URL */
16
+ webhookUrl: string;
17
+ /** Optional username override for the webhook bot */
18
+ username?: string;
19
+ /** Optional mention to prepend to messages (e.g. "<@123456>" for user, "<@&789>" for role) */
20
+ mention?: string;
21
+ }
22
+ /** Discord Bot API configuration (bot token + channel ID) */
23
+ export interface DiscordBotNotificationConfig {
24
+ enabled: boolean;
25
+ /** Discord bot token (or env var: OMX_DISCORD_NOTIFIER_BOT_TOKEN) */
26
+ botToken?: string;
27
+ /** Channel ID to send messages to (or env var: OMX_DISCORD_NOTIFIER_CHANNEL) */
28
+ channelId?: string;
29
+ /** Optional mention to prepend to messages (e.g. "<@123456>" for user, "<@&789>" for role) */
30
+ mention?: string;
31
+ }
32
+ /** Telegram platform configuration */
33
+ export interface TelegramNotificationConfig {
34
+ enabled: boolean;
35
+ /** Telegram bot token */
36
+ botToken: string;
37
+ /** Chat ID to send messages to */
38
+ chatId: string;
39
+ /** Parse mode: Markdown or HTML (default: Markdown) */
40
+ parseMode?: "Markdown" | "HTML";
41
+ }
42
+ /** Slack platform configuration */
43
+ export interface SlackNotificationConfig {
44
+ enabled: boolean;
45
+ /** Slack incoming webhook URL */
46
+ webhookUrl: string;
47
+ /** Optional channel override */
48
+ channel?: string;
49
+ /** Optional username override */
50
+ username?: string;
51
+ }
52
+ /** Generic webhook configuration */
53
+ export interface WebhookNotificationConfig {
54
+ enabled: boolean;
55
+ /** Webhook URL (POST with JSON body) */
56
+ url: string;
57
+ /** Optional custom headers */
58
+ headers?: Record<string, string>;
59
+ /** Optional HTTP method override (default: POST) */
60
+ method?: "POST" | "PUT";
61
+ }
62
+ /** Platform config union */
63
+ export type PlatformConfig = DiscordNotificationConfig | DiscordBotNotificationConfig | TelegramNotificationConfig | SlackNotificationConfig | WebhookNotificationConfig;
64
+ /** Per-event notification configuration */
65
+ export interface EventNotificationConfig {
66
+ /** Whether this event triggers notifications */
67
+ enabled: boolean;
68
+ /** Custom message template (optional, uses default if not set) */
69
+ messageTemplate?: string;
70
+ /** Platform overrides for this event (inherits from top-level if not set) */
71
+ discord?: DiscordNotificationConfig;
72
+ "discord-bot"?: DiscordBotNotificationConfig;
73
+ telegram?: TelegramNotificationConfig;
74
+ slack?: SlackNotificationConfig;
75
+ webhook?: WebhookNotificationConfig;
76
+ }
77
+ /** Top-level notification configuration (stored in .omx-config.json) */
78
+ export interface FullNotificationConfig {
79
+ /** Global enable/disable for all notifications */
80
+ enabled: boolean;
81
+ /** Default platform configs (used when event-specific config is not set) */
82
+ discord?: DiscordNotificationConfig;
83
+ "discord-bot"?: DiscordBotNotificationConfig;
84
+ telegram?: TelegramNotificationConfig;
85
+ slack?: SlackNotificationConfig;
86
+ webhook?: WebhookNotificationConfig;
87
+ /** Per-event configuration */
88
+ events?: {
89
+ "session-start"?: EventNotificationConfig;
90
+ "session-stop"?: EventNotificationConfig;
91
+ "session-end"?: EventNotificationConfig;
92
+ "session-idle"?: EventNotificationConfig;
93
+ "ask-user-question"?: EventNotificationConfig;
94
+ };
95
+ }
96
+ /** Payload sent with each notification */
97
+ export interface FullNotificationPayload {
98
+ /** The event that triggered this notification */
99
+ event: NotificationEvent;
100
+ /** Session identifier */
101
+ sessionId: string;
102
+ /** Pre-formatted message text */
103
+ message: string;
104
+ /** ISO timestamp */
105
+ timestamp: string;
106
+ /** Current tmux session name (if in tmux) */
107
+ tmuxSession?: string;
108
+ /** Project directory path */
109
+ projectPath?: string;
110
+ /** Basename of the project directory */
111
+ projectName?: string;
112
+ /** Active OMX modes during this session */
113
+ modesUsed?: string[];
114
+ /** Context summary of what was done */
115
+ contextSummary?: string;
116
+ /** Session duration in milliseconds */
117
+ durationMs?: number;
118
+ /** Number of agents spawned */
119
+ agentsSpawned?: number;
120
+ /** Number of agents completed */
121
+ agentsCompleted?: number;
122
+ /** Stop/end reason */
123
+ reason?: string;
124
+ /** Active mode name (for stop events) */
125
+ activeMode?: string;
126
+ /** Current iteration (for stop events) */
127
+ iteration?: number;
128
+ /** Max iterations (for stop events) */
129
+ maxIterations?: number;
130
+ /** Question text (for ask-user-question events) */
131
+ question?: string;
132
+ /** Incomplete task count */
133
+ incompleteTasks?: number;
134
+ /** tmux pane ID for reply injection target */
135
+ tmuxPaneId?: string;
136
+ }
137
+ /** Result of a notification send attempt */
138
+ export interface NotificationResult {
139
+ platform: NotificationPlatform;
140
+ success: boolean;
141
+ error?: string;
142
+ messageId?: string;
143
+ }
144
+ /** Result of dispatching notifications for an event */
145
+ export interface DispatchResult {
146
+ event: NotificationEvent;
147
+ results: NotificationResult[];
148
+ /** Whether at least one notification was sent successfully */
149
+ anySuccess: boolean;
150
+ }
151
+ /** Named notification profiles configuration */
152
+ export interface NotificationProfilesConfig {
153
+ /** Global enable/disable for all notifications */
154
+ enabled: boolean;
155
+ /** Default profile name when none specified */
156
+ defaultProfile?: string;
157
+ /** Named profiles, each a full notification config */
158
+ profiles: Record<string, FullNotificationConfig>;
159
+ }
160
+ /** Top-level notifications block (supports both flat and profiled config) */
161
+ export interface NotificationsBlock extends FullNotificationConfig {
162
+ /** Default profile name (used when profiles are defined) */
163
+ defaultProfile?: string;
164
+ /** Named notification profiles */
165
+ profiles?: Record<string, FullNotificationConfig>;
166
+ }
167
+ /** Reply injection configuration */
168
+ export interface ReplyConfig {
169
+ enabled: boolean;
170
+ /** Polling interval in milliseconds (default: 3000) */
171
+ pollIntervalMs: number;
172
+ /** Maximum message length (default: 500) */
173
+ maxMessageLength: number;
174
+ /** Rate limit: max messages per minute (default: 10) */
175
+ rateLimitPerMinute: number;
176
+ /** Include visual prefix like [reply:discord] (default: true) */
177
+ includePrefix: boolean;
178
+ /** Authorized Discord user IDs (REQUIRED for Discord, empty = Discord disabled) */
179
+ authorizedDiscordUserIds: string[];
180
+ }
181
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Notification System Types
3
+ *
4
+ * Defines types for the multi-platform lifecycle notification system.
5
+ * Supports Discord, Telegram, Slack, and generic webhooks across
6
+ * session lifecycle events (start, stop, end, ask-user-question).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -35,9 +35,9 @@ describe('runtime', () => {
35
35
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'explore');
36
36
  assert.deepEqual(args, ['--no-alt-screen', '--model', TEAM_LOW_COMPLEXITY_DEFAULT_MODEL]);
37
37
  });
38
- it('resolveWorkerLaunchArgsFromEnv does not inject default model for non-low agentType', () => {
38
+ it('resolveWorkerLaunchArgsFromEnv injects default model for all agent types', () => {
39
39
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor');
40
- assert.deepEqual(args, ['--no-alt-screen']);
40
+ assert.deepEqual(args, ['--no-alt-screen', '--model', TEAM_LOW_COMPLEXITY_DEFAULT_MODEL]);
41
41
  });
42
42
  it('resolveWorkerLaunchArgsFromEnv treats *-low aliases as low complexity', () => {
43
43
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor-low');
@@ -47,6 +47,17 @@ describe('runtime', () => {
47
47
  assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model gpt-5' }, 'explore'), ['--model', 'gpt-5']);
48
48
  assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model=gpt-5.3' }, 'explore'), ['--model=gpt-5.3']);
49
49
  });
50
+ it('resolveWorkerLaunchArgsFromEnv uses configured model for all agent types', () => {
51
+ const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor', 'gpt-4.1');
52
+ assert.deepEqual(args, ['--no-alt-screen', '--model', 'gpt-4.1']);
53
+ });
54
+ it('resolveWorkerLaunchArgsFromEnv uses configured model over hardcoded default for low-complexity', () => {
55
+ const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'explore', 'gpt-4.1');
56
+ assert.deepEqual(args, ['--no-alt-screen', '--model', 'gpt-4.1']);
57
+ });
58
+ it('resolveWorkerLaunchArgsFromEnv prefers explicit env model over configured model', () => {
59
+ assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model gpt-5' }, 'explore', 'gpt-4.1'), ['--model', 'gpt-5']);
60
+ });
50
61
  it('startTeam rejects nested team invocation inside worker context', async () => {
51
62
  const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
52
63
  const prev = process.env.OMX_TEAM_WORKER;
@@ -160,6 +171,47 @@ describe('runtime', () => {
160
171
  await rm(cwd, { recursive: true, force: true });
161
172
  }
162
173
  });
174
+ it('shutdownTeam emits shutdown_ack event when worker ack is received', async () => {
175
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
176
+ try {
177
+ await initTeamState('team-ack-evt', 'shutdown ack event test', 'executor', 1, cwd);
178
+ const ackPath = join(cwd, '.omx', 'state', 'team', 'team-ack-evt', 'workers', 'worker-1', 'shutdown-ack.json');
179
+ await writeFile(ackPath, JSON.stringify({ status: 'reject', reason: 'busy', updated_at: '9999-01-01T00:00:00.000Z' }));
180
+ await assert.rejects(() => shutdownTeam('team-ack-evt', cwd), /shutdown_rejected/);
181
+ // Verify that a shutdown_ack event was written to the event log
182
+ const eventLogPath = join(cwd, '.omx', 'state', 'team', 'team-ack-evt', 'events', 'events.ndjson');
183
+ assert.ok(existsSync(eventLogPath), 'event log should exist');
184
+ const raw = await readFile(eventLogPath, 'utf-8');
185
+ const events = raw.trim().split('\n').map(line => JSON.parse(line));
186
+ const ackEvents = events.filter((e) => e.type === 'shutdown_ack');
187
+ assert.equal(ackEvents.length, 1, 'should have exactly one shutdown_ack event');
188
+ assert.equal(ackEvents[0].worker, 'worker-1');
189
+ assert.equal(ackEvents[0].reason, 'reject:busy');
190
+ assert.equal(ackEvents[0].team, 'team-ack-evt');
191
+ }
192
+ finally {
193
+ await rm(cwd, { recursive: true, force: true });
194
+ }
195
+ });
196
+ it('shutdownTeam emits shutdown_ack event with accept reason for accepted acks', async () => {
197
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
198
+ try {
199
+ await initTeamState('team-ack-accept', 'shutdown ack accept test', 'executor', 1, cwd);
200
+ const ackPath = join(cwd, '.omx', 'state', 'team', 'team-ack-accept', 'workers', 'worker-1', 'shutdown-ack.json');
201
+ await writeFile(ackPath, JSON.stringify({ status: 'accept', updated_at: '9999-01-01T00:00:00.000Z' }));
202
+ // Read the event log before cleanup destroys it
203
+ const eventLogPath = join(cwd, '.omx', 'state', 'team', 'team-ack-accept', 'events', 'events.ndjson');
204
+ await shutdownTeam('team-ack-accept', cwd);
205
+ // State is cleaned up, but we can verify the event was emitted by checking
206
+ // that cleanup succeeded (no error) -- the event was written before cleanup.
207
+ // For a more direct test, check that the team root was cleaned up.
208
+ const teamRoot = join(cwd, '.omx', 'state', 'team', 'team-ack-accept');
209
+ assert.equal(existsSync(teamRoot), false);
210
+ }
211
+ finally {
212
+ await rm(cwd, { recursive: true, force: true });
213
+ }
214
+ });
163
215
  it('shutdownTeam force=true ignores rejection and cleans up team state', async () => {
164
216
  const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
165
217
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../../src/team/__tests__/runtime.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../../src/team/__tests__/runtime.test.ts"],"names":[],"mappings":"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"}
@@ -225,6 +225,36 @@ describe('team state', () => {
225
225
  await rm(cwd, { recursive: true, force: true });
226
226
  }
227
227
  });
228
+ it('sendDirectMessage recreates mailbox directory when missing', async () => {
229
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-team-mailbox-'));
230
+ try {
231
+ await initTeamState('team-msg-recreate-mailbox', 't', 'executor', 2, cwd);
232
+ await rm(join(cwd, '.omx', 'state', 'team', 'team-msg-recreate-mailbox', 'mailbox'), {
233
+ recursive: true,
234
+ force: true,
235
+ });
236
+ const dm = await sendDirectMessage('team-msg-recreate-mailbox', 'worker-1', 'worker-2', 'hello', cwd);
237
+ assert.equal(dm.to_worker, 'worker-2');
238
+ assert.equal(existsSync(join(cwd, '.omx', 'state', 'team', 'team-msg-recreate-mailbox', 'mailbox', 'worker-2.json')), true);
239
+ }
240
+ finally {
241
+ await rm(cwd, { recursive: true, force: true });
242
+ }
243
+ });
244
+ it('sendDirectMessage throws team not found after team cleanup', async () => {
245
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-team-mailbox-'));
246
+ try {
247
+ await initTeamState('team-msg-missing-team', 't', 'executor', 2, cwd);
248
+ await rm(join(cwd, '.omx', 'state', 'team', 'team-msg-missing-team'), {
249
+ recursive: true,
250
+ force: true,
251
+ });
252
+ await assert.rejects(() => sendDirectMessage('team-msg-missing-team', 'worker-1', 'worker-2', 'hello', cwd), /Team team-msg-missing-team not found/);
253
+ }
254
+ finally {
255
+ await rm(cwd, { recursive: true, force: true });
256
+ }
257
+ });
228
258
  it('markMessageNotified stores notified_at without forcing delivered_at', async () => {
229
259
  const cwd = await mkdtemp(join(tmpdir(), 'omx-team-mailbox-'));
230
260
  try {