grok-bot-cli 0.8.0 → 0.10.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 CHANGED
@@ -1,5 +1,35 @@
1
1
  # grok-bot-cli
2
2
 
3
+ ## 0.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - a619538: Add an opt-in native Claude Code channel, with private local messaging and correlated replies through `gbot claude send` and `claude_send`.
8
+
9
+ ### Patch Changes
10
+
11
+ - 75521df: Update agent-bundle to the 0.3.1 release preview (899755dc6d) and rebuild the plugin artifact.
12
+ - 3f64ac2: Update agent-bundle to b4e38409f4 so generated executables no longer ship bundled dependencies' comments.
13
+ - 872eb61: Reduce the messaging skill's default context by loading bridge administration and diagnostic procedures only when needed.
14
+ - 657ed43: Update the Claude channel MCP server SDK to 2.1.0.
15
+
16
+ ## 0.9.1
17
+
18
+ ### Patch Changes
19
+
20
+ - f2482eb: Build the plugin with the agent-bundle 0.3.0 pkg.pr.new preview (4f62216f30).
21
+ - c49a0b8: Ship generated host marketplaces and the complete Agent Bundle artifact in the GitHub repository so Codex, Claude Code, and Cursor can install it without a local build.
22
+
23
+ ## 0.9.0
24
+
25
+ ### Minor Changes
26
+
27
+ - a1031eb: Add `gbot skills list|add|remove` for the account-wide Grok Bot skill library over the gateway (`getAgentWorkflows`, `importAgentWorkflowText`, `deleteAgentWorkflow`). Grok Bot has no per-bot skill attach: `add` makes a `SKILL.md` visible to every bot, `remove` deletes a `workflow` skill for every bot and refuses `managed`, `plugin`, and `automation` entries. Skills have no `--files` mode.
28
+
29
+ ### Patch Changes
30
+
31
+ - fde32cd: Preserve nested Codex MCP overrides when the generated installer replaces an enabled plugin. Refuse replacement when plugin-level enablement is disabled or unknown.
32
+
3
33
  ## 0.8.0
4
34
 
5
35
  ### Minor Changes
package/README.md CHANGED
@@ -29,6 +29,9 @@ gbot send Researcher "Summarize the launch status."
29
29
  gbot send Launch "Share your updates."
30
30
  gbot thread Researcher
31
31
  gbot thread Researcher --after <last-entry-id> --json
32
+ gbot skills list
33
+ gbot skills add ./skills/poteto-mode
34
+ gbot skills remove poteto-mode
32
35
  gbot groups delete Launch
33
36
  gbot bots delete Researcher
34
37
  gbot bots delete Writer
@@ -36,6 +39,15 @@ gbot bots delete Writer
36
39
 
37
40
  `update` fields: `--name` `--description` `--title` `--avatar-shape` `--avatar-color` `--notify on|off` `--hidden on|off`. `--description` is the UI Instructions field.
38
41
 
42
+ `gbot skills` manages the skill library over the gateway. Grok Bot keeps one
43
+ library per account; every bot reads the same list, and there is no per-bot
44
+ attach. `add` posts a `SKILL.md` (or a directory holding one) and every bot sees
45
+ it. `list` shows each entry's `source`: `workflow` is your library, `managed` is
46
+ team-published, `plugin` comes from a marketplace install, `automation` is a
47
+ scheduled routine. `remove` deletes a `workflow` skill by id or exact name, for
48
+ every bot, and refuses the other sources. Adding the same file twice yields two
49
+ same-named skills; remove by id then. There is no `--files` mode for skills.
50
+
39
51
  `gbot thread --after ID` filters the bounded tail locally and returns entries strictly
40
52
  after that opaque entry ID. Its JSON includes `cursor`, `entryCount`, and `gapReset`.
41
53
  An unchanged poll has `entryCount: 0`; an unknown or expired ID returns one bounded
@@ -47,6 +59,45 @@ Options are command-local (for example, `gbot send --history-dir DIR ...`);
47
59
  a JSON document on stdout with `exitCode` (see below), every other command
48
60
  prints the failure message on stderr and exits 1.
49
61
 
62
+ ## Messaging a live Claude Code session
63
+
64
+ Claude Code has a native [Channels API](https://code.claude.com/docs/en/channels-reference),
65
+ so this integration needs no desktop shim. The Claude plugin includes an opt-in
66
+ `claude-channel` MCP server; Codex and Grok callers can use `claude_send`, or the
67
+ local CLI, to send a message and receive Claude's explicit reply.
68
+
69
+ After installing this version of the Claude plugin, launch a named session:
70
+
71
+ ```sh
72
+ GROK_BOT_CLAUDE_CHANNEL=review claude --dangerously-load-development-channels plugin:gbot@gbot-marketplace
73
+ # From another terminal on the same machine and user account:
74
+ gbot claude send review "Reply with GBOT_CLAUDE_OK" --json
75
+ ```
76
+
77
+ Accept Claude's development-channel prompt. Custom channels are a research preview
78
+ and require session opt-in and any applicable organization policy. Claude must be
79
+ signed in. The development flag permits this channel; it does not bypass tool
80
+ approvals. `claude_send` takes `name`, `message`, and optional `timeoutMs` (default
81
+ 60000, maximum 120000). Claude uses `claude_reply` with the incoming `request_id`.
82
+ Only that explicit reply completes the call; a notification alone is not proof
83
+ Claude received or processed the message. Timeout/disconnect returns `unknown`;
84
+ do not automatically resend.
85
+
86
+ Each name selects one live session. Sockets live under `~/.grok-bot-cli/claude/`
87
+ in a user-owned 0700 directory, with mode 0600 sockets. Access grants messaging
88
+ to local processes running as the same user. No TCP listener, automatic permission
89
+ approval, conversation-history scraping, or background daemon is installed.
90
+ Without `GROK_BOT_CLAUDE_CHANNEL`, the channel is disabled. Shut down the owning
91
+ Claude session to close it. A crashed process may leave a socket: confirm the
92
+ named session is stopped before removing that socket and restarting. A second
93
+ session with the same name fails rather than taking over the first.
94
+
95
+ This targets opted-in Claude Code sessions, not arbitrary existing sessions or
96
+ ordinary Claude Desktop chats. Remote Grok runtimes need local tool execution to
97
+ reach the socket; installing an MCP artifact does not establish that connection.
98
+ Claude can use the existing `gbot_send`/`gbot_thread` and `codex_send` tools for
99
+ outgoing messages; its own tool permissions still apply.
100
+
50
101
  ## Automatic Grok ↔ Codex replies
51
102
 
52
103
  In a native Codex invocation, `gbot_send` sends once and returns a durable exchange
@@ -205,6 +256,20 @@ Codex conversation, and managed bridge tools, plus a `talk-to-grok-bot` skill.
205
256
  The tools bundle this repository's gateway client and worker, so the installed
206
257
  plugin does not need `gbot` on `PATH`.
207
258
 
259
+ Install the committed bundle directly from GitHub without cloning or building it:
260
+
261
+ ```sh
262
+ codex plugin marketplace add ScriptedAlchemy/grok-bot-cli
263
+ codex plugin add gbot@gbot-marketplace
264
+
265
+ claude plugin marketplace add ScriptedAlchemy/grok-bot-cli
266
+ claude plugin install gbot@gbot-marketplace
267
+ ```
268
+
269
+ Cursor users can add `https://github.com/ScriptedAlchemy/grok-bot-cli` as a
270
+ marketplace repository from Customize → Plugins. The repository-root host
271
+ marketplaces all point at the committed `artifact/` bundle.
272
+
208
273
  Install the bundled host projections from the same npm package:
209
274
 
210
275
  ```sh
@@ -1 +1 @@
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.8.0"}]}
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.10.0"}]}
@@ -1 +1 @@
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.8.0"}
1
+ {"author":{"name":"gbot"},"channels":[{"server":"claude-channel"}],"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","name":"gbot","version":"0.10.0"}
@@ -1 +1 @@
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.8.0"}
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.10.0"}
@@ -1 +1 @@
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.8.0"}
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.10.0"}
package/dist/.mcp.json CHANGED
@@ -1 +1 @@
1
- {"mcpServers":{"grok-bot":{"args":["${CLAUDE_PLUGIN_ROOT}/mcp/mcp-grok-bot-b8c2461e.mjs"],"command":"node","env":{"AGENT_BUNDLE_PLUGIN_ROOT":"${CLAUDE_PLUGIN_ROOT}"},"type":"stdio"}}}
1
+ {"mcpServers":{"claude-channel":{"args":["${CLAUDE_PLUGIN_ROOT}/mcp/mcp-claude-channel-8029413c.mjs"],"command":"node","env":{"AGENT_BUNDLE_PLUGIN_ROOT":"${CLAUDE_PLUGIN_ROOT}"},"type":"stdio"},"grok-bot":{"args":["${CLAUDE_PLUGIN_ROOT}/mcp/mcp-grok-bot-b8c2461e.mjs"],"command":"node","env":{"AGENT_BUNDLE_PLUGIN_ROOT":"${CLAUDE_PLUGIN_ROOT}"},"type":"stdio"}}}
package/dist/AGENTS.md ADDED
@@ -0,0 +1,12 @@
1
+ # Agent instructions
2
+
3
+ Publish exclusively through `.github/workflows/release.yml` with GitHub OIDC.
4
+ Its package release script is a workflow entrypoint: never publish locally,
5
+ request npm publishing tokens/login, or troubleshoot local publishing auth.
6
+ Use the existing Changesets flow and verify Actions plus the registry before
7
+ updating installations.
8
+
9
+ Delete dead code, obsolete scripts, duplicate workarounds, and unused legacy
10
+ installs. Check active owners/references first; preserve auth, operator env,
11
+ durable data, and intentional duplicate suppression. Prefer existing helpers,
12
+ stdlib, and native features over new wrappers or fallback frameworks.
package/dist/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.
4
4
 
5
- Version: `0.8.0`
5
+ Version: `0.10.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
@@ -33,7 +33,7 @@ claude plugin install gbot@gbot-marketplace --scope user
33
33
 
34
34
  With the optional `agent-bundle` CLI, `agent-bundle install claude --from ./` runs this sequence
35
35
  automatically when the installed copy has the same version but a different content hash; `--replace`
36
- (alias `--force`) forces it.
36
+ forces it.
37
37
 
38
38
  ### Uninstall
39
39
 
@@ -42,7 +42,7 @@ claude plugin uninstall gbot@gbot-marketplace --scope user --keep-data
42
42
  ```
43
43
 
44
44
  Match the scope the plugin was installed with (`user`, `project`, or `local`). `--keep-data` keeps durable
45
- runtime state (Claude orphans the cached copy, `state/` included, for its ~14-day grace period); omit it to
45
+ runtime state (Claude orphans the cached copy for its ~14-day grace period); omit it to
46
46
  remove `~/.claude/plugins/data/<id>/` immediately.
47
47
 
48
48
  The marketplace `gbot-marketplace` stays registered. Remove it only when nothing else installs from it:
@@ -61,9 +61,10 @@ would be removed and `agent-bundle uninstall claude --from ./` reverses the reco
61
61
  (or under `$CLAUDE_CONFIG_DIR`; `user` is the install scope, pass `--scope project` or `--scope local` to match
62
62
  a scoped install), and `uninstall` consumes it, running the two commands above in order and retaining the
63
63
  marketplace while any other plugin, scope, or project still installs from it. Durable runtime state
64
- is kept by default; `--purge-data --confirm-purge` removes `state/` and `~/.claude/plugins/data/<id>/`
65
- immediately. A missing receipt or a cached copy that no longer matches it is refused unless `--force`; a
66
- second run is a `not-installed` no-op.
64
+ is kept by default; `--purge-data --confirm-purge` removes the receipt-owned state roots and
65
+ `~/.claude/plugins/data/<id>/` immediately. A missing receipt or a cached copy that no longer matches it is refused unless `--force`;
66
+ `--purge-data --confirm-purge` without a receipt is refused even with `--force` (`AB7009`); a second run is a
67
+ `not-installed` no-op.
67
68
 
68
69
  ## Codex
69
70
 
@@ -76,18 +77,23 @@ codex plugin add gbot@gbot-marketplace
76
77
 
77
78
  ### Reinstall after a same-version rebuild
78
79
 
79
- `codex plugin add` re-copies the marketplace snapshot but never deletes files a rebuild removed.
80
- Remove and add again for a clean same-version copy:
80
+ `codex plugin add` re-copies the marketplace snapshot and keeps plugin settings in `config.toml`.
81
+ `codex plugin remove` deletes that settings subtree, including nested MCP overrides, so a same-version
82
+ refresh is add-only:
81
83
 
82
84
  ```sh
83
- codex plugin remove gbot@gbot-marketplace
84
85
  codex plugin marketplace add ./
85
86
  codex plugin add gbot@gbot-marketplace
86
87
  ```
87
88
 
89
+ Native add resets a plugin-level `enabled = false` to `true`.
90
+ The native plugin CLI has no qualified settings-preserving update API, so the optional
91
+ `agent-bundle install` refuses replacement when `plugin list --json` reports `enabled: false`
92
+ or omits `enabled` (`AB7004`) and leaves that install unchanged. Enable the plugin in Codex first, then rerun.
93
+
88
94
  With the optional `agent-bundle` CLI, `agent-bundle install codex --from ./` runs this sequence
89
95
  automatically when the installed copy has the same version but a different content hash; `--replace`
90
- (alias `--force`) forces it.
96
+ forces it.
91
97
 
92
98
  ### Uninstall
93
99
 
@@ -95,8 +101,7 @@ automatically when the installed copy has the same version but a different conte
95
101
  codex plugin remove gbot@gbot-marketplace
96
102
  ```
97
103
 
98
- Codex 0.147.0 deletes the cached plugin tree, `state/` included, on `plugin remove` and has no keep-data
99
- option.
104
+ Codex 0.147.0 deletes the cached plugin tree on `plugin remove` and has no keep-data option.
100
105
 
101
106
  The marketplace `gbot-marketplace` stays registered. Remove it only when nothing else installs from it:
102
107
  `codex plugin list` shows every other plugin from it.
@@ -109,8 +114,10 @@ With the optional `agent-bundle` CLI, `agent-bundle uninstall codex --from ./ --
109
114
  would be removed and `agent-bundle uninstall codex --from ./` reverses the recorded registrations.
110
115
  `agent-bundle install codex` records a receipt at `~/.codex/agent-bundle/receipts/gbot.gbot-marketplace.user.json` (or
111
116
  under `$CODEX_HOME`), and `uninstall` consumes it, running the two commands above in order. `--keep-data`
112
- cannot preserve durable state on Codex; the result says so (`unavailable`). A missing receipt or a cached
113
- copy that no longer matches it is refused unless `--force`; a second run is a `not-installed` no-op.
117
+ keeps the framework state roots the receipt records outside the cached tree (`kept`); with nothing there the
118
+ result says so (`unavailable`). A missing receipt or a cached
119
+ copy that no longer matches it is refused unless `--force`; `--purge-data --confirm-purge` without a receipt is
120
+ refused even with `--force` (`AB7009`); a second run is a `not-installed` no-op.
114
121
 
115
122
  ## Cursor
116
123
 
@@ -132,37 +139,38 @@ manifest-declared `hooks/hooks.json` from that directory; plugin hooks run from
132
139
  The installer writes an install receipt (`.agent-bundle-install.json`: plugin, version, content hash,
133
140
  owned files) beside the plugin manifest. Re-running `node ./install.mjs` on an identical artifact
134
141
  is a no-op that says so. When the installed copy has the same version but different content, the
135
- installer replaces its owned files in place and leaves runtime state (`state/`) untouched:
142
+ installer replaces its owned files in place and leaves unowned entries untouched:
136
143
 
137
144
  ```sh
138
145
  node ./install.mjs # same-version content drift of a receipt-managed copy is replaced
139
- node ./install.mjs --replace # also replace a different installed version, or adopt a pre-receipt copy
146
+ node ./install.mjs --replace # also replace a different installed version
140
147
  ```
141
148
 
142
- `--force` is an alias for `--replace`. A directory that is not an agent-bundle install of this
143
- plugin is always refused with an installed-versus-artifact content-hash comparison; remove it
144
- manually. The optional `agent-bundle` CLI applies the same policy through
149
+ A directory without a receipt naming this plugin (including a copy placed before install receipts
150
+ existed) is foreign and always refused with an installed-versus-artifact content-hash comparison;
151
+ remove it manually and reinstall. The optional `agent-bundle` CLI applies the same policy through
145
152
  `agent-bundle install cursor --from ./ [--replace]`.
146
153
 
147
154
  ### Uninstall
148
155
 
149
156
  ```sh
150
157
  node ./install.mjs --uninstall --plan # print exactly what would be removed
151
- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
152
- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
158
+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
159
+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
153
160
  node ./install.mjs --uninstall --mode marketplace # remove a staged marketplace repository
154
161
  ```
155
162
 
156
163
  Uninstall removes exactly what the receipt owns: the listed files, the directories the installer
157
164
  created (including `~/.cursor/plugins/local` when the installer made it), and nothing else. Durable
158
- runtime state under `state/` (state kernel, notices journal) — and, for an Agent Plugins pack with a stdio
159
- server, the `~/.cursor/agent-bundle/plugin-data/<name>` directory the receipt records as `PLUGIN_DATA` — is kept
160
- unless `--purge-data --confirm-purge` is passed (a kept data directory leaves a remnant receipt behind so a later
161
- purge still finds it; an empty one is pruned); unowned files are left in place and listed. A supported older
162
- receipt with no recorded state location retains the current environment's default as unproven; a keep-data run
163
- cannot turn that observation into later purge authority. A directory without a receipt is refused unless
164
- `--force` (which removes a pre-receipt legacy copy by its inventory); owned content that no longer matches
165
- the receipt is refused unless `--force`; a directory that is not this plugin's install is always refused.
165
+ runtime state (the framework state roots the receipt records with ownership evidence) — and, for an Agent
166
+ Plugins pack with a stdio server, the `~/.cursor/agent-bundle/plugin-data/<name>` directory the receipt records
167
+ as `PLUGIN_DATA` — is kept unless `--purge-data --confirm-purge` is passed (a kept data directory leaves a
168
+ remnant receipt behind so a later purge still finds it; an empty one is pruned); unowned entries, including a
169
+ `state/` directory beside the plugin, are left in place and listed. A receipt with no recorded state location
170
+ (written before the install could record it) retains the current environment's default as unproven; a
171
+ keep-data run cannot turn that observation into later purge authority. A directory without a receipt naming
172
+ this plugin is foreign and always refused, with or without `--force`; owned content that no longer matches
173
+ the receipt is refused unless `--force`.
166
174
  A second run is a `Not installed` no-op. With the optional `agent-bundle` CLI,
167
175
  `agent-bundle uninstall cursor --from ./ [--mode marketplace]` applies the same policy, and
168
176
  `agent-bundle doctor --from ./` shows the lifecycle stage (placed, registered, enabled, active) with
@@ -249,21 +257,21 @@ other clients; the recorded clients above name which of them expand the placehol
249
257
  ### Reinstall after a same-version rebuild
250
258
 
251
259
  The installer records an install receipt (`.agent-bundle-install.json`) and replaces its owned files in
252
- place when the same version was rebuilt with different content; runtime state (`state/`) is never
253
- touched. Pass `--replace` (alias `--force`) to replace a different installed version or to adopt a
254
- copy installed before receipts existed. Foreign directories are refused with a content-hash
255
- comparison. For a client that manages its own copy, remove and re-add the plugin through that client
256
- when only content changed at the same version.
260
+ place when the same version was rebuilt with different content; unowned entries are never
261
+ touched. Pass `--replace` to replace a different installed version. A directory without a receipt
262
+ naming this plugin (including a copy installed before receipts existed) is foreign and refused with a
263
+ content-hash comparison; remove it manually. For a client that manages its own copy, remove and re-add
264
+ the plugin through that client when only content changed at the same version.
257
265
 
258
266
  ### Uninstall
259
267
 
260
268
  ```sh
261
269
  node ./install.mjs --uninstall --plan # print exactly what would be removed
262
- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
263
- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
270
+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
271
+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
264
272
  ```
265
273
 
266
274
  Uninstall removes exactly what the receipt owns (files, installer-created directories) and keeps
267
- durable runtime state under `state/` (and the recorded `PLUGIN_DATA` directory of an Agent Plugins pack)
268
- unless `--purge-data --confirm-purge` is passed. A missing
269
- receipt or modified owned content is refused unless `--force`; foreign directories are always refused.
275
+ the durable runtime state the receipt records (and the recorded `PLUGIN_DATA` directory of an Agent Plugins
276
+ pack) unless `--purge-data --confirm-purge` is passed. Modified owned content is refused unless `--force`;
277
+ a directory without a receipt naming this plugin is foreign and always refused.
package/dist/README.md CHANGED
@@ -29,6 +29,9 @@ gbot send Researcher "Summarize the launch status."
29
29
  gbot send Launch "Share your updates."
30
30
  gbot thread Researcher
31
31
  gbot thread Researcher --after <last-entry-id> --json
32
+ gbot skills list
33
+ gbot skills add ./skills/poteto-mode
34
+ gbot skills remove poteto-mode
32
35
  gbot groups delete Launch
33
36
  gbot bots delete Researcher
34
37
  gbot bots delete Writer
@@ -36,6 +39,15 @@ gbot bots delete Writer
36
39
 
37
40
  `update` fields: `--name` `--description` `--title` `--avatar-shape` `--avatar-color` `--notify on|off` `--hidden on|off`. `--description` is the UI Instructions field.
38
41
 
42
+ `gbot skills` manages the skill library over the gateway. Grok Bot keeps one
43
+ library per account; every bot reads the same list, and there is no per-bot
44
+ attach. `add` posts a `SKILL.md` (or a directory holding one) and every bot sees
45
+ it. `list` shows each entry's `source`: `workflow` is your library, `managed` is
46
+ team-published, `plugin` comes from a marketplace install, `automation` is a
47
+ scheduled routine. `remove` deletes a `workflow` skill by id or exact name, for
48
+ every bot, and refuses the other sources. Adding the same file twice yields two
49
+ same-named skills; remove by id then. There is no `--files` mode for skills.
50
+
39
51
  `gbot thread --after ID` filters the bounded tail locally and returns entries strictly
40
52
  after that opaque entry ID. Its JSON includes `cursor`, `entryCount`, and `gapReset`.
41
53
  An unchanged poll has `entryCount: 0`; an unknown or expired ID returns one bounded
@@ -47,6 +59,45 @@ Options are command-local (for example, `gbot send --history-dir DIR ...`);
47
59
  a JSON document on stdout with `exitCode` (see below), every other command
48
60
  prints the failure message on stderr and exits 1.
49
61
 
62
+ ## Messaging a live Claude Code session
63
+
64
+ Claude Code has a native [Channels API](https://code.claude.com/docs/en/channels-reference),
65
+ so this integration needs no desktop shim. The Claude plugin includes an opt-in
66
+ `claude-channel` MCP server; Codex and Grok callers can use `claude_send`, or the
67
+ local CLI, to send a message and receive Claude's explicit reply.
68
+
69
+ After installing this version of the Claude plugin, launch a named session:
70
+
71
+ ```sh
72
+ GROK_BOT_CLAUDE_CHANNEL=review claude --dangerously-load-development-channels plugin:gbot@gbot-marketplace
73
+ # From another terminal on the same machine and user account:
74
+ gbot claude send review "Reply with GBOT_CLAUDE_OK" --json
75
+ ```
76
+
77
+ Accept Claude's development-channel prompt. Custom channels are a research preview
78
+ and require session opt-in and any applicable organization policy. Claude must be
79
+ signed in. The development flag permits this channel; it does not bypass tool
80
+ approvals. `claude_send` takes `name`, `message`, and optional `timeoutMs` (default
81
+ 60000, maximum 120000). Claude uses `claude_reply` with the incoming `request_id`.
82
+ Only that explicit reply completes the call; a notification alone is not proof
83
+ Claude received or processed the message. Timeout/disconnect returns `unknown`;
84
+ do not automatically resend.
85
+
86
+ Each name selects one live session. Sockets live under `~/.grok-bot-cli/claude/`
87
+ in a user-owned 0700 directory, with mode 0600 sockets. Access grants messaging
88
+ to local processes running as the same user. No TCP listener, automatic permission
89
+ approval, conversation-history scraping, or background daemon is installed.
90
+ Without `GROK_BOT_CLAUDE_CHANNEL`, the channel is disabled. Shut down the owning
91
+ Claude session to close it. A crashed process may leave a socket: confirm the
92
+ named session is stopped before removing that socket and restarting. A second
93
+ session with the same name fails rather than taking over the first.
94
+
95
+ This targets opted-in Claude Code sessions, not arbitrary existing sessions or
96
+ ordinary Claude Desktop chats. Remote Grok runtimes need local tool execution to
97
+ reach the socket; installing an MCP artifact does not establish that connection.
98
+ Claude can use the existing `gbot_send`/`gbot_thread` and `codex_send` tools for
99
+ outgoing messages; its own tool permissions still apply.
100
+
50
101
  ## Automatic Grok ↔ Codex replies
51
102
 
52
103
  In a native Codex invocation, `gbot_send` sends once and returns a durable exchange
@@ -205,6 +256,20 @@ Codex conversation, and managed bridge tools, plus a `talk-to-grok-bot` skill.
205
256
  The tools bundle this repository's gateway client and worker, so the installed
206
257
  plugin does not need `gbot` on `PATH`.
207
258
 
259
+ Install the committed bundle directly from GitHub without cloning or building it:
260
+
261
+ ```sh
262
+ codex plugin marketplace add ScriptedAlchemy/grok-bot-cli
263
+ codex plugin add gbot@gbot-marketplace
264
+
265
+ claude plugin marketplace add ScriptedAlchemy/grok-bot-cli
266
+ claude plugin install gbot@gbot-marketplace
267
+ ```
268
+
269
+ Cursor users can add `https://github.com/ScriptedAlchemy/grok-bot-cli` as a
270
+ marketplace repository from Customize → Plugins. The repository-root host
271
+ marketplaces all point at the committed `artifact/` bundle.
272
+
208
273
  Install the bundled host projections from the same npm package:
209
274
 
210
275
  ```sh
@@ -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/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":"413be2850a0a32c23c24981e216ad0593319340ee72bfac514005a238dde8460"},{"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":"179f3818fea1b87618e8dc2f66391077b4e5d9935d83dc59a9eedd7b146c2294"},{"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":"f50ecbfa83f2cdb8075bc66a4944d89f06aa18aa318050549124cef25094c034"},{"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":"f283a515c549cdf3a657b030b4279cf94f678de13e573a3e11fe713f73e88918"},{"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":"6ea9693852097360e11115c2c75a2eb26303bfec5df14a75e078e345482f791b"}],"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.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"],"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/claude-channel.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/cli/skills/add.tsx","src/core/claude-channel.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/claude-channel.js","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/claude-channel.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/cli/skills/add.tsx","src/core/app-session.js","src/core/claude-channel.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":"4ce450cd822249304791846147a90ef18819b9e383be914198e442e15d7a33fb"},{"externals":[{"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/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/claude-channel.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/cli/skills/add.tsx","src/core/claude-channel.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/claude-channel.js","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/claude-channel.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/cli/skills/add.tsx","src/core/app-session.js","src/core/claude-channel.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":"6f63f02f55fdc97b3b96be15d0e0abe3f5802c53c176b2440bdca2312fb3a98c"},{"externals":[{"externalType":"module","issuers":["src/core/claude-channel.js"],"kind":"builtin","request":"node:crypto","userRequest":"node:crypto"},{"externalType":"module","issuers":["node_modules/agent-bundle/dist/launch-env.js"],"kind":"builtin","request":"node:fs","userRequest":"node:fs"},{"externalType":"module","issuers":["src/core/claude-channel.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/claude-channel.js"],"kind":"builtin","request":"node:net","userRequest":"node:net"},{"externalType":"module","issuers":["src/core/claude-channel.js"],"kind":"builtin","request":"node:os","userRequest":"node:os"},{"externalType":"module","issuers":["node_modules/agent-bundle/dist/launch-env.js","src/core/claude-channel.js"],"kind":"builtin","request":"node:path","userRequest":"node:path"},{"externalType":"module","issuers":["node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs","node_modules/agent-bundle/node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs"],"kind":"builtin","request":"node:process","userRequest":"node:process"},{"externalType":"module","issuers":[".agent-bundle-virtual/mcp-claude-channel-8029413c-1.mjs"],"kind":"builtin","request":"node:url","userRequest":"node:url"}],"packages":["@modelcontextprotocol/core","@modelcontextprotocol/server","agent-bundle","zod"],"path":"mcp/mcp-claude-channel-8029413c.mjs","sha256":"740b63c0bef153a4784d9d17838b843ebfef48236a161e65da5eac5064bef3fe"},{"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"],"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/claude-channel.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/claude-channel.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/claude-channel.js","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/claude-channel.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/claude-channel.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":"c6e0be05ca76385cd3011ac85566408b876866b2d4d0fde94615c00c0027deea"},{"externals":[{"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","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/claude-channel.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/claude-channel.js","src/core/relay/managed.js"],"kind":"builtin","request":"node:fs/promises","userRequest":"node:fs/promises"},{"externalType":"module","issuers":["src/core/claude-channel.js","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/claude-channel.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/claude-channel.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/agent-bundle/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":"6ec9661fe2d3f1204711ad749c37277c25c07ee36200a5fea34fa69a3ef85f91"},{"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","zod"],"path":"scripts/gbot-relay.mjs","sha256":"559f41cb682a15737f59adf6ef6116b1cb49988fce7d05d55257ce49a4e6cd17"}],"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.3.1"}}