Create a GitHub Pull Request

The exact flow is: Slack thread fetch → redaction → model-generated draft → stored preview → creator approval → authorization check → GitHub branch and file → draft pull request.

The target comes from defaults or --repo; --path can override the generated file location. The repository must match KB_ALLOWED_REPOS. Delegated credentials must have push permission; installation credentials require the configured GitHub App installation to cover the repository.

On approval the service branches from DEFAULT_KB_BASE_BRANCH, names the branch knowledge-assistant/<slug>-<timestamp>, commits the rendered Markdown/MDX file, and opens the PR with draft: true. The PR body includes source thread URLs and request/approver identifiers. Slack receives the PR link. If --jira was selected, Jira creation is attempted afterward; Jira failure does not undo the PR.