@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.
- package/{plugins/async-codex-mcp/.claude-plugin → .claude-plugin}/plugin.json +1 -1
- package/{plugins/async-codex-mcp/.mcp.json → .mcp.json} +2 -3
- package/README.md +29 -1
- package/bin/claude-channels-wrapper.sh +18 -0
- package/dist/bundle/callback-cli.js +31021 -0
- package/dist/bundle/cli.js +35530 -0
- package/dist/src/callback-cli.js +1 -1
- package/dist/src/codex-client.d.ts +1 -0
- package/dist/src/codex-client.js +8 -3
- package/dist/src/config.d.ts +6 -2
- package/dist/src/config.js +6 -3
- package/dist/src/server.js +20 -3
- package/package.json +9 -4
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
|
|
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
|