feat: 添加 GitHub 集成命令(issue、share、autofix-pr)

- /issue: 通过 gh CLI 创建 GitHub issue,支持标签/指派
- /share: 会话日志分享到 GitHub Gist,支持密钥脱敏
- /autofix-pr: 自动修复 CI 失败的 PR,进度追踪
- launchCommand: 共享命令启动器

Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
This commit is contained in:
claude-code-best
2026-05-09 23:04:23 +08:00
parent 4f0aa8615a
commit 6766f08e47
27 changed files with 5019 additions and 6 deletions

View File

@@ -0,0 +1,38 @@
export type ParsedArgs =
| { action: 'stop' }
| { action: 'start'; prNumber: number; owner?: string; repo?: string }
| { action: 'freeform'; prompt: string }
| { action: 'invalid'; reason: string }
/**
* Parse a PR-number string. Restricts to 1..9_999_999_999 (110 digits, no
* leading zero) so we never produce 0, negatives, or unsafe integers.
*/
export function parsePrNumber(raw: string): number | null {
if (!/^[1-9]\d{0,9}$/.test(raw)) return null
const n = Number(raw)
return Number.isSafeInteger(n) ? n : null
}
export function parseAutofixArgs(raw: string): ParsedArgs {
const trimmed = raw.trim()
if (!trimmed) return { action: 'invalid', reason: 'empty' }
if (trimmed === 'stop' || trimmed === 'off') return { action: 'stop' }
const bareNum = parsePrNumber(trimmed)
if (bareNum !== null) {
return { action: 'start', prNumber: bareNum }
}
const cross = trimmed.match(/^([\w.-]+)\/([\w.-]+)#(\d+)$/)
if (cross) {
const crossNum = parsePrNumber(cross[3] as string)
if (crossNum === null)
return { action: 'invalid', reason: 'pr_number_out_of_range' }
return {
action: 'start',
owner: cross[1],
repo: cross[2],
prNumber: crossNum,
}
}
return { action: 'freeform', prompt: trimmed }
}