@@ -139,6 +139,147 @@ public OpenCodeCliResult runJson(String message, String sessionId, String model)
139139 return executor .execute (args .toArray (new String [0 ]));
140140 }
141141
142+ /**
143+ * {@code opencode run <全旗标选项> <message>}
144+ * <p>覆盖文档全部旗标的非交互执行:{@code --command/--continue/--session/
145+ * --fork/--share/--model/--agent/--file/--format/--title/--attach/
146+ * --username/--password/--dir/--variant/--thinking/--port}。</p>
147+ *
148+ * @param options 运行选项;不得为 {@code null}
149+ * @return CLI 的退出状态、标准输出和错误输出
150+ * @since 3.0.0
151+ */
152+ public OpenCodeCliResult run (OpenCodeRunOptions options ) {
153+ return executor .execute (options .toArgs ());
154+ }
155+
156+ /**
157+ * 启动交互式 TUI:{@code opencode [project] [--continue/--session/--fork/
158+ * --prompt/--model/--agent/--port/--hostname]}。
159+ *
160+ * @param options TUI 选项;不得为 {@code null}
161+ * @return CLI 的退出状态、标准输出和错误输出
162+ * @since 3.0.0
163+ */
164+ public OpenCodeCliResult tui (OpenCodeTuiOptions options ) {
165+ return executor .execute (options .toArgs ());
166+ }
167+
168+ /**
169+ * {@code opencode mcp auth list}(别名 {@code ls})——列出支持 OAuth 的
170+ * MCP 服务器及其认证状态。
171+ *
172+ * @return CLI 的退出状态、标准输出和错误输出
173+ * @since 3.0.0
174+ */
175+ public OpenCodeCliResult mcpAuthList () {
176+ return executor .execute ("mcp" , "auth" , "list" );
177+ }
178+
179+ /**
180+ * {@code opencode serve --mdns --cors ...} 全旗标重载。
181+ *
182+ * @param port 监听端口;为 {@code null} 时使用 CLI 默认值
183+ * @param hostname 监听地址;为空时使用 CLI 默认值
184+ * @param mdns 是否在局域网以 mDNS 广播(隐含 hostname 0.0.0.0)
185+ * @param cors 额外允许的 CORS 来源列表;为空/{@code null} 时不追加
186+ * @return CLI 的退出状态、标准输出和错误输出
187+ * @since 3.0.0
188+ */
189+ public OpenCodeCliResult serve (Integer port , String hostname , boolean mdns , java .util .List <String > cors ) {
190+ java .util .List <String > args = new ArrayList <String >();
191+ args .add ("serve" );
192+ if (port != null ) { args .add ("--port" ); args .add (String .valueOf (port )); }
193+ if (hostname != null ) { args .add ("--hostname" ); args .add (hostname ); }
194+ if (mdns ) { args .add ("--mdns" ); }
195+ if (cors != null ) {
196+ for (String origin : cors ) { args .add ("--cors" ); args .add (origin ); }
197+ }
198+ return executor .execute (args .toArray (new String [0 ]));
199+ }
200+
201+ /**
202+ * {@code opencode web --port --hostname --mdns --mdns-domain --cors ...} 全旗标重载。
203+ *
204+ * @param port 监听端口;为 {@code null} 时自动选择可用端口
205+ * @param hostname 监听地址;为空时使用 CLI 默认值(127.0.0.1)
206+ * @param mdns 是否在局域网以 mDNS 广播(隐含 hostname 0.0.0.0)
207+ * @param mdnsDomain 自定义 mDNS 域名;为空时不追加
208+ * @param cors 额外允许的 CORS 来源列表;为空/{@code null} 时不追加
209+ * @return CLI 的退出状态、标准输出和错误输出
210+ * @since 3.0.0
211+ */
212+ public OpenCodeCliResult web (Integer port , String hostname , boolean mdns ,
213+ String mdnsDomain , java .util .List <String > cors ) {
214+ java .util .List <String > args = new ArrayList <String >();
215+ args .add ("web" );
216+ if (port != null ) { args .add ("--port" ); args .add (String .valueOf (port )); }
217+ if (hostname != null ) { args .add ("--hostname" ); args .add (hostname ); }
218+ if (mdns ) { args .add ("--mdns" ); }
219+ if (mdnsDomain != null ) { args .add ("--mdns-domain" ); args .add (mdnsDomain ); }
220+ if (cors != null ) {
221+ for (String origin : cors ) { args .add ("--cors" ); args .add (origin ); }
222+ }
223+ return executor .execute (args .toArray (new String [0 ]));
224+ }
225+
226+ /**
227+ * {@code opencode acp --cwd ... --port ... --hostname ...} 全旗标重载。
228+ *
229+ * @param cwd ACP 服务的工作目录;为空时继承配置
230+ * @param port 监听端口;为 {@code null} 时使用 CLI 默认值
231+ * @param hostname 监听地址;为空时使用 CLI 默认值
232+ * @return CLI 的退出状态、标准输出和错误输出
233+ * @since 3.0.0
234+ */
235+ public OpenCodeCliResult acp (String cwd , Integer port , String hostname ) {
236+ java .util .List <String > args = new ArrayList <String >();
237+ args .add ("acp" );
238+ if (cwd != null ) { args .add ("--cwd" ); args .add (cwd ); }
239+ if (port != null ) { args .add ("--port" ); args .add (String .valueOf (port )); }
240+ if (hostname != null ) { args .add ("--hostname" ); args .add (hostname ); }
241+ return executor .execute (args .toArray (new String [0 ]));
242+ }
243+
244+ /**
245+ * {@code opencode attach <url> --continue/--fork ...} 全旗标重载。
246+ *
247+ * @param url 运行中后端的 URL
248+ * @param dir CLI 命令作用目录;为空时使用配置工作目录
249+ * @param sessionId OpenCode 会话 ID;为空时不追加
250+ * @param username Basic Auth 用户名;为空时不追加
251+ * @param password Basic Auth 密码;为空时不追加,日志中不得明文输出
252+ * @param continueLast 是否附加并延续最近会话({@code --continue/-c})
253+ * @param fork 是否以 fork 方式附加({@code --fork})
254+ * @return CLI 的退出状态、标准输出和错误输出
255+ * @since 3.0.0
256+ */
257+ public OpenCodeCliResult attach (String url , String dir , String sessionId ,
258+ String username , String password ,
259+ boolean continueLast , boolean fork ) {
260+ java .util .List <String > args = new ArrayList <String >();
261+ args .add ("attach" );
262+ args .add (url );
263+ if (dir != null ) { args .add ("--dir" ); args .add (dir ); }
264+ if (sessionId != null ) { args .add ("--session" ); args .add (sessionId ); }
265+ if (username != null ) { args .add ("--username" ); args .add (username ); }
266+ if (password != null ) { args .add ("--password" ); args .add (password ); }
267+ if (continueLast ) { args .add ("--continue" ); }
268+ if (fork ) { args .add ("--fork" ); }
269+ return executor .execute (args .toArray (new String [0 ]));
270+ }
271+
272+ /**
273+ * 原样执行任意 opencode 命令行——覆盖 SDK 尚未建模的子命令与旗标。
274+ *
275+ * @param args 完整参数列表(不含可执行文件名本身)
276+ * @return CLI 的退出状态、标准输出和错误输出
277+ * @since 3.0.0
278+ */
279+ public OpenCodeCliResult raw (String ... args ) {
280+ return executor .execute (args );
281+ }
282+
142283 // ============================================================
143284 // session
144285 // ============================================================
0 commit comments