-
Notifications
You must be signed in to change notification settings - Fork 0
Add Pullfrog AI Review + Continue Agent Config #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| name: Budget-Config | ||
| version: 1.0.0 | ||
| schema: v1 | ||
|
|
||
| models: | ||
| - name: "Qwen3-235B (DeepInfra)" | ||
| provider: "openai" | ||
| model: "Qwen/Qwen3-235B-A22B-Instruct-2507" | ||
| apiBase: "https://api.deepinfra.com/v1/openai" | ||
| apiKey: "${env:DEEPINFRA_API_KEY}" | ||
| contextLength: 250000 | ||
| roles: | ||
| - chat | ||
| - edit | ||
|
|
||
| - name: "DeepSeek V4 Flash" | ||
| provider: "openai" | ||
| model: "deepseek-v4-flash" | ||
| apiBase: "https://api.deepseek.com/v1" | ||
| apiKey: "${env:DEEPSEEK_API_KEY}" | ||
| contextLength: 1000000 | ||
| roles: | ||
| - chat | ||
|
|
||
| tabAutocompleteModel: | ||
| name: "DeepSeek Flash Auto" | ||
| provider: "openai" | ||
| model: "deepseek-v4-flash" | ||
| apiBase: "https://api.deepseek.com/v1" | ||
| apiKey: "${env:DEEPSEEK_API_KEY}" | ||
| roles: | ||
| - autocomplete | ||
|
|
||
| context: | ||
| - provider: "file" | ||
| - provider: "code" | ||
| - provider: "terminal" | ||
| - provider: "diff" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| name: Pullfrog AI Agent | ||
| on: | ||
| pull_request: | ||
| types: [opened, synchronize] | ||
| issue_comment: | ||
| types: [created] | ||
|
|
||
| jobs: | ||
| pullfrog_run: | ||
| runs-on: ubuntu-latest | ||
| if: github.event.issue.pull_request || github.event_name == 'pull_request' || contains(github.event.comment.body, '@pullfrog') | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trigger condition runs the agent on every PR comment, not just
🛠️ Proposed fix to gate comment triggers on the mention- if: github.event.issue.pull_request || github.event_name == 'pull_request' || contains(github.event.comment.body, '`@pullfrog`')
+ if: >-
+ github.event_name == 'pull_request' ||
+ (github.event.issue.pull_request && contains(github.event.comment.body, '`@pullfrog`'))🤖 Prompt for AI Agents |
||
| steps: | ||
|
Comment on lines
+9
to
+12
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: The Pullfrog GitHub Action does not actually use the workflow's GITHUB_TOKEN to perform its core operations like pushing branches, posting pull request comments, creating reviews, or updating issues [1]. Instead, it mints its own short-lived installation tokens via OIDC (OpenID Connect) for these API calls [1]. Because of this design, the only permissions you must explicitly grant in your workflow for the Pullfrog action to function correctly are [1]: - id-token: write (Required to mint the OIDC-based installation tokens) [1] - contents: read (Required for the actions/checkout step to clone the repository) [1] While some example configurations for Pullfrog may show broader permissions (such as contents: write or pull-requests: write), these are generally not required by the Pullfrog action itself [1]. If you include broader permissions in your workflow configuration, they are applied to the GITHUB_TOKEN, which other steps in the same job might use, but the Pullfrog action remains independent of them [1]. It is recommended to scope these permissions at the job level rather than the workflow level to follow the principle of least privilege [1]. Citations: Add an explicit least-privilege File: .github/workflows/pullfrog.yml (lines 9-12) 🔒 Proposed permissions scopepermissions:
id-token: write
contents: read🧰 Tools🪛 zizmor (1.25.2)[warning] 9-23: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block (excessive-permissions) 🤖 Prompt for AI Agents |
||
| - name: Checkout Code | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 0 | ||
|
Comment on lines
+13
to
+16
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Disable credential persistence on checkout.
🛡️ Proposed fix - name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
+ persist-credentials: false🧰 Tools🪛 zizmor (1.25.2)[warning] 13-16: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false (artipacked) [error] 14-14: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy) (unpinned-uses) 🤖 Prompt for AI Agents |
||
|
|
||
| - name: Run Pullfrog Agent | ||
| uses: pullfrog/pullfrog-action@main | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| OPENROUTER_API_KEY: ${{ secrets.ORGANIZATION_OPENROUTER_KEY }} | ||
|
Comment on lines
+18
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: To use an OpenRouter API key with the pullfrog/pullfrog GitHub Action, you must map the Citations:
Pin In - name: Run Pullfrog Agent
uses: pullfrog/pullfrog-action@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENROUTER_API_KEY: ${{ secrets.ORGANIZATION_OPENROUTER_KEY }}Pin The OpenRouter key is correctly provided via 🧰 Tools🪛 zizmor (1.25.2)[error] 19-19: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy) (unpinned-uses) 🤖 Prompt for AI Agents |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
Continue YAML migration tabAutocompleteModel models roles autocomplete💡 Result:
To migrate your Continue configuration to the new YAML schema, you must move your models, including those previously defined under tabAutocompleteModel, into the models section of your config.yaml file [1][2]. 1. Model Roles: In the YAML format, Continue uses the roles field to define model capabilities [1][3]. Assign the autocomplete role to any model intended for tab autocomplete by adding it to the roles list [1][2][4]. Example configuration: models: - name: My Autocomplete Model provider: ollama model: qwen2.5-coder:1.5b roles: - autocomplete 2. Configuring Autocomplete Options: The YAML schema allows you to configure autocomplete options on a per-model basis using the autocompleteOptions field within the model definition [5][2]. This replaces the older, global tabAutocompleteOptions used in config.json [2]. Example configuration: models: - name: My Autocomplete Model provider: ollama model: qwen2.5-coder:1.5b roles: - autocomplete autocompleteOptions: maxPromptTokens: 1024 debounceDelay: 250 If you are using prompt templating for your autocomplete model, you can define it using the promptTemplates.autocomplete property [3]. Ensure you are using the correct FIM (fill-in-the-middle) template for your specific model [6][3]. For further guidance, consult the official Continue documentation on YAML migration and autocomplete configuration [1][2][3].
Citations:
🏁 Script executed:
Repository: spivanatalie64/spivanatalie64.github.io
Length of output: 189
🏁 Script executed:
Repository: spivanatalie64/spivanatalie64.github.io
Length of output: 1317
🏁 Script executed:
Repository: spivanatalie64/spivanatalie64.github.io
Length of output: 218
Move
tabAutocompleteModelintomodelswithroles: [autocomplete].continue/agents/new-config.yamlstill defines a top-leveltabAutocompleteModelblock, which Continue’s YAML migration expects to be represented inside themodelsarray via theautocompleterole. Sincemodelsalready includes"DeepSeek V4 Flash"(withapiBase: "https://api.deepseek.com/v1"andcontextLength), either addautocompleteto that model’srolesor add a newmodelsentry for the same provider/model—then remove the top-leveltabAutocompleteModel.🤖 Prompt for AI Agents