update run command output and permissions
This commit is contained in:
parent
651f173a2f
commit
ac7eaf21dc
1 changed files with 40 additions and 5 deletions
|
|
@ -5,7 +5,7 @@ import { cmd } from "./cmd"
|
||||||
import { Flag } from "../../flag/flag"
|
import { Flag } from "../../flag/flag"
|
||||||
import { bootstrap } from "../bootstrap"
|
import { bootstrap } from "../bootstrap"
|
||||||
import { EOL } from "os"
|
import { EOL } from "os"
|
||||||
import { createOpencodeClient, type OpencodeClient, type ToolPart } from "@opencode-ai/sdk/v2"
|
import { createOpencodeClient, type Message, type OpencodeClient, type ToolPart } from "@opencode-ai/sdk/v2"
|
||||||
import { Server } from "../../server/server"
|
import { Server } from "../../server/server"
|
||||||
import { Provider } from "../../provider/provider"
|
import { Provider } from "../../provider/provider"
|
||||||
import { Agent } from "../../agent/agent"
|
import { Agent } from "../../agent/agent"
|
||||||
|
|
@ -54,7 +54,8 @@ function inline(info: Inline) {
|
||||||
function block(info: Inline, output?: string) {
|
function block(info: Inline, output?: string) {
|
||||||
UI.empty()
|
UI.empty()
|
||||||
inline(info)
|
inline(info)
|
||||||
if (output?.trim()) UI.println(output)
|
if (!output?.trim()) return
|
||||||
|
UI.println(output)
|
||||||
UI.empty()
|
UI.empty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -321,6 +322,16 @@ export const RunCommand = cmd({
|
||||||
action: "deny",
|
action: "deny",
|
||||||
pattern: "*",
|
pattern: "*",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
permission: "plan_enter",
|
||||||
|
action: "deny",
|
||||||
|
pattern: "*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
permission: "plan_exit",
|
||||||
|
action: "deny",
|
||||||
|
pattern: "*",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
function title() {
|
function title() {
|
||||||
|
|
@ -336,7 +347,7 @@ export const RunCommand = cmd({
|
||||||
}
|
}
|
||||||
if (args.session) return args.session
|
if (args.session) return args.session
|
||||||
const name = title()
|
const name = title()
|
||||||
const result = await sdk.session.create(name ? { title: name, permission: rules } : { permission: rules })
|
const result = await sdk.session.create({ title: name, permission: rules })
|
||||||
return result.data?.id
|
return result.data?.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -356,6 +367,28 @@ export const RunCommand = cmd({
|
||||||
}
|
}
|
||||||
|
|
||||||
async function execute(sdk: OpencodeClient) {
|
async function execute(sdk: OpencodeClient) {
|
||||||
|
function show() {
|
||||||
|
if (args.format === "json") return
|
||||||
|
if (!process.stdout.isTTY) return
|
||||||
|
const text = message.trimEnd()
|
||||||
|
if (!text) return
|
||||||
|
UI.empty()
|
||||||
|
text.split("\n").forEach((line) => UI.println(`> ${line}`))
|
||||||
|
UI.empty()
|
||||||
|
}
|
||||||
|
const seen = new Set<string>()
|
||||||
|
|
||||||
|
function head(info: Message) {
|
||||||
|
if (args.format === "json") return
|
||||||
|
if (!process.stdout.isTTY) return
|
||||||
|
if (info.role !== "assistant") return
|
||||||
|
if (seen.has(info.id)) return
|
||||||
|
seen.add(info.id)
|
||||||
|
const model = info.modelID ? ` · ${info.modelID}` : ""
|
||||||
|
UI.empty()
|
||||||
|
UI.println(`$ ${info.agent}${model}`)
|
||||||
|
}
|
||||||
|
|
||||||
function tool(part: ToolPart) {
|
function tool(part: ToolPart) {
|
||||||
if (part.tool === "bash") return bash(props<typeof BashTool>(part))
|
if (part.tool === "bash") return bash(props<typeof BashTool>(part))
|
||||||
if (part.tool === "glob") return glob(props<typeof GlobTool>(part))
|
if (part.tool === "glob") return glob(props<typeof GlobTool>(part))
|
||||||
|
|
@ -456,8 +489,8 @@ export const RunCommand = cmd({
|
||||||
if (permission.sessionID !== sessionID) continue
|
if (permission.sessionID !== sessionID) continue
|
||||||
UI.println(
|
UI.println(
|
||||||
UI.Style.TEXT_WARNING_BOLD + "!",
|
UI.Style.TEXT_WARNING_BOLD + "!",
|
||||||
UI.Style.TEXT_NORMAL,
|
UI.Style.TEXT_NORMAL +
|
||||||
`permission requested: ${permission.permission} (${permission.patterns.join(", ")}); auto-rejecting`,
|
`permission requested: ${permission.permission} (${permission.patterns.join(", ")}); auto-rejecting`,
|
||||||
)
|
)
|
||||||
await sdk.permission.reply({
|
await sdk.permission.reply({
|
||||||
requestID: permission.id,
|
requestID: permission.id,
|
||||||
|
|
@ -497,6 +530,8 @@ export const RunCommand = cmd({
|
||||||
}
|
}
|
||||||
await share(sdk, sessionID)
|
await share(sdk, sessionID)
|
||||||
|
|
||||||
|
if (!args.command) show()
|
||||||
|
|
||||||
loop().catch((e) => {
|
loop().catch((e) => {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue