Add set_output tool (#205)
This commit is contained in:
committed by
pullfrog[bot]
parent
2daab6fc78
commit
c1f8247077
@@ -154,11 +154,45 @@ await mcp.call("gh_pullfrog/reply_to_review_comment", {
|
||||
});
|
||||
```
|
||||
|
||||
### output tools
|
||||
|
||||
#### `set_output`
|
||||
set the action output for consumption by subsequent workflow steps. useful when pullfrog is used as a step in a user-defined CI workflow (e.g., generating release notes).
|
||||
|
||||
**parameters:**
|
||||
- `value` (string): the output value to expose
|
||||
|
||||
**returns:**
|
||||
- `success`: true on success
|
||||
|
||||
the value will be available as the `result` output of the action, accessible via `${{ steps.<step-id>.outputs.result }}`.
|
||||
|
||||
**example:**
|
||||
```typescript
|
||||
// when generating content for downstream consumption
|
||||
await mcp.call("gh_pullfrog/set_output", {
|
||||
value: "## Release Notes\n\n- Added new feature X\n- Fixed bug Y"
|
||||
});
|
||||
```
|
||||
|
||||
**usage in workflow:**
|
||||
```yaml
|
||||
- uses: pullfrog/pullfrog@v1
|
||||
id: notes
|
||||
with:
|
||||
prompt: "Generate release notes for v2.0.0"
|
||||
|
||||
- uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body: ${{ steps.notes.outputs.result }}
|
||||
```
|
||||
|
||||
### other tools
|
||||
|
||||
see individual files for documentation on other tools:
|
||||
- `comment.ts` - create, edit, and update comments
|
||||
- `issue.ts` - create issues
|
||||
- `output.ts` - set action output for workflow consumption
|
||||
- `pr.ts` - create pull requests
|
||||
- `prInfo.ts` - get pull request information
|
||||
- `review.ts` - create pull request reviews
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { type } from "arktype";
|
||||
import type { ToolContext } from "./server.ts";
|
||||
import { execute, tool } from "./shared.ts";
|
||||
|
||||
export const SetOutputParams = type({
|
||||
value: type.string.describe("the output value to expose as a GitHub Action output"),
|
||||
});
|
||||
|
||||
export function SetOutputTool(ctx: ToolContext) {
|
||||
return tool({
|
||||
name: "set_output",
|
||||
description:
|
||||
"Set the action output for consumption by subsequent workflow steps. The value will be available as the 'result' output of the action.",
|
||||
parameters: SetOutputParams,
|
||||
execute: execute(async (params) => {
|
||||
ctx.toolState.output = params.value;
|
||||
return { success: true };
|
||||
}),
|
||||
});
|
||||
}
|
||||
@@ -32,6 +32,7 @@ export interface ToolState {
|
||||
progressCommentId: number | null;
|
||||
lastProgressBody?: string;
|
||||
wasUpdated?: boolean;
|
||||
output?: string;
|
||||
}
|
||||
|
||||
import type { ResolveRunResult } from "../utils/workflow.ts";
|
||||
@@ -85,6 +86,7 @@ import { GetIssueCommentsTool } from "./issueComments.ts";
|
||||
import { GetIssueEventsTool } from "./issueEvents.ts";
|
||||
import { IssueInfoTool } from "./issueInfo.ts";
|
||||
import { AddLabelsTool } from "./labels.ts";
|
||||
import { SetOutputTool } from "./output.ts";
|
||||
import { CreatePullRequestTool } from "./pr.ts";
|
||||
import { PullRequestInfoTool } from "./prInfo.ts";
|
||||
import { CreatePullRequestReviewTool } from "./review.ts";
|
||||
@@ -179,6 +181,7 @@ export async function startMcpHttpServer(
|
||||
CommitFilesTool(ctx),
|
||||
PushBranchTool(ctx),
|
||||
UploadFileTool(ctx),
|
||||
SetOutputTool(ctx),
|
||||
];
|
||||
|
||||
// only add BashTool when bash is "restricted"
|
||||
|
||||
Reference in New Issue
Block a user