feat(plugin): support plugin-provided tools (#34619)

This commit is contained in:
Kit Langton
2026-06-30 13:18:56 -04:00
committed by GitHub
parent a5c51e11d0
commit 194b0615e0
52 changed files with 1625 additions and 951 deletions
+1 -1
View File
@@ -1143,7 +1143,7 @@ export function Prompt(props: PromptProps) {
})
}
if (session?.revert) {
const error = await sdk.api.session.commit({ sessionID }).then(
const error = await sdk.api.session.revertCommit({ sessionID }).then(
() => undefined,
(error) => error,
)
@@ -23,7 +23,7 @@ export function DialogMessage(props: { messageID: string; sessionID: string; set
description: "undo messages and file changes",
onSelect: async (dialog) => {
await sdk.api.session
.stage({ sessionID: props.sessionID, messageID: props.messageID })
.revertStage({ sessionID: props.sessionID, messageID: props.messageID })
.catch((error) => toast.show({ message: errorMessage(error), variant: "error", duration: 5000 }))
dialog.clear()
},
+10 -10
View File
@@ -185,7 +185,9 @@ export function Session() {
})
const permissions = createMemo(() => {
if (session()?.parentID) return []
return [route.sessionID, ...descendantSessionIDs()].flatMap((sessionID) => data.session.permission.list(sessionID) ?? [])
return [route.sessionID, ...descendantSessionIDs()].flatMap(
(sessionID) => data.session.permission.list(sessionID) ?? [],
)
})
const questions = createMemo(() => {
if (session()?.parentID) return []
@@ -422,7 +424,7 @@ export function Session() {
dialog.clear()
return
}
const error = await sdk.api.session.stage({ sessionID: route.sessionID, messageID: target }).then(
const error = await sdk.api.session.revertStage({ sessionID: route.sessionID, messageID: target }).then(
() => undefined,
(error) => error,
)
@@ -439,7 +441,7 @@ export function Session() {
slash: { name: "redo" },
run: () => {
void (async () => {
const error = await sdk.api.session.clear({ sessionID: route.sessionID }).then(
const error = await sdk.api.session.revertClear({ sessionID: route.sessionID }).then(
() => undefined,
(error) => error,
)
@@ -1049,7 +1051,9 @@ function SessionMessageView(props: { message: SessionMessage }) {
<Match when={props.message.type === "agent-switched" || props.message.type === "model-switched"}>
<SessionSwitchMessageV2 message={props.message} />
</Match>
<Match when={props.message.type === "system" || props.message.type === "synthetic" || props.message.type === "skill"}>
<Match
when={props.message.type === "system" || props.message.type === "synthetic" || props.message.type === "skill"}
>
<Show when={props.message.type === "skill"} fallback={<SessionNoticeMessageV2 message={props.message} />}>
<SessionSkillMessage message={props.message as Extract<SessionMessage, { type: "skill" }>} />
</Show>
@@ -1217,11 +1221,7 @@ function SessionNoticeMessageV2(props: { message: SessionMessage }) {
if (props.message.type === "system" || props.message.type === "synthetic") return props.message.text
return ""
}
return (
<text fg={theme.textMuted}>
{text()}
</text>
)
return <text fg={theme.textMuted}>{text()}</text>
}
function SessionSkillMessage(props: { message: Extract<SessionMessage, { type: "skill" }> }) {
@@ -1267,7 +1267,7 @@ function RevertMessage(props: {
onMouseUp={() => {
if (renderer.getSelection()?.getSelectedText()) return
void (async () => {
const error = await sdk.api.session.clear({ sessionID: route.sessionID }).then(
const error = await sdk.api.session.revertClear({ sessionID: route.sessionID }).then(
() => undefined,
(error) => error,
)