oh-my-opencode 5.1.30 → 5.1.32
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 +25 -19
- package/dist/cli/service-auth/commands.d.ts +11 -0
- package/dist/cli-node/index.js +25 -19
- package/dist/features/background-agent/task-poller.d.ts +3 -0
- package/dist/features/team-mode/tools/lifecycle-inline-spec.d.ts +1 -0
- package/dist/hooks/keyword-detector/constants.d.ts +1 -0
- package/dist/index.js +172 -60
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/ulw-execute/SKILL.md +2 -2
- package/dist/tools/delegate-task/executor-types.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-creator.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +2 -0
- package/dist/tools/session-manager/session-error.d.ts +7 -0
- package/dist/tui.js +18 -16
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +4 -2
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +3 -3
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +18 -15
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +18 -15
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
- package/packages/omo-codex/plugin/skills/teammode/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +18 -15
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +6 -4
- package/packages/prompts-core/prompts/ultrawork/codex.md +18 -15
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +2 -2
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.32",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
9
|
-
"version": "5.1.
|
|
9
|
+
"version": "5.1.32",
|
|
10
10
|
"workspaces": [
|
|
11
11
|
"components/comment-checker",
|
|
12
12
|
"components/git-bash",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"components/comment-checker": {
|
|
97
97
|
"name": "@code-yeongyu/codex-comment-checker",
|
|
98
|
-
"version": "5.1.
|
|
98
|
+
"version": "5.1.32",
|
|
99
99
|
"license": "MIT",
|
|
100
100
|
"bin": {
|
|
101
101
|
"omo-comment-checker": "dist/cli.js"
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
},
|
|
118
118
|
"components/git-bash": {
|
|
119
119
|
"name": "@sisyphuslabs/codex-git-bash-hook",
|
|
120
|
-
"version": "5.1.
|
|
120
|
+
"version": "5.1.32",
|
|
121
121
|
"bin": {
|
|
122
122
|
"omo-git-bash-hook": "dist/cli.js"
|
|
123
123
|
},
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
},
|
|
132
132
|
"components/lazycodex-executor-verify": {
|
|
133
133
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
134
|
-
"version": "5.1.
|
|
134
|
+
"version": "5.1.32",
|
|
135
135
|
"license": "MIT",
|
|
136
136
|
"bin": {
|
|
137
137
|
"lazycodex-executor-verify": "dist/cli.js"
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
},
|
|
150
150
|
"components/lsp": {
|
|
151
151
|
"name": "@code-yeongyu/codex-lsp",
|
|
152
|
-
"version": "5.1.
|
|
152
|
+
"version": "5.1.32",
|
|
153
153
|
"license": "MIT",
|
|
154
154
|
"dependencies": {
|
|
155
155
|
"@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
},
|
|
172
172
|
"components/rules": {
|
|
173
173
|
"name": "@code-yeongyu/codex-rules",
|
|
174
|
-
"version": "5.1.
|
|
174
|
+
"version": "5.1.32",
|
|
175
175
|
"license": "MIT",
|
|
176
176
|
"dependencies": {
|
|
177
177
|
"picomatch": "^4.0.7"
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
},
|
|
195
195
|
"components/teammode": {
|
|
196
196
|
"name": "@sisyphuslabs/codex-teammode",
|
|
197
|
-
"version": "5.1.
|
|
197
|
+
"version": "5.1.32",
|
|
198
198
|
"devDependencies": {
|
|
199
199
|
"@types/node": "^26.6.2",
|
|
200
200
|
"@vitest/coverage-v8": "5.0.1",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
},
|
|
209
209
|
"components/telemetry": {
|
|
210
210
|
"name": "@code-yeongyu/codex-telemetry",
|
|
211
|
-
"version": "5.1.
|
|
211
|
+
"version": "5.1.32",
|
|
212
212
|
"license": "MIT",
|
|
213
213
|
"bin": {
|
|
214
214
|
"omo-telemetry": "dist/cli.js"
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
},
|
|
228
228
|
"components/ultrawork": {
|
|
229
229
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
230
|
-
"version": "5.1.
|
|
230
|
+
"version": "5.1.32",
|
|
231
231
|
"license": "MIT",
|
|
232
232
|
"bin": {
|
|
233
233
|
"omo-ultrawork": "dist/cli.js"
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
},
|
|
247
247
|
"components/ulw-execute-continuation": {
|
|
248
248
|
"name": "@code-yeongyu/codex-ulw-execute-continuation",
|
|
249
|
-
"version": "5.1.
|
|
249
|
+
"version": "5.1.32",
|
|
250
250
|
"license": "MIT",
|
|
251
251
|
"bin": {
|
|
252
252
|
"omo-ulw-execute-continuation": "dist/cli.js"
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
},
|
|
265
265
|
"components/ulw-loop": {
|
|
266
266
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
267
|
-
"version": "5.1.
|
|
267
|
+
"version": "5.1.32",
|
|
268
268
|
"license": "MIT",
|
|
269
269
|
"bin": {
|
|
270
270
|
"omo-ulw-loop": "dist/cli.js",
|
|
@@ -178,7 +178,7 @@ export const ulwExecuteOriginalCompletion = [
|
|
|
178
178
|
"When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are complete:",
|
|
179
179
|
"",
|
|
180
180
|
"1. Run the plan's final verification commands.",
|
|
181
|
-
"2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.",
|
|
181
|
+
"2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.",
|
|
182
182
|
"3. Remove or mark the Boulder work as completed.",
|
|
183
183
|
"4. Print an `ORCHESTRATION COMPLETE` block with the plan path, verification commands, artifacts, and cleanup receipts.",
|
|
184
184
|
].join("\n");
|
|
@@ -198,7 +198,7 @@ const ulwExecuteCodexCompletion = [
|
|
|
198
198
|
"1. Run the plan's final verification commands.",
|
|
199
199
|
"2. Record a self-review in the notepad: re-read the diff, run diagnostics, and capture evidence for every acceptance criterion. Run your own manual QA on the real surface.",
|
|
200
200
|
"3. Only when the user demanded strict, rigorous, or high-accuracy review, spawn ONE `lazycodex-gate-reviewer`; otherwise your self-review is the final verification.",
|
|
201
|
-
"4. Finish the PR/branch lifecycle from its task-owned worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.",
|
|
201
|
+
"4. Finish the PR/branch lifecycle from its task-owned worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.",
|
|
202
202
|
"5. Remove or mark the Boulder work as completed.",
|
|
203
203
|
"6. Print an `ORCHESTRATION COMPLETE` block with the plan path, verification commands, artifacts, and cleanup receipts.",
|
|
204
204
|
].join("\n");
|
|
@@ -37,11 +37,12 @@ For `code-yeongyu/lazycodex`, create an issue (never a PR) that includes:
|
|
|
37
37
|
|
|
38
38
|
## Required Workflow
|
|
39
39
|
|
|
40
|
-
1. Read the user's bug report and identify the affected surface.
|
|
40
|
+
1. Read the user's bug report and identify the affected surface. Before commands, apply the bundled ultrawork directive’s Task resources and todo rules; read those sections if absent from context.
|
|
41
41
|
2. Invoke `$omo:debugging` for the investigation. If only unqualified skill names are exposed, invoke `$debugging` and state that it is the OMO debugging skill.
|
|
42
42
|
3. Materialize the latest sources under `LAZYCODEX_SOURCE_ROOT="${LAZYCODEX_SOURCE_ROOT:-${TMPDIR:-/tmp}/lazycodex-sources}"`, then decide the target repository. Sync both checkouts on every run and compare them before choosing. Validate cached checkouts before reuse so an incomplete `.git` directory cannot route the fix to the wrong repo:
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
+
# The default checkout cache is per-task under TMPDIR=$RUN_TMP.
|
|
45
46
|
LAZYCODEX_SOURCE_ROOT="${LAZYCODEX_SOURCE_ROOT:-${TMPDIR:-/tmp}/lazycodex-sources}"
|
|
46
47
|
mkdir -p "$LAZYCODEX_SOURCE_ROOT"
|
|
47
48
|
|
|
@@ -86,11 +87,11 @@ sync_latest_source() {
|
|
|
86
87
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
87
88
|
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
88
89
|
```
|
|
89
|
-
4. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits.
|
|
90
|
+
4. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits. Apply those resource rules at clone/worktree creation.
|
|
90
91
|
|
|
91
92
|
```bash
|
|
92
93
|
TARGET_REPO="code-yeongyu/lazycodex" # or openai/codex
|
|
93
|
-
WORK_ROOT="$
|
|
94
|
+
WORK_ROOT="${RUN_TMP:?apply ultrawork Task resources first}"
|
|
94
95
|
gh repo clone "$TARGET_REPO" "$WORK_ROOT/repo" -- --depth=1
|
|
95
96
|
cd "$WORK_ROOT/repo"
|
|
96
97
|
BASE_BRANCH="$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')"
|
|
@@ -152,13 +153,15 @@ git push -u fork "$BRANCH_NAME"
|
|
|
152
153
|
gh pr create --repo openai/codex --base "$BASE_BRANCH" --head "$GH_USER:$BRANCH_NAME" --title "<short fix title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
153
154
|
```
|
|
154
155
|
|
|
155
|
-
13.
|
|
156
|
+
13. Finish cleanup per Task resources. Run this only when that rule permits removing the worktree and run root; otherwise retain them and report the outstanding cleanup todo:
|
|
156
157
|
|
|
157
158
|
```bash
|
|
158
159
|
cd /
|
|
159
160
|
git -C "$WORK_ROOT/repo" worktree remove "$WORK_ROOT/worktree"
|
|
161
|
+
unset TMPDIR NODE_COMPILE_CACHE BUN_RUNTIME_TRANSPILER_CACHE_PATH
|
|
160
162
|
find "$WORK_ROOT" -mindepth 1 -maxdepth 1 -exec rm -r -- {} +
|
|
161
163
|
rmdir "$WORK_ROOT"
|
|
164
|
+
test ! -e "$WORK_ROOT" && printf 'cleanup: worktree and caches REMOVED\n'
|
|
162
165
|
```
|
|
163
166
|
|
|
164
167
|
Return the PR or issue URL, the reproduction command, the verification command, and the cleanup receipt.
|
|
@@ -229,9 +229,9 @@ cannot clobber each other. Decide this whenever you see the collision - at team
|
|
|
229
229
|
not only up front. For each colliding member run `worktree-add --team <id> --id <member>`: it creates
|
|
230
230
|
the worktree off the base branch on a derived branch, flips the team into worktree mode, records it in
|
|
231
231
|
`team.json`, and prints the `cd` path to hand that member. The member works and commits only inside
|
|
232
|
-
its own worktree. To land the work, `integrate --team <id>` merges every member branch into your
|
|
232
|
+
its own worktree. Use the bundled ultrawork directive’s Task resources and todo rules at member/worktree creation; read those sections if absent from context. To land the work, `integrate --team <id>` merges every member branch into your
|
|
233
233
|
current branch with a merge commit (never a squash or rebase); resolve any conflict it reports, then
|
|
234
|
-
|
|
234
|
+
finish owned directory teardown per Task resources.
|
|
235
235
|
|
|
236
236
|
Delivering the path differs by transport: on MultiAgentV2, create the worktree BEFORE spawning
|
|
237
237
|
so the bootstrap carries it, or send it to an already-running member as a `followup_task`; on
|
|
@@ -280,7 +280,7 @@ is never disbanded is a leak.
|
|
|
280
280
|
- `delete` removes `.omo/teams/{session_id}` and refuses while the team is unarchived or any member
|
|
281
281
|
is still active unless `--force`.
|
|
282
282
|
- When the work wraps up, land it the way the user asked: `integrate --team <id>` for a direct merge
|
|
283
|
-
commit, or push each member branch and open a PR. Then
|
|
283
|
+
commit, or push each member branch and open a PR. Then finish worktree cleanup per Task resources, archive, and
|
|
284
284
|
delete. Cleanup is real work; respect the user's instruction on how to land it.
|
|
285
285
|
|
|
286
286
|
## Stop rules
|
|
@@ -112,7 +112,11 @@ degrades color and wide-glyph width. In this repo:
|
|
|
112
112
|
stream). Outside this repo, capture equivalent browser-rendered terminal
|
|
113
113
|
evidence: screenshot + plain transcript + cleanup receipt.
|
|
114
114
|
|
|
115
|
-
# Bootstrap (
|
|
115
|
+
# Bootstrap (COMPLETE EVERY SECTION BEFORE ANY OTHER WORK — NO SKIPPING)
|
|
116
|
+
|
|
117
|
+
## Task resources
|
|
118
|
+
Before the first task command, create one `RUN_TMP=$(mktemp -d)` per task, tracking its paths under section 3 immediately. Export `TMPDIR="$RUN_TMP" NODE_COMPILE_CACHE="$RUN_TMP/node-compile-cache" BUN_RUNTIME_TRANSPILER_CACHE_PATH="$RUN_TMP/bun-transpiler"` for every command; pass the same environment explicitly to children that do not inherit it. Give independent child tasks their own run roots.
|
|
119
|
+
At task end, after owned processes exit, remove only owned directories, including runtime caches. Never wipe shared caches; retain worktrees still needed by open PRs and any parent directory containing them.
|
|
116
120
|
|
|
117
121
|
## 0. Survey the skills, gather context, then size the work
|
|
118
122
|
First, survey the loaded skill list and read the description of each
|
|
@@ -206,7 +210,7 @@ steps.
|
|
|
206
210
|
|
|
207
211
|
## 3. Register obsessive todos via `update_plan`
|
|
208
212
|
The todo tool is Codex `update_plan` — your live, user-visible
|
|
209
|
-
checklist. Translate every action from the plan into one `update_plan`
|
|
213
|
+
checklist. Keep resource-cleanup todos registered earlier. Translate every action from the plan into one `update_plan`
|
|
210
214
|
step — one step per atomic work unit: an edit plus its verification, a
|
|
211
215
|
QA scenario run, a teardown. Keep each step small enough to finish
|
|
212
216
|
within a few tool calls.
|
|
@@ -218,6 +222,9 @@ behind reality. Add newly discovered steps the moment they surface
|
|
|
218
222
|
instead of waiting for the next pass. Step text encodes WHERE / WHY
|
|
219
223
|
(which criterion it advances) / HOW / VERIFY:
|
|
220
224
|
`path: <action> for <criterion> — verify by <check>`.
|
|
225
|
+
ALWAYS add a cleanup todo AT CREATION for each worktree, cache directory (including
|
|
226
|
+
the run root), and QA resource (PID, tmux session, browser context, port, container,
|
|
227
|
+
script or temp path); complete it only after a read-back teardown receipt.
|
|
221
228
|
|
|
222
229
|
GOOD pair (ordered):
|
|
223
230
|
`test/foo.test.ts: read the validateEmail cases for criterion 2 — verify by noting intent / coverage / pass in the notepad`
|
|
@@ -280,19 +287,15 @@ Until every success criterion PASSES with its evidence captured:
|
|
|
280
287
|
above; auxiliary surface for CLI- or data-shaped criteria), end to
|
|
281
288
|
end, yourself, plus the step-2 tests; a reproduction now passes.
|
|
282
289
|
Paste the artifact path into the notepad.
|
|
283
|
-
5. CLEANUP (PAIRED — NEVER SKIP):
|
|
284
|
-
|
|
285
|
-
`
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
sockets / files / dirs (`rm -rf` the `mktemp` paths), QA-only env
|
|
293
|
-
vars. Append a one-line cleanup receipt to the notepad next to the
|
|
294
|
-
artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
|
|
295
|
-
rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
|
|
290
|
+
5. CLEANUP (PAIRED — NEVER SKIP):
|
|
291
|
+
Before recording QA, tear down owned server PIDs (`kill <pid>`; verify
|
|
292
|
+
`kill -0` fails), tmux sessions (`tmux kill-session -t ulw-qa-<criterion>`; confirm `tmux ls`),
|
|
293
|
+
browsers / sessions (`browser.close()` / `session.stop()`), containers (`docker rm -f`), ports
|
|
294
|
+
(`lsof -i :<port>` empty), QA scripts, temp paths and QA-only env vars.
|
|
295
|
+
Remove QA temp paths inside `$RUN_TMP` per criterion; remove the run root
|
|
296
|
+
and eligible worktrees at task end under Task resources.
|
|
297
|
+
Append the read-back receipt beside the artifact in the notepad.
|
|
298
|
+
No receipt → criterion stays in_progress.
|
|
296
299
|
6. Verify: LSP diagnostics clean on changed files; no test skipped or
|
|
297
300
|
xfail-ed this turn.
|
|
298
301
|
7. Mark completed. Append non-obvious findings / learnings.
|
|
@@ -105,7 +105,7 @@ Write `.omo/boulder.json` before implementation starts. Prefix session ids with
|
|
|
105
105
|
}
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
Every phase (plan wave) runs in its own task-owned worktree with its own goal: before the wave's first dispatch, record the wave's goal — its checkboxes and their acceptance criteria — as a ledger entry, then `git worktree add <repo>-wt/<plan>-<wave> <branch off the integration base>` (or verify a `--worktree` path with `git worktree list --porcelain`), store the absolute path as `worktree_path`, run every edit, command, test, and evidence capture inside it; the wave lands on the integration base once its checkboxes are verified (direct merge, or the PR under `--make-pr`/`--ship`), and the next wave branches from that landed base.
|
|
108
|
+
Every phase (plan wave) runs in its own task-owned worktree with its own goal: before the wave's first dispatch, record the wave's goal — its checkboxes and their acceptance criteria — as a ledger entry, then `git worktree add <repo>-wt/<plan>-<wave> <branch off the integration base>` (or verify a `--worktree` path with `git worktree list --porcelain`), store the absolute path as `worktree_path`, run every edit, command, test, and evidence capture inside it; the wave lands on the integration base once its checkboxes are verified (direct merge, or the PR under `--make-pr`/`--ship`), and the next wave branches from that landed base. Use the bundled ultrawork directive’s Task resources and todo rules at wave/worktree creation; read those sections if absent from context.
|
|
109
109
|
|
|
110
110
|
## Parallel delivery lanes (teams and worktrees)
|
|
111
111
|
|
|
@@ -238,7 +238,7 @@ When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are
|
|
|
238
238
|
1. Run the plan's final verification commands.
|
|
239
239
|
2. Record a self-review in the notepad: re-read the diff, run diagnostics, and capture evidence for every acceptance criterion. Run your own manual QA on the real surface.
|
|
240
240
|
3. Only when the user demanded strict, rigorous, or high-accuracy review, spawn ONE `lazycodex-gate-reviewer`; otherwise your self-review is the final verification.
|
|
241
|
-
4. Finish the PR/branch lifecycle from its task-owned worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
|
|
241
|
+
4. Finish the PR/branch lifecycle from its task-owned worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.
|
|
242
242
|
5. Remove or mark the Boulder work as completed.
|
|
243
243
|
6. Print an `ORCHESTRATION COMPLETE` block with the plan path, verification commands, artifacts, and cleanup receipts.
|
|
244
244
|
|
|
@@ -45,7 +45,7 @@ This skill is intentionally compact. The full workflow lives in `references/full
|
|
|
45
45
|
## Non-Negotiables
|
|
46
46
|
|
|
47
47
|
- Use the ulw-loop CLI state under `.omo/ulw-loop`; do not hand-edit goal state.
|
|
48
|
-
- Register goals up front, shaped by `references/define-goal.md` (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff), and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen.
|
|
48
|
+
- Register goals up front, shaped by `references/define-goal.md` (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff), and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen. Use the ultrawork directive’s Task resources and todo rules; read those sections of the bundled `ultrawork` skill if absent from context.
|
|
49
49
|
- After any compaction or context loss, re-read brief + goals + ledger FIRST plus `omo-agent-toolkit ulw-loop status --json`, then resume; never re-plan from scratch.
|
|
50
50
|
- Every ulw-loop command needs the session scope: pass `--session-id <id>` (the printed handoff and resume directive carry it; `CODEX_THREAD_ID` in the environment also resolves it). The CLI refuses unscoped state (`ULW_LOOP_SESSION_SCOPE_REQUIRED`) instead of touching the shared `.omo/ulw-loop` root.
|
|
51
51
|
- If `omo-agent-toolkit ulw-loop create-goals` says this session's aggregate is already complete, start unrelated new work with a fresh `--session-id <new-id>` (passed on every later call) instead of steering or forcing the completed state. Use `--force` only to intentionally overwrite completed evidence.
|
|
@@ -73,7 +73,7 @@ When the units are genuinely independent — separate files, no shared contract
|
|
|
73
73
|
|
|
74
74
|
Under team mode, isolate and land per unit:
|
|
75
75
|
|
|
76
|
-
- **One git worktree per member**, never a shared checkout — concurrent members editing one working tree corrupt each other's diffs and evidence. Give each member its own branch off the base and its own worktree path.
|
|
76
|
+
- **One git worktree per member**, never a shared checkout — concurrent members editing one working tree corrupt each other's diffs and evidence. Give each member its own branch off the base and its own worktree path. Apply the same resource rules when creating member worktrees.
|
|
77
77
|
- **Merge per work unit, as each unit is verified.** A member's unit lands when its own evidence is captured and its gates are green; it does not wait for the slowest sibling. Integrate each merged unit back into the base the others branch from, so overlapping members rebase onto real merged work rather than guessing at it.
|
|
78
78
|
- **Conflicts are the lead's job.** When two members' units touch the same lines, the lead decides the order they land and tells the later member what changed; members never resolve a sibling's conflict blind.
|
|
79
79
|
|
|
@@ -70,7 +70,7 @@ Codex subagent reliability:
|
|
|
70
70
|
- Never invent state outside `.omo/ulw-loop` artifacts or `omo-agent-toolkit ulw-loop status --json`.
|
|
71
71
|
|
|
72
72
|
## Bootstrap
|
|
73
|
-
Do all three steps before execution
|
|
73
|
+
Do all three steps before execution; no edits, goal tools or checkpointing until bootstrap completes. Follow the parent skill’s resource-rule pointer before execution.
|
|
74
74
|
|
|
75
75
|
### 1. Create goals from the brief
|
|
76
76
|
Resolve the CLI before the first command. If `omo` is absent from PATH or lacks `ulw-loop`, use the stable local installer bin or cached Codex component CLI — same CLI, so PATH absence is not a blocker. If PATH is empty, the fallback uses shell builtins and absolute Node locations before reporting guidance, recording the failure in `.omo/ulw-loop/bootstrap-notepad.md`.
|
|
@@ -165,7 +165,7 @@ Loop per goal. Cap at 5 cycles per goal. Cap identical same-criterion failures a
|
|
|
165
165
|
4. INTEGRATE + CRITICAL SELF-QA + GIT CHECKPOINT (EVERY WORKER RETURN): do NOT trust the worker's report. Read the diff yourself, re-run its tests, and run LSP diagnostics on the changed files. Treat "done" as a claim to disprove. If the diff drifts, the test is hollow, or evidence is missing, RESPAWN the worker with the specific failure context. Once the work unit is verified, use `git-master` before staging: inspect recent repository commits and touched-path history to infer commit language, Conventional Commit scope, message shape, and unit size. Stage only that unit's files and commit in the observed style; do not carry verified work forward into a later omnibus commit. If no git-tracked files changed or committing is unsafe, record the no-commit reason as evidence. Forward every finding/learning to subsequent workers.
|
|
166
166
|
5. EXECUTE-AS-SCENARIO: ACTUALLY run the Manual-QA scenario the criterion named (channel table above). Run it yourself for the orchestrator check; for heavier flows dispatch a dedicated QA execution worker (`lazycodex-worker-medium` by default; `lazycodex-worker-high` when the QA flow itself is hard) whose ONLY job is to drive the channel and write the artifact to the named evidence path. If the scenario FAILS, respawn the implementing worker with the captured failure — do not hand-patch around it.
|
|
167
167
|
6. CAPTURE: collect the observable artifact path: transcript, stdout, screenshot, assertion, status+body, diff, or parsed dump. No artifact written at the evidence path — not done; record BLOCKED and respawn QA.
|
|
168
|
-
7. CLEAN (PAIRED, NEVER SKIP):
|
|
168
|
+
7. CLEAN (PAIRED, NEVER SKIP): execute the teardown todos before recording QA: owned PIDs (`kill`; verify `kill -0` fails), tmux sessions (`tmux kill-session -t ulw-qa-<criterion>`; confirm `tmux ls`), browser contexts (`.close()`), containers (`docker rm -f`), ports (`lsof -i :<port>` empty), QA scripts, temp paths and QA-only env vars. Close finished v1 workers with `close_agent`; V2 workers end normally, so `interrupt_agent` any still running. Apply the ultrawork Task resources rule at task end, not after each criterion. Embed read-back receipts in the evidence and complete the cleanup todos. Missing receipt → record BLOCKED, not PASS.
|
|
169
169
|
8. RECORD one result immediately from the artifact you just wrote — never from memory or a later turn — stamping the capture tree `$(git rev-parse --short "HEAD^{tree}")` into the evidence:
|
|
170
170
|
- PASS: `omo-agent-toolkit ulw-loop record-evidence --goal-id <id> --criterion-id <id> --status pass --evidence "<observable> @tree:<short-tree> | <cleanup receipt>" --json`
|
|
171
171
|
- FAIL: `omo-agent-toolkit ulw-loop record-evidence --goal-id <id> --criterion-id <id> --status fail --evidence "<observable> @tree:<short-tree> | <cleanup receipt>" --notes "<diagnosis>" --json`
|
|
@@ -85,7 +85,7 @@ export function removeCodexCompatibilityGuidance(content) {
|
|
|
85
85
|
const ulwExecuteOriginalCompletion = `When all top-level checkboxes in \`## TODOs\` and \`## Final Verification Wave\` are complete:
|
|
86
86
|
|
|
87
87
|
1. Run the plan's final verification commands.
|
|
88
|
-
2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync \`.omo/\` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
|
|
88
|
+
2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync \`.omo/\` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.
|
|
89
89
|
3. Remove or mark the Boulder work as completed.
|
|
90
90
|
4. Print an \`ORCHESTRATION COMPLETE\` block with the plan path, verification commands, artifacts, and cleanup receipts.`;
|
|
91
91
|
|
|
@@ -94,7 +94,7 @@ const ulwExecuteCodexCompletion = `When all top-level checkboxes in \`## TODOs\`
|
|
|
94
94
|
1. Run the plan's final verification commands.
|
|
95
95
|
2. Record a self-review in the notepad: re-read the diff, run diagnostics, and capture evidence for every acceptance criterion. Run your own manual QA on the real surface.
|
|
96
96
|
3. Only when the user demanded strict, rigorous, or high-accuracy review, spawn ONE \`lazycodex-gate-reviewer\`; otherwise your self-review is the final verification.
|
|
97
|
-
4. Finish the PR/branch lifecycle from its task-owned worktree: sync \`.omo/\` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
|
|
97
|
+
4. Finish the PR/branch lifecycle from its task-owned worktree: sync \`.omo/\` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.
|
|
98
98
|
5. Remove or mark the Boulder work as completed.
|
|
99
99
|
6. Print an \`ORCHESTRATION COMPLETE\` block with the plan path, verification commands, artifacts, and cleanup receipts.`;
|
|
100
100
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// omo-codex-install:
|
|
2
|
+
// omo-codex-install:643bf27c152edbd2cb2348ec12962f6fa9c214781d3435eac8f5f2bba2e2a8e5:d4eeade8402959d812046ab47a22010046503bc95f9fa850a38fd68254b0b542
|
|
3
3
|
var __esm = (fn, res, err) => () => {
|
|
4
4
|
if (fn)
|
|
5
5
|
try {
|
|
@@ -9984,7 +9984,7 @@ var package_default;
|
|
|
9984
9984
|
var init_package = __esm(() => {
|
|
9985
9985
|
package_default = {
|
|
9986
9986
|
name: "@oh-my-opencode/omo-codex",
|
|
9987
|
-
version: "5.1.
|
|
9987
|
+
version: "5.1.32",
|
|
9988
9988
|
type: "module",
|
|
9989
9989
|
private: true,
|
|
9990
9990
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -19469,7 +19469,8 @@ var OmoMemoryNudgeSchema = object({
|
|
|
19469
19469
|
}).strict();
|
|
19470
19470
|
var OmoMemoryFactsSchema = object({
|
|
19471
19471
|
enabled: boolean2().default(true),
|
|
19472
|
-
debounce_settles: number2().int().min(1).default(4)
|
|
19472
|
+
debounce_settles: number2().int().min(1).default(4),
|
|
19473
|
+
model: string2().min(1).optional()
|
|
19473
19474
|
}).strict();
|
|
19474
19475
|
var OmoMemoryDreamSchema = object({
|
|
19475
19476
|
enabled: boolean2().default(true),
|
|
@@ -19531,7 +19532,8 @@ var OmoMemoryNudgeLayerSchema = object({
|
|
|
19531
19532
|
}).strict();
|
|
19532
19533
|
var OmoMemoryFactsLayerSchema = object({
|
|
19533
19534
|
enabled: boolean2().optional(),
|
|
19534
|
-
debounce_settles: number2().int().min(1).optional()
|
|
19535
|
+
debounce_settles: number2().int().min(1).optional(),
|
|
19536
|
+
model: string2().min(1).optional()
|
|
19535
19537
|
}).strict();
|
|
19536
19538
|
var OmoMemoryDreamLayerSchema = object({
|
|
19537
19539
|
enabled: boolean2().optional(),
|
|
@@ -105,7 +105,11 @@ degrades color and wide-glyph width. In this repo:
|
|
|
105
105
|
stream). Outside this repo, capture equivalent browser-rendered terminal
|
|
106
106
|
evidence: screenshot + plain transcript + cleanup receipt.
|
|
107
107
|
|
|
108
|
-
# Bootstrap (
|
|
108
|
+
# Bootstrap (COMPLETE EVERY SECTION BEFORE ANY OTHER WORK — NO SKIPPING)
|
|
109
|
+
|
|
110
|
+
## Task resources
|
|
111
|
+
Before the first task command, create one `RUN_TMP=$(mktemp -d)` per task, tracking its paths under section 3 immediately. Export `TMPDIR="$RUN_TMP" NODE_COMPILE_CACHE="$RUN_TMP/node-compile-cache" BUN_RUNTIME_TRANSPILER_CACHE_PATH="$RUN_TMP/bun-transpiler"` for every command; pass the same environment explicitly to children that do not inherit it. Give independent child tasks their own run roots.
|
|
112
|
+
At task end, after owned processes exit, remove only owned directories, including runtime caches. Never wipe shared caches; retain worktrees still needed by open PRs and any parent directory containing them.
|
|
109
113
|
|
|
110
114
|
## 0. Survey the skills, gather context, then size the work
|
|
111
115
|
First, survey the loaded skill list and read the description of each
|
|
@@ -199,7 +203,7 @@ steps.
|
|
|
199
203
|
|
|
200
204
|
## 3. Register obsessive todos via `update_plan`
|
|
201
205
|
The todo tool is Codex `update_plan` — your live, user-visible
|
|
202
|
-
checklist. Translate every action from the plan into one `update_plan`
|
|
206
|
+
checklist. Keep resource-cleanup todos registered earlier. Translate every action from the plan into one `update_plan`
|
|
203
207
|
step — one step per atomic work unit: an edit plus its verification, a
|
|
204
208
|
QA scenario run, a teardown. Keep each step small enough to finish
|
|
205
209
|
within a few tool calls.
|
|
@@ -211,6 +215,9 @@ behind reality. Add newly discovered steps the moment they surface
|
|
|
211
215
|
instead of waiting for the next pass. Step text encodes WHERE / WHY
|
|
212
216
|
(which criterion it advances) / HOW / VERIFY:
|
|
213
217
|
`path: <action> for <criterion> — verify by <check>`.
|
|
218
|
+
ALWAYS add a cleanup todo AT CREATION for each worktree, cache directory (including
|
|
219
|
+
the run root), and QA resource (PID, tmux session, browser context, port, container,
|
|
220
|
+
script or temp path); complete it only after a read-back teardown receipt.
|
|
214
221
|
|
|
215
222
|
GOOD pair (ordered):
|
|
216
223
|
`test/foo.test.ts: read the validateEmail cases for criterion 2 — verify by noting intent / coverage / pass in the notepad`
|
|
@@ -273,19 +280,15 @@ Until every success criterion PASSES with its evidence captured:
|
|
|
273
280
|
above; auxiliary surface for CLI- or data-shaped criteria), end to
|
|
274
281
|
end, yourself, plus the step-2 tests; a reproduction now passes.
|
|
275
282
|
Paste the artifact path into the notepad.
|
|
276
|
-
5. CLEANUP (PAIRED — NEVER SKIP):
|
|
277
|
-
|
|
278
|
-
`
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
sockets / files / dirs (`rm -rf` the `mktemp` paths), QA-only env
|
|
286
|
-
vars. Append a one-line cleanup receipt to the notepad next to the
|
|
287
|
-
artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
|
|
288
|
-
rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
|
|
283
|
+
5. CLEANUP (PAIRED — NEVER SKIP):
|
|
284
|
+
Before recording QA, tear down owned server PIDs (`kill <pid>`; verify
|
|
285
|
+
`kill -0` fails), tmux sessions (`tmux kill-session -t ulw-qa-<criterion>`; confirm `tmux ls`),
|
|
286
|
+
browsers / sessions (`browser.close()` / `session.stop()`), containers (`docker rm -f`), ports
|
|
287
|
+
(`lsof -i :<port>` empty), QA scripts, temp paths and QA-only env vars.
|
|
288
|
+
Remove QA temp paths inside `$RUN_TMP` per criterion; remove the run root
|
|
289
|
+
and eligible worktrees at task end under Task resources.
|
|
290
|
+
Append the read-back receipt beside the artifact in the notepad.
|
|
291
|
+
No receipt → criterion stays in_progress.
|
|
289
292
|
6. Verify: LSP diagnostics clean on changed files; no test skipped or
|
|
290
293
|
xfail-ed this turn.
|
|
291
294
|
7. Mark completed. Append non-obvious findings / learnings.
|
|
@@ -96,7 +96,7 @@ Write `.omo/boulder.json` before implementation starts. Prefix session ids with
|
|
|
96
96
|
}
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
Every phase (plan wave) runs in its own task-owned worktree with its own goal: before the wave's first dispatch, record the wave's goal — its checkboxes and their acceptance criteria — as a ledger entry, then `git worktree add <repo>-wt/<plan>-<wave> <branch off the integration base>` (or verify a `--worktree` path with `git worktree list --porcelain`), store the absolute path as `worktree_path`, run every edit, command, test, and evidence capture inside it; the wave lands on the integration base once its checkboxes are verified (direct merge, or the PR under `--make-pr`/`--ship`), and the next wave branches from that landed base.
|
|
99
|
+
Every phase (plan wave) runs in its own task-owned worktree with its own goal: before the wave's first dispatch, record the wave's goal — its checkboxes and their acceptance criteria — as a ledger entry, then `git worktree add <repo>-wt/<plan>-<wave> <branch off the integration base>` (or verify a `--worktree` path with `git worktree list --porcelain`), store the absolute path as `worktree_path`, run every edit, command, test, and evidence capture inside it; the wave lands on the integration base once its checkboxes are verified (direct merge, or the PR under `--make-pr`/`--ship`), and the next wave branches from that landed base. Use the bundled ultrawork directive’s Task resources and todo rules at wave/worktree creation; read those sections if absent from context.
|
|
100
100
|
|
|
101
101
|
## Parallel delivery lanes (teams and worktrees)
|
|
102
102
|
|
|
@@ -227,7 +227,7 @@ Only after verification passes:
|
|
|
227
227
|
When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are complete:
|
|
228
228
|
|
|
229
229
|
1. Run the plan's final verification commands.
|
|
230
|
-
2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
|
|
230
|
+
2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff. Finish directory teardown per Task resources and record its receipts.
|
|
231
231
|
3. Remove or mark the Boulder work as completed.
|
|
232
232
|
4. Print an `ORCHESTRATION COMPLETE` block with the plan path, verification commands, artifacts, and cleanup receipts.
|
|
233
233
|
|