lazycodex-ai 5.1.29 → 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.
Files changed (118) hide show
  1. package/README.ja.md +2 -0
  2. package/README.ko.md +2 -0
  3. package/README.md +2 -0
  4. package/README.ru.md +2 -0
  5. package/README.zh-cn.md +2 -0
  6. package/dist/cli/cli-program.d.ts +1 -20
  7. package/dist/cli/index.js +950 -51
  8. package/dist/cli/install-command-options.d.ts +20 -0
  9. package/dist/cli/service-auth/browser.d.ts +3 -0
  10. package/dist/cli/service-auth/cli-keystore.fixture.d.ts +7 -0
  11. package/dist/cli/service-auth/commands.d.ts +19 -0
  12. package/dist/cli/service-auth/device-flow.d.ts +15 -0
  13. package/dist/cli/service-auth/device-keys.d.ts +10 -0
  14. package/dist/cli/service-auth/device-name.d.ts +3 -0
  15. package/dist/cli/service-auth/keystore.d.ts +20 -0
  16. package/dist/cli/service-auth/loopback.d.ts +11 -0
  17. package/dist/cli/service-auth/protocol.d.ts +86 -0
  18. package/dist/cli/service-auth/refresh-child.fixture.d.ts +1 -0
  19. package/dist/cli/service-auth/session.d.ts +17 -0
  20. package/dist/cli/service-auth/terminal-text.d.ts +1 -0
  21. package/dist/cli/service-auth/test-support.d.ts +43 -0
  22. package/dist/cli/service-auth/tls-test-certificate.d.ts +4 -0
  23. package/dist/cli-node/index.js +950 -51
  24. package/package.json +1 -1
  25. package/packages/git-bash-mcp/dist/cli.js +1 -1
  26. package/packages/lsp-daemon/dist/cli.js +1 -1
  27. package/packages/lsp-daemon/dist/client.js +1 -1
  28. package/packages/lsp-daemon/dist/index.js +1 -1
  29. package/packages/lsp-tools-mcp/dist/cli.js +1 -1
  30. package/packages/lsp-tools-mcp/dist/lsp/manager.js +1 -1
  31. package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
  32. package/packages/lsp-tools-mcp/dist/tools.js +1 -1
  33. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  34. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +7 -4
  35. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  40. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  42. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
  44. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  45. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +1 -1
  46. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  47. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  49. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  50. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  51. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  52. package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +3 -3
  53. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  54. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  55. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +18 -15
  56. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  57. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  58. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  59. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +18 -15
  62. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  63. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  64. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +2 -2
  65. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
  66. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  87. package/packages/omo-codex/plugin/package-lock.json +12 -12
  88. package/packages/omo-codex/plugin/package.json +1 -1
  89. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +2 -0
  90. package/packages/omo-codex/plugin/scripts/auto-update.mjs +2 -0
  91. package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +2 -0
  92. package/packages/omo-codex/plugin/scripts/build-components.mjs +1 -0
  93. package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +42 -10
  94. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
  95. package/packages/omo-codex/plugin/skills/browser/SKILL.md +1 -1
  96. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  97. package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +7 -4
  98. package/packages/omo-codex/plugin/skills/teammode/SKILL.md +3 -3
  99. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +14 -16
  100. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +18 -15
  101. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
  102. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +2 -2
  103. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
  104. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +17 -18
  105. package/packages/omo-codex/plugin/test/materialize-shared-upstreams.test.mjs +179 -0
  106. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
  107. package/packages/omo-codex/plugin/test/windows-console-hide.test.mjs +150 -0
  108. package/packages/omo-codex/scripts/install-dist/install-local.mjs +11 -6
  109. package/packages/prompts-core/prompts/ultrawork/codex.md +18 -15
  110. package/packages/shared-skills/skills/browser/SKILL.md +1 -1
  111. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  112. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +14 -16
  113. package/packages/shared-skills/skills/ulw-execute/SKILL.md +2 -2
  114. package/packages/shared-skills/skills/ulw-research/SKILL.md +17 -18
  115. package/packages/shared-skills/skills/ulw-research/scripts/cli-support.test.ts +5 -3
  116. package/packages/shared-skills/skills/ulw-research/scripts/outcome.test.ts +10 -4
  117. package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +3 -2
  118. package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +5 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -390,7 +390,7 @@ function isKnownNonGitBashLauncher(path) {
390
390
  }
391
391
  function whereCommand(command) {
392
392
  try {
393
- return execFileSync("where", [command], { encoding: "utf8" }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
393
+ return execFileSync("where", [command], { encoding: "utf8", windowsHide: true }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
394
394
  } catch (error) {
395
395
  if (error instanceof Error)
396
396
  return [];
@@ -3579,7 +3579,7 @@ class LspClient extends LspClientConnection {
3579
3579
  } catch (error) {
3580
3580
  if (this.isUnsupportedDiagnosticPullError(error)) {
3581
3581
  this.setDiagnosticPullSupported(false);
3582
- pushFallbackOnly = true;
3582
+ continue;
3583
3583
  } else if (error instanceof LspRequestTimeoutError) {
3584
3584
  pushFallbackOnly = true;
3585
3585
  } else {
@@ -3815,7 +3815,7 @@ class LspClient extends LspClientConnection {
3815
3815
  } catch (error) {
3816
3816
  if (this.isUnsupportedDiagnosticPullError(error)) {
3817
3817
  this.setDiagnosticPullSupported(false);
3818
- pushFallbackOnly = true;
3818
+ continue;
3819
3819
  } else if (error instanceof LspRequestTimeoutError) {
3820
3820
  pushFallbackOnly = true;
3821
3821
  } else {
@@ -2650,7 +2650,7 @@ class LspClient extends LspClientConnection {
2650
2650
  } catch (error) {
2651
2651
  if (this.isUnsupportedDiagnosticPullError(error)) {
2652
2652
  this.setDiagnosticPullSupported(false);
2653
- pushFallbackOnly = true;
2653
+ continue;
2654
2654
  } else if (error instanceof LspRequestTimeoutError) {
2655
2655
  pushFallbackOnly = true;
2656
2656
  } else {
@@ -2655,7 +2655,7 @@ class LspClient extends LspClientConnection {
2655
2655
  } catch (error) {
2656
2656
  if (this.isUnsupportedDiagnosticPullError(error)) {
2657
2657
  this.setDiagnosticPullSupported(false);
2658
- pushFallbackOnly = true;
2658
+ continue;
2659
2659
  } else if (error instanceof LspRequestTimeoutError) {
2660
2660
  pushFallbackOnly = true;
2661
2661
  } else {
@@ -2650,7 +2650,7 @@ class LspClient extends LspClientConnection {
2650
2650
  } catch (error) {
2651
2651
  if (this.isUnsupportedDiagnosticPullError(error)) {
2652
2652
  this.setDiagnosticPullSupported(false);
2653
- pushFallbackOnly = true;
2653
+ continue;
2654
2654
  } else if (error instanceof LspRequestTimeoutError) {
2655
2655
  pushFallbackOnly = true;
2656
2656
  } else {
@@ -3144,7 +3144,7 @@ class LspClient extends LspClientConnection {
3144
3144
  } catch (error) {
3145
3145
  if (this.isUnsupportedDiagnosticPullError(error)) {
3146
3146
  this.setDiagnosticPullSupported(false);
3147
- pushFallbackOnly = true;
3147
+ continue;
3148
3148
  } else if (error instanceof LspRequestTimeoutError) {
3149
3149
  pushFallbackOnly = true;
3150
3150
  } else {
@@ -2832,7 +2832,7 @@ class LspClient extends LspClientConnection {
2832
2832
  } catch (error) {
2833
2833
  if (this.isUnsupportedDiagnosticPullError(error)) {
2834
2834
  this.setDiagnosticPullSupported(false);
2835
- pushFallbackOnly = true;
2835
+ continue;
2836
2836
  } else if (error instanceof LspRequestTimeoutError) {
2837
2837
  pushFallbackOnly = true;
2838
2838
  } else {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -846,7 +846,8 @@ function defaultVersionProbe(binaryPath) {
846
846
  return String(execFileSync(binaryPath, ["--version"], {
847
847
  encoding: "utf8",
848
848
  stdio: ["ignore", "pipe", "ignore"],
849
- timeout: SG_VERSION_PROBE_TIMEOUT_MS
849
+ timeout: SG_VERSION_PROBE_TIMEOUT_MS,
850
+ windowsHide: true
850
851
  }));
851
852
  }
852
853
  function probePasses(binaryPath, deps) {
@@ -7157,7 +7158,8 @@ var OmoMemoryNudgeSchema = object({
7157
7158
  }).strict();
7158
7159
  var OmoMemoryFactsSchema = object({
7159
7160
  enabled: boolean2().default(true),
7160
- debounce_settles: number2().int().min(1).default(4)
7161
+ debounce_settles: number2().int().min(1).default(4),
7162
+ model: string2().min(1).optional()
7161
7163
  }).strict();
7162
7164
  var OmoMemoryDreamSchema = object({
7163
7165
  enabled: boolean2().default(true),
@@ -7219,7 +7221,8 @@ var OmoMemoryNudgeLayerSchema = object({
7219
7221
  }).strict();
7220
7222
  var OmoMemoryFactsLayerSchema = object({
7221
7223
  enabled: boolean2().optional(),
7222
- debounce_settles: number2().int().min(1).optional()
7224
+ debounce_settles: number2().int().min(1).optional(),
7225
+ model: string2().min(1).optional()
7223
7226
  }).strict();
7224
7227
  var OmoMemoryDreamLayerSchema = object({
7225
7228
  enabled: boolean2().optional(),
@@ -12164,7 +12167,7 @@ function isKnownNonGitBashLauncher(path) {
12164
12167
  }
12165
12168
  function whereCommand(command) {
12166
12169
  try {
12167
- return execFileSync2("where", [command], { encoding: "utf8" }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
12170
+ return execFileSync2("where", [command], { encoding: "utf8", windowsHide: true }).split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
12168
12171
  } catch (error) {
12169
12172
  if (error instanceof Error)
12170
12173
  return [];
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.29) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.32) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.29) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.32) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.29) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.32) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.29) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.32) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.29) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.32) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -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="$(mktemp -d "${TMPDIR:-/tmp}/lazycodex-fix-XXXXXX")"
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. Clean up:
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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.1.29",
4
- "inputDigest": "sha256:9d15a230eaff0c93de5a8ff0f469ff7fe066ca59ac92dfe7672fd8ff300fa085",
3
+ "version": "5.1.32",
4
+ "inputDigest": "sha256:b3b8e90fd4e1cf2fe7480a11a0479a266e8c3b2724b104ee47b9fb777c5927de",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "cli.js",
12
- "sha256": "f2776c0f9c2a893136e9e8e36c2e086172f10c0ab3566a730cff4443b712f956"
12
+ "sha256": "e4d7664d4b1a19eb00e68e5a0f42ceae1195188a26e59217522c1d0de3854f54"
13
13
  },
14
14
  {
15
15
  "path": "codex-hook-cli.d.ts",
@@ -3270,7 +3270,7 @@ class LspClient extends LspClientConnection {
3270
3270
  } catch (error) {
3271
3271
  if (this.isUnsupportedDiagnosticPullError(error)) {
3272
3272
  this.setDiagnosticPullSupported(false);
3273
- pushFallbackOnly = true;
3273
+ continue;
3274
3274
  } else if (error instanceof LspRequestTimeoutError) {
3275
3275
  pushFallbackOnly = true;
3276
3276
  } else {
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 60,
11
- "statusMessage": "(OmO 5.1.29) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.32) Checking LSP Diagnostics"
12
12
  }
13
13
  ]
14
14
  }
@@ -21,7 +21,7 @@
21
21
  "type": "command",
22
22
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
23
23
  "timeout": 5,
24
- "statusMessage": "(OmO 5.1.29) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.32) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.29) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.32) Loading Project Rules"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 5.1.29) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.32) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 5.1.29) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.32) Matching Project Rules"
36
36
  }
37
37
  ]
38
38
  }
@@ -45,7 +45,7 @@
45
45
  "type": "command",
46
46
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
47
47
  "timeout": 10,
48
- "statusMessage": "(OmO 5.1.29) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.32) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.29) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.32) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -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
- `worktree-remove` each worktree at cleanup.
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 `worktree-remove` each worktree, archive, and
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
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.29) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.32) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -118,7 +118,11 @@ degrades color and wide-glyph width. In this repo:
118
118
  stream). Outside this repo, capture equivalent browser-rendered terminal
119
119
  evidence: screenshot + plain transcript + cleanup receipt.
120
120
 
121
- # Bootstrap (DO ALL FOUR BEFORE ANY OTHER WORK — NO SKIPPING)
121
+ # Bootstrap (COMPLETE EVERY SECTION BEFORE ANY OTHER WORK — NO SKIPPING)
122
+
123
+ ## Task resources
124
+ 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.
125
+ 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.
122
126
 
123
127
  ## 0. Survey the skills, gather context, then size the work
124
128
  First, survey the loaded skill list and read the description of each
@@ -212,7 +216,7 @@ steps.
212
216
 
213
217
  ## 3. Register obsessive todos via \`update_plan\`
214
218
  The todo tool is Codex \`update_plan\` — your live, user-visible
215
- checklist. Translate every action from the plan into one \`update_plan\`
219
+ checklist. Keep resource-cleanup todos registered earlier. Translate every action from the plan into one \`update_plan\`
216
220
  step — one step per atomic work unit: an edit plus its verification, a
217
221
  QA scenario run, a teardown. Keep each step small enough to finish
218
222
  within a few tool calls.
@@ -224,6 +228,9 @@ behind reality. Add newly discovered steps the moment they surface
224
228
  instead of waiting for the next pass. Step text encodes WHERE / WHY
225
229
  (which criterion it advances) / HOW / VERIFY:
226
230
  \`path: <action> for <criterion> — verify by <check>\`.
231
+ ALWAYS add a cleanup todo AT CREATION for each worktree, cache directory (including
232
+ the run root), and QA resource (PID, tmux session, browser context, port, container,
233
+ script or temp path); complete it only after a read-back teardown receipt.
227
234
 
228
235
  GOOD pair (ordered):
229
236
  \`test/foo.test.ts: read the validateEmail cases for criterion 2 — verify by noting intent / coverage / pass in the notepad\`
@@ -286,19 +293,15 @@ Until every success criterion PASSES with its evidence captured:
286
293
  above; auxiliary surface for CLI- or data-shaped criteria), end to
287
294
  end, yourself, plus the step-2 tests; a reproduction now passes.
288
295
  Paste the artifact path into the notepad.
289
- 5. CLEANUP (PAIRED — NEVER SKIP): the moment a QA scenario spawns any
290
- resource, register its teardown as its own todo (e.g.
291
- \`cleanup: kill server pid for criterion 2 — verify kill -0 fails\`).
292
- Every runtime artifact the QA spawned in step 4 MUST be torn down
293
- before this step completes:
294
- server PIDs (\`kill <pid>\`; verify \`kill -0\` fails), \`tmux\` sessions
295
- (\`tmux kill-session -t ulw-qa-<criterion>\`; verify with \`tmux ls\`),
296
- browsers / sessions (\`browser.close()\` / \`session.stop()\`), containers
297
- (\`docker rm -f\`), bound ports (\`lsof -i :<port>\` empty), temp
298
- sockets / files / dirs (\`rm -rf\` the \`mktemp\` paths), QA-only env
299
- vars. Append a one-line cleanup receipt to the notepad next to the
300
- artifact, e.g. \`cleanup: killed 12345; tmux kill-session ulw-qa-foo;
301
- rm -rf /tmp/ulw.aB12cD\`. No receipt → criterion stays in_progress.
296
+ 5. CLEANUP (PAIRED — NEVER SKIP):
297
+ Before recording QA, tear down owned server PIDs (\`kill <pid>\`; verify
298
+ \`kill -0\` fails), tmux sessions (\`tmux kill-session -t ulw-qa-<criterion>\`; confirm \`tmux ls\`),
299
+ browsers / sessions (\`browser.close()\` / \`session.stop()\`), containers (\`docker rm -f\`), ports
300
+ (\`lsof -i :<port>\` empty), QA scripts, temp paths and QA-only env vars.
301
+ Remove QA temp paths inside \`$RUN_TMP\` per criterion; remove the run root
302
+ and eligible worktrees at task end under Task resources.
303
+ Append the read-back receipt beside the artifact in the notepad.
304
+ No receipt → criterion stays in_progress.
302
305
  6. Verify: LSP diagnostics clean on changed files; no test skipped or
303
306
  xfail-ed this turn.
304
307
  7. Mark completed. Append non-obvious findings / learnings.
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.29) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.1.32) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.1.29",
3
+ "version": "5.1.32",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",