poe-code 3.0.179 → 3.0.181

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,15 @@
1
1
  ---
2
2
  label: "GitHub: Issue Handler"
3
+ allow:
4
+ - OWNER
5
+ - MEMBER
6
+ - COLLABORATOR
3
7
  ---
4
8
  Read {{url}} and leave a visible GitHub response.
5
9
 
6
- - If the issue needs code changes, implement them, open or update a PR, and comment with the result.
10
+ - First assess if the issue is actionable: it must have a title that conveys intent AND a body with enough detail to understand the request. Empty bodies, one-word titles that are not a real product name, and gibberish do not qualify.
11
+ - If the issue is not actionable, post a short comment explaining what's missing (e.g. "Closing: the body is empty and the title alone doesn't describe a reproducible issue. Please reopen with steps to reproduce or a clear feature request.") and close the issue with `gh issue close`. Do not apply labels.
12
+ - If the issue is actionable and needs code changes, implement them, open or update a PR, and comment with the result.
7
13
  - If blocked, comment with the blocker and next step.
8
14
  - When posting any multiline GitHub comment or PR body, write it with a quoted heredoc and pass it to `gh` with `--body-file` instead of an inline `--body` string.
9
15
 
@@ -1,5 +1,9 @@
1
1
  ---
2
2
  label: "GitHub: Pull Request Handler"
3
+ allow:
4
+ - OWNER
5
+ - MEMBER
6
+ - COLLABORATOR
3
7
  ---
4
8
  Read {{url}} and review the pull request.
5
9
 
@@ -1,5 +1,9 @@
1
1
  ---
2
2
  label: "GitHub: Pull Request Update Handler"
3
+ allow:
4
+ - OWNER
5
+ - MEMBER
6
+ - COLLABORATOR
3
7
  ---
4
8
  Read {{url}} and re-review the updated pull request.
5
9
 
@@ -23,4 +23,49 @@ pull_request_guidelines: |
23
23
  code_review_guidelines: |
24
24
  - Review every changed file, not just the diff summary.
25
25
  - Verify the change follows existing patterns in the codebase. New abstractions need justification.
26
- - Don't rubber-stamp. Request changes when there are real issues.
26
+ - Leave small inline comments on the specific lines that need attention. When you can show the fix directly, use GitHub's `suggestion` code block so the author can apply it with one click.
27
+ - Keep the summary comment extremely short: either "LGTM" or "Requested changes: <one-line reason>". Details belong in the inline comments.
28
+ - Err on the side of approving. Only request changes when there is a security issue, a clear correctness bug, or a regression. Style preferences, naming bikesheds, and speculative concerns belong as non-blocking inline comments.
29
+ - Post the review in a single API call so the inline comments and the summary land together. Use `gh api` with `POST /repos/{owner}/{repo}/pulls/{pr}/reviews` and pass the comments in the body.
30
+ - Example — approve with a single inline note:
31
+ ```sh
32
+ gh api --method POST -H "Accept: application/vnd.github+json" \
33
+ repos/OWNER/REPO/pulls/PR_NUMBER/reviews \
34
+ --input - <<'JSON'
35
+ {
36
+ "event": "APPROVE",
37
+ "body": "LGTM",
38
+ "comments": [
39
+ { "path": "src/foo.ts", "line": 42, "body": "Nit: consider renaming to `parseX`." }
40
+ ]
41
+ }
42
+ JSON
43
+ ```
44
+ - Example — a one-click suggestion on a specific line:
45
+ ```sh
46
+ gh api --method POST -H "Accept: application/vnd.github+json" \
47
+ repos/OWNER/REPO/pulls/PR_NUMBER/reviews \
48
+ --input - <<'JSON'
49
+ {
50
+ "event": "APPROVE",
51
+ "body": "LGTM",
52
+ "comments": [
53
+ { "path": "src/foo.ts", "line": 42, "body": "```suggestion\nreturn parseX(value);\n```" }
54
+ ]
55
+ }
56
+ JSON
57
+ ```
58
+ - Example — request changes for a security issue only:
59
+ ```sh
60
+ gh api --method POST -H "Accept: application/vnd.github+json" \
61
+ repos/OWNER/REPO/pulls/PR_NUMBER/reviews \
62
+ --input - <<'JSON'
63
+ {
64
+ "event": "REQUEST_CHANGES",
65
+ "body": "Requested changes: unsanitized input flows into shell.",
66
+ "comments": [
67
+ { "path": "src/run.ts", "line": 17, "body": "Shell injection: pass args as an array to `spawn` instead of concatenating into a string." }
68
+ ]
69
+ }
70
+ JSON
71
+ ```
@@ -40,6 +40,14 @@ jobs:
40
40
  with:
41
41
  node-version: 20
42
42
  - run: npm install -g poe-code@latest
43
+ - name: Configure git identity for GitHub App
44
+ env:
45
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
46
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
47
+ run: |
48
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
49
+ git config --global user.name "${APP_SLUG}[bot]"
50
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
43
51
  - run: poe-code github-workflows prepare fix-vulnerabilities
44
52
  env:
45
53
  POE_CODE_STDERR_LOGS: "1"
@@ -154,6 +154,14 @@ jobs:
154
154
  uses: actions/checkout@v4
155
155
  with:
156
156
  token: ${{ steps.app-token.outputs.token }}
157
+ - name: Configure git identity for GitHub App
158
+ env:
159
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
160
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
161
+ run: |
162
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
163
+ git config --global user.name "${APP_SLUG}[bot]"
164
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
157
165
  - run: poe-code github-workflows prepare github-issue-comment-created
158
166
  env:
159
167
  POE_CODE_STDERR_LOGS: "1"
@@ -17,4 +17,5 @@ jobs:
17
17
  ISSUE_NUMBER: ${{ github.event.issue.number }}
18
18
  ISSUE_TITLE: ${{ github.event.issue.title }}
19
19
  ISSUE_BODY: ${{ github.event.issue.body }}
20
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.issue.author_association }}
20
21
  GITHUB_REPOSITORY: ${{ github.repository }}
@@ -8,7 +8,59 @@ concurrency:
8
8
  cancel-in-progress: true
9
9
 
10
10
  jobs:
11
+ guard:
12
+ runs-on: ubuntu-latest
13
+ env:
14
+ OUTPUT_FORMAT: terminal
15
+ outputs:
16
+ should_run: ${{ steps.guard_result.outputs.should_run }}
17
+ permissions:
18
+ contents: read
19
+ steps:
20
+ - name: Preflight
21
+ env:
22
+ POE_CODE_AGENT_APP_ID: ${{ secrets.POE_CODE_AGENT_APP_ID }}
23
+ POE_CODE_AGENT_PRIVATE_KEY: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
24
+ POE_API_KEY: ${{ secrets.POE_API_KEY }}
25
+ run: |
26
+ missing=()
27
+ [ -z "$POE_CODE_AGENT_APP_ID" ] && missing+=("POE_CODE_AGENT_APP_ID")
28
+ [ -z "$POE_CODE_AGENT_PRIVATE_KEY" ] && missing+=("POE_CODE_AGENT_PRIVATE_KEY")
29
+ [ -z "$POE_API_KEY" ] && missing+=("POE_API_KEY")
30
+ if [ ${#missing[@]} -gt 0 ]; then
31
+ for name in "${missing[@]}"; do
32
+ echo "::error::Missing required secret: $name — add it in Settings → Secrets and variables → Actions"
33
+ done
34
+ exit 1
35
+ fi
36
+ - uses: actions/create-github-app-token@v1
37
+ id: app-token
38
+ with:
39
+ app-id: ${{ secrets.POE_CODE_AGENT_APP_ID }}
40
+ private-key: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
41
+ - uses: actions/checkout@v4
42
+ with:
43
+ token: ${{ steps.app-token.outputs.token }}
44
+ - uses: actions/setup-node@v4
45
+ with:
46
+ node-version: 20
47
+ - run: npm install -g poe-code@latest
48
+ - id: allow_check
49
+ continue-on-error: true
50
+ run: poe-code github-workflows require-user-allow github-issue-opened
51
+ env:
52
+ POE_CODE_STDERR_LOGS: "1"
53
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.issue.author_association }}
54
+ - id: guard_result
55
+ run: |
56
+ if [ "${{ steps.allow_check.outcome }}" = "success" ]; then
57
+ echo "should_run=true" >> "$GITHUB_OUTPUT"
58
+ else
59
+ echo "should_run=false" >> "$GITHUB_OUTPUT"
60
+ fi
11
61
  run:
62
+ needs: guard
63
+ if: needs.guard.outputs.should_run == 'true'
12
64
  runs-on: ubuntu-latest
13
65
  permissions:
14
66
  contents: write
@@ -43,6 +95,14 @@ jobs:
43
95
  with:
44
96
  node-version: 20
45
97
  - run: npm install -g poe-code@latest
98
+ - name: Configure git identity for GitHub App
99
+ env:
100
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
101
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
102
+ run: |
103
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
104
+ git config --global user.name "${APP_SLUG}[bot]"
105
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
46
106
  - run: poe-code github-workflows prepare github-issue-opened
47
107
  env:
48
108
  POE_CODE_STDERR_LOGS: "1"
@@ -148,6 +148,14 @@ jobs:
148
148
  uses: actions/checkout@v4
149
149
  with:
150
150
  token: ${{ steps.app-token.outputs.token }}
151
+ - name: Configure git identity for GitHub App
152
+ env:
153
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
154
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
155
+ run: |
156
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
157
+ git config --global user.name "${APP_SLUG}[bot]"
158
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
151
159
  - run: poe-code github-workflows prepare github-pull-request-comment-created
152
160
  env:
153
161
  POE_CODE_STDERR_LOGS: "1"
@@ -16,4 +16,5 @@ jobs:
16
16
  PR_NUMBER: ${{ github.event.pull_request.number }}
17
17
  PR_TITLE: ${{ github.event.pull_request.title }}
18
18
  PR_AUTHOR: ${{ github.event.pull_request.user.login }}
19
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
19
20
  GITHUB_REPOSITORY: ${{ github.repository }}
@@ -4,7 +4,59 @@ on:
4
4
  types: [opened, ready_for_review]
5
5
 
6
6
  jobs:
7
+ guard:
8
+ runs-on: ubuntu-latest
9
+ env:
10
+ OUTPUT_FORMAT: terminal
11
+ outputs:
12
+ should_run: ${{ steps.guard_result.outputs.should_run }}
13
+ permissions:
14
+ contents: read
15
+ steps:
16
+ - name: Preflight
17
+ env:
18
+ POE_CODE_AGENT_APP_ID: ${{ secrets.POE_CODE_AGENT_APP_ID }}
19
+ POE_CODE_AGENT_PRIVATE_KEY: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
20
+ POE_API_KEY: ${{ secrets.POE_API_KEY }}
21
+ run: |
22
+ missing=()
23
+ [ -z "$POE_CODE_AGENT_APP_ID" ] && missing+=("POE_CODE_AGENT_APP_ID")
24
+ [ -z "$POE_CODE_AGENT_PRIVATE_KEY" ] && missing+=("POE_CODE_AGENT_PRIVATE_KEY")
25
+ [ -z "$POE_API_KEY" ] && missing+=("POE_API_KEY")
26
+ if [ ${#missing[@]} -gt 0 ]; then
27
+ for name in "${missing[@]}"; do
28
+ echo "::error::Missing required secret: $name — add it in Settings → Secrets and variables → Actions"
29
+ done
30
+ exit 1
31
+ fi
32
+ - uses: actions/create-github-app-token@v1
33
+ id: app-token
34
+ with:
35
+ app-id: ${{ secrets.POE_CODE_AGENT_APP_ID }}
36
+ private-key: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
37
+ - uses: actions/checkout@v4
38
+ with:
39
+ token: ${{ steps.app-token.outputs.token }}
40
+ - uses: actions/setup-node@v4
41
+ with:
42
+ node-version: 20
43
+ - run: npm install -g poe-code@latest
44
+ - id: allow_check
45
+ continue-on-error: true
46
+ run: poe-code github-workflows require-user-allow github-pull-request-opened
47
+ env:
48
+ POE_CODE_STDERR_LOGS: "1"
49
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
50
+ - id: guard_result
51
+ run: |
52
+ if [ "${{ steps.allow_check.outcome }}" = "success" ]; then
53
+ echo "should_run=true" >> "$GITHUB_OUTPUT"
54
+ else
55
+ echo "should_run=false" >> "$GITHUB_OUTPUT"
56
+ fi
7
57
  run:
58
+ needs: guard
59
+ if: needs.guard.outputs.should_run == 'true'
8
60
  runs-on: ubuntu-latest
9
61
  permissions:
10
62
  contents: read
@@ -38,6 +90,14 @@ jobs:
38
90
  with:
39
91
  node-version: 20
40
92
  - run: npm install -g poe-code@latest
93
+ - name: Configure git identity for GitHub App
94
+ env:
95
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
96
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
97
+ run: |
98
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
99
+ git config --global user.name "${APP_SLUG}[bot]"
100
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
41
101
  - run: poe-code github-workflows prepare github-pull-request-opened
42
102
  env:
43
103
  POE_CODE_STDERR_LOGS: "1"
@@ -14,4 +14,5 @@ jobs:
14
14
  secrets: inherit
15
15
  with:
16
16
  PR_NUMBER: ${{ github.event.pull_request.number }}
17
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
17
18
  GITHUB_REPOSITORY: ${{ github.repository }}
@@ -4,7 +4,59 @@ on:
4
4
  types: [synchronize]
5
5
 
6
6
  jobs:
7
+ guard:
8
+ runs-on: ubuntu-latest
9
+ env:
10
+ OUTPUT_FORMAT: terminal
11
+ outputs:
12
+ should_run: ${{ steps.guard_result.outputs.should_run }}
13
+ permissions:
14
+ contents: read
15
+ steps:
16
+ - name: Preflight
17
+ env:
18
+ POE_CODE_AGENT_APP_ID: ${{ secrets.POE_CODE_AGENT_APP_ID }}
19
+ POE_CODE_AGENT_PRIVATE_KEY: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
20
+ POE_API_KEY: ${{ secrets.POE_API_KEY }}
21
+ run: |
22
+ missing=()
23
+ [ -z "$POE_CODE_AGENT_APP_ID" ] && missing+=("POE_CODE_AGENT_APP_ID")
24
+ [ -z "$POE_CODE_AGENT_PRIVATE_KEY" ] && missing+=("POE_CODE_AGENT_PRIVATE_KEY")
25
+ [ -z "$POE_API_KEY" ] && missing+=("POE_API_KEY")
26
+ if [ ${#missing[@]} -gt 0 ]; then
27
+ for name in "${missing[@]}"; do
28
+ echo "::error::Missing required secret: $name — add it in Settings → Secrets and variables → Actions"
29
+ done
30
+ exit 1
31
+ fi
32
+ - uses: actions/create-github-app-token@v1
33
+ id: app-token
34
+ with:
35
+ app-id: ${{ secrets.POE_CODE_AGENT_APP_ID }}
36
+ private-key: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }}
37
+ - uses: actions/checkout@v4
38
+ with:
39
+ token: ${{ steps.app-token.outputs.token }}
40
+ - uses: actions/setup-node@v4
41
+ with:
42
+ node-version: 20
43
+ - run: npm install -g poe-code@latest
44
+ - id: allow_check
45
+ continue-on-error: true
46
+ run: poe-code github-workflows require-user-allow github-pull-request-synchronized
47
+ env:
48
+ POE_CODE_STDERR_LOGS: "1"
49
+ COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
50
+ - id: guard_result
51
+ run: |
52
+ if [ "${{ steps.allow_check.outcome }}" = "success" ]; then
53
+ echo "should_run=true" >> "$GITHUB_OUTPUT"
54
+ else
55
+ echo "should_run=false" >> "$GITHUB_OUTPUT"
56
+ fi
7
57
  run:
58
+ needs: guard
59
+ if: needs.guard.outputs.should_run == 'true'
8
60
  runs-on: ubuntu-latest
9
61
  permissions:
10
62
  contents: read
@@ -38,6 +90,14 @@ jobs:
38
90
  with:
39
91
  node-version: 20
40
92
  - run: npm install -g poe-code@latest
93
+ - name: Configure git identity for GitHub App
94
+ env:
95
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
96
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
97
+ run: |
98
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
99
+ git config --global user.name "${APP_SLUG}[bot]"
100
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
41
101
  - run: poe-code github-workflows prepare github-pull-request-synchronized
42
102
  env:
43
103
  POE_CODE_STDERR_LOGS: "1"
@@ -39,6 +39,14 @@ jobs:
39
39
  with:
40
40
  node-version: 20
41
41
  - run: npm install -g poe-code@latest
42
+ - name: Configure git identity for GitHub App
43
+ env:
44
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
45
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
46
+ run: |
47
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
48
+ git config --global user.name "${APP_SLUG}[bot]"
49
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
42
50
  - run: poe-code github-workflows prepare update-dependencies
43
51
  env:
44
52
  POE_CODE_STDERR_LOGS: "1"
@@ -40,6 +40,14 @@ jobs:
40
40
  with:
41
41
  node-version: 20
42
42
  - run: npm install -g poe-code@latest
43
+ - name: Configure git identity for GitHub App
44
+ env:
45
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
46
+ APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
47
+ run: |
48
+ USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
49
+ git config --global user.name "${APP_SLUG}[bot]"
50
+ git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com"
43
51
  - run: poe-code github-workflows prepare update-documentation
44
52
  env:
45
53
  POE_CODE_STDERR_LOGS: "1"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-code",
3
- "version": "3.0.179",
3
+ "version": "3.0.181",
4
4
  "description": "CLI tool to configure Poe API for developer workflows.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",