Repository navigation
feat(forge-session): add opencode-forge-session - #86
Merged
Merged
Conversation
The build, dev, and install-local tasks compiled only src/index.ts and src/tui.ts, so a CLI entry point that renders JSX couldn't ship. Add .mise/bundle.ts, which the three tasks share. It also compiles src/tui.tsx through @opentui/solid's Bun plugin and keeps solid-js and @opentui/* external, because OpenCode provides them at runtime. Existing packages build to the same output as before. Also: - Raise @opencode/plugin to 2.0.26, add the OpenTUI and Solid dev dependencies for type checks, and pin Prettier to the locked 3.8.1. - Make the dev task executable. mise skipped it, so `mise run dev` failed with "no task dev found". - Add a markdownlint config with the repository's 100-column width, and wrap the AGENTS.md lines that exceeded it. - Disable shellcheck's SC2154 for usage_package, which mise sets from the #USAGE lines.
Add a plugin that tracks each session's GitHub and GitLab issues and PRs/MRs. It replaces opencode-forge-session-title and keeps its plugin and RPC IDs, so stored targets and RPC callers carry over. - The server keeps the title prefix, accepts up to 50 targets through set_session_target, and relates them to a shared issue_url. - A CLI entry point shows the PR/MR status in the prompt footer, with /forge-status and /forge-open commands. - The server polls the PRs/MRs of the sessions that CLIs show, and tells the agent when a GitLab Duo review finishes with feedback or people leave new review comments. reviewStatus: false keeps only the title behavior. Release-As: 1.0.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do and why?
Adds
opencode-forge-session, which replacesopencode-forge-session-title. Besides the title prefixes, it shows the PR/MR status in the CLI footer and tells the agent about GitLab Duo and human review feedback. It keeps the old plugin and RPC IDs, so stored targets andtargetRPC callers carry over..mise/bundle.tscompilessrc/tui.tsxwith OpenTUI's Solid transform and keepssolid-jsand@opentui/*external. Existing packages build to the same output.Release-As: 1.0.0, because0.xversions belong to the OpenCode 1 line. Keep the footer if you squash.devtask is now executable, so mise finds it, and a markdownlint config sets the repository's 100-column width.References
opencode-forge-session-title. Deprecating it on npm is a manual step after 1.0.0 publishes.How to set up and validate locally
OpenCode loads a local plugin directory by its root
indexfile, so point it atdist/rather than the package directory.Build the package:
In
opencode.json, replaceopencode-forge-session-titlewith the absolute path topackages/forge-session/dist.Open a TUI in a checkout whose branch has an open PR/MR. The prompt footer shows its status,
/forge-statusopens the status dialog, and/forge-openopens the PR/MR.Tested at 74e5792 with OpenCode 2.0.26: the server bundle loaded and answered the
watch,refresh,release, andtargetRPCs, and the TUI rendered the footer and ran both commands.