oh-my-opencode 4.16.0 → 4.16.1

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 (128) hide show
  1. package/.agents/skills/codex-qa/SKILL.md +9 -7
  2. package/.agents/skills/codex-qa/references/logging-debug.md +6 -4
  3. package/.agents/skills/opencode-qa/SKILL.md +9 -9
  4. package/.agents/skills/opencode-qa/references/tui-tmux.md +10 -8
  5. package/dist/cli/codex-ulw-loop.d.ts +8 -0
  6. package/dist/cli/get-local-version/types.d.ts +1 -1
  7. package/dist/cli/index.js +260 -207
  8. package/dist/cli-node/index.js +260 -207
  9. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  10. package/dist/features/monitor/process.d.ts +17 -1
  11. package/dist/index.js +1048 -1001
  12. package/dist/skills/frontend/SKILL.md +9 -9
  13. package/dist/skills/frontend/references/design/README.md +7 -3
  14. package/dist/skills/frontend/references/design/_INDEX.md +1 -1
  15. package/dist/skills/frontend/references/design/design-system-architecture.md +24 -2
  16. package/dist/skills/frontend/references/designpowers/README.md +2 -2
  17. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +1 -1
  18. package/dist/skills/start-work/SKILL.md +2 -2
  19. package/dist/skills/visual-qa/SKILL.md +13 -17
  20. package/docs/reference/web-terminal-visual-qa.md +39 -45
  21. package/package.json +31 -25
  22. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  23. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  29. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  33. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  35. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +2 -2
  37. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  38. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  40. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  42. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/ultrawork/directive.md +18 -10
  44. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +18 -10
  47. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +11 -0
  48. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +22 -1
  49. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +4 -0
  50. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +18 -10
  51. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +15 -2
  52. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +2 -1
  53. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +89 -27
  54. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +6 -0
  55. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +55 -9
  56. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-snapshot.d.ts +15 -0
  57. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-snapshot.js +33 -0
  58. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +10 -3
  59. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +15 -11
  60. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +2 -2
  61. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  62. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
  63. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +7 -7
  64. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +17 -2
  65. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +2 -1
  66. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +59 -11
  67. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-snapshot.ts +38 -0
  68. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +11 -3
  69. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +15 -7
  70. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +16 -0
  71. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +260 -2
  72. package/packages/omo-codex/plugin/components/ulw-loop/test/steering-snapshot.test.ts +124 -0
  73. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +101 -2
  74. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  95. package/packages/omo-codex/plugin/package-lock.json +13 -13
  96. package/packages/omo-codex/plugin/package.json +1 -1
  97. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +10 -6
  98. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +9 -9
  99. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +7 -3
  100. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -1
  101. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +24 -2
  102. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +2 -2
  103. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +1 -1
  104. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +2 -2
  105. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +18 -10
  106. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  107. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +7 -7
  108. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +11 -0
  109. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +13 -17
  110. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -4
  111. package/packages/omo-codex/plugin/test/bootstrap-hooks.test.mjs +1 -1
  112. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +22 -9
  113. package/packages/omo-codex/plugin/test/sync-hook-status-messages.test.mjs +6 -6
  114. package/packages/omo-codex/plugin/test/ulw-plan-skill-contract.test.mjs +52 -0
  115. package/packages/omo-codex/scripts/install-dist/install-local.mjs +65 -39
  116. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +2 -2
  117. package/packages/shared-skills/skills/frontend/SKILL.md +9 -9
  118. package/packages/shared-skills/skills/frontend/references/design/README.md +7 -3
  119. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -1
  120. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +24 -2
  121. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +2 -2
  122. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +1 -1
  123. package/packages/shared-skills/skills/start-work/SKILL.md +2 -2
  124. package/packages/shared-skills/skills/visual-qa/SKILL.md +13 -17
  125. package/script/qa/strip-ansi.mjs +10 -0
  126. package/script/qa/web-terminal-visual-qa.mjs +112 -195
  127. package/script/qa/xterm-live-terminal.mjs +180 -0
  128. package/script/qa/web-terminal-renderer.mjs +0 -218
@@ -70,19 +70,21 @@ Windows.
70
70
  | `scripts/tui-smoke.sh` | the real codex TUI boots in the isolated home, renders, and survives (no early exit); captures the pane |
71
71
 
72
72
  When TUI visual QA evidence is needed, follow
73
- `docs/reference/web-terminal-visual-qa.md` and do not stop at the raw pane. Replay the
74
- captured pane through the repository web-terminal helper so the PR can attach a
75
- stable browser screenshot:
73
+ `docs/reference/web-terminal-visual-qa.md`: render the TUI through the real
74
+ xterm.js web terminal - NEVER the `tmux capture-pane` frame, which degrades
75
+ color and CJK width:
76
76
 
77
77
  ```bash
78
78
  node script/qa/web-terminal-visual-qa.mjs --title "Codex TUI QA" \
79
- --from-file .omo/evidence/<slug>/codex-tui-pane.txt \
79
+ --command "codex" --input "{Enter}" \
80
80
  --evidence-dir .omo/evidence/<slug>/codex-web-terminal
81
81
  ```
82
82
 
83
- The helper writes `terminal.txt`, `terminal-ansi.txt`, `terminal.html`,
84
- `terminal.png`, and `metadata.json`. Use that artifact set for TUI visual QA;
85
- use `app-server-drive.sh --plugin` for assertion-grade hook behavior.
83
+ The helper runs a real pty, renders it in xterm.js under Chrome, and writes
84
+ `terminal.txt`, `terminal-ansi.txt`, `terminal.png` (true color), and
85
+ `metadata.json` (`--from-file <capture.ansi>` replays a saved raw stream). Use
86
+ that artifact set for TUI visual QA; use `app-server-drive.sh --plugin` for
87
+ assertion-grade hook behavior.
86
88
 
87
89
  ## Match QA to your change scope
88
90
 
@@ -46,17 +46,19 @@ tmux send-keys -t <sess> "/debug-config" Enter
46
46
  tmux capture-pane -t <sess> -p -S -
47
47
  ```
48
48
 
49
- For TUI visual QA evidence, replay that pane capture through the browser helper
50
- from the repository root:
49
+ For TUI visual QA evidence, render the live TUI through the real xterm.js web
50
+ terminal instead of scraping the tmux pane (`tmux capture-pane` degrades color
51
+ and CJK width):
51
52
 
52
53
  ```bash
53
54
  node script/qa/web-terminal-visual-qa.mjs --title "Codex TUI /debug-config" \
54
- --from-file .omo/evidence/<slug>/codex-debug-config-pane.txt \
55
+ --command "codex" --input "/debug-config" --input "{Enter}" \
55
56
  --evidence-dir .omo/evidence/<slug>/codex-debug-config-web-terminal
56
57
  ```
57
58
 
58
59
  Attach the resulting `terminal.png` and keep `metadata.json` with the cleanup
59
- receipt. The pane proves terminal text; the PNG proves the visual TUI surface.
60
+ receipt. The tmux pane above proves the config text; this PNG proves the visual
61
+ TUI surface in true color.
60
62
 
61
63
  ## 5. `codex debug` subcommands
62
64
 
@@ -125,21 +125,21 @@ This launches the TUI under tmux in an isolated sandbox, confirms it renders
125
125
  session down, and verifies the real DB session count is unchanged.
126
126
 
127
127
  When TUI visual QA evidence is needed for a PR, follow
128
- `docs/reference/web-terminal-visual-qa.md` and attach a browser-rendered
129
- terminal artifact in addition to the tmux pane. From the repository root, replay
130
- the captured pane or run a short tmux-backed command through:
128
+ `docs/reference/web-terminal-visual-qa.md`: render the TUI through the real
129
+ xterm.js web terminal and screenshot it - NEVER the `tmux capture-pane` frame,
130
+ which degrades color and CJK width. From the repository root:
131
131
 
132
132
  ```bash
133
133
  node script/qa/web-terminal-visual-qa.mjs --title "OpenCode TUI QA" \
134
- --from-file .omo/evidence/<slug>/opencode-tui-pane.txt \
134
+ --command "opencode" --input "{Enter}" \
135
135
  --evidence-dir .omo/evidence/<slug>/opencode-web-terminal
136
136
  ```
137
137
 
138
- This writes `terminal.txt`, `terminal-ansi.txt`, `terminal.html`,
139
- `terminal.png`, and `metadata.json` so the PR can attach a stable TUI visual
140
- screenshot plus the cleanup receipt. Use `--command "<cmd>"` only for short
141
- ad-hoc terminal checks; the isolated `scripts/tui-smoke.sh` remains the
142
- canonical OpenCode TUI smoke.
138
+ This runs a real pty, renders it in xterm.js under Chrome, and writes
139
+ `terminal.txt`, `terminal-ansi.txt`, `terminal.png` (the true-color artifact),
140
+ and `metadata.json` with a cleanup receipt (`--from-file <capture.ansi>` replays
141
+ a saved raw stream). The isolated `scripts/tui-smoke.sh` remains the canonical
142
+ OpenCode TUI boot smoke (tmux), separate from this visual evidence.
143
143
 
144
144
  Honest verdict: tmux is fine for SMOKE (did it boot, render, accept a key) but
145
145
  fragile for asserting conversation output (the TUI is a 60fps full-screen app).
@@ -16,20 +16,22 @@ Launching the real TUI would create sessions in the real ~/.local/share/opencode
16
16
 
17
17
  ## Browser-rendered TUI visual evidence
18
18
 
19
- For PR evidence or any TUI visual QA claim, keep the tmux transcript and add a
20
- browser-rendered screenshot using the repository helper:
19
+ For PR evidence or any TUI visual QA claim, render the live TUI through the real
20
+ xterm.js web terminal - NEVER the `tmux capture-pane` frame, which degrades
21
+ color and CJK width:
21
22
 
22
23
  ```bash
23
24
  node script/qa/web-terminal-visual-qa.mjs --title "OpenCode TUI QA" \
24
- --from-file .omo/evidence/<slug>/opencode-tui-pane.txt \
25
+ --command "opencode" --input "{Enter}" \
25
26
  --evidence-dir .omo/evidence/<slug>/opencode-web-terminal
26
27
  ```
27
28
 
28
- The helper replays the terminal frame into `terminal.html`, captures
29
- `terminal.png` with Chrome when available, writes `metadata.json`, and records
30
- the cleanup receipt. This is the required TUI visual evidence pattern when the
31
- review needs to see the screen, while `scripts/tui-smoke.sh` remains the
32
- isolation/smoke authority.
29
+ The helper runs a real pty, renders it in xterm.js under Chrome, captures
30
+ `terminal.png` (true color), writes `terminal.txt` + `metadata.json`, and
31
+ records the cleanup receipt (`--from-file <capture.ansi>` replays a saved raw
32
+ stream). This is the required TUI visual evidence pattern when the review needs
33
+ to see the screen, while `scripts/tui-smoke.sh` remains the isolation/smoke
34
+ authority.
33
35
 
34
36
  ## Manual tmux recipe (fenced) - for ad hoc smoke
35
37
 
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Sentinel forwarded to every delegated ulw-loop child. A delegation chain is
3
+ * expected to terminate in ONE hop (component bin or cached component CLI).
4
+ * Without it, a broken install (missing component CLI) made the legacy `omo`
5
+ * wrapper re-enter this resolver: wrapper -> omo CLI -> wrapper -> ... which
6
+ * fork-bombed thousands of live processes and exhausted system RAM.
7
+ */
8
+ export declare const ULW_LOOP_DELEGATION_SENTINEL = "OMO_ULW_LOOP_DELEGATED";
1
9
  export type CodexUlwLoopCommand = {
2
10
  readonly executable: string;
3
11
  readonly argsPrefix: readonly string[];
@@ -5,7 +5,7 @@ export interface VersionInfo {
5
5
  isLocalDev: boolean;
6
6
  isPinned: boolean;
7
7
  pinnedVersion: string | null;
8
- status: "up-to-date" | "outdated" | "local-dev" | "pinned" | "error" | "unknown";
8
+ status: "up-to-date" | "outdated" | "local-dev" | "pinned" | "pinned-mismatch" | "error" | "unknown";
9
9
  }
10
10
  export interface GetLocalVersionOptions {
11
11
  directory?: string;