@wyrd-company/async-codex-mcp 0.1.0 → 0.2.0

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "async-codex-mcp",
3
3
  "displayName": "Async Codex MCP",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description": "Expose async Codex MCP profile tools to Claude Code.",
6
6
  "author": {
7
7
  "name": "Wyrd Company"
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "async-codex-mcp": {
4
- "command": "npx",
4
+ "command": "node",
5
5
  "args": [
6
- "--yes",
7
- "@wyrd-company/async-codex-mcp"
6
+ "${CLAUDE_PLUGIN_ROOT}/dist/bundle/cli.js"
8
7
  ],
9
8
  "env": {}
10
9
  }
package/README.md CHANGED
@@ -25,6 +25,10 @@ npm install --global @wyrd-company/async-codex-mcp
25
25
 
26
26
  Pass a YAML file path as the first CLI argument, or set `ASYNC_CODEX_MCP_CONFIG`. If no config is provided, a single `codex` profile is created with `danger-full-access` sandboxing and `never` approval policy.
27
27
 
28
+ Callbacks are enabled by default. `callbacks.askTimeoutSec` (default 3600, also settable per tool under `tools.<name>.callbacks`) is passed to Codex as the callback MCP server's `tool_timeout_sec` — the ceiling on how long a blocking `async_codex_ask_user` call can wait for an answer. Without it, Codex aborts blocked asks at its default 60-second tool timeout and the session fails.
29
+
30
+ `codex.requestTimeoutSec` (default 86400) sets the MCP request timeout for this server's own `codex`/`codex-reply` calls into the Codex MCP server. The SDK default is 60 seconds, which aborts any Codex run longer than a minute with `MCP error -32001`.
31
+
28
32
  Example:
29
33
 
30
34
  ```yaml
@@ -118,7 +122,31 @@ If a session is waiting for input, answer it with:
118
122
 
119
123
  ## Claude Code plugin
120
124
 
121
- This repo includes the `async-codex-mcp` Claude Code plugin under `plugins/async-codex-mcp`. The marketplace manifest lives in the dedicated Wyrd Company plugin marketplace repository.
125
+ This package is also the `async-codex-mcp` Claude Code plugin: `.claude-plugin/plugin.json` and `.mcp.json` sit at the package root, and the MCP server runs from the self-contained bundle at `dist/bundle/cli.js`. The marketplace manifest lives in the dedicated Wyrd Company plugin marketplace repository.
126
+
127
+ ## Claude Code channels
128
+
129
+ The server declares the experimental `claude/channel` capability. When a session opts in, callback and lifecycle events are pushed directly into Claude's context as `<channel source="async-codex-mcp" session_id="..." kind="...">` events instead of requiring `session-status` polling:
130
+
131
+ - `kind="notify"`: non-blocking progress update (with a `topic` attribute when set)
132
+ - `kind="ask"`: Codex is blocked waiting for input; Claude answers with `answer-session`
133
+ - `kind="completed"` / `kind="failed"`: the session finished
134
+
135
+ Channels are a Claude Code research preview (v2.1.80+). This plugin is not on the Anthropic-curated channel allowlist, so each session must opt in with the development flag:
136
+
137
+ ```bash
138
+ claude --dangerously-load-development-channels plugin:async-codex-mcp@wyrd-company
139
+ ```
140
+
141
+ `bin/claude-channels-wrapper.sh` wraps that invocation. In the VSCode extension, point the `claudeCode.claudeProcessWrapper` setting at the script inside the installed plugin, for example:
142
+
143
+ ```json
144
+ {
145
+ "claudeCode.claudeProcessWrapper": "/home/vscode/.claude/plugins/cache/wyrd-company/async-codex-mcp/unknown/bin/claude-channels-wrapper.sh"
146
+ }
147
+ ```
148
+
149
+ From a terminal, run the script directly in place of `claude`. Without the flag the plugin still works; events are simply not injected and `session-status` polling applies.
122
150
 
123
151
  ## Publishing
124
152
 
@@ -0,0 +1,18 @@
1
+ #!/bin/sh
2
+ # Launch Claude Code with async-codex-mcp channel support enabled.
3
+ #
4
+ # Channels are a Claude Code research preview and this plugin is not on the
5
+ # Anthropic-curated allowlist, so each session must opt in with the
6
+ # development flag. This wrapper appends that flag to whatever Claude
7
+ # command it is asked to run.
8
+ #
9
+ # Usage:
10
+ # - VSCode: set the "claudeCode.claudeProcessWrapper" setting to this
11
+ # script's path. The extension invokes it with the real Claude command
12
+ # (binary and arguments) as "$@".
13
+ # - Terminal: run it directly in place of `claude`; any arguments are
14
+ # passed through (e.g. `claude-channels-wrapper.sh -p "hello"`).
15
+ case "${1:-}" in
16
+ "" | -*) set -- claude "$@" ;;
17
+ esac
18
+ exec "$@" --dangerously-load-development-channels plugin:async-codex-mcp@wyrd-company