Frank пре 8 месеци
родитељ
комит
a007d65f62

+ 2 - 4
.github/workflows/opencode.yml

@@ -7,10 +7,8 @@ on:
 jobs:
   opencode:
     if: |
-      startsWith(github.event.comment.body, 'opencode') ||
-      startsWith(github.event.comment.body, 'hi opencode') ||
-      startsWith(github.event.comment.body, 'hey opencode') ||
-      contains(github.event.comment.body, '@opencode-agent')
+      contains(github.event.comment.body, '/oc') ||
+      contains(github.event.comment.body, '/opencode')
     runs-on: ubuntu-latest
     permissions:
       id-token: write

+ 61 - 63
github/README.md

@@ -2,73 +2,71 @@
 
 A GitHub Action that integrates [opencode](https://opencode.ai) directly into your GitHub workflow.
 
-Start your comment with `hey opencode`, and opencode will take action via your GitHub Actions runner.
+Mention `/opencode` in your comment, and opencode will execute tasks within your GitHub Actions runner.
 
 ## Features
 
 #### Triage and explain issues
 
-```
-hey opencode, explain this issue
+```bash
+/opencode explain this issue
 ```
 
 #### Fix or implement issues - opencode will create a PR with the changes.
 
-```
-hi opencode, fix this
+```bash
+/opencode fix this
 ```
 
-- Review PRs and make changes
+#### Review PRs and make changes
 
-```
-Delete the attachment from S3 when the note is removed @opencode-agent
+```bash
+Delete the attachment from S3 when the note is removed /oc
 ```
 
 ## Installation
 
 Run the following command in the terminal from your GitHub repo:
 
-```
+```bash
 opencode github install
 ```
 
-This will walk you through installing the GitHub app, configuring the workflow, and setting up secrets.
+This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
 
 ### Manual Setup
 
 1. Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository.
 2. Add the following workflow file to `.github/workflows/opencode.yml` in your repo. Set the appropriate `model` and required API keys in `env`.
 
-```yml
-name: opencode
-
-on:
-  issue_comment:
-    types: [created]
-
-jobs:
-  opencode:
-    if: |
-      startsWith(github.event.comment.body, 'opencode') ||
-      startsWith(github.event.comment.body, 'hi opencode') ||
-      startsWith(github.event.comment.body, 'hey opencode') ||
-      contains(github.event.comment.body, '@opencode-agent')
-    runs-on: ubuntu-latest
-    permissions:
-      id-token: write
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 1
-
-      - name: Run opencode
-        uses: sst/opencode/github@latest
-        env:
-          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
-        with:
-          model: anthropic/claude-sonnet-4-20250514
-```
+   ```yml
+   name: opencode
+
+   on:
+     issue_comment:
+       types: [created]
+
+   jobs:
+     opencode:
+       if: |
+         contains(github.event.comment.body, '/oc') ||
+         contains(github.event.comment.body, '/opencode')
+       runs-on: ubuntu-latest
+       permissions:
+         id-token: write
+       steps:
+         - name: Checkout repository
+           uses: actions/checkout@v4
+           with:
+             fetch-depth: 1
+
+         - name: Run opencode
+           uses: sst/opencode/github@latest
+           env:
+             ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+           with:
+             model: anthropic/claude-sonnet-4-20250514
+   ```
 
 3. Store the API keys in secrets. In your organization or project **settings**, expand **Secrets and variables** on the left and select **Actions**. Add the required API keys.
 
@@ -82,32 +80,32 @@ To test locally:
 
 1. Navigate to a test repo (e.g. `hello-world`):
 
-```
-cd hello-world
-```
+   ```bash
+   cd hello-world
+   ```
 
 2. Run:
 
-```
-MODEL=anthropic/claude-sonnet-4-20250514 \
-  ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \
-  GITHUB_RUN_ID=dummy \
-  bun /path/to/opencode/packages/opencode/src/index.ts github run \
-  --token 'github_pat_1234567890' \
-  --event '{"eventName":"issue_comment",...}'
-```
+   ```bash
+   MODEL=anthropic/claude-sonnet-4-20250514 \
+     ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \
+     GITHUB_RUN_ID=dummy \
+     bun /path/to/opencode/packages/opencode/src/index.ts github run \
+     --token 'github_pat_1234567890' \
+     --event '{"eventName":"issue_comment",...}'
+   ```
 
-- `MODEL`: The model used by opencode. Same as the `MODEL` defined in the GitHub workflow.
-- `ANTHROPIC_API_KEY`: Your model provider API key. Same as the keys defined in the GitHub workflow.
-- `GITHUB_RUN_ID`: Dummy value to emulate GitHub action environment.
-- `/path/to/opencode`: Path to your cloned opencode repo. `bun /path/to/opencode/packages/opencode/src/index.ts` runs your local version of `opencode`.
-- `--token`: A GitHub persontal access token. This token is used to verify you have `admin` or `write` access to the test repo. Generate a token [here](https://github.com/settings/personal-access-tokens).
-- `--event`: Mock GitHub event payload (see templates below).
+   - `MODEL`: The model used by opencode. Same as the `MODEL` defined in the GitHub workflow.
+   - `ANTHROPIC_API_KEY`: Your model provider API key. Same as the keys defined in the GitHub workflow.
+   - `GITHUB_RUN_ID`: Dummy value to emulate GitHub action environment.
+   - `/path/to/opencode`: Path to your cloned opencode repo. `bun /path/to/opencode/packages/opencode/src/index.ts` runs your local version of `opencode`.
+   - `--token`: A GitHub persontal access token. This token is used to verify you have `admin` or `write` access to the test repo. Generate a token [here](https://github.com/settings/personal-access-tokens).
+   - `--event`: Mock GitHub event payload (see templates below).
 
-#### Issue comment event
+### Issue comment event
 
 ```
-  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
+--event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
 ```
 
 Replace:
@@ -118,16 +116,16 @@ Replace:
 - `"number":4` with the GitHub issue id
 - `"body":"hey opencode, summarize thread"` with comment body
 
-#### Issue comment with image attachment.
+### Issue comment with image attachment.
 
 ```
-  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image ![Image](https://github.com/user-attachments/assets/xxxxxxxx)"}}}'
+--event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image ![Image](https://github.com/user-attachments/assets/xxxxxxxx)"}}}'
 ```
 
 Replace the image URL `https://github.com/user-attachments/assets/xxxxxxxx` with a valid GitHub attachment (you can generate one by commenting with an image in any issue).
 
-#### PR comment event
+### PR comment event
 
 ```
-  --event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
+--event '{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
 ```

+ 1 - 1
github/action.yml

@@ -7,7 +7,7 @@ branding:
 inputs:
   model:
     description: "Model to use"
-    required: false
+    required: true
 
   share:
     description: "Share the opencode session (defaults to true for public repos)"

+ 6 - 14
packages/opencode/src/cli/cmd/github.ts

@@ -316,10 +316,8 @@ on:
 jobs:
   opencode:
     if: |
-      startsWith(github.event.comment.body, 'opencode') ||
-      startsWith(github.event.comment.body, 'hi opencode') ||
-      startsWith(github.event.comment.body, 'hey opencode') ||
-      contains(github.event.comment.body, '@opencode-agent')
+      contains(github.event.comment.body, '/oc') ||
+      contains(github.event.comment.body, '/opencode')
     runs-on: ubuntu-latest
     permissions:
       id-token: write
@@ -508,16 +506,10 @@ export const GithubRunCommand = cmd({
 
       async function getUserPrompt() {
         let prompt = (() => {
-          const body = payload.comment.body
-          if (body.match("@opencode-agent")) return body
-
-          const match = body.match(/^(?:hey|hi)?\s*opencode(?:-agent)?,?\s*(.*)$/is)
-          if (match?.[1] === undefined)
-            throw new Error(
-              "Command must mention @opencode-agent, or start with `opencode`, `hi opencode`, or `hey opencode` followed by instructions",
-            )
-          if (match[1] === "") return "Summarize this thread"
-          return match[1]
+          const body = payload.comment.body.trim()
+          if (body === "/opencode" || body === "/oc") return "Summarize this thread"
+          if (body.includes("/opencode") || body.includes("/oc")) return body
+          throw new Error("Comments must mention `/opencode` or `/oc`")
         })()
 
         // Handle images

+ 94 - 0
packages/web/src/content/docs/docs/github.mdx

@@ -0,0 +1,94 @@
+---
+title: GitHub
+description: Using opencode within GitHub Issues and Pull-Requests
+---
+
+opencode integrates directly into your GitHub workflow. Mention `/opencode` in your comment, and opencode will execute tasks within your GitHub Actions runner.
+
+---
+
+## Features
+
+- **Triage Issues**: Ask opencode to look into an issue and explain it to you
+- **Fix and Implement**: Ask opencode to fix an issue or implement a feature. And it will work in a new branch and submits a PR with all the changes.
+- **Secure**: opencode runs inside your GitHub's runners.
+
+---
+
+## Installation
+
+Run the following command in the terminal from your GitHub repo:
+
+```bash
+opencode github install
+```
+
+This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
+
+---
+
+### Manual Setup
+
+1. Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository.
+2. Add the following workflow file to `.github/workflows/opencode.yml` in your repo. Set the appropriate `model` and required API keys in `env`.
+
+   ```yml
+   name: opencode
+
+   on:
+     issue_comment:
+       types: [created]
+
+   jobs:
+     opencode:
+       if: |
+         contains(github.event.comment.body, '/oc') ||
+         contains(github.event.comment.body, '/opencode')
+       runs-on: ubuntu-latest
+       permissions:
+         id-token: write
+       steps:
+         - name: Checkout repository
+           uses: actions/checkout@v4
+           with:
+             fetch-depth: 1
+
+         - name: Run opencode
+           uses: sst/opencode/github@latest
+           env:
+             ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+           with:
+             model: anthropic/claude-sonnet-4-20250514
+             # share: true
+   ```
+
+3. Store the API keys in secrets. In your organization or project **settings**, expand **Secrets and variables** on the left and select **Actions**. Add the required API keys.
+
+---
+
+### Inputs
+
+- `model`: The model used by opencode. Takes the format of `provider/model` (**required**)
+- `share`: Share the session. Sessions are shared by default for public repos.
+
+---
+
+### Usage Examples
+
+- Explain an issue
+
+  ```bash
+  /opencode explain this issue
+  ```
+
+- Fix an issue - opencode will create a PR with the changes.
+
+  ```bash
+  /opencode fix this
+  ```
+
+- Review PRs and make changes
+
+  ```bash
+  Delete the attachment from S3 when the note is removed /oc
+  ```