-
-
Notifications
You must be signed in to change notification settings - Fork 0
167 lines (167 loc) · 5.53 KB
/
Copy pathopencode-bot.yml
File metadata and controls
167 lines (167 loc) · 5.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
---
name: Mention bot using OpenCode
on:
workflow_call:
inputs:
model:
required: true
type: string
description: Model to use with OpenCode
agent:
required: false
type: string
description: Primary agent to use
default: build
share:
required: false
type: boolean
description: Share the OpenCode session
default: false
prompt:
required: false
type: string
description: Custom prompt to override the event comment
default: ''
use-github-token:
required: false
type: boolean
description: Use GITHUB_TOKEN directly instead of OpenCode App token exchange
default: false
mentions:
required: false
type: string
description: Comma-separated list of trigger phrases
default: /opencode,/oc
variant:
required: false
type: string
description: Provider-specific model variant
default: ''
oidc-base-url:
required: false
type: string
description: Base URL for OIDC token exchange
default: https://api.opencode.ai
opencode-version:
required: false
type: string
description: OpenCode version to install
default: latest
use-bundled-toolkit:
required: false
type: boolean
description: Use the action's bundled OpenCode toolkit
default: true
timeout-minutes:
required: false
type: number
description: Maximum minutes to let OpenCode run
default: 60
runs-on:
required: false
type: string
description: Runner to use
default: ubuntu-latest
secrets:
ANTHROPIC_API_KEY:
required: false
description: Anthropic API key
OPENAI_API_KEY:
required: false
description: OpenAI API key
OPENROUTER_API_KEY:
required: false
description: OpenRouter API key
OPENCODE_API_KEY:
required: false
description: OpenCode API key
SAKURA_AI_ENGINE_API_KEY:
required: false
description: Sakura AI Engine API key
GOOGLE_GENERATIVE_AI_API_KEY:
required: false
description: Google Generative AI API key
DEEPSEEK_API_KEY:
required: false
description: DeepSeek API key
XAI_API_KEY:
required: false
description: xAI API key
GROQ_API_KEY:
required: false
description: Groq API key
CEREBRAS_API_KEY:
required: false
description: Cerebras API key
MOONSHOT_API_KEY:
required: false
description: Moonshot AI API key
GH_TOKEN:
required: false
description: GitHub token for repository access
issue_comment:
types:
- created
pull_request_review_comment:
types:
- created
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
actions: read
jobs:
opencode-bot:
if: >
(
(github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
&& github.event.comment.user.type != 'Bot'
&& contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.comment.author_association)
&& (
inputs.model != ''
|| startsWith(github.event.comment.body, '/oc')
|| contains(github.event.comment.body, ' /oc')
|| startsWith(github.event.comment.body, '/opencode')
|| contains(github.event.comment.body, ' /opencode')
)
) || (
github.event_name != 'issue_comment'
&& github.event_name != 'pull_request_review_comment'
&& inputs.prompt != ''
)
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 1
token: ${{ secrets.GH_TOKEN || github.token }} # zizmor: ignore[secrets-outside-env] caller-provided secret
persist-credentials: false
- name: Run OpenCode
uses: $/.
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
SAKURA_AI_ENGINE_API_KEY: ${{ secrets.SAKURA_AI_ENGINE_API_KEY }}
GOOGLE_GENERATIVE_AI_API_KEY: ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY }}
MOONSHOT_API_KEY: ${{ secrets.MOONSHOT_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN || github.token }}
with:
model: ${{ inputs.model || 'sakura/preview/Kimi-K2.7-Code' }}
agent: ${{ inputs.agent || 'build' }}
share: ${{ inputs.share }}
prompt: ${{ inputs.prompt }}
use-github-token: ${{ inputs.use-github-token }}
mentions: ${{ inputs.mentions || '/opencode,/oc' }}
variant: ${{ inputs.variant }}
oidc-base-url: ${{ inputs.oidc-base-url || 'https://api.opencode.ai' }}
opencode-version: ${{ inputs.opencode-version || 'latest' }}
use-bundled-toolkit: ${{ inputs.model == '' || inputs.use-bundled-toolkit }}
timeout-minutes: ${{ inputs.timeout-minutes || 60 }}