@hiai-gg/hiai-opencode 0.1.5 → 0.1.6

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.
Files changed (67) hide show
  1. package/.env.example +14 -8
  2. package/AGENTS.md +14 -5
  3. package/LICENSE.md +0 -1
  4. package/README.md +42 -23
  5. package/assets/cli/hiai-opencode.mjs +590 -7
  6. package/assets/mcp/mempalace.mjs +159 -25
  7. package/config/hiai-opencode.schema.json +13 -2
  8. package/dist/agents/dynamic-agent-core-sections.d.ts +4 -1
  9. package/dist/agents/dynamic-agent-prompt-builder.d.ts +1 -1
  10. package/dist/config/platform-schema.d.ts +2 -6
  11. package/dist/config/schema/commands.d.ts +1 -0
  12. package/dist/config/schema/oh-my-opencode-config.d.ts +1 -3
  13. package/dist/config/types.d.ts +1 -3
  14. package/dist/features/builtin-commands/templates/doctor.d.ts +1 -0
  15. package/dist/features/builtin-commands/types.d.ts +1 -1
  16. package/dist/features/builtin-skills/skills/hiai-opencode-setup.d.ts +2 -0
  17. package/dist/features/builtin-skills/skills/index.d.ts +1 -0
  18. package/dist/index.js +348 -1424
  19. package/dist/shared/mcp-static-export.d.ts +22 -0
  20. package/dist/tools/ast-grep/constants.d.ts +1 -1
  21. package/dist/tools/ast-grep/environment-check.d.ts +1 -5
  22. package/dist/tools/ast-grep/language-support.d.ts +0 -1
  23. package/dist/tools/ast-grep/types.d.ts +1 -2
  24. package/hiai-opencode.json +4 -2
  25. package/package.json +6 -4
  26. package/src/agents/bob/default.ts +6 -1
  27. package/src/agents/bob/gpt-pro.ts +1 -0
  28. package/src/agents/bob.ts +1 -0
  29. package/src/agents/coder/gpt-codex.ts +1 -0
  30. package/src/agents/coder/gpt-pro.ts +1 -0
  31. package/src/agents/coder/gpt.ts +1 -0
  32. package/src/agents/dynamic-agent-core-sections.ts +36 -0
  33. package/src/agents/dynamic-agent-prompt-builder.ts +1 -0
  34. package/src/config/defaults.ts +14 -1
  35. package/src/config/model-slots-and-export.test.ts +55 -0
  36. package/src/config/platform-schema.ts +1 -3
  37. package/src/config/schema/commands.ts +1 -0
  38. package/src/config/schema/oh-my-opencode-config.ts +0 -3
  39. package/src/config/types.ts +1 -3
  40. package/src/features/builtin-commands/commands.ts +7 -0
  41. package/src/features/builtin-commands/templates/doctor.ts +43 -0
  42. package/src/features/builtin-commands/types.ts +1 -1
  43. package/src/features/builtin-skills/skills/hiai-opencode-setup.ts +69 -0
  44. package/src/features/builtin-skills/skills/index.ts +1 -0
  45. package/src/features/builtin-skills/skills.ts +10 -1
  46. package/src/index.ts +3 -75
  47. package/src/shared/mcp-static-export.ts +121 -0
  48. package/src/tools/ast-grep/constants.ts +1 -1
  49. package/src/tools/ast-grep/environment-check.ts +2 -32
  50. package/src/tools/ast-grep/language-support.ts +0 -3
  51. package/src/tools/ast-grep/types.ts +1 -2
  52. package/src/tools/skill-mcp/tools.test.ts +44 -0
  53. package/dist/ast-grep-napi.win32-x64-msvc-67c0y8nc.node +0 -0
  54. package/dist/config/loader.test.d.ts +0 -1
  55. package/dist/config/models.d.ts +0 -13
  56. package/dist/internals/plugins/websearch-cited/google.d.ts +0 -38
  57. package/dist/internals/plugins/websearch-cited/index.d.ts +0 -17
  58. package/dist/internals/plugins/websearch-cited/openai.d.ts +0 -9
  59. package/dist/internals/plugins/websearch-cited/openrouter.d.ts +0 -2
  60. package/dist/internals/plugins/websearch-cited/types.d.ts +0 -5
  61. package/src/internals/plugins/websearch-cited/LICENSE +0 -214
  62. package/src/internals/plugins/websearch-cited/codex_prompt.txt +0 -79
  63. package/src/internals/plugins/websearch-cited/google.ts +0 -749
  64. package/src/internals/plugins/websearch-cited/index.ts +0 -306
  65. package/src/internals/plugins/websearch-cited/openai.ts +0 -407
  66. package/src/internals/plugins/websearch-cited/openrouter.ts +0 -190
  67. package/src/internals/plugins/websearch-cited/types.ts +0 -7
package/.env.example CHANGED
@@ -11,14 +11,7 @@
11
11
  # - anthropic/claude-3-5-sonnet-latest
12
12
  #
13
13
  # Do not put model provider keys here for normal OpenCode usage.
14
- # Optional fallback only for headless/non-Connect workflows:
15
- # OPENROUTER_API_KEY=your_openrouter_api_key_here
16
- # OPENAI_API_KEY=your_openai_api_key_here
17
- # ANTHROPIC_API_KEY=your_anthropic_api_key_here
18
- # DEEPSEEK_API_KEY=your_deepseek_api_key_here
19
- # GLM_API_KEY=your_glm_api_key_here
20
- # MINIMAX_API_KEY=your_minimax_api_key_here
21
- # QWEN_API_KEY=your_qwen_api_key_here
14
+ # Connect model providers in OpenCode itself.
22
15
 
23
16
  # MCP Service Keys
24
17
 
@@ -58,6 +51,19 @@
58
51
  # Optional - if Linux system browser deps cannot be installed, edit hiai-opencode.json
59
52
  # and add Playwright MCP args such as "--browser", "chrome" to use an existing browser.
60
53
 
54
+ # Static MCP export
55
+
56
+ # Optional - controls automatic .mcp.json export when the plugin loads.
57
+ # Values: if-missing (default), always (managed files only), force, 0/false/no/off.
58
+ # HIAI_OPENCODE_AUTO_EXPORT_MCP=if-missing
59
+
60
+ # Optional - override static MCP export path.
61
+ # HIAI_OPENCODE_MCP_EXPORT_PATH=./.mcp.json
62
+
63
+ # Optional - CLI export safety mode.
64
+ # Values: safe (default), force
65
+ # HIAI_OPENCODE_EXPORT_MCP_MODE=safe
66
+
61
67
  # RAG MCP
62
68
 
63
69
  # Optional - RAG search tool endpoint
package/AGENTS.md CHANGED
@@ -66,9 +66,14 @@ Manual alternative:
66
66
 
67
67
  ```bash
68
68
  opencode debug config
69
+ hiai-opencode doctor
70
+ hiai-opencode mcp-status
71
+ hiai-opencode export-mcp .mcp.json
69
72
  opencode mcp list --print-logs --log-level INFO
70
73
  ```
71
74
 
75
+ `opencode mcp list` reads static `.mcp.json` files in many OpenCode versions. Runtime MCP servers launched by the plugin may work but not appear there until a static config exists. The plugin auto-exports `.mcp.json` on startup when missing. In `always` mode it overwrites only hiai-managed exports unless forced. `hiai-opencode export-mcp .mcp.json` can refresh it manually.
76
+
72
77
  ## Post-Install Bootstrap Instructions
73
78
 
74
79
  When a user asks OpenCode or another agent to finish installing this plugin, follow this procedure.
@@ -110,13 +115,15 @@ When a user asks OpenCode or another agent to finish installing this plugin, fol
110
115
  - `FIRECRAWL_API_KEY`
111
116
  - `STITCH_AI_API_KEY`
112
117
  - `CONTEXT7_API_KEY`
113
- - `GOOGLE_SEARCH_API_KEY`
114
118
  - `MEMPALACE_PYTHON`
115
119
  - `OPENCODE_RAG_URL`
116
120
  - `HIAI_PLAYWRIGHT_INSTALL_BROWSERS`
117
121
  - `HIAI_MCP_AUTO_INSTALL`
118
122
  7. Verify with:
119
123
  - `opencode debug config`
124
+ - `hiai-opencode doctor`
125
+ - `hiai-opencode mcp-status`
126
+ - `hiai-opencode export-mcp .mcp.json` when static MCP visibility is needed
120
127
  - `opencode mcp list --print-logs --log-level INFO`
121
128
 
122
129
  ### MCP Setup Matrix
@@ -126,7 +133,7 @@ When a user asks OpenCode or another agent to finish installing this plugin, fol
126
133
  | `playwright` | Node and npx are available | Helper launcher runs `@playwright/mcp@latest`; set `HIAI_PLAYWRIGHT_INSTALL_BROWSERS=1` to install Chromium on first start |
127
134
  | `sequential-thinking` | Node and npx are available | Helper launcher runs `@modelcontextprotocol/server-sequential-thinking` |
128
135
  | `firecrawl` | `FIRECRAWL_API_KEY` is set | Helper launcher runs `firecrawl-mcp` |
129
- | `mempalace` | `uv` is available, or Python 3.9+ with pip is available | Launcher prefers `uv`; otherwise uses Python and can run `python -m pip install --user mempalace` when `HIAI_MCP_AUTO_INSTALL` is not disabled |
136
+ | `mempalace` | `uv` is available, or Python 3.9+ with pip is available | Launcher prefers `uv`; otherwise uses Python and can run `python -m pip install --user mempalace` when `HIAI_MCP_AUTO_INSTALL` is not disabled. Interpreter can be pinned via `mcp.mempalace.pythonPath` or `MEMPALACE_PYTHON` |
130
137
  | `rag` | User has a local or remote RAG endpoint | Uses `OPENCODE_RAG_URL`, defaulting to `http://localhost:9002/tools/search` |
131
138
  | `stitch` | `STITCH_AI_API_KEY` is set | Remote MCP endpoint |
132
139
  | `context7` | User wants Context7 docs/search | Remote MCP endpoint; use `CONTEXT7_API_KEY` if available |
@@ -155,14 +162,14 @@ Check which services can run here:
155
162
  - playwright: node/npx; optionally HIAI_PLAYWRIGHT_INSTALL_BROWSERS=1.
156
163
  - sequential-thinking: node/npx.
157
164
  - firecrawl: FIRECRAWL_API_KEY.
158
- - mempalace: uv or Python 3.9+ with pip; MEMPALACE_PYTHON if needed; HIAI_MCP_AUTO_INSTALL controls first-run pip install.
165
+ - mempalace: uv or Python 3.9+ with pip; set `mcp.mempalace.pythonPath` (or `MEMPALACE_PYTHON`) if needed; `HIAI_MCP_AUTO_INSTALL` controls first-run pip install.
159
166
  - rag: OPENCODE_RAG_URL or http://localhost:9002/tools/search.
160
167
  - stitch: STITCH_AI_API_KEY.
161
168
  - context7: optional CONTEXT7_API_KEY.
162
169
 
163
170
  Report missing keys without printing secret values. Never invent or hardcode API keys.
164
171
 
165
- Run opencode debug config and opencode mcp list --print-logs --log-level INFO if available. If something is missing, propose or run only user-level/project-local install commands.
172
+ Run hiai-opencode mcp-status and opencode debug config. If the user wants opencode mcp list visibility, run hiai-opencode export-mcp .mcp.json before opencode mcp list --print-logs --log-level INFO. If something is missing, propose or run only user-level/project-local install commands.
166
173
  ```
167
174
 
168
175
  ## Expected Agent State
@@ -397,7 +404,6 @@ Common service keys:
397
404
  - `STITCH_AI_API_KEY`
398
405
  - `FIRECRAWL_API_KEY`
399
406
  - `CONTEXT7_API_KEY`
400
- - `GOOGLE_SEARCH_API_KEY`
401
407
  - `OLLAMA_BASE_URL`
402
408
  - `OLLAMA_MODEL`
403
409
  - `MEMPALACE_PYTHON`
@@ -405,6 +411,9 @@ Common service keys:
405
411
  - `OPENCODE_RAG_URL`
406
412
  - `HIAI_PLAYWRIGHT_INSTALL_BROWSERS`
407
413
  - `HIAI_MCP_AUTO_INSTALL`
414
+ - `HIAI_OPENCODE_AUTO_EXPORT_MCP`
415
+ - `HIAI_OPENCODE_MCP_EXPORT_PATH`
416
+ - `HIAI_OPENCODE_EXPORT_MCP_MODE`
408
417
 
409
418
  ## Known Runtime Caveats
410
419
 
package/LICENSE.md CHANGED
@@ -31,7 +31,6 @@ Some are:
31
31
  | Sequential Thinking | [modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers) | external MCP |
32
32
  | Firecrawl MCP | [firecrawl-ai/firecrawl-mcp-server](https://github.com/firecrawl-ai/firecrawl-mcp-server) | external MCP |
33
33
  | Context7 MCP | [upstash/context7-mcp](https://github.com/upstash/context7-mcp) | external MCP |
34
- | Websearch cited | [ghoulr/opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited) | search integration influence |
35
34
  | bun-pty / PTY ecosystem | [shekohex/opencode-pty](https://github.com/shekohex/opencode-pty) | PTY/runtime integration influence |
36
35
 
37
36
  ## What Is Bundled vs External
package/README.md CHANGED
@@ -31,7 +31,7 @@ Keep OpenCode plugins separate from MCP servers. Do not add MCP server packages
31
31
 
32
32
  Check which MCP services can run on this machine, update hiai-opencode.json, install only missing user-level or project-local dependencies, and report missing API keys without printing secret values.
33
33
 
34
- Then run opencode debug config and opencode mcp list --print-logs --log-level INFO if available.
34
+ Then run `hiai-opencode doctor`, `hiai-opencode mcp-status`, and `opencode debug config`.
35
35
  ```
36
36
 
37
37
  For the full operator playbook, see [AGENTS.md](AGENTS.md). 🤖
@@ -121,22 +121,22 @@ If you installed only from npm/OpenCode and do not have this repository checked
121
121
  ```json
122
122
  {
123
123
  "models": {
124
- "bob": { "model": "openrouter/anthropic/claude-3.5-opus", "recommended": "xhigh" },
125
- "coder": { "model": "openrouter/anthropic/claude-3.5-sonnet", "recommended": "high" },
126
- "strategist": { "model": "openrouter/z-ai/glm-5.1", "recommended": "high" },
127
- "guard": { "model": "openrouter/openai/gpt-4o", "recommended": "middle" },
128
- "critic": { "model": "openrouter/qwen/qwen2.5-72b-instruct", "recommended": "high" },
129
- "designer": { "model": "openrouter/google/gemini-3.1-pro", "recommended": "design" },
130
- "researcher": { "model": "openrouter/google/gemini-2.0-flash", "recommended": "fast" },
131
- "manager": { "model": "openrouter/google/gemini-2.0-flash", "recommended": "fast" },
132
- "brainstormer": { "model": "openrouter/kimi/kimi-latest", "recommended": "writing" },
133
- "vision": { "model": "openrouter/google/gemini-3.1-pro", "recommended": "vision" }
124
+ "bob": { "model": "openrouter/moonshotai/kimi-k2.6", "recommended": "xhigh" },
125
+ "coder": { "model": "openrouter/minimax/minimax-m2.7", "recommended": "high" },
126
+ "strategist": { "model": "openrouter/anthropic/claude-opus-latest", "recommended": "high" },
127
+ "guard": { "model": "openrouter/qwen/qwen3.6-plus", "recommended": "middle" },
128
+ "critic": { "model": "openrouter/xiaomi/mimo-v2.5-pro", "recommended": "high" },
129
+ "designer": { "model": "openrouter/google/gemini-3.1-pro-preview", "recommended": "design" },
130
+ "researcher": { "model": "openrouter/deepseek/deepseek-v4-flash", "recommended": "fast" },
131
+ "manager": { "model": "openrouter/qwen/qwen3.5-9b", "recommended": "fast" },
132
+ "brainstormer": { "model": "openrouter/mistralai/mistral-small-2603", "recommended": "writing" },
133
+ "vision": { "model": "openrouter/google/gemma-4-26b-a4b-it", "recommended": "vision" }
134
134
  },
135
135
  "mcp": {
136
136
  "playwright": { "enabled": true },
137
137
  "sequential-thinking": { "enabled": true },
138
138
  "firecrawl": { "enabled": true },
139
- "mempalace": { "enabled": true },
139
+ "mempalace": { "enabled": true, "pythonPath": "{env:MEMPALACE_PYTHON:-./.venv/bin/python}" },
140
140
  "rag": { "enabled": false },
141
141
  "stitch": { "enabled": false },
142
142
  "context7": { "enabled": true }
@@ -165,15 +165,19 @@ See [Environment Variables And Keys](#environment-variables-and-keys) for the fu
165
165
 
166
166
  ```bash
167
167
  opencode
168
+ hiai-opencode doctor
168
169
  hiai-opencode mcp-status
170
+ hiai-opencode export-mcp .mcp.json
169
171
  opencode debug config
170
172
  opencode mcp list --print-logs --log-level INFO
171
173
  ```
172
174
 
173
- `opencode mcp list` may not show plugin-provided MCP servers in every OpenCode version. If that happens, use `opencode debug config` and startup logs as the source of truth.
175
+ `opencode mcp list` reads static `.mcp.json` files in many OpenCode versions. Runtime MCP servers launched by plugins may work but not appear there. If you want `opencode mcp list` visibility, run `hiai-opencode export-mcp .mcp.json` first.
174
176
 
175
177
  `hiai-opencode mcp-status` is the fastest visibility check. It does not change OpenCode config; it reports config location, enabled MCP services, missing keys, and basic local runtime availability.
176
178
 
179
+ `hiai-opencode doctor` is the broader install/runtime diagnostic. It includes MCP status, static `.mcp.json` freshness, OpenCode Connect visibility, skill materialization, agent naming/count checks, LSP runtime checks, MemPalace Python source selection, and real MCP tool probes.
180
+
177
181
  ## Development Install
178
182
 
179
183
  Direct npm install is only needed for development or inspection:
@@ -210,7 +214,7 @@ Enable only services that can run on this machine:
210
214
  - playwright: requires node/npx; optionally set HIAI_PLAYWRIGHT_INSTALL_BROWSERS=1 before first run if browser binaries are needed.
211
215
  - sequential-thinking: requires node/npx.
212
216
  - firecrawl: requires FIRECRAWL_API_KEY.
213
- - mempalace: requires uv or Python 3.9+ with pip; set MEMPALACE_PYTHON if needed. Leave HIAI_MCP_AUTO_INSTALL enabled unless the user forbids package installation.
217
+ - mempalace: requires uv or Python 3.9+ with pip; set `mcp.mempalace.pythonPath` (or `MEMPALACE_PYTHON`) if needed. Leave `HIAI_MCP_AUTO_INSTALL` enabled unless the user forbids package installation.
214
218
  - rag: requires OPENCODE_RAG_URL or a running local endpoint at http://localhost:9002/tools/search.
215
219
  - stitch: requires STITCH_AI_API_KEY.
216
220
  - context7: works without a key but use CONTEXT7_API_KEY if available.
@@ -219,6 +223,8 @@ Check .env.example, report missing keys without printing secret values, and neve
219
223
 
220
224
  Run verification commands where available:
221
225
  - opencode debug config
226
+ - hiai-opencode mcp-status
227
+ - hiai-opencode export-mcp .mcp.json
222
228
  - opencode mcp list --print-logs --log-level INFO
223
229
 
224
230
  If a dependency is missing, install only user-level or project-local dependencies, explain every command before running it, and do not use sudo/admin rights unless the user explicitly asks.
@@ -321,7 +327,6 @@ Important service variables:
321
327
  - `STITCH_AI_API_KEY`
322
328
  - `FIRECRAWL_API_KEY`
323
329
  - `CONTEXT7_API_KEY`
324
- - `GOOGLE_SEARCH_API_KEY`
325
330
  - `OLLAMA_BASE_URL`
326
331
  - `OLLAMA_MODEL`
327
332
  - `MEMPALACE_PYTHON`
@@ -329,6 +334,8 @@ Important service variables:
329
334
  - `OPENCODE_RAG_URL`
330
335
  - `HIAI_PLAYWRIGHT_INSTALL_BROWSERS`
331
336
  - `HIAI_MCP_AUTO_INSTALL`
337
+ - `HIAI_OPENCODE_AUTO_EXPORT_MCP`
338
+ - `HIAI_OPENCODE_MCP_EXPORT_PATH`
332
339
 
333
340
  Optional headless or non-Connect fallback variables are documented in [.env.example](.env.example), but they are not required for normal OpenCode model auth.
334
341
 
@@ -393,7 +400,7 @@ If sudo is not available:
393
400
 
394
401
  ### Needs upstream runtime or extra setup
395
402
 
396
- - `mempalace`: prefers `uv`; otherwise uses Python. If `HIAI_MCP_AUTO_INSTALL` is not `0`, `false`, or `no`, the launcher can run `python -m pip install --user mempalace` on first start.
403
+ - `mempalace`: prefers `uv`; otherwise uses Python. You can force interpreter selection via `mcp.mempalace.pythonPath` or `MEMPALACE_PYTHON`. If `HIAI_MCP_AUTO_INSTALL` is not `0`, `false`, or `no`, the launcher can run `python -m pip install --user mempalace` on first start.
397
404
  - `rag`: requires your own running endpoint
398
405
 
399
406
  ### Important Windows note
@@ -415,12 +422,26 @@ The plugin now emits startup warnings for common misconfiguration, including:
415
422
  Available CLI:
416
423
 
417
424
  ```bash
425
+ hiai-opencode doctor
418
426
  hiai-opencode mcp-status
427
+ hiai-opencode export-mcp .mcp.json
428
+ ```
429
+
430
+ By default, the plugin auto-exports `.mcp.json` at workspace startup when the file is missing. This closes the visibility gap where runtime plugin MCP works but `opencode mcp list` only reads static files. Control it with:
431
+
432
+ ```bash
433
+ export HIAI_OPENCODE_AUTO_EXPORT_MCP=if-missing # default
434
+ export HIAI_OPENCODE_AUTO_EXPORT_MCP=always # overwrite only managed hiai-opencode exports
435
+ export HIAI_OPENCODE_AUTO_EXPORT_MCP=force # force overwrite even non-managed files
436
+ export HIAI_OPENCODE_AUTO_EXPORT_MCP=0 # disable auto-export
437
+ export HIAI_OPENCODE_MCP_EXPORT_PATH=.mcp.json # override path
438
+ export HIAI_OPENCODE_EXPORT_MCP_MODE=safe # export-mcp command mode: safe|force
419
439
  ```
420
440
 
421
441
  Inside OpenCode, use the slash command:
422
442
 
423
443
  ```text
444
+ /doctor
424
445
  /mcp-status
425
446
  ```
426
447
 
@@ -435,14 +456,13 @@ MCP Servers:
435
456
  ⚠️ stitch - enabled, API key missing (STITCH_AI_API_KEY)
436
457
  ```
437
458
 
438
- Planned follow-up commands:
439
-
440
- - `hiai-opencode doctor`: report config location, MCP status, missing keys, and local dependency checks.
441
- - `hiai-opencode export-mcp`: generate a standard `.mcp.json` for hosts that do not expose plugin-provided MCP servers through `opencode mcp list`.
459
+ `hiai-opencode export-mcp` writes a standard `.mcp.json` so hosts whose `mcp list` ignores plugin runtime MCP can still show the same servers statically. Exports are marker-tagged as hiai-managed; by default, the command avoids overwriting non-managed files unless `HIAI_OPENCODE_EXPORT_MCP_MODE=force` is set.
442
460
 
443
- Until those commands ship, use:
461
+ Use:
444
462
 
445
463
  ```bash
464
+ hiai-opencode mcp-status
465
+ hiai-opencode export-mcp .mcp.json
446
466
  opencode debug config
447
467
  opencode mcp list --print-logs --log-level INFO
448
468
  ```
@@ -464,7 +484,6 @@ opencode mcp list --print-logs --log-level INFO
464
484
  | Sequential Thinking | [modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers) | external MCP |
465
485
  | Firecrawl MCP | [firecrawl-ai/firecrawl-mcp-server](https://github.com/firecrawl-ai/firecrawl-mcp-server) | external MCP |
466
486
  | Context7 MCP | [upstash/context7-mcp](https://github.com/upstash/context7-mcp) | external MCP |
467
- | Websearch cited | [ghoulr/opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited) | search integration influence |
468
487
  | bun-pty / PTY ecosystem | [shekohex/opencode-pty](https://github.com/shekohex/opencode-pty) | PTY/runtime integration influence |
469
488
 
470
489
  ## Build And Publish
@@ -492,7 +511,7 @@ Before publishing:
492
511
  1. run `bun run build`
493
512
  2. run `npm pack --dry-run`
494
513
  3. verify `debug config`
495
- 4. verify `mcp list`
514
+ 4. run `hiai-opencode export-mcp .mcp.json` if you need static `mcp list` visibility
496
515
 
497
516
  Publish:
498
517