Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,7 @@ Broker and background-job lifecycle:
| [#728](https://github.com/openai/codex-plugin-cc/pull/728) | a job whose worker died no longer reads as "running" forever; `/codex:status` reconciles the record against the live process |
| [#725](https://github.com/openai/codex-plugin-cc/pull/725) | nothing is spawned through the user's shell on Windows, where MSYS path conversion mangled switches like `taskkill /PID` and left background workers unkillable under Git Bash (this supersedes [#735](https://github.com/openai/codex-plugin-cc/pull/735)) |
| [#656](https://github.com/openai/codex-plugin-cc/pull/656) | `/codex:cancel` exits non-zero when neither the turn interrupt nor the worker kill confirmed the job stopped, instead of reporting a cancellation nothing proved |
| [#770](https://github.com/openai/codex-plugin-cc/pull/770) | `npm run build` works on Windows: npm runs scripts through cmd.exe, where `mkdir -p` made a stray `-p` directory and then failed every build after the first |

Commands and flags:

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"scripts": {
"bump-version": "node scripts/bump-version.mjs",
"check-version": "node scripts/bump-version.mjs --check",
"prebuild": "mkdir -p plugins/codex/.generated/app-server-types && codex app-server generate-ts --out plugins/codex/.generated/app-server-types",
"prebuild": "node -e \"require('node:fs').mkdirSync('plugins/codex/.generated/app-server-types',{recursive:true})\" && codex app-server generate-ts --out plugins/codex/.generated/app-server-types",
"build": "tsc -p tsconfig.app-server.json",
"test": "node --test tests/*.test.mjs"
},
Expand Down
11 changes: 6 additions & 5 deletions plugins/codex/scripts/session-lifecycle-hook.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ import { resolveWorkspaceRoot } from "./lib/workspace.mjs";
export const SESSION_ID_ENV = "CODEX_COMPANION_SESSION_ID";
const PLUGIN_DATA_ENV = "CLAUDE_PLUGIN_DATA";

// The SessionEnd hook runs under a 5-second timeout (hooks.json). The
// budgets below must sum comfortably under it: brokered turn interrupts
// (identity waits are capped per job and reserve room for the interrupt
// RPCs themselves), then a short exit grace for killed workers, then the
// shutdown exchange with its one retry.
// The SessionEnd hook runs under a 30-second timeout (hooks.json; SessionStart is the 5-second
// one). The budgets below must sum comfortably under it: brokered turn interrupts (identity waits
// are capped per job and reserve room for the interrupt RPCs themselves), then a short exit grace
// for killed workers, then the shutdown exchange with its one retry. The default interrupt budget
// is deliberately far below the hook timeout — the hook must return long before Claude Code stops
// waiting — and CODEX_TURN_INTERRUPT_BUDGET_MS raises it for a workspace with many active jobs.
const TURN_INTERRUPT_BUDGET_MS = turnInterruptBudgetMs();
const TURN_IDENTITY_WAIT_MS = 500;
const TURN_INTERRUPT_RESERVE_MS = 1000;
Expand Down
Loading