Toolcraft SDK: preserve arbitrary S.Json object keys in generated types #204
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Auto-generated by: poe-code github-workflows install github-pull-request-comment-created | |
| name: 'GitHub: Pull Request Comment Created' | |
| on: | |
| issue_comment: | |
| types: [created] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.issue.number }} | |
| cancel-in-progress: true | |
| jobs: | |
| guard: | |
| if: github.event.issue.pull_request != null && github.event.issue.state == 'open' && github.event.comment.user.type != 'Bot' | |
| runs-on: ubuntu-latest | |
| env: | |
| OUTPUT_FORMAT: terminal | |
| outputs: | |
| should_run: ${{ steps.guard_result.outputs.should_run }} | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Preflight | |
| env: | |
| POE_CODE_AGENT_APP_ID: ${{ secrets.POE_CODE_AGENT_APP_ID }} | |
| POE_CODE_AGENT_PRIVATE_KEY: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }} | |
| POE_API_KEY: ${{ secrets.POE_API_KEY }} | |
| run: | | |
| missing=() | |
| [ -z "$POE_CODE_AGENT_APP_ID" ] && missing+=("POE_CODE_AGENT_APP_ID") | |
| [ -z "$POE_CODE_AGENT_PRIVATE_KEY" ] && missing+=("POE_CODE_AGENT_PRIVATE_KEY") | |
| [ -z "$POE_API_KEY" ] && missing+=("POE_API_KEY") | |
| if [ ${#missing[@]} -gt 0 ]; then | |
| for name in "${missing[@]}"; do | |
| echo "::error::Missing required secret: $name — add it in Settings → Secrets and variables → Actions" | |
| done | |
| exit 1 | |
| fi | |
| - uses: actions/create-github-app-token@v1 | |
| id: app-token | |
| with: | |
| app-id: ${{ secrets.POE_CODE_AGENT_APP_ID }} | |
| private-key: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }} | |
| - uses: actions/checkout@v4 | |
| with: | |
| token: ${{ steps.app-token.outputs.token }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - run: npm install -g poe-code@latest | |
| - id: allow_check | |
| continue-on-error: true | |
| run: poe-code github-workflows require-user-allow github-pull-request-comment-created | |
| env: | |
| POE_CODE_STDERR_LOGS: "1" | |
| COMMENT_AUTHOR_ASSOCIATION: ${{ github.event.comment.author_association }} | |
| - id: prefix_check | |
| continue-on-error: true | |
| run: poe-code github-workflows require-comment-prefix github-pull-request-comment-created | |
| env: | |
| POE_CODE_STDERR_LOGS: "1" | |
| COMMENT_BODY: ${{ github.event.comment.body }} | |
| - id: guard_result | |
| run: | | |
| if [ "${{ steps.allow_check.outcome }}" = "success" ] && [ "${{ steps.prefix_check.outcome }}" = "success" ]; then | |
| echo "should_run=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "should_run=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| run: | |
| needs: guard | |
| if: needs.guard.outputs.should_run == 'true' | |
| runs-on: ubuntu-latest | |
| env: | |
| OUTPUT_FORMAT: terminal | |
| permissions: | |
| contents: write | |
| issues: write | |
| pull-requests: write | |
| steps: | |
| - name: Preflight | |
| env: | |
| POE_CODE_AGENT_APP_ID: ${{ secrets.POE_CODE_AGENT_APP_ID }} | |
| POE_CODE_AGENT_PRIVATE_KEY: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }} | |
| POE_API_KEY: ${{ secrets.POE_API_KEY }} | |
| run: | | |
| missing=() | |
| [ -z "$POE_CODE_AGENT_APP_ID" ] && missing+=("POE_CODE_AGENT_APP_ID") | |
| [ -z "$POE_CODE_AGENT_PRIVATE_KEY" ] && missing+=("POE_CODE_AGENT_PRIVATE_KEY") | |
| [ -z "$POE_API_KEY" ] && missing+=("POE_API_KEY") | |
| if [ ${#missing[@]} -gt 0 ]; then | |
| for name in "${missing[@]}"; do | |
| echo "::error::Missing required secret: $name — add it in Settings → Secrets and variables → Actions" | |
| done | |
| exit 1 | |
| fi | |
| - uses: actions/create-github-app-token@v1 | |
| id: app-token | |
| with: | |
| app-id: ${{ secrets.POE_CODE_AGENT_APP_ID }} | |
| private-key: ${{ secrets.POE_CODE_AGENT_PRIVATE_KEY }} | |
| - uses: actions/checkout@v4 | |
| with: | |
| token: ${{ steps.app-token.outputs.token }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - run: npm install -g poe-code@latest | |
| - id: pr_context | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| script: | | |
| const response = await github.rest.pulls.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: Number("${{ github.event.issue.number }}") | |
| }); | |
| const headRepo = response.data.head.repo?.full_name ?? ""; | |
| const currentRepo = `${context.repo.owner}/${context.repo.repo}`; | |
| const isSameRepo = headRepo === currentRepo; | |
| core.setOutput("pr_number", String(response.data.number ?? "")); | |
| core.setOutput("pr_title", response.data.title ?? ""); | |
| core.setOutput("pr_author", response.data.user?.login ?? ""); | |
| core.setOutput("head_ref", isSameRepo ? (response.data.head.ref ?? "") : ""); | |
| - id: add_in_progress_reaction | |
| continue-on-error: true | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| script: | | |
| const response = await github.rest.reactions.createForIssueComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: Number("${{ github.event.comment.id }}"), | |
| content: "eyes" | |
| }); | |
| core.setOutput("reaction_id", String(response.data.id ?? "")); | |
| - if: steps.pr_context.outputs.head_ref != '' | |
| id: checkout_pr_branch | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ steps.pr_context.outputs.head_ref }} | |
| token: ${{ steps.app-token.outputs.token }} | |
| - if: steps.pr_context.outputs.head_ref == '' | |
| id: checkout_default_branch | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ steps.app-token.outputs.token }} | |
| - name: Configure git identity for GitHub App | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| APP_SLUG: ${{ steps.app-token.outputs.app-slug }} | |
| run: | | |
| USER_ID=$(gh api "/users/${APP_SLUG}[bot]" --jq .id) | |
| git config --global user.name "${APP_SLUG}[bot]" | |
| git config --global user.email "${USER_ID}+${APP_SLUG}[bot]@users.noreply.github.com" | |
| - run: poe-code github-workflows prepare github-pull-request-comment-created | |
| env: | |
| POE_CODE_STDERR_LOGS: "1" | |
| POE_API_KEY: ${{ secrets.POE_API_KEY }} | |
| - run: poe-code github-workflows github-pull-request-comment-created --yes | |
| env: | |
| POE_CODE_STDERR_LOGS: "1" | |
| POE_API_KEY: ${{ secrets.POE_API_KEY }} | |
| GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} | |
| ISSUE_NUMBER: ${{ github.event.issue.number }} | |
| PR_NUMBER: ${{ steps.pr_context.outputs.pr_number }} | |
| PR_TITLE: ${{ steps.pr_context.outputs.pr_title }} | |
| PR_AUTHOR: ${{ steps.pr_context.outputs.pr_author }} | |
| COMMENT_BODY: ${{ github.event.comment.body }} | |
| COMMENT_AUTHOR: ${{ github.event.comment.user.login }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| - id: remove_in_progress_reaction | |
| if: always() && steps.add_in_progress_reaction.outputs.reaction_id != '' | |
| continue-on-error: true | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| script: | | |
| await github.rest.reactions.deleteForIssueComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: Number("${{ github.event.comment.id }}"), | |
| reaction_id: Number("${{ steps.add_in_progress_reaction.outputs.reaction_id }}") | |
| }); |