dsh-config-manager 0.1.39 → 0.1.41

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.
Files changed (50) hide show
  1. package/lib/client.d.ts +90 -8
  2. package/lib/client.js +1904 -1086
  3. package/lib/client.js.map +1 -1
  4. package/lib/core/cache-cleaner.d.ts +39 -0
  5. package/lib/core/cache-cleaner.js +164 -0
  6. package/lib/core/cache-cleaner.js.map +1 -0
  7. package/lib/index.js +172 -3
  8. package/lib/index.js.map +1 -1
  9. package/lib/market/github-repos.d.ts +19 -8
  10. package/lib/market/github-repos.js +62 -33
  11. package/lib/market/github-repos.js.map +1 -1
  12. package/lib/market/my-repo.d.ts +111 -3
  13. package/lib/market/my-repo.js +309 -26
  14. package/lib/market/my-repo.js.map +1 -1
  15. package/lib/market/prepare.js +3 -2
  16. package/lib/market/prepare.js.map +1 -1
  17. package/lib/market/types.d.ts +2 -0
  18. package/lib/security/secret-scanner.d.ts +18 -3
  19. package/lib/security/secret-scanner.js +144 -20
  20. package/lib/security/secret-scanner.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/client/common/ConfirmDialog.tsx +135 -0
  23. package/src/client/config-manager.module.css +101 -0
  24. package/src/client/market/MarketPanel.tsx +138 -45
  25. package/src/client/market/MyConfigsView.tsx +515 -132
  26. package/src/client/market/disclaimer.test.ts +57 -0
  27. package/src/client/market/disclaimer.ts +43 -0
  28. package/src/client/market/market-api.test.ts +3 -0
  29. package/src/client/market/market-locales.ts +37 -13
  30. package/src/client/market/my-configs-api.ts +20 -2
  31. package/src/client/market/my-configs-view.test.ts +137 -2
  32. package/src/client/market/my-configs-view.ts +174 -2
  33. package/src/client/run-store.test.ts +40 -2
  34. package/src/client/run-store.ts +70 -10
  35. package/src/client/sync/SyncConfirmView.tsx +28 -22
  36. package/src/client/sync/SyncSettingsView.tsx +175 -65
  37. package/src/client/sync/sync-api.ts +19 -0
  38. package/src/client/sync/sync-locales.ts +14 -2
  39. package/src/core/cache-cleaner.test.ts +333 -0
  40. package/src/core/cache-cleaner.ts +196 -0
  41. package/src/index.ts +165 -5
  42. package/src/market/github-repos.test.ts +99 -8
  43. package/src/market/github-repos.ts +67 -35
  44. package/src/market/my-repo.test.ts +218 -27
  45. package/src/market/my-repo.ts +403 -30
  46. package/src/market/prepare.test.ts +71 -1
  47. package/src/market/prepare.ts +3 -2
  48. package/src/market/types.ts +2 -0
  49. package/src/security/secret-scanner.ts +139 -22
  50. package/src/security/security.test.ts +111 -2
@@ -5,9 +5,10 @@
5
5
  * getUser() 验证 token(GET /user)并取回登录名;
6
6
  * repoExists() 判断仓库是否存在(200 / 404);
7
7
  * createPublicRepo() 创建公开仓库(POST /user/repos,public + auto_init);
8
- * ensureFork() 复用用户已 fork 的仓库 / 新建 fork 并轮询就绪(fork 异步创建);
8
+ * ensureFork() 直查用户同名仓库复用已 fork / 新建 fork 并轮询就绪(fork 异步创建);
9
9
  * readFile() 读仓库内文本文件(contents API,base64 解码);
10
10
  * openPullRequest() 开 PR(POST /pulls;缺省目标 = 固定官方收录仓库);
11
+ * closePullRequest() 关闭 PR(PATCH /pulls/{number},state=closed);
11
12
  * listOpenPullRequests() 列 open PR(可带 head 过滤,如 `<login>:<branch>`)。
12
13
  *
13
14
  * 与 GitTransport 的分工:本模块只做 REST 元操作;内容推送(clone → 写文件 → commit →
@@ -34,10 +35,11 @@ export const GITHUB_API_BASE = 'https://api.github.com';
34
35
  export const MARKET_UPSTREAM_OWNER = 'xiajiajun516';
35
36
  /** 官方收录目标仓库名(见 MARKET_UPSTREAM_OWNER) */
36
37
  export const MARKET_UPSTREAM_REPO = 'dsh-config-market';
37
- /** fork 异步创建轮询缺省间隔(毫秒) */
38
- const DEFAULT_POLL_INTERVAL_MS = 2_000;
39
- /** fork 异步创建轮询缺省超时(毫秒):GitHub 首次 fork 需复制仓库内容,可能超过 60s;180s 兜底后抛可重试错误 */
40
- const DEFAULT_POLL_TIMEOUT_MS = 180_000;
38
+ /** fork 异步创建轮询缺省间隔(毫秒):后台收录模式下放宽粒度,减少 API 调用 */
39
+ const DEFAULT_POLL_INTERVAL_MS = 5_000;
40
+ /** fork 异步创建轮询缺省超时(毫秒):GitHub 首次 fork 需复制仓库内容,可能超过 60s;
41
+ * 异步收录后不阻塞用户请求,300s 作保险兜底,超时后抛可重试错误 */
42
+ const DEFAULT_POLL_TIMEOUT_MS = 300_000;
41
43
  /**
42
44
  * GitHub REST 可预期错误:status = HTTP 状态(网络层 / 内部错误无),code 可分类消费。
43
45
  * message 已过 redact() 脱敏,绝不内嵌 token 形态内容。
@@ -92,6 +94,14 @@ function ownerLoginOf(obj) {
92
94
  const login = owner['login'];
93
95
  return typeof login === 'string' && login !== '' ? login : undefined;
94
96
  }
97
+ /** 嵌套 parent.full_name(非 fork 仓库 parent 为 null;fork 的 parent 是直接上游) */
98
+ function parentFullNameOf(obj) {
99
+ const parent = obj['parent'];
100
+ if (parent === null || typeof parent !== 'object' || Array.isArray(parent))
101
+ return undefined;
102
+ const fullName = parent['full_name'];
103
+ return typeof fullName === 'string' && fullName !== '' ? fullName : undefined;
104
+ }
95
105
  /** 路径片段编码(owner/repo/ref 单段) */
96
106
  function seg(value) {
97
107
  return encodeURIComponent(value);
@@ -204,17 +214,18 @@ export class GitHubAuthRest {
204
214
  }
205
215
  /**
206
216
  * 确保存在「当前用户 fork 的 <owner>/<repo>」:
207
- * 1. 优先复用:列出上游仓库 forks,命中 owner.login === 当前登录名的 fork → 直接返回;
217
+ * 1. 优先复用:直查 GET /repos/<login>/<repo>,校验 fork:true + parent.full_name 匹配
218
+ * (不翻上游 forks 分页列表,避免 per_page=100 上限下旧 fork 被挤出首页而漏检)→ 直接返回;
208
219
  * 2. 否则创建 fork(POST /forks,异步)并轮询 GET /repos/<login>/<repo> 直到就绪
209
- * (owner.login 匹配 + fork:true);超时抛可重试错误(fork_timeout)。
220
+ * (owner.login 匹配 + fork:true + parent 匹配);超时抛可重试错误(fork_timeout)。
210
221
  */
211
222
  async ensureFork(owner, repo) {
212
223
  const me = await this.getUser();
213
- const existing = await this.findUserFork(owner, repo, me.login);
224
+ const existing = await this.findOwnFork(owner, repo, me.login);
214
225
  if (existing !== null)
215
226
  return existing;
216
227
  await this.createFork(owner, repo);
217
- return this.waitForkReady(me.login, repo);
228
+ return this.waitForkReady(me.login, repo, owner);
218
229
  }
219
230
  /**
220
231
  * 读仓库内文本文件(contents API,base64 解码为 UTF-8)。
@@ -253,6 +264,11 @@ export class GitHubAuthRest {
253
264
  const data = await this.requestJson('POST', `/repos/${seg(owner)}/${seg(repo)}/pulls`, body);
254
265
  return toPullInfo(data);
255
266
  }
267
+ /** 关闭 PR(PATCH /pulls/{number},state=closed);返回关闭后的 PR 信息。 */
268
+ async closePullRequest(owner, repo, number) {
269
+ const data = await this.requestJson('PATCH', `/repos/${seg(owner)}/${seg(repo)}/pulls/${number}`, { state: 'closed' });
270
+ return toPullInfo(data);
271
+ }
256
272
  /** 列 open PR(GET /pulls?state=open);head 可选(跨仓库形态 `<login>:<branch>`,URL 编码传入)。 */
257
273
  async listOpenPullRequests(owner, repo, head) {
258
274
  const query = new URLSearchParams();
@@ -267,25 +283,37 @@ export class GitHubAuthRest {
267
283
  return data.map((item) => toPullInfo(item));
268
284
  }
269
285
  /* ---------------------------------------------------------------- 内部实现 */
270
- /** 上游仓库 forks 列表命中当前用户 → 返回 fork 信息;否则 null。 */
271
- async findUserFork(owner, repo, login) {
272
- const data = await this.requestJson('GET', `/repos/${seg(owner)}/${seg(repo)}/forks?per_page=100&sort=newest`);
273
- if (!Array.isArray(data)) {
274
- throw new GitHubApiError('GitHub forks 响应不是数组', 'invalid_response');
275
- }
276
- for (const item of data) {
277
- const obj = asRecord(item);
278
- if (ownerLoginOf(obj) === login) {
279
- const fullName = getStr(obj, 'full_name');
280
- return {
281
- fullName,
282
- htmlUrl: getStr(obj, 'html_url'),
283
- cloneUrl: getOptStr(obj, 'clone_url') ?? `https://github.com/${fullName}.git`,
284
- defaultBranch: getOptStr(obj, 'default_branch') ?? 'main',
285
- };
286
- }
286
+ /**
287
+ * 直查用户自己的同名仓库(GET /repos/<login>/<repo>)判断是否已是本上游的 fork:
288
+ * - 404 → null(无 fork,需创建);
289
+ * - 200 + fork:true + parent.full_name 匹配 → 返回 fork 信息(复用);
290
+ * - 200 + fork:false 或 parent 不匹配(同名但非本上游 fork)→ 抛 fork_name_conflict
291
+ * (此时既不能复用也不能再 fork——同名仓库已存在,GitHub 会以同名冲突拒绝)。
292
+ */
293
+ async findOwnFork(owner, repo, login) {
294
+ const response = await this.request(`/repos/${seg(login)}/${seg(repo)}`, { method: 'GET' });
295
+ if (response.status === 404)
296
+ return null;
297
+ if (!response.ok)
298
+ throw await this.apiError(response);
299
+ return this.tryReadOwnFork(response, owner, repo);
300
+ }
301
+ /** 解析直查响应并校验「是本上游的 fork」;不满足 → fork_name_conflict。 */
302
+ async tryReadOwnFork(response, owner, repo) {
303
+ const data = await safeParseJson(response);
304
+ const obj = asRecord(data);
305
+ const isFork = getBool(obj, 'fork');
306
+ const parentName = parentFullNameOf(obj);
307
+ if (isFork !== true || parentName !== `${owner}/${repo}`) {
308
+ throw new GitHubApiError('你的同名仓库已存在但不是本市场的 fork,无法自动收录,请改名或删除后重试', 'fork_name_conflict');
287
309
  }
288
- return null;
310
+ const fullName = getStr(obj, 'full_name');
311
+ return {
312
+ fullName,
313
+ htmlUrl: getStr(obj, 'html_url'),
314
+ cloneUrl: getOptStr(obj, 'clone_url') ?? `https://github.com/${fullName}.git`,
315
+ defaultBranch: getOptStr(obj, 'default_branch') ?? 'main',
316
+ };
289
317
  }
290
318
  /** 创建 fork(POST /forks)。GitHub 异步执行,返回 202/200 即视为已接受,就绪状态由轮询确认。 */
291
319
  async createFork(owner, repo) {
@@ -297,13 +325,13 @@ export class GitHubAuthRest {
297
325
  if (!response.ok)
298
326
  throw await this.apiError(response);
299
327
  }
300
- /** 轮询 GET /repos/<login>/<repo> 直到 fork 就绪(owner.login 匹配 + fork:true + 有默认分支)。 */
301
- async waitForkReady(login, repo) {
328
+ /** 轮询 GET /repos/<login>/<repo> 直到 fork 就绪(owner.login 匹配 + fork:true + parent 匹配)。 */
329
+ async waitForkReady(login, repo, owner) {
302
330
  const deadline = this.now() + this.pollTimeoutMs;
303
331
  for (;;) {
304
332
  const response = await this.request(`/repos/${seg(login)}/${seg(repo)}`, { method: 'GET' });
305
333
  if (response.ok) {
306
- const info = await this.tryReadForkInfo(response);
334
+ const info = await this.tryReadForkInfo(response, owner, repo);
307
335
  if (info !== null)
308
336
  return info;
309
337
  }
@@ -316,14 +344,15 @@ export class GitHubAuthRest {
316
344
  await delay(this.pollIntervalMs);
317
345
  }
318
346
  }
319
- /** 解析一次轮询响应;未就绪(结构不完整 / owner 未出现)→ null 继续等。 */
320
- async tryReadForkInfo(response) {
347
+ /** 解析一次轮询响应;未就绪(结构不完整 / owner 未出现 / parent 未匹配)→ null 继续等。 */
348
+ async tryReadForkInfo(response, owner, repo) {
321
349
  try {
322
350
  const data = await safeParseJson(response);
323
351
  const obj = asRecord(data);
324
352
  const login = ownerLoginOf(obj);
325
353
  const fullName = getStr(obj, 'full_name');
326
- if (login === undefined || getBool(obj, 'fork') !== true)
354
+ const parentName = parentFullNameOf(obj);
355
+ if (login === undefined || getBool(obj, 'fork') !== true || parentName !== `${owner}/${repo}`)
327
356
  return null;
328
357
  return {
329
358
  fullName,
@@ -1 +1 @@
1
- {"version":3,"file":"github-repos.js","sourceRoot":"","sources":["../../src/market/github-repos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-repos.js","sourceRoot":"","sources":["../../src/market/github-repos.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,15 @@ import type { SectionId } from '../schema/types.ts';
8
8
  export declare const USER_CONFIGS_REPO = "dsh-configs";
9
9
  /** 用户仓库 index.json 的名称/描述(展示用) */
10
10
  export declare const USER_INDEX_NAME = "\u6211\u7684\u914D\u7F6E\u4ED3\u5E93";
11
- /** PR 分支固定名模式:dsh-market-sync/<itemId> */
11
+ /** PR 分支固定名模式:dsh-market-sync/<itemId>(收录) */
12
12
  export declare const PR_BRANCH_PREFIX = "dsh-market-sync";
13
+ /** 下架 PR 分支固定名模式:dsh-market-delist/<itemId>(删除已收录条目;独立分支避免与收录分支混淆,
14
+ * 防止 listItems 的 pr-pending 判定把下架 PR 误判为收录待审、以及删除后重传时 PR 复用错乱) */
15
+ export declare const DELIST_BRANCH_PREFIX = "dsh-market-delist";
13
16
  /** 由 itemId 生成 PR 分支名(固定模式,同条目复用同一分支:未合并 force push 更新、已合并基于最新 main 重开) */
14
17
  export declare function prBranchFor(itemId: string): string;
18
+ /** 由 itemId 生成下架 PR 分支名(删除已收录条目时用;独立于收录分支) */
19
+ export declare function delistBranchFor(itemId: string): string;
15
20
  /** 用户公开仓库 URL(https 形态,绝不携带凭据) */
16
21
  export declare function userConfigsRepoUrl(login: string): string;
17
22
  /** 条目收录状态:未收录(本地独有)| PR 待审核(带 PR 链接)| 已收录(官方市场 index 含该 id) */
@@ -20,10 +25,21 @@ export type MyItemStatus = 'not-listed' | 'pr-pending' | 'listed';
20
25
  export interface MyRepoForm {
21
26
  /** 配置名(预填 zip 文件名,可改);id 由其派生稳定 slug */
22
27
  name: string;
28
+ /** 显式目标条目 id(**仅 update 模式**用:由列表「更新」按钮预填,避免靠 name→slug 猜测匹配;
29
+ * 上传(新条目)时省略;后端校验存在性,缺省回退 name slug 匹配(向后兼容) */
30
+ id?: string;
23
31
  description?: string;
24
32
  categories?: string[];
25
33
  }
26
- /** upload / update 返回(ok=false 时携带已脱敏 error + errorCode) */
34
+ /** 收录流程状态:pending=已提交、后台处理中;done=已提交收录(PR 已开/复用);failed=收录失败可重试 */
35
+ export type ListingState = 'pending' | 'done' | 'failed';
36
+ /**
37
+ * upload / update 返回(ok=false 时携带已脱敏 error + errorCode)。
38
+ * 流程拆分(2026-08-20 优化):upload/update 只同步执行「推用户仓库」并立即返回
39
+ * (listing='pending'),「收录流程」(fork + 官方 index + PR)在后台异步执行,
40
+ * 避免 GitHub fork 排队时整个上传请求长时间挂起;收录结果经 listingStatus /
41
+ * /me/items 状态徽章查询。
42
+ */
27
43
  export interface UploadResult {
28
44
  ok: boolean;
29
45
  itemId: string;
@@ -32,14 +48,47 @@ export interface UploadResult {
32
48
  sections: SectionId[];
33
49
  /** 用户公开仓库 URL(https://github.com/<login>/dsh-configs) */
34
50
  repoUrl: string;
51
+ /** 收录 PR 编号(异步模式下收起完成前为 null;完成经 listingStatus 查询) */
35
52
  prNumber: number | null;
53
+ /** 收录 PR 链接(同上) */
36
54
  prUrl: string | null;
37
55
  warnings: string[];
56
+ /** 收录流程状态:ok=true 且上传成功后为 'pending'(后台进行中);失败无收录流程时 'done' 无意义 */
57
+ listing: ListingState;
58
+ /** listing='failed' 时:收录失败原因(已脱敏,含重试指引) */
59
+ listingError?: string;
38
60
  /** ok=false 时:可展示错误(已脱敏,无 token 形态) */
39
61
  error?: string;
40
62
  /** ok=false 时:错误分类码(unauthorized/prepare_failed/...;无则 'internal') */
41
63
  errorCode?: string;
42
64
  }
65
+ /** POST /me/listing 响应:收录任务状态(结果卡轮询用,比拉全列表更轻) */
66
+ export interface ListingStatusResponse {
67
+ itemId: string;
68
+ listing: ListingState;
69
+ /** listing='done' 时:PR 编号 */
70
+ prNumber: number | null;
71
+ /** listing='done' 时:PR 链接 */
72
+ prUrl: string | null;
73
+ /** listing='failed' 时:失败原因(已脱敏) */
74
+ error?: string;
75
+ }
76
+ /** POST /me/delete 响应:删除条目结果 */
77
+ export interface DeleteResult {
78
+ ok: boolean;
79
+ itemId: string;
80
+ /** 是否已异步提交「下架 PR」(条目此前已收录进官方市场时 true) */
81
+ delisted: boolean;
82
+ /** 被关闭的收录 PR(条目处于待审核、有 open PR 时关闭它) */
83
+ prNumber: number | null;
84
+ /** 被关闭 PR 的链接(同上) */
85
+ prUrl: string | null;
86
+ warnings: string[];
87
+ /** ok=false 时:可展示错误(已脱敏) */
88
+ error?: string;
89
+ /** ok=false 时:错误分类码(item_not_found/unauthorized/...) */
90
+ errorCode?: string;
91
+ }
43
92
  /** listItems 条目:用户仓库 index.json 条目 + 收录状态 */
44
93
  export interface MyItemEntry {
45
94
  id: string;
@@ -67,6 +116,8 @@ export interface GitHubRestLike {
67
116
  readFile(owner: string, repo: string, path: string, ref?: string): Promise<string | null>;
68
117
  openPullRequest(params: GitHubPullRequestParams): Promise<GitHubPullRequestInfo>;
69
118
  listOpenPullRequests(owner: string, repo: string, head?: string): Promise<GitHubPullRequestInfo[]>;
119
+ /** 关闭 PR(删除条目时关闭待审核的收录 PR) */
120
+ closePullRequest(owner: string, repo: string, number: number): Promise<GitHubPullRequestInfo>;
70
121
  }
71
122
  export interface MyRepoServiceOptions {
72
123
  /** 8 道校验 + 秘密扫描(复用 prepareMarketItem;测试 mock;抛 MarketPrepareError 视为校验失败) */
@@ -87,6 +138,24 @@ export declare class MyRepoError extends Error {
87
138
  readonly code: string;
88
139
  constructor(message: string, code?: string);
89
140
  }
141
+ /** 后台市场任务动作:list=收录(写官方 index + 提收录 PR);delist=下架(从官方 index 移除 + 提下架 PR) */
142
+ export type ListingAction = 'list' | 'delist';
143
+ /** 后台市场任务(收录/下架共用同一管道;内存 Map<itemId, job>,进程重启后丢失,靠 relist/删除重新提交) */
144
+ export interface ListingJob {
145
+ action: ListingAction;
146
+ login: string;
147
+ itemId: string;
148
+ version: string;
149
+ /** 用户公开仓库 URL(条目内容托管地) */
150
+ repoUrl: string;
151
+ status: ListingState;
152
+ prNumber: number | null;
153
+ prUrl: string | null;
154
+ /** status='failed' 时:失败原因(已脱敏) */
155
+ error: string | null;
156
+ startedAt: number;
157
+ finishedAt: number | null;
158
+ }
90
159
  /** name → 稳定安全 itemId:小写、非字母数字折叠为 -、字母数字开头、去头尾分隔符;空 → config-<hash> */
91
160
  export declare function slugifyItemId(name: string): string;
92
161
  /** 冲突自动加后缀(设计:id=name 稳定 slug,同名已存在 → my-config-2 / -3 ...) */
@@ -100,6 +169,10 @@ export declare class MyRepoService {
100
169
  private readonly tokenProvider;
101
170
  private readonly now;
102
171
  private readonly workDirRoot;
172
+ /** 后台市场任务表(收录/下架;key=itemId;内存态,重启丢失 → 列表状态徽章回退 + relist/删除可重提) */
173
+ private readonly listingJobs;
174
+ /** 同一 login 的「写用户仓库」串行队列(user-<login> 工作副本共享;上传/删除并发时防踩踏) */
175
+ private readonly loginWriteQueues;
103
176
  constructor(options: MyRepoServiceOptions);
104
177
  /** 一键上传:新条目(version 1.0.0;同名冲突自动加后缀)。 */
105
178
  upload(params: {
@@ -113,6 +186,26 @@ export declare class MyRepoService {
113
186
  }): Promise<UploadResult>;
114
187
  /** 列出已上传条目(读用户仓库 index.json)+ 收录状态(官方 index / open PR)。 */
115
188
  listItems(): Promise<MyItemEntry[]>;
189
+ /**
190
+ * 查询收录/下架任务状态。
191
+ * 内存任务表命中 → 直接返回;未命中(进程重启 / 从未提交)→ 回退 GitHub 实况推导:
192
+ * 官方 index 含该 id → done(已收录);存在 open 收录 PR → done(带 PR 链接);否则 null。
193
+ */
194
+ listingStatus(itemId: string): Promise<ListingStatusResponse | null>;
195
+ /** 重新提交收录(收录失败 / 进程重启丢失后的一键重试):幂等 —— 已有 pending 任务直接复用,不再重复启动 */
196
+ relist(itemId: string): Promise<ListingStatusResponse>;
197
+ /** 等待任务终态(测试辅助 / 需要同步等待的场景;超时抛 internal 错误) */
198
+ waitForListing(itemId: string, timeoutMs?: number): Promise<ListingStatusResponse>;
199
+ /**
200
+ * 删除已上传条目:
201
+ * ① 从用户仓库 index.json 移除条目 + 删除 items/<itemId>/ 目录(同步,秒级)
202
+ * ② 收录状态处理:
203
+ * - 已收录进官方市场(listed)→ 后台异步提「下架 PR」(从官方 index 移除,独立 delist 分支)
204
+ * - 有待审核的收录 open PR → 同步关闭该 PR
205
+ * - 未收录 / 无 PR → 无额外操作
206
+ * 返回 DeleteResult(ok=false 时携带已脱敏 error + errorCode)。
207
+ */
208
+ deleteItem(itemId: string): Promise<DeleteResult>;
116
209
  private runPublish;
117
210
  /** ⑥ 写用户仓库工作副本(隔离方法,便于单测断言 gitWriter 调用) */
118
211
  private gitWriterManifestSync;
@@ -124,8 +217,23 @@ export declare class MyRepoService {
124
217
  private parsePreparedManifest;
125
218
  /** ⑤ ensure 用户仓库:存在 → 返回已知信息;不存在 → createPublicRepo(公开,系统命名) */
126
219
  private ensureUserRepo;
127
- /** ⑨ ensure PR:open PR(head=<login>:<branch>)存在 → 复用;否则 openPullRequest(base=main) */
220
+ /** ⑨ ensure PR:open PR(head=<login>:<branch>)存在 → 复用;否则 openPullRequest(base=main)。
221
+ * action='delist' 时标题/正文为下架语义(分支用 delistBranchFor,head 过滤天然隔离)。 */
128
222
  private ensurePullRequest;
223
+ /** 启动后台任务(fire-and-forget):同 itemId 已有 pending 任务 → 不重复启动(幂等) */
224
+ private launchListing;
225
+ /**
226
+ * 后台任务主体(收录/下架共用管道):
227
+ * 读用户仓库条目 → ensureFork(复用/新建+轮询就绪)→ 读官方 index → 改(收录 upsert 带 repo /
228
+ * 下架 remove)→ 写 fork 分支(workDir 按 itemId 隔离,防并发踩踏)force push → 开/复用 PR。
229
+ */
230
+ private finishListing;
231
+ /** job → ListingStatusResponse(错误文本 redact 兜底) */
232
+ private toListingStatus;
233
+ /** 同一 login 的「写用户仓库」串行化(user-<login> 工作副本共享;上传/删除并发防踩踏)。
234
+ * 前一个操作失败不阻塞队列:catch 吞掉错误只作为队列锚点,真实错误已由调用方处理。 */
235
+ private withLoginLock;
129
236
  private userWorkDir;
237
+ /** fork 工作副本按 itemId 隔离(fork-<login>/<itemId>):不同条目的后台收录/下架并发操作互不踩踏 */
130
238
  private forkWorkDir;
131
239
  }