✨ feat(vscode): 工单移交的会话包改走阿里云 OSS、换 xz 压缩,两边进度一步步显示

- 会话包传到 OSS 的 spx-handoff/<owner>/<repo>/issue-<N>-<时间>.tar.xz,上传时对象设成私有;不再挂 Gitea 工单附件
- 新命令「配置移交存储」:endpoint、bucket 存扩展设置,AccessKey 存密钥存储;没配时移交 / 接管直接提示,什么都不改
- 共享 state 字段 handoffAttachmentId 改名 handoffBundleKey(含 spx CLI 与 schema)
- 打包换成 xz 1 级(tar -cJf),去掉 100MB 上限检查和先试压一遍的重复压缩
- 发送方提示打包 / 上传了多少 MB;接管方同一条提示依次显示下载、解包、建 worktree、装会话,完成前不消失
- 会话交接(单会话)仍走 Gitea 附件,Gitea 附件白名单没有 .xz,单独保留 gzip 打包
This commit is contained in:
cruldra committed 2026-10-08 07:17:26 +08:00
1 parent a33d3d2251
commit 499cfad7d7
39 files changed
+1039 -526

No files matched your search

+18
View File
@@ -240,6 +240,13 @@ export interface Settings {
* 支持前导 `~`。保存后 listClaudeProfiles / getDefaultProfilePath 都从这里读。
*/
profilesDirectory: string
/**
* 移交存储(阿里云 OSS)的 endpoint,如 `oss-cn-beijing.aliyuncs.com`。空串 = 没配置,
* 移交和接管都会停下来提示去跑「配置移交存储」。AccessKey 在 SecretStorage 里。
*/
handoffOssEndpoint: string
/** 移交存储的 bucket 名。空串 = 没配置。 */
handoffOssBucket: string
}
export const SETTINGS_KEY = 'superpowers.settings'
@@ -313,6 +320,8 @@ function defaults(ctx: ExtensionContext): Settings {
codexModel: '',
codexReasoningEffort: '',
profilesDirectory: '',
handoffOssEndpoint: '',
handoffOssBucket: '',
}
}
@@ -444,6 +453,13 @@ export function getSettings(ctx: ExtensionContext): Settings {
const profilesDirectory = typeof stored.profilesDirectory === 'string'
? stored.profilesDirectory
: base.profilesDirectory
// 移交存储:'' 有意义(= 没配置),只认字符串类型。
const handoffOssEndpoint = typeof stored.handoffOssEndpoint === 'string'
? stored.handoffOssEndpoint.trim()
: base.handoffOssEndpoint
const handoffOssBucket = typeof stored.handoffOssBucket === 'string'
? stored.handoffOssBucket.trim()
: base.handoffOssBucket
return {
webhookPort,
@@ -479,6 +495,8 @@ export function getSettings(ctx: ExtensionContext): Settings {
codexModel,
codexReasoningEffort,
profilesDirectory,
handoffOssEndpoint,
handoffOssBucket,
}
}