fix: POST for file creation (Gitea 1.25+), add edit_issue tool, persist poll state
- files.ts: Use POST for new files, PUT for updates (Gitea 1.25 requires this) - issues.ts: Add editIssue() for state/title/body changes - write-tools.ts: Add gitea_edit_issue tool (open/close/edit issues) - webhook/server.ts: Persist lastPollAt to disk to prevent duplicate events on reload; use followUp delivery to queue events during LLM turns - index.ts: Use deliverAs:'followUp' for sendUserMessage
This commit is contained in:
@@ -161,6 +161,32 @@ export default function (pi: ExtensionAPI) {
|
||||
},
|
||||
});
|
||||
|
||||
pi.registerTool({
|
||||
name: "gitea_edit_issue",
|
||||
label: "Gitea: Edit Issue",
|
||||
description: "Edit an issue — change title, body, or state (open/closed). Use this to close issues when work is done.",
|
||||
parameters: Type.Object({
|
||||
owner: Type.Optional(Type.String({ description: `Repo owner (default: ${client.defaultOwner})` })),
|
||||
repo: Type.Optional(Type.String({ description: `Repo name (default: ${client.defaultRepo})` })),
|
||||
index: Type.Number({ description: "Issue number" }),
|
||||
title: Type.Optional(Type.String({ description: "New title" })),
|
||||
body: Type.Optional(Type.String({ description: "New body (Markdown)" })),
|
||||
state: Type.Optional(Type.String({ description: "New state: 'open' or 'closed'" })),
|
||||
}),
|
||||
async execute(_id, params) {
|
||||
const { owner, repo } = client.resolve(params.owner, params.repo);
|
||||
const updated = await issues.editIssue(client, owner, repo, params.index, {
|
||||
title: params.title,
|
||||
body: params.body,
|
||||
state: params.state as "open" | "closed" | undefined,
|
||||
});
|
||||
return {
|
||||
content: [{ type: "text", text: `Issue #${updated.number} updated (state: ${updated.state}): ${updated.html_url}` }],
|
||||
details: { issue: updated },
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
// ── Pull Requests ──
|
||||
|
||||
pi.registerTool({
|
||||
|
||||
Reference in New Issue
Block a user