mirror of
https://github.com/rehan-remade/universal-modder.git
synced 2026-11-05 01:37:40 +00:00
[PR #213] [MERGED] feat(opencode): an OpenCode 2 plugin with one um tool and the fal MCP server #217
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rehan-remade/universal-modder#217
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rehan-remade/universal-modder/pull/213
Author: @Selene0623
Created: 10/10/2026
Status: ✅ Merged
Merged: 10/11/2026
Merged by: @rehan-remade
Base:
main← Head:feat/opencode-plugin📝 Commits (4)
bbb2600feat(opencode): install path that is a plugin, not a clone79d160aopencode plugin: review fixes133593aopencode plugin: leave opencode.json alone1b6e9b1Merge remote-tracking branch 'origin/main' into land/pr-213📊 Changes
5 files changed (+271 additions, -2 deletions)
View changed files
📝
README.md(+7 -2)➕
plugins/opencode/README.md(+54 -0)➕
plugins/opencode/index.ts(+161 -0)➕
plugins/opencode/package.json(+12 -0)➕
tests/test_opencode_plugin.py(+37 -0)📄 Description
Closes the ask in #144: OpenCode was the only agent in the README's install table with no real install path (clone-and-run). This adds one.
What's in it
plugins/opencode/— tracked in the repo, so it moves with the CLI:index.ts— the plugin: one passthrough tool (um_run) and the fal MCP registration.package.json,README.md.opencode.json—"plugins": ["./plugins/opencode"], so a clone still works unchanged.README.md— the OpenCode install row now has theopencode plugin addline, plus a paragraph on what the plugin adds.tests/test_opencode_plugin.py— asserts the group list inindex.tsagainstGROUPSinum/cli.py.The four answers from #144
plugins/opencode/, tracked, next to the CLI it drives.um_runwith anargsarray (and an optionalcwd):["scan"],["scan", "--help"],["kb", "search", "disrupt"],["backup", "create"]. The tooldescription names the groups; a typo answers with the group list without spawning anything. The group
list lives in the plugin only so it can be named and checked, and the test keeps it honest.
/mod-gamecommand and noctx.skill.transformin this PR. Skills still arrivethrough
skills.paths, as before.tests/test_opencode_plugin.py), so the next missed group fails a test.The tool shells out to the same launcher a human would use —
bin/umif the plugin sits inside acheckout, otherwise
umfrom PATH, overridable withoptions.root/options.command. The CLI is neverreimplemented.
Verification
node --experimental-strip-types --check plugins/opencode/index.ts— clean.@opencode/plugin: registers namespaceum+ toolum_run, registers thefalMCP entry, and three real invocations through the tool:
um scan --help,um kb search disrupt,um scna→unknown group "scna". Groups: scan, fal, comfy, sprite, render3d, video, win, backup, publish, kb. …uv run --with pytest pytest -q tests→ 89 passed, 1 skipped (the new test included).um kb check --index→ PASS: 157 notes.um publish check .→ 476 files, 0 failures, 2 warnings (both pre-existing absolute-user-pathwarnings in other people's notes).
Supersedes the earlier branch of the same name, which was based on a 44-commit-stale
main; this one isoff current
main(5506516).🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.