oh-my-codex 0.4.1 → 0.4.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 (121) hide show
  1. package/README.es.md +36 -0
  2. package/README.ja.md +36 -0
  3. package/README.ko.md +36 -0
  4. package/README.md +13 -1
  5. package/README.pt.md +36 -0
  6. package/README.ru.md +36 -0
  7. package/README.vi.md +36 -0
  8. package/README.zh.md +39 -0
  9. package/bin/omx.js +2 -1
  10. package/dist/cli/__tests__/index.test.js +11 -0
  11. package/dist/cli/__tests__/index.test.js.map +1 -1
  12. package/dist/cli/__tests__/star-prompt.test.d.ts +2 -0
  13. package/dist/cli/__tests__/star-prompt.test.d.ts.map +1 -0
  14. package/dist/cli/__tests__/star-prompt.test.js +82 -0
  15. package/dist/cli/__tests__/star-prompt.test.js.map +1 -0
  16. package/dist/cli/__tests__/update.test.d.ts +2 -0
  17. package/dist/cli/__tests__/update.test.d.ts.map +1 -0
  18. package/dist/cli/__tests__/update.test.js +66 -0
  19. package/dist/cli/__tests__/update.test.js.map +1 -0
  20. package/dist/cli/index.d.ts +1 -1
  21. package/dist/cli/index.d.ts.map +1 -1
  22. package/dist/cli/index.js +13 -2
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/cli/star-prompt.d.ts +11 -0
  25. package/dist/cli/star-prompt.d.ts.map +1 -0
  26. package/dist/cli/star-prompt.js +74 -0
  27. package/dist/cli/star-prompt.js.map +1 -0
  28. package/dist/cli/update.d.ts.map +1 -1
  29. package/dist/cli/update.js +7 -29
  30. package/dist/cli/update.js.map +1 -1
  31. package/dist/config/__tests__/generator-notify.test.js +3 -3
  32. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  33. package/dist/config/generator.d.ts +1 -1
  34. package/dist/config/generator.js +8 -8
  35. package/dist/config/generator.js.map +1 -1
  36. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.d.ts +2 -0
  37. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.d.ts.map +1 -0
  38. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +427 -0
  39. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -0
  40. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +17 -0
  41. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
  42. package/dist/hooks/emulator.d.ts +1 -1
  43. package/dist/hooks/emulator.js +5 -5
  44. package/dist/hooks/emulator.js.map +1 -1
  45. package/dist/hooks/extensibility/__tests__/dispatcher.test.d.ts +2 -0
  46. package/dist/hooks/extensibility/__tests__/dispatcher.test.d.ts.map +1 -0
  47. package/dist/hooks/extensibility/__tests__/dispatcher.test.js +152 -0
  48. package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -0
  49. package/dist/hooks/extensibility/__tests__/events.test.d.ts +2 -0
  50. package/dist/hooks/extensibility/__tests__/events.test.d.ts.map +1 -0
  51. package/dist/hooks/extensibility/__tests__/events.test.js +117 -0
  52. package/dist/hooks/extensibility/__tests__/events.test.js.map +1 -0
  53. package/dist/hooks/extensibility/__tests__/loader.test.d.ts +2 -0
  54. package/dist/hooks/extensibility/__tests__/loader.test.d.ts.map +1 -0
  55. package/dist/hooks/extensibility/__tests__/loader.test.js +229 -0
  56. package/dist/hooks/extensibility/__tests__/loader.test.js.map +1 -0
  57. package/dist/hooks/extensibility/__tests__/logging.test.d.ts +2 -0
  58. package/dist/hooks/extensibility/__tests__/logging.test.d.ts.map +1 -0
  59. package/dist/hooks/extensibility/__tests__/logging.test.js +74 -0
  60. package/dist/hooks/extensibility/__tests__/logging.test.js.map +1 -0
  61. package/dist/hooks/extensibility/__tests__/plugin-runner.test.d.ts +2 -0
  62. package/dist/hooks/extensibility/__tests__/plugin-runner.test.d.ts.map +1 -0
  63. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js +202 -0
  64. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js.map +1 -0
  65. package/dist/hooks/extensibility/__tests__/runtime.test.d.ts +2 -0
  66. package/dist/hooks/extensibility/__tests__/runtime.test.d.ts.map +1 -0
  67. package/dist/hooks/extensibility/__tests__/runtime.test.js +117 -0
  68. package/dist/hooks/extensibility/__tests__/runtime.test.js.map +1 -0
  69. package/dist/hooks/extensibility/__tests__/sdk.test.d.ts +2 -0
  70. package/dist/hooks/extensibility/__tests__/sdk.test.d.ts.map +1 -0
  71. package/dist/hooks/extensibility/__tests__/sdk.test.js +277 -0
  72. package/dist/hooks/extensibility/__tests__/sdk.test.js.map +1 -0
  73. package/dist/hud/__tests__/colors.test.d.ts +2 -0
  74. package/dist/hud/__tests__/colors.test.d.ts.map +1 -0
  75. package/dist/hud/__tests__/colors.test.js +194 -0
  76. package/dist/hud/__tests__/colors.test.js.map +1 -0
  77. package/dist/hud/__tests__/render.test.d.ts +2 -0
  78. package/dist/hud/__tests__/render.test.d.ts.map +1 -0
  79. package/dist/hud/__tests__/render.test.js +449 -0
  80. package/dist/hud/__tests__/render.test.js.map +1 -0
  81. package/dist/hud/__tests__/types.test.d.ts +2 -0
  82. package/dist/hud/__tests__/types.test.d.ts.map +1 -0
  83. package/dist/hud/__tests__/types.test.js +17 -0
  84. package/dist/hud/__tests__/types.test.js.map +1 -0
  85. package/dist/notifications/__tests__/tmux-detector.test.js +69 -1
  86. package/dist/notifications/__tests__/tmux-detector.test.js.map +1 -1
  87. package/dist/notifications/reply-listener.d.ts +1 -1
  88. package/dist/notifications/reply-listener.js +1 -1
  89. package/dist/notifications/tmux-detector.d.ts +16 -0
  90. package/dist/notifications/tmux-detector.d.ts.map +1 -1
  91. package/dist/notifications/tmux-detector.js +37 -22
  92. package/dist/notifications/tmux-detector.js.map +1 -1
  93. package/dist/team/__tests__/tmux-session.test.js +61 -1
  94. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  95. package/dist/team/orchestrator.d.ts +1 -1
  96. package/dist/team/orchestrator.js +1 -1
  97. package/dist/team/runtime.d.ts.map +1 -1
  98. package/dist/team/runtime.js +14 -2
  99. package/dist/team/runtime.js.map +1 -1
  100. package/dist/team/state.d.ts +4 -0
  101. package/dist/team/state.d.ts.map +1 -1
  102. package/dist/team/state.js.map +1 -1
  103. package/dist/team/tmux-session.d.ts +14 -2
  104. package/dist/team/tmux-session.d.ts.map +1 -1
  105. package/dist/team/tmux-session.js +42 -6
  106. package/dist/team/tmux-session.js.map +1 -1
  107. package/dist/utils/__tests__/package.test.d.ts +2 -0
  108. package/dist/utils/__tests__/package.test.d.ts.map +1 -0
  109. package/dist/utils/__tests__/package.test.js +21 -0
  110. package/dist/utils/__tests__/package.test.js.map +1 -0
  111. package/dist/utils/__tests__/paths.test.d.ts +2 -0
  112. package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
  113. package/dist/utils/__tests__/paths.test.js +117 -0
  114. package/dist/utils/__tests__/paths.test.js.map +1 -0
  115. package/dist/verification/__tests__/verifier.test.d.ts +2 -0
  116. package/dist/verification/__tests__/verifier.test.d.ts.map +1 -0
  117. package/dist/verification/__tests__/verifier.test.js +94 -0
  118. package/dist/verification/__tests__/verifier.test.js.map +1 -0
  119. package/package.json +1 -1
  120. package/scripts/notify-hook.js +164 -3
  121. package/templates/AGENTS.md +1 -1
package/README.es.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) README en Español
2
+
3
+ > Para la documentación completa original, consulta [English README](./README.md).
4
+
5
+ OMX es una capa de orquestación multiagente para OpenAI Codex CLI.
6
+
7
+ ## Inicio rápido
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## Funcionalidades clave
16
+
17
+ - Ejecución de agentes especializados con prompts de rol (`/prompts:name`)
18
+ - Automatización de flujos repetibles con skills (`$name`)
19
+ - Orquestación en equipo con tmux (`omx team`, `$team`)
20
+ - Estado y memoria persistentes mediante servidores MCP
21
+
22
+ ## Comandos principales
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## Más información
34
+
35
+ - Documento principal: [README.md](./README.md)
36
+ - Sitio web: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.ja.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) 日本語README
2
+
3
+ > 完全な原文は [English README](./README.md) を参照してください。
4
+
5
+ OMX は OpenAI Codex CLI 向けのマルチエージェント・オーケストレーションレイヤーです。
6
+
7
+ ## クイックスタート
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## 主な機能
16
+
17
+ - ロールプロンプト(`/prompts:name`)による専門エージェント実行
18
+ - ワークフロースキル(`$name`)による反復作業の自動化
19
+ - tmux ベースのチーム実行(`omx team`, `$team`)
20
+ - MCP サーバーによる状態・メモリの永続化
21
+
22
+ ## 主なコマンド
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## 詳細情報
34
+
35
+ - メインドキュメント: [README.md](./README.md)
36
+ - ウェブサイト: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.ko.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) 한국어 README
2
+
3
+ > 전체 원문 문서는 [English README](./README.md)를 참고하세요.
4
+
5
+ OMX는 OpenAI Codex CLI를 위한 멀티 에이전트 오케스트레이션 레이어입니다.
6
+
7
+ ## 빠른 시작
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## 핵심 기능
16
+
17
+ - 역할 프롬프트(`/prompts:name`) 기반 전문 에이전트 실행
18
+ - 워크플로우 스킬(`$name`) 기반 반복 작업 자동화
19
+ - tmux 팀 오케스트레이션(`omx team`, `$team`)
20
+ - MCP 서버를 통한 상태/메모리 지속성
21
+
22
+ ## 주요 명령어
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## 더 알아보기
34
+
35
+ - 메인 문서: [README.md](./README.md)
36
+ - 웹사이트: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.md CHANGED
@@ -14,6 +14,18 @@
14
14
 
15
15
  Multi-agent orchestration layer for [OpenAI Codex CLI](https://github.com/openai/codex).
16
16
 
17
+ ## Languages
18
+
19
+ - [English](./README.md)
20
+ - [한국어 (Korean)](./README.ko.md)
21
+ - [日本語 (Japanese)](./README.ja.md)
22
+ - [简体中文 (Chinese)](./README.zh.md)
23
+ - [Tiếng Việt (Vietnamese)](./README.vi.md)
24
+ - [Español (Spanish)](./README.es.md)
25
+ - [Português (Portuguese)](./README.pt.md)
26
+ - [Русский (Russian)](./README.ru.md)
27
+
28
+
17
29
  OMX turns Codex from a single-session agent into a coordinated system with:
18
30
  - Role prompts (`/prompts:name`) for specialized agents
19
31
  - Workflow skills (`$name`) for repeatable execution modes
@@ -186,7 +198,7 @@ Important rule: do not shutdown while tasks are still `in_progress` unless abort
186
198
  - `notify = ["node", "..."]`
187
199
  - `model_reasoning_effort = "high"`
188
200
  - `developer_instructions = "..."`
189
- - `[features] collab = true, child_agents_md = true`
201
+ - `[features] multi_agent = true, child_agents_md = true`
190
202
  - MCP server entries (`omx_state`, `omx_memory`, `omx_code_intel`, `omx_trace`)
191
203
  - `[tui] status_line`
192
204
  - Project `AGENTS.md`
package/README.pt.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) README em Português
2
+
3
+ > Para a documentação completa original, consulte [English README](./README.md).
4
+
5
+ OMX é uma camada de orquestração multiagente para o OpenAI Codex CLI.
6
+
7
+ ## Início rápido
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## Recursos principais
16
+
17
+ - Execução de agentes especializados com prompts de papel (`/prompts:name`)
18
+ - Automação de fluxos repetitivos com skills (`$name`)
19
+ - Orquestração em equipe com tmux (`omx team`, `$team`)
20
+ - Estado e memória persistentes via servidores MCP
21
+
22
+ ## Comandos principais
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## Saiba mais
34
+
35
+ - Documento principal: [README.md](./README.md)
36
+ - Website: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.ru.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) README на русском
2
+
3
+ > Полная оригинальная документация: [English README](./README.md).
4
+
5
+ OMX — это слой оркестрации мультиагентной работы для OpenAI Codex CLI.
6
+
7
+ ## Быстрый старт
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## Ключевые возможности
16
+
17
+ - Запуск специализированных агентов через role prompts (`/prompts:name`)
18
+ - Автоматизация повторяемых процессов через skills (`$name`)
19
+ - Командная оркестрация в tmux (`omx team`, `$team`)
20
+ - Постоянное хранение состояния и памяти через MCP-серверы
21
+
22
+ ## Основные команды
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## Подробнее
34
+
35
+ - Основной документ: [README.md](./README.md)
36
+ - Сайт: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.vi.md ADDED
@@ -0,0 +1,36 @@
1
+ # oh-my-codex (OMX) README tiếng Việt
2
+
3
+ > Tài liệu đầy đủ bằng tiếng Anh: [English README](./README.md).
4
+
5
+ OMX là lớp điều phối đa tác nhân cho OpenAI Codex CLI.
6
+
7
+ ## Bắt đầu nhanh
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ ## Tính năng chính
16
+
17
+ - Chạy tác nhân chuyên biệt với role prompt (`/prompts:name`)
18
+ - Tự động hóa workflow lặp lại bằng skill (`$name`)
19
+ - Điều phối đội ngũ trong tmux (`omx team`, `$team`)
20
+ - Lưu trạng thái + bộ nhớ lâu dài qua MCP servers
21
+
22
+ ## Lệnh thường dùng
23
+
24
+ ```bash
25
+ omx
26
+ omx setup
27
+ omx doctor
28
+ omx team <args>
29
+ omx status
30
+ omx cancel
31
+ ```
32
+
33
+ ## Tìm hiểu thêm
34
+
35
+ - Tài liệu chính: [README.md](./README.md)
36
+ - Website: https://yeachan-heo.github.io/oh-my-codex-website/
package/README.zh.md ADDED
@@ -0,0 +1,39 @@
1
+ # oh-my-codex (OMX) — 简体中文
2
+
3
+ > 英文原版 README: [README.md](./README.md)
4
+
5
+ `oh-my-codex (OMX)` 是 [OpenAI Codex CLI](https://github.com/openai/codex) 的多智能体编排层。
6
+
7
+ ## 快速开始
8
+
9
+ ```bash
10
+ npm install -g oh-my-codex
11
+ omx setup
12
+ omx doctor
13
+ ```
14
+
15
+ 推荐启动参数:
16
+
17
+ ```bash
18
+ omx --xhigh --madmax
19
+ ```
20
+
21
+ ## OMX 提供的能力
22
+
23
+ - 角色提示词(`/prompts:name`)
24
+ - 工作流技能(`$name`)
25
+ - 基于 tmux 的团队编排(`omx team`, `$team`)
26
+ - 基于 `.omx/` 的状态与记忆持久化
27
+
28
+ ## 常用命令
29
+
30
+ ```bash
31
+ omx
32
+ omx setup
33
+ omx doctor
34
+ omx team <args>
35
+ omx status
36
+ omx cancel
37
+ ```
38
+
39
+ 更多细节请参考英文文档 [README.md](./README.md)。
package/bin/omx.js CHANGED
@@ -17,7 +17,8 @@ const srcEntry = join(root, 'src', 'cli', 'index.ts');
17
17
 
18
18
  if (existsSync(distEntry)) {
19
19
  const { main } = await import(distEntry);
20
- main(process.argv.slice(2));
20
+ await main(process.argv.slice(2));
21
+ process.exit(process.exitCode ?? 0);
21
22
  } else {
22
23
  // Direct TS execution requires tsx or similar
23
24
  console.error('oh-my-codex: run "npm run build" first, or use tsx/ts-node');
@@ -79,6 +79,17 @@ describe('tmux HUD pane helpers', () => {
79
79
  it('buildHudPaneCleanupTargets de-dupes pane ids and includes created pane', () => {
80
80
  assert.deepEqual(buildHudPaneCleanupTargets(['%3', '%3', 'invalid'], '%4'), ['%3', '%4']);
81
81
  });
82
+ it('buildHudPaneCleanupTargets excludes leader pane from existing ids', () => {
83
+ // %5 is the leader pane — it must not be included even if findHudWatchPaneIds let it through.
84
+ assert.deepEqual(buildHudPaneCleanupTargets(['%3', '%5'], '%4', '%5'), ['%3', '%4']);
85
+ });
86
+ it('buildHudPaneCleanupTargets excludes leader pane even when it matches the created HUD pane id', () => {
87
+ // Defensive edge case: if createHudWatchPane somehow returned the leader pane id, guard protects it.
88
+ assert.deepEqual(buildHudPaneCleanupTargets(['%3'], '%5', '%5'), ['%3']);
89
+ });
90
+ it('buildHudPaneCleanupTargets is a no-op guard when leaderPaneId is absent', () => {
91
+ assert.deepEqual(buildHudPaneCleanupTargets(['%3'], '%4'), ['%3', '%4']);
92
+ });
82
93
  });
83
94
  describe('buildTmuxShellCommand', () => {
84
95
  it('preserves quoted config values for tmux shell-command execution', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=star-prompt.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"star-prompt.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/star-prompt.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import { describe, it, before, after } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { mkdtemp, rm, mkdir, writeFile, readFile } from 'fs/promises';
4
+ import { existsSync } from 'fs';
5
+ import { tmpdir } from 'os';
6
+ import { join } from 'path';
7
+ // We test the pure state helpers by monkey-patching homedir via dynamic import
8
+ // of the module. Since ESM modules are cached, we test the exported helpers
9
+ // that accept explicit paths, exercising the same logic they use internally.
10
+ async function writeStateFile(dir, content) {
11
+ await mkdir(join(dir, '.omx', 'state'), { recursive: true });
12
+ await writeFile(join(dir, '.omx', 'state', 'star-prompt.json'), JSON.stringify(content, null, 2));
13
+ }
14
+ describe('star-prompt state helpers (integration via filesystem)', () => {
15
+ let tmpDir;
16
+ before(async () => {
17
+ tmpDir = await mkdtemp(join(tmpdir(), 'omx-star-test-'));
18
+ });
19
+ after(async () => {
20
+ await rm(tmpDir, { recursive: true, force: true });
21
+ });
22
+ it('state file does not exist initially', () => {
23
+ const stateFile = join(tmpDir, '.omx', 'state', 'star-prompt.json');
24
+ assert.equal(existsSync(stateFile), false);
25
+ });
26
+ it('state file is written with prompted_at timestamp', async () => {
27
+ const stateDir = join(tmpDir, '.omx', 'state');
28
+ await mkdir(stateDir, { recursive: true });
29
+ const statePath = join(stateDir, 'star-prompt.json');
30
+ const promptedAt = new Date().toISOString();
31
+ await writeFile(statePath, JSON.stringify({ prompted_at: promptedAt }, null, 2));
32
+ const raw = await readFile(statePath, 'utf-8');
33
+ const parsed = JSON.parse(raw);
34
+ assert.equal(typeof parsed.prompted_at, 'string');
35
+ assert.equal(parsed.prompted_at, promptedAt);
36
+ });
37
+ it('detects already-prompted state from valid JSON', async () => {
38
+ const stateDir = join(tmpDir, '.omx', 'state2');
39
+ await writeStateFile(tmpDir.replace(tmpDir, tmpDir + '2'), { prompted_at: '2026-01-01T00:00:00.000Z' }).catch(() => { });
40
+ // Verify a valid state object has the expected shape
41
+ const state = { prompted_at: '2026-01-01T00:00:00.000Z' };
42
+ assert.equal(typeof state.prompted_at, 'string');
43
+ });
44
+ it('handles corrupted state file gracefully', async () => {
45
+ const stateDir2 = join(tmpDir, 'corrupt', '.omx', 'state');
46
+ await mkdir(stateDir2, { recursive: true });
47
+ const statePath = join(stateDir2, 'star-prompt.json');
48
+ await writeFile(statePath, 'not valid json {{{');
49
+ let parsed = null;
50
+ try {
51
+ parsed = JSON.parse(await readFile(statePath, 'utf-8'));
52
+ }
53
+ catch {
54
+ parsed = null;
55
+ }
56
+ assert.equal(parsed, null);
57
+ });
58
+ });
59
+ describe('star-prompt TTY skip behavior', () => {
60
+ it('process.stdin.isTTY is a boolean or undefined', () => {
61
+ // Just verify we can read the property without throwing
62
+ const isTTY = process.stdin.isTTY;
63
+ assert.ok(isTTY === true || isTTY === false || isTTY === undefined);
64
+ });
65
+ it('process.stdout.isTTY is a boolean or undefined', () => {
66
+ const isTTY = process.stdout.isTTY;
67
+ assert.ok(isTTY === true || isTTY === false || isTTY === undefined);
68
+ });
69
+ });
70
+ describe('star-prompt state path', () => {
71
+ it('starPromptStatePath returns a path ending in star-prompt.json', async () => {
72
+ const { starPromptStatePath } = await import('../star-prompt.js');
73
+ const p = starPromptStatePath();
74
+ assert.ok(p.endsWith('star-prompt.json'), `Expected path to end with star-prompt.json, got: ${p}`);
75
+ });
76
+ it('starPromptStatePath includes .omx/state', async () => {
77
+ const { starPromptStatePath } = await import('../star-prompt.js');
78
+ const p = starPromptStatePath();
79
+ assert.ok(p.includes(join('.omx', 'state')), `Expected path to include .omx/state, got: ${p}`);
80
+ });
81
+ });
82
+ //# sourceMappingURL=star-prompt.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"star-prompt.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/star-prompt.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/update.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { isNewerVersion, shouldCheckForUpdates } from '../update.js';
4
+ describe('isNewerVersion', () => {
5
+ it('returns true when latest has higher major', () => {
6
+ assert.equal(isNewerVersion('1.0.0', '2.0.0'), true);
7
+ });
8
+ it('returns true when latest has higher minor', () => {
9
+ assert.equal(isNewerVersion('1.0.0', '1.1.0'), true);
10
+ });
11
+ it('returns true when latest has higher patch', () => {
12
+ assert.equal(isNewerVersion('1.0.0', '1.0.1'), true);
13
+ });
14
+ it('returns false when versions are equal', () => {
15
+ assert.equal(isNewerVersion('1.2.3', '1.2.3'), false);
16
+ });
17
+ it('returns false when current is ahead', () => {
18
+ assert.equal(isNewerVersion('2.0.0', '1.9.9'), false);
19
+ });
20
+ it('returns false for invalid current version', () => {
21
+ assert.equal(isNewerVersion('invalid', '1.0.0'), false);
22
+ });
23
+ it('returns false for invalid latest version', () => {
24
+ assert.equal(isNewerVersion('1.0.0', 'invalid'), false);
25
+ });
26
+ it('handles v-prefixed versions', () => {
27
+ assert.equal(isNewerVersion('v1.0.0', 'v1.0.1'), true);
28
+ });
29
+ it('returns false when major is lower even if minor/patch higher', () => {
30
+ assert.equal(isNewerVersion('2.5.5', '1.9.9'), false);
31
+ });
32
+ });
33
+ describe('shouldCheckForUpdates', () => {
34
+ const INTERVAL_MS = 12 * 60 * 60 * 1000; // 12h
35
+ it('returns true when state is null', () => {
36
+ assert.equal(shouldCheckForUpdates(Date.now(), null), true);
37
+ });
38
+ it('returns true when last_checked_at is missing', () => {
39
+ assert.equal(shouldCheckForUpdates(Date.now(), {}), true);
40
+ });
41
+ it('returns true when last_checked_at is invalid', () => {
42
+ assert.equal(shouldCheckForUpdates(Date.now(), { last_checked_at: 'not-a-date' }), true);
43
+ });
44
+ it('returns false when checked within interval', () => {
45
+ const now = Date.now();
46
+ const recentCheck = new Date(now - INTERVAL_MS + 1000).toISOString();
47
+ assert.equal(shouldCheckForUpdates(now, { last_checked_at: recentCheck }), false);
48
+ });
49
+ it('returns true when check is overdue', () => {
50
+ const now = Date.now();
51
+ const oldCheck = new Date(now - INTERVAL_MS - 1000).toISOString();
52
+ assert.equal(shouldCheckForUpdates(now, { last_checked_at: oldCheck }), true);
53
+ });
54
+ it('returns true when exactly at interval boundary', () => {
55
+ const now = Date.now();
56
+ const exactCheck = new Date(now - INTERVAL_MS).toISOString();
57
+ assert.equal(shouldCheckForUpdates(now, { last_checked_at: exactCheck }), true);
58
+ });
59
+ it('respects custom interval', () => {
60
+ const now = Date.now();
61
+ const customInterval = 60 * 1000; // 1 min
62
+ const recentCheck = new Date(now - 30 * 1000).toISOString(); // 30s ago
63
+ assert.equal(shouldCheckForUpdates(now, { last_checked_at: recentCheck }, customInterval), false);
64
+ });
65
+ });
66
+ //# sourceMappingURL=update.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/update.test.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ interface TmuxPaneSnapshot {
18
18
  export declare function parseTmuxPaneSnapshot(output: string): TmuxPaneSnapshot[];
19
19
  export declare function isHudWatchPane(pane: TmuxPaneSnapshot): boolean;
20
20
  export declare function findHudWatchPaneIds(panes: TmuxPaneSnapshot[], currentPaneId?: string): string[];
21
- export declare function buildHudPaneCleanupTargets(existingPaneIds: string[], createdPaneId: string | null): string[];
21
+ export declare function buildHudPaneCleanupTargets(existingPaneIds: string[], createdPaneId: string | null, leaderPaneId?: string): string[];
22
22
  export declare function main(args: string[]): Promise<void>;
23
23
  export declare function normalizeCodexLaunchArgs(args: string[]): string[];
24
24
  export declare function injectModelInstructionsBypassArgs(cwd: string, args: string[], env?: NodeJS.ProcessEnv, defaultFilePath?: string): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8EH,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3J,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAY1E;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEzD,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,iBAAiB,CAEhG;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAcxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/F;AAED,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAM5G;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmExD;AAgGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA2CjE;AAsCD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CAIV;AA2ED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ9E;AAeD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,UAAO,EACzB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBlF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyC5F;AAsBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB3E;AAsLD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+EH,KAAK,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3J,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAY1E;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEzD,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,iBAAiB,CAEhG;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAcxE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/F;AAED,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnI;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmExD;AAsGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA2CjE;AAsCD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CAIV;AA2ED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ9E;AAeD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,UAAO,EACzB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBlF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyC5F;AAsBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB3E;AAuLD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7E"}
package/dist/cli/index.js CHANGED
@@ -14,6 +14,7 @@ import { hudCommand } from '../hud/index.js';
14
14
  import { teamCommand } from './team.js';
15
15
  import { getAllScopedStateDirs, getBaseStateDir, getStateDir } from '../mcp/state-paths.js';
16
16
  import { maybeCheckAndPromptUpdate } from './update.js';
17
+ import { maybePromptGithubStar } from './star-prompt.js';
17
18
  import { generateOverlay, writeSessionModelInstructionsFile, removeSessionModelInstructionsFile, sessionModelInstructionsPath, } from '../hooks/agents-overlay.js';
18
19
  import { readSessionState, isSessionStale, writeSessionStart, writeSessionEnd, resetSessionMetrics, } from '../hooks/session.js';
19
20
  import { getPackageRoot } from '../utils/package.js';
@@ -110,11 +111,15 @@ export function findHudWatchPaneIds(panes, currentPaneId) {
110
111
  .filter((pane) => isHudWatchPane(pane))
111
112
  .map((pane) => pane.paneId);
112
113
  }
113
- export function buildHudPaneCleanupTargets(existingPaneIds, createdPaneId) {
114
+ export function buildHudPaneCleanupTargets(existingPaneIds, createdPaneId, leaderPaneId) {
114
115
  const targets = new Set(existingPaneIds.filter((id) => id.startsWith('%')));
115
116
  if (createdPaneId && createdPaneId.startsWith('%')) {
116
117
  targets.add(createdPaneId);
117
118
  }
119
+ // Guard: never kill the leader's own pane under any circumstances.
120
+ if (leaderPaneId && leaderPaneId.startsWith('%')) {
121
+ targets.delete(leaderPaneId);
122
+ }
118
123
  return [...targets];
119
124
  }
120
125
  export async function main(args) {
@@ -255,6 +260,12 @@ async function launchWithHud(args) {
255
260
  catch {
256
261
  // Non-fatal: update checks must never block launch
257
262
  }
263
+ try {
264
+ await maybePromptGithubStar();
265
+ }
266
+ catch {
267
+ // Non-fatal: star prompt must never block launch
268
+ }
258
269
  // ── Phase 1: preLaunch ──────────────────────────────────────────────────
259
270
  try {
260
271
  await preLaunch(cwd, sessionId);
@@ -640,7 +651,7 @@ function runCodex(cwd, args, sessionId) {
640
651
  // Codex exited
641
652
  }
642
653
  finally {
643
- const cleanupPaneIds = buildHudPaneCleanupTargets(listHudWatchPaneIdsInCurrentWindow(currentPaneId), hudPaneId);
654
+ const cleanupPaneIds = buildHudPaneCleanupTargets(listHudWatchPaneIdsInCurrentWindow(currentPaneId), hudPaneId, currentPaneId);
644
655
  for (const paneId of cleanupPaneIds) {
645
656
  killTmuxPane(paneId);
646
657
  }