grok-bot-cli 0.4.5 → 0.6.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/CHANGELOG.md +18 -0
- package/README.md +91 -14
- package/dist/.claude-plugin/marketplace.json +1 -1
- package/dist/.claude-plugin/plugin.json +1 -1
- package/dist/.codex-plugin/plugin.json +1 -1
- package/dist/.cursor-plugin/marketplace.json +1 -1
- package/dist/.cursor-plugin/plugin.json +1 -1
- package/dist/INSTALL.md +2 -2
- package/dist/README.md +91 -14
- package/dist/agent-bundle.compile-evidence.json +1 -1
- package/dist/agent-bundle.manifest.json +1 -1
- package/dist/bin/gbot-flight.mjs +2641 -370
- package/dist/bin/gbot.mjs +3019 -354
- package/dist/install.mjs +1 -1
- package/dist/mcp/mcp-grok-bot-b8c2461e-flight.mjs +6811 -2399
- package/dist/mcp/mcp-grok-bot-b8c2461e.mjs +4300 -97
- package/dist/package.json +1 -1
- package/dist/plugin.json +1 -1
- package/dist/scripts/gbot-relay.mjs +61013 -0
- package/dist/skills/talk-to-grok-bot/SKILL.md +70 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# grok-bot-cli
|
|
2
2
|
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0f86d73: Add Codex conversation tools to generated plugins and MCP: bounded thread discovery, guarded sends, completion waits, and event watching. Add CLI wait/watch and send --wait while preserving immediate send receipts.
|
|
8
|
+
- ae51078: Add managed Grok/Codex conversation delivery with native Codex reply routing, explicit durable links, scoped operator responses, background worker lifecycle controls, and packaged foreground service entry. Preserve manual sends when native identity is unavailable and distinguish accepted submissions from execution and return delivery.
|
|
9
|
+
|
|
10
|
+
## 0.5.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- aeb5ebf: Use `gbot thread`, `GROK_BOT_GATEWAY_URL` with `GROK_BOT_GATEWAY_TOKEN`,
|
|
15
|
+
`CURSOR_ACCESS_TOKEN`, `CURSOR_API_BASE_URL`, `GROK_BOT_AGENTS_DIR`, and `entries`
|
|
16
|
+
transcript containers; remove the `chat` alias, the `GROK_BOT_ACCESS_TOKEN` and
|
|
17
|
+
`SAND_ACCESS_TOKEN`, `SAND_BACKEND_URL`, `SAND_HOST_GATEWAY_*`, `SAND_GATEWAY_TOKEN`,
|
|
18
|
+
`SAND_HOST_PORT`, `SAND_AGENTS_DIR`, and `SAND_DATA_ROOT` compatibility variables,
|
|
19
|
+
implicit localhost gateway routing, and fallback transcript and entry-id shapes (#69).
|
|
20
|
+
|
|
3
21
|
## 0.4.5
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -43,11 +43,83 @@ snapshot with `gapReset: true`. The gateway request remains limit-only.
|
|
|
43
43
|
|
|
44
44
|
Run `gbot --help` for every command.
|
|
45
45
|
Options are command-local (for example, `gbot send --history-dir DIR ...`);
|
|
46
|
-
the
|
|
47
|
-
canonical JSON result; `send` and the `codex` commands also report failures as
|
|
46
|
+
`--json` prints the canonical JSON result; `send` and the `codex` commands also report failures as
|
|
48
47
|
a JSON document on stdout with `exitCode` (see below), every other command
|
|
49
48
|
prints the failure message on stderr and exits 1.
|
|
50
49
|
|
|
50
|
+
## Automatic Grok ↔ Codex replies
|
|
51
|
+
|
|
52
|
+
In a native Codex invocation, `gbot_send` sends once and returns a durable exchange
|
|
53
|
+
receipt. Continue working: matching Grok replies arrive in the originating Codex
|
|
54
|
+
thread automatically. That thread's next answer is not sent back to Grok unless
|
|
55
|
+
you deliberately send again. The background worker survives the MCP caller exiting. Outgoing MCP tool calls
|
|
56
|
+
still follow the host's tool-approval policy; the bridge does not change it.
|
|
57
|
+
|
|
58
|
+
When native identity is unavailable (including Cursor), supply `codexThreadId` on
|
|
59
|
+
the send, or make a one-time `gbot_bridge_start` binding with `grokTarget`,
|
|
60
|
+
`codexThreadId` and optional `expectedCwd`. New visible Grok bot messages then arrive
|
|
61
|
+
in that Codex thread, and its corresponding terminal answer returns to Grok.
|
|
62
|
+
Existing transcript history is not replayed. `codex_send` can also request a return
|
|
63
|
+
with `replyToGrok` or `bindingId`. Managed delivery defaults to guarded steering of
|
|
64
|
+
active work; `busyPolicy: "reject"` on a binding refuses busy threads. A managed
|
|
65
|
+
`codex_send` can select `whenBusy` for that one delivery; omitting it uses the
|
|
66
|
+
binding's stored policy. An override does not change subsequent linked traffic.
|
|
67
|
+
|
|
68
|
+
Without an identifiable native source or explicit route, `gbot_send` preserves the
|
|
69
|
+
ordinary send and returns `replyRoute: {mode: "manual", reason: "source-unavailable"}`;
|
|
70
|
+
read with `gbot_thread` later. `replyMode: "manual"` deliberately selects that flow.
|
|
71
|
+
An automatic-route startup failure never falls back to an untracked send.
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
# CLI sends remain manual unless routing is explicitly requested.
|
|
75
|
+
gbot send --reply-mode auto --codex-thread-id THREAD_ID Researcher "Please investigate"
|
|
76
|
+
gbot codex bridge start --codex-thread-id THREAD_ID --expected-cwd /project Researcher --json
|
|
77
|
+
gbot codex bridge status --json
|
|
78
|
+
gbot codex send --reply-to-grok Researcher THREAD_ID "Investigate and return your final answer"
|
|
79
|
+
gbot codex bridge stop --binding-id BINDING_ID --json
|
|
80
|
+
# Explicitly stop the process; pending records remain for a later restart.
|
|
81
|
+
gbot codex bridge stop --worker --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`gbot_bridge_status` separates worker health, binding coverage, submission, execution,
|
|
85
|
+
return delivery and pending operator interactions. `unknown` is not rejection: inspect
|
|
86
|
+
status before resending. Caller-supplied `requestId` (CLI `--request-id`) permits exact
|
|
87
|
+
replay of a tracked send without another submission; returned `controlRequestId` is
|
|
88
|
+
that control identity, separate from the gateway's transcript `requestId`.
|
|
89
|
+
Explicit chain `hop`/`correlationId` remain bounded. Automatic CLI routes own their
|
|
90
|
+
envelope; omit the legacy `--envelope` and `--reply-to` flags. Managed Codex return
|
|
91
|
+
routes also reject explicit `expectedTurnId`/`--expected-turn-id`; use plain Codex
|
|
92
|
+
send when a caller-selected turn guard is required. If a binding and an explicit
|
|
93
|
+
Grok target are supplied together, the target must resolve to that binding's recipient.
|
|
94
|
+
Paused gaps/capacity or unsupported interactions need attention; never guess a cursor
|
|
95
|
+
or automatically approve. `gbot_codex_respond` / `gbot codex bridge respond` requires
|
|
96
|
+
current `interactionId`, `generation`, `threadId`, `turnId` and binding/exchange scope.
|
|
97
|
+
Supply one-time `decision: accept|decline|cancel`, or `answersJson` containing exact
|
|
98
|
+
question IDs mapped to `{"answers":["answer"]}`. Session permissions and policy
|
|
99
|
+
amendments remain in the owning Codex UI.
|
|
100
|
+
|
|
101
|
+
State lives in the user-owned `~/.grok-bot-cli/relay/` directory, or
|
|
102
|
+
`GROK_BOT_RELAY_DIR`, outside plugin caches. Profile mismatches fail visibly; gateway
|
|
103
|
+
overrides and thread restrictions cannot reuse a differently authorized worker.
|
|
104
|
+
Authentication failures use bounded retries (1..30 seconds) from the saved cursor;
|
|
105
|
+
restored credentials do not reset coverage or resend uncertain submissions.
|
|
106
|
+
No login service is installed. Network reconnects are automatic; a dead process
|
|
107
|
+
needs a new tracked send or bridge start to resume saved routes. A dead worker is
|
|
108
|
+
reported as stopped, not running.
|
|
109
|
+
|
|
110
|
+
`gbot codex bridge run --lifetime-ms 60000` runs in the foreground for an explicit
|
|
111
|
+
bounded lifetime (default and maximum 23 hours), then closes cleanly before the CLI
|
|
112
|
+
renderer deadline. For an unlimited foreground service entry, run
|
|
113
|
+
`node /path/to/plugin/scripts/gbot-relay.mjs` (npm package: `dist/scripts/gbot-relay.mjs`)
|
|
114
|
+
with the same authorized environment. SIGINT/SIGTERM or explicit worker stop closes
|
|
115
|
+
observation without interrupting a Codex turn. Windows retains the Codex Unix-socket
|
|
116
|
+
limitation.
|
|
117
|
+
|
|
118
|
+
Codex, Cursor, Claude and portable artifacts contain these tools and the worker.
|
|
119
|
+
Grok Bot participates through its existing gateway conversation; a native Grok plugin
|
|
120
|
+
loader or remote stdio tunnel has not been established. Artifact availability alone
|
|
121
|
+
does not mean a host has loaded the plugin.
|
|
122
|
+
|
|
51
123
|
## Gateway URL policy
|
|
52
124
|
|
|
53
125
|
By default `gbot` only sends credentials to expected hosts:
|
|
@@ -73,7 +145,7 @@ gbot codex send <threadId> "Grok here: the build is green, please continue."
|
|
|
73
145
|
|
|
74
146
|
`send` resumes the thread, starts a turn with your text, prints the turn id, and returns; Codex keeps working after `gbot` disconnects. Every command accepts `--json`.
|
|
75
147
|
|
|
76
|
-
**Which Codex you reach.** `gbot` connects to `$CODEX_HOME/app-server-control/app-server-control.sock` (default `~/.codex/...`) with a built-in WebSocket client. The daemon must be started by `codex app-server daemon start`. `list-threads` shows the threads recorded under `CODEX_HOME` (CLI, TUI, VS Code); `send`
|
|
148
|
+
**Which Codex you reach.** `gbot` connects to `$CODEX_HOME/app-server-control/app-server-control.sock` (default `~/.codex/...`) with a built-in WebSocket client. The daemon must be started by `codex app-server daemon start`. `list-threads` shows the threads recorded under `CODEX_HOME` (CLI, TUI, VS Code); `send` uses the resumed thread state and selected busy policy: ordinary sends reject active work, while explicitly selected guarded steering can deliver into the active turn. Method and parameter names are pinned to the Codex release recorded in `src/core/codex-bridge.js` (`codex app-server generate-json-schema`); `status` prints the daemon and CLI versions so a stale daemon is visible, and `codex app-server daemon restart` picks up the installed CLI. Native Windows is not supported yet (AF_UNIX control socket); use WSL, Linux, or macOS.
|
|
77
149
|
|
|
78
150
|
**ChatGPT Desktop limitation.** Desktop runs its own private stdio app-server and does not publish the shared control socket, so external clients cannot reach live Desktop tasks. When the socket is absent, `gbot codex status` exits 1 and says so, naming the upstream issues: [openai/codex#41014](https://github.com/openai/codex/issues/41014) and [openai/codex#41112](https://github.com/openai/codex/issues/41112). `gbot` never reads Desktop's temporary `CODEX_APP_TOOLS_PIPE_PATH` sockets under `/tmp/codex-browser-use/`; that channel is private to Desktop.
|
|
79
151
|
|
|
@@ -91,11 +163,11 @@ Fail-open runs only before any stdin byte is consumed and no daemon payload was
|
|
|
91
163
|
|
|
92
164
|
Residual risks, stated honestly: requests without both matching thread and turn IDs remain unanswered; a Codex client must handle those requests. A daemon that speaks framing-valid but semantically unexpected JSON-RPC (unknown methods, id-less responses) is treated as transport; pins are to app-server schema 0.154.0. The bridge trusts the local control socket; a malicious local daemon could hold the session up to the stated budgets, not past them.
|
|
93
165
|
|
|
94
|
-
|
|
166
|
+
Current shim limitation: Desktop's spawn-time app-tools MCP `-c` overrides are not forwarded to the already-running managed daemon. No restoration path or app-tools parity has been demonstrated here; this is not a claim of permanent protocol impossibility. Fully quit and relaunch ChatGPT.app after install (or login) so it inherits `CODEX_CLI_PATH`. `status` reads the macOS GUI-domain value via `launchctl getenv` (what Desktop actually inherits) alongside the calling shell's value. LaunchAgent persistence is macOS-first; elsewhere install still writes the wrapper and bridge but leaves `CODEX_CLI_PATH` for you to export. `~/.codex/bin` holds scripts only — there is no extra revert note to clean up; revert is `gbot codex desktop-shim uninstall` plus this section.
|
|
95
167
|
|
|
96
168
|
**Status contract (`gbot codex status --json`).** `reachable` is endpoint reachability only. `socketState` is `socket`, `absent`, `permission-denied`, or `not-a-socket`; `mode` is `daemon` for a usable daemon, otherwise the failure: `socket-absent`, `permission-denied` (the file or the connect refused this user), `not-a-socket`, `connect-failed` (socket present, nothing completed the WebSocket upgrade), `handshake-failed` (upgrade or `initialize` failed), `windows-unsupported`, or `bad-response` (reachable, but `initialize` returned something off-schema — `reachable` stays `true`). `schema.compatibility` is `exact` when the daemon reports the pinned version, `unverified` when it differs (methods usually survive upgrades, but the shapes are not re-checked), or `unknown`. `cliVersionProbe` reports whether `codex --version` answered (`ok`, `missing`, `timeout` after 3 s, `error`). The document is always written to stdout and includes `exitCode`; it is `0` only for a usable daemon.
|
|
97
169
|
|
|
98
|
-
`desktopShimConfigured` is true when the installed wrapper is selected by Desktop-facing `CODEX_CLI_PATH` (the GUI domain on macOS). This describes configuration for future launches; a running Desktop may not have inherited it, and the wrapper may have fallen back to stock Codex. `desktopAttached` is `"private-stdio"` when a Desktop-bundled app-server process is observed, otherwise `"unknown"`. That process observation and shim configuration can both be present. Neither a configured shim nor a reachable daemon proves Desktop is attached to that daemon.
|
|
170
|
+
`desktopShimConfigured` is true when the installed wrapper is selected by Desktop-facing `CODEX_CLI_PATH` (the GUI domain on macOS). This describes configuration for future launches; a running Desktop may not have inherited it, and the wrapper may have fallen back to stock Codex. `desktopAttached` is `"private-stdio"` when a Desktop-bundled app-server process is observed, otherwise `"unknown"`. That process observation and shim configuration can both be present. Neither a configured shim nor a reachable daemon proves Desktop is attached to that daemon. Verify actual attachment with a controlled shared-thread interaction and matching thread/turn IDs.
|
|
99
171
|
|
|
100
172
|
**Thread discovery.** `list-threads --limit N` (1–200) pages with the opaque `--cursor` from the previous `nextCursor`; JSON keeps the cursor verbatim, text output prints a sanitized `more: --cursor …` hint. Text fields are stripped of terminal control sequences in both outputs (single-line fields also lose line breaks; `preview` keeps its newlines; a structured `source` such as `{ "custom": … }` passes through unchanged), `status` is one of `notLoaded | idle | active | systemError | unknown`, and non-numeric `updatedAt` becomes `null`. Unknown arguments are rejected before the socket is touched; a response that does not match the pinned schema (including an entry without a string `id`) fails with `reason: "bad-response"`.
|
|
101
173
|
|
|
@@ -108,7 +180,7 @@ gbot codex send --correlation-id M --reply-to M --hop 1 <threadId> "ack" # the a
|
|
|
108
180
|
|
|
109
181
|
Sends at `hop >= GROK_BOT_MAX_HOPS` (default 4) are refused with `reason: "hop-limit"` before anything reaches the daemon, so two agents cannot acknowledge each other forever; `gbot` never auto-acknowledges. `--envelope` (implied by any envelope flag) prepends a one-line `[gbot msg=… corr=… reply-to=… hop=… from=user@host]` header so the receiving agent can quote the ids back. That header is caller-authored provenance for the reader, not authentication: the daemon authenticates the local user through the socket, nothing else. Private ChatGPT Desktop pipes and arbitrary ChatGPT chats stay out of scope; only Codex threads on a reachable app-server daemon are routes.
|
|
110
182
|
|
|
111
|
-
**Busy threads.** `send` reads the thread status on resume. Only `idle` and `notLoaded` threads start a turn. An `active` thread (a turn in progress, or waiting on approval / user input) is refused with `reason: "busy"`: in app-server 0.154.0 a `turn/start` on an active thread steers that turn rather than queueing behind it, and
|
|
183
|
+
**Busy threads.** `send` reads the thread status on resume. Only `idle` and `notLoaded` threads start a turn. An `active` thread (a turn in progress, or waiting on approval / user input) is refused with `reason: "busy"`: in app-server 0.154.0 a `turn/start` on an active thread steers that turn rather than queueing behind it, by default. Explicit guarded steering and managed bridge routes can deliver into active work; they never interrupt a turn. Either wait for `list-threads` to show `idle` and resend, or pass `--when-busy queue` to hand the message to the daemon's own queue through Codex's experimental `thread/queue/add` — that needs `GROK_BOT_CODEX_EXPERIMENTAL=1`, returns `delivery: "queued"` with `queuedSubmissionId`, and `gbot codex queue <threadId>` shows what is still waiting. `systemError` threads are refused with `reason: "thread-error"`, statuses this version does not know with `reason: "unknown-status"`. Receipts distinguish `delivery: "accepted"` (turn started; `turnId`, `turnStatus`), `"queued"`, `"rejected"` (nothing was sent; see `reason`), and `"unknown"` (the request left but no acknowledgment came back — look for `messageId` in the thread or queue before resending). The decision record, with the schema evidence and a live probe of the queue API, is in [`docs/codex-busy-threads.md`](docs/codex-busy-threads.md).
|
|
112
184
|
|
|
113
185
|
**Failure modes.** Every `send` and `codex` outcome under `--json` is one document on stdout with `exitCode`; failures include `{ error, delivery, reason, messageId, correlationId, hop, exitCode: 1, … }` and the process exits 1. Framework argument/schema errors remain on stderr and exit 2. `--json` is reserved anywhere before `--`; put `--` before flag-like message text. `reason` values are stable:
|
|
114
186
|
|
|
@@ -124,10 +196,14 @@ Sends at `hop >= GROK_BOT_MAX_HOPS` (default 4) are refused with `reason: "hop-l
|
|
|
124
196
|
## Talking to Grok Bot from Codex
|
|
125
197
|
|
|
126
198
|
The npm package is also an [Agent Bundle](https://scriptedalchemy.github.io/agent-bundle/) plugin
|
|
127
|
-
that gives Codex, Claude Code, and Cursor
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
199
|
+
that gives Codex, Claude Code, and Cursor a `grok-bot` MCP server with messaging,
|
|
200
|
+
Codex conversation, and managed bridge tools, plus a `talk-to-grok-bot` skill.
|
|
201
|
+
`gbot_send` and `gbot_thread` handle Grok conversations; `codex_threads`,
|
|
202
|
+
`codex_send`, `codex_wait`, and `codex_watch` handle Codex conversations.
|
|
203
|
+
`gbot_bridge_start`, `gbot_bridge_status`, `gbot_bridge_stop`, and
|
|
204
|
+
`gbot_codex_respond` manage automatic delivery and scoped operator responses.
|
|
205
|
+
The tools bundle this repository's gateway client and worker, so the installed
|
|
206
|
+
plugin does not need `gbot` on `PATH`.
|
|
131
207
|
|
|
132
208
|
Install the bundled host projections from the same npm package:
|
|
133
209
|
|
|
@@ -138,9 +214,8 @@ gbot-install install cursor
|
|
|
138
214
|
gbot-install doctor
|
|
139
215
|
```
|
|
140
216
|
|
|
141
|
-
Add `--replace` to an install command to overwrite an
|
|
142
|
-
registered as `gbot
|
|
143
|
-
checkout, uninstall it first so the two do not both register the `grok-bot` server.
|
|
217
|
+
Add `--replace` to an install command to overwrite an existing copy. The bundle is
|
|
218
|
+
registered as `gbot`.
|
|
144
219
|
|
|
145
220
|
`gbot_thread` returns a small receipt by default: deterministic `summary`, opaque
|
|
146
221
|
`cursor`, `entryCount`, and `gapReset`.
|
|
@@ -157,6 +232,8 @@ A sandbox that blocks network egress or hides the home directory makes `gbot_sen
|
|
|
157
232
|
fail with the gateway error; run `gbot doctor` inside the same sandbox to see which
|
|
158
233
|
credential source is visible.
|
|
159
234
|
|
|
235
|
+
For on-disk `--files` mode, pass `--dir` or set `GROK_BOT_AGENTS_DIR`.
|
|
236
|
+
|
|
160
237
|
To route a repository's agents to a bot by default, add a note to its `AGENTS.md`:
|
|
161
238
|
|
|
162
239
|
```md
|
|
@@ -171,7 +248,7 @@ for it.
|
|
|
171
248
|
## Local history
|
|
172
249
|
|
|
173
250
|
Recording is **opt-in**. Set `GROK_BOT_HISTORY=on` (or `true`/`1`) to append successful
|
|
174
|
-
`send`/`thread
|
|
251
|
+
`send`/`thread` observations as plaintext JSONL at
|
|
175
252
|
`~/.grok-bot-cli/history.jsonl`. Without that env, nothing is written.
|
|
176
253
|
|
|
177
254
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"description":"Message Grok Bot
|
|
1
|
+
{"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","name":"gbot-marketplace","owner":{"name":"gbot"},"plugins":[{"author":{"name":"Zack Jackson","url":"https://github.com/ScriptedAlchemy"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","homepage":"https://github.com/ScriptedAlchemy/grok-bot-cli#readme","keywords":["grok","grok-bot","grokbot","gbot","cursor","ai-agents","automation","terminal","cli","agent-bundle"],"license":"MIT","name":"gbot","repository":"https://github.com/ScriptedAlchemy/grok-bot-cli","source":"./","version":"0.6.0"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":{"name":"gbot"},"description":"Message Grok Bot
|
|
1
|
+
{"author":{"name":"gbot"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","name":"gbot","version":"0.6.0"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":{"name":"Zack Jackson","url":"https://github.com/ScriptedAlchemy"},"description":"Message Grok Bot
|
|
1
|
+
{"author":{"name":"Zack Jackson","url":"https://github.com/ScriptedAlchemy"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","homepage":"https://github.com/ScriptedAlchemy/grok-bot-cli#readme","interface":{"capabilities":["mcp","skills"],"category":"Productivity","defaultPrompt":["Help me use gbot."],"developerName":"gbot","displayName":"gbot","longDescription":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","shortDescription":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links."},"keywords":["grok","grok-bot","grokbot","gbot","cursor","ai-agents","automation","terminal","cli","agent-bundle"],"license":"MIT","mcpServers":"./.codex-plugin/mcp.json","name":"gbot","repository":"https://github.com/ScriptedAlchemy/grok-bot-cli","skills":"./skills/","version":"0.6.0"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"gbot-marketplace","owner":{"name":"gbot"},"plugins":[{"description":"Message Grok Bot
|
|
1
|
+
{"name":"gbot-marketplace","owner":{"name":"gbot"},"plugins":[{"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","name":"gbot","source":"./"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":{"name":"Zack Jackson"},"description":"Message Grok Bot
|
|
1
|
+
{"author":{"name":"Zack Jackson"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","displayName":"gbot","homepage":"https://github.com/ScriptedAlchemy/grok-bot-cli#readme","keywords":["grok","grok-bot","grokbot","gbot","cursor","ai-agents","automation","terminal","cli","agent-bundle"],"license":"MIT","mcpServers":"./.cursor-plugin/mcp.json","name":"gbot","repository":"https://github.com/ScriptedAlchemy/grok-bot-cli","skills":"./skills/","version":"0.6.0"}
|
package/dist/INSTALL.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Install gbot
|
|
2
2
|
|
|
3
|
-
Message Grok Bot
|
|
3
|
+
Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.
|
|
4
4
|
|
|
5
|
-
Version: `0.
|
|
5
|
+
Version: `0.6.0`
|
|
6
6
|
|
|
7
7
|
Run these commands from this bundle directory. The bundle is self-contained: every command below is
|
|
8
8
|
a host command or the bundled installer, and nothing requires the `agent-bundle` CLI. Where that CLI is
|
package/dist/README.md
CHANGED
|
@@ -43,11 +43,83 @@ snapshot with `gapReset: true`. The gateway request remains limit-only.
|
|
|
43
43
|
|
|
44
44
|
Run `gbot --help` for every command.
|
|
45
45
|
Options are command-local (for example, `gbot send --history-dir DIR ...`);
|
|
46
|
-
the
|
|
47
|
-
canonical JSON result; `send` and the `codex` commands also report failures as
|
|
46
|
+
`--json` prints the canonical JSON result; `send` and the `codex` commands also report failures as
|
|
48
47
|
a JSON document on stdout with `exitCode` (see below), every other command
|
|
49
48
|
prints the failure message on stderr and exits 1.
|
|
50
49
|
|
|
50
|
+
## Automatic Grok ↔ Codex replies
|
|
51
|
+
|
|
52
|
+
In a native Codex invocation, `gbot_send` sends once and returns a durable exchange
|
|
53
|
+
receipt. Continue working: matching Grok replies arrive in the originating Codex
|
|
54
|
+
thread automatically. That thread's next answer is not sent back to Grok unless
|
|
55
|
+
you deliberately send again. The background worker survives the MCP caller exiting. Outgoing MCP tool calls
|
|
56
|
+
still follow the host's tool-approval policy; the bridge does not change it.
|
|
57
|
+
|
|
58
|
+
When native identity is unavailable (including Cursor), supply `codexThreadId` on
|
|
59
|
+
the send, or make a one-time `gbot_bridge_start` binding with `grokTarget`,
|
|
60
|
+
`codexThreadId` and optional `expectedCwd`. New visible Grok bot messages then arrive
|
|
61
|
+
in that Codex thread, and its corresponding terminal answer returns to Grok.
|
|
62
|
+
Existing transcript history is not replayed. `codex_send` can also request a return
|
|
63
|
+
with `replyToGrok` or `bindingId`. Managed delivery defaults to guarded steering of
|
|
64
|
+
active work; `busyPolicy: "reject"` on a binding refuses busy threads. A managed
|
|
65
|
+
`codex_send` can select `whenBusy` for that one delivery; omitting it uses the
|
|
66
|
+
binding's stored policy. An override does not change subsequent linked traffic.
|
|
67
|
+
|
|
68
|
+
Without an identifiable native source or explicit route, `gbot_send` preserves the
|
|
69
|
+
ordinary send and returns `replyRoute: {mode: "manual", reason: "source-unavailable"}`;
|
|
70
|
+
read with `gbot_thread` later. `replyMode: "manual"` deliberately selects that flow.
|
|
71
|
+
An automatic-route startup failure never falls back to an untracked send.
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
# CLI sends remain manual unless routing is explicitly requested.
|
|
75
|
+
gbot send --reply-mode auto --codex-thread-id THREAD_ID Researcher "Please investigate"
|
|
76
|
+
gbot codex bridge start --codex-thread-id THREAD_ID --expected-cwd /project Researcher --json
|
|
77
|
+
gbot codex bridge status --json
|
|
78
|
+
gbot codex send --reply-to-grok Researcher THREAD_ID "Investigate and return your final answer"
|
|
79
|
+
gbot codex bridge stop --binding-id BINDING_ID --json
|
|
80
|
+
# Explicitly stop the process; pending records remain for a later restart.
|
|
81
|
+
gbot codex bridge stop --worker --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`gbot_bridge_status` separates worker health, binding coverage, submission, execution,
|
|
85
|
+
return delivery and pending operator interactions. `unknown` is not rejection: inspect
|
|
86
|
+
status before resending. Caller-supplied `requestId` (CLI `--request-id`) permits exact
|
|
87
|
+
replay of a tracked send without another submission; returned `controlRequestId` is
|
|
88
|
+
that control identity, separate from the gateway's transcript `requestId`.
|
|
89
|
+
Explicit chain `hop`/`correlationId` remain bounded. Automatic CLI routes own their
|
|
90
|
+
envelope; omit the legacy `--envelope` and `--reply-to` flags. Managed Codex return
|
|
91
|
+
routes also reject explicit `expectedTurnId`/`--expected-turn-id`; use plain Codex
|
|
92
|
+
send when a caller-selected turn guard is required. If a binding and an explicit
|
|
93
|
+
Grok target are supplied together, the target must resolve to that binding's recipient.
|
|
94
|
+
Paused gaps/capacity or unsupported interactions need attention; never guess a cursor
|
|
95
|
+
or automatically approve. `gbot_codex_respond` / `gbot codex bridge respond` requires
|
|
96
|
+
current `interactionId`, `generation`, `threadId`, `turnId` and binding/exchange scope.
|
|
97
|
+
Supply one-time `decision: accept|decline|cancel`, or `answersJson` containing exact
|
|
98
|
+
question IDs mapped to `{"answers":["answer"]}`. Session permissions and policy
|
|
99
|
+
amendments remain in the owning Codex UI.
|
|
100
|
+
|
|
101
|
+
State lives in the user-owned `~/.grok-bot-cli/relay/` directory, or
|
|
102
|
+
`GROK_BOT_RELAY_DIR`, outside plugin caches. Profile mismatches fail visibly; gateway
|
|
103
|
+
overrides and thread restrictions cannot reuse a differently authorized worker.
|
|
104
|
+
Authentication failures use bounded retries (1..30 seconds) from the saved cursor;
|
|
105
|
+
restored credentials do not reset coverage or resend uncertain submissions.
|
|
106
|
+
No login service is installed. Network reconnects are automatic; a dead process
|
|
107
|
+
needs a new tracked send or bridge start to resume saved routes. A dead worker is
|
|
108
|
+
reported as stopped, not running.
|
|
109
|
+
|
|
110
|
+
`gbot codex bridge run --lifetime-ms 60000` runs in the foreground for an explicit
|
|
111
|
+
bounded lifetime (default and maximum 23 hours), then closes cleanly before the CLI
|
|
112
|
+
renderer deadline. For an unlimited foreground service entry, run
|
|
113
|
+
`node /path/to/plugin/scripts/gbot-relay.mjs` (npm package: `dist/scripts/gbot-relay.mjs`)
|
|
114
|
+
with the same authorized environment. SIGINT/SIGTERM or explicit worker stop closes
|
|
115
|
+
observation without interrupting a Codex turn. Windows retains the Codex Unix-socket
|
|
116
|
+
limitation.
|
|
117
|
+
|
|
118
|
+
Codex, Cursor, Claude and portable artifacts contain these tools and the worker.
|
|
119
|
+
Grok Bot participates through its existing gateway conversation; a native Grok plugin
|
|
120
|
+
loader or remote stdio tunnel has not been established. Artifact availability alone
|
|
121
|
+
does not mean a host has loaded the plugin.
|
|
122
|
+
|
|
51
123
|
## Gateway URL policy
|
|
52
124
|
|
|
53
125
|
By default `gbot` only sends credentials to expected hosts:
|
|
@@ -73,7 +145,7 @@ gbot codex send <threadId> "Grok here: the build is green, please continue."
|
|
|
73
145
|
|
|
74
146
|
`send` resumes the thread, starts a turn with your text, prints the turn id, and returns; Codex keeps working after `gbot` disconnects. Every command accepts `--json`.
|
|
75
147
|
|
|
76
|
-
**Which Codex you reach.** `gbot` connects to `$CODEX_HOME/app-server-control/app-server-control.sock` (default `~/.codex/...`) with a built-in WebSocket client. The daemon must be started by `codex app-server daemon start`. `list-threads` shows the threads recorded under `CODEX_HOME` (CLI, TUI, VS Code); `send`
|
|
148
|
+
**Which Codex you reach.** `gbot` connects to `$CODEX_HOME/app-server-control/app-server-control.sock` (default `~/.codex/...`) with a built-in WebSocket client. The daemon must be started by `codex app-server daemon start`. `list-threads` shows the threads recorded under `CODEX_HOME` (CLI, TUI, VS Code); `send` uses the resumed thread state and selected busy policy: ordinary sends reject active work, while explicitly selected guarded steering can deliver into the active turn. Method and parameter names are pinned to the Codex release recorded in `src/core/codex-bridge.js` (`codex app-server generate-json-schema`); `status` prints the daemon and CLI versions so a stale daemon is visible, and `codex app-server daemon restart` picks up the installed CLI. Native Windows is not supported yet (AF_UNIX control socket); use WSL, Linux, or macOS.
|
|
77
149
|
|
|
78
150
|
**ChatGPT Desktop limitation.** Desktop runs its own private stdio app-server and does not publish the shared control socket, so external clients cannot reach live Desktop tasks. When the socket is absent, `gbot codex status` exits 1 and says so, naming the upstream issues: [openai/codex#41014](https://github.com/openai/codex/issues/41014) and [openai/codex#41112](https://github.com/openai/codex/issues/41112). `gbot` never reads Desktop's temporary `CODEX_APP_TOOLS_PIPE_PATH` sockets under `/tmp/codex-browser-use/`; that channel is private to Desktop.
|
|
79
151
|
|
|
@@ -91,11 +163,11 @@ Fail-open runs only before any stdin byte is consumed and no daemon payload was
|
|
|
91
163
|
|
|
92
164
|
Residual risks, stated honestly: requests without both matching thread and turn IDs remain unanswered; a Codex client must handle those requests. A daemon that speaks framing-valid but semantically unexpected JSON-RPC (unknown methods, id-less responses) is treated as transport; pins are to app-server schema 0.154.0. The bridge trusts the local control socket; a malicious local daemon could hold the session up to the stated budgets, not past them.
|
|
93
165
|
|
|
94
|
-
|
|
166
|
+
Current shim limitation: Desktop's spawn-time app-tools MCP `-c` overrides are not forwarded to the already-running managed daemon. No restoration path or app-tools parity has been demonstrated here; this is not a claim of permanent protocol impossibility. Fully quit and relaunch ChatGPT.app after install (or login) so it inherits `CODEX_CLI_PATH`. `status` reads the macOS GUI-domain value via `launchctl getenv` (what Desktop actually inherits) alongside the calling shell's value. LaunchAgent persistence is macOS-first; elsewhere install still writes the wrapper and bridge but leaves `CODEX_CLI_PATH` for you to export. `~/.codex/bin` holds scripts only — there is no extra revert note to clean up; revert is `gbot codex desktop-shim uninstall` plus this section.
|
|
95
167
|
|
|
96
168
|
**Status contract (`gbot codex status --json`).** `reachable` is endpoint reachability only. `socketState` is `socket`, `absent`, `permission-denied`, or `not-a-socket`; `mode` is `daemon` for a usable daemon, otherwise the failure: `socket-absent`, `permission-denied` (the file or the connect refused this user), `not-a-socket`, `connect-failed` (socket present, nothing completed the WebSocket upgrade), `handshake-failed` (upgrade or `initialize` failed), `windows-unsupported`, or `bad-response` (reachable, but `initialize` returned something off-schema — `reachable` stays `true`). `schema.compatibility` is `exact` when the daemon reports the pinned version, `unverified` when it differs (methods usually survive upgrades, but the shapes are not re-checked), or `unknown`. `cliVersionProbe` reports whether `codex --version` answered (`ok`, `missing`, `timeout` after 3 s, `error`). The document is always written to stdout and includes `exitCode`; it is `0` only for a usable daemon.
|
|
97
169
|
|
|
98
|
-
`desktopShimConfigured` is true when the installed wrapper is selected by Desktop-facing `CODEX_CLI_PATH` (the GUI domain on macOS). This describes configuration for future launches; a running Desktop may not have inherited it, and the wrapper may have fallen back to stock Codex. `desktopAttached` is `"private-stdio"` when a Desktop-bundled app-server process is observed, otherwise `"unknown"`. That process observation and shim configuration can both be present. Neither a configured shim nor a reachable daemon proves Desktop is attached to that daemon.
|
|
170
|
+
`desktopShimConfigured` is true when the installed wrapper is selected by Desktop-facing `CODEX_CLI_PATH` (the GUI domain on macOS). This describes configuration for future launches; a running Desktop may not have inherited it, and the wrapper may have fallen back to stock Codex. `desktopAttached` is `"private-stdio"` when a Desktop-bundled app-server process is observed, otherwise `"unknown"`. That process observation and shim configuration can both be present. Neither a configured shim nor a reachable daemon proves Desktop is attached to that daemon. Verify actual attachment with a controlled shared-thread interaction and matching thread/turn IDs.
|
|
99
171
|
|
|
100
172
|
**Thread discovery.** `list-threads --limit N` (1–200) pages with the opaque `--cursor` from the previous `nextCursor`; JSON keeps the cursor verbatim, text output prints a sanitized `more: --cursor …` hint. Text fields are stripped of terminal control sequences in both outputs (single-line fields also lose line breaks; `preview` keeps its newlines; a structured `source` such as `{ "custom": … }` passes through unchanged), `status` is one of `notLoaded | idle | active | systemError | unknown`, and non-numeric `updatedAt` becomes `null`. Unknown arguments are rejected before the socket is touched; a response that does not match the pinned schema (including an entry without a string `id`) fails with `reason: "bad-response"`.
|
|
101
173
|
|
|
@@ -108,7 +180,7 @@ gbot codex send --correlation-id M --reply-to M --hop 1 <threadId> "ack" # the a
|
|
|
108
180
|
|
|
109
181
|
Sends at `hop >= GROK_BOT_MAX_HOPS` (default 4) are refused with `reason: "hop-limit"` before anything reaches the daemon, so two agents cannot acknowledge each other forever; `gbot` never auto-acknowledges. `--envelope` (implied by any envelope flag) prepends a one-line `[gbot msg=… corr=… reply-to=… hop=… from=user@host]` header so the receiving agent can quote the ids back. That header is caller-authored provenance for the reader, not authentication: the daemon authenticates the local user through the socket, nothing else. Private ChatGPT Desktop pipes and arbitrary ChatGPT chats stay out of scope; only Codex threads on a reachable app-server daemon are routes.
|
|
110
182
|
|
|
111
|
-
**Busy threads.** `send` reads the thread status on resume. Only `idle` and `notLoaded` threads start a turn. An `active` thread (a turn in progress, or waiting on approval / user input) is refused with `reason: "busy"`: in app-server 0.154.0 a `turn/start` on an active thread steers that turn rather than queueing behind it, and
|
|
183
|
+
**Busy threads.** `send` reads the thread status on resume. Only `idle` and `notLoaded` threads start a turn. An `active` thread (a turn in progress, or waiting on approval / user input) is refused with `reason: "busy"`: in app-server 0.154.0 a `turn/start` on an active thread steers that turn rather than queueing behind it, by default. Explicit guarded steering and managed bridge routes can deliver into active work; they never interrupt a turn. Either wait for `list-threads` to show `idle` and resend, or pass `--when-busy queue` to hand the message to the daemon's own queue through Codex's experimental `thread/queue/add` — that needs `GROK_BOT_CODEX_EXPERIMENTAL=1`, returns `delivery: "queued"` with `queuedSubmissionId`, and `gbot codex queue <threadId>` shows what is still waiting. `systemError` threads are refused with `reason: "thread-error"`, statuses this version does not know with `reason: "unknown-status"`. Receipts distinguish `delivery: "accepted"` (turn started; `turnId`, `turnStatus`), `"queued"`, `"rejected"` (nothing was sent; see `reason`), and `"unknown"` (the request left but no acknowledgment came back — look for `messageId` in the thread or queue before resending). The decision record, with the schema evidence and a live probe of the queue API, is in [`docs/codex-busy-threads.md`](docs/codex-busy-threads.md).
|
|
112
184
|
|
|
113
185
|
**Failure modes.** Every `send` and `codex` outcome under `--json` is one document on stdout with `exitCode`; failures include `{ error, delivery, reason, messageId, correlationId, hop, exitCode: 1, … }` and the process exits 1. Framework argument/schema errors remain on stderr and exit 2. `--json` is reserved anywhere before `--`; put `--` before flag-like message text. `reason` values are stable:
|
|
114
186
|
|
|
@@ -124,10 +196,14 @@ Sends at `hop >= GROK_BOT_MAX_HOPS` (default 4) are refused with `reason: "hop-l
|
|
|
124
196
|
## Talking to Grok Bot from Codex
|
|
125
197
|
|
|
126
198
|
The npm package is also an [Agent Bundle](https://scriptedalchemy.github.io/agent-bundle/) plugin
|
|
127
|
-
that gives Codex, Claude Code, and Cursor
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
199
|
+
that gives Codex, Claude Code, and Cursor a `grok-bot` MCP server with messaging,
|
|
200
|
+
Codex conversation, and managed bridge tools, plus a `talk-to-grok-bot` skill.
|
|
201
|
+
`gbot_send` and `gbot_thread` handle Grok conversations; `codex_threads`,
|
|
202
|
+
`codex_send`, `codex_wait`, and `codex_watch` handle Codex conversations.
|
|
203
|
+
`gbot_bridge_start`, `gbot_bridge_status`, `gbot_bridge_stop`, and
|
|
204
|
+
`gbot_codex_respond` manage automatic delivery and scoped operator responses.
|
|
205
|
+
The tools bundle this repository's gateway client and worker, so the installed
|
|
206
|
+
plugin does not need `gbot` on `PATH`.
|
|
131
207
|
|
|
132
208
|
Install the bundled host projections from the same npm package:
|
|
133
209
|
|
|
@@ -138,9 +214,8 @@ gbot-install install cursor
|
|
|
138
214
|
gbot-install doctor
|
|
139
215
|
```
|
|
140
216
|
|
|
141
|
-
Add `--replace` to an install command to overwrite an
|
|
142
|
-
registered as `gbot
|
|
143
|
-
checkout, uninstall it first so the two do not both register the `grok-bot` server.
|
|
217
|
+
Add `--replace` to an install command to overwrite an existing copy. The bundle is
|
|
218
|
+
registered as `gbot`.
|
|
144
219
|
|
|
145
220
|
`gbot_thread` returns a small receipt by default: deterministic `summary`, opaque
|
|
146
221
|
`cursor`, `entryCount`, and `gapReset`.
|
|
@@ -157,6 +232,8 @@ A sandbox that blocks network egress or hides the home directory makes `gbot_sen
|
|
|
157
232
|
fail with the gateway error; run `gbot doctor` inside the same sandbox to see which
|
|
158
233
|
credential source is visible.
|
|
159
234
|
|
|
235
|
+
For on-disk `--files` mode, pass `--dir` or set `GROK_BOT_AGENTS_DIR`.
|
|
236
|
+
|
|
160
237
|
To route a repository's agents to a bot by default, add a note to its `AGENTS.md`:
|
|
161
238
|
|
|
162
239
|
```md
|
|
@@ -171,7 +248,7 @@ for it.
|
|
|
171
248
|
## Local history
|
|
172
249
|
|
|
173
250
|
Recording is **opt-in**. Set `GROK_BOT_HISTORY=on` (or `true`/`1`) to append successful
|
|
174
|
-
`send`/`thread
|
|
251
|
+
`send`/`thread` observations as plaintext JSONL at
|
|
175
252
|
`~/.grok-bot-cli/history.jsonl`. Without that env, nothing is written.
|
|
176
253
|
|
|
177
254
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"assets":[{"externals":[{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"async_hooks","userRequest":"async_hooks"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"crypto","userRequest":"crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["src/core/codex-bridge.js"],"kind":"builtin","request":"node:module","userRequest":"node:module"},{"externalType":"module","issuers":["src/core/codex-bridge.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["src/core/history.js"],"kind":"builtin","request":"node:readline","userRequest":"node:readline"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-flight-entry.mjs"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-flight-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"stream","userRequest":"stream"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"bin/gbot-flight.mjs","sha256":"40679674e6084308717599def86bc89b80eb83ddd9316893a9d446afb5424bb7"},{"externals":[{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/667~1.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","node_modules/agent-bundle/dist/terminal-capability.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/agent-bundle/dist/667~1.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js"],"kind":"builtin","request":"node:module","userRequest":"node:module"},{"externalType":"module","issuers":["src/core/codex-bridge.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["src/core/history.js"],"kind":"builtin","request":"node:readline","userRequest":"node:readline"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-0.mjs",".agent-bundle-virtual/bin-gbot-entry.mjs"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"bin/gbot.mjs","sha256":"8f976a5c0c7ac048fd9e0aa04e1102d4525b22328fe2f4402b0ebaf524fe47d4"},{"externals":[{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"async_hooks","userRequest":"async_hooks"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"crypto","userRequest":"crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/gateway.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-flight-entry.mjs"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-flight-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"stream","userRequest":"stream"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"mcp/mcp-grok-bot-b8c2461e-flight.mjs","sha256":"c0191dbf0611a8d22aac5734f1b2191e78e764cc47f6d53313af7b8a5108c613"},{"externals":[{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/@agent-bundle/runtime/dist/lineage.js","node_modules/agent-bundle/dist/667~1.js","node_modules/agent-bundle/dist/mcp-server-runtime.js","src/core/app-session.js","src/core/gateway.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","node_modules/agent-bundle/dist/terminal-capability.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/40.js","node_modules/agent-bundle/dist/667~1.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","src/core/app-session.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs"],"kind":"builtin","request":"node:process","userRequest":"node:process"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-1.mjs",".agent-bundle-virtual/mcp-grok-bot-b8c2461e-2.mjs"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":["node_modules/agent-bundle/dist/mcp-server-runtime.js"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","@modelcontextprotocol/core","@modelcontextprotocol/server","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"mcp/mcp-grok-bot-b8c2461e.mjs","sha256":"64c03e06af6cf08fe3e98ef6cdf3e4ab03dfdf3a3e328386c2019eff42a68b22"}],"coverage":{"rewritable":false,"unobserved":["import(<expression>)","require(<expression>)","require.resolve(…)","createRequire(…)(…)","import.meta.resolve(…)"]},"policy":{"name":"closed-world-externals","revision":1},"producer":{"name":"agent-bundle","rspack":"2.2.4","version":"0.2.0"}}
|
|
1
|
+
{"assets":[{"externals":[{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"async_hooks","userRequest":"async_hooks"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"crypto","userRequest":"crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/cli/codex/bridge/run.tsx","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/relay/control.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/codex/conversation.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/40.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js","src/core/relay/control.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["src/core/history.js"],"kind":"builtin","request":"node:readline","userRequest":"node:readline"},{"externalType":"module","issuers":["src/core/relay/control.js"],"kind":"builtin","request":"node:string_decoder","userRequest":"node:string_decoder"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-flight-entry.mjs","src/core/relay/managed.js"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-flight-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"stream","userRequest":"stream"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"bin/gbot-flight.mjs","sha256":"a25b1719de8c88358bb6a9cfdc5c2da2f1d6b6655993b1da4cc6145021916143"},{"externals":[{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/cli/codex/bridge/run.tsx","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/667~1.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/relay/control.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","node_modules/agent-bundle/dist/terminal-capability.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/codex/conversation.js","src/core/desktop-shim.js","src/core/history.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/40.js","node_modules/agent-bundle/dist/667~1.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js","src/core/relay/control.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/history.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["src/core/history.js"],"kind":"builtin","request":"node:readline","userRequest":"node:readline"},{"externalType":"module","issuers":["src/core/relay/control.js"],"kind":"builtin","request":"node:string_decoder","userRequest":"node:string_decoder"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-0.mjs",".agent-bundle-virtual/bin-gbot-entry.mjs","src/core/relay/managed.js"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/bin-gbot-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"bin/gbot.mjs","sha256":"1d96b08f785ba4feff282e5d925550f261568a846de29129376b7c5816bf6135"},{"externals":[{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"async_hooks","userRequest":"async_hooks"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"crypto","userRequest":"crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/relay/control.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/codex/conversation.js","src/core/desktop-shim.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/40.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js","src/core/relay/control.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["src/core/relay/control.js"],"kind":"builtin","request":"node:string_decoder","userRequest":"node:string_decoder"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-flight-entry.mjs","src/core/relay/managed.js"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-flight-entry.mjs"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"stream","userRequest":"stream"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-server.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"mcp/mcp-grok-bot-b8c2461e-flight.mjs","sha256":"149f24d38dfe833fb89e86044b9dfc02708c537519fefcadf8daf36de0acb468"},{"externals":[{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js","node_modules/@agent-bundle/runtime/dist/index.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/@agent-bundle/runtime/dist/lineage.js","node_modules/agent-bundle/dist/667~1.js","node_modules/agent-bundle/dist/mcp-server-runtime.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/relay/control.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","node_modules/agent-bundle/dist/terminal-capability.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/codex/conversation.js","src/core/desktop-shim.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/40.js","node_modules/agent-bundle/dist/667~1.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js","src/core/relay/control.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/49.js","node_modules/agent-bundle/dist/launch-env.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/managed.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs"],"kind":"builtin","request":"node:process","userRequest":"node:process"},{"externalType":"module","issuers":["src/core/relay/control.js"],"kind":"builtin","request":"node:string_decoder","userRequest":"node:string_decoder"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-grok-bot-b8c2461e-1.mjs",".agent-bundle-virtual/mcp-grok-bot-b8c2461e-2.mjs","src/core/relay/managed.js"],"kind":"builtin","request":"node:url","userRequest":"node:url"},{"externalType":"module","issuers":["node_modules/agent-bundle/dist/mcp-server-runtime.js"],"kind":"builtin","request":"node:worker_threads","userRequest":"node:worker_threads"},{"externalType":"node-commonjs","issuers":["node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.development.js","node_modules/react-server-dom-rspack/cjs/react-server-dom-rspack-client.node.production.js"],"kind":"builtin","request":"util","userRequest":"util"}],"packages":["@agent-bundle/runtime","@modelcontextprotocol/core","@modelcontextprotocol/server","agent-bundle","effect","react","react-dom","react-server-dom-rspack","rsc-markdown-stream","zod"],"path":"mcp/mcp-grok-bot-b8c2461e.mjs","sha256":"f8f9ecc1690599f7241d805e9097cb6231accb0b72d83e2acd289beec14ef474"},{"externals":[{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/state.js"],"kind":"builtin","request":"node:assert/strict","userRequest":"node:assert/strict"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/736.js"],"kind":"builtin","request":"node:async_hooks","userRequest":"node:async_hooks"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/302.js"],"kind":"builtin","request":"node:buffer","userRequest":"node:buffer"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js"],"kind":"builtin","request":"node:child_process","userRequest":"node:child_process"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/state/sqlite.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/gateway.js","src/core/relay/codex.js","src/core/relay/control.js","src/core/relay/engine.js","src/core/relay/profile.js","src/core/relay/records.js","src/core/relay/state.js","src/core/store.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/state/sqlite.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/codex/conversation.js","src/core/desktop-shim.js","src/core/relay/codex.js","src/core/store.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["src/core/relay/ownership.js","src/core/relay/state.js","src/core/relay/worker.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/codex-bridge.js","src/core/relay/control.js","src/core/relay/ownership.js","src/core/relay/worker.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/engine.js","src/core/relay/profile.js","src/core/store.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/state/sqlite.js","src/core/app-session.js","src/core/codex-bridge.js","src/core/desktop-shim.js","src/core/relay/engine.js","src/core/relay/ownership.js","src/core/relay/profile.js","src/core/relay/state.js","src/core/store.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"import","issuers":["src/core/relay/ownership.js"],"kind":"builtin","request":"node:sqlite","userRequest":"node:sqlite"},{"externalType":"module","issuers":["node_modules/@agent-bundle/runtime/dist/state/sqlite.js"],"kind":"builtin","request":"node:sqlite","userRequest":"node:sqlite"},{"externalType":"module","issuers":["src/core/relay/control.js","src/core/relay/worker.js"],"kind":"builtin","request":"node:string_decoder","userRequest":"node:string_decoder"}],"packages":["@agent-bundle/runtime","effect","react","zod"],"path":"scripts/gbot-relay.mjs","sha256":"09d72decd709c6bb1d6038d7f6760e4c10aaef0ecc5749c35bbe6163ba44b616"}],"coverage":{"rewritable":false,"unobserved":["import(<expression>)","require(<expression>)","require.resolve(…)","createRequire(…)(…)","import.meta.resolve(…)"]},"policy":{"name":"closed-world-externals","revision":1},"producer":{"name":"agent-bundle","rspack":"2.2.4","version":"0.2.0"}}
|