-
Notifications
You must be signed in to change notification settings - Fork 3
111 lines (103 loc) · 4.81 KB
/
Copy pathtasks.yml
File metadata and controls
111 lines (103 loc) · 4.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
name: Task
on:
workflow_dispatch:
inputs:
model:
description: Model to use (provider/model, e.g. llamacpp/phi-4)
required: false
default: ollama_cloud/deepseek-v4-flash
prompt:
description: Task for the agent (workflow_dispatch only)
required: false
default: ""
enable_git:
description: Enable git operations - branch, commit, PR (workflow_dispatch only)
required: false
default: "true"
system_prompt:
description: Override the direct-prompt system prompt (workflow_dispatch only)
required: false
default: ""
issues:
types:
- opened
- edited
issue_comment:
types:
- created
pull_request_review_comment:
types:
- created
permissions:
issues: write
contents: write
pull-requests: write
jobs:
infer:
runs-on: ubuntu-24.04
timeout-minutes: 25
steps:
- uses: actions/create-github-app-token@v3.2.0
id: app-token
with:
client-id: Iv23likOeTBSPtN9mbTj
private-key: ${{ secrets.OPENTASK_APP_PRIVATE_KEY }}
- uses: actions/checkout@v7.0.1
with:
token: ${{ steps.app-token.outputs.token }}
- uses: arduino/setup-task@v3.0.0
with:
version: 3.x
- uses: inference-gateway/infer-action@v0.36.0
with:
github-token: ${{ steps.app-token.outputs.token }}
github-app-slug: ${{ steps.app-token.outputs.app-slug }}
trigger-phrase: "@opentask"
model: ${{ inputs.model || vars.DEFAULT_MODEL || 'ollama_cloud/deepseek-v4-flash' }}
llamacpp-api-url: ${{ secrets.LLAMACPP_API_URL }}
llamacpp-api-key: ${{ secrets.LLAMACPP_API_KEY }}
direct-prompt: ${{ inputs.prompt }}
system-prompt-direct: ${{ inputs.system_prompt }}
enable-git-operations: "${{ inputs.enable_git || 'true' }}"
debug: "false"
bash-allow-append: "gh project list( .*)?,gh project field-list( .*)?,gh project item-add( .*)?,gh project item-edit( .*)?,gh issue create( .*)?,gh issue edit( .*)?,gh issue comment( .*)?,gh pr comment( .*)?"
custom-instructions: |
When working on a GitHub issue that belongs to a project board, keep the board's status in
sync as you go. This is best-effort: on any error (no board, no Status field, missing
Projects permission, network failure) log it and carry on - never abort the task over a
board update.
Detect membership from the ISSUE side, never by scanning the board - a board can hold
thousands of items and `gh project item-list` only fetches 30 by default, so scanning
misses the issue and does not scale:
- `gh issue view <number> --json projectItems` lists the boards this issue is on (and its
current Status), in one call regardless of board size. Empty list means it is on no
board - do nothing further.
- For each board it is on, resolve the project number + id and the Status single-select
field (with its option ids) via `gh project list --owner <owner> --format json` and
`gh project field-list <number> --owner <owner> --format json`. No "Status" (or close
equivalent) field: log a warning and skip that board.
- Get the item id idempotently with `gh project item-add <number> --owner <owner> --url
<issue-url> --format json` - it returns the existing item's id in O(1). Do NOT list
items to find it.
- Set Status with `gh project item-edit --id <item-id> --project-id <project-id>
--field-id <field-id> --single-select-option-id <option-id>`: the option closest to
"In Progress" BEFORE you start changing anything, and the option closest to "Done" when
your work is complete (body refined, fix pushed, or comment posted).
plugins: |
DietrichGebert/ponytail
ayghri/i-have-adhd
agents: |
documentation-agent
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
google-api-key: ${{ secrets.GOOGLE_API_KEY }}
deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}
groq-api-key: ${{ secrets.GROQ_API_KEY }}
mistral-api-key: ${{ secrets.MISTRAL_API_KEY }}
cloudflare-api-key: ${{ secrets.CLOUDFLARE_API_KEY }}
cohere-api-key: ${{ secrets.COHERE_API_KEY }}
ollama-cloud-api-key: ${{ secrets.OLLAMA_CLOUD_API_KEY }}
moonshot-api-key: ${{ secrets.MOONSHOT_API_KEY }}
minimax-api-key: ${{ secrets.MINIMAX_API_KEY }}
nvidia-api-key: ${{ secrets.NVIDIA_API_KEY }}
zai-api-key: ${{ secrets.ZAI_API_KEY }}